AACWorkflow Docs

Интеграция со Slack-ботом

Подключите агента AACWorkflow к собственному приложению Slack — создайте приложение из манифеста, установите его, вставьте bot- и app-level-токены, а затем @-упоминайте его, пишите ему в личку или вводите /issue прямо из Slack.

Подключите любого агента к Slack-боту, и ваша команда сможет работать с ним прямо из Slack — писать боту в личку, @-упоминать его в канале или вводить /issue, чтобы завести задачу AACWorkflow, не открывая приложение.

Slack использует модель собственного приложения (bring-your-own-app, BYO): администратор рабочего пространства создаёт приложение Slack, устанавливает его в своё рабочее пространство Slack и вставляет его токены в AACWorkflow. Каждый агент получает своё собственное приложение Slack — так что несколько агентов могут иметь по отдельному, независимо @-упоминаемому боту в одном и том же рабочем пространстве Slack. (Это отличается от Lark, где привязка происходит по сценарию «сканировать для установки».)

Вся настройка описана ниже и занимает около пяти минут. В итоге у вас будет два токена для вставки в AACWorkflow:

  • Bot-токен — начинается с xoxb-
  • App-level-токен — начинается с xapp-

Настройте своё приложение Slack

1. Создайте приложение из манифеста

  1. Перейдите на https://api.slack.com/apps и нажмите Create New App.
  2. Выберите From a manifest.
  3. Выберите рабочее пространство Slack, в которое нужно установить приложение.
  4. Переключитесь на вкладку YAML, вставьте манифест ниже, проверьте и создайте приложение.
display_information:
  name: AACWorkflow
features:
  app_home:
    home_tab_enabled: false
    messages_tab_enabled: true
    messages_tab_read_only_enabled: false
  bot_user:
    display_name: AACWorkflow
    always_online: true
  slash_commands:
    - command: /issue
      description: Create an AACWorkflow issue
      usage_hint: "[title]"
oauth_config:
  scopes:
    bot:
      - app_mentions:read
      - channels:history
      - groups:history
      - im:history
      - mpim:history
      - chat:write
      - reactions:write
      - users:read
      - commands
settings:
  event_subscriptions:
    bot_events:
      - app_mention
      - message.im
      - message.channels
      - message.groups
      - message.mpim
  interactivity:
    is_enabled: false
  org_deploy_enabled: false
  socket_mode_enabled: true
  token_rotation_enabled: false

Этот манифест настраивает всё, что нужно AACWorkflow, так что вручную ничего задавать не придётся:

РазделЗачем он нужен
app_home.messages_tab_enabled: trueПозволяет участникам открывать бота и писать ему в личку. Без этого боту нельзя написать напрямую.
bot_userСоздаёт идентичность бота, которого @-упоминают и который публикует ответы.
chat:writeПубликует ответы агента обратно в Slack.
reactions:writeДобавляет реакцию 👀 к вашему сообщению, пока агент работает, и убирает её, когда он отвечает. Без этого разрешения индикатор молча пропускается — всё остальное продолжает работать.
app_mentions:read + событие app_mentionПолучает @-упоминания в каналах.
im:history + message.imПолучает личные сообщения боту (читается каждое сообщение в личке).
channels:history / groups:history / mpim:history + соответствующие события message.*Получает сообщения в публичных каналах, приватных каналах и групповых личках. В них бот реагирует только на сообщения, которые его @-упоминают.
users:readТребуется, чтобы AACWorkflow мог проверить (через bots.info), что оба ваших токена принадлежат одному и тому же приложению.
commandsРазрешение бота, включающее slash-команду /issue (работает в паре с features.slash_commands). Без него обновление манифеста и переустановка не предоставят команду.
socket_mode_enabled: trueБот подключается наружу через Socket Mode — публичный URL / request URL не нужен.
interactivity.is_enabled: falseПодсказки AACWorkflow — это обычные ссылки, а не кнопки, поэтому интерактивность не нужна.
slash_commands (/issue)Регистрирует slash-команду /issue, чтобы любой мог завести задачу AACWorkflow прямо из поля сообщения. Доставляется через Socket Mode — без request URL.

OAuth redirect URL отсутствует, потому что BYO не использует OAuth.

Хотите конкретное имя в Slack? Измените display_information.name и features.bot_user.display_name (например, на имя вашего агента) до создания или отредактируйте их позже в разделе App Home. Slack показывает бота по его отображаемому имени бота, которое может отличаться от имени приложения.

2. Установите приложение и скопируйте Bot-токен

  1. В левой навигации приложения откройте Install App (или OAuth & Permissions).
  2. Нажмите Install to Workspace и подтвердите.
  3. Скопируйте Bot User OAuth Token — он начинается с xoxb-. Это ваш Bot-токен.

3. Создайте App-level-токен

App-level-токен авторизует подключение через Socket Mode. Его можно создать только в консоли (он не является частью OAuth).

  1. Откройте Basic Information → App-Level Tokens и нажмите Generate Token and Scopes.
  2. Дайте ему любое имя.
  3. Нажмите Add Scope и выберите connections:write из списка (это выбор из списка — выберите его, не вводите вручную).
  4. Нажмите Generate, затем скопируйте токен — он начинается с xapp-. Это ваш App-level-токен.

4. Подключите его в AACWorkflow

  1. Откройте агента в Agents → ваш агент → вкладка Integrations (или раздел Integrations в левой боковой панели).
  2. Нажмите Connect Slack.
  3. Вставьте Bot-токен (xoxb-) и App-level-токен (xapp-), затем нажмите Connect.
  4. У агента отобразится Connected to Slack. Теперь бот слушает через своё собственное подключение по Socket Mode.

Оба токена должны быть от одного и того же приложения Slack, и это приложение сопоставляется ровно с одним агентом. Подключение приложения, которое уже подключено к другому агенту или рабочему пространству, отклоняется. Чтобы перенести приложение на другого агента, сначала отключите его; повторное подключение агента с новым приложением обновляет бота этого агента на месте.

Настраиваете это для нескольких агентов? Повторите весь процесс по разу для каждого агента — каждый агент получает своё приложение Slack и свою пару токенов, и они отображаются как отдельные боты в вашем рабочем пространстве Slack.

Что делает интеграция

ПоверхностьПоведение
Агент → IntegrationsВладельцы и администраторы видят Connect Slack; после подключения это меняется на бейдж Connected to Slack с элементом управления Disconnect.
Личка ботуУчастник рабочего пространства пишет боту напрямую. Разговор становится сессией чата AACWorkflow с агентом; читается каждое сообщение в личке.
@-упоминание в каналеПригласите бота (/invite @your-bot) и @-упомяните его. Читается только сообщение с упоминанием — бот не слушает весь канал. Каждый тред с @bot — это отдельная сессия.
Slash-команда /issueВведите /issue <описание> (в канале или в личке), и агент превращает ваше описание на обычном языке в правильно оформленную задачу AACWorkflow, атрибутированную вам. Он отвечает приватно для подтверждения — вы получите уведомление AACWorkflow, когда задача будет готова. @-упоминание не требуется.
ОтветОтвет агента публикуется обратно в ту же личку или тред.

Использование бота (участники)

Первое сообщение: привяжите свой аккаунт

Когда вы впервые @-упоминаете бота или пишете ему в личку, он отвечает подсказкой привязать ваш аккаунт. Нажмите на ссылку, войдите в AACWorkflow, и ваша идентичность в Slack привязывается к вашему членству в AACWorkflow — именно это позволяет агенту действовать от вашего имени (например, /issue заводит задачу под вашим именем). Ссылка одноразовая и истекает примерно через 15 минут; просто напишите боту снова, чтобы получить новую.

Привязка выполняется только один раз на рабочее пространство Slack. Если одно и то же рабочее пространство AACWorkflow запускает несколько ботов в одном рабочем пространстве Slack (одно приложение на агента), первый привязанный вами бот обучает остальных: при отправке сообщения второму боту эта привязка используется автоматически, без повторного запроса. (Привязка снова нужна только для бота в другом рабочем пространстве Slack или для бота, подключённого к другому рабочему пространству AACWorkflow.)

Использовать бота могут только участники рабочего пространства. Если вы не участник или пропустили привязку идентичности, бот не запустится — ваше сообщение отбрасывается (фиксируется для аудита, без его содержимого).

Чат и /issue

  • В канале — бот не присоединяется автоматически. Один раз выполните /invite @your-bot, затем @your-bot <ваше сообщение>. Упоминайте его заново для каждого следующего сообщения (бот читает только сообщения, которые его упоминают).
  • В личке — откройте бота из раздела Apps боковой панели Slack и пишите ему напрямую; упоминание не нужно.
  • Завести задачу — используйте slash-команду /issue, например /issue логин-редирект сломан в Safari. Опишите на обычном языке; агент напишет за вас правильный заголовок и структурированное описание и заведёт задачу. Это работает в канале или в личке (@-упоминание не нужно) и отвечает приватно для подтверждения — вы получите уведомление AACWorkflow, когда задача будет создана. Впервые обращающиеся пользователи получают одноразовую ссылку для подключения своего аккаунта.

Управление и отключение

Управление в масштабе рабочего пространства находится в Settings → Integrations:

  • Connected bots перечисляет каждого бота в рабочем пространстве и агента, к которому привязан каждый из них (видно всем участникам).
  • Disconnect доступно только владельцу / администратору. Оно останавливает получение ботом сообщений Slack и разрывает его подключение; запись об установке сохраняется для аудита, и позже вы можете подключиться снова.

Права доступа

  • Подключение / отключение требуют прав владельца или администратора рабочего пространства.
  • Общение с ботом требует быть участником рабочего пространства с привязанной идентичностью Slack. Все остальные отбрасываются.
  • Тела отброшенных сообщений никогда не сохраняются — только причина отбрасывания, для аудита.

Далее