Skip to content
Эта страница создана и переведена с помощью ИИ. Если вы заметили неточности, помогите нам улучшить её. Редактировать на GitHub

Slack

Подключение PRX к Slack с помощью бота с OAuth-токенами, Socket Mode для событий в реальном времени и поддержкой треддированных разговоров.

Предварительные требования

  • Рабочая область Slack, где у вас есть разрешение на установку приложений
  • Приложение Slack, созданное на api.slack.com/apps
  • Токен бота (xoxb-...) и, опционально, токен уровня приложения (xapp-...) для Socket Mode

Быстрая настройка

1. Создание приложения Slack

  1. Перейдите на api.slack.com/apps и нажмите «Create New App»
  2. Выберите «From scratch» и укажите рабочую область
  3. В разделе «OAuth & Permissions» добавьте области бота:
    • chat:write, channels:history, groups:history, im:history, mpim:history
    • files:read, files:write, reactions:write, users:read
  4. Установите приложение в рабочую область и скопируйте Bot User OAuth Token (xoxb-...)

2. Включение Socket Mode (рекомендуется)

  1. В разделе «Socket Mode» включите его и сгенерируйте токен уровня приложения (xapp-...) с областью connections:write
  2. В разделе «Event Subscriptions» подпишитесь на: message.channels, message.groups, message.im, message.mpim

3. Конфигурация

toml
[channels_config.slack]
bot_token = "xoxb-your-bot-token-here"
app_token = "xapp-your-app-token-here"
allowed_users = ["U01ABCDEF"]

4. Проверка

bash
prx channel doctor slack

Справочник конфигурации

ПолеТипПо умолчаниюОписание
bot_tokenStringобязательныйOAuth-токен Slack-бота (xoxb-...)
app_tokenStringnullТокен уровня приложения (xapp-...) для Socket Mode. Без него откатывается к опросу
channel_idStringnullОграничить бота одним каналом. Пропустите или задайте "*" для прослушивания всех каналов
allowed_users[String][]Slack user ID. Пусто = запрещено всем. "*" = разрешить всем
interrupt_on_new_messageboolfalseЕсли true, новое сообщение от того же отправителя отменяет текущий запрос
thread_repliesbooltrueЕсли true, ответы остаются в исходном треде. Если false, ответы идут в корень канала
mention_onlyboolfalseЕсли true, отвечать только на @-упоминания. ЛС обрабатываются всегда

Возможности

  • Socket Mode — доставка событий в реальном времени без публичного URL (требуется app_token)
  • Ответы в тредах — автоматически отвечает в исходном треде
  • Файловые вложения — загружает и встраивает текстовые файлы; обрабатывает изображения до 5 МБ
  • Отображаемые имена — разрешает Slack user ID в отображаемые имена с кэшированием (TTL 6 часов)
  • Поддержка нескольких каналов — прослушивание нескольких каналов или ограничение одним
  • Индикаторы набора — показывает статус набора при генерации ответов
  • Поддержка прерываний — отмена текущих запросов при отправке пользователем нового сообщения

Ограничения

  • Сообщения Slack ограничены 40 000 символами (редко является проблемой)
  • Загрузка файлов ограничена 256 КБ для текста и 5 МБ для изображений
  • Максимум 8 файловых вложений обрабатываются в одном сообщении
  • Socket Mode требует области connections:write на токене уровня приложения
  • Без Socket Mode (app_token) канал откатывается к опросу с большей задержкой

Устранение неполадок

Бот не получает сообщения

  • Убедитесь, что Socket Mode включён и app_token корректен
  • Проверьте, что «Event Subscriptions» включают необходимые события message.*
  • Убедитесь, что бот приглашён в канал (/invite @botname)

Ответы идут в канал вместо треда

  • Проверьте, что thread_replies не установлен в false
  • Ответы в треде требуют наличия thread_ts у исходного сообщения

Файловые вложения не обрабатываются

  • Убедитесь, что бот имеет область files:read
  • Поддерживаются только MIME-типы text/* и распространённые типы изображений
  • Файлы, превышающие лимиты размера, молча пропускаются

Released under the Apache-2.0 License.