Агенты 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": { "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" }