Передайте событие в систему, которая должна на него отреагировать
После оплаты счета нужно обновить внутренний статус, после ошибки задачи — создать запись в вашей системе инцидентов. Webhook связывает эти действия через HTTP: Alert4Me принимает исходное событие, проверяет правило и отправляет POST на адрес вашего обработчика.
В приложении остается один контракт отправки событий. Получателей и условия доставки вы меняете правилами. Для одного типа события можно настроить отдельные правила: отправить сообщение команде в Telegram и передать данные в вашу систему через Webhook.
Как подключить Webhook-канал
- Подготовьте доступный по HTTPS обработчик, принимающий POST с JSON.
- Создайте Webhook-канал с адресом обработчика и настройте секрет подписи.
- Задайте правило по источнику и типу события, например billing и invoice.paid.
- Отправьте тестовое событие через CloudEvents API.
- Проверьте запрос на стороне получателя и попытку доставки в журнале Alert4Me.
Исходящие запросы защищены от SSRF: внутренние адреса не подходят для произвольной доставки. Поля payload и правила проверки подписи описаны в контракте Webhook-доставки.
Как принимать подписи и повторные запросы
Проверяйте HMAC-подпись до обработки данных. Не полагайтесь только на URL обработчика: знание адреса не доказывает, что запрос пришел от Alert4Me. Храните секрет на сервере, ограничьте доступ к нему и не записывайте его в логи.
Доставка может повторяться при ошибках. Обработчик должен быть идемпотентным: повтор одного события не должен дважды выдавать доступ или создавать повторный заказ. Сохраняйте идентификатор обработанного события и возвращайте успешный ответ после его надежного принятия.
Если ваш процесс занимает много времени, сначала надежно сохраните данные или поставьте задачу в собственную очередь. Ответьте на Webhook после этого, а длительную работу выполняйте отдельно.
Как понять, что уведомление доставлено
Ответ 202 от входящего API подтверждает прием исходного события. Результат исходящего POST — отдельный этап. В журнале доставки смотрите попытки, ошибки и повторные отправки. Если запроса нет, проверьте совпадение правила и доступность получателя.
Начните с тестового события без персональных данных, убедитесь в корректности подписи и повторной обработки, затем подключайте реальные операции поинструкции быстрого старта.