接收消息

RBM 代理通过网络钩子接收消息和事件。当用户向您的代理发送消息时,Google 的 RBM 服务会将消息发送到您配置的网络钩子。然后,您的代理可以解码、处理该消息,并向用户发出响应。

用户向代理发送消息

用户可以发送其 RCS 客户端允许的任何文本、位置或文件。 您的代理需要处理用户可能发送的任何文本、位置或文件,以及这些消息可能触发的任何错误状态。

处理传入消息

代理处理和响应来自用户的消息的方式在很大程度上取决于您的业务逻辑。但是,通常,响应用户消息的步骤是一致的。

第 1 步:确定用户发送的消息类型

用户可以发送四种类型的消息:

  • 短信消息是自由格式的回复。
  • 建议消息包含回传数据,以及用户点按的建议操作或建议回复的文本。
  • 位置消息包含纬度和经度值。

  • 文件消息包含文件的 URI 及相关数据。

第 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"
}