TRIBLY
Документация Tribly → Интеграции и вебхуки

Интеграции и вебхуки

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», «Мини-приложения».