代理程式會收到 RBM 平台傳送的 Webhook 事件,通知您使用者互動和平台層級的最新消息。
這些事件會依來源分類:
如要進一步瞭解代理程式傳送至使用者裝置的狀態事件,請參閱「傳送事件」。
使用者事件
使用者事件是使用者裝置傳送的通知,用於回報訊息狀態或訂閱狀態變更 (即使用者已在 Google 訊息中取消訂閱或重新訂閱)。
如需完整的格式設定和值選項,請參閱 UserEvent 參考資料。
使用者收到服務專員訊息
這個事件表示訊息已成功傳送至使用者的裝置。
{
"senderPhoneNumber": "PHONE_NUMBER",
"eventType": "DELIVERED",
"eventId": "EVENT_ID",
"messageId": "MESSAGE_ID",
"agentId": "AGENT_ID"
}使用者閱讀服務專員訊息
這項事件表示郵件已開啟或確認。
{
"senderPhoneNumber": "PHONE_NUMBER",
"eventType": "READ",
"eventId": "EVENT_ID",
"messageId": "MESSAGE_ID",
"agentId": "AGENT_ID"
}使用者開始輸入文字
這項事件表示使用者正在輸入回覆。
{
"senderPhoneNumber": "PHONE_NUMBER",
"eventType": "IS_TYPING",
"eventId": "EVENT_ID",
"agentId": "AGENT_ID"
}使用者傳送簡訊
{
"senderPhoneNumber": "PHONE_NUMBER",
"text": "Hi",
"eventId": "EVENT_ID",
"agentId": "AGENT_ID"
}使用者傳送檔案
{ "senderPhoneNumber": "PHONE_NUMBER", "userFile": { "payload": { "mimeType": "image/gif", "fileSizeBytes": 127806, "fileUri": "https://storage.googleapis.com/copper_test/77ddb795-24ad-4607-96ae-b08b4d86406a/d2dcc67ab888d34ee272899c020b13402856f81597228322079eb007e8c9", "fileName": "4_animated.gif" } }, "eventId": "EVENT_ID", "agentId": "AGENT_ID" }
使用者輕觸建議回覆
使用者輕觸建議回覆時,代理程式會收到含有回覆的後送資料和文字的事件。
{
"senderPhoneNumber": "PHONE_NUMBER",
"eventId": "EVENT_ID",
"agentId": "AGENT_ID",
"suggestionResponse": {
"postbackData": "postback_1234",
"text": "Hello there!"
}
}使用者輕觸建議的動作
使用者輕觸建議動作時,代理程式會收到含有動作回傳資料的事件。
{
"senderPhoneNumber": "PHONE_NUMBER",
"eventId": "EVENT_ID",
"agentId": "AGENT_ID",
"suggestionResponse": {
"postbackData": "postback_1234"
}
}使用者取消訂閱對話
這項事件表示使用者已取消訂閱,不再接收代理商和所代表商家傳送的非必要訊息 (例如促銷活動)。使用者在 Google 訊息中取消訂閱 RBM 對話時,就會觸發這個事件。
以下是 JSON 酬載範例:
{
"senderPhoneNumber": "PHONE_NUMBER",
"eventType": "UNSUBSCRIBE",
"eventId": "EVENT_ID",
"agentId": "AGENT_ID"
}取消訂閱的運作方式
- 你隨時可以在對話選單中選擇「取消訂閱」。如果是宣傳和多用途代理程式,在一定數量的未讀訊息後,這個選項也會直接顯示在對話中 (具體規則因國家/地區而異)。
選取「取消訂閱」會同時觸發兩項動作:Google 訊息會將國家/地區專屬的關鍵字 (例如「STOP」) 傳送給代理程式,而 RBM 平台則會將
UNSUBSCRIBE事件傳送至 Webhook。關鍵字取決於使用者電話號碼的國家/地區代碼 (由兩個字母組成)。下表列出各支援國家/地區的關鍵字。
國家/地區 (國家/地區代碼) 取消訂閱關鍵字 美國 (US)、印度 (IN)、英國 (GB)、德國 (DE) 停止 西班牙 (ES)、墨西哥 (MX) BAJA 法國 (FR) 停止 巴西 (BR) parar 使用者取消訂閱後,對話仍會保留在收件匣中,除非檢舉為垃圾訊息,否則不會移至「已封鎖的垃圾訊息」資料夾。
為找出違反政策和業務規則的行為,Google 會在使用者取消訂閱後監控訊息模式。
業務規則
- 身為管理這項對話的 RBM 合作夥伴,你有責任遵守使用者的取消訂閱要求。
- 如果無法在訊息串中取消訂閱,請立即傳送確認訊息,並附上網站或應用程式的直接連結,方便使用者管理訂閱偏好設定。
- 使用者取消訂閱後,您不得再傳送非必要訊息。
- 仍可傳送重要訊息。包括:
- 驗證資訊,例如動態密碼 (OTP)
- 使用者要求並同意接收的特定服務通知
- 確認使用者已要求取消訂閱,並提供相關資訊,方便他們進一步管理通訊偏好設定
範例
如果使用者取消訂閱用途為多用途的航空公司服務專員,您必須停止傳送行銷訊息。不過,如果使用者明確同意接收特定航班的最新動態,您就可以傳送航班最新動態。
取消訂閱原因
使用者取消訂閱服務專員時,可以從下列選項中選取原因:
- 垃圾內容
- 從未訂閱訊息
- 訊息過多
- 沒興趣了
- 其他
「數據分析總覽」會顯示取消訂閱原因,協助合作夥伴瞭解使用者取消訂閱的原因。
使用者重新訂閱對話
這項事件表示使用者想再次接收來自代理程式的訊息,包括促銷活動等非必要內容。使用者只要在 Google 訊息中重新訂閱先前取消訂閱的對話,即可觸發這項事件。
以下是 JSON 酬載範例:
{
"senderPhoneNumber": "PHONE_NUMBER",
"eventType": "SUBSCRIBE",
"eventId": "EVENT_ID",
"agentId": "AGENT_ID"
}如何重新訂閱
- 使用者可以透過對話選單和對話內連結,使用「訂閱」選項重新訂閱已取消訂閱的對話。
選取「訂閱」會同時觸發兩項動作:Google 訊息會將特定國家/地區的關鍵字 (例如「開始」) 傳送給代理程式,而 RBM 平台會將 SUBSCRIBE 事件傳送至網路鉤子。具體關鍵字取決於使用者電話號碼的國家/地區代碼 (由兩個字母組成)。下表列出各支援國家/地區的關鍵字。
國家/地區 (國家/地區代碼) 訂閱關鍵字 美國 (US)、印度 (IN)、英國 (GB)、德國 (DE) 開始 西班牙 (ES)、墨西哥 (MX) ALTA 法國 (FR) Démarrer 巴西 (BR) começar
業務規則
- 身為管理這項對話的 RBM 合作夥伴,你有責任遵守使用者的重新訂閱要求。
- 重新訂閱適用於所有類型的訊息,包括宣傳等非必要內容。
- 如果使用者取消訂閱後傳送訊息給商家,系統可能會將此視為重新訂閱要求。
- 如果使用者在訊息管道以外的地方重新訂閱 (例如在您的網站上),RBM 合作夥伴有責任更新使用者的狀態,並據此繼續傳送訊息。
平台事件
RBM 平台會傳送平台事件,通知代理程式代理程式的啟動狀態變更或訊息過期。
代理程式啟動狀態已變更
RBM 平台會在代理程式的發布狀態每次變更時,傳送 AgentLaunchEvent。舉例來說,當代理程式的狀態從 PENDING 變更為 LAUNCHED 時,系統會以 Pub/Sub 訊息的形式傳送事件。如要區分這項事件與其他事件,請檢查值 agent_launch_event 的 message.attributes.type 路徑。
Webhook 設定
你可以使用合作夥伴層級或服務專員層級的 Webhook 接收這些通知。
必要條件
- 設定 RBM 訊息的 Webhook (這是接收使用者訊息和使用者事件的必要條件)。
- 如要區分使用者事件和代理程式啟動狀態事件,請檢查
message.attributes.type路徑的值agent_launch_event。
事件酬載結構
AgentLaunchEvent 會以 Pub/Sub 訊息的形式傳送。範例如下:
{
"message": {
"attributes": {
"business_id": "rbm-chatbot-id@rbm.goog",
"event_type": "REJECTED",
"product": "RBM",
"project_number": "3338881441851",
"type": "agent_launch_event"
},
"data": "....BASE64-encoded-JSON-with-notification...",
"messageId": "14150481888479752",
"message_id": "14150481888479752",
"publishTime": "2025-03-05T18:50:21.88Z",
"publish_time": "2025-03-05T18:50:21.88Z"
},
"subscription": "projects/rbm-partner-gcp/subscriptions/rbm-sub"
}
事件酬載中的 AgentLaunchEvent.LaunchState 欄位會指出代理程式的新啟動狀態。可能的值包括:
| 值 | 代理程式啟動狀態 | 詳細資料 |
|---|---|---|
UNLAUNCHED |
未發布 | 可編輯。 |
PENDING |
待處理 | 要求已送交電信業者審查。 |
LAUNCHED |
已推出 | 允許在特定電信業者上傳送訊息。 |
REJECTED |
在特定貨運公司遭拒 | 註解中會說明拒絕原因。 |
SUSPENDED |
在特定貨運公司遭停權 | 註解中會說明停權原因。 |
資料欄位包含以 Base64 編碼的 JSON 物件,內含啟動狀態詳細資料。以下是解碼後的 JSON 範例:
{
"eventId": "rbm-chatbot-id/0a7ed168-676e-4a56-b422-b23434",
"agentId": "rbm-chatbot-id@rbm.goog",
"botDisplayName": "RBM Welcome Bot 7 - RBM Chatbot name",
"brandId": "bd38fbff-392a-437b-a6f2-7f2e43745b56",
"brandDisplayName": "Chatbots brand",
"regionId": "/v1/regions/fi-rcs",
"oldLaunchState": "PENDING",
"newLaunchState": "REJECTED",
"actingParty": "rbm-support@google.com",
"comment": "Carrier has rejected the launch: policy violation",
"sendTime": "2025-03-05T18:50:19.386436Z"
}
下表列出代理程式啟動狀態和觸發動作:
| 舊的發布狀態 | 新的發布狀態 | 觸發變更 |
|---|---|---|
PENDING |
LAUNCHED |
待服務專員核准。 |
PENDING |
REJECTED |
已拒絕待處理的代理人。 |
LAUNCHED |
SUSPENDED |
已暫停發布的代理程式。 |
SUSPENDED |
LAUNCHED |
已重新啟用遭停權的代理人。 |
SUSPENDED |
TERMINATED |
已終止暫停使用的代理程式。 |
TERMINATED |
LAUNCHED |
已啟動終止的服務專員。 |
訊息已過期;撤銷成功
這項事件表示郵件的存留時間 (TTL) 已過期,且郵件已成功撤銷。這是備用訊息策略的合適觸發條件。
如需完整的格式設定和值選項,請參閱 ServerEvent 參考資料。
{ "phoneNumber": "[phone number]" , "messageId": "[RCS message ID]", "agentId": [bot ID], "eventType": "TTL_EXPIRATION_REVOKED", "eventId": "[unique ID]", "sendTime": "[time stamp]" }
訊息已過期;撤銷失敗
這個事件表示訊息的 TTL 已過期,但未成功撤銷。
如需完整的格式設定和值選項,請參閱 ServerEvent 參考資料。
{ "phoneNumber": "[phone number]", "messageId": "[RCS message ID]", "agentId": "[bot ID]", "eventType": "TTL_EXPIRATION_REVOKE_FAILED", "eventId": "[unique ID]", "sendTime": "[time stamp]" }
我們無法保證訊息一定會送達。
- 如果訊息已送達,Webhook 會收到
DELIVERED事件。 - 如果訊息未送達,請使用撤銷 API 傳送撤銷要求。
如果訊息具有時效性 (例如一次性密碼或詐欺警示),即使會導致使用者收到重複訊息,最好還是透過簡訊等其他管道傳送。