Что это такое
Подпишитесь на whatsapp.echo_message.created.
Вы получаете это событие, когда YCloud регистрирует исходящее эхо для Агента, подключенного через Public REST API. Читайте стандартный контент в формате сообщения из whatsappMessage; не используйте это событие для входящих сообщений от клиентов.
Текущий контракт сохраняет имя события без изменений, представляя эхо как стандартное сообщение WhatsApp. Поля Агента, передачи управления (handover) и маршрутизации Inbox не входят в эту полезную нагрузку.
Перед началом работы
- Подключите Агента через Public REST API.
- Подпишите активную конечную точку Webhook в том же аккаунте на
whatsapp.echo_message.created.
- Проверяйте
YCloud-Signature по исходному телу запроса, надежно принимайте каждое событие и обрабатывайте его идемпотентно.
Агенты, созданные через Console, не отправляют этот клиентский Webhook. Синхронизация их Inbox представляет собой отдельный процесс.
Инструкции по настройке конечной точки см. в разделе Настройка вебхуков.
Принцип работы
Во всех примерах используются идентификаторы-плейсхолдеры. Маршрутизируйте по внешнему type и читайте whatsappMessage, а не whatsappMetaBusinessAgent, whatsappEchoMessage или data.
Устраняйте дубликаты повторных доставок с помощью внешнего id. Внешнее createTime — это время события Webhook; поля времени внутри вложенного сообщения представляют собой время источника в формате RFC 3339.
- Используйте
id или wamid для сопоставления последующих событий статуса.
- Читайте текст из
text.body. Для медиафайлов проверяйте type и соответствующий объект контента. Идентификаторы медиафайлов не являются публичными URL-адресами для скачивания.
- Телефон клиента и BSUID независимы друг от друга. Если исходный обратный вызов предоставляет оба значения, событие включает
to вместе с recipientUserId или parentRecipientUserId. Отсутствующие идентификаторы опускаются и не выводятся друг из друга.
from — это отображаемый номер телефона компании, если исходный обратный вызов передает корректный номер телефона. Он не формируется на основе phoneNumberId.
- Контекст ответа нормализован в соответствии со стандартным контрактом сообщений. Например, исходный
context.id передается как context.message_id.
- Поля Агента, передачи управления, маршрутизации, тарификации и переписки не включаются.
status — это сохраненный статус на момент обработки эха; не гарантируется, что он будет равен sent.
- Входящие сообщения от клиентов используют
whatsapp.inbound_message.received. Эхо-сообщения Business App используют whatsapp.smb.message.echoes.
Запрос
YCloud отправляет эти тела JSON в запросах HTTP POST на настроенный вами URL Webhook.
Ответ
Возвращайте ответ 2xx после надежного сохранения каждого события. Длительные операции обрабатывайте асинхронно.
Исходящее текстовое эхо
Запрос
Сохраняйте текст из whatsappMessage.text.body. id и wamid связывают последующие события статуса.
Ответ
Пояснение
Читайте текст эхо-сообщения из whatsappMessage.text.body. Используйте id или wamid для сопоставления последующих событий статуса.
Исходящее медиа-эхо (изображение)
Запрос
Содержимое сообщения зависит от типа. Воспринимайте идентификаторы медиафайлов как ссылки провайдера, а не как публичные URL-адреса для скачивания.
Ответ
Пояснение
Используйте type, чтобы выбрать соответствующий объект контента. Воспринимайте медиа id как ссылку провайдера.
Похожие примеры