Table of contents

Уведомления

Хоук умеет уведомлять через:

  • Email
  • Telegram
  • Slack
  • Loop
  • Webhook — для своих систем (Jira, Mattermost, внутренние сервисы и т.д.)

Есть два уровня:

  1. Уведомления проекта — про ошибки: новые события, всплески повторений.Настройки: Проект → Настройки → Уведомления.
  2. Персональные уведомления — назначение на issue, недельный дайджест, системные сообщения.Настройки: Аккаунт → Уведомления. Каналы: email, webhook (web/desktop push — по мере доступности).
  1. Откройте проект → Настройки → Уведомления.
  2. Создайте правило и укажите:Что получатьтолько новые события (ONLY_NEW) — первый раз, когда ошибка появилась;«встречалось больше N раз за период» (SEEN_MORE) — порог + период (минута / час / день / неделя).Фильтры (опционально): включать / исключать события по тексту в заголовке.Каналы: email, Telegram, Slack, Loop, Webhook — можно несколько сразу.
  3. Что получатьтолько новые события (ONLY_NEW) — первый раз, когда ошибка появилась;«встречалось больше N раз за период» (SEEN_MORE) — порог + период (минута / час / день / неделя).
  4. только новые события (ONLY_NEW) — первый раз, когда ошибка появилась;
  5. «встречалось больше N раз за период» (SEEN_MORE) — порог + период (минута / час / день / неделя).
  6. Фильтры (опционально): включать / исключать события по тексту в заголовке.
  7. Каналы: email, Telegram, Slack, Loop, Webhook — можно несколько сразу.
  8. Правило можно временно отключить, не удаляя.

Несколько правил на проект — нормальная схема: например, критичные ошибки → Slack, остальное → email.

  • Email — укажите адрес(а) в правиле / в аккаунте.
  • Telegram / Slack / Loop — endpoint (webhook URL бота или Incoming Webhook) в настройках канала правила.
  • Webhook — HTTPS URL вашего обработчика. Хоук шлёт POST с JSON { "type": "...", "payload": { ... } } и заголовком X-Hawk-Notification (тип уведомления).

Для персональных уведомлений webhook настраивается в Аккаунт → Уведомления.

Webhook — HTTP(S) POST с JSON на ваш URL, когда сработало правило уведомления проекта или персональное уведомление.

Запрос всегда одного вида:

Content-Type: application/jsonUser-Agent: Hawk-Webhook/1.0X-Hawk-Notification: <type>{"type":"event","payload":{}}

{ "type": "event", "payload": { } }
  • type — вид уведомления: eventseveral-eventsassignee, а также платёжные и системные (payment-failedworkspace-invite и др.).
  • payload — данные; набор полей зависит от type. Токены, пароли и исходный код в webhook не передаются.

Для ошибок (event / several-events) типичная структура:

{ "type": "event", "payload": { "project": { "id": "string", "name": "string", "workspaceId": "string", "image": null }, "events": [ { "event": { "id": "string", "groupHash": "string", "totalCount": 42, "catcherType": "errors/javascript", "timestamp": 1567009247.576, "usersAffected": 3, "title": "TypeError: …", "type": null, "backtrace": [ { "file": "string", "line": 1, "column": 10, "function": "renderUser" } ] }, "newCount": 1, "daysRepeated": 1, "usersAffected": null, "repetitionId": null } ], "period": 60 } }
☝️
Важно:
timestamp — это number, unix time в секундах (может быть дробным). Это не ISO-строка. Если ваш обработчик ждёт "2019-08-28T14:20:47.576Z", запрос будет отклонён (например, с 400), хотя Hawk доставку выполнил. Нужную строку можно получить так: new Date(timestamp * 1000).toISOString().

Используйте HTTPS. Endpoint должен отвечать 2xx; редиректы Hawk не следует.

  1. Правило включено.
  2. Канал указан, endpoint валидный (для webhook — доступный HTTPS URL).
  3. Тип правила совпадает с ситуацией: при ONLY_NEW повтор ошибки не придёт; при SEEN_MORE нужен порог за выбранный период.
  4. Фильтры including / excluding не отсекают заголовок события.
  5. Для email — адрес указан в аккаунте / правиле.
  6. Webhook отвечает без долгого таймаута и без редиректа; схема на стороне приёмника принимает timestamp как number (unix seconds), а не только как ISO-строку.
  7. Проверка пустым телом {} не отражает реальную доставку — Hawk так не отправляет.

Да, двумя способами:

  1. Интеграция с GitHub (Проект → Настройки → Task Manager / GitHub): Хоук может сам создавать GitHub Issue при достижении порога повторений.
  2. Webhook на ваш endpoint: обработчик создаёт задачу в Jira/YouTrack/Linear, пишет в чат или запускает workflow.