--- title: Slack description: Slack App 経由で CowAgent を接続 --- > Slack App の **Socket Mode** を通じて CowAgent を接続します。ダイレクトメッセージ(DM)およびチャンネル(@メンションまたはスレッド内の返信で起動)に対応。Socket Mode は WebSocket の常時接続を使うため公開 IP やコールバック URL は不要で、すぐに利用できます。 ## 1. 接続手順 ### ステップ 1: Slack App を作成 1. [Slack API アプリ管理ページ](https://api.slack.com/apps) を開き、**Create New App** → **From scratch** をクリックします。 2. **App Name**(例: `CowAgent`)を入力し、インストール先の **Workspace** を選択して作成します。 ### ステップ 2: Socket Mode を有効化し App Token を取得 1. 左メニューの **Settings → Socket Mode** で **Enable Socket Mode** をオンにします。 2. `connections:write` スコープを持つ **App-Level Token** の生成を求められます。`xapp-` で始まるこの Token を保存してください。 Socket Mode は WebSocket 接続でイベントを受信するため、公開コールバック URL を公開する必要がありません。ローカルやイントラネットでの運用に最適です。 ### ステップ 3: Bot 権限を設定してインストール 1. **Features → OAuth & Permissions** を開き、**Bot Token Scopes** で **Add an OAuth Scope** をクリックして以下を 1 つずつ追加します: ``` app_mentions:read channels:history chat:write commands files:read files:write groups:history im:history mpim:history users:read ``` `files:read` / `files:write` は画像・ファイルの送受信に使用します。テキスト会話のみであれば省略可能です。 2. **Features → Event Subscriptions** を開き、**Enable Events** をオンにして、**Subscribe to bot events** で **Add Bot User Event** をクリックし、以下を追加します: ``` app_mention message.im message.channels ``` 非公開チャンネルで使用する場合は `message.groups` も追加してください。 3. **Features → App Home** を開き、**Show Tabs** 内の **Messages Tab** を有効にして、下の **Allow users to send Slash commands and messages from the messages tab**(メッセージタブからの送信を許可)にチェックを入れます。これを行わないと DM の入力欄が無効化され、ボットにメッセージを送れません。 4. **OAuth & Permissions** に戻り、**Install to Workspace** をクリックしてインストールします。インストール後、`xoxb-` で始まる **Bot User OAuth Token** を取得します。 Slack クライアントで「このアプリへのメッセージ送信は無効です」と表示される場合は、上記の App Home 設定が完了しているか確認し、Slack クライアントを再読み込み/再起動してください(必要に応じてアプリを会話一覧から削除して再度開きます)。 ### ステップ 4: CowAgent に接続 Web コンソール(既定 `http://127.0.0.1:9899`)を開き、**チャネル** メニュー → **チャネルを追加** → **Slack** を選択し、Bot Token(`xoxb-`)と App Token(`xapp-`)を貼り付けて接続をクリックします。 `config.json` に以下を追加して Cow を起動します: ```json { "channel_type": "slack", "slack_bot_token": "xoxb-xxxxxxxxxxxx", "slack_app_token": "xapp-xxxxxxxxxxxx", "slack_group_trigger": "mention_or_reply" } ``` | パラメータ | 説明 | 既定値 | | --- | --- | --- | | `slack_bot_token` | Bot User OAuth Token、`xoxb-...` の形式 | - | | `slack_app_token` | App-Level Token(Socket Mode 有効化後に生成)、`xapp-...` の形式 | - | | `slack_group_trigger` | チャンネルのトリガー方式: `mention_or_reply`(@ またはスレッド返信)/ `mention_only`(@ のみ)/ `all`(全メッセージ) | `mention_or_reply` | ログに以下のような出力が表示されれば接続成功です: ``` [Slack] Bot logged in as user_id=U0XXXXXXX, team=Txxxxxxxx [Slack] ✅ Slack bot ready, listening for events ``` ## 2. 機能 | 機能 | 対応状況 | | --- | --- | | ダイレクトメッセージ(DM) | ✅ | | チャンネル(@bot / スレッド返信) | ✅ | | テキストメッセージ | ✅ 送受信 | | 画像メッセージ | ✅ 送受信 | | ファイルメッセージ | ✅ 送受信(PDF / Word / Excel など) | | スレッド返信 | ✅ 起動メッセージのスレッドに返信を送信 | Slack はスレッドで会話を整理します。Bot は起動メッセージのスレッドに返信を送信するため、チャンネルがすっきりします。 ## 3. 使い方 接続が完了したら: - **ダイレクトメッセージ(DM)**: Slack の左サイドバー **Apps** からアプリを開き、直接メッセージを送ります。 - **チャンネル**: アプリをチャンネルに招待し(`/invite @your-app`)、`@your-app こんにちは` で起動します。以降は同じスレッド内で返信すれば会話を継続できます。 画像やファイルを送るときは、添付の入力欄に **テキスト説明**(説明・質問)を書いて一緒に送信できます。Bot は添付ファイルと説明を合わせて回答します。先に添付を送り、その後に質問を送る形でも、2 つのメッセージは自動でまとめて処理されます。