После регистрации в Business Messages вы сможете получать сообщения от имени вашего тестового агента. Вы можете получать сообщения от брендов, которыми вы управляете, после создания , проверки и запуска агентов для этих брендов.
Когда клиент отправляет сообщение агенту, которым вы управляете, Business Messages отправляет на ваш веб-перехватчик полезные данные JSON, содержащие различные идентификаторы, содержимое сообщения и информацию о местоположении.
Используйте страницу журналов консоли разработчика Business Communications для устранения проблем с доставкой сообщений.
Обрабатывать входящие сообщения
То, как ваш агент обрабатывает сообщения пользователей и отвечает на них, во многом зависит от вашей бизнес-логики. Однако в целом действия по реагированию на сообщение пользователя одинаковы.
Подтвердите сообщение
Чтобы подтвердить сообщение, полученное вашим веб-перехватчиком, верните действительный ответ HTTP на сообщения, отправленные на ваш веб-перехватчик.
Если сообщение не может быть доставлено из-за тайм-аута доставки, доступности веб-перехватчика, перенаправления или проблем с разрешениями, Google сохраняет и пересылает сообщение с несколькими повторами в течение 7 дней или до тех пор, пока ваш веб-перехватчик успешно не получит сообщение.
Убедитесь, что сообщение отправлено Google.
Прежде чем обрабатывать его содержимое, вам следует убедиться, что Google отправил сообщение.
Чтобы убедиться, что Google отправил полученное вами сообщение,
- Проанализируйте заголовок
X-Goog-Signature
сообщения. Это хешированная копия полезных данных тела сообщения в кодировке Base64. Используя клиентский токен (который был представлен при настройке веб-перехватчика ) в качестве ключа, создайте SHA512 HMAC байтов полезной нагрузки сообщения и закодируйте результат в формате Base64.
Сравните хэш
X-Goog-Signature
с созданным вами хешем.- Если хеши совпадают, вы подтверждаете, что сообщение отправлено Google.
- Если хэши не совпадают, проверьте процесс хеширования на заведомо исправном сообщении. Если ваш процесс хеширования работает правильно и вы получили сообщение, которое, по вашему мнению, было отправлено вам обманным путем,свяжитесь с нами (необходимо войти в систему с помощью учетной записи Google Business Messages).
См. пример проверки сообщения в репозиториях GitHub для ботов Echo на Java , Node.js и Python .
Определите локаль
Пользователи общаются из разных мест и на многих языках. Бизнес-сообщения представляют языковые предпочтения пользователей с помощью resolvedLocale
и userDeviceLocale
, которые основаны на региональных настройках их устройств. См. Локализация и локали .
По возможности маршрутизируйте сообщения и составляйте ответы на основе языковых предпочтений пользователей.
Маршрутизация сообщения в зависимости от его контекста
Контекст сообщения сообщает, какую информацию может искать пользователь. Например, если пользователь отправляет сообщение со значением placeId
, он отправляет сообщение конкретному местоположению (идентифицированному placeId
) и, скорее всего, задаст вопросы, связанные с местоположением. Аналогично, если сообщение имеет значение nearPlaceId
, которое идентифицирует местоположение рядом с пользователем, пользователь, скорее всего, захочет узнать информацию о местоположении, но агент должен подтвердить местоположение, с которым пользователь хочет поговорить, прежде чем начать разговор.
Используя контекстную информацию сообщения, направьте сообщение в место, наиболее подходящее для ответа:
- Если сообщение находится в новом разговоре и представляет собой общий вопрос, вы можете ответить автоматически.
- Если автоматизация не может справиться с вопросом, направьте его действующему агенту.
- Если языковой стандарт сообщения не соответствует языковому стандарту вашего агента по умолчанию, направьте сообщение действующему агенту, который может поддерживать этот языковой стандарт.
- Если вопрос касается конкретного места, перенаправьте его тому, у кого есть информация об этом месте.
- Если сообщение находится в текущем разговоре, направьте его активному агенту, участвующему в разговоре.
Определите тип сообщения, отправленного пользователем.
Пользователи могут отправлять три типа сообщений:
- Текстовые сообщения представляют собой ответы в произвольной форме.
- Сообщения с изображениями включают подписанный URL-адрес изображения, загруженного пользователем.
- Сообщения с предложениями включают в себя данные обратной передачи и текст предлагаемого действия или предлагаемого ответа, который нажал пользователь.
Обработать содержимое сообщения
Если ваш агент использует автоматизацию, содержание сообщения пользователя должно определять логику вашего агента и следующий ответ в разговоре.
Самый простой способ определить намерение пользователя — использовать данные обратной передачи из предлагаемого ответа или предлагаемого действия. Независимо от текста, связанного с предложением, данные обратной передачи являются машиночитаемыми.
Если пользователь отправляет текстовое сообщение, ваш агент может проанализировать ответ на наличие поддерживаемых ключевых слов или использовать понимание естественного языка (например, с помощью интеграции Dialogflow для обработки сообщения пользователя и определения пути вперед).
Если ваш агент не знает, как ответить на сообщение пользователя, он должен ответить сообщением об ошибке и попытаться продолжить разговор, запросив у пользователя дополнительную информацию, запросив ввод другим способом или передав сообщение. разговор с живым агентом.
Ответить пользователю
После того как агент определяет правильный ответ (с помощью автоматизации или живого агента), он отправляет сообщение и продолжает разговор с пользователем.
При составлении ответа учитывайте языковой стандарт пользователя. Вы можете дополнительно настроить ответы, получая значения из объекта userInfo
в каждом полученном сообщении.
Типы сообщений
Следующий код показывает, как ваш агент получает сообщения.
Информацию о форматировании и значениях см. в UserMessage
.
Текст
Самый распространенный способ ответа пользователей — обычный текст. Текстовые сообщения имеют следующий формат.
{ "agent": "brands/BRAND_ID/agents/AGENT_ID", "conversationId": "CONVERSATION_ID", "customAgentId": "CUSTOM_AGENT_ID", "requestId": "REQUEST_ID", "message": { "messageId": "MESSAGE_ID", "name": "conversations/CONVERSATION_ID/messages/MESSAGE_ID", "text": "MESSAGE_TEXT", "createTime": "MESSAGE_CREATE_TIME", }, "dialogflowResponse": { "autoResponded": "BOOLEAN", "faqResponse": { "userQuestion": "USER_QUESTION", "answers": [{ "faqQuestion": "FAQ_QUESTION", "faqAnswer": "FAQ_ANSWER", "matchConfidenceLevel": "CONFIDENCE_LEVEL", "matchConfidence": "CONFIDENCE_NUMERIC", }], }, }, "context": { "entryPoint": "CONVERSATION_ENTRYPOINT", "placeId": "LOCATION_PLACE_ID", "resolvedLocale": "MATCH_OF_USER_AND_AGENT_LOCALES", "userInfo": { "displayName": "USER_NAME", "userDeviceLocale": "USER_LOCALE", }, }, "sendTime": "SEND_TIME", }
Параметры форматирования и значения см. в разделе Message
.
Изображение
Помимо отправки текста, пользователи могут отправлять изображения вашему агенту в виде сообщений. Business Messages сохраняет общие изображения в течение 7 дней по подписанным URL-адресам и включает эти URL-адреса в text
поле полезных данных сообщения.
Если ваш агент включает в себя автоматизацию, убедитесь, что она знает, как реагировать, если пользователь поделится изображением. Для живых агентов убедитесь, что изображения передаются или URL-адреса в сообщениях доступны для кликов.
...
"message": {
"text": "https://storage.googleapis.com/business-messages-us/936640919331/jzsu6cdguNGsBhmGJGuLs1DS?x-goog-algorithm\u003dGOOG4-RSA-SHA256\u0026x-goog-credential\u003duranium%40rcs-uranium.iam.gserviceaccount.com%2F20190826%2Fauto%2Fstorage%2Fgoog4_request\u0026x-goog-date\u003d20190826T201038Z\u0026x-goog-expires\u003d604800\u0026x-goog-signedheaders\u003dhost\u0026x-goog-signature\u003d89dbf7a74d21ab42ad25be071b37840a544a43d68e67270382054e1442d375b0b53d15496dbba12896b9d88a6501cac03b5cfca45d789da3e0cae75b050a89d8f54c1ffb27e467bd6ba1d146b7d42e30504c295c5c372a46e44728f554ba74b7b99bd9c6d3ed45f18588ed1b04522af1a47330cff73a711a6a8c65bb15e3289f480486f6695127e1014727cac949e284a7f74afd8220840159c589d48dddef1cc97b248dfc34802570448242eac4d7190b1b10a008404a330b4ff6f9656fa84e87f9a18ab59dc9b91e54ad11ffdc0ad1dc9d1ccc7855c0d263d93fce6f999971ec79879f922b582cf3bb196a1fedc3eefa226bb412e49af7dfd91cc072608e98"
}
...
Параметры форматирования и значения см. в разделе Message
.
Предположение
Предлагаемые ответы и предлагаемые действия позволяют пользователям отвечать или выполнять действия одним касанием. Когда пользователь нажимает на предложение, агент получает полезную нагрузку с текстом предложения и данными обратной передачи.
Сообщения с предложениями имеют следующий формат.
{ "agent": "brands/BRAND_ID/agents/AGENT_ID", "conversationId": "CONVERSATION_ID", "customAgentId": "CUSTOM_AGENT_ID", "requestId": "REQUEST_ID", "suggestionResponse": { "message": "conversations/CONVERSATION_ID/messages/MESSAGE_ID", "postbackData": "POSTBACK_DATA", "createTime": "RESPONSE_CREATE_TIME", "text": "SUGGESTION_TEXT", "suggestionType": "SUGGESTION_TYPE", } "context": { "entryPoint": "CONVERSATION_ENTRYPOINT", "placeId": "LOCATION_PLACE_ID", "resolvedLocale": "MATCH_OF_USER_AND_AGENT_LOCALES", "userInfo": { "displayName": "USER_NAME", "userDeviceLocale": "USER_LOCALE", }, }, "sendTime": "SEND_TIME", }
Параметры форматирования и значений см. в SuggestionResponse
.
Запрос аутентификации
Предложение запроса проверки подлинности позволяет пользователям входить в систему с помощью поставщика OAuth, чтобы предоставить агенту идентификационные данные или разрешить агенту выполнять действия от имени пользователей. См. Аутентификация с помощью OAuth .
Если пользователь успешно входит в систему с указанным поставщиком OAuth, агент получает полезные данные с кодом авторизации. Если пользователю не удается войти в систему, агент получает полезные данные со сведениями об ошибке.
Сообщения запроса аутентификации имеют следующий формат.
{ "agent": "brands/BRAND_ID/agents/AGENT_ID", "conversationId": "CONVERSATION_ID", "customAgentId": "CUSTOM_AGENT_ID", "requestId": "REQUEST_ID", "authenticationResponse": { "code": "AUTHORIZATION_CODE", "redirect_uri": "REDIRECT_URI", "errorDetails": { "error": "ERROR", "errorDescription": "ERROR_DESCRIPTION", }, } "context": { "entryPoint": "CONVERSATION_ENTRYPOINT", "placeId": "LOCATION_PLACE_ID", "resolvedLocale": "MATCH_OF_USER_AND_AGENT_LOCALES", "userInfo": { "displayName": "USER_NAME", "userDeviceLocale": "USER_LOCALE", }, }, "sendTime": "SEND_TIME", }
Параметры форматирования и значений см. в AuthenticationResponse
.
Контекст сообщения
Каждое сообщение содержит контекстную информацию о том, откуда пришло сообщение.
... "context": { "customContext": "CUSTOM_CONTEXT", "entryPoint": "CONVERSATION_ENTRYPOINT", "placeId": "LOCATION_PLACE_ID", "nearPlaceId": "NEARBY_LOCATION_PLACE_ID", "deflectedPhoneNumber": "DEFLECTED_PHONE_NUMBER", "resolvedLocale": "MATCH_OF_USER_AND_AGENT_LOCALES", "userInfo": { "displayName": "USER_NAME", "userDeviceLocale": "USER_LOCALE", }, "widget": { "url": "WEBSITE_URL", "widgetContext": "WIDGET_CONTEXT", }, }, ...
Поле | Описание |
---|---|
customContext | Контекстные данные, указанные партнером. |
entryPoint | Поверхность обмена сообщениями, с которой пользователь начал разговор, как определено EntryPoint . |
placeId | Уникальный идентификатор из базы данных Google Адресов места, о котором сообщил пользователь. Он появляется только в сообщениях от точек входа, зависящих от местоположения. |
nearPlaceId | Уникальный идентификатор из базы данных Google Адресов для первого местоположения в локальном пакете. Подтвердите местоположения, с которыми пользователи хотят общаться, когда вы получите значения nearPlaceId . |
deflectedPhoneNumber | Номер телефона, на который Business Messages не позволил пользователю позвонить в момент начала разговора. |
resolvedLocale | Наилучшее вычисленное соответствие языкового стандарта пользователя (сообщаемого в Значение локали — это правильно сформированный языковой тег IETF BCP 47 . |
userInfo.displayName | Имя пользователя, отправившего сообщение. Если пользователь отказывается от совместного использования личных данных, это поле остается пустым. |
userInfo.userDeviceLocale | Языковой стандарт пользователя, сообщаемый его устройством, в виде правильно сформированного языкового тега IETF BCP 47 . |
widget.url | URL-адрес веб-сайта, на котором запущена диалоговая поверхность. |
widget.widgetContext | Значение атрибута data-bm-widget-context виджета, используемого для начала разговора. |
История разговора
Google не предоставляет истории разговоров. Сохраняйте свои собственные исторические разговоры в соответствии с вашей политикой конфиденциальности и передовыми практиками, чтобы вы могли отправлять обоснованные ответы на будущие сообщения от пользователей.