Интеграция вебхуков - полное руководство по HTTP-триггерам

Интеграция вебхуков Echobell: HTTP-методы, переменные, шаблоны, заголовки и практические примеры для мгновенных уведомлений на телефон.


Вебхуки — самый универсальный способ запускать уведомления Echobell. В этом подробном руководстве собрано всё, что нужно знать о встраивании оповещений по вебхукам в ваши системы: от базовых понятий до продвинутых сценариев использования.

Что такое вебхук

Вебхук — это способ для одного приложения передавать другим приложениям информацию в реальном времени через HTTP-вызовы. Считайте его номером телефона, который вы кому-то даёте: когда по этому номеру звонят, ваш телефон звонит. В цифровом мире, когда в одной системе что-то происходит (высокая загрузка CPU, упавшая сборка, новый заказ), она отправляет HTTP-запрос на предоставленный вами URL (вебхук), и это запускает действие в вашей системе.

Например, когда загрузка CPU вашего сервера становится слишком высокой, система мониторинга может обратиться к URL вебхука Echobell, а тот запустит уведомление, чтобы вас предупредить. Это происходит автоматически и в реальном времени, без того чтобы вы сами постоянно следили за загрузкой CPU.

Вебхуки — основа событийно-ориентированных архитектур; их поддерживают практически все современные облачные сервисы, инструменты мониторинга и SaaS-платформы. Они легковесны, быстры и не требуют от вас никакой особой инфраструктуры — достаточно HTTP-клиента.

Преимущества вебхуков

  • Реальное время: события запускают уведомления мгновенно, обычно за 1–2 секунды
  • Универсальность: поддерживаются почти всеми современными сервисами и языками программирования
  • Гибкость: передавайте свои данные, чтобы получать содержательные уведомления с контекстом
  • Надёжность: работают поверх HTTP, со стандартными кодами статуса и обработкой ошибок
  • Масштабируемость: опрос не нужен — уведомления отправляются только тогда, когда происходят события

Обзор

Для каждого канала Echobell можно настроить уникальный URL вебхука. Когда к этому URL обращаются, канал отправляет уведомления всем своим подписчикам на основе заданных шаблонов уведомлений и переданных переменных.

Формат URL вебхука

https://hook.echobell.one/t/{channel-token}

URL вебхука своего канала вы найдёте в подробностях канала в приложении Echobell.

Отправка запросов к вебхуку

Вебхуки Echobell поддерживают методы GET и POST:

GET-запрос

Переменные можно передавать через параметры строки запроса:

GET https://hook.echobell.one/t/<channel-token>?server_name=Production&cpu_usage=95

POST-запрос

В POST-запросах переменные передаются в теле JSON:

POST https://hook.echobell.one/t/<channel-token>
Content-Type: application/json

{
  "server_name": "Production",
  "cpu_usage": 95
}

Только POST

У каждого канала в приложении Echobell есть переключатель Только POST в разделе Расширенные настройки. По умолчанию он выключен.

Когда он включён, запустить канал можно только запросом POST. Запрос GET к URL вебхука отклоняется с 405 Method Not Allowed, и уведомление не отправляется:

{
  "success": false,
  "notificationTriggered": false,
  "message": "This trigger only accepts POST requests; GET triggering is disabled in its settings."
}

Запросов HEAD это не касается: они отвечают 200 и никогда не запускают уведомление независимо от того, включена настройка «Только POST» или нет.

Включайте её, когда URL вебхука попадает туда, где ссылки подгружаются автоматически, — в сообщение чата, на вики-страницу, в адресную строку браузера, — чтобы предпросмотр или открытие URL не могли поднять оповещение. Оставьте её выключенной, если кто-то из ваших вызывающих сторон запускает канал запросом GET.

Специальные переменные

Echobell поддерживает специальную переменную, которая добавляет уведомлениям возможности:

  • externalLink: если передать её в запросе, в списке записей уведомлений появится кликабельная ссылка. Удобно, чтобы вести к подробностям или связанным ресурсам.

Пример с внешней ссылкой:

POST https://hook.echobell.one/t/<channel-token>
Content-Type: application/json

{
  "server_name": "Production",
  "cpu_usage": 95,
  "externalLink": "https://dashboard.example.com/alerts/123"
}

Переменные шаблона

Переменные, переданные через вебхук, можно использовать в шаблонах уведомлений с помощью синтаксиса {{variableName}}:

Title: Server {{server_name}} Alert
Body: CPU usage has reached {{cpu_usage}}%

При запуске такие шаблоны заполняются значениями, переданными в вашем запросе к вебхуку.

Системные переменные времени (UTC)

Помимо данных, которые вы отправляете, Echobell предоставляет системные переменные времени только для чтения — они всегда доступны в шаблонах и условиях. Все значения вычисляются в UTC. Плоские поля: date, time, year, month, dayOfWeek, hour, minute и second. Остальные — такие как sys.dayOfWeekName, sys.epochMs и sys.epochSeconds — доступны только в пространстве имён sys.. Полный список и примеры см. в разделе Условия.

Частые сценарии использования

Вебхуки — самый популярный способ запуска в Echobell, и особенно они полезны для:

DevOps и мониторинг

  • Мониторинг серверов: оповещения о загрузке CPU, памяти и диска из систем мониторинга вроде Prometheus или Grafana
  • Мониторинг доступности: оповещения о доступности сайтов и сервисов из Uptime Kuma или UptimeRobot
  • Мониторинг контейнеров: сбои Docker, падения подов Kubernetes и нехватка ресурсов
  • Агрегация логов: критические ошибки и исключения из систем управления логами

Разработка и CI/CD

  • Уведомления о сборках: упавшие сборки, результаты тестов, статус развёртывания из GitHub Actions или GitLab CI
  • Качество кода: ошибки линтера, уязвимости, изменения покрытия тестами
  • События репозитория: пул-реквесты, коммиты, релизы и активность соавторов
  • Отслеживание развёртываний: успешные деплои, откаты и изменения окружений

Бизнес-приложения

  • Электронная коммерция: новые заказы, подтверждения оплаты, предупреждения об остатках, статусы доставки
  • CRM: новые лиды, закрытые сделки, обращения в поддержку, взаимодействия с клиентами
  • Обработка платежей: завершённые транзакции, запросы на возврат, оповещения о мошенничестве
  • Отправка форм: формы обратной связи, ответы на опросы, завершённые регистрации

IoT и умный дом

  • События умного дома: датчики дверей, детекция движения, изменения температуры через Home Assistant
  • IoT-устройства: показания датчиков, изменения статуса устройств, проблемы со связью
  • Системы безопасности: срабатывания сигнализации, движение в кадре камеры, события контроля доступа
  • Мониторинг среды: превышение порогов по температуре, влажности и качеству воздуха

Трейдинг и финансы

  • Рыночные оповещения: движения цен, технические индикаторы из TradingView
  • Мониторинг портфеля: изменения позиций, маржин-коллы, остатки на счетах
  • Экономические события: выход новостей, отчёты о прибыли, изменения настроений рынка

Инструкции по настройке для популярных платформ — в наших руководствах по интеграциям.

Рекомендации

Обработка ошибок

Не полагайтесь только на HTTP-статус — всегда разбирайте тело JSON-ответа и проверяйте поле success:

  • 200 OK: запрос получен. Проверьте тело JSON: success: true означает, что канал был запущен, а success: false — что запрос принят, но уведомление не отправлено (например, при неизвестном токене канала, который тоже возвращает HTTP 200).
  • 400 Bad Request: неверная длина токена канала. Исправьте URL вебхука.
  • 405 Method Not Allowed: у канала включена настройка Только POST, а запрос был не POST. Переведите вызывающую сторону на POST или отключите настройку.
  • 500 Server Error: временная проблема, повторите запрос с экспоненциальной задержкой

Echobell не ограничивает частоту вызовов вебхуков, поэтому ответа 429 не бывает. Поскольку неизвестный (но корректной длины) токен всё равно возвращает 200 с success: false, всегда ветвите логику по полю success в JSON, а не по HTTP-статусу.

Ограничение частоты

Делайте разумные паузы между вызовами вебхука, чтобы не перегружать свою систему уведомлений:

  • Для непрерывного мониторинга объединяйте несколько событий в одно уведомление
  • Используйте условия, чтобы отсеивать некритичные события
  • Подумайте об агрегации событий, идущих подряд (например, нескольких ошибок за короткое время)
  • Не отправляйте подряд одинаковые триггеры — так критичные оповещения останутся надёжными

Безопасность данных

Делитесь URL вебхуков только с доверенными системами и сервисами:

  • Относитесь к URL вебхуков как к секретам — они дают прямую возможность отправлять уведомления
  • Не коммитьте URL вебхуков в публичные репозитории и не публикуйте их в открытой документации
  • Периодически меняйте URL вебхуков, а также когда кто-то уходит из команды
  • Используйте функцию канала «Сбросить токен», чтобы обесценить старые URL, если они скомпрометированы
  • Храните URL в переменных окружения или в системах управления секретами

Именование переменных

Используйте понятные и единообразные имена переменных в вызовах вебхука:

  • Давайте описательные имена: server_name вместо s или srv
  • Придерживайтесь единого соглашения об именовании во всех каналах
  • Документируйте, какие переменные ожидают ваши шаблоны
  • Перед отправкой проверяйте, что переданы все обязательные переменные

Тестирование

Тщательно протестируйте интеграцию с вебхуком, прежде чем запускать её в продакшене:

  1. Для первых проверок используйте curl, Postman или HTTP-клиент вашего языка
  2. Начните с простых шаблонов и постепенно усложняйте их
  3. Проверьте оба метода, GET и POST, чтобы понять, какой подходит лучше
  4. Убедитесь, что специальные символы и Unicode обрабатываются правильно
  5. Проверьте сценарии с ошибками (пропущенные переменные, некорректный JSON), чтобы понимать поведение
  6. Во время разработки используйте тестовые каналы, отдельные от рабочих

Проектирование шаблонов

Проектируйте шаблоны так, чтобы они оставались полезными и без необязательных переменных:

  • Задавайте значения по умолчанию или запасные варианты для необязательных данных
  • Стройте шаблоны так, чтобы они аккуратно переживали отсутствие переменных
  • Тестируйте шаблоны с разными сочетаниями присутствующих и отсутствующих переменных
  • Для необязательных частей используйте условные выражения

Мониторинг

Следите за своими интеграциями с вебхуками, чтобы убедиться, что они работают правильно:

  • Логируйте успешные и неудачные вызовы вебхука в своём приложении
  • Отслеживайте долю доставленных уведомлений и время ответа
  • Настройте оповещения об ошибках вебхуков и о нетипичном поведении
  • Периодически пересматривайте и проверяйте критичные интеграции

Конфиденциальность и безопасность

Как Echobell обращается с данными ваших вебхуков:

Что сохраняется

  • На наших серверах:

    • URL вебхуков (токены) — нужны, чтобы направлять входящие запросы в каналы
    • Настройки каналов — шаблоны, условия, параметры
    • Связи подписок — какие пользователи подписаны на какие каналы
  • На вашем устройстве:

    • Содержимое уведомлений — готовые заголовок и текст
    • История запусков — когда уведомления были получены
    • Значения переменных — данные, переданные в вызовах вебхука
    • Ссылки и метаданные — externalLink и другие связанные данные

Что не сохраняется

  • Мы не храним исходные полезные нагрузки вебхуков на постоянной основе
  • Мы не логируем и не удерживаем чувствительные данные из ваших запросов
  • Мы не анализируем и не обрабатываем содержимое уведомлений ни для каких целей
  • Мы не передаём данные ваших вебхуков третьим лицам

Рекомендации по безопасности

  • Относитесь к URL вебхуков как к API-ключам — они дают возможность отправлять уведомления без аутентификации
  • Регулярно меняйте URL — используйте функцию «Сбросить токен», чтобы получить новые
  • Используйте HTTPS-клиенты — мы принимаем только HTTPS-соединения, но убедитесь, что ваш клиент проверяет сертификаты
  • Проверяйте источники вызовов — по возможности ограничьте, какие IP-адреса или сервисы могут обращаться к вашим вебхукам
  • Следите за злоупотреблениями — обращайте внимание на нетипичные всплески и несанкционированное использование
  • Разделяйте окружения — используйте разные каналы для разработки, тестирования и продакшена

Подробнее — в нашей документации по поддержке.

Устранение неполадок

Если вебхуки работают не так, как вы ожидаете, попробуйте эти шаги диагностики:

Вебхук не запускает уведомления

  1. Проверьте, что URL вебхука верный

    • Скопируйте URL прямо из приложения Echobell
    • Убедитесь, что не добавились лишние пробелы или символы
    • Проверьте, что вы используете https://hook.echobell.one/t/, а не другой домен
  2. Проверьте, активен ли канал

    • Откройте канал в приложении Echobell
    • Убедитесь, что он не удалён и не архивирован
    • Проверьте, что вы не сбрасывали токен вебхука (это делает старый URL недействительным)
  3. Убедитесь, что тело JSON оформлено корректно (для POST-запросов)

    • Проверьте полезную нагрузку валидатором JSON
    • Убедитесь, что строки заключены в кавычки
    • Проверьте, что заголовок Content-Type установлен в application/json
  4. Убедитесь, что переданы все переменные, которые нужны вашим шаблонам

    • Посмотрите в шаблонах уведомлений, какие переменные они используют
    • Проверьте, что эти переменные есть в запросе к вебхуку (в параметрах строки запроса или в теле JSON)
    • Помните: отсутствующие переменные подставляются как пустые строки
  5. Проверьте, есть ли у канала активные подписчики

    • Уведомления отправляются, только если кто-то подписан на канал
    • Проверьте свою подписку в списке каналов в приложении
    • Убедитесь, что подписки не были случайно удалены

Уведомления отображаются неправильно

  1. Имена переменных не совпадают

    • В шаблоне используется {{server_name}}, а вебхук отправляет serverName
    • Имена переменных чувствительны к регистру и должны совпадать точно
    • Проверьте, нет ли опечаток в именах переменных
  2. Вложенные данные недоступны

    • Используйте точечную нотацию: {{user.name}} — или скобочную: {{user["name"]}}
    • Проверьте, что структура вашего JSON соответствует ожиданиям шаблона
    • Сначала попробуйте простые плоские переменные, затем добавляйте вложенность
  3. Проблемы из-за специальных символов

    • Корректно кодируйте параметры строки запроса
    • Экранируйте специальные символы JSON в телах POST-запросов
    • Сначала проверьте на простом ASCII-тексте

Тестирование интеграции

Проверьте вебхук напрямую с помощью curl:

# Test with query parameters
curl "https://hook.echobell.one/t/<channel-token>?test=hello&status=working"

# Test with JSON body
curl -X POST https://hook.echobell.one/t/<channel-token> \
  -H "Content-Type: application/json" \
  -d '{"test": "hello", "status": "working"}'

Если всё настроено правильно, уведомление придёт сразу.

Проблема осталась?

Если вы прошли шаги выше, а проблема сохраняется:

  • Загляните в центр поддержки за дополнительными руководствами по диагностике
  • Проверьте, нет ли известных проблем или сообщений о статусе сервиса
  • Напишите нам на echobell@weelone.com и приложите:
    • Описание проблемы
    • Шаги, которые вы уже попробовали
    • Пример URL вебхука (с удалённым или скрытым токеном)
    • Пример тела запроса
    • Ожидаемое и фактическое поведение

Дальнейшие шаги

Теперь, когда вы разобрались с интеграцией вебхуков:

Готовы подключить Echobell к своим системам? Создайте первый канал и начните получать мгновенные уведомления.