Skip to content

Входящие хуки ​

Готовые интеграции без своего кода. Хук — секретный URL, привязанный к одному из чатов бота и к формату; всё, что пришло на него, бот пишет в чат.

Как включить ​

Задайте HOOKS_URL — внешний адрес gateway, и BOT_OWNERS — id аккаунтов, которым можно управлять хуками. В интернет публикуйте только путь /hooks/.

yaml
environment:
  HOOKS_URL: https://bot.example.com
  BOT_OWNERS: u7f…,u2c…
  UPDATES: "off"   # если бот только отправляет

Свой id узнать просто: напишите боту что угодно — тем, кого нет в BOT_OWNERS, он отвечает их id.

Хук из чата ​

Владелец пишет боту в личном чате или в группе, куда бота добавил:

КомандаЧто делает
/hook alertmanager · /hook gitlab · /hook textЗаводит хук для этого чата и отвечает его URL. Из группы URL уходит владельцу в личный чат.
/hooksХуки этого чата.
/unhook <id>Удалить хук.

Эти команды бот объявляет сам, если своих команд у него нет.

Хук через API ​

http
POST /v1/hooks
{"chat_id": "g3a…", "format": "alertmanager"}
json
{"id": "h1…", "chat_id": "g3a…", "format": "alertmanager", "ts": 1791370000000,
 "url": "https://bot.example.com/hooks/…"}

URL показывается один раз: gateway хранит только хеш секрета. GET /v1/hooks?chat= — список, DELETE /v1/hooks/{id} — удалить.

Отправка в хук ​

POST /hooks/<секрет> — без токена, тело до 1 МБ.

ОтветЧто значит
200Записано в чат.
404Нет такого хука.
410Чата больше нет.
502Сообщение не отправилось; Alertmanager и GitLab повторят сами.

Форматы ​

ФорматЧто принимаетЧто пишет в чат
alertmanagerwebhook_configs Alertmanager (версия 4)🔥 <alertname> · N и до 10 строк «summary (severity, instance или namespace/pod)»; решённое — ✅ Решено: … ответом на сообщение об алерте.
gitlabPipeline events GitLab (остальные события — 200 и тишина). Если задан X-Gitlab-Token, он должен совпадать с секретом.Упавшие и отменённые конвейеры (проект, ветка, коммит, автор, упавшие задачи, ссылка); успех после падения на той же ветке — «починен». Остальные успехи не пишет.
texttext/plain как есть или JSON {"text": "…"}Текст.

Alertmanager ​

yaml
receivers:
  - name: mailbees
    webhook_configs:
      - url_file: /etc/secrets/mailbees-hook   # в URL хука — секрет
        send_resolved: true

GitLab ​

Проект → Settings → Webhooks: вставьте URL, отметьте Pipeline events.

Всё остальное ​

sh
curl -d 'Бэкап готов' https://bot.example.com/hooks/<секрет>