Интеграции и вебхуки
Tribly принимает входящие вебхуки: внешняя система — мониторинг, CI/CD, трекер задач — отправляет запрос, и в нужном канале появляется сообщение. Формат повторяет Slack Incoming Webhooks, поэтому всё, что умеет слать в Slack (Zabbix, Prometheus Alertmanager, GitLab, Grafana), подключается без доработок.
Чтение сообщений из мессенджера делает бот — см. «Боты и Bot API».
Подключение
1. Создайте бота — от его имени будут приходить сообщения (см. «Боты и Bot API»).
2. Добавьте бота в канал — сообщения приходят только туда, где он состоит участником.
3. Узнайте id канала. Он показан в карточке канала.
4. Настройте внешнюю систему на отправку запроса по адресу вебхука:
POST https://<сервер>/api/v1/bot/slack/<id_канала>
Authorization: Bearer <токен_бота>
Content-Type: application/json
Быстрая проверка из терминала:
curl -X POST https://<сервер>/api/v1/bot/slack/11 \
-H "Authorization: Bearer <токен_бота>" \
-H "Content-Type: application/json" \
-d '{"text":"Интеграция работает"}'
Формат сообщения
Простое сообщение:
{ "text": "Деплой 2.4.1 завершён" }
Поле text поддерживает Markdown.
Оповещение-карточка (формат для алертов):
{
"text": "Критическая ошибка на проде",
"attachments": [
{
"title": "Zabbix · Production-01",
"text": "CPU Load > 95% пять минут",
"color": "danger",
"fields": [{"title": "Хост", "value": "db-master-01", "short": true}]
}
]
}
Используются text и attachments (внутри — title, text, color, fields). Цвет color рисует полоску слева от сообщения: подойдёт #RRGGBB или слова good, warning, danger, info.
Поля username, icon_emoji и icon_url принимаются ради совместимости со Slack; отправителем показан бот, от токена которого пришёл запрос.
Пример: Prometheus Alertmanager
Формат Slack-совместимый, поэтому годится штатный slack_configs — достаточно подставить адрес вебхука:
receivers:
- name: tribly
slack_configs:
- api_url: "https://<сервер>/api/v1/bot/slack/<id_канала>"
http_config:
authorization:
credentials: "<токен_бота>"
title: "{{ .CommonAnnotations.summary }}"
text: "{{ range .Alerts }}{{ .Annotations.description }}\n{{ end }}"
Диагностика
| Симптом | Что проверить |
|---|---|
| Ошибка авторизации | Токен бота указан неверно или устарел |
| Бот «не в канале» | Бота забыли добавить в канал, куда шлёте |
| Канал не найден | Ошибка в id канала |
| Сервер просит подождать | Сообщения идут слишком часто — снизьте темп |
| Сообщение пустое | В запросе нет поля text |
Смежные страницы: «Боты и Bot API», «Мини-приложения».
TRIBLY