Создание конечной точки веб-перехватчика | Документация для разработчиков
Создайте конечную точку веб-перехватчика
Обновлено: 7 ноября 2025 г
Изучите запросы и ответы веб-перехватчиков, чтобы настроить собственную конечную точку веб-перехватчика на общедоступном сервере.
Прежде чем использовать ваше приложение в производственной среде, необходимо создать и настроить собственную конечную точку веб-перехватчика на общедоступном сервере, который может принимать и обрабатывать запросы GET и POST, а также проверять и перехватывать данные веб-перехватчика.
TLS/SSL
На сервере конечной точки веб-перехватчика должен быть установлен и правильно настроен цифровой сертификат безопасности TLS или SSL. Самоподписанные сертификаты не поддерживаются.
mTLS
Webhooks support mutual TLS (mTLS) for added security. See Graph APIAPIс mTLS for webhooks document to learn how to enable and use mTLS.
Обратите внимание, что включение и отключение mTLS не поддерживается на уровне WABA или номера корпоративного телефона. Если к платформе обращается более одного приложения, вам потребуется включить mTLS для каждого приложения.
GET-запросы
GET-запросы используются для проверки вашей конечной точки веб-перехватчика. Каждый раз, когда вы устанавливаете или редактируете «URL-адрес обратного вызова» или поле «Проверить токен» на панели управления приложения, Meta отправляет GET-запрос на вашу конечную точку веб-перехватчика. Вы должны проверить этот запрос и ответить на него.
Запрос
синтаксис
ПОЛУЧАТЬ<CALLBACK_URL> ?hub.mode=subscribe &hub.challenge=<HUB.CHALLENGE> &hub.verify_token=<HUB.VERIFY_TOKEN>
Параметры запроса
<CALLBACK_URL>URL-адрес конечной точки вашего веб-перехватчика.
Добавьте этот URL-адрес в «URL-адрес обратного вызова» на панели управления приложения при настройке веб-хуков .
https://www.luckyshrub.com/webhooks<HUB.CHALLENGE>Случайная строка, сгенерированная Meta.
1158201444<HUB.VERIFY_TOKEN>Вы можете выбрать любую строку подтверждения. Сохраните эту строку на своем сервере.
Добавьте эту строку в «Проверить токен» на панели управления приложения при настройке веб-хуков .
вибекодированиеПроверка
Для проверки GET-запросов сравните
hub.verify_token в запросе со строкой подтверждения, хранящейся на вашем сервере. Если значения совпадают, запрос считается действительным, в противном случае — недействительным.Ответ
Если запрос действителен, ответьте HTTP-статусом
200 и hub.challenge . Если запрос недействителен, ответьте HTTP-статусом уровня 400 или любым другим значением, кроме статуса 200 .При настройке веб-хуков Meta отправит GET-запрос на вашу конечную точку веб-хука. Если запрос вернет статус
200 и hub.challenge , Meta посчитает вашу конечную точку веб-хука проверенной и начнет отправлять вам веб-хуки. Однако если ваша конечная точка веб-хука ответит чем-либо другим, Meta посчитает вашу конечную точку веб-хука непроверенной, и веб-хуки на вашу конечную точку отправляться не будут.POST-запросы
При каждом срабатывании события веб-перехватчика для любого из полей веб-перехватчика, на которые вы подписаны, на вашу конечную точку веб-перехватчика будет отправлен POST-запрос, содержащий JSON-данные, описывающие событие.
Запрос
синтаксис
ПОЧТА<CALLBACK_URL> Content-Type: application/json X-Hub-Signature-256: sha256=<SHA256_PAYLOAD_HASH> Длина контента:<CONTENT_LENGTH><JSON_PAYLOAD>
Параметры запроса
<CALLBACK_URL>URL-адрес конечной точки вашего веб-перехватчика.
https://www.luckyshrub.com/webhooks<CONTENT_LENGTH>Длина содержимого в байтах.
492<JSON_PAYLOAD>Содержимое тела сообщения, отформатированное в формате JSON.
Примеры полезных нагрузок см «Поля»
<SHA256_PAYLOAD_HASH>Хэш HMAC-SHA256, вычисленный с использованием содержимого тела сообщения и секретного ключа приложения
b63bb356dff0f1c24379efea2d6ef0b2e2040853339d1bcf13f9018790b1f7d2Проверка
Для подтверждения запроса:
Сгенерируйте хеш HMAC-SHA256, используя JSON-данные в качестве входных данных сообщения и секретный ключ вашего приложения в качестве секретного ключа. Сравните сгенерированный хеш с хешем, присвоенным
X-Hub-Signature-256 (все, что находится после sha256= ).Если хеши совпадают, полезная нагрузка действительна. Захватите полезную нагрузку и обработайте её содержимое в соответствии с потребностями бизнеса. Если они не совпадают, считайте полезную нагрузку недействительной.
Обратите внимание, что мы не предоставляем API для получения исторических данных веб-хуков, поэтому собирайте и сохраняйте данные веб-хуков соответствующим образом.
Ответ
Если запрос действителен, ответьте HTTP-статусом 200. В противном случае ответьте HTTP-статусом уровня 400 или любым другим статусом, кроме 200.
Группировка
POST-запросы объединяются и отправляются пакетом, содержащим максимум 1000 обновлений. Однако гарантировать пакетную обработку невозможно, поэтому обязательно настройте свои серверы для обработки каждого POST-запроса индивидуально.
Если какой-либо POST-запрос, отправленный на ваш сервер, не удастся выполнить, мы немедленно повторим попытку, а затем попробуем еще несколько раз с уменьшающейся частотой в течение следующих 36 часов. В таких случаях ваш сервер должен обрабатывать дедупликацию.
Ответы, на которые не будет получено подтверждение, будут удалены через 36 часов.
Настройка веб-хуков
После создания конечной точки веб-перехватчика перейдите в Панель управления приложениями > WhatsApp > конфигурации и добавьте URL-адрес конечной точки веб-перехватчика в «URL-адрес обратного вызова» , а строку подтверждения — в «Подтверждение токена» .
Обратите внимание, что если вы создали приложение, используя взаимодействия с клиентами через WhatsApp , перейдите в Панель управления приложениями > Сценарии использования > Настройка > Конфигурация .

Если ваша конечная точка веб-перехватчика корректно отвечает на GET-запросы проверки веб-перехватчика, панель сохранит ваши изменения, и появится список полей, на которые вы можете подписаться. Затем вы можете подписаться на любые поля , которые соответствуют вашим бизнес-потребностям.
Note that you can use the POST Application Subscriptions endpoint to configure webhooks as an alternative method, but it requires the use of an app token. See Graph APIAPIс Subscriptions edge document to learn how to do this, and use whatsapp_business_account as the object value.