FastAPI で作る Slack Bot アプリの開発手順
🎯目的
FastAPI で作った Slack Bot アプリを公開できるようにする
🏃手順
1.🤵管理者・・・Slack Bot を新規作成する
Slack API: Applications | Slackへアクセスして、「Create New App」をクリックしてください。
「From Scratch」を選択してください。
上から「Slackのボット名」を入力し、「ボットを導入するワークスペース」を選択してください。
2.🤵管理者・・・Slack Bot に権限を付与する
左のサイドバーから「OAuth & Permissions」を選択してください。
「OAuth & Permissions」を選択したら、下にスクロールして「Scopes」という項目があるので、そちらで適切な権限を追加します。「Add an OAuth Scope」をクリックして、以下の権限を付与してください。
- app_mentions
- channels:history
- chat:write
- groups:history
- im:history
- mpim:history
- users:read
付与する権限の詳細はPermission scopes | Slackを参照してください。
3.🤵管理者・・・チャットボットとのダイレクトメッセージを許可する
左のサイドバーから「Features > App home」を選択し、Allow users to send Slash commands and messages from the messages tab
にチェックを入れてください。botへのDMができるようになります。
4.🤵管理者・・・Slack Bot をインストールする
左のサイドバーから「Install App」を選択し、「Install to Workspace」ボタンをクリックして、作成した Slack Bot をインストールしてください。
インストールしたら、トークンが発行されるのでこちらの文字列をコピーして、開発者に共有してください。
5.🤵管理者・・・Slack Botのクレデンシャル情報を開発者に共有する
左のサイドバーから「Basic Information」を選択し、「App Credentials」項目から以下の値をコピーして、開発者に共有してください。
- Signing Secret
6.👨💻開発者・・・Botを作成し、デプロイする
FastAPIで Slack からのリクエストを受信する処理を実装します。
import os
from fastapi import APIRouter, Request, Response
from slack_bolt import App
from slack_bolt.adapter.fastapi import SlackRequestHandler
app = App(token=os.getenv('SLACK_BOT_TOKEN'), signing_secret=os.getenv('SLACK_SIGNING_SECRET'))
app_handler = SlackRequestHandler(app)
@app.event("app_mention")
def handle_app_mentions(body, say):
print(body)
say("What's up?")
@app.event("message")
def handle_message():
pass
router = APIRouter(prefix='/slack')
@router.post("/events", name='slack events')
async def events(request: Request) -> Response:
return await app_handler.handle(request)
実装が終わったら公開し、URLhttps://hoge.com/slack/events
を管理者に共有します。
もしローカルで検証したい場合は、ngrokをお使いください。
ngrok http 8000
7.🤵管理者・・・チャットボットのEvent Subscriptionsを設定する
Slack App画面の左サイドバーにある「Features」>「Event Subscriptions」を選択し、Request URLに6.で発行したURLを貼り付けてください。
また、「Subscribe to bot events」に以下の値を登録してください。
- app_mention
- message.channels
- message.groups
- message.im
- message.mpim
最後に画面右下にある「Save Changes」ボタンを押下してください。
🔗APPENDIX
Discussion