Setelah Anda mendaftar ke Business Message, Anda dapat menerima pesan atas nama agen pengujian. Anda dapat menerima pesan untuk merek yang Anda kelola setelah buat, verifikasi, dan luncurkan penting untuk brand tersebut.
Saat pelanggan mengirim pesan kepada agen yang Anda kelola, Business Messages mengirimkan payload JSON ke webhook Anda yang berisi berbagai ID, isi pesan, dan informasi lokasi.
Menggunakan Log Konsol Developer Business Communications halaman untuk melakukan debug pada masalah pengiriman pesan.
Menangani pesan masuk
Cara agen Anda menangani dan merespons pesan dari pengguna sangat bergantung pada pada logika bisnis Anda. Secara umum, bagaimanapun, langkah-langkah untuk menanggapi pertanyaan pengguna pesan yang konsisten.
Mengakui pesan
Untuk mengonfirmasi pesan yang diterima oleh webhook Anda, tampilkan respons HTTP yang valid ke pesan yang dikirim ke webhook Anda.
Jika pesan gagal dikirim karena waktu tunggu pengiriman habis, keterjangkauan webhook, pengalihan, atau masalah izin, Google menyimpan dan meneruskan pesan, dengan beberapa kali percobaan ulang, selama 7 hari atau hingga webhook Anda berhasil menerima untuk membuat pesan email baru.
Verifikasi bahwa pesan ini dari Google
Anda harus memverifikasi bahwa Google mengirim pesan sebelum memproses pesan tersebut konten.
Untuk memverifikasi bahwa Google mengirim pesan yang Anda terima,
- Uraikan header
X-Goog-Signature
pesan. Ini adalah hash, salinan payload pesan berenkode base64. Menggunakan token klien (yang ditampilkan saat Anda mengonfigurasi webhook) sebagai kunci, buat HMAC SHA512 dari byte payload pesan dan encoder-decoder menggunakan base64.
Bandingkan hash
X-Goog-Signature
dengan hash yang Anda buat.- Jika hash cocok, Anda telah mengonfirmasi bahwa Google yang mengirim pesan.
- Jika {i>hash<i} tidak cocok, periksa proses {i>hashing<i} Anda pada untuk membuat pesan email baru. Jika proses {i>hashing<i} Anda bekerja dengan benar dan Anda menerima pesan yang Anda yakini dikirim kepada Anda secara curang, hubungi kami (Anda harus menandatangani dengan Akun Google Business Messages).
Lihat contoh verifikasi pesan di repositori GitHub untuk Echo Bots di Java, Node.js, dan Python.
Mengidentifikasi lokalitas
Pengguna berkomunikasi dari banyak lokasi dan dalam banyak bahasa. Business Messages
mewakili pengguna preferensi bahasa dengan resolvedLocale
dan
userDeviceLocale
kolom, yang didasarkan pada perangkatnya setelan lokalitas.
Lihat Pelokalan dan
lokalitas.
Bila memungkinkan, arahkan pesan dan tulis tanggapan berdasarkan pengguna bahasa preferensi Anda.
Merutekan pesan berdasarkan konteksnya
Konteks pesan menginformasikan jenis informasi yang mungkin dicari pengguna.
Misalnya, jika pengguna mengirim pesan dengan
placeId
mereka mengirimkan pesan ke lokasi tertentu (yang diidentifikasi oleh placeId
) dan
cenderung mengajukan pertanyaan
terkait lokasi tertentu. Demikian pula, jika pesan memiliki
Nilai nearPlaceId
, yang mengidentifikasi lokasi di dekat pengguna, kemungkinan pengguna
ingin mengetahui informasi khusus lokasi, tetapi agen harus mengonfirmasi
lokasi yang ingin diajak pengguna mengobrol sebelum memulai percakapan.
Dengan informasi konteks pesan, arahkan pesan ke lokasi yang terbaik sesuai untuk ditanggapi:
- Jika pesan ada dalam percakapan baru dan merupakan pertanyaan umum, Anda mungkin jawab melalui otomatisasi.
- Jika otomatisasi tidak dapat menangani pertanyaan tersebut, arahkan pertanyaan ke agen langsung.
- Jika lokalitas pesan tidak cocok dengan lokalitas default agen, rutekan pesan ke agen langsung yang dapat mendukung lokal tersebut.
- Jika pertanyaannya mengenai lokasi tertentu, arahkan pertanyaan itu kepada seseorang yang memiliki informasi tentang lokasi tersebut.
- Jika pesan berada dalam percakapan yang sedang berlangsung, arahkan pesan ke agen langsung yang berpartisipasi dalam percakapan.
Mengidentifikasi jenis pesan yang dikirim pengguna
Pengguna dapat mengirim tiga jenis pesan:
- Pesan teks adalah respons bentuk bebas.
- Pesan gambar menyertakan URL yang ditandatangani untuk gambar yang digunakan pengguna diupload.
- Pesan saran menyertakan data postback dan teks saran tindakan atau balasan yang disarankan yang diketuk pengguna.
Memproses konten pesan
Jika agen Anda menggunakan otomatisasi, isi pesan pengguna harus memandu Anda logika agen dan respons berikutnya dalam percakapan.
Cara termudah untuk mengidentifikasi niat pengguna adalah dengan data postback dari saran balasan atau tindakan yang disarankan. Terlepas dari teks yang terkait dengan saran tersebut, data postback dapat dibaca oleh mesin.
Jika pengguna mengirimkan pesan teks, agen Anda mungkin mengurai respons untuk kata kunci yang didukung atau gunakan natural language understanding (seperti Dialogflow integrasi untuk memproses pesan pengguna dan mengidentifikasi langkah ke depan.
Jika agen Anda tidak tahu cara membalas pesan pengguna, ia seharusnya merespons dengan status {i>error<i} dan mencoba melanjutkan percakapan dengan meminta informasi tambahan kepada pengguna, dengan cara meminta {i>input <i}di dengan cara berbeda, atau dengan menyerahkan percakapan kepada agen langsung.
Merespons pengguna
Setelah agen mengidentifikasi respons yang benar, baik melalui otomatisasi agen langsung, yakni mengirimkan pesan dan melanjutkan percakapan dengan pengguna.
Saat membuat respons, pertimbangkan bahasa pengguna. Anda juga dapat
menyesuaikan respons dengan mengambil nilai dari objek userInfo
di setiap
pesan baru yang Anda terima.
Jenis pesan
Kode berikut menunjukkan cara agen Anda menerima pesan.
Untuk informasi format dan nilai, lihat
UserMessage
Teks
Cara paling umum bagi pengguna untuk merespons adalah dengan teks biasa. Pesan teks memiliki dalam format berikut.
{ "agent": "brands/BRAND_ID/agents/AGENT_ID", "conversationId": "CONVERSATION_ID", "customAgentId": "CUSTOM_AGENT_ID", "requestId": "REQUEST_ID", "message": { "messageId": "MESSAGE_ID", "name": "conversations/CONVERSATION_ID/messages/MESSAGE_ID", "text": "MESSAGE_TEXT", "createTime": "MESSAGE_CREATE_TIME", }, "dialogflowResponse": { "autoResponded": "BOOLEAN", "faqResponse": { "userQuestion": "USER_QUESTION", "answers": [{ "faqQuestion": "FAQ_QUESTION", "faqAnswer": "FAQ_ANSWER", "matchConfidenceLevel": "CONFIDENCE_LEVEL", "matchConfidence": "CONFIDENCE_NUMERIC", }], }, }, "context": { "entryPoint": "CONVERSATION_ENTRYPOINT", "placeId": "LOCATION_PLACE_ID", "resolvedLocale": "MATCH_OF_USER_AND_AGENT_LOCALES", "userInfo": { "displayName": "USER_NAME", "userDeviceLocale": "USER_LOCALE", }, }, "sendTime": "SEND_TIME", }
Untuk opsi pemformatan dan nilai, lihat
Message
Gambar
Selain mengirim teks, pengguna dapat mengirim gambar ke agen Anda sebagai pesan.
Business Messages menyimpan gambar yang dibagikan, selama 7 hari, di ditandatangani
URL
dan menyertakan URL tersebut di kolom text
payload pesan.
Jika agen Anda menyertakan otomatisasi, pastikan otomatisasi mengetahui cara merespons jika pengguna membagikan gambar. Untuk agen langsung, pastikan gambar diteruskan atau URL dalam pesan dapat diklik.
...
"message": {
"text": "https://storage.googleapis.com/business-messages-us/936640919331/jzsu6cdguNGsBhmGJGuLs1DS?x-goog-algorithm\u003dGOOG4-RSA-SHA256\u0026x-goog-credential\u003duranium%40rcs-uranium.iam.gserviceaccount.com%2F20190826%2Fauto%2Fstorage%2Fgoog4_request\u0026x-goog-date\u003d20190826T201038Z\u0026x-goog-expires\u003d604800\u0026x-goog-signedheaders\u003dhost\u0026x-goog-signature\u003d89dbf7a74d21ab42ad25be071b37840a544a43d68e67270382054e1442d375b0b53d15496dbba12896b9d88a6501cac03b5cfca45d789da3e0cae75b050a89d8f54c1ffb27e467bd6ba1d146b7d42e30504c295c5c372a46e44728f554ba74b7b99bd9c6d3ed45f18588ed1b04522af1a47330cff73a711a6a8c65bb15e3289f480486f6695127e1014727cac949e284a7f74afd8220840159c589d48dddef1cc97b248dfc34802570448242eac4d7190b1b10a008404a330b4ff6f9656fa84e87f9a18ab59dc9b91e54ad11ffdc0ad1dc9d1ccc7855c0d263d93fce6f999971ec79879f922b582cf3bb196a1fedc3eefa226bb412e49af7dfd91cc072608e98"
}
...
Untuk opsi pemformatan dan nilai, lihat
Message
Saran
Balasan yang disarankan dan tindakan yang disarankan memungkinkan pengguna merespons atau melakukan tindakan tindakan dengan sekali ketuk. Saat pengguna mengetuk saran, agen akan menerima payload dengan teks saran dan data postback.
Pesan saran memiliki format berikut.
{ "agent": "brands/BRAND_ID/agents/AGENT_ID", "conversationId": "CONVERSATION_ID", "customAgentId": "CUSTOM_AGENT_ID", "requestId": "REQUEST_ID", "suggestionResponse": { "message": "conversations/CONVERSATION_ID/messages/MESSAGE_ID", "postbackData": "POSTBACK_DATA", "createTime": "RESPONSE_CREATE_TIME", "text": "SUGGESTION_TEXT", "suggestionType": "SUGGESTION_TYPE", } "context": { "entryPoint": "CONVERSATION_ENTRYPOINT", "placeId": "LOCATION_PLACE_ID", "resolvedLocale": "MATCH_OF_USER_AND_AGENT_LOCALES", "userInfo": { "displayName": "USER_NAME", "userDeviceLocale": "USER_LOCALE", }, }, "sendTime": "SEND_TIME", }
Untuk opsi pemformatan dan nilai, lihat
SuggestionResponse
Permintaan autentikasi
Saran permintaan Authentication memungkinkan pengguna login dengan OAuth untuk memberikan detail identitas kepada agen atau mengizinkan agen untuk melakukan tindakan terhadap nama Anda. Lihat Mengautentikasi dengan OAuth yang baru.
Jika pengguna berhasil login dengan penyedia OAuth yang ditentukan, maka agen menerima {i>payload<i} berisikan kode otorisasi. Jika pengguna tidak berhasil dalam login, agen akan menerima payload berisi detail error.
Pesan permintaan autentikasi memiliki format berikut.
{ "agent": "brands/BRAND_ID/agents/AGENT_ID", "conversationId": "CONVERSATION_ID", "customAgentId": "CUSTOM_AGENT_ID", "requestId": "REQUEST_ID", "authenticationResponse": { "code": "AUTHORIZATION_CODE", "redirect_uri": "REDIRECT_URI", "errorDetails": { "error": "ERROR", "errorDescription": "ERROR_DESCRIPTION", }, } "context": { "entryPoint": "CONVERSATION_ENTRYPOINT", "placeId": "LOCATION_PLACE_ID", "resolvedLocale": "MATCH_OF_USER_AND_AGENT_LOCALES", "userInfo": { "displayName": "USER_NAME", "userDeviceLocale": "USER_LOCALE", }, }, "sendTime": "SEND_TIME", }
Untuk opsi pemformatan dan nilai, lihat
AuthenticationResponse
Konteks pesan
Setiap pesan berisi informasi konteks tentang asal pesan tersebut.
... "context": { "customContext": "CUSTOM_CONTEXT", "entryPoint": "CONVERSATION_ENTRYPOINT", "placeId": "LOCATION_PLACE_ID", "nearPlaceId": "NEARBY_LOCATION_PLACE_ID", "deflectedPhoneNumber": "DEFLECTED_PHONE_NUMBER", "resolvedLocale": "MATCH_OF_USER_AND_AGENT_LOCALES", "userInfo": { "displayName": "USER_NAME", "userDeviceLocale": "USER_LOCALE", }, "widget": { "url": "WEBSITE_URL", "widgetContext": "WIDGET_CONTEXT", }, }, ...
Kolom | Deskripsi |
---|---|
customContext |
Data konteks yang ditentukan oleh partner. |
entryPoint |
Platform pesan tempat pengguna memulai percakapan, seperti yang ditentukan oleh EntryPoint. |
placeId |
ID unik dari database Google Places untuk lokasi yang dikirimi pesan oleh pengguna. ID ini hanya muncul di pesan dari lokasi tertentu titik entri. |
nearPlaceId |
ID unik dari database Google Places untuk yang pertama
dalam paket Lokal. Konfirmasi lokasi tempat pengguna ingin melakukan chat
saat Anda menerima nilai nearPlaceId . |
deflectedPhoneNumber |
Nomor telepon yang mengalihkan pengguna dari panggilan Business Messages saat percakapan dimulai. |
resolvedLocale |
Kecocokan terbaik komputasi lokal pengguna (dilaporkan dalam
Nilai lokalitas berupa tag bahasa IETF BCP 47 yang tersusun dengan baik. |
userInfo.displayName |
Nama pengguna yang mengirim pesan. Jika pengguna memilih untuk tidak ikut berbagi identitas, kolom ini kosong. |
userInfo.userDeviceLocale |
Lokalitas pengguna, dilaporkan oleh perangkat mereka, sebagai format yang baik Tag bahasa IETF BCP 47. |
widget.url |
URL situs tempat platform percakapan diluncurkan. |
widget.widgetContext |
Nilai atribut data-bm-widget-context dari widget yang digunakan
untuk memulai percakapan. |
Histori percakapan
Google tidak memberikan histori percakapan. Simpan histori Anda sendiri percakapan, dengan cara yang sesuai dengan kebijakan privasi dan praktik terbaik Anda, sehingga Anda dapat mengirim tanggapan yang tepat untuk pesan mendatang dari pengguna.