Slack API 設定方法
概要
slack api からアプリを作成して、 使用する機能に応じて下記で設定を行う。
botの作成
- Bot User
表示名を登録する。
「Always Show My Bot as Online」をチェックすると、
追加したbotのステータスが常にログイン状態に表示される。
特定メッセージに対して、botを反応させる
- トリガーの作成
Event Subscriptions
「Request URL」
トリガーが発火した際に叩くAPIのURLを設定する。
このAPIでbotのメッセージを投稿したり、他処理を対応する。
※URL登録時に疎通確認用のreturnが必要(下記項目参照)
「Subscribe to Workspace Events」
ワークスペースが対象のイベントを設定する。
(例えばワークスペース内のチャンネルにコメントが投稿されたら)
「Subscribe to Bot Events」
botが対象のイベントを設定する。
(例えばbotにDMを送ったら)
- イベントのリファレンス
スラッシュコマンドの追加
slackで使用できるスラッシュコマンドを追加できる。
- コマンドの追加
Slash Commands
「Command」
追加するコマンド
「Request URL」
コマンドが入力された際に叩きに行くAPIのURL
「Short Description」「Usage Hint」
コマンド入力時に表示される、説明とヒント
※オプションコマンドなどを追加するなら記載しておいた方がよい。
スラッシュコマンドはコマンド送信から3秒以内にAPIから返答を返さないとタイムアウトのエラー表示がされる。
インタラクティブなメッセージの送信
メッセージをテキスト以外、例えば画像やボタンやプルダウンなどで装飾、もしくは返答しやすくできる。
WebApiの「chat.postMessage」で「attachments」を使えばできる。
※「blocks」を使ってもできたので、違いが分からない。
- リファレンス api.slack.com
ユーザのメッセージ回答への反応
インタラクティブなメッセージでボタンや、プルダウン等を送った際の返答を受けとる。
- Interactive Components
「Request URL」
返答があった際に叩くAPIのURLを設定する。
Request URLの疎通確認用return
Request URLに設定するURLは最初に疎通確認用の通信が行われ、
それにパスしないと設定ができない。
設定されたURLに対して、「challenge」というパラメータが送られるので、
それを送り返してあげればOK。
- サンプル(GAS)
function doPost(e){ var postData = JSON.parse(e.postData.getDataAsString()); var res = {}; if(postData.type == 'url_verification') { res = {'challenge':postData.challenge} } return ContentService.createTextOutput(JSON.stringify(res)).setMimeType(ContentService.MimeType.JSON); }