对话流程

发送及接收信息和事件是代理与用户间沟通的核心环节。代理通过向 RBM API 发送 HTTP POST 请求来向用户发送消息、事件和请求,但会从 Cloud Pub/Sub 以 JSON 格式接收用户创建的消息和事件。

下面是一个对话流程示例,它使用示例数据来说明信息、事件和请求如何形成有用且有意义的互动。

世界,你好!

代理和用户之间的基本对话。

在此示例中,代理将 Hello, World! 作为消息发送给用户,然后用户返回 Hello to you!

代理发送的消息和用户回复的以在 Google 上执行的静态图。

  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,RBM 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"
    }