概要
- slack command など request end point を 設定する
- slack command request から data を取得
- slack command が投入された channel へ応答を返す
- 別記事にて記述
app / slasch command の設定
- slack app 設定画面を開く
- [ craete new app ] を選択
- [ from scratch ] を選択
- [ app name ] へ名前を入力
- [ work space ] を選択する
- [ create app ] を選択
- [ slash command ] を開く
- [ Create New Command ] を選択し, 以下を埋める
- Command : command 名を設定 - Request URL : rails の url path を設定 # http://rails.path/ など - Short Description : command の簡易説明を設定 - Usage Hint : command の使用方法などを設定
- [ save ] を選択
- [ Create New Command ] を選択し, 以下を埋める
- [ install app ] を左メニューから選択
- [ install to workspace ] を実行
- slack を開く
- 上記 command を適用する channel を開く
- チャット入力欄の左下の
+
ボタンを選択 - 検索欄へ
add
と入力 - [ add apps to channel ] を選択
- 先程登録した slach command を選択する
以上で slach command が channel へ有効化される
interaction event 発生時の request URL を設定
command とは別に event 発生時の URL を設定可能.
event は, app が slack 上に投稿した message に付随する button を click した際などに発生する.
- slack app 設定画面を開く
- [ Interactivity & Shortcuts ] を開く
- [ Ruquest URL ] を設定
- [ Save Changes ] を選択
request data 取得
以下2つの手法を上げる
- command
- interaction event
command
- slack から, 登録した command を実行
- rails へ request が届く
- 以下, params から取得できる data を抜粋
params["user_id"] : 送信元 user id
params["user_name"] : 送信元 user name
params["team_id"] : team id
params["channel_id"] : channel id # 応答を返す際に用いる
params["api_app_id"] : api app id
params["command"] : 実行された command name
params["text"] : command に続いて入力された text
得られる data は限定されている.
補足情報が必要な場合, 上記 text への入力が必要.
interaction event
- slack から, app が作成した button などを click
- rails へ request が届く
- params['payload'] から request data を取得
- json string のため, hash へ変換が容易
- 以下, payload から取得できる data を抜粋
payload["type"] : event type
payload["user"]["id"] : user id
payload["team"]["id"] : team id
payload["api_app_id"] : api app id
payload["message_ts"] : bot が投稿した message の更新などにもちいる
event type と payload 構造
- Shortcuts
- こちらは使用したことないので, 不明
- https://api.slack.com/reference/interaction-payloads/shortcuts
- block_actions
- block message からの request
- https://api.slack.com/reference/interaction-payloads/block-actions
- view_submission
- modal からの request
- https://api.slack.com/reference/interaction-payloads/views
例えば, 複数の block_actions を作成する場合, type 以外の何らかの判別方法を組み込む必要があると思われる.
channel へ応答を返す
前項で取得した, user_id, channel_id などが必要となる.
応答方法は以下記事へ
https://qiita.com/Satoshi_Numasawa/items/3fc9078beabff666280c
以上