こんにちは、パレイド技術部です。
連載「バーチャルAI実験:人間が答えるチャットボットの構築」の補足記事、2本目です。
本編第 2 回で Slack への通知コードを書きましたが、Slack 側の設定手順は省略していました。手順の長さと英語で少し面食らうかもしれませんが、順番に進めればそれほど難しくはありません。
この補足では、Slack アプリの作成から Bot トークンの取得、Event Subscriptions の設定までを解説します。
本記事はローカル LLM による自動執筆パイプラインで生成されました。現段階ではクラウド AI(Claude 等)の補助や人間の編集が介在していますが、pareido.jp では最終的に AI が自律的にコンテンツを制作できる仕組みの構築を目指しています。
1. Slack アプリの作成
Slack でメッセージを送受信するには、Slack アプリを作成して Bot としてワークスペースにインストールする必要があります。
主な手続きは Web で行います。Slack のアカウントは作成済みで、一般的な利用経験がある方向けに手続きを紹介します。
手順
Slack API: Your Apps にログインし、下記の画面で「Create an App」をクリックします。

表示から「From scratch」を選択します。

アプリ名(例:「Virtual AI Bot」)と、インストール先のワークスペースを選択します。
ワークスペースは、仕事で複数使っている場合などは確認して問題のない場所を指定します。
後で変えることができませんので注意が必要です。
入力が完了したら「Create App」をクリックします。

作成が完了すると、アプリの「Basic Information」ページが表示されます。

2. Bot Token Scopes の設定
アプリに Slack 上で何を許可するかは「スコープ」で制御されます。人力バーチャルAI に必要なスコープを設定します。
手順
左メニューから「OAuth & Permissions」を開きます。

「Scopes」セクションまでスクロールし、「Bot Token Scopes」に以下のスコープを追加します。
| スコープ | 用途 |
|---|---|
chat:write | チャンネルへのメッセージ送信(質問の通知) |
channels:history | チャンネルのメッセージ履歴の読み取り(回答の取得) |
スコープの追加には、まず「OAuthスコープを追加する」をクリックします。
(編者注:pareido.jpの環境ではなぜかここだけ日本語でした。環境で異なる可能性があり、適宜読み替えてください)

その後、入力欄に上記の文字列を入力し、表示される選択肢から該当のものを選択します。

これを必要なだけ繰り返して下記の状態とします。

注意: スコープは必要最小限にしてください。不要な権限を付けるとセキュリティリスクが増します。
3. ワークスペースへのインストール
スコープを設定したら、アプリをワークスペースにインストールします。
手順
「OAuth & Permissions」ページ上部の「Install to Workspace」をクリックします。(Workspaceは実際の名前が入ります、画像ではボカシを入れています)

権限の確認画面で「許可する」をクリックします。

インストールが完了すると、Bot User OAuth Token が表示されます。

この xoxb- で始まるトークンを .env の SLACK_BOT_TOKEN に設定します。
export SLACK_BOT_TOKEN="xoxb-xxxx-xxxx-xxxx"
注意: スコープを変更した場合は、アプリの再インストールが必要です。
4. Signing Secret の取得
Slack からの Webhook リクエストが本物であることを検証するために、Signing Secret を使います。
手順
左メニューから「Basic Information」を開き、「App Credentials」セクションの「Signing Secret」を「Show」で表示します。

表示された値をコピーし、.env の SLACK_SIGNING_SECRET に設定します。
export SLACK_SIGNING_SECRET="取得した Signing Secret"
5. Event Subscriptions の設定
Slack でユーザーがスレッド返信したことを FastAPI サーバーで検知するには、Event Subscriptions を有効にします。この手順には実際のアプリが稼働している必要があります。
手順
左メニューから「Event Subscriptions」を開き、「Enable Events」をオンにします。

「Request URL」に以下の形式で URL を入力する:
https://<your-domain>.ngrok-free.app/slack/webhook

Slack が URL にチャレンジリクエストを送信し、サーバーが正しく応答すると「Verified」と表示されます。
重要: URL 検証の時点で FastAPI サーバーと ngrok が起動している必要があります。本編第 3 回で実装した slack_webhook エンドポイントの URL 検証ロジックが動作します。
購読するイベントの追加
折りたたまれている「Subscribe to bot events」セクションを開きます。

「Add Bot User Event」をクリックし、message.channels を入力し、選択肢を選んで追加します。
| イベント名 | 意味 |
|---|---|
message.channels | パブリックチャンネルでのメッセージ投稿(スレッド返信を含む) |

ページ下部の「Save Changes」を忘れずにクリックしましょう。
6. 回答者チャンネルの作成と Bot の招待
質問の通知先となる Slack チャンネルを用意し、Bot を招待します。
手順
「+」ボタンなどから、Slack ワークスペースで新しいチャンネルを作成します。(例:#virtual-ai-questions)

チャンネル内で /invite @Virtual AI Bot と入力して Bot を招待します。

Bot をチャンネルに招待しないと not_in_channel エラーになります。これは見落としやすいポイントです。
7..envへの反映
ここまでの手順で取得した値を .env に設定します。
# Slack の認証情報
export SLACK_BOT_TOKEN="xoxb-で始まる Bot User OAuth Token"
export SLACK_SIGNING_SECRET="取得した Signing Secret"
8. 動作確認
設定が完了したら、Slack への通知が正常に動作するかを確認します。
- FastAPI サーバーと ngrok を起動する
- LINE からメッセージを送信する(前回の補足で設定済みの場合)
#virtual-ai-questionsチャンネルに質問の通知が届くことを確認する- スレッドで回答を投稿し、LINE に返信が届くことを確認する
通知が届かない場合は、以下を確認してください。
- Bot がチャンネルに招待されているか
SLACK_BOT_TOKENが正しく設定されているか- Event Subscriptions の Request URL が Verified になっているか
message.channelsイベントが追加されているか
まとめ
Slack 側の設定手順をまとめます。
- Slack API でアプリを新規作成
- Bot Token Scopes に
chat:write、channels:history、channels:readを追加 - ワークスペースにインストールし、Bot User OAuth Token を取得
- Signing Secret を取得
- Event Subscriptions を有効化し、
message.channelsを購読 - 回答者チャンネルを作成し、Bot を招待
次の補足記事では、ngrok のインストールと固定ドメインの設定方法を解説します。



