Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

IT技術 (Technology) Python Slack

Slackでコマンドを作る方法をご紹介(自作スラッシュコマンド)

投稿日:2023年5月4日 更新日:

 

<目次>

(1) Slackでコマンドを作る方法をご紹介(自作スラッシュコマンド)
 (1-0) やりたいこと
 (1-1) STEP1:Slackボットの開発(所要時間:60分)
 (1-2) STEP2:Slack AppにSlash Commandsの設定を追加(所要時間:10分)
 (1-3) STEP3:Pythonプログラムに「/demo」が呼ばれた時の処理を追記(所要時間:5分)
 (1-4) STEP4:疎通テスト(所要時間:5分)

(1) Slackでコマンドを作る方法をご紹介(自作スラッシュコマンド)

(1-0) やりたいこと

・Slackのスラッシュコマンドを自作したい
・コマンドを公開して、他の方も使えるようにする

 

<最終ゴールイメージ>
(図100)

ベースとなる考え方は下記をご参照ください。

(1-1) STEP1:Slackボットの開発(所要時間:60分)

↓こちらの記事内の手順(STEP1~STEP7)を全て実施し、土台となるSlackボットを用意します。
 
(概要)
Slackで発生するイベント(例:チャンネル投稿)を検知し、動作するSlack App(ボット)を作成します。

(1-2) STEP2:Slack AppにSlash Commandsの設定を追加(所要時間:10分)

・①メニューの「Slash Commands」を開きます。
(図121)
・②「Create New Command」を押下
(図122)
・③必要な設定情報を入力して「Save」押下
(表1)
入力項目
Command /demo
Request URL https://slack-howto-create-command.azurewebsites.net/demo
Short Description コマンドの作り方をデモする用

(図123①)

(表2)

入力項目 補足
Command 利用者が打つコマンド
Request URL 利用者が打つコマンドのリクエスト送付先。
Event Subscriptionsに指定したURL(図123③)と合わせる。
これにより、コマンドが「/slack/events」にルーティングされ、リクエストハンドラにHTTPのPOSTリクエストが送られ、適切な先(今回は「@s_app.command(‘/demo’)」にディスパッチしてくれます)

#イベント登録されたリクエストを受け付けるエンドポイント
@app.route(“/slack/events”, methods=[“POST”])
def slack_events():
    return handler_flask.handle(request)

Short Description 利用者がコマンドを打つ際の候補に出てくる説明文
(図123③)
(図123②)Short Descriptionのイメージ
・④「Install App」メニュー⇒「Reinstall to Workspace」を押下
(図124①)
・⑤「許可する」
(図124②)

(1-3) STEP3:Pythonプログラムに「/demo」が呼ばれた時の処理を追記(所要時間:5分)

・①コードを追記します。
(追記コード)
# SlackBoltインスタンスで、コマンド「/demo」の実行を検知
@s_app.command('/demo')
def demo(ack, respond, command):
    ack()

    # 投稿のチャンネルID、ユーザーID、投稿内容を取得
    channel_id = command['channel_id']
    user_id = command['user_id']
    text = command['text']

    # # もしボット以外の人からの投稿だった場合
    if BOT_USER_ID != user_id:               
        # 指定のメッセージを組み立て
        reply_text = ":small_blue_diamond::small_blue_diamond::small_blue_diamond:コマンド出力結果:small_blue_diamond::small_blue_diamond::small_blue_diamond:\r\n:earth_asia:他の方も/demoから使えます:+1:"
        # 指定のメッセージを返却
        respond(reply_text)
    # 正常応答を返却
    return Response(), 200
(図131)


・②Azure App Serviceへ再度リリースします。
(図132)

(1-4) STEP4:疎通テスト(所要時間:5分)

最後に、Slack側で実際にコマンドを実行してみて、期待したメッセージが投稿されるか?を確認します。
(動画141)

Adsense審査用広告コード


Adsense審査用広告コード


-IT技術 (Technology), Python, Slack
-

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

Slackで匿名のメッセージや返信を送る方法

  <目次> (1) Slackで匿名のメッセージや返信を送る方法  (1-1) 概要  (1-2) STEP1:Anonymity Botの導入  (1-3) STEP2:匿名投稿のテスト …

Pythonのconfigparesrで書き込みや書き換え等の基本的な使い方をご紹介

<目次> (1) Pythonのconfigparesrで書き込みや書き換え等の基本的な使い方をご紹介  (1-1) ConfigParserクラスについて  (1-2) サンプルプログラム  (1- …

no image

ソフトマックス関数の微分の導出をご紹介

  <目次> (1) ソフトマックス関数の微分の導出をご紹介  (1-1) ソフトマックス関数とは?  (1-2) ソフトマックス関数の微分(一般式)  (1-3) ソフトマックス関数の微分 …

ValgrindのIndirectly Lostの意味や実際のサンプルをご紹介

  <目次> (1) ValgrindのIndirectly Lostの意味や実際のサンプルをご紹介  (1-1) Valgrindの「Indirectly Lost」はどんな状況?  (1 …

Slack APIで投稿一覧を取得する方法をご紹介(Python)

  <目次> (1) Slack APIで投稿一覧を取得する方法をご紹介(Python)  (1-0) やりたいこと  (1-1) STEP1:Slackアプリの準備  (1-2) STEP …

  • English (United States)
  • 日本語
Top