Входящие хуки
Готовые интеграции без своего кода. Хук — секретный URL, привязанный к одному из чатов бота и к формату; всё, что пришло на него, бот пишет в чат.
Как включить
Задайте HOOKS_URL — внешний адрес gateway, и BOT_OWNERS — id аккаунтов, которым можно управлять хуками. В интернет публикуйте только путь /hooks/.
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
POST /v1/hooks
{"chat_id": "g3a…", "format": "alertmanager"}{"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 повторят сами. |
Форматы
| Формат | Что принимает | Что пишет в чат |
|---|---|---|
alertmanager | webhook_configs Alertmanager (версия 4) | 🔥 <alertname> · N и до 10 строк «summary (severity, instance или namespace/pod)»; решённое — ✅ Решено: … ответом на сообщение об алерте. |
gitlab | Pipeline events GitLab (остальные события — 200 и тишина). Если задан X-Gitlab-Token, он должен совпадать с секретом. | Упавшие и отменённые конвейеры (проект, ветка, коммит, автор, упавшие задачи, ссылка); успех после падения на той же ветке — «починен». Остальные успехи не пишет. |
text | text/plain как есть или JSON {"text": "…"} | Текст. |
Alertmanager
receivers:
- name: mailbees
webhook_configs:
- url_file: /etc/secrets/mailbees-hook # в URL хука — секрет
send_resolved: trueGitLab
Проект → Settings → Webhooks: вставьте URL, отметьте Pipeline events.
Всё остальное
curl -d 'Бэкап готов' https://bot.example.com/hooks/<секрет>