Multica Docs

Slack Bot

エージェント用の Slack Bot を作成し、DM、チャンネル、/issue、/new、/clear コマンドから利用します。

Multica では、自分で作成した Slack app を使います。接続すると、チームメンバーは Bot へ DM を送る、チャンネルで @メンションする、/issue でタスクを作成する、/new で新しい Multica Chat を開始する、/clear で現在の Chat のエージェントコンテキストをリセットするといった操作ができます。

1 つの Slack app に接続できる Multica エージェントは 1 つです。複数のエージェントを接続する場合は、エージェントごとに app を作成してください。

始める前に

接続はワークスペースの owner または admin が行います。最終的に次の 2 つの認証情報を Multica へ入力します。

  • xoxb- で始まる Bot User OAuth Token
  • xapp- で始まる App-level Token

1. manifest から Slack app を作成する

Slack API Apps を開き、Create New App → From a manifest をクリックして Slack workspace を選びます。次の内容を 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
  slash_commands:
    - command: /issue
      description: Create a Multica issue
      usage_hint: "[description]"
    - command: /new
      description: Start a new Multica chat
      usage_hint: "[message]"
    - command: /clear
      description: Clear the current Multica chat context
      usage_hint: "[message]"
oauth_config:
  scopes:
    bot:
      - app_mentions:read
      - channels:history
      - files:read
      - 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

作成前に、2 か所の Multica をエージェント名に変更してもかまいません。manifest の権限やイベントは削除しないでください。削除すると、DM、チャンネルでのメンション、返信、/issue/new/clear が動作しないことがあります。

Slack の slash command 名は workspace 全体で共有されます。インストール済みの別 app が /new または /clear を使用している場合、app の作成または更新時に競合するコマンドが拒否されます。競合を解消するか、メッセージ形式の @Multica /new [メッセージ] または @Multica /clear [メッセージ] を送信して、ネイティブ slash command のインターセプトを回避してください。

添付ファイル対応が追加される前にこの Slack app をインストールしていた場合は、Bot scope に files:read を追加し、workspace に app を再インストールしてください。app を再インストールするまで、新しい scope は既存の Bot token に反映されません。

Bot は Socket Mode で Slack へ接続するため、公開 Request URL や OAuth Redirect URL の設定は不要です。

2. 2 つの token を取得する

Bot token

  1. Slack app で Install App を開きます。
  2. Install to Workspace をクリックし、権限を承認します。
  3. xoxb- で始まる Bot User OAuth Token をコピーします。

App-level token

  1. Basic Information → App-Level Tokens を開きます。
  2. Generate Token and Scopes をクリックします。
  3. connections:write scope を追加します。
  4. token を生成し、xapp- で始まる値をコピーします。

3. エージェントへ接続する

  1. Multica でエージェントを開き、Slack に接続するエージェントを選びます。
  2. 連携を開き、Slack に接続をクリックします。
  3. Bot token と App-level token を入力します。
  4. 接続をクリックします。

Multica は 2 つの token が同じ app のものか確認します。接続に成功すると、画面に Slack に接続済みと表示されます。

2 つの token は暗号化して Multica サーバーに保存されます。Token は認証情報です。タスク、コメント、コードリポジトリには書き込まないでください。ほかのエージェントやワークスペースに接続済みの app をそのまま再利用することはできません。先に元の接続を解除してください。

初回利用

メンバーが初めて Bot に DM を送るか @メンションすると、アカウント連携用のリンクが届きます。そのワークスペースで使う Multica アカウントにログインしてから、Slack に戻ってもう一度メッセージを送ってください。

リンクは 1 回だけ使用でき、15 分後に期限切れになります。期限が切れた場合は、Bot にもう一度メッセージを送ると新しいリンクが届きます。同じ Multica ワークスペースにある複数の Bot が同じ Slack workspace のものなら、通常は既存のアカウント連携を再利用できます。

Bot を利用できるのは、現在の Multica ワークスペースのメンバーだけです。

Slack から仕事を依頼する

DM

Slack サイドバーの Apps から Bot を開き、そのままメッセージを送ります。@メンションは不要です。

チャンネルとグループ

まず /invite @your-bot を実行して Bot をチャンネルに追加し、@your-bot 依頼内容 を送ります。スレッドごとに独立したセッションが作られます。追加の依頼も、同じスレッドで Bot を @メンションしてください。

Bot が応答するのは、明示的に @メンションされたチャンネルメッセージだけです。実行時には、権限の範囲内でそのスレッドの直近のコンテキストを読み取ります。

ファイルを送る

DM、または Bot を @ メンションしたチャンネルのメッセージに、そのままファイルを添付します。ファイルは同じ作業の添付ファイルとして届くので、エージェントは依頼内容と合わせて読み取れます。

これには files:read scope が必要です。添付ファイル対応より前にインストールした app の場合は、手順 1 の注意書きを参照してください。1 ファイルあたり 20 MiB 以下、1 メッセージにつき最大 10 件です。サイズ超過、アップロード処理中、または Slack 以外(Google Drive や Dropbox のリンクなど)にあるファイルはスキップされますが、メッセージ本文はエージェントに渡ります。

/issue でタスクを作成する

チャンネルまたは DM で、次のように入力します。

/issue Safari ではログインに成功してもログイン画面に残る

このコマンドでは Bot の @メンションは不要です。Multica は説明を現在の Bot に対応するエージェントへ渡し、エージェントがタイトルと本文を整理してタスクを作成します。Slack には最初に自分だけが見える受付メッセージが表示されます。作成が完了すると、Multica のインボックスに通知が届きます。

/new で新しい Chat を開始する

Bot との DM で /new を送ると、空の新しい Chat がすぐに作成され、Multica に表示されます。/new <メッセージ> では、そのメッセージが新しい Chat の最初のターンになります。引数なしの /new は、最初の有効なユーザーメッセージが届くまで「新しいチャット」と表示され、その後は既存の最初のメッセージに基づくタイトル処理が使われます。

以前の Chat は Multica の Web、デスクトップ、モバイルに残り、引き続きメッセージを送信できます。新しい Chat に切り替わるのは、この Slack 会話からの後続メッセージだけです。

チャンネルまたはスレッドでは、Slack のネイティブ slash command payload から対象スレッドを特定できません。対象スレッド内で @Multica /new [メッセージ] を送信してください。

/clear で現在の Chat のコンテキストをクリアする

Bot との DM で /clear を送ると、現在の Multica Chat はそのまま維持され、エージェントから見えるコンテキストだけがリセットされます。Chat の全履歴は Multica に保存されたままです。/clear <メッセージ> では、そのメッセージが新しいコンテキストの最初のターンになります。引数なしの /clear は次の実メッセージに境界を適用します。

チャンネルまたはスレッドでは、対象スレッド内で @Multica /clear [メッセージ] を送信してください。

接続を管理する

設定 → 連携を開くと、接続済みの Slack Bot をすべて確認できます。ワークスペースの owner と admin は接続を解除できます。

接続を解除すると Socket Mode の接続が停止し、Bot は新しいメッセージを受信しなくなります。既存の会話と監査記録は削除されません。

セルフホスト設定

Multica Cloud では追加設定は不要です。セルフホスト環境では、Slack token を暗号化するキーを先に設定してください。

MULTICA_SLACK_SECRET_KEY=<base64-encoded 32-byte key>

次のコマンドで生成できます。

openssl rand -base64 32

API サービスを再起動してから Slack app を接続します。このキーは継続して保管してください。変更または紛失すると既存の token を復号できなくなり、app の再接続が必要になります。

アカウント連携用リンクには MULTICA_APP_URL が使われ、未設定の場合は FRONTEND_ORIGIN にフォールバックします。メンバーがアクセスできる Multica のアドレスを指定してください。

よくある問題

  • 接続時に token が無効と表示される: 接頭辞を確認し、2 つの token が同じ app のものか確認します。
  • app を検証できない: manifest に users:read が含まれていることを確認します。権限を更新した後は app を再インストールしてください。
  • DM の入口がない: app_home.messages_tab_enabledtrue であることを確認します。
  • チャンネルで返信がない: Bot がチャンネルに招待されており、メッセージで @メンションされていることを確認します。
  • /issue/new、または /clear がない: manifest に 3 つの slash command と commands scope が含まれていることを確認し、app を再インストールします。Slack が /new または /clear は使用済みだと表示する場合は、@Multica のメッセージ形式を使うか、workspace 全体のコマンド競合を先に解消してください。
  • ファイルがエージェントに届かない: manifest に files:read が含まれていること、scope を追加した後に app を再インストールしたことを確認し、ファイルが 20 MiB 以下かも確認します。
  • Bot が実行しない: エージェントがアーカイブされていないことと、使用するランタイムがオンラインであることを確認します。

次のステップ