Slack Bot 連携
Multica エージェントをあなた自身の Slack アプリに接続します——マニフェストからアプリを作成し、インストールして、bot トークンと app-level トークンを貼り付ければ、Slack の中から @ メンションしたり、DM したり、/issue と入力したりできます。
任意のエージェントを Slack Bot に接続すれば、チームは Slack の中から直接それを使えます——Bot に DM したり、チャンネルで @ メンションしたり、/issue と入力してアプリを開かずに Multica イシューを起票したりできます。
Slack は自分のアプリを持ち込む(BYO: bring-your-own-app)モデルを採用しています。ワークスペースの admin が Slack アプリを作成し、自分の Slack ワークスペースにインストールして、そのトークンを Multica に貼り付けます。エージェントごとに専用の Slack アプリを持つため、同じ Slack ワークスペース内で複数のエージェントがそれぞれ別個に @ メンションできる異なる Bot を持てます。(これは紐づけがスキャンしてインストールするフローである Lark とは異なります。)
セットアップ全体は以下のとおりで、所要時間は約 5 分です。最終的に、Multica に貼り付ける 2 つのトークンが得られます。
- Bot トークン ——
xoxb-で始まります - App-level トークン ——
xapp-で始まります
Slack アプリをセットアップする
1. マニフェストからアプリを作成する
- https://api.slack.com/apps を開き、Create New App をクリックします。
- From a manifest を選びます。
- アプリをインストールする Slack ワークスペースを選びます。
- YAML タブに切り替え、下記のマニフェストを貼り付けて、内容を確認しアプリを作成します。
display_information:
name: Multica
features:
app_home:
home_tab_enabled: false
messages_tab_enabled: true
messages_tab_read_only_enabled: false
bot_user:
display_name: Multica
always_online: true
oauth_config:
scopes:
bot:
- app_mentions:read
- channels:history
- groups:history
- im:history
- mpim:history
- chat:write
- users:read
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このマニフェストは Multica が必要とするものをすべて設定するので、手作業で何かを設定する必要はありません。
| セクション | なぜそこにあるか |
|---|---|
app_home.messages_tab_enabled: true | メンバーが Bot を開いて DM できるようにします。これがないと、Bot に直接メッセージを送れません。 |
bot_user | @ メンションされ、返信を投稿する Bot のアイデンティティを作成します。 |
chat:write | エージェントの返信を Slack に投稿し返します。 |
app_mentions:read + app_mention イベント | チャンネルでの @ メンションを受け取ります。 |
im:history + message.im | Bot への DM を受け取ります(すべての DM メッセージが読み取られます)。 |
channels:history / groups:history / mpim:history + 対応する message.* イベント | パブリックチャンネル、プライベートチャンネル、グループ DM のメッセージを受け取ります。これらの中では、Bot は自分を @ メンションしたメッセージにのみ反応します。 |
users:read | Multica が(bots.info を介して)あなたの 2 つのトークンが同じアプリのものであることを検証するために必要です。 |
socket_mode_enabled: true | Bot は Socket Mode 経由で外向きに接続します——公開 URL/リクエスト URL は不要です。 |
interactivity.is_enabled: false | Multica のプロンプトはボタンではなくプレーンなリンクなので、インタラクティビティは不要です。 |
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. Multica で接続する
- 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 に直接メッセージを送ります。会話はそのエージェントとの Multica chat セッションになり、すべての DM メッセージが読み取られます。 |
| チャンネルで @ メンション | Bot を招待し(/invite @your-bot)、@ メンションします。読み取られるのはメンションしたメッセージだけで、Bot はチャンネル全体を聞いているわけではありません。各 @bot スレッドがそれぞれ独立したセッションになります。 |
/issue コマンド | /issue <タイトル>(続く行に本文を足してもよい)でメッセージを始めると、ワークスペースに新しい Multica イシューが作られ、あなたの名義になります。 |
| 返信 | エージェントの回答は、同じ DM またはスレッドに投稿し返されます。 |
Bot を使う(メンバー)
最初のメッセージ:アカウントを紐づける
初めて Bot を @ メンションするか DM すると、Bot は アカウントを紐づける プロンプトで返信します。リンクをタップして Multica にサインインすると、あなたの Slack アイデンティティがあなたの Multica メンバーシップに紐づきます——これによって、エージェントがあなたとして振る舞えるようになります(たとえば /issue はあなたの名義でイシューを起票します)。このリンクは使い切りで、約 15 分で失効します。新しいものが必要なら、もう一度 Bot にメッセージを送るだけです。
Bot を使えるのは ワークスペースのメンバー だけです。メンバーでない場合や、アイデンティティの紐づけをスキップした場合、Bot は実行されません——あなたのメッセージは破棄されます(内容は保存せず、監査のために記録されます)。
対話と /issue
- チャンネルで —— Bot は自動では参加しません。一度
/invite @your-botを実行してから、@your-bot <あなたのメッセージ>とします。フォローアップのたびに再度メンションしてください(Bot は自分をメンションしたメッセージだけを読みます)。 - DM で —— Slack サイドバーの Apps 区画から Bot を開いて直接メッセージを送ります。メンションは不要です。
- イシューを起票する ——
/issue Fix the login redirectと送ります。タイトルの後ろに行を足せば、それが説明になります。
管理と切断
ワークスペース全体の管理は Settings → Integrations にあります。
- Connected bots は、ワークスペース内のすべての Bot と、それぞれが紐づくエージェントを一覧表示します(すべてのメンバーから見えます)。
- Disconnect は owner / admin 専用 です。切断すると Bot は Slack メッセージの受信を停止し、その接続が破棄されます。インストール記録は監査のために保持され、あとで再接続できます。
権限
- 接続 / 切断 にはワークスペースの owner または admin が必要です。
- Bot との対話 には、Slack アイデンティティを紐づけたワークスペースメンバーであることが必要です。それ以外の人は一律に破棄されます。
- 破棄されたメッセージの本文が保存されることはありません——監査のために破棄理由だけが記録されます。
セルフホストのセットアップ
Multica Cloud では連携はすでに利用可能です——このセクションは飛ばしてください。
セルフホストの場合、Slack は保存時の暗号化キーを設定するまでオフです。このキーは、各アプリの bot トークン + app-level トークンがデータベースに触れる前にそれを暗号化します。BYO には OAuth の client id/secret は不要で、デプロイレベルの app トークンも不要です——各インストールは admin が貼り付けたトークンを使います。
-
32 バイトのキーを生成し、API サーバーに設定します。
MULTICA_SLACK_SECRET_KEY=<base64-encoded 32-byte key>たとえば:
openssl rand -base64 32。 -
API を再起動します。キーを設定するまで、Settings → Integrations には「Slack integration not enabled」という通知が表示され、Connect Slack のエントリポイントは非表示のままになります。
キーはちょうど 32 バイトにデコードされなければなりません——openssl rand -base64 32 はそれを満たします。これは長く使い続けるシークレットとして扱ってください。ローテーションしたり紛失したりすると、すでに保存済みのトークンが復号できなくなり、すべての Bot を再接続せざるを得なくなります。「アカウントを紐づける」リンクは、Web アプリの URL(MULTICA_APP_URL、未設定時は FRONTEND_ORIGIN にフォールバック)から生成されます。通常のデプロイではこれは既に設定されているため、追加で設定するものはありません。