Полный каталог, сгенерированный на основе схемы, см. в разделе все примеры.
Что это такое
Обработка входящих типов сообщений WhatsApp с примерами полезной нагрузки и пояснениями.Перед началом работы
- Создайте публичный эндпоинт HTTPS в вашем приложении.
- Настройте эндпоинт Webhook в YCloud для необходимых типов событий.
- Обеспечьте безопасное хранение секрета подписи эндпоинта.
- Сделайте обработку событий идемпотентной.
Как это работает
YCloud отправляет HTTP-запросPOST при возникновении события. Проверьте подпись, надежно сохраните событие, верните ответ 2xx и выполняйте длительные операции асинхронно.
Запрос
Ниже приведены сценарии запросов, отправляемых на ваш Webhook URL. Используйтеid события как идентификатор доставки, а type — для маршрутизации полезной нагрузки.
Ответ
Возвращайте статус2xx после успешного принятия события.
Информацию о настройке эндпоинта, проверке подписи и поведении повторных попыток см. в разделе Настройка вебхуков.
Входящее неподдерживаемое сообщение
В этом случае ваш эндпоинт Webhook получил входящее неподдерживаемое сообщение:typeимеет значениеunsupported.errorsобъясняет, почему сообщение не поддерживается или недоступно.unsupported.typeуказывает категорию сообщения, напримерpoll_creation,poll_update,editилиpin.
Запрос
Ответ
Подтвердите доставку после надежного сохранения события.Пояснение
- Ошибка
131051сMessage type unknownозначает, что WhatsApp Cloud API не поддерживает данный тип сообщения. - Ошибка
131060сThis message is currently unavailable.означает, что WhatsApp не смог предоставить содержимое сообщения. unsupported.typeуказывает общую категорию. Поле не содержит исходного текста или контента сообщения.- Список типов сообщений см. в разделе Неподдерживаемые сообщения во входящих. Актуальный формат полезной нагрузки описан в справочнике по вебхукам неподдерживаемых сообщений от Meta.
Входящее текстовое сообщение
В этом случае ваш эндпоинт Webhook получил входящее текстовое сообщение:- Содержит обычный текст, отправленный пользователем.
- Содержит информацию об упомянутом сообщении в
context.
Запрос
Ответ
Подтвердите доставку после надежного сохранения события.Пояснение
- Входящие сообщения — это сообщения, отправленные клиентами на ваши рабочие телефонные номера.
- Объект
context(необязательный) содержит информацию об упомянутом сообщении, обычно используемую при ответе на предыдущее сообщение, отправленное пользователем или вашей компанией.context.from— это WhatsApp ID (номер телефона без префикса «+») пользователя, отправившего упомянутое сообщение.context.id— это исходный ID упомянутого сообщения на платформе WhatsApp, начинающийся сwamid..
Входящее текстовое сообщение, инициированное кликом по рекламе WhatsApp Ads
В этом случае ваш эндпоинт Webhook получил входящее текстовое сообщение, вызванное кликом по рекламе в WhatsApp:- Содержит обычный текст.
- Содержит информацию о рекламе.
Запрос
Ответ
Подтвердите доставку после надежного сохранения события.Пояснение
- Объект
referralсодержит информацию о рекламе. См. также раздел Реклама с переходом в WhatsApp.
Входящее сообщение с изображением
В этом случае ваш эндпоинт Webhook получил входящее сообщение с изображением:- Содержит URL изображения.
- Содержит подпись с описанием этого изображения.
Запрос
Ответ
Подтвердите доставку после надежного сохранения события.Пояснение
- По ссылке
image.linkфайл доступен напрямую в течение нескольких минут для удобства клиента, однако для скачивания файла в течение 30 дней всегда следует передавать заголовокX-API-Key.
Входящее сообщение с видео
В этом случае ваш эндпоинт Webhook получил входящее сообщение с видео:- Содержит URL видео.
- Содержит подпись с описанием этого видео.
Запрос
Ответ
Подтвердите доставку после надежного сохранения события.Пояснение
- По ссылке
video.linkфайл доступен напрямую в течение нескольких минут для удобства клиента, однако для скачивания файла в течение 30 дней всегда следует передавать заголовокX-API-Key.
Входящее аудиосообщение
В этом случае ваш эндпоинт Webhook получил входящее аудиосообщение:- Содержит URL аудио.
Запрос
Ответ
Подтвердите доставку после надежного сохранения события.Пояснение
- По ссылке
audio.linkфайл доступен напрямую в течение нескольких минут для удобства клиента, однако для скачивания файла в течение 30 дней всегда следует передавать заголовокX-API-Key.
Входящее сообщение с документом
В этом случае ваш эндпоинт Webhook получил входящее сообщение с документом:- Содержит URL документа.
- Содержит подпись с описанием этого документа.
Запрос
Ответ
Подтвердите доставку после надежного сохранения события.Пояснение
- По ссылке
document.linkфайл доступен напрямую в течение нескольких минут для удобства клиента, однако для скачивания файла в течение 30 дней всегда следует передавать заголовокX-API-Key.
Входящее сообщение со стикером
В этом случае ваш эндпоинт Webhook получил входящее сообщение со стикером:- Содержит URL стикера.
Запрос
Ответ
Подтвердите доставку после надежного сохранения события.Объяснение
- К
sticker.linkможно напрямую обращаться в течение нескольких минут для удобства получателя, однако для загрузки этого файла в течение 30 дней всегда следует передавать заголовокX-API-Key.
Входящее сообщение с геопозицией (Location)
В этом случае ваша конечная точка Webhook получила входящее сообщение с геопозицией:- Содержит широту и долготу места.
- Содержит название, адрес и URL места.
Запрос
Ответ
Подтвердите доставку после надежного сохранения события.Объяснение
Маршрутизируйте событие поtype, устраняйте дубликаты по id и переносите медленные или подверженные сбоям задачи в асинхронный обработчик.
Входящее сообщение с контактами (Contacts)
В этом случае ваша конечная точка Webhook получила входящее сообщение с контактами:- Содержит один контакт с адресами, датой рождения, адресами эл. почты, именем, телефонами и другими полями контакта.
- Содержит
origin: contact_request, если пользователь поделился контактом в ответ на запрос контактных данных.
Запрос
Ответ
Подтвердите доставку после надежного сохранения события.Объяснение
Маршрутизируйте событие поtype, устраняйте дубликаты по id и переносите медленные или подверженные сбоям задачи в асинхронный обработчик.
Входящее сообщение-реакция (Reaction)
В этом случае ваша конечная точка Webhook получила входящее сообщение-реакцию:- Содержит ID сообщения, на которое отреагировал пользователь.
- Содержит эмодзи.
Запрос
Ответ
Подтвердите доставку после надежного сохранения события.Объяснение
- Поле
emojiприсутствует, когда пользователь реагирует на сообщение с помощью эмодзи. Его отсутствие означает, что пользователь удалил эмодзи с сообщения.
Входящее сообщение по нажатию кнопки шаблона (Template Button)
В этом случае ваша конечная точка Webhook получила входящее сообщение по нажатию кнопки шаблона:- Содержит
textкнопки шаблона, который использовался при отправке шаблонного сообщения. - Содержит
payloadкнопки, указанный вами при отправке шаблонного сообщения. - Содержит wamid (
context.wamid) отправленного вами шаблонного сообщения.
Запрос
Ответ
Подтвердите доставку после надежного сохранения события.Объяснение
Маршрутизируйте событие поtype, устраняйте дубликаты по id и переносите медленные или подверженные сбоям задачи в асинхронный обработчик.
Входящее интерактивное сообщение с выбором из списка (Interactive List Reply)
В этом случае ваша конечная точка Webhook получила входящее интерактивное сообщение с выбором из списка:- Поле
interactiveсодержит элемент списка, выбранный пользователем в ранее отправленном вами интерактивном сообщении. - Поле
contextсодержит информацию об интерактивном сообщении, которое вы ранее отправили пользователю.
Нажмите кнопку, чтобы выбрать один элемент.
Получатель отвечает на ваше сообщение, выбирая один из пунктов ранее отправленного интерактивного сообщения.
Запрос
Ответ
Подтвердите доставку после надежного сохранения события.Объяснение
- Поле
contextсодержит информацию о ранее отправленном вами интерактивном сообщении.context.from— это WhatsApp ID (номер телефона без префикса «+») отправителя интерактивного сообщения.context.id— исходный ID сообщения на платформе WhatsApp, начинающийся сwamid..
Входящее интерактивное сообщение с ответом по кнопке (Interactive Button Reply)
В этом случае ваша конечная точка Webhook получила входящее интерактивное сообщение с ответом по кнопке:- Поле
interactiveсодержит ответ по кнопке, нажатой пользователем в ранее отправленном вами интерактивном сообщении. - Поле
contextсодержит информацию об интерактивном сообщении, которое вы ранее отправили пользователю.
Запрос
Ответ
Подтвердите доставку после надежного сохранения события.Объяснение
- Поле
contextсодержит информацию о ранее отправленном вами интерактивном сообщении.context.from— это WhatsApp ID (номер телефона без префикса «+») отправителя интерактивного сообщения.context.id— исходный ID сообщения на платформе WhatsApp, начинающийся сwamid..
Входящее интерактивное сообщение с ответом Flow (Interactive Flow Response)
После завершения flow ответное сообщение отправляется в чат WhatsApp. Вы получите его так же, как и все остальные сообщения от пользователя — через webhook сообщений. Полеresponse_json будет содержать данные, относящиеся к flow.
Запрос
Ответ
Подтвердите доставку после надежного сохранения события.Объяснение
interactive.typeвсегда имеет значениеnfm_reply.interactive.nameвсегда имеет значениеflow.interactive.bodyвсегда имеет значениеSent.interactive.response_json— это данные flow. Структура определяется либо в JSON flow (см. действие Complete), либо, если flow использует конечную точку, управляется этой конечной точкой (см. Final Response Payload в разделе Data Exchange Request). Распарсите JSON-строкуinteractive.response_jsonв объект JSON, значения которого могут иметь различные типы данных. Как правило, значения представляют собой обычный текст, за исключением:- Когда данные поступают из компонента CheckboxGroup, значение представляет собой список строк.
- Если оно исходит от компонента OptIn, значением является логическое значение (boolean), то есть
trueилиfalse. В настоящее время, если оно присутствует, значение всегда должно бытьtrue, поскольку такой ключ не будет включен вresponse_json, если пользователь не согласился на рассылку. - Если оно исходит от компонента DatePicker, значение представляет собой строку с таймштампом Unix в миллисекундах, например
"1725936737548"(то есть 2024-09-10T02:52:17.548Z). Начиная с Flow JSON версии 5.0, даты передаются в формате «yyyy-MM-dd», что делает значения независимыми от часовых поясов.
- Инструкции по отправке сообщений с Flow см. в разделах Шаблонное сообщение Flow и Интерактивное сообщение Flow.
Входящее системное сообщение
В этом случае ваша конечная точка Webhook получила входящее системное сообщение:typeимеет значениеsystem, аsystem.type—user_changed_number.- Пользователь меняет свой номер телефона в WhatsApp, и
wa_id— это новый WhatsApp ID (номер телефона без префикса+). user_id— это новый BSUID.parent_user_idвключается только тогда, когда включены родительские BSUID.
Запрос
Ответ
Подтвердите доставку после надежного сохранения события.Объяснение
Маршрутизируйте событие поtype, устраняйте дубликаты с помощью id и передавайте медленные или подверженные сбоям задачи асинхронному обработчику.
Входящее сообщение заказа
В этом случае ваша конечная точка Webhook получила входящее сообщение заказа, когда клиент добавляет один или несколько товаров в корзину и оформляет заказ:- Содержит информацию о заказанном товаре.
Запрос
Ответ
Подтвердите доставку после надежного сохранения события.Объяснение
Маршрутизируйте событие поtype, устраняйте дубликаты с помощью id и передавайте медленные или подверженные сбоям задачи асинхронному обработчику.
Входящее сообщение с запросом информации о товаре
В этом случае ваша конечная точка Webhook получила входящее текстовое сообщение, когда клиент запрашивает информацию о товаре:- Содержит информацию о товаре.
Запрос
Ответ
Подтвердите доставку после надежного сохранения события.Объяснение
- Сообщение с запросом информации о товаре (Product Inquiry Message) поступает, когда пользователь запрашивает подробные сведения о конкретном товаре. Это происходит в двух сценариях:
- Когда клиент отвечает на сообщения с одним или несколькими товарами.
- Когда клиент переходит в каталог компании через другую точку входа, открывает страницу сведений о товаре и нажимает «Написать компании об этом товаре».
Входящее сообщение Request Welcome
Вы можете получать уведомления через Webhook всякий раз, когда пользователь WhatsApp впервые открывает чат с вами. Это удобно, если вы хотите отправить таким пользователям специально настроенное приветственное сообщение. Если вы включите эту функцию и пользователь откроет чат (как правило, при переходе по универсальной ссылке, такой как ссылки wa.me или api.whatsapp.com ), клиент WhatsApp проверяет наличие существующей переписки между пользователем и вашим рабочим номером телефона. Если переписки нет, клиент активирует Webhookrequest_welcome. После этого вы можете отправить пользователю собственное приветственное сообщение.
Запрос
Ответ
Подтвердите доставку после надежного сохранения события.Объяснение
- Чтобы включить эту функцию для номера телефона, перейдите в Meta WhatsApp Manager > Номера телефонов > Настройки > Автоматизация.
- Для тестирования сообщения
request_welcome, если у вас уже есть история чата с данным номером компании, сначала необходимо удалить этот чат. - Эта функция только инициирует входящее сообщение
request_welcomeи не отправляет никаких сообщений автоматически в ответ. Отправлять ли приветственное сообщение — решать вам.

