Справка и руководстваУведомления › Webhook в Slack, Discord и Teams

Webhook в Slack, Discord и Teams

4 мин чтения · Уведомления

Webhook (автоматическая отправка сообщения на заданный адрес) - это универсальный способ отправить уведомление в любое приложение: в Slack, Discord, Microsoft Teams или в вашу собственную систему. Подключение занимает пару минут, и ePulz.io автоматически форматирует сообщение под целевой сервис.

Поле webhook в настройках уведомлений
Адрес webhook вы вставляете в разделе Уведомления - тип сервиса (Slack, Discord, Teams) мы распознаём автоматически.

ePulz.io автоматически распознаёт тип целевого сервиса по адресу webhook. Мы распознаём: Slack (hooks.slack.com/services/...), Discord (discord.com/api/webhooks/... а также discordapp.com/api/webhooks/...), Microsoft Teams включая Power Automate / Workflows (*.webhook.office.com, outlook.office.com/webhook/..., *.logic.azure.com/workflows/...). Для остальных адресов мы используем универсальный JSON-payload.

Подключение Slack

  1. В Slack откройте api.slack.com/apps и нажмите Create New App → From scratch.
  2. Назовите приложение (например "ePulz Alerts") и выберите workspace, к которому оно должно относиться.
  3. В левом меню выберите Incoming Webhooks и переключите их в On.
  4. Нажмите Add New Webhook to Workspace и выберите канал, в который хотите получать уведомления.
  5. Скопируйте сгенерированный адрес webhook (он начинается с https://hooks.slack.com/services/...).
  6. В ePulz.io откройте Настройки → Уведомления → Webhook, вставьте адрес и сохраните.

ePulz.io автоматически распознаёт, что это Slack, и отправляет красиво отформатированные сообщения с цветной полосой (красная при сбое, зелёная при восстановлении) и ссылкой назад в панель управления.

Подключение Discord

  1. На сервере Discord нажмите правой кнопкой на канал и выберите Изменить канал → Интеграции → Веб-перехватчики.
  2. Нажмите Новый веб-перехватчик, при необходимости назовите бота и установите аватар.
  3. Нажмите Копировать URL веб-перехватчика. Адрес имеет вид https://discord.com/api/webhooks/....
  4. В ePulz.io откройте Настройки → Уведомления → Webhook, вставьте адрес и сохраните.

Для Discord тоже формат сообщения мы подготовим автоматически - используется Discord embed (выделенное сообщение с рамкой) с названием монитора, описанием проблемы и временем.

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

После сохранения адреса нажмите в настройках Тест. В целевой канал мы отправим тестовое сообщение, чтобы вы сразу увидели, как будет выглядеть уведомление. Если ничего не пришло, проверьте, правильно ли вы скопировали адрес целиком и есть ли у бота доступ к каналу.

Microsoft Teams (Adaptive Card)

Для Microsoft Teams (включая URL Power Automate / Workflow logic.azure.com/workflows/...) мы отправляем сообщение в формате Adaptive Card v1.4, обёрнутом в сообщение:

{
  "type": "message",
  "attachments": [{
    "contentType": "application/vnd.microsoft.card.adaptive",
    "content": {
      "type": "AdaptiveCard",
      "version": "1.4",
      "body": [
        {"type": "TextBlock", "text": "Monitor DOWN: Боевой сайт", "weight": "bolder", "size": "large"},
        {"type": "TextBlock", "text": "Недоступен: HTTP 503", "wrap": true}
      ],
      "actions": [
        {"type": "Action.OpenUrl", "title": "Открыть в ePulz.io", "url": "https://epulz.io/dashboard/monitor/42"}
      ]
    }
  }]
}

В Teams адрес webhook берётся из коннектора Incoming Webhook в канале или из шаблона Power Automate "Post to Teams when a HTTP request is received".

Собственный webhook (универсальный endpoint)

Если вам нужно отправлять уведомления в собственное приложение, введите в настройках адрес своего endpoint (целевого адреса). ePulz.io отправит туда запрос методом POST с телом в формате JSON:

{
  "event": "down",
  "monitor": {
    "name": "Боевой сайт",
    "target": "https://example.com",
    "url": "https://epulz.io/dashboard/monitor/42"
  },
  "message": "Недоступен: HTTP 503",
  "timestamp": "2026-05-31T14:23:45+00:00",
  "source": "epulzio"
}

Поле event принимает значения down (сбой), up (восстановление), ssl (приближающееся истечение SSL-сертификата), domain (приближающееся истечение домена), anomaly (аномалия отклика) или test (тестовая отправка). Поле monitor.name - это название монитора, monitor.target - отслеживаемый адрес, а monitor.url - ссылка назад в панель управления ePulz.io.

Проверка подписи (HMAC)

По желанию вы можете включить в настройках подписывание - тогда каждый запрос мы подписываем секретным ключом (HMAC SHA-256) и добавляем два заголовка:

  • X-ePulzio-Signature - подпись в формате sha256=<hex digest> из тела запроса
  • X-ePulzio-Event - тип события (то же значение, что и поле event в теле)

На вашем endpoint достаточно вычислить HMAC SHA-256 из полученного тела тем же секретным ключом и сравнить с заголовком. Если они совпадают, запрос подлинный и не был изменён при передаче.

Совет: Для крупных команд рекомендуем отдельный канал Slack или Discord, предназначенный исключительно для уведомлений (например #alerts). Тогда канал не будет переполнен другими обсуждениями, и критические сообщения никто не пропустит.
Было ли это руководство полезным?