收發訊息和事件是代理程式與使用者之間的通訊核心部分。代理程式會透過 HTTP POST 要求,向 RBM API 傳送訊息、事件和要求給使用者,但會從 Cloud Pub/Sub 以 JSON 格式接收使用者建立的訊息和事件。
以下的對話流程範例會使用範例資料,說明訊息、事件和要求如何產生實用且有意義的互動。
大家好!
在此範例中,代理程式會將 Hello, World!
以訊息的形式傳送給使用者,而使用者則以 Hello to you!
回應。
代理程式會傳送功能檢查要求,驗證使用者的裝置是否支援 RBM。
代理程式會傳送:
GET /v1/phones/+12223334444/capabilities?requestId=147547143069602483572 HTTP/1.1 Host: us-rcsbusinessmessaging.googleapis.com Content-Type: application/json
RBM 平台向代理程式傳送功能檢查回應,指出使用者的裝置可接收 RBM 訊息。
代理程式將接收:
{ "rbmEnabled": true, "features": [ "REVOCATION", "RICHCARD_STANDALONE", "RICHCARD_CAROUSEL", "ACTION_CREATE_CALENDAR_EVENT", "ACTION_DIAL", "ACTION_OPEN_URL", "ACTION_SHARE_LOCATION", "ACTION_VIEW_LOCATION" ] }
代理程式會將
Hello, World!
訊息傳送至 RBM API,將 API 訊息傳送至使用者的裝置。代理程式會傳送:
POST /v1/phones/+12223334444/agentMessages?messageId=123 HTTP/1.1 Host: us-rcsbusinessmessaging.googleapis.com Content-Type: application/json { "contentMessage": { "text": "Hello, World!", } }
RBM 平台會將訊息傳送至使用者的裝置,並將
DELIVERED
事件傳送給代理程式。代理程式將接收:
{ "senderPhoneNumber": "+12223334444", "eventType": "DELIVERED", "eventId": "Ms6oOiEli6QS-fe8QFrmhfIg", "messageId": "123" }
使用者在裝置上開啟訊息,將
READ
事件傳送至代理程式。代理程式將接收:
{ "senderPhoneNumber": "+12223334444", "eventType": "READ", "eventId": "Ms6oOiEli6QS-ge9ZFsmgTj", "messageId": "123" }
使用者撰寫並回覆代理程式。
代理程式將接收:
{ "senderPhoneNumber": "+12223334444", "messageId": "msg000999888777a", "sendTime": "2018-12-31T15:01:23.045123456Z", "text": "Hello to you!", }
RBM 平台會在收到使用者的訊息時,自動將使用者的裝置傳送
DELIVERED
事件。代理程式會傳送
READ
事件以回應使用者的訊息,讓使用者知道已收到和確認。代理程式會傳送:
{ "eventType": "READ", "messageId": "msg000999888777a" }