🐦

Slackでオウム返しをするBotを作る

2025/02/28に公開

はじめに

ほんとにやりたいことはRAGでAIエージェントを作ることですが、一旦基礎として一番簡単なオウム返しBotを作ってみます。

前提

  • サーバー側の使用言語は Python、ローカルで起動
  • Slack が使えること

実装

Slack アプリの作成

  1. (Slack API)[https://api.slack.com/apps]にアクセス
  2. Create New Appを選択
  3. From a manifestを選択
  4. アプリを入れたい Slack のワークスペースを選択
  5. Manifest ファイルを作成する(name だけいじりまいた)
  6. Createを押して完了

Slack アプリの設定

  1. Socket Mode の有効化
    • 左側メニューバーより Socket Modeを選択
    • Enable Socker Mode を on にする
    • Token Name に任意の名前を入れる
    • scope はもともとあるものにする(connections:write)
    • Generate を押して、Token を控えておく
  2. Bot Token Scopes の設定
    • メニューバーから OAuth & Permissions
    • Bot Token ScopesAdd an OAuth Scopeをクリック
    • chat:writeを選択
  3. トリガーの設定
    • 左側メニューバーよりEvent Subscriptions
    • Enable Eventsを on にする
    • Subscribe to bot eventsからAdd Bot User Eventを選択
    • イベントリストから app_mention を選択(メンションされた時に動くようにする)
    • Save Changeをクリック
  4. アプリのインストール
    • メニューバーから Install App
    • Install to Workspace を選択
    • 許可を選択
    • Token を控えておく

補足: アプリの装飾

アイコンなどをつけるとそれっぽくなりますね。

サーバーの設定

ローカルの適当な場所で実行してください。

  1. 仮想環境の作成
    • 例: venvで作る場合
    • python -m venv .venv
  2. 仮想環境に入る
    • (Macの場合)source/bin/activate
  3. ライブラリのインストール
  • pip install slack-bolt
  1. 環境変数の設定
    • export SLACK_APP_TOKEN="xapp-********"
    • export SLACK_BOT_TOKEN="xoxb-********"
  2. app.py の作成
from slack_bolt import App
from slack_bolt.adapter.socket_mode import SocketModeHandler
import os


app = App(token=os.environ.get("SLACK_BOT_TOKEN"))

@app.event("app_mention")
def handle_app_mention_events(event, say):
    say(event["text"])


if __name__ == "__main__":
    SocketModeHandler(app, os.environ.get("SLACK_APP_TOKEN")).start()
  1. 立ち上げ
    • python app.py

動作確認

動いた!

さいごに

次はAWSを使って作ってみます!

Discussion