Получать сообщения

Агенты RBM получают сообщения и события через веб-перехватчик . Когда пользователь отправляет сообщение вашему агенту, служба RBM от Google отправляет сообщение на настроенный вами веб-перехватчик. Затем ваш агент может расшифровать сообщение, обработать его и выдать ответ пользователю.

Пользователь отправляет сообщение агенту.

Пользователи могут отправлять любой текст, местоположение или файлы, которые разрешает их RCS-клиент. Ваш агент должен обрабатывать любой текст, местоположение или файлы, которые может отправить пользователь, а также любые ошибки, которые могут возникнуть в результате отправки этих сообщений.

Чтобы узнать, как ваш агент может обрабатывать уведомления о доставке, уведомления о прочтении и индикаторы ввода, см. раздел «События получения» .

Обработка входящих сообщений

Способ обработки сообщений от пользователей вашим агентом во многом зависит от вашей бизнес-логики. Однако, как правило, шаги по ответу на сообщение пользователя остаются неизменными.

Шаг 1: Определите тип сообщения, отправленного пользователем.

Пользователи могут отправлять четыре типа сообщений:

  • Текстовые сообщения представляют собой ответы в свободной форме.
  • Сообщения с подсказками содержат данные обратной связи и текст предлагаемого действия или предлагаемого ответа, на который пользователь нажал.
  • В сообщениях о местоположении указываются значения широты и долготы.

  • Сообщения, содержащие информацию о файле , включают URI файла и связанные с ним данные.

Шаг 2: Обработка содержимого сообщения

Содержание сообщения пользователя должно направлять логику вашего агента и определять его дальнейший ответ в разговоре.

Самый простой способ определить намерение пользователя — это использовать данные, полученные в результате отправки запроса на сервер (postback) от предложенного ответа или действия. Независимо от текста, связанного с предложением, данные, полученные в результате отправки запроса, являются машиночитаемыми.

Если пользователь отправляет текстовое сообщение, ваш агент может проанализировать ответ на наличие поддерживаемых ключевых слов или использовать обработку естественного языка (например, 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": {
    "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"
    }
  }
}