Перейти к основному содержанию

Что это такое

Подпишитесь на whatsapp.echo_message.created. Вы получаете это событие, когда YCloud фиксирует исходящее эхо-сообщение для Meta Business Agent, подключенного через Public REST API. Считывайте стандартное содержимое формата сообщения из whatsappMessage; не используйте это событие для входящих сообщений клиентов. Текущий контракт сохраняет имя события без изменений, представляя эхо как стандартное сообщение WhatsApp. Поля агента, передачи управления (handover) и маршрутизации Inbox не входят в полезную нагрузку.

Перед началом работы

  1. Подключите агента через Public REST API.
  2. Подпишите активную конечную точку webhook в том же аккаунте на whatsapp.echo_message.created.
  3. Проверяйте YCloud-Signature по исходному телу запроса, надежно принимайте каждое событие и обрабатывайте его идемпотентно.
Агенты, созданные в консоли, не отправляют этот клиентский 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 вебхука.

Ответ

Возвращайте ответ 2xx после надежного сохранения каждого события. Длительную обработку выполняйте асинхронно.

Исходящее текстовое эхо-сообщение

Запрос

Сохраняйте текст из whatsappMessage.text.body. Поля id и wamid связывают последующие события статуса.

Ответ

Пояснение

Считывайте эхо-текст из whatsappMessage.text.body. Используйте id или wamid для сопоставления последующих событий статуса.

Исходящее эхо-сообщение с изображением

Запрос

Содержимое сообщения зависит от его типа. Воспринимайте идентификаторы медиафайлов как ссылки провайдера, а не как публичные URL для загрузки.

Ответ

Пояснение

Используйте type для выбора соответствующего объекта содержимого. Считайте медиа-поле id ссылкой поставщика.

Похожие примеры