Slack Bot 連携
AACWorkflow エージェントをあなた自身の Slack アプリに接続します——マニフェストからアプリを作成し、インストールして、bot トークンと app-level トークンを貼り付ければ、Slack の中から @ メンションしたり、DM したり、/issue と入力したりできます。
任意のエージェントを Slack Bot に接続すれば、チームは Slack の中から直接それを使えます——Bot に DM したり、チャンネルで @ メンションしたり、/issue と入力してアプリを開かずに AACWorkflow イシューを起票したりできます。
Slack は自分のアプリを持ち込む(BYO: bring-your-own-app)モデルを採用しています。ワークスペースの admin が Slack アプリを作成し、自分の Slack ワークスペースにインストールして、そのトークンを AACWorkflow に貼り付けます。エージェントごとに専用の Slack アプリを持つため、同じ Slack ワークスペース内で複数のエージェントがそれぞれ別個に @ メンションできる異なる Bot を持てます。(これは紐づけがスキャンしてインストールするフローである Lark とは異なります。)
セットアップ全体は以下のとおりで、所要時間は約 5 分です。最終的に、AACWorkflow に貼り付ける 2 つのトークンが得られます。
- Bot トークン ——
xoxb-で始まります - App-level トークン ——
xapp-で始まります
Slack アプリをセットアップする
1. マニフェストからアプリを作成する
- https://api.slack.com/apps を開き、Create New App をクリックします。
- From a manifest を選びます。
- アプリをインストールする Slack ワークスペースを選びます。
- 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 を開いて DM できるようにします。これがないと、Bot に直接メッセージを送れません。 |
bot_user | @ メンションされ、返信を投稿する Bot のアイデンティティを作成します。 |
chat:write | エージェントの返信を Slack に投稿し返します。 |
reactions:write | エージェントの処理中、あなたのメッセージに 👀 リアクションを付け、返信時に外します。このスコープがないとインジケーターは黙ってスキップされます——他の機能はすべて動作します。 |
app_mentions:read + app_mention イベント | チャンネルでの @ メンションを受け取ります。 |
im:history + message.im | Bot への DM を受け取ります(すべての DM メッセージが読み取られます)。 |
channels:history / groups:history / mpim:history + 対応する message.* イベント | パブリックチャンネル、プライベートチャンネル、グループ DM のメッセージを受け取ります。これらの中では、Bot は自分を @ メンションしたメッセージにのみ反応します。 |
users:read | AACWorkflow が(bots.info を介して)あなたの 2 つのトークンが同じアプリのものであることを検証するために必要です。 |
commands | /issue スラッシュコマンドを有効にする bot スコープです(features.slash_commands と対になります)。これがないと、マニフェストを更新して再インストールしてもコマンドが付与されません。 |
socket_mode_enabled: true | Bot は Socket Mode 経由で外向きに接続します——公開 URL/リクエスト URL は不要です。 |
interactivity.is_enabled: false | AACWorkflow のプロンプトはボタンではなくプレーンなリンクなので、インタラクティビティは不要です。 |
slash_commands(/issue) | /issue スラッシュコマンドを登録し、誰でもメッセージ入力欄から AACWorkflow イシューを起票できるようにします。Socket Mode 経由で配信され、リクエスト URL は不要です。 |
OAuth リダイレクト URL はありません。BYO は OAuth を使わないからです。
Slack で特定の名前を表示したいですか? 作成前に display_information.name と features.bot_user.display_name(たとえばエージェントの名前に)を変更するか、あとで App Home で編集してください。Slack は Bot をその bot display name で表示しますが、これはアプリ名と異なる場合があります。
2. アプリをインストールして Bot トークンをコピーする
- アプリの左ナビで Install App(または OAuth & Permissions)を開きます。
- Install to Workspace をクリックして承認します。
- Bot User OAuth Token をコピーします——
xoxb-で始まります。これがあなたの Bot トークンです。
3. App-level トークンを作成する
app-level トークンは Socket Mode 接続を認可します。これはコンソールでしか作成できません(OAuth の一部ではありません)。
- Basic Information → App-Level Tokens を開き、Generate Token and Scopes をクリックします。
- 任意の名前を付けます。
- Add Scope をクリックし、リストから
connections:writeを選びます(これはピッカーなので、入力せずに選択してください)。 - Generate をクリックし、トークンをコピーします——
xapp-で始まります。これがあなたの App-level トークンです。
4. AACWorkflow で接続する
- Agents → あなたのエージェント からそのエージェントを開き、Integrations タブ(または左サイドバーの Integrations 区画)を開きます。
- Connect Slack をクリックします。
- Bot トークン(
xoxb-)と App-level トークン(xapp-)を貼り付け、Connect をクリックします。 - エージェントに Connected to Slack と表示されます。Bot はこれで、自身の Socket Mode 接続を通じて待ち受けています。
2 つのトークンは同じ Slack アプリのものでなければならず、そのアプリはちょうど 1 つのエージェントに対応します。すでに別のエージェントやワークスペースに接続されているアプリを接続しようとすると拒否されます。アプリを別のエージェントへ移すには、まず切断してください。新しいアプリでエージェントを再接続すると、そのエージェントの Bot がその場で更新されます。
複数のエージェントでこれを設定しますか? フロー全体をエージェントごとに 1 回ずつ繰り返してください——各エージェントが専用の Slack アプリと専用のトークンのペアを持ち、Slack ワークスペース内で別々の Bot として表示されます。
この連携でできること
| 場所 | 動作 |
|---|---|
| エージェント → Integrations | owner と admin には Connect Slack が表示され、接続すると Connected to Slack バッジと Disconnect コントロールに切り替わります。 |
| Bot に DM | ワークスペースメンバーが Bot に直接メッセージを送ります。会話はそのエージェントとの AACWorkflow chat セッションになり、すべての DM メッセージが読み取られます。 |
| チャンネルで @ メンション | Bot を招待し(/invite @your-bot)、@ メンションします。読み取られるのはメンションしたメッセージだけで、Bot はチャンネル全体を聞いているわけではありません。各 @bot スレッドがそれぞれ独立したセッションになります。 |
/issue スラッシュコマンド | /issue <説明>(チャンネルでも DM でも)と入力すると、エージェントがあなたの自然言語の説明を整った AACWorkflow イシューに仕立て、あなたの名義で起票します。まず本人にだけ受付の返信をし、イシューが用意できたら AACWorkflow の通知が届きます——@ メンションは不要です。 |
| 返信 | エージェントの回答は、同じ DM またはスレッドに投稿し返されます。 |
Bot を使う(メンバー)
最初のメッセージ:アカウントを紐づける
初めて Bot を @ メンションするか DM すると、Bot は アカウントを紐づける プロンプトで返信します。リンクをタップして AACWorkflow にサインインすると、あなたの Slack アイデンティティがあなたの AACWorkflow メンバーシップに紐づきます——これによって、エージェントがあなたとして振る舞えるようになります(たとえば /issue はあなたの名義でイシューを起票します)。このリンクは使い切りで、約 15 分で失効します。新しいものが必要なら、もう一度 Bot にメッセージを送るだけです。
紐づけは Slack ワークスペースごとに一度だけです。 同じ AACWorkflow ワークスペースが 1 つの Slack ワークスペースで複数の Bot を運用している場合(エージェントごとに 1 つのアプリ)、最初の Bot で紐づけを済ませれば、残りはその紐づけを自動的に再利用し、再びプロンプトは出ません。(再度の紐づけが必要なのは、別の Slack ワークスペースにある Bot、または 別の AACWorkflow ワークスペースに接続された Bot だけです。)
Bot を使えるのは ワークスペースのメンバー だけです。メンバーでない場合や、アイデンティティの紐づけをスキップした場合、Bot は実行されません——あなたのメッセージは破棄されます(内容は保存せず、監査のために記録されます)。
対話と /issue
- チャンネルで —— Bot は自動では参加しません。一度
/invite @your-botを実行してから、@your-bot <あなたのメッセージ>とします。フォローアップのたびに再度メンションしてください(Bot は自分をメンションしたメッセージだけを読みます)。 - DM で —— Slack サイドバーの Apps 区画から Bot を開いて直接メッセージを送ります。メンションは不要です。
- イシューを起票する ——
/issueスラッシュコマンドを使います(例:/issue ログインのリダイレクトが Safari で壊れている)。自然言語で説明すれば、エージェントがタイトルと構造化された説明を書いて起票してくれます。チャンネルでも DM でも使え(@ メンション不要)、まず本人にだけ受付の返信をし、イシューが作成されたら AACWorkflow の通知が届きます。初回のユーザーには、まずアカウント連携の使い切りリンクが届きます。
管理と切断
ワークスペース全体の管理は Settings → Integrations にあります。
- Connected bots は、ワークスペース内のすべての Bot と、それぞれが紐づくエージェントを一覧表示します(すべてのメンバーから見えます)。
- Disconnect は owner / admin 専用 です。切断すると Bot は Slack メッセージの受信を停止し、その接続が破棄されます。インストール記録は監査のために保持され、あとで再接続できます。
権限
- 接続 / 切断 にはワークスペースの owner または admin が必要です。
- Bot との対話 には、Slack アイデンティティを紐づけたワークスペースメンバーであることが必要です。それ以外の人は一律に破棄されます。
- 破棄されたメッセージの本文が保存されることはありません——監査のために破棄理由だけが記録されます。