Что это такое
Webhook — это HTTPS-запросы, которые YCloud отправляет вашему приложению при изменении статуса доставки сообщений, входящих сообщений, контактов, шаблонов, звонков и других ресурсов.Перед началом работы
- Сохраните свой API-ключ YCloud в
YCLOUD_API_KEY. - Разверните общедоступную конечную точку HTTPS.
- Сохраняйте необработанное тело запроса (raw request body) для проверки подписи.
- Определите, какие типы событий требуются вашему приложению.
Как это работает
- Создайте конечную точку Webhook и подпишите её на типы событий.
- Сохраните возвращенный
secretконечной точки. - YCloud отправляет запрос события на вашу конечную точку.
- Проверьте
YCloud-Signature, прежде чем доверять запросу. - Своевременно верните ответ
2xx. - Обрабатывайте событие идемпотентно, так как доставка может повторяться.
Запрос
Создайте конечную точку с помощьюPOST /webhookEndpoints.
Поля запроса
Пример запроса
Подписка на события echo и handover
Для агентов, подключенных через общедоступный REST API, создайте конечную точку со следующими подписками. Агенты, созданные в консоли, не генерируют эти три события. Чтобы изменить существующую конечную точку, сохраните подписки на события, которые вам всё ещё нужны.whatsappMessage в формате сообщения. Событие handover передает whatsappMetaBusinessAgent и сохраняет информацию об агенте/управлении. Они не используют формат whatsapp.smb.message.echoes приложения WhatsApp Business. См. подробности о событиях echo и handover для определений полей, примеров, порядка и ограничений корреляции handover.
Ответ
В ответе возвращаются созданная конечная точка и её секрет подписиsecret. Храните секрет в безопасности. YCloud использует его для создания подписей Webhook.
Пример ответа
Поля ответа
Получение событий
Запрос события
YCloud отправляет объект события JSON на настроенныйurl. Событие содержит общие поля, такие как id, type, apiVersion и createTime, а также полезную нагрузку, зависящую от типа события.
Ваш обработчик должен:
- Считывать необработанное тело запроса.
- Проверять заголовок
YCloud-Signatureс помощью секрета конечной точки перед обработкой полезной нагрузки. - Своевременно возвращать успешный ответ
2xx. - Переносить длительную обработку в очередь.
- Обеспечивать идемпотентность обработки событий, чтобы повторная доставка не дублировала бизнес-действия.
Ответ приемника
Возвращайте успешный HTTP-ответ2xx, как только подпись и запрос будут приняты. Тело ответа может быть пустым.
2xx, может привести к повторной отправке события со стороны YCloud, поэтому выполняйте дедупликацию по id события.
Примеры распространенных полезных нагрузок
Разверните событие, чтобы просмотреть полный пример его полезной нагрузки. Эти примеры взяты из спецификации Webhook OpenAPI. См. все примеры полезных нагрузок Webhook для каждого поддерживаемого типа события.Событие изменения атрибутов контакта
Событие изменения атрибутов контакта
Пример полезной нагрузки при изменении атрибутов контакта
Событие создания контакта
Событие создания контакта
Пример полезной нагрузки при создании нового контакта
Событие удаления контакта
Событие удаления контакта
Пример полезной нагрузки при удалении контакта
Событие отмены подписки клиентом
Событие отмены подписки клиентом
Пример полезной нагрузки при отмене подписки клиентом
Клиент возобновляет подписку
Клиент возобновляет подписку
Пример полезной нагрузки при возобновлении клиентом подписки
Событие архивации шаблона WhatsApp
Событие архивации шаблона WhatsApp
Пример полезной нагрузки при архивации шаблона WhatsApp
Событие разархивации шаблона WhatsApp
Событие разархивации шаблона WhatsApp
Пример полезной нагрузки при разархивации шаблона WhatsApp. Статус шаблона отражает текущий статус, возвращенный Meta, и не указывает на повторную модерацию.
Событие соединения звонка WhatsApp
Событие соединения звонка WhatsApp
Пример полезной нагрузки при соединении звонка WhatsApp
Событие завершения звонка WhatsApp
Событие завершения звонка WhatsApp
Пример полезной нагрузки при завершении звонка WhatsApp
Событие обновления статуса звонка WhatsApp
Событие обновления статуса звонка WhatsApp
Пример полезной нагрузки при обновлении статуса звонка WhatsApp
Event и интерактивного справочника полезной нагрузки.
Ротация секрета эндпоинта
Выполняйте ротацию секрета в случае его компрометации или в соответствии с вашей политикой безопасности:Эндпоинт, который неоднократно не может принять уведомления, может перейти в статус
pending и перестать получать события. Отслеживайте сбои webhook и статус эндпоинта.
