Мы прекращаем поддержку локального 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
}