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

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

関連記事

no image

FlaskアプリをAzure App Serviceにデプロイする手順

  <目次> (1) FlaskアプリをAzure App Serviceにデプロイする手順  やりたいこと  (1-0) 前提事項  (1-1) STEP1:Flaskアプリの準備  (1 …

no image

Miroでプランを確認する方法

  <目次> (1) Miroでプランを確認する方法  (1-1) 確認方法  (1-2) 【注意点】基本的にプラン(≒Subscription)は「アカウント」ではなく「チーム」に紐づく …

バイナリエディタの使い方や見方(「アドレス」や「テキスト」とは?)

<目次> (1) バイナリエディタの使い方や見方(「アドレス」や「テキスト」とは?)  (1-1) バイナリデータ・バイナリエディタとは?  (1-2) バイナリエディタの見方  (1-3) バイナリ …

Slackでスタンプが押されたら転送する方法(指定のチャンネルへの転送)

  <目次> (1) Slackでスタンプが押されたら転送する方法(指定のチャンネルへの転送)  (1-1) 「リアク字チャンネラー」の概要  (1-2) 「リアク字チャンネラー」の設定手順 …

エクスプローラーの検索が遅い際の対処方法

  <目次> (1) エクスプローラーの検索が遅い際の対処方法  (1-1) Everythingとは?  (1-2) Everythingの導入手順 (1) エクスプローラーの検索が遅い際 …

  • English (United States)
  • 日本語
Top