對話流程

收發訊息和事件是代理程式與使用者之間的通訊核心部分。代理程式會透過 HTTP POST 要求,向 RBM API 傳送訊息、事件和要求給使用者,但會從 Cloud Pub/Sub 以 JSON 格式接收使用者建立的訊息和事件。

以下的對話流程範例會使用範例資料,說明訊息、事件和要求如何產生實用且有意義的互動。

大家好!

代理程式與使用者之間的基本對話。

在此範例中,代理程式會將 Hello, World! 以訊息的形式傳送給使用者,而使用者則以 Hello to you! 回應。

來自服務專員的訊息和後續回應的流程圖。

  1. 代理程式會傳送功能檢查要求,驗證使用者的裝置是否支援 RBM。

    代理程式會傳送:

    GET
    /v1/phones/+12223334444/capabilities?requestId=147547143069602483572
    HTTP/1.1
    Host: us-rcsbusinessmessaging.googleapis.com
    Content-Type: application/json
  2. 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"
       ]
    }
  3. 代理程式會將 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!",
      }
    }
  4. RBM 平台會將訊息傳送至使用者的裝置,並將 DELIVERED 事件傳送給代理程式。

    代理程式將接收:

    {
      "senderPhoneNumber": "+12223334444",
      "eventType": "DELIVERED",
      "eventId": "Ms6oOiEli6QS-fe8QFrmhfIg",
      "messageId": "123"
    }
  5. 使用者在裝置上開啟訊息,將 READ 事件傳送至代理程式。

    代理程式將接收:

    {
      "senderPhoneNumber": "+12223334444",
      "eventType": "READ",
      "eventId": "Ms6oOiEli6QS-ge9ZFsmgTj",
      "messageId": "123"
    }
  6. 使用者撰寫並回覆代理程式。

    代理程式將接收:

    {
      "senderPhoneNumber": "+12223334444",
      "messageId": "msg000999888777a",
      "sendTime": "2018-12-31T15:01:23.045123456Z",
      "text": "Hello to you!",
    }
  7. RBM 平台會在收到使用者的訊息時,自動將使用者的裝置傳送 DELIVERED 事件。

  8. 代理程式會傳送 READ 事件以回應使用者的訊息,讓使用者知道已收到和確認。

    代理程式會傳送:

    {
      "eventType": "READ",
      "messageId": "msg000999888777a"
    }