投稿メッセージやメンションに反応するだけのslackアプリ(python)で作ってみた。意外と設定が面倒!
参考URL
https://api.slack.com/lang/ja-jp/hello-world-bolt
https://www.wantedly.com/companies/wantedly/post_articles/302887
1, https://api.slack.com/apps Create New APPで、適当なアプリ名、使うworkspaceを入力
2, 左のOAuth & Permissionsをクリックして、Bot Token ScopesのOAuth scopeをクリックして、
app_mentions:read
chat:write
groups:history
を追加し、ページ上部の「install to workspace」をクリック。ワークスペースに追加してOK?と聞いてくるので許可
Bot User OAuth Tokenが表示されるのでメモっておく
xoxb-xxxxxxxxxxxxxxxxxxxxxxxx
ボット用トークンだけじゃなく、アプリ用トークも必要!
3, 左のBasic Informationをクリックして、Generate Token and Scopesボタンを押す。Token Nameは何でもOK(オウム返し)
connections:write
を付与。
xapp-1-yyyyyyyyyyyyyyyyyyy
4, 左のSocket Modeをクリックして、Enable Socket Modeを有効化しておく
さらに、Event Subscriptionsも有効化。同じページ内のSubscribe to bot eventsから「Add Bot User Event」ボタンを押して
app_mention
message:groups
を付与
5, SLACK公式ライブラリをインストール
1 |
pip install slack_bolt |
6, chatbot.pyに、ようやくコーディング
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
import os from slack_bolt import App from slack_bolt.adapter.socket_mode import SocketModeHandler SLACK_BOT_TOKEN = os.environ.get("SLACK_BOT_TOKEN") SLACK_APP_TOKEN = os.environ["SLACK_APP_TOKEN"] # APPトークンから、アプリ生成 app = App(token=SLACK_BOT_TOKEN) @app.message("hello") # 送信されたメッセージ内に"キーワード"が含まれていたときのハンドラ。空文字だと全部のメッセージに反応 def say_hello(message, say): say(f"world!") @app.event("app_mention") # chatbotにメンションが付けられたときのハンドラ def respond_to_mention(message, say): say(f"メンションしないで!") @app.event("message") # ロギング def handle_message_events(body, logger): logger.info(body) # ソケット通信で、ずっと待機 SocketModeHandler(app, SLACK_APP_TOKEN).start() |
7, チャンネルを作って、チャンネル名をクリック「インテグレーション」タブから「アプリを追加する」ボタンで、自作の「オウム返し」を追加
8, DOS窓から、環境変数をセットしておく
set SLACK_BOT_TOKEN=xoxb-xxxxxxxxxxxxxxxxxxxxxxxx
set SLACK_APP_TOKEN=xapp-1-yyyyyyyyyyyyyyyyyyy
自分のPC上で、python chatbot.py で実行。
これで、このチャンネルに何か投稿すると、アプリが動作する