Мы прекращаем поддержку локального API. Подробные сведения и информацию о том, как перейти на облачный API нового поколения, см. в документе Упразднение локального API.
Это руководство содержит информацию об отправке интерактивных сообщений каждого типа. Интерактивные сообщения упрощают пользователям поиск и выбор необходимых вариантов при взаимодействии с вашей компанией в WhatsApp. Во время тестирования чат-боты, использующие функции интерактивных сообщений, обеспечили значительно более высокую долю отклика и коэффициент конверсии по сравнению с простыми текстовыми ботами.
Типы интерактивных сообщений:
Сравнение тестовых и интерактивных сообщений:
Пример комбинирования сообщений со списками и с кнопками ответа в одной переписке:
По сравнению с текстовыми списками, интерактивные сообщения предлагают более простой и более последовательный формат, используя который люди могут находить и выбирать интересующие их товары и услуги, предоставляемые компанией. Во время тестирования люди демонстрировали более высокий уровень восприятия при использовании таких сообщений.
Во время тестирования чат-боты, использующие функции интерактивных сообщений, обеспечили значительно более высокую долю отклика и коэффициент конверсии по сравнению с простыми текстовыми ботами.
Сообщения заполняются динамически в реальном времени, что позволяет персонализировать их для каждого отдельного покупателя или в зависимости от ситуации. Например, вы можете отобразить сообщение со списками с указанием интервалов времени, доступных для резервирования встречи, или использовать кнопки с ответами для отображения ранее использованных адресов доставки.
Интерактивным сообщениям не требуются шаблоны и предварительные подтверждения.
Сообщения со списками лучше всего подходят для предложения нескольких вариантов, например:
Кнопки ответов лучше всего подходят для того, чтобы предложить быстрые ответы из ограниченного списка вариантов, например:
Кнопки ответов особенно полезны для "персонализированных" вариантов использования, когда общего ответа недостаточно.
Сообщения Flows лучше всего подходят для структурированной коммуникации в рамках одного или нескольких экранов, например:
Благодаря сообщениям Flows компании могут предлагать более функциональное и вовлекающее взаимодействие с пользователями, что поможет им быстрее решать свои задачи в WhatsApp, не переключаясь при этом на другие приложения и не переходя на какие-либо сайты.
На уровне API интерактивные сообщения настраиваются путем установки для параметра type
сообщения значения interactive
и добавления объекта interactive
. Такие сообщения обычно состоят из четырех основных частей: header
, body
, footer
и action
.
{ "recipient_type": "individual", "to" : "whatsapp-id", "type": "interactive" "interactive":{ "type": "list" | "button" | ..., "header": {}, "body": {}, "footer": {}, "action": {} } }
Ниже приведена информация об отправке этих сообщений.
Перед отправкой каждого сообщения вам необходимо получить ID WhatsApp получателя, выполнив вызов к узлу /contacts
.
Рекомендуем настроить Webhooks для получения статуса сообщений и уведомлений о входящих сообщениях. Это позволит вам отслеживать как отправку ваших сообщений, так и получение ответов от пользователей. Дополнительную информацию см. в статье о Webhooks.
interactive
Для отправки сообщения со списками вам необходимо создать объект interactive
типа list
с использованием следующих компонентов:
Объект | Описание |
---|---|
| Необязательный параметр. Если вы решите включить его, вам необходимо в качестве типа заголовка указать текст и добавить поле текста с желаемым контентом. Не более 60 символов. |
| Обязательный параметр. Основная часть вашего сообщения. Не более 1024 символов. |
| Необязательный параметр. Нижний колонтитул вашего сообщения. |
| Обязательный параметр. Внутри действия вам необходимо разместить:
Внутри |
В итоге ваш объект interactive
должен выглядеть примерно так:
"interactive":{ "type": "list", "header": { "type": "text", "text": "your-header-content" }, "body": { "text": "your-text-message-content" }, "footer": { "text": "your-footer-content" }, "action": { "button": "cta-button-content", "sections":[ { "title":"your-section-title-content", "rows": [ { "id":"unique-row-identifier", "title": "row-title-content", "description": "row-description-content", } ] }, { "title":"your-section-title-content", "rows": [ { "id":"unique-row-identifier", "title": "row-title-content", "description": "row-description-content", } ] }, ... ] } }
Для отправки сообщения с кнопками ответа вам необходимо создать объект interactive
типа button
с использованием следующих компонентов:
Объект | Описание |
---|---|
| Необязательный параметр. Для интерактивных сообщений Выберите необходимое значение
Пример: "header": { "type": "text" | "image" | "video" | "document", "text": "your text" # OR "document": { "id": "your-media-id", "filename": "some-file-name" } # OR "document": { "link": "the-provider-name/protocol://the-url", "provider": { "name": "provider-name", }, "filename": "some-file-name" }, # OR "video": { "id": "your-media-id" } # OR "video": { "link": "the-provider-name/protocol://the-url", "provider": { "name": "provider-name" } } # OR "image": { "id": "your-media-id" } # OR "image": { "link": "http(s)://the-url", "provider": { "name": "provider-name" } } } |
| Обязательный параметр. |
| Необязательный параметр. |
| Обязательный параметр. Вы должны добавить хотя бы одно значение При настройке идентификатора в начале и в конце нельзя поставить пробелы. Пример: "action": { "buttons": [ { "type": "reply", "reply": { "id": "unique-postback-id", "title": "First Button’s Title" } }, { "type": "reply", "reply": { "id": "unique-postback-id", "title": "Second Button’s Title" } } ] } |
В итоге ваш объект interactive
должен выглядеть примерно так:
"interactive": { "type": "button", "header": { # optional "type": "text" | "image" | "video" | "document", "text": "your text" # OR "document": { "id": "your-media-id", "filename": "some-file-name" } # OR "document": { "link": "the-provider-name/protocol://the-url", "provider": { "name": "provider-name", }, "filename": "some-file-name" }, # OR "video": { "id": "your-media-id" } # OR "video": { "link": "the-provider-name/protocol://the-url", "provider": { "name": "provider-name" } } # OR "image": { "id": "your-media-id" } # OR "image": { "link": "http(s)://the-url", "provider": { "name": "provider-name" } } }, # end header "body": { "text": "your-text-body-content" }, "footer": { # optional "text": "your-text-footer-content" }, "action": { "buttons": [ { "type": "reply", "reply": { "id": "unique-postback-id", "title": "First Button’s Title" } }, { "type": "reply", "reply": { "id": "unique-postback-id", "title": "Second Button’s Title" } } ] } # end action } # end interactive
Сообщения с запросом геоданных содержат основной текст и кнопку Отправить геоданные, которую могут нажимать пользователи. После нажатия этой кнопки отображается экран предоставления геоданных.
Чтобы отправить сообщение с запросом геоданных, сначала создайте объект interactive
с тем текстом, который должен отображаться в сообщении:
{ "type": "location_request_message", "body": { "type": "text", "text": "<TEXT>" }, "action": { "name": "send_location" } }
Свойство | Описание |
---|---|
| Укажите значение |
| Укажите значение |
| Укажите текст, который должен отображаться над кнопкой Отправить геоданные. |
| Задайте значение |
Сообщения Flows содержат кнопку призыва к действию, которую пользователи могут нажать. При нажатии кнопки открывается пользовательский Flow.
Чтобы отправить сообщение Flows, необходимо создать объект interactive
типа flow
. Подробную информацию см. в этой статье.
Теперь, когда вы создали свой интерактивный объект, добавьте другие параметры, которые являются частью сообщения: recipient_type
, to
и type
. Установите для параметра type
значение interactive
.
{ "recipient_type": "individual", "to" : "whatsapp-id", // WhatsApp ID of your recipient "type": "interactive", "interactive":{ // Your interactive object } }
Параметры, общие для всех типов сообщений, см. здесь.
POST
к /messages
Выполните вызов POST
к конечной точке /messages
с использованием объекта JSON
, который вы создали в шагах 1 и 2. В случае успешной отправки сообщения вы получите следующий ответ:
{ "messages": [{ "id": "{message-id}" }] }
Если вы настроили свои Webhooks, проверьте изменения статуса ваших сообщений, а также ответы, поступившие от пользователей.
Webhooks пользователей, отвечающих на интерактивные сообщения, включают в себя новый компонент interactive
, который содержит информацию о выборе, сделанном пользователем. Дополнительную информацию см. в статье Webhooks, Компоненты.
Например, вот запрос Webhooks с описанием пользователя, который предоставил свои геоданные.
{ "object": "whatsapp_business_account", "entry": [ { "id": "12345", "changes": [ { "value": { "messaging_product": "whatsapp", "metadata": { "display_phone_number": "12345", "phone_number_id": "12345" }, "contacts": [ { "profile": { "name": "John Doe" }, "wa_id": "12345" } ], "messages": [ { "context": { "from": "12345", "id": "test-id" }, "from": "123450", "id": "test-id", "timestamp": "16632", "location": { "address": "1071 5th Ave, New York, NY 10128", #Optional "latitude": 37.421996751527, "longitude": -122.08407156636, "name": "Solomon R. Guggenheim Museum" #Optional }, "type": "location" } ] }, "field": "messages" } ] } ] }
Компонент location
в полезных данных содержит указание географической широты и долготы местоположения пользователя. Обратите внимание, что для пользователя компоненты address
и name
являются необязательными и могут не включаться.
"location": { "address": "1071 5th Ave, New York, NY 10128", #Optional "latitude": 40.782910059774, "longitude": -73.959075808525, "name": "Solomon R. Guggenheim Museum" #Optional }