Webhook в Slack, Discord и Teams
Webhook (автоматическая отправка сообщения на заданный адрес) - это универсальный способ отправить уведомление в любое приложение: в Slack, Discord, Microsoft Teams или в вашу собственную систему. Подключение занимает пару минут, и ePulz.io автоматически форматирует сообщение под целевой сервис.
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
- В Slack откройте api.slack.com/apps и нажмите Create New App → From scratch.
- Назовите приложение (например "ePulz Alerts") и выберите workspace, к которому оно должно относиться.
- В левом меню выберите Incoming Webhooks и переключите их в On.
- Нажмите Add New Webhook to Workspace и выберите канал, в который хотите получать уведомления.
- Скопируйте сгенерированный адрес webhook (он начинается с
https://hooks.slack.com/services/...). - В ePulz.io откройте Настройки → Уведомления → Webhook, вставьте адрес и сохраните.
ePulz.io автоматически распознаёт, что это Slack, и отправляет красиво отформатированные сообщения с цветной полосой (красная при сбое, зелёная при восстановлении) и ссылкой назад в панель управления.
Подключение Discord
- На сервере Discord нажмите правой кнопкой на канал и выберите Изменить канал → Интеграции → Веб-перехватчики.
- Нажмите Новый веб-перехватчик, при необходимости назовите бота и установите аватар.
- Нажмите Копировать URL веб-перехватчика. Адрес имеет вид
https://discord.com/api/webhooks/.... - В 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 из полученного тела тем же секретным ключом и сравнить с заголовком. Если они совпадают, запрос подлинный и не был изменён при передаче.
#alerts). Тогда канал не будет переполнен другими обсуждениями, и критические сообщения никто не пропустит.