RBM 代理程式會透過 Webhook 接收訊息和事件。使用者傳送訊息給代理程式時,Google 的 RBM 服務會將訊息傳送至您設定的 Webhook。接著,您的代理程式可以將訊息解碼、處理訊息,並向使用者發出回應。
使用者可以傳送 RCS 用戶端允許的文字、位置或檔案。 您的代理程式需要處理使用者可能傳送的任何文字、位置或檔案,以及這些訊息可能觸發的任何錯誤狀態。
處理收到的訊息
代理程式處理及回應使用者訊息的方式,主要取決於商業邏輯。但一般來說,回應使用者訊息的步驟是一致的。
步驟 1:找出使用者傳送的訊息類型
使用者可以傳送四種類型的訊息:
步驟 2:處理郵件內容
使用者訊息的內容應引導代理程式在對話中的邏輯和後續回應。
如要找出使用者意圖,最簡單的方法是使用建議的回覆或建議動作中的回傳資料。無論建議的相關文字為何,回傳資料都是機器可讀的。
如果使用者傳送簡訊,代理程式可能會剖析支援關鍵字的回應,或是使用 NLU (例如 Dialogflow) 處理使用者的訊息,並找出轉送路徑。
位置和檔案訊息不包含文字或回傳資料,因此您的代理程式在回應之前,應先考量對話的內容和近期訊息。
如果您的代理程式不知道如何回覆使用者的訊息,則回應會顯示錯誤狀態,然後嘗試透過提示使用者提供其他資訊、以其他方式要求輸入內容,或顯示建議回覆和建議動作,讓服務專員知道如何回覆使用者的訊息。
步驟 3:執行互動的商業邏輯
一旦代理程式針對使用者訊息找到正確的回應,代理程式會從基礎架構收集必要資訊,並視需要與其他系統互動,以執行互動的商業邏輯。
步驟 4:回覆使用者
代理程式執行互動的商業邏輯後,會傳送其他訊息,並繼續與使用者進行對話。
示例
以下程式碼顯示代理程式如何接收訊息。如需格式和值資訊,請參閱 UserMessage。
服務專員收到簡訊
{ "agentId": "AGENT_ID", "senderPhoneNumber": "PHONE_NUMBER", "messageId": "MESSAGE_ID", "sendTime": "2018-12-31T15:01:23.045123456Z", "text": "Hello, world!" }
服務專員收到來自建議的訊息
{ "agentId": "AGENT_ID", "senderPhoneNumber": "PHONE_NUMBER", "messageId": "MESSAGE_ID", "sendTime": "2018-12-31T15:01:23.045123456Z", "suggestionResponse": { "postbackData": "suggestion_1", "text": "Suggestion #1" } }
服務專員接收位置資訊
{ "agentId": "AGENT_ID", "senderPhoneNumber": "PHONE_NUMBER", "messageId": "MESSAGE_ID", "sendTime": "2018-12-31T15:01:23.045123456Z", "location": { "latitude": 37.422000, "longitude": -122.084056 } }
服務專員收到檔案
{ "agentId": "AGENT_ID", "senderPhoneNumber": "PHONE_NUMBER", "messageId": "MESSAGE_ID", "sendTime": "2018-12-31T15:01:23.045123456Z", "userFile": { "category": "IMAGE", "thumbnail": { "mimeType": "image/jpeg", "fileSizeBytes": 1280, "fileUri": "https://storage.googleapis.com/copper_test/77ddb795-24ad-4607-96ae-b08b4d86406a/d2dcc67ab888d34ee272899c020b13402856f81597228322079eb007e8c8", "fileName": "4_animated.jpeg" }, "payload": { "mimeType": "image/gif", "fileSizeBytes": 127806, "fileUri": "https://storage.googleapis.com/copper_test/77ddb795-24ad-4607-96ae-b08b4d86406a/d2dcc67ab888d34ee272899c020b13402856f81597228322079eb007e8c9", "fileName": "4_animated.gif" } } }
處理連入事件
當代理程式傳送給使用者的訊息成功傳送並讀取時,代理程式會收到通知。
以下程式碼顯示代理程式如何接收訊息。如需格式和值資訊,請參閱 UserEvent。
訊息已傳送給使用者
{ "agentId": "AGENT_ID", "senderPhoneNumber": "PHONE_NUMBER", "messageId": "MESSAGE_ID", "eventId": "EVENT_ID", "sendTime": "2018-12-31T15:01:23.045123456Z", "eventType": "DELIVERED" }
使用者已看過訊息
{ "agentId": "AGENT_ID", "senderPhoneNumber": "PHONE_NUMBER", "messageId": "MESSAGE_ID", "eventId": "EVENT_ID", "sendTime": "2018-12-31T15:01:23.045123456Z", "eventType": "READ" }
使用者正在輸入
{ "senderPhoneNumber": "PHONE_NUMBER", "eventType": "IS_TYPING", "eventId": "EVENT_ID", "sendTime": "2018-12-31T15:01:23.045123456Z", "agentId": "AGENT_ID" }