Довідка та інструкціїСповіщення › 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). Тоді канал не перевантажується іншими обговореннями, і критичні повідомлення нікому не пропадуть.
Чи був цей посібник корисним?