Webhook – это особый механизм, который отправляет по веб сервису сообщения о любых изменениях или событиях. Причем это делается в режиме реального времени, по принципу “обратного звонка”. Издатель уведомляет подписчика о том, что произошло изменение, отправляя при этом HTTP запрос.

Основные виды вебхуков:
- изменение статуса заказа. Например, “собирается”, “выезжает”, “в пути”, “прибыл” и так далее. Сюда же можно отнести и сведения об оплате заказа;
- изменение события. Есть вебхуки, которые следят за статусами регистрации пользователей и за их изменениями;
- обновление статуса видео.
Вебхуки применяются в разных сферах. Самое главное, чтобы там нужна была автоматизация:
- электронная коммерция. С помощью механизма можно получить информацию о возврате, поступлении заказа, обновлениях;
- маркетинг. Webhook прекрасно взаимодействует с другими системами, например, для отправки рассылок клиентам о статусе заказа;
- аналитика и все, что с этим связано;
- мониторинг возможных сбоев, уведомления об ошибках и многое другое.
Есть и некоторые ограничения. Например, вебхук принимает данные, но не может их изменять, удалять, обновлять и так далее. также невозможно отправить полученные сведения обратно: это не предусмотрено в системе.
Чем отличается Webhook от API
Главное отличие заключается в подходе к обмену данными.
Особенности работы вебхука:
- сервер сам отправляет клиенту все сведения о событии;
- данные обновляются автоматически в режиме реального времени;
- нагрузка на сервер минимальная. Это обусловлено тем, что запросы поступают не всегда, но лишь при необходимости;
- строгий контроль данных. Что, как и когда отправляет определяется непосредственно самим сервером.
API представляет собой набор определенных правил. То есть, какие приложения могут передавать данные, какие – использовать системные функции, какие – получать ответы и так далее. Здесь принцип работы такой: клиент отправляет запрос на сервер, далее проводится проверка запрашиваемой информации. Когда все обрабатывается, то присылается ответ. В нем содержатся либо запрошенные сведения, либо сообщение об ошибке, если запрос был некорректным.
API применяются в тех случаях, когда нужно выполнить определенное действие или получить данные. Если же требуется так называемая оперативная передача, то здесь лучше использовать вебхуки.
При этом нельзя сказать, что Webhook и API – это противоположности. Наоборот, вебхук, как правило, является одной из направленностей API-возможностей сервиса.
Как работает Webhook
Он действует так: когда в одном из сервисов происходит важное событие, осуществляется автоматическая отправка сообщения для другого приложения. Благодаря этому можно оперативно и своевременно получать информацию, например, о поступлении заказа или о его оплате. Можно также обновлять данные или активировать рабочие цепочки.
Чтобы правильно настроить вебхук, необходимо:
- сделать генерацию URL. Для этого можно воспользоваться интеграционной онлайн-платформой;
- указать его в настройках отправителя. В основном это разделы Webhook или Callbacks”;
- настроить обработку данных.
Принцип работы вебхуков
Сначала проводится регистрация, то есть подписчик уведомляет, какие события важные, на что следует подписаться и о чем получать информацию. Далее имеет место триггер: когда происходит событие, тут же автоматически формируется запрос для подписчика и отправляется ему. Он получает запрос после предварительной обработки и отвечает (чтобы подтвердить получение). Если ответ не получен, можно повторить форму отправки. Но только сделать это можно лишь через конкретный временной интервал, не раньше.
Время ожидания ответа, как правило, ограничено (до 5 секунд).
Что стоит сделать при реализации вебхуков:
- использовать HTTPS для защиты данных. Это необходимо, прежде всего, для безопасности, чтобы информация не была перехвачена злоумышленниками;
- мониторить запросы. Это делается для быстрого обнаружения возможной подозрительной активности;
- ограничивать частоту запросов в течение определенного периода;
- проверять все входящие запросы.
В некоторых случаях стоит ограничить доступ к вебхуку. Например, не отправлять их в групповые чаты.
Плюсы Webhook
К преимуществам стоит отнести:
- мгновенное получение обновленных данных. Приложения работают в режиме реального времени, поэтому нет необходимости постоянно отправлять запросы на сервер. Когда то-то меняется, уведомления поступают автоматически;
- экономия ресурсов и сокращение трафика за счет отсутствия регулярных запросов;
- возможность поддерживать разные типы событий. Это не только информация по заказам, но и, например, выполнение транзакции. Разработчики могут создавать системы, обладающие достаточной гибкостью и адаптацией к сценариям применения механизма;
- простые схемы обработки поступающих данных. Соответственно, уменьшается и количество программных кодов;
- обратная связь. То есть приложения подтверждают получение уведомлений и могут ими управлять (при необходимости);
- улучшение пользовательского опыта. Например, сюда можно отнести создание интерактивных приложений для интернет-пользователей. Удобно, когда люди получают уведомления о новых событиях на сайте, о получении сообщений на форуме или комментариев;
- понятные и простые интерфейсы для настройки.
Минусы Webhook
Первый и главный недостаток – это риск перехвата данных. Поскольку вебхук отправляется на публичный URL, то злоумышленники могут похитить сведения. Это может быть, например, перехват запроса или его подмена. Некоторые мошенники пересылают его несколько раз, таким образом, создается впечатление получения оригинального запроса. Но пользователь при этом его или не получает, или получает в измененном виде. Но самое опасное – это DDoS-атаки: когда сервер перегружается фейковыми запросами от бонетов. При таком раскладе сайт попросту перестает функционировать, поскольку система не успевает обработать миллионные запросы.
Еще один минус – это высокая нагрузка на сервер. То есть запросов может приходить больше, нежели система успевает их обработать. Здесь во многом есть и недостаток поставщиков вебхуков: они не могут контролировать процесс отправки запросов и их числа. Например, если имеет место какая-то акция или распродажа, то далеко не все серверы способны обработать все запросы от подписчиков. Уведомлений о новых заказах в таких ситуациях обычно очень много.
Другие минусы:
- ограничение на объем передаваемых данных;
- несовместимость форматов. Тут все зависит от конкретного сервиса и от того, какие форматы данных он использует;
- аутентификация. Если есть ошибки при проверке токенов, то запросы отклоняются;
- дублирование событий. То есть запросы обрабатываются несколько раз (одни и те же), в результате чего могут возникать сложности.
Как создать Webhook
Тут все зависит от сервиса, который используется.
GitHub
Вебхук тут настраивается на подписки на конкретные события:
- Перейти в настройки и найти “Вебхуки”.
- Нажать “Добавить вебхук”.
- Заполнить форму и указать URL-адрес получателя.
- Отметить события, на которые должны отправляться уведомления.
- Нажать “добавить вебхук”.
Обязательно следует отправить тестовый запрос. Это делается для проверки настроек.
amoCRM
Здесь вебхук создается так:
- Открыть меню настроек digital pipeline через раздел “Сделки и покупатели”.
- Выбрать “Добавить триггер”
- Нажать “API: отправить вебхук”.
- Выбрать событие, при котором надо отправлять уведомления.
- Ввести URL.
Discord
Как создать вебхук:
- Перейти в настройки сервера Discord.
- Открыть раздел “Интеграция” и “Создать вебхук”.
- Дать имя вебхуку и выбрать тот канал, куда должны будут отправляться уведомления.
- Скопировать URL вебхука и настроить его в приложении.
Telegram
Здесь речь идет об отправке обновлений от бота. Следовательно, надо настроить вебхук для Telegram-бота:
- Создать ота и получить его уникальный код (токен).
- Настроить сервер с публичным адресом. Туда и будут отправляться данные.
- Отправить запрос в Telegram Bot API, указав URL и токен.
- Отправит тестовое сообщение для бота. Это необходимо для проверки работы вебхука.
Помимо тестирования вебхук можно проверить и другими способами. Например, регулярный мониторинг или фиксация всех входящих запросов. Механизм автоматически настраивается на этот процесс. Можно также воспользоваться специализированными сервисами онлайн, которые отвечают за генерацию временных адресов. На них отправляются уведомления вебхука. То есть, по сути, создается сначала адрес, а потом тестовое событие, о котором и уведомляется подписчик. При таком раскладе удобно проверять корректность уведомлений. Для примера – проверить работоспособность механизма можно через сервис webhook.site. Здесь легко и быстро создается уникальный тестовый URL. Он указывается в вебхуке и сразу же начинает показывать входящие запросы в интерактивном формате.