概要
Python を使いました
Socket Mode は Bolt と呼ばれる SDK を使ったほうが扱いやすいので Bolt を使います
トークンは Bot トークンと App Level トークンを使います
環境
- macOS 11.7.10
- Python 3.11.6
- slack-bolt 1.18.1
準備
- アプリの作成
- Bot トークンの権限と取得
- app_mentions:read
- アプリの管理ページ -> 左メニュー「Install App」
- Socket モードの有効化
- アプリの管理ページ -> 左メニュー「Socket Mode」
- App Level トークの取得
- アプリの管理ページ -> 左メニュー「Basic Information」
Event Subscriptions の設定
左メニューの「Event Subscriptions」から使用するイベントを設定します
今回は特定のメッセージに反応するようにしたいので「message.channels」を追加します
インストール
- pipenv install slack_bolt
サンプルコード
from typing import Callable
from slack_bolt import App
from slack_bolt.adapter.socket_mode import SocketModeHandler
# こっちは Bot トークンを設定
app = App(token="xoxb-xxxxxxxxx")
# メッセージへの反応
# Hello に対して Hi there を返す
@app.message("Hello")
def say_hello(message: dict, say: Callable):
user = message["user"]
say(f"Hi there, <@{user}>!")
if __name__ == "__main__":
# Socket モードをスタートする
SocketModeHandler(
app,
# こっちは App Level トークンを設定
"xapp-xxxxxxxxx",
).start()
動作確認
-
pipenv run python app.py
で起動しましょう
アプリはチャネルに招待しておいてください
そしてメッセージで「Hello」と送信するとアプリが反応してメッセージが返ってくることが確認できると思います
最後に
Slack の Socket Mode を試してみました
最近作成したアプリでは RTM API が使えないので Socket Mode に慣れておくと良いかなと思います
RTM に似たような感じで特定のイベントに反応して返信するという動きができます
またプレーンテキストだけではなくボタンなどを含んだインタラクティブコンポーネントを送信することもできるようです
0 件のコメント:
コメントを投稿