(Реализация Webhooks с помощью Node.js)
Webhooks позволяют в режиме реального времени получать уведомления HTTP об изменениях определенных объектов. Например, мы можем отправить уведомление о том, что пользователь отправляет вам сообщение, или о том, что статус шаблона изменился. Это избавит вас от необходимости запрашивать наши API об изменениях объектов, которые могли произойти, а могли и не произойти, а также поможет вам избежать превышения ограничения числа обращений.
Этот документ содержит обзор Webhooks и способов их применения в WhatsApp Business Management API, облачном API платформы WhatsApp Business и локальном API платформы WhatsApp Business.
Каждый API может иметь несколько типов объектов, поэтому при настройке Webhooks необходимо сначала выбрать тип объекта. Поскольку у разных объектов разные поля, после этого необходимо подписаться на конкретные поля для этого типа объекта. Вы будете получать уведомления об изменении значений во всех полях, на которые подпишетесь.
Отправляемые уведомления имеют формат HTTP-запросов POST и содержат полезные данные JSON, описывающие изменение.
В таблице ниже приведена информация, которую вы можете получать от Webhooks.
API | Объекты |
---|---|
Облачный API |
|
Локальный API |
|
WhatsApp Business Management API |
|
Ниже приведены примеры уведомлений Webhooks, которые вы получаете, когда пользователь отправляет вам текстовое сообщение.
Объектом облачного API всегда является whatsapp_business_account
, при этом field
всегда определяет тип отправляемой информации.
{ "object": "whatsapp_business_account", "entry": [{ "id": "WHATSAPP_BUSINESS_ACCOUNT_ID", "changes": [{ "value": { "messaging_product": "whatsapp", "metadata": { "display_phone_number": PHONE_NUMBER, "phone_number_id": PHONE_NUMBER_ID }, "contacts": [{ "profile": { "name": "NAME" }, "wa_id": PHONE_NUMBER }], "messages": [{ "from": PHONE_NUMBER, "id": "wamid.ID", "timestamp": TIMESTAMP, "text": { "body": "MESSAGE_BODY" }, "type": "text" }] }, "field": "messages" }] }] }
В случае локального API объектами являются contacts
и messages
, errors
или statuses
и pricing
, так как Webhooks отправляет клиент, а не Meta.
{ "contacts": [{ "profile": { "name": "NAME" }, "wa_id": "WHATSAPP_BUSINESS_ACCOUNT_ID" }], "messages":[{ "from": "PHONE_NUMBER", "id": "wamid.ID", "timestamp": "TIMESTAMP", "text": { "body": "MESSAGE_BODY" }, "type": "text" }] }
Все Webhooks отправляются по HTTPS, поэтому ваш сервер должен иметь возможность получать и обрабатывать запросы HTTPS и иметь действительный сертификат TLS/SSL. Самозаверенные сертификаты не поддерживаются.
Подробнее о Webhooks для конкретных API.