Получение уведомлений через Webhook Endpoint#
Технология Webhook Endpoint позволяет выполнять получение входящих уведомлений непосредственно на ваш сервер. Это означает, что сервер GreenWaba будет выполнять вызов метода, опубликованного на стороне вашего сервера. Преимуществами данной технологии является максимально быстрое получение входящих уведомлений и высокая пропускная способность, ограниченная только скоростью обработки уведомлений на стороне вашего сервера. К недостаткам можно отнести сложность реализации.
Сервер GreenWaba выполняет попытки доставки уведомлений с интервалом в 1 минуту. Поэтому, настраивайте свой сервер таким образом, чтобы он всегда был доступен для обработки входящих уведомлений, либо воспользуйтесь технологией Получение уведомлений через HTTP API. Доставка входящих уведомлений гарантируется в течение 24 часов.
Настройка сервера#
Для получения входящих уведомлений по технологии Webhook Endpoint потребуется выполнить следующие шаги:
- опубликовать IP-адрес в Интернете
- реализовать логику обработки входящих уведомлений на указанный IP-адрес
- если требуется для сервера, то установить Webhook URL Token
Публичный IP-адрес#
Для получения входящих уведомлений требуется наличие публичного IP-адреса (endpoint), который будет доступен из сети Интернет. Таким образом сервер GreenWaba сможет выполнить вызов вашего сервера по указанному адресу и передать входящее уведомление.
Наши публичные IP-адреса, с которых отправляются уведомления#
Вы можете указать следующие IP адреса, с которых приходят уведомления от нас, в настройках безопасности вашего сервера:
51.250.84.44
51.250.94.65
51.250.91.13
51.250.93.251
51.250.76.115
51.250.69.65
51.250.68.181
51.250.69.45
51.250.74.200
51.250.87.205
51.250.89.177
64.226.125.75
158.160.49.84
Обработка входящих уведомлений#
Настройка аккаунта#
Перед получением входящих уведомлений требуется выполнить настройку аккаунта. Настройка аккаунта может быть выполнена программно с использованием метода SetSettings, либо интерактивно в интерфейсе личного кабинета.
Настройка методом SetSettings#
Для настройки получения входящих уведомлений по технологии Webhook Endpoint требуется указать в качестве параметра webhookUrl
значение вашего IP-адреса или вашего доменного имени, и, если необходимо, webhookUrlToken
для доступа на ваш сервер. Например:
https://84.211.100.201:3000/greenwaba/webhook/
Также требуется указать какие виды уведомлений необходимо получать. Для включения входящих уведомлений по видам, а также для указания параметра webhookUrl
и webhookUrlToken
воспользуйтесь методом SetSettings.
Пример тела запроса метода SetSettings#
{
"outgoingWebhook": "yes",
"incomingWebhook": "yes"
}
Настройка в личном кабинете#
Настройку получения входящих уведомлений можно также выполнить интерактивно. Для этого перейдите в Личный кабинет и выберите требуемый аккаунт. Если аккаунт авторизован, то будут отображены настройки для получения входящих уведомлений см. рис. Укажите значение параметра webhookUrl
, а также переключатели по видам уведомлений и, если необходима авторизация на вашем вебхук сервере, Webhook URL Token. Если аккаунт не авторизован и настройки уведомлений не отображаются, обратитесь к разделу Перед началом работы.
Примечание
Поддерживаемые типы авторизации Bearer, Basic.
При использовании Basic авторизации требуется передавать в поле webhookUrlToken
строку вида:
Basic AuthToken
При использовании Bearer авторизации требуется передавать в поле webhookUrlToken
только токен авторизации AuthToken
.
Отладка входящих уведомлений#
Для отладки входящих уведомлений можно использовать любой бесплатный сервис в Интернет, например сервис webhook.site. Сервис выдает уникальный адрес (URL), который требуется установить в качестве значения параметра webhookUrl
.
Подробное описание формата входящих уведомлений представлено в разделе Формат входящих уведомлений.
Пример запроса, который отправляет greenwaba
curl --request POST 'your-webhook-url-address' \
--header 'Content-Type: application/json; charset=utf-8' \
--data-raw '{"typeWebhook":"statusInstanceChanged","instanceData":{"idInstance":000001,"wid":"7123456789@c.us","typeInstance":"whatsapp"},"timestamp":1654553712,"statusInstance":"online"}'