Agen RCS untuk Bisnis berkomunikasi dengan pengguna dengan mengirim dan menerima pesan. Untuk mengirim pesan kepada pengguna, agen Anda mengirim permintaan pesan ke RCS Business Messaging API. Satu permintaan dapat mencakup teks, kartu multimedia, file media dan PDF, balasan yang disarankan, dan tindakan yang disarankan.
Platform RCS for Business menampilkan error dalam situasi tertentu untuk membantu Anda mengelola pengiriman pesan:
- Jika Anda mengirim pesan ke pengguna yang perangkatnya tidak mendukung RCS atau tidak mengaktifkan RCS, platform RCS untuk Bisnis akan menampilkan error 404 NOT_FOUND. Dalam kasus ini, Anda dapat mencoba menghubungi pengguna melalui metode penggantian yang ditentukan dalam infrastruktur Anda.
- Jika Anda mengirim pesan kepada pengguna RCS di jaringan tempat agen Anda belum diluncurkan, atau di jaringan yang belum mengaktifkan traffic RCS, platform RCS untuk Bisnis akan menampilkan error 404 NOT_FOUND.
- Jika Anda mengirim pesan dengan fitur yang tidak didukung oleh perangkat pengguna, platform RCS untuk Bisnis akan menampilkan error 400 INVALID_ARGUMENT dan tidak mengirimkan pesan Anda.
Sebagai bagian dari strategi pesan multisaluran, sebaiknya batalkan pesan yang tidak terkirim setelah jangka waktu yang wajar dan kirimkan melalui saluran lain. Untuk mencabut pesan secara otomatis pada waktu yang telah ditentukan, tetapkan masa berlaku pesan.
Penerima sedang offline
Platform RCS untuk Bisnis tetap menerima pesan untuk pengiriman jika penerima sedang offline. Anda menerima respons 200 OK, dan platform RCS for Business menahan pesan serta mencoba pengiriman ulang selama 30 hari. Anda tidak perlu meminta RCS untuk Bisnis mengirim pesan lagi.
RCS untuk Bisnis menghapus pesan yang tidak terkirim 30 hari setelah dikirim.
Bergantung pada kasus penggunaan agen Anda, Anda mungkin ingin membatalkan pesan yang belum terkirim sebelum batas waktu 30 hari ini. Pencabutan dapat mencegah pengguna offline menerima pesan yang sudah tidak berlaku saat mereka kembali online. Ada beberapa cara untuk mencabut pesan:
- Kirim permintaan pencabutan untuk memicu pencabutan.
- Menyetel masa berlaku pesan untuk mencabut pesan secara otomatis pada waktu yang tepat.
Menyetel masa berlaku pesan
Apakah pesan agen Anda mendesak? Misalnya, OTP hanya valid untuk jangka waktu singkat. Penawaran berbatas waktu akan berakhir. Selain itu, pengingat janji temu tidak relevan setelah tanggal janji temu. Agar pesan tetap tepat waktu dan relevan, tetapkan masa berlaku pesan. Hal ini dapat mencegah pengguna offline menerima konten yang sudah usang saat mereka kembali online. Masa berlaku juga merupakan isyarat yang baik untuk memanggil strategi pesan pengganti Anda sehingga pengguna mendapatkan info yang mereka butuhkan tepat waktu.
Untuk menyetel masa berlaku pesan, tentukan salah satu kolom berikut dalam pesan agen:
expireTime: waktu persis dalam UTC saat pesan berakhir.ttl(time to live): jangka waktu sebelum pesan berakhir.
Untuk opsi pemformatan dan nilai, lihat AgentMessage.
Nilai maksimum untuk ttl dan expireTime adalah 15 hari setelah pengiriman pesan.
Meskipun tidak ada nilai minimum ttl dan expireTime, sebaiknya tunggu setidaknya 10 detik
setelah pengiriman pesan untuk mengurangi kemungkinan
menerima notifikasi pencabutan dan pengiriman.
Time to live (TTL) untuk pesan
Saat menyetel TTL untuk pesan RCS untuk Bisnis, Anda menentukan berapa lama pesan harus dianggap valid dan dapat dikirim. Jika pesan tidak berhasil dikirim ke perangkat pengguna dalam periode TTL ini, platform RCS untuk Bisnis akan otomatis mencoba mencabutnya.
Saat Anda memulai pencabutan pesan, Anda meminta platform RCS for Business untuk berhenti mencoba pengiriman pesan tertentu tersebut. Namun, tindakan ini hanya memengaruhi upaya pengiriman mendatang. Jika perangkat pengguna telah berhasil mengambil pesan, pesan tersebut sedang diproses, dan platform RCS for Business tidak dapat membatalkan pesan dari perangkat pengguna.
Berikut ini yang akan terjadi terkait notifikasi:
Pesan terkirim dalam TTL: Jika perangkat pengguna terhubung ke internet dan menerima pesan sebelum TTL berakhir, Anda akan menerima notifikasi
DELIVERED. Tidak ada notifikasi pencabutan yang akan dikirim, karena pesan berhasil dikirim. Ini adalah skenario yang paling umum dan diharapkan.Pesan tidak terkirim sebelum TTL berakhir: Jika TTL berakhir sebelum pesan sampai ke perangkat pengguna (misalnya, perangkat sedang offline), platform RCS untuk Bisnis akan mencoba mencabut pesan. Anda akan menerima notifikasi
TTL_EXPIRATION_REVOKED, yang menunjukkan bahwa pesan telah berhasil dihapus dari antrean pengiriman. Dalam hal ini, pengguna tidak akan menerima pesan.
Rekomendasi untuk menangani kasus tepi
Sistem kami memproses pengiriman pesan RCS for Business dan masa berlaku TTL secara paralel. Oleh karena itu, sangat jarang, Anda mungkin melihat kasus ekstrem saat waktu notifikasi tidak terduga. Misalnya, Anda mungkin mendapatkan notifikasi pengiriman dan TTL atau tidak mendapatkan keduanya.
Berikut rekomendasi kami untuk menangani notifikasi pesan RCS for Business:
Notifikasi
DELIVERED: Jika Anda menerima notifikasiDELIVEREDuntuk pesan, hal ini mengonfirmasi bahwa pesan telah sampai ke pengguna. Anda dapat mengabaikan notifikasi TTL berikutnya untuk pesan tertentu tersebut dengan aman.Notifikasi
TTL_EXPIRATION_REVOKED: Jika Anda menerima notifikasi TTL dengan statusTTL_EXPIRATION_REVOKED, berarti sistem RCS untuk Bisnis berhenti mencoba mengirimkan pesan tertentu tersebut. Anda harus memperlakukan pesan ini sebagai tidak terkirim dan melanjutkan strategi penggantian jika diperlukan.Notifikasi TTL dengan status lainnya: Jika Anda menerima notifikasi TTL dengan status lainnya, hal ini menunjukkan upaya pencabutan yang tidak konklusif.
- Untuk pesan penting, seperti sandi sekali pakai (OTP), mulai metode penggantian Anda.
- Untuk pesan yang tidak penting, putuskan apakah akan memulai penggantian atau tidak.
- Tidak ada notifikasi: Dalam kasus ekstrem yang jarang terjadi, sistem mungkin gagal mengirim notifikasi TTL dan klien juga mungkin gagal membuat notifikasi pengiriman. Ini adalah kasus yang sangat langka.
Menetapkan jenis traffic pesan
RBM API menyertakan kolom messageTrafficType untuk mengategorikan pesan.
Meskipun kasus penggunaan agen masih menentukan perilaku agen dan aturan bisnis yang berlaku, messageTrafficType memungkinkan kategorisasi konten pesan yang lebih mendetail. Pada akhirnya, hal ini memungkinkan satu agen menangani
beberapa kasus penggunaan. Tidak ada dampak pada kasus penggunaan agen atau aturan bisnis yang ada saat ini.
Kolom ini bersifat opsional, tetapi sebaiknya Anda menyetelnya sekarang agar tidak menerima error saat kolom ini menjadi wajib diisi.
Untuk menyetel jenis traffic pesan, tetapkan messageTrafficType yang sesuai
untuk setiap pesan berdasarkan kontennya. RCS untuk Bisnis mendukung jenis traffic berikut.
| Jenis traffic | Isi pesan | Kasus penggunaan agen |
|---|---|---|
AUTHENTICATION |
Untuk pesan autentikasi. | OTP |
TRANSACTION |
Untuk pesan tentang layanan atau produk yang sudah dimiliki pengguna. Misalnya: konfirmasi, tanda terima pembayaran, atau detail pemesanan. | Transaksional atau Multiguna |
PROMOTION |
Untuk pesan promosi seperti penawaran, diskon, pengumuman, atau konten promosi lainnya. | Promosi atau Multiguna |
SERVICEREQUEST |
Untuk pesan tentang layanan yang telah diminta pengguna secara eksplisit. | OTP, Transaksional, Promosi, atau Multi-penggunaan |
ACKNOWLEDGEMENT |
Untuk pesan yang digunakan untuk mengonfirmasi tindakan pengguna – khususnya permintaan berhenti berlangganan. Email ini mengonfirmasi bahwa permintaan pengguna telah diterima dan sedang diproses. | OTP, Transaksional, Promosi, atau Multi-penggunaan |
Jika tidak ada jenis traffic yang ditetapkan, sistem akan menetapkan jenis default untuk kasus penggunaan agen.
| Kasus penggunaan agen | Jenis traffic default |
|---|---|
| OTP | AUTHENTICATION |
| Transaksional | TRANSACTION |
| Promosi | PROMOTION |
| Multi-penggunaan | MESSAGE_TRAFFIC_TYPE_UNSPECIFIED |
Agen multi-penggunaan tidak memiliki jenis traffic default. Anda harus menetapkan jenis traffic secara eksplisit untuk setiap pesan berdasarkan kontennya. Jika Anda tidak mengganti nilai
MESSAGE_TRAFFIC_TYPE_UNSPECIFIED, akan terjadi error.
Batas ukuran pesan
Ukuran maksimum seluruh AgentMessage yang diubah menjadi string adalah 250 KB. Bagian teks pesan memiliki batas 3.072 karakter.
Untuk mencegah konsumsi data yang tidak terduga bagi pengguna, ukuran maksimum file yang dapat dikirim melalui RCS untuk Bisnis adalah 100 MiB, dan ukuran total gabungan semua lampiran media dan PDF dalam satu pesan RCS untuk Bisnis tidak boleh melebihi 100 MiB. (1 MiB = 1.048.576 byte). Untuk mengetahui informasi selengkapnya, lihat file media dan PDF.
Teks
Pesan paling sederhana dibuat dari teks. Pesan teks paling cocok untuk mengomunikasikan informasi tanpa memerlukan visual, interaksi yang rumit, atau respons.
Contoh
Kode berikut mengirimkan pesan teks biasa. Untuk opsi pemformatan dan nilai, lihat phones.agentMessages.create.
cURL
curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/rcs-business-messaging" \ -H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \ -d '{ "contentMessage": { "text": "Hello, world!" }, "messageTrafficType": "PROMOTION" }'
Node.js
// Reference to RBM API helper const rbmApiHelper = require('@google/rcsbusinessmessaging'); let params = { messageText: 'Hello, world!', msisdn: '+12223334444', }; // Send a simple message to the device rbmApiHelper.sendMessage(params, function(response) { console.log(response); });
Java
import com.google.rbm.RbmApiHelper; … try { // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(); // Send simple text message to user rbmApiHelper.sendTextMessage( "Hello, world!", "+12223334444" ); } catch(Exception e) { e.printStackTrace(); }
Python
# Reference to RBM Python client helper and messaging object structure from rcs_business_messaging import rbm_service from rcs_business_messaging import messages # Create a simple RBM text message message_text = messages.TextMessage('Hello, world!') # Send text message to the device messages.MessageCluster().append_message(message_text).send_to_msisdn('+12223334444')
C#
using RCSBusinessMessaging; … // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation, projectId); rbmApiHelper.SendTextMessage( "Hello, world!", "+12223334444", );
Konten Pesan Dasar - konversi SMS
Operator telah memperkenalkan model penagihan untuk mendukung peralihan pesan SMS ke RCS for Business. Pesan RCS for Business yang berisi hingga 160 karakter UTF-8 disebut Pesan Dasar.
Saat membuat permintaan untuk mengirim Pesan Dasar, ingatlah bahwa karakter dihitung sebagai 1 byte (UTF-8). Jika Anda mengirim pesan yang berisi karakter khusus seperti emoji atau set karakter multi-byte, setiap karakter dihitung sebagai 2-4 karakter UTF-8 atau lebih.
Masukkan beberapa teks di kotak untuk memeriksa panjangnya:
Konten pesan teks dan pratinjau link
Klien RCS dapat menerapkan pratinjau link. Jika pesan RCS untuk Bisnis khusus teks menyertakan URL untuk situs dengan tag openGraph, klien dapat membuat pratinjau (gambar, judul, dll.), sehingga memberikan pengalaman yang lebih baik. Misalnya, lihat pesan dasar dengan pratinjau URL.
Perhatikan bahwa klien RCS dapat mengizinkan pengguna menonaktifkan pratinjau link.
Sandi sekali pakai untuk verifikasi pengguna
Anda dapat menggunakan RCS for Business untuk mengirimkan sandi sekali pakai (OTP) untuk verifikasi pengguna otomatis dengan SMS Retriever API. Tidak ada API khusus untuk membaca OTP yang diterima melalui RCS for Business.
Cara kerjanya untuk Android
Untuk aplikasi Android yang telah terdaftar di SMS Retriever API, API akan memproses pesan RCS untuk Bisnis yang diformat dengan benar. Pesan ini harus berisi OTP dan hash unik yang mengidentifikasi aplikasi Anda.
Saat pesan RCS untuk Bisnis diterima dengan format yang benar, SMS Retriever API akan memprosesnya seperti halnya OTP SMS. Setelah hash dicocokkan dengan aplikasi Anda, OTP akan diekstrak dan diteruskan ke aplikasi Anda untuk verifikasi pengguna otomatis.
- Contoh pesan teks RCS for Business untuk verifikasi pengguna:
Your code is <OTP><app hash>. - Contoh:
Your code is 123456 M8tue43FGT.
Untuk mempelajari lebih lanjut SMS Retriever dan API terkait, lihat dokumentasi SMS Retriever. Untuk mengetahui detail tentang verifikasi pengguna otomatis di aplikasi yang terdaftar dengan SMS Retriever API, lihat diagram alur ini.
Cara kerjanya untuk iOS
Untuk iOS, penanganan OTP bawaan sistem otomatis mendeteksi dan menyarankan OTP RCS untuk Bisnis untuk pengisian otomatis, seperti OTP SMS. Tidak ada integrasi API khusus yang diperlukan agar aplikasi iOS dapat membaca OTP.
File media dan PDF
Saat Anda mengirim pesan dengan file gambar, video, audio, atau PDF, agen Anda harus memberikan URL yang dapat diakses secara publik untuk konten tersebut atau mengupload file secara langsung.
Ukuran maksimum file yang dapat dikirim adalah 100 MiB, dan ukuran gabungan total semua lampiran media dan PDF dalam satu pesan tidak boleh melebihi 100 MiB.
Spesifikasi thumbnail
Untuk file media, Anda juga dapat menentukan gambar thumbnail yang memungkinkan pengguna melihat pratinjau konten sebelum mengkliknya. Untuk file audio, widget audio default digunakan sebagai placeholder.
- Ukuran file maksimum thumbnail adalah 100 kB. Untuk pengalaman pengguna yang optimal, sebaiknya ukuran file 50 kB atau kurang.
- Rasio aspek thumbnail harus cocok dengan rasio file aslinya.
Pengelolaan URL dan penyimpanan ke cache
Platform RCS for Business menyimpan file dalam cache selama 60 hari, dan API menampilkan ID file yang dapat disertakan agen Anda dalam pesan kepada pengguna. Setelah 60 hari, RCS for Business akan menghapus file dari cache.
Saat menentukan file menurut URL, sebaiknya tetapkan
contentMessage.forceRefresh ke false. Menetapkan contentMessage.forceRefresh
ke true akan memaksa RCS untuk Bisnis mengambil konten baru dari URL yang ditentukan,
bahkan jika konten URL di-cache, yang akan meningkatkan waktu pengiriman pesan
bagi pengguna.
Contoh URL file
Kode berikut mengirimkan gambar. Untuk opsi pemformatan dan nilai, lihat
AgentContentMessage.
cURL
curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/rcs-business-messaging" \ -H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \ -d '{ "contentMessage": { "contentInfo": { "fileUrl": "http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif", "forceRefresh": false } } }'
Node.js
// Reference to RBM API helper const rbmApiHelper = require('@google/rcsbusinessmessaging'); let params = { fileUrl: 'http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif', msisdn: '+12223334444', }; // Send an image/video to a device rbmApiHelper.sendMessage(params, function(response) { console.log(response); });
Java
import com.google.api.services.rcsbusinessmessaging.v1.model.AgentContentMessage; import com.google.api.services.rcsbusinessmessaging.v1.model.AgentMessage; import com.google.rbm.RbmApiHelper; … try { // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(); String fileUrl = "http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif"; // create media only message AgentContentMessage agentContentMessage = new AgentContentMessage(); agentContentMessage.setContentInfo(new ContentInfo().setFileUrl(fileUrl)); // attach content to message AgentMessage agentMessage = new AgentMessage(); agentMessage.setContentMessage(agentContentMessage); rbmApiHelper.sendAgentMessage(agentMessage, "+12223334444"); } catch(Exception e) { e.printStackTrace(); }
Python
# Reference to RBM Python client helper and messaging object structure from rcs_business_messaging import rbm_service from rcs_business_messaging import messages # Create media file attachment file_message = messages.FileMessage('http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif') messages.MessageCluster().append_message(file_message).send_to_msisdn('+12223334444')
C#
using Google.Apis.RCSBusinessMessaging.v1.Data; using RCSBusinessMessaging; … // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation, projectId); string fileUrl = "http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif"; // Create content info with the file url ContentInfo contentInfo = new ContentInfo { FileUrl = fileUrl }; // Attach content info to a message AgentContentMessage agentContentMessage = new AgentContentMessage { ContentInfo = contentInfo, }; // Attach content to message AgentMessage agentMessage = new AgentMessage { ContentMessage = agentContentMessage }; rbmApiHelper.SendAgentMessage(agentMessage, "+12223334444");
Atau, Anda dapat mengupload media sebelum mengirimkannya dalam pesan dengan
files.create.
Contoh upload file
Kode berikut mengupload file video dan file thumbnail, lalu mengirimkan kedua
file tersebut dalam pesan. Untuk opsi pemformatan dan nilai, lihat files.create
dan AgentContentMessage.
cURL
curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/upload/v1/files?agentId=AGENT_ID" \ -H "Content-Type: video/mp4" \ -H "User-Agent: curl/rcs-business-messaging" \ -H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \ --upload-file "FULL_PATH_TO_VIDEO_MEDIA_FILE"# Capture server-specified video file name from response body JSONcurl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/upload/v1/files?agentId=AGENT_ID" \ -H "Content-Type: image/jpeg" \ -H "User-Agent: curl/rcs-business-messaging" \ -H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \ --upload-file "FULL_PATH_TO_THUMBNAIL_MEDIA_FILE"# Capture server-specified image file name from response body JSONcurl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/rcs-business-messaging" \ -H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \ -d '{ "contentMessage": { "uploadedRbmFile": { "fileName": "SERVER-SPECIFIED_VIDEO_FILE_NAME", "thumbnailName": "SERVER-SPECIFIED_THUMBNAIL_FILE_NAME" } } }'
Jenis media yang didukung
RCS untuk Bisnis mendukung jenis media berikut. Untuk thumbnail, hanya image/jpeg, image/jpg, image/gif, dan image/png yang didukung.
| Jenis media | Jenis dokumen | Ekstensi | Kompatibel dengan kartu informasi |
|---|---|---|---|
| application/ogg | Audio OGG | .ogx | Tidak |
| application/pdf | Ya (Khusus untuk Google Message di India) | ||
| audio/aac | Audio AAC | .aac | Tidak |
| audio/mp3 | Audio MP3 | .mp3 | Tidak |
| audio/mpeg | Audio MPEG | .mpeg | Tidak |
| audio/mpg | Audio MPG | .mp3 | Tidak |
| audio/mp4 | Audio MP4 | .mp4 | Tidak |
| audio/mp4-latm | Audio MP4-latm | .mp4 | Tidak |
| audio/3gpp | Audio 3GPP | .3gp | Tidak |
| image/jpeg | JPEG | .jpeg, .jpg | Ya |
| image/gif | GIF | .gif | Ya |
| image/png | PNG | .png | Ya |
| video/h263 | Video H263 | .h263 | Ya |
| video/m4v | Video M4V | .m4v | Ya |
| video/mp4 | Video MP4 | .mp4 | Ya |
| video/mpeg4 | Video MPEG-4 | .mp4, .m4p | Ya |
| video/mpeg | Video MPEG | .mpeg | Ya |
| video/webm | Video WEBM | .webm | Ya |
Saran
Agen Anda mengirimkan saran (balasan yang disarankan dan tindakan yang disarankan) dalam daftar chip saran (maksimum 11 saran) atau dalam kartu lengkap (maksimum empat saran).
Setiap saran memiliki maksimum 25 karakter.
Balasan yang disarankan
Balasan yang disarankan memandu pengguna dalam percakapan dengan memberikan respons yang diketahui cara meresponsnya oleh agen Anda.
Saat pengguna mengetuk balasan yang disarankan, agen Anda akan menerima peristiwa yang berisi teks balasan dan data postback. Payload memiliki maksimum 2048 karakter.
Contoh
Kode berikut mengirim teks dengan dua saran balasan. Untuk opsi pemformatan dan
nilai, lihat SuggestedReply.
cURL
curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/rcs-business-messaging" \ -H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \ -d '{ "contentMessage": { "text": "Hello, world!", "suggestions": [ { "reply": { "text": "Suggestion #1", "postbackData": "suggestion_1" } }, { "reply": { "text": "Suggestion #2", "postbackData": "suggestion_2" } } ] } }'
Node.js
// Reference to RBM API helper const rbmApiHelper = require('@google/rcsbusinessmessaging'); let suggestions = [ { reply: { 'text': 'Suggestion #1', 'postbackData': 'suggestion_1', }, }, { reply: { 'text': 'Suggestion #2', 'postbackData': 'suggestion_2', }, }, ]; let params = { messageText: 'Hello, world!', msisdn: '+12223334444', suggestions: suggestions, }; // Send a simple message with suggestion chips to the device rbmApiHelper.sendMessage(params, function(response) { console.log(response); });
Java
import com.google.api.services.rcsbusinessmessaging.v1.model.Suggestion; import com.google.rbm.RbmApiHelper; import com.google.rbm.SuggestionHelper; … try { // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(); // Create suggestions for chip list List<Suggestion> suggestions = new ArrayList<Suggestion>(); suggestions.add( new SuggestionHelper("Suggestion #1", "suggestion_1").getSuggestedReply()); suggestions.add( new SuggestionHelper("Suggestion #2", "suggestion_2").getSuggestedReply()); // Send simple text message to user rbmApiHelper.sendTextMessage( "Hello, world!", "+12223334444", suggestions ); } catch(Exception e) { e.printStackTrace(); }
Python
# Reference to RBM Python client helper and messaging object structure from rcs_business_messaging import rbm_service from rcs_business_messaging import messages # Create text message to send to user text_msg = messages.TextMessage('Hello, world!') cluster = messages.MessageCluster().append_message(text_msg) # Append suggested replies for the message to send to the user cluster.append_suggestion_chip(messages.SuggestedReply('Suggestion #1', 'reply:suggestion_1')) cluster.append_suggestion_chip(messages.SuggestedReply('Suggestion #2', 'reply:suggestion_2')) # Send a simple message with suggestion chips to the device cluster.send_to_msisdn('+12223334444')
C#
using Google.Apis.RCSBusinessMessaging.v1.Data; using RCSBusinessMessaging; … // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation, projectId); List<Suggestion> suggestions = new List<Suggestion> { // Create suggestion chips new SuggestionHelper("Suggestion #1", "suggestion_1").SuggestedReply(), new SuggestionHelper("Suggestion #2", "suggestion_2").SuggestedReply() }; // Send simple text message with suggestions to user rbmApiHelper.SendTextMessage( "Hello, world!", "+12223334444", suggestions );
Tindakan yang disarankan
Tindakan yang disarankan memandu pengguna melalui percakapan dengan memanfaatkan fungsi bawaan perangkat mereka. Agen Anda dapat menyarankan pengguna untuk menghubungi nomor, membuka lokasi di peta, membagikan lokasi, membuka URL, atau membuat acara kalender.
Untuk setiap tindakan yang disarankan, Anda dapat secara opsional memberikan URL pengganti (maksimum 2048 karakter). URL ini akan terbuka di jendela browser baru jika perangkat pengguna tidak mendukung tindakan yang disarankan.
Saat pengguna mengetuk tindakan yang disarankan, agen Anda akan menerima peristiwa yang berisi data postback tindakan.
Untuk opsi pemformatan dan nilai, lihat SuggestedAction.
Panggil nomor
Tindakan Telepon memandu pengguna untuk menghubungi nomor telepon yang ditentukan oleh agen Anda.
Nomor telepon hanya boleh menyertakan digit (0-9), tanda plus (+), tanda bintang (*),
dan tanda angka (#). Format internasional E.164 (misalnya,
+14155555555) didukung, tetapi tidak wajib. Artinya, +14155555555 dan
1011 adalah entri yang valid.
Contoh
Kode berikut mengirimkan tindakan panggilan. Untuk opsi pemformatan dan nilai, lihat
DialAction.
cURL
curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/rcs-business-messaging" \ -H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \ -d '{ "contentMessage": { "text": "Hello, world!", "suggestions": [ { "action": { "text": "Call", "postbackData": "postback_data_1234", "fallbackUrl": "https://www.google.com/contact/", "dialAction": { "phoneNumber": "+15556667777" } } } ] } }'
Node.js
// Reference to RBM API helper const rbmApiHelper = require('@google/rcsbusinessmessaging'); // Define a dial suggested action let suggestions = [ { action: { text: 'Call', postbackData: 'postback_data_1234', dialAction: { phoneNumber: '+15556667777' } } }, ]; let params = { messageText: 'Hello, world!', msisdn: '+12223334444', suggestions: suggestions, }; // Send a simple message with a dial suggested action rbmApiHelper.sendMessage(params, function(response) { console.log(response); });
Java
import com.google.api.services.rcsbusinessmessaging.v1.model.DialAction; import com.google.api.services.rcsbusinessmessaging.v1.model.SuggestedAction; import com.google.api.services.rcsbusinessmessaging.v1.model.Suggestion; import com.google.rbm.RbmApiHelper; … try { // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(); // Create suggestions for chip list List<Suggestion> suggestions = new ArrayList<Suggestion>(); // creating a dial suggested action DialAction dialAction = new DialAction(); dialAction.setPhoneNumber("+15556667777"); // creating a suggested action based on a dial action SuggestedAction suggestedAction = new SuggestedAction(); suggestedAction.setText("Call"); suggestedAction.setPostbackData("postback_data_1234"); suggestedAction.setDialAction(dialAction); // attaching action to a suggestion Suggestion suggestion = new Suggestion(); suggestion.setAction(suggestedAction); suggestions.add(suggestion); // Send simple text message with the suggestion action rbmApiHelper.sendTextMessage( "Hello, world!", "+12223334444", suggestions ); } catch(Exception e) { e.printStackTrace(); }
Python
# Reference to RBM Python client helper and messaging object structure from rcs_business_messaging import rbm_service from rcs_business_messaging import messages # Create a dial suggested action suggestions = [ messages.DialAction('Call', 'reply:postback_data_1234', '+15556667777') ] # Create text message to send to user text_msg = messages.TextMessage('Hello, world!') cluster = messages.MessageCluster().append_message(text_msg) # Append suggestions for the message to send to the user for suggestion in suggestions: cluster.append_suggestion_chip(suggestion) # Send a simple message with suggested action to the device cluster.send_to_msisdn('+12223334444')
C#
using Google.Apis.RCSBusinessMessaging.v1.Data; using RCSBusinessMessaging; … // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation, projectId); // Create a dial an agent suggested action DialAction dialAction = new DialAction { PhoneNumber = "+15556667777" }; // Creating a suggested action based on a dial action SuggestedAction suggestedAction = new SuggestedAction { Text = "Call", PostbackData = "postback_data_1234", DialAction = dialAction }; // Attach action to a suggestion Suggestion suggestion = new Suggestion { Action = suggestedAction }; List<Suggestion> suggestions = new List<Suggestion> { suggestion }; rbmApiHelper.SendTextMessage( "Hello, world!", "+12223334444", suggestions );
Melihat lokasi
Tindakan Lihat lokasi menampilkan lokasi di aplikasi peta default pengguna. Anda dapat menentukan lokasi berdasarkan lintang dan bujur atau dengan kueri berdasarkan lokasi pengguna saat ini. Anda juga dapat menetapkan label kustom untuk pin yang ditampilkan di aplikasi peta.
Contoh
Kode berikut mengirimkan tindakan lihat lokasi. Untuk opsi pemformatan dan nilai, lihat ViewLocationAction.
cURL
curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/rcs-business-messaging" \ -H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \ -d '{ "contentMessage": { "text": "Hello, world!", "suggestions": [ { "action": { "text": "View map", "postbackData": "postback_data_1234", "fallbackUrl": "https://www.google.com/maps/@37.4220188,-122.0844786,15z", "viewLocationAction": { "latLong": { "latitude": "37.4220188", "longitude": "-122.0844786" }, "label": "Googleplex" } } } ] } }'
Node.js
// Reference to RBM API helper const rbmApiHelper = require('@google/rcsbusinessmessaging'); // Define a view location suggested action let suggestions = [ { action: { text: 'View map', postbackData: 'postback_data_1234', viewLocationAction: { latLong: { latitude: 37.4220188, longitude: -122.0844786 }, label: 'Googleplex' } } }, ]; let params = { messageText: 'Hello, world!', msisdn: '+12223334444', suggestions: suggestions, }; // Send a simple message with a view location suggested action rbmApiHelper.sendMessage(params, function(response) { console.log(response); });
Java
import com.google.api.services.rcsbusinessmessaging.v1.model.ViewLocationAction; import com.google.api.services.rcsbusinessmessaging.v1.model.SuggestedAction; import com.google.api.services.rcsbusinessmessaging.v1.model.Suggestion; import com.google.rbm.RbmApiHelper; … try { // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(); // Create suggestions for chip list List<Suggestion> suggestions = new ArrayList<Suggestion>(); // creating a view location suggested action ViewLocationAction viewLocationAction = new ViewLocationAction(); viewLocationAction.setQuery("Googleplex, Mountain View, CA"); // creating a suggested action based on a view location action SuggestedAction suggestedAction = new SuggestedAction(); suggestedAction.setText("View map"); suggestedAction.setPostbackData("postback_data_1234"); suggestedAction.setViewLocationAction(viewLocationAction); // attaching action to a suggestion Suggestion suggestion = new Suggestion(); suggestion.setAction(suggestedAction); suggestions.add(suggestion); // Send simple text message with the suggestion action rbmApiHelper.sendTextMessage( "Hello, world!", "+12223334444", suggestions ); } catch(Exception e) { e.printStackTrace(); }
Python
# Reference to RBM Python client helper and messaging object structure from rcs_business_messaging import rbm_service from rcs_business_messaging import messages # Create a view location suggested action suggestions = [ messages.ViewLocationAction('View map', 'reply:postback_data_1234', query='Googleplex, Mountain View, CA') ] # Create text message to send to user text_msg = messages.TextMessage('Hello, world!') cluster = messages.MessageCluster().append_message(text_msg) # Append suggestions for the message to send to the user for suggestion in suggestions: cluster.append_suggestion_chip(suggestion) # Send a simple message with suggested action to the device cluster.send_to_msisdn('+12223334444')
C#
using Google.Apis.RCSBusinessMessaging.v1.Data; using RCSBusinessMessaging; … // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation, projectId); // create an view location action ViewLocationAction viewLocationAction = new ViewLocationAction { Query = "Googleplex Mountain View, CA" }; // Attach the view location action to a suggested action SuggestedAction suggestedAction = new SuggestedAction { ViewLocationAction = viewLocationAction, Text = "View map", PostbackData = "postback_data_1234" }; // Attach the action to a suggestion object Suggestion suggestion = new Suggestion { Action = suggestedAction }; List<Suggestion> suggestions = new List<Suggestion> { suggestion }; rbmApiHelper.SendTextMessage( "Hello, world!", "+12223334444", suggestions );
Bagikan lokasi
Tindakan Bagikan Lokasi memungkinkan pengguna membagikan lokasi kepada agen Anda. Pengguna dapat membagikan lokasi saat ini atau lokasi yang dipilih secara manual dari aplikasi Maps.
Contoh
Kode berikut mengirim tindakan berbagi lokasi. Untuk opsi pemformatan dan nilai, lihat ShareLocationAction.
cURL
curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/rcs-business-messaging" \ -H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \ -d '{ "contentMessage": { "text": "Hello, world!", "suggestions": [ { "action": { "text": "Share your location", "postbackData": "postback_data_1234", "shareLocationAction": {} } } ] } }'
Node.js
// Reference to RBM API helper const rbmApiHelper = require('@google/rcsbusinessmessaging'); // Define a share location suggested action let suggestions = [ { action: { text: 'Share your location', postbackData: 'postback_data_1234', shareLocationAction: { } } }, ]; let params = { messageText: 'Hello, world!', msisdn: '+12223334444', suggestions: suggestions, }; // Send a simple message with a share location suggested action rbmApiHelper.sendMessage(params, function(response) { console.log(response); });
Java
import com.google.api.services.rcsbusinessmessaging.v1.model.ShareLocationAction; import com.google.api.services.rcsbusinessmessaging.v1.model.SuggestedAction; import com.google.api.services.rcsbusinessmessaging.v1.model.Suggestion; import com.google.rbm.RbmApiHelper; … try { // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(); // Create suggestions for chip list List<Suggestion> suggestions = new ArrayList<Suggestion>(); // creating a share location suggested action ShareLocationAction shareLocationAction = new ShareLocationAction(); // creating a suggested action based on a share location action SuggestedAction suggestedAction = new SuggestedAction(); suggestedAction.setText("Share location"); suggestedAction.setPostbackData("postback_data_1234"); suggestedAction.setShareLocationAction(shareLocationAction); // attaching action to a suggestion Suggestion suggestion = new Suggestion(); suggestion.setAction(suggestedAction); suggestions.add(suggestion); // Send simple text message with the suggestion action rbmApiHelper.sendTextMessage( "Hello, world!", "+12223334444", suggestions ); } catch(Exception e) { e.printStackTrace(); }
Python
# Reference to RBM Python client helper and messaging object structure from rcs_business_messaging import rbm_service from rcs_business_messaging import messages # Create a share location suggested action suggestions = [ messages.ShareLocationAction('Share location', 'reply:postback_data_1234') ] # Create text message to send to user text_msg = messages.TextMessage('Hello, world!') cluster = messages.MessageCluster().append_message(text_msg) # Append suggestions for the message to send to the user for suggestion in suggestions: cluster.append_suggestion_chip(suggestion) # Send a simple message with suggested action to the device cluster.send_to_msisdn('+12223334444')
C#
using Google.Apis.RCSBusinessMessaging.v1.Data; using RCSBusinessMessaging; … // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation, projectId); // Create a share location action ShareLocationAction shareLocationAction = new ShareLocationAction(); // Attach the share location action to a suggested action SuggestedAction suggestedAction = new SuggestedAction { ShareLocationAction = shareLocationAction, Text = "Share location", PostbackData = "postback_data_1234" }; // Attach the action to a suggestion object Suggestion suggestion = new Suggestion { Action = suggestedAction }; List<Suggestion> suggestions = new List<Suggestion> { suggestion }; rbmApiHelper.SendTextMessage( "Hello, world!", "+12223334444", suggestions );
Membuka URL
Tindakan Buka URL memungkinkan Anda memandu pengguna ke halaman web yang ditentukan oleh agen Anda. Secara default, halaman web akan terbuka di browser pengguna. Anda juga dapat menyetel halaman web untuk dibuka di webview; lihat Membuka URL dengan webview untuk mengetahui detailnya.
Hanya di Google Message: Jika pengguna telah mengonfigurasi aplikasi default untuk halaman web, aplikasi tersebut akan terbuka, bukan browser atau webview, dan tombol saran akan menampilkan ikon aplikasi. Agar ikon aplikasi muncul di Google Message, Anda harus memberikan URL langsung yang lengkap. Jika Anda menggunakan URL yang disingkat, ikon Buka URL default akan ditampilkan.
Contoh
Kode berikut mengirimkan tindakan buka URL. Untuk opsi pemformatan dan nilai,
lihat OpenUrlAction.
cURL
curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/rcs-business-messaging" \ -H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \ -d '{ "contentMessage": { "text": "Hello, world!", "suggestions": [ { "action": { "text": "Open Google", "postbackData": "postback_data_1234", "openUrlAction": { "url": "https://www.google.com" } } } ] } }'
Node.js
// Reference to RBM API helper const rbmApiHelper = require('@google/rcsbusinessmessaging'); // Define an open URL suggested action let suggestions = [ { action: { text: 'Open Google', postbackData: 'postback_data_1234', openUrlAction: { url: 'https://www.google.com' } } }, ]; let params = { messageText: 'Hello, world!', msisdn: '+12223334444', suggestions: suggestions, }; // Send a simple message with an open URL suggested action rbmApiHelper.sendMessage(params, function(response) { console.log(response); });
Java
import com.google.api.services.rcsbusinessmessaging.v1.model.OpenUrlAction; import com.google.api.services.rcsbusinessmessaging.v1.model.SuggestedAction; import com.google.api.services.rcsbusinessmessaging.v1.model.Suggestion; import com.google.rbm.RbmApiHelper; … try { // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(); // Create suggestions for chip list List<Suggestion> suggestions = new ArrayList<Suggestion>(); // creating an open url suggested action OpenUrlAction openUrlAction = new OpenUrlAction(); openUrlAction.setUrl("https://www.google.com"); // creating a suggested action based on an open url action SuggestedAction suggestedAction = new SuggestedAction(); suggestedAction.setText("Open Google"); suggestedAction.setPostbackData("postback_data_1234"); suggestedAction.setOpenUrlAction(openUrlAction); // attaching action to a suggestion Suggestion suggestion = new Suggestion(); suggestion.setAction(suggestedAction); suggestions.add(suggestion); // Send simple text message with the suggestion action rbmApiHelper.sendTextMessage( "Hello, world!", "+12223334444", suggestions ); } catch(Exception e) { e.printStackTrace(); }
Python
# Reference to RBM Python client helper and messaging object structure from rcs_business_messaging import rbm_service from rcs_business_messaging import messages # Create an open url suggested action suggestions = [ messages.OpenUrlAction('Open Google', 'reply:postback_data_1234', 'https://www.google.com') ] # Create text message to send to user text_msg = messages.TextMessage('Hello, world!') cluster = messages.MessageCluster().append_message(text_msg) # Append suggestions for the message to send to the user for suggestion in suggestions: cluster.append_suggestion_chip(suggestion) # Send a simple message with suggested action to the device cluster.send_to_msisdn('+12223334444')
C#
using Google.Apis.RCSBusinessMessaging.v1.Data; using RCSBusinessMessaging; … // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation, projectId); // Create an open url action OpenUrlAction openUrlAction = new OpenUrlAction { Url = "https://www.google.com" }; // Attach the open url action to a suggested action SuggestedAction suggestedAction = new SuggestedAction { OpenUrlAction = openUrlAction, Text = "Open Google", PostbackData = "postback_data_1234" }; // Attach the action to a suggestion object Suggestion suggestion = new Suggestion { Action = suggestedAction }; List<Suggestion> suggestions = new List<Suggestion> { suggestion }; rbmApiHelper.SendTextMessage( "Hello, world!", "+12223334444", suggestions );
Membuka URL dengan webview
Tindakan Buka URL dengan webview memuat halaman web yang ditentukan di dalam aplikasi pesan dengan mesin rendering browser default Anda. Hal ini memungkinkan pengguna berinteraksi dengan halaman web tanpa keluar dari percakapan RCS untuk Bisnis. Jika perangkat pengguna tidak mendukung webview,
halaman web akan terbuka di browser pengguna. Untuk mengaktifkan webview, lihat
OpenURLApplication.
WebView memiliki tiga mode tampilan. Untuk opsi pemformatan dan nilai, lihat
WebviewViewMode.
- Penuh: Halaman web ditampilkan dalam layar penuh
- Setengah: Halaman web menggunakan setengah layar
- Tinggi: Halaman web menggunakan tiga perempat layar
Contoh
Kode berikut mengirimkan tindakan Buka URL dengan webview. Untuk opsi pemformatan dan
nilai, lihat OpenURLAction.
cURL
curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/rcs-business-messaging" \ -H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \ -d '{ "contentMessage": { "text": "Hello, world!", "suggestions": [ { "action": { "text": "Open Google", "postbackData": "postback_data_1234", "openUrlAction": { "url": "https://www.google.com", "application": "WEBVIEW", "webviewViewMode": "FULL", "description": "Accessibility description" } } } ] } }'
Java
import com.google.api.services.rcsbusinessmessaging.v1.model.OpenUrlAction; import com.google.api.services.rcsbusinessmessaging.v1.model.SuggestedAction; import com.google.api.services.rcsbusinessmessaging.v1.model.Suggestion; import com.google.rbm.RbmApiHelper; … try { String URL = "https://www.google.com"; // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(); // Create suggestions for chip list List<Suggestion> suggestions = new ArrayList<Suggestion>(); // Create suggestion to view webpage in full mode Suggestion viewInFullMode = getUrlActionInWebview(URL, "FULL") suggestions.add(viewInFullMode); // create suggestion to view webpage in half mode Suggestion viewInHalfMode = getUrlActionInWebview(URL, "HALF") suggestions.add(viewInHalfMode); // create suggestion to view webpage in tall mode Suggestion viewInTallMode = getUrlActionInWebview(URL, "TALL") suggestions.add(viewInTallMode); // Send simple text message with the suggested action rbmApiHelper.sendTextMessage( "Hello, world!", "+12223334444", suggestions ); } catch(Exception e) { e.printStackTrace(); } /** * Creates a suggested action to open URL in webview. * * @return a suggestion object for an open URL in webview action . */ private Suggestion getUrlActionInWebview(String url, String viewMode) { // create an open url action OpenUrlAction openUrlAction = new OpenUrlAction(); openUrlAction.setUrl(url); openUrlAction.setApplication("WEBVIEW"); openUrlAction.setWebviewViewMode(viewMode); openUrlAction.setDescription("Accessibility description"); // attach the open url action to a suggested action SuggestedAction suggestedAction = new SuggestedAction(); suggestedAction.setOpenUrlAction(openUrlAction); suggestedAction.setText('display_text'); suggestedAction.setPostbackData('postback_data_123'); // attach the action to a suggestion object Suggestion suggestion = new Suggestion(); suggestion.setAction(suggestedAction); return suggestion; }
Membuat acara kalender
Tindakan Buat acara kalender akan membuka aplikasi kalender pengguna dan mulai membuat acara baru dengan informasi yang ditentukan.
Judul acara kalender wajib diisi. Kolom ini memiliki maksimum 100 karakter. Deskripsi acara kalender bersifat opsional dan memiliki maksimum 500 karakter.
Contoh
Kode berikut mengirim tindakan buat acara kalender. Untuk opsi pemformatan dan
nilai, lihat CreateCalendarEventAction.
cURL
curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/rcs-business-messaging" \ -H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \ -d '{ "contentMessage": { "text": "Hello, world!", "suggestions": [ { "action": { "text": "Save to calendar", "postbackData": "postback_data_1234", "fallbackUrl": "https://www.google.com/calendar", "createCalendarEventAction": { "startTime": "2020-06-30T19:00:00Z", "endTime": "2020-06-30T20:00:00Z", "title": "My calendar event", "description": "Description of the calendar event" } } } ] } }'
Node.js
// Reference to RBM API helper const rbmApiHelper = require('@google/rcsbusinessmessaging'); // Define a create calendar event suggested action let suggestions = [ { action: { text: 'Save to calendar', postbackData: 'postback_data_1234', createCalendarEventAction: { startTime: '2020-06-30T19:00:00Z', endTime: '2020-06-30T20:00:00Z', title: 'My calendar event', description: 'Description of the calendar event', }, } }, ]; let params = { messageText: 'Hello, world!', msisdn: '+12223334444', suggestions: suggestions, }; // Send a simple message with a create calendar event suggested action rbmApiHelper.sendMessage(params, function(response) { console.log(response); });
Java
import com.google.api.services.rcsbusinessmessaging.v1.model.CreateCalendarEventAction; import com.google.api.services.rcsbusinessmessaging.v1.model.SuggestedAction; import com.google.api.services.rcsbusinessmessaging.v1.model.Suggestion; import com.google.rbm.RbmApiHelper; … try { // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(); // Create suggestions for chip list List<Suggestion> suggestions = new ArrayList<Suggestion>(); // creating a create calendar event suggested action CreateCalendarEventAction createCalendarEventAction = new CreateCalendarEventAction(); calendarEventAction.setTitle("My calendar event"); calendarEventAction.setDescription("Description of the calendar event"); calendarEventAction.setStartTime("2020-06-30T19:00:00Z"); calendarEventAction.setEndTime("2020-06-30T20:00:00Z"); // creating a suggested action based on a create calendar event action SuggestedAction suggestedAction = new SuggestedAction(); suggestedAction.setText("Save to calendar"); suggestedAction.setPostbackData("postback_data_1234"); suggestedAction.setCreateCalendarEventAction(createCalendarEventAction); // attaching action to a suggestion Suggestion suggestion = new Suggestion(); suggestion.setAction(suggestedAction); suggestions.add(suggestion); // Send simple text message with the suggestion action rbmApiHelper.sendTextMessage( "Hello, world!", "+12223334444", suggestions ); } catch(Exception e) { e.printStackTrace(); }
Python
# Reference to RBM Python client helper and messaging object structure from rcs_business_messaging import rbm_service from rcs_business_messaging import messages # Create a calendar event suggested action suggestions = [ messages.CreateCalendarEventAction('Save to Calendar', 'reply:postback_data_1234', '2020-06-30T19:00:00Z', '2020-06-30T20:00:00Z', 'My calendar event', 'Description of the calendar event') ] # Create text message to send to user text_msg = messages.TextMessage('Hello, world!') cluster = messages.MessageCluster().append_message(text_msg) # Append suggestions for the message to send to the user for suggestion in suggestions: cluster.append_suggestion_chip(suggestion) # Send a simple message with suggested action to the device cluster.send_to_msisdn('+12223334444')
C#
using Google.Apis.RCSBusinessMessaging.v1.Data; using RCSBusinessMessaging; … // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation, projectId); // Create a calendar event action CreateCalendarEventAction calendarEventAction = new CreateCalendarEventAction { Title = "My calendar event", Description = "Description of the calendar event", StartTime = "2020-06-30T19:00:00Z", EndTime = "2020-06-30T20:00:00Z" }; // Attach the calendar event action to a suggested action SuggestedAction suggestedAction = new SuggestedAction { CreateCalendarEventAction = calendarEventAction, Text = "Save to calendar", PostbackData = "postback_data_1234" }; // Attach the action to a suggestion object Suggestion suggestion = new Suggestion { Action = suggestedAction }; List<Suggestion> suggestions = new List<Suggestion> { suggestion }; rbmApiHelper.SendTextMessage( "Hello, world!", "+12223334444", suggestions );
Daftar chip saran
Agen Anda mengirim daftar chip saran dengan pesan untuk memandu tindakan pengguna selanjutnya. Daftar chip hanya ditampilkan saat pesan terkait berada di bagian bawah percakapan. Pesan berikutnya dalam percakapan (dari pengguna atau agen Anda) akan menggantikan daftar chip.
Chip dalam daftar adalah saran balasan dan saran tindakan.
Daftar chip berisi maksimal 11 chip saran, dan setiap label chip dapat memiliki maksimal 25 karakter.
Untuk opsi pemformatan dan nilai, lihat AgentContentMessage.
Kartu informasi
Kartu multimedia menggabungkan media, teks, dan saran interaktif ke dalam satu pesan. Kartu ini ideal untuk menyajikan informasi terkait (misalnya, produk dengan gambar, nama, dan harganya) serta memandu pengguna dengan langkah selanjutnya yang jelas seperti saran "Lihat detail".
Kartu informasi dapat berisi hal berikut:
- Media (gambar, GIF, atau video)
- Teks judul
- Teks deskripsi
- Balasan yang disarankan dan tindakan yang disarankan (maksimum 4)
Setiap kolom ini bersifat opsional, tetapi setidaknya salah satu kolom 1–3 harus disertakan dalam kartu informasi.
Beberapa kartu dapat dikirim bersama dalam carousel yang dapat di-scroll secara horizontal.
Perhatikan bahwa total payload untuk kartu informasi adalah 250 KB.
Untuk mengetahui detail teknis selengkapnya, lihat dokumentasi Kartu multimedia.
Tinggi kartu
Kartu informasi diperluas secara vertikal agar sesuai dengan isinya. Tinggi minimumnya 112 DP dan tinggi maksimumnya 344 DP. Jika konten kartu tidak cukup besar untuk mengisi tinggi kartu minimum, kartu akan diperluas dan mengisi tinggi tambahan dengan ruang kosong.
Media dalam kartu multimedia harus sesuai dengan salah satu dari tiga tinggi berikut:
- Pendek: 112 DP
- Sedang: 168 DP
- Tinggi: 264 DP
Jika media tidak sesuai dengan dimensi dalam kartu yang diberikan tinggi yang dipilih, pratinjau media dipilih dengan melakukan zoom dan memangkas media.
Contoh
Kode berikut mengirim kartu informasi dengan gambar dan saran
balasan. Untuk opsi pemformatan dan nilai, lihat RichCard.
cURL
curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/rcs-business-messaging" \ -H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \ -d '{ "contentMessage": { "richCard": { "standaloneCard": { "thumbnailImageAlignment": "RIGHT", "cardOrientation": "VERTICAL", "cardContent": { "title": "Hello, world!", "description": "RBM is awesome!", "media": { "height": "TALL", "contentInfo":{ "fileUrl": "http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif", "forceRefresh": false } }, "suggestions": [ { "reply": { "text": "Suggestion #1", "postbackData": "suggestion_1" } }, { "reply": { "text": "Suggestion #2", "postbackData": "suggestion_2" } } ] } } } } }'
Node.js
// Reference to RBM API helper const rbmApiHelper = require('@google/rcsbusinessmessaging'); // Suggested replies to be used in the card let suggestions = [ { reply: { 'text': 'Suggestion #1', 'postbackData': 'suggestion_1', }, }, { reply: { 'text': 'Suggestion #2', 'postbackData': 'suggestion_2', }, }, ]; // Image to be displayed by the card let imageUrl = 'http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif'; // Definition of the card parameters let params = { messageText: 'Hello, world!', messageDescription: 'RBM is awesome!', msisdn: '+12223334444', suggestions: suggestions, imageUrl: imageUrl, height: 'TALL', }; // Send rich card to device rbmApiHelper.sendRichCard(params, function(response) { console.log(response); });
Java
import com.google.api.services.rcsbusinessmessaging.v1.model.StandaloneCard; import com.google.api.services.rcsbusinessmessaging.v1.model.Suggestion; import com.google.rbm.cards.CardOrientation; import com.google.rbm.cards.MediaHeight; import com.google.rbm.RbmApiHelper; import com.google.rbm.SuggestionHelper; … try { // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(); // Create suggestions for chip list List<Suggestion> suggestions = new ArrayList<Suggestion>(); suggestions.add( new SuggestionHelper("Suggestion #1", "suggestion_1").getSuggestedReply()); suggestions.add( new SuggestionHelper("Suggestion #2", "suggestion_2").getSuggestedReply()); String imageUrl = "http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif"; // Create a standalone rich card to send to the user StandaloneCard standaloneCard = rbmApiHelper.createStandaloneCard( "Hello, world!", "RBM is awesome!", imageUrl, MediaHeight.MEDIUM, CardOrientation.VERTICAL, suggestions ); rbmApiHelper.sendStandaloneCard(standaloneCard, "+12223334444"); } catch(Exception e) { e.printStackTrace(); }
Python
# Reference to RBM Python client helper and messaging object structure from rcs_business_messaging import rbm_service from rcs_business_messaging import messages # Suggested replies to be used in the card suggestions = [ messages.SuggestedReply('Suggestion #1', 'reply:suggestion_1'), messages.SuggestedReply('Suggestion #2', 'reply:suggestion_2') ] # Image to be displayed by the card image_url = 'http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif'; # Define rich card structure rich_card = messages.StandaloneCard('VERTICAL', 'Hello, world!', 'RBM is awesome!', suggestions, image_url, None, None, 'MEDIUM') # Append rich card and send to the user cluster = messages.MessageCluster().append_message(rich_card) cluster.send_to_msisdn('+12223334444')
C#
using Google.Apis.RCSBusinessMessaging.v1.Data; using RCSBusinessMessaging; using RCSBusinessMessaging.Cards; … // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation, projectId); List<Suggestion> suggestions = new List<Suggestion> { // Create suggestion chips new SuggestionHelper("Suggestion #1", "suggestion_1").SuggestedReply(), new SuggestionHelper("Suggestion #2", "suggestion_2").SuggestedReply() }; string imageUrl = "http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif"; // Create rich card with suggestions StandaloneCard standaloneCard = rbmApiHelper.CreateStandaloneCard( "Hello, world!", "RBM is awesome", imageUrl, MediaHeight.TALL, CardOrientation.VERTICAL, suggestions ); // Send rich card to user rbmApiHelper.SendStandaloneCard(standaloneCard, "+12223334444");
Carousel kartu informasi
Carousel merangkai beberapa kartu multimedia, sehingga pengguna dapat membandingkan item dan bereaksi terhadap setiap item secara terpisah.
Carousel dapat berisi minimal dua dan maksimal sepuluh kartu informasi. Kartu informasi dalam carousel harus sesuai dengan persyaratan kartu informasi umum untuk konten dan tinggi, seperti yang dijelaskan dalam dokumentasi Kartu informasi. Untuk mengetahui informasi selengkapnya tentang tata letak dan spesifikasi carousel, lihat dokumentasi Carousel.
Contoh
Kode berikut mengirim carousel kartu informasi. Untuk opsi pemformatan dan nilai,
lihat RichCard.
cURL
curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/rcs-business-messaging" \ -H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \ -d '{ "contentMessage": { "richCard": { "carouselCard": { "cardWidth": "MEDIUM", "cardContents": [ { "title": "Card #1", "description": "The description for card #1", "suggestions": [ { "reply": { "text": "Card #1", "postbackData": "card_1" } } ], "media": { "height": "MEDIUM", "contentInfo": { "fileUrl": "https://storage.googleapis.com/welcome-bot-sample-images/200.jpg", "forceRefresh": false } } }, { "title": "Card #2", "description": "The description for card #2", "suggestions": [ { "reply": { "text": "Card #2", "postbackData": "card_2" } } ], "media": { "height": "MEDIUM", "contentInfo": { "fileUrl": "https://storage.googleapis.com/welcome-bot-sample-images/201.jpg", "forceRefresh": false } } } ] } } } }'
Node.js
// Reference to RBM API helper const rbmApiHelper = require('@google/rcsbusinessmessaging'); // Images for the carousel cards let card1Image = 'https://storage.googleapis.com/welcome-bot-sample-images/200.jpg'; let card2Image = 'https://storage.googleapis.com/welcome-bot-sample-images/201.jpg'; // Define the card contents for a carousel with two cards, each with one suggested reply let cardContents = [ { title: 'Card #1', description: 'The description for card #1', suggestions: [ { reply: { text: 'Card #1', postbackData: 'card_1', } } ], media: { height: 'MEDIUM', contentInfo: { fileUrl: card1Image, forceRefresh: false, }, }, }, { title: 'Card #2', description: 'The description for card #2', suggestions: [ { reply: { text: 'Card #2', postbackData: 'card_2', } } ], media: { height: 'MEDIUM', contentInfo: { fileUrl: card2Image, forceRefresh: false, }, }, }, ]; // Definition of carousel card let params = { msisdn: '+12223334444', cardContents: cardContents, }; // Send the device the carousel card defined above rbmApiHelper.sendCarouselCard(params, function(response) { console.log(response); });
Java
import com.google.api.services.rcsbusinessmessaging.v1.model.CardContent; import com.google.api.services.rcsbusinessmessaging.v1.model.Suggestion; import com.google.rbm.cards.CardOrientation; import com.google.rbm.cards.CardWidth; import com.google.rbm.cards.MediaHeight; import com.google.rbm.RbmApiHelper; import com.google.rbm.SuggestionHelper; … try { // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(); List cardContents = new ArrayList(); // Images for the carousel cards String card1Image = "https://storage.googleapis.com/welcome-bot-sample-images/200.jpg"; // Create suggestions for first carousel card List card1Suggestions = new ArrayList(); card1Suggestions.add( new SuggestionHelper("Card #1", "card_1")); cardContents.add( new StandaloneCardHelper( "Card #1", "The description for card #1", card1Image, card1Suggestions) .getCardContent(MediaHeight.SHORT) ); // Images for the carousel cards String card2Image = "https://storage.googleapis.com/welcome-bot-sample-images/201.jpg"; // Create suggestions for second carousel card List card2Suggestions = new ArrayList(); card2Suggestions.add( new SuggestionHelper("Card #2", "card_2")); cardContents.add( new StandaloneCardHelper( "Card #2", "The description for card #2", card2Image, card2Suggestions) .getCardContent(MediaHeight.SHORT) ); // Send the carousel to the user rbmApiHelper.sendCarouselCards(cardContents, CardWidth.MEDIUM, "+12223334444"); } catch(Exception e) { e.printStackTrace(); }
Python
# Reference to RBM Python client helper and messaging object structure from rcs_business_messaging import rbm_service from rcs_business_messaging import messages # Images for the carousel cards card_image_1 = 'https://storage.googleapis.com/welcome-bot-sample-images/200.jpg'; card_image_2 = 'https://storage.googleapis.com/welcome-bot-sample-images/201.jpg'; # Suggested replies to be used in the cards suggestions1 = [ messages.SuggestedReply('Card #1', 'reply:card_1') ] suggestions2 = [ messages.SuggestedReply('Card #2', 'reply:card_2') ] # Define the card contents for a carousel with two cards, # each with one suggested reply card_contents = [] card_contents.append(messages.CardContent('Card #1', 'The description for card #1', card_image_1, 'MEDIUM', suggestions1)) card_contents.append(messages.CardContent('Card #2', 'The description for card #2', card_image_2, 'MEDIUM', suggestions2)) # Send the device the carousel card defined above carousel_card = messages.CarouselCard('MEDIUM', card_contents) cluster = messages.MessageCluster().append_message(carousel_card) cluster.send_to_msisdn('+12223334444')
C#
using Google.Apis.RCSBusinessMessaging.v1.Data; using RCSBusinessMessaging; using RCSBusinessMessaging.Cards; … // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation, projectId); // Image references to be used in the carousel cards string card1Image = "https://storage.googleapis.com/welcome-bot-sample-images/200.jpg"; string card2Image = "https://storage.googleapis.com/welcome-bot-sample-images/201.jpg"; // Suggestion chip lists to be used in carousel cards List<Suggestion> suggestions1 = new List<Suggestion> { new SuggestionHelper("Card #1", "card_1").SuggestedReply() }; List<Suggestion> suggestions2 = new List<Suggestion> { new SuggestionHelper("Card #2", "card_2").SuggestedReply() }; // Create the card content for the carousel List<CardContent> cardContents = new List<CardContent> { // Add items as card content new StandaloneCardHelper( "Card #1", "The description for card #1", card1Image, suggestions1).GetCardContent(), new StandaloneCardHelper( "Card #2", "The description for card #2", card2Image, suggestions2).GetCardContent() }; // Send the carousel to the user rbmApiHelper.SendCarouselCards(cardContents, CardWidth.MEDIUM, msisdn);