はじめに
slack botを作る際に、「やりたいことは決まっているのに、どのイベント名を選べばいいの?」 「このイベントを使うには、どのスコープ(権限)を設定すればいい?」 「そもそも、イベントを受け取るURL(エンドポイント)はどう管理するの?」途中で必要なURLの検証プロセスで躓いてしまったのでまとめ記事を作成しました。
Slack Appとは
Slackを介して使用できるアプリです。Slackのコマンドから実行させたり、時間指定して自動実行させたりすることができます。今回は、Slack Appに含まれている 「Bot User」を使用します。
今回は、Botがユーザーのアクションをトリガーとする、Event Subscriptionsの使用の仕方について解説します。
Event Subscriptionsとは
Slackで特定のアクションが起きた時に、Slackがあらかじめ登録しておいたURLに対して、そのイベント情報を自動的に送信してくれる機能です。
実践:Slack Appの作成と設定
①Slack APIの公式サイトにアクセスし、Create New Appをクリックします。
②From scratchを選択します。
③アプリの名前を入力し、Slack Appを作成したいワークスペースを選択します。
④サイドメニューからOAuth & Permissionsをクリックします。
⑤権限の設定を行います。
OAuth & PermissionsページにあるScopesでAdd an OAuth Scopeをクリックし、必要な権限を選択します。実際に、Botがslackのチャンネルにメッセージの投稿がしたい場合は、chat writeを選択します。
以下権限の例
- channels:history: パブリックチャンネルの会話履歴を見る。
- groups:history: プライベートチャンネルの会話履歴を見る。
- reactions:write: Botがメッセージにスタンプを押すことができる
⑥Event Subscriptionsの登録を行います。
サイドメニューからEvent Subscriptionsページを開き、Enable Eventsをオンにします。Request URLに、リクエストを受け取るエンドポイントを入力します。

次の手順で私は、つまづいてしまったので、次からつまづかないように詳しく解説していきます。URLを入力した後に、Slackはエンドポイントに対して検証リクエストを送信し、応答を確認します。
⑦Request URLにリクエストを受け取るエンドポイントを入力します。
RequestURLにURLを入力すると、Slackはそのエンドポイントに対して一時的な検証リクエストを送信し、応答の確認をします。
Slack側から送られてきた、パラメーターをレスポンスでそのまま返すコードを書いておく必要があります。この検証がなぜ行われているのか?
Slackはイベントデータを送信する先が正しいサーバーであることを確認するために行われているそうです。
Slack側から送られてきた、パラメーターをレスポンスを返さないと以下のようにエラーになります。

⑧実際に使ったコード
今回は、AWSのLambdaでPythonを使用した際の例です。
import json
def lambda_handler(event, context):
# API GatewayやFunction URL経由の場合、bodyは文字列で来るので変換する
body = json.loads(event['body'])
# challengeがあれば返し、なければ空文字を返す(Slackは200 OKさえ返ればOK)
return {
"statusCode": 200,
"body": json.dumps({"challenge": body['challenge']}) if "challenge" in body else ""
}
実際に検証が成功したら、Request URL Verified と表示されます。
⑨ Subscribe to bot eventsを登録します。
Request URLの下にSubscribe bot EventsでAdd Bot User Eventをクリックします。
実際に使用したいEventを選択します。設定が完了したら、Save Changesをクリックして保存します。
Slack Appの設定は以上になります。
⑩Slackのチャンネルに今回作成したアプリを追加します。
チャンネルの詳細から作成したSlack Appをチャンネルに追加します。
Subscribe to bot eventsのまとめ
イベントは90種類以上あるので、実際によく使いそうだと思ったものをまとめました。(2025年12月13日時点)
全てのイベントを確認したい場合は、以下の公式ドキュメントを参照してください。
公式ドキュメント
1. Botと会話する(メッセージ)
| イベント名 | どんな時に使う? |
|---|---|
app_mention |
メンション(@Bot)した時 |
message.im |
DMを送った時 ユーザーとBotが、1対1で会話。 |
message.channels |
チャンネルに投稿した時 「特定のキーワード」に反応させたい。 |
2. スタンプで操作する(リアクション)
| イベント名 | どんな時に使う? |
|---|---|
reaction_added |
スタンプを押した時 「✅」ボタンを押したらタスク完了など、スタンプをを押した時のトリガー。 |
reaction_removed |
スタンプを消した時 間違って押したスタンプを取り消した場合、Botの処理も取り消す。 |
3. 行動に反応する(アクション)
| イベント名 | どんな時に使う? |
|---|---|
member_joined_channel |
チャンネルに参加した時 ユーザーが入室した瞬間に「ようこそ!」と挨拶したい場合。 |
file_shared |
ファイルを送った時 ユーザーがアップロードした画像や資料を、Botに処理させたい場合。 |
最後に
今回は、slack botを作る際に、「やりたいことは決まっているのに、どのイベントを選べばいいの?」「イベントを受け取るURL(エンドポイント)はどう設定するの?」など、実際に作成してみて疑問に思った箇所が多かったので作成の仕方、Subscribe to bot eventsの種類をまとめました。Slack Botは簡単に作れると思うのでぜひ作ってみてください。





