接收消息

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

用户向代理发送消息

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

处理传入消息

代理如何处理和回复用户消息在很大程度上取决于您的业务逻辑。不过,回复用户消息的步骤通常是一致的。

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

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

  • 文字消息是自由格式的回答。
  • 建议消息包含用户点按的建议操作或建议回复的 postback 数据和文本。
  • 位置消息包含纬度和经度值。

  • 文件消息包含文件的 URI 和关联数据。

第 2 步:处理消息内容

用户消息的内容应指导代理在对话中的逻辑和后续响应。

识别用户意图的最简单方法是使用建议回复或建议操作中的回发数据。无论建议关联的文本是什么,回发数据都是机器可读的。

如果用户发送短信,代理可能会解析响应以查找支持的关键字,或者使用 NLU(例如 Dialogflow)来处理用户消息并确定后续步骤。

位置和文件消息不包含文本或回发数据,因此客服人员在回复之前应考虑对话的上下文和最近的消息。

如果代理不知道如何响应用户的消息,则应以错误状态进行响应,并通过提示用户提供更多信息、以其他方式请求输入或呈现代理知道如何响应的建议回复和建议操作,尝试继续对话。

第 3 步:实现互动的业务逻辑

当代理确定用户消息的正确回答后,会从您的基础架构中收集必要的信息,并根据需要与其他系统互动,以实现互动的业务逻辑。

第 4 步:回复用户

代理满足互动所需的业务逻辑后,会发送另一条消息,并继续与用户对话。

示例

以下代码展示了代理如何接收消息。如需了解格式设置和值信息,请参阅 UserMessage

注意:对于美国境内的流量,用户消息和对建议操作的点按操作受美国结算模式分类的约束。当代理收到这些事件时,它们将包含 richMessageClassification 字段,该字段用于确定可结算的事件类型。如需了解分类详情,请参阅美国结算模式指南。

支持专员收到文字

{
  "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": {
    "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"
}