SlackのSlash commandを使って CoderDojo Kashiwa の参加者名簿を表示する
CoderDojo Kashiwa ではPHP+MySQLで作ってる参加フォームを使って参加者登録をしている。
参加者が新しく登録するとSlackに通知を飛ばすWebHookは前から使っていたけど、せっかくデータベースにいろいろな情報が溜まっているので過去の参加者履歴とかをサクッと見られるコマンドを作ってみた。
Slack にコマンドを登録する
もともと使っていたappにslasu commandを追加した。
それぞれのコマンドを実行したときに叩くURLを登録しておく。
SlackからAPI叩くときは基本的にPOSTで送られる。(GETでもできる)
レスポンスはJSON形式で送る。
コマンドを実行してAPIを叩く
コマンドを実行するとPOSTリクエストが送られる。
リクエストのパラメータに `text` があって、ここにコマンド以下に入力されたテキストが入ってくる。
今回扱いたいのは数字なので、数字以外が入っていたらエラーを返している。
$times = $_POST['text']; //人数を取得する $data = $memberManager->getMemberList($times); if(ctype_digit($times)){ $members = ""; for ($i=0; $i < count($data); $i++) { $num = $i + 1; $members = $members.$num.". ".$data[$i]["childName"]."\n"; } $returnObject = array( "text" => "【第{$times}回の参加者リストを表示します】\n{$members}" ); }else{ $returnObject = array( "text" => "エラー!数字を入力してください。" ); } header('Content-Type: application/json'); echo json_encode($returnObject);
Slackに結果が表示される
JSONデータのパラメータ `text` に表示したい文字列を追加してあげればOKっぽい。
今回は縦に一列表示させたかったのでfor文でループさせて1つの文字列に変換している。
こちらの画像は `/remaining [times]` を実行した結果。
これでまた1つ楽になった...!