Slack — подключение и проверка
Бот отвечает в рабочем пространстве Slack: в личных сообщениях приложению и в каналах, куда его позвали.
Что нужно заранее
- Рабочее пространство Slack, где вы вправе устанавливать приложения.
- Приложение Slack, созданное на api.slack.com/apps («From scratch»).
- Роль администратор в проекте ImpactBot: канал подключает только она.
- Свободный слот канала в тарифе — иначе подключение остановится с сообщением про лимит.
Права и доступы
В разделе OAuth & Permissions приложению выдают Bot Token Scopes:
- `chat:write` — отправка сообщений. Без него бот подключится, но отвечать не сможет: Slack вернёт `missing_scope`.
- `channels:read` — список каналов.
- `im:read` и `im:history` — личные диалоги с приложением.
После установки в рабочее пространство появляется Bot User OAuth Token (`xoxb-…`) — его и вставляют в ImpactBot.
Второе обязательное поле — Signing Secret из Basic Information. Им подписан каждый входящий запрос: ImpactBot пересчитывает HMAC-SHA256 и отвергает событие, если подпись не сходится или отметка времени старше пяти минут. Без Signing Secret подключение не создаётся.
Подключение и вебхук
- api.slack.com/apps → Create New App → From scratch.
- OAuth & Permissions → добавьте scopes выше → Install to Workspace → скопируйте `xoxb-…`.
- Basic Information → скопируйте Signing Secret.
- Проект → Каналы → Slack → название, Bot User OAuth Token, Signing Secret → «Подключить».
Адрес приёма событий вписывается вручную: Slack принимает Request URL только из своей консоли. После подключения окно показывает готовый адрес вида `/api/webhook/slack/<ID канала>` с кнопкой копирования. Вставьте его в Event Subscriptions → Request URL — Slack сразу пришлёт проверочный запрос `url_verification` и должен показать «Verified». Затем в Subscribe to bot events подпишитесь на `message.im` (личные сообщения), а если бот работает в каналах — на `message.channels` и `app_mention`. Других типов событий приёмник не обрабатывает, подписываться на них незачем.
Проверка
Нажмите «Проверить» на карточке канала. Диагностика Slack показывает: подтверждён ли OAuth-токен и какое это рабочее пространство, сохранён ли Signing Secret, разрешена ли отправка (проба уходит в несуществующий канал, доставки не происходит) и приходили ли входящие.
После этого напишите приложению в Slack — сообщение должно появиться в разделе «Диалоги».
Частые ошибки
- «Slack Signing Secret is required». Заполнен только токен. Signing Secret обязателен.
- «Invalid Slack bot token». Вставлен user-токен (`xoxp-…`) вместо бот-токена (`xoxb-…`) либо приложение переустановлено и токен сменился.
- Slack не верифицирует Request URL. Адрес указан без ID канала или скопирован до создания канала — возьмите готовый адрес из окна подключения.
- Бот молчит в личке. Не оформлена подписка на событие `message.im`.
- Диагностика пишет про право на отправку. Приложению не выдан scope `chat:write`; после добавления scope приложение надо переустановить, иначе токен остаётся со старыми правами.
- События перестали приходить после смены Signing Secret. Подпись считается новым секретом, а в канале лежит прежний — переподключите канал.