シリーズ紹介
この記事は、 Slack Bot開発入門シリーズ(全3回) の第2回です。Slackのソケットモードを活用し、Google Colabを使って手軽にBotを開発する方法をステップごとに解説します。シリーズの各回の内容は以下の通りです。
- 第1回: ソケットモード対応のSlackアプリの作成と基本設定
- 第2回: Google Colabを使ったおうむ返しBotの実装方法(本記事)
- 第3回: Geminiを搭載したチャットボットの開発
第2回では、Google Colabを利用してソケットモード対応のおうむ返しBotを実装し、Slack上で動作確認する方法を解説します。
前提条件
この記事を進める前に、以下が準備できていることを確認してください。
-
Slackアプリの作成とソケットモードの設定が完了していること
(未完了の場合は、第1回の記事を参照してください) -
Googleアカウントを持っていること
(Google Colabを使用するため)
1. Google Colabのセットアップ
1.1 新しいノートブックの作成
- Google Colabにアクセスし、新しいノートブックを作成します
1.2 環境変数の設定
Slack APIトークンをGoogle Colab上で安全に使用するため、環境変数を設定します。
- 左サイドメニューから 「鍵アイコン(シークレット)」 をクリックします
-
「新しいシークレットを追加」 をクリックして、以下のキーと値を入力します
-
キー:
SLACK_BOT_TOKEN
値:xoxb-あなたのBotToken
-
キー:
SLACK_APP_TOKEN
値:xapp-あなたのAppToken
-
1.3 必要なライブラリのインストール
slack_bolt
ライブラリをインストールします。
slack_bolt
は、Slackアプリケーションを簡単に構築するためのPythonフレームワークです。
!pip install slack_bolt
2. おうむ返しBotの実装
2.1 コードの記載
以下のコードをGoogle Colabに記載して実行します。
from slack_bolt import App
from slack_bolt.adapter.socket_mode import SocketModeHandler
from google.colab import userdata
# Slackアプリを初期化
app = App(token=userdata.get("SLACK_BOT_TOKEN"))
# メンションイベントをキャッチしてオウム返し
@app.event("app_mention")
def echo_message(event, say):
say(event["text"])
# ソケットモードでアプリを起動
if __name__ == "__main__":
SocketModeHandler(app, userdata.get("SLACK_APP_TOKEN")).start()
2.2 コードの説明
- シークレットキーには以下のコードでアクセスできます
from google.colab import userdata
userdata.get('secretName')
-
App
: Slackアプリを初期化 -
@app.event("app_mention")
: メンションイベントを検知して応答 -
say(event["text"])
: 受け取ったメッセージをそのまま返す -
SocketModeHandler
: ソケットモードを使用してアプリを実行
eventの中身について
event
はSlackから送信されるイベントデータで、メンションやメッセージに関する情報が含まれています。主なフィールドは以下の通りです。
フィールド | 説明 |
---|---|
type |
イベントの種類(例: app_mention ) |
user |
メッセージを送信したユーザーのID |
text |
メッセージの本文 |
ts |
メッセージのタイムスタンプ |
channel |
メッセージが投稿されたチャンネルのID |
4. 動作確認
SlackでBotをメンションして、正しくオウム返しされるか確認します。
5. 実行の停止
Botの実行を停止するには、Google Colabの停止ボタンをクリックします。
おわりに
これでGoogle Colabを利用したソケットモード対応のおうむ返しBotの実装が完了しました。次回は、Slack BotにGeminiを搭載する方法を解説します。