Meta Tech Provider

Вебхук messages

messages это поле, которое передаёт всё, что клиент отправляет на ваш номер: текст, медиафайлы, ответы, реакции и интерактивные ответы. На маршрутизированном номере Coexistence оно идёт от Meta прямо на ваш эндпоинт, минуя провайдера.

messages

Поле вебхука для входящих сообщений клиентов.

wamid

Префикс в идентификаторе сообщения, используемый для устранения повторов.

200

Статус, который Meta ожидает быстро, до начала обработки.

Что передаёт полезная нагрузка

Одна доставка может содержать одно или несколько сообщений. Для каждого указываются отправитель, идентификатор и тип. От типа зависит, какие другие ключи присутствуют.

  • Номер телефона отправителя и идентификатор номера, на который он написал.
  • Идентификатор сообщения wamid, на котором строится устранение повторов.
  • Метка времени Unix.
  • Тип: text, image, audio, video, document, sticker, location, contacts, reaction, button или interactive.
  • Для медиафайлов передаётся media id, с помощью которого их можно получить, а не сами байты.

Почему на маршрутизированном номере оно не попадает к нам

Переопределение переносит это поле вместе с smb_message_echoes в указанное вами место назначения.

Meta позволяет приложению переопределить место доставки вебхуков аккаунта WhatsApp Business. Мы указываем в этом переопределении ваш URL, поэтому путь сообщения полностью обходится без нашей инфраструктуры. На нашей стороне нет ни копии, ни очереди, ни хранения, поскольку доставка туда не приходит.

Если место назначения не задано, события попадают в наш callback по умолчанию, где обработчик удаляет их без сохранения. В этом разница между заявлением о хранении и реальным путём выполнения: содержимому переписки просто некуда попасть.

Как правильно подтвердить получение

Верните 200 до начала работы, а не после.

Meta считает медленный ответ ошибкой и повторяет отправку. Поэтому обработчик, который обрабатывает всё внутри запроса, может увидеть одно сообщение несколько раз. Ответьте сразу, поместите полезную нагрузку в очередь или фоновую задачу, а обработку выполняйте за пределами запроса.

Для serverless это обязательно. Функция, которая вернула ответ и продолжает работу, может быть заморожена сразу после ответа. Поэтому подтверждение и обработка должны быть действительно разделены.

Как устранять повторы

Всегда используйте wamid, потому что повторные доставки обычны, а не исключительны.

Одно и то же сообщение может прийти дважды по причинам, не связанным с ошибкой на вашей стороне: медленный ответ, сетевой тайм-аут или развёртывание во время доставки. Хранить уже полученные идентификаторы и пропускать повторы можно за несколько строк. Это отличает один ответ клиенту от двух.

На номере Coexistence это особенно важно, поскольку smb_message_echoes приходит по тому же пути. Если обработчик считает каждое событие новым, он ответит поверх сотрудника, который уже ответил вручную.

Распространённые ошибки

  • Обработка до возврата 200. Meta повторит медленный запрос, и вы обработаете сообщение дважды.
  • Отсутствие устранения повторов. Повторные доставки предусмотрены системой, это не редкий крайний случай.
  • Ожидание байтов медиафайла в полезной нагрузке. В ней передаётся media id, с помощью которого файл нужно получить.
Настройка с EasyCoexistence

EasyCoexistence передаёт это поле напрямую от Meta на ваш эндпоинт и сохраняет только рабочие события, на которых строится мониторинг. Поэтому содержимое переписки никак не попадает в наше хранилище.

Часто задаваемые вопросы

Видит ли EasyCoexistence сообщения моих клиентов?

Нет. Переопределение доставляет это поле на ваш эндпоинт. Всё, что попадает в наш резервный callback, удаляется без сохранения.

Могут ли несколько сообщений прийти в одном запросе?

Да. Одна доставка может содержать несколько сообщений, поэтому обработчик должен перебрать их все, а не читать только первое.

Как получить медиафайл?

В полезной нагрузке есть media id. Получите с его помощью URL, используя токен доступа номера, затем скачайте файл.

Что такое smb_message_echoes?

Это сопутствующее поле, которое передаёт сообщения, отправленные вашей командой из приложения WhatsApp Business. Оно существует только на номерах Coexistence.

Читайте дальше

Готовы начать?

Настройте WhatsApp Coexistence за несколько минут, а не месяцев. Приложение продолжит работать на телефоне.

Начать бесплатный пробный период

Проверено по состоянию на

Вебхук messages: входящие сообщения