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

Пользователи могут отправлять любые тексты, местоположения и файлы, разрешенные их RCS-клиентом. Ваш агент должен обрабатывать все тексты, местоположения и файлы, которые может отправить пользователь, а также любые состояния ошибок, которые могут возникнуть из-за этих сообщений.
Обработка входящих сообщений
То, как ваш агент обрабатывает сообщения пользователей и реагирует на них, во многом зависит от вашей бизнес-логики. Однако, как правило, шаги по реагированию на сообщения пользователей одинаковы.
Шаг 1: Определите тип сообщения, отправленного пользователем.
Пользователи могут отправлять четыре типа сообщений:
- Текстовые сообщения представляют собой ответы в свободной форме.
- Сообщения с предложениями включают в себя данные обратной связи и текст предлагаемого действия или предлагаемого ответа, нажатого пользователем.
Сообщения о местоположении включают значения широты и долготы.
Файловые сообщения включают 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"
}