プログラムのメモ

JSとかAPIとか諸々のメモ

Slack API 設定方法

概要

slack api からアプリを作成して、 使用する機能に応じて下記で設定を行う。

botの作成

表示名を登録する。

「Always Show My Bot as Online」をチェックすると、
追加したbotのステータスが常にログイン状態に表示される。

特定メッセージに対して、botを反応させる

  • トリガーの作成

Event Subscriptions

「Request URL」
トリガーが発火した際に叩くAPIのURLを設定する。
このAPIbotのメッセージを投稿したり、他処理を対応する。
※URL登録時に疎通確認用のreturnが必要(下記項目参照)

「Subscribe to Workspace Events」
ワークスペースが対象のイベントを設定する。
(例えばワークスペース内のチャンネルにコメントが投稿されたら)

「Subscribe to Bot Events」
botが対象のイベントを設定する。
(例えばbotにDMを送ったら)

  • イベントのリファレンス

api.slack.com

スラッシュコマンドの追加

slackで使用できるスラッシュコマンドを追加できる。

  • コマンドの追加

Slash Commands

「Command」
追加するコマンド

「Request URL」
コマンドが入力された際に叩きに行くAPIのURL

「Short Description」「Usage Hint」
コマンド入力時に表示される、説明とヒント
※オプションコマンドなどを追加するなら記載しておいた方がよい。

  • 注意 Commandに登録した単語はあくまでフックで、
    APIには入力されたコマンド全てが送信されるので、
    オプションなどを追加する場合は、API側でパースする必要がある。

スラッシュコマンドはコマンド送信から3秒以内にAPIから返答を返さないとタイムアウトのエラー表示がされる。

インタラクティブなメッセージの送信

メッセージをテキスト以外、例えば画像やボタンやプルダウンなどで装飾、もしくは返答しやすくできる。

WebApiの「chat.postMessage」で「attachments」を使えばできる。
※「blocks」を使ってもできたので、違いが分からない。

ユーザのメッセージ回答への反応

インタラクティブなメッセージでボタンや、プルダウン等を送った際の返答を受けとる。

  • 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);
}