Skip to main content

Что это такое

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

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

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

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