本記事は、Slack Advent Calendar 2017の8日目の記事です。
株式会社CyberZの木村です。この記事を書くきっかけは、先月末にあったこんなやりとりから生まれました。
弊社では毎月末に締め飲み会というイベント(?)があり、その出欠がSlack上で問われたのでした。
ここのOK
の人数でお店に予約するのです。Slack上で解決とは、なんとお手軽なのでしょう・・・!!
ちなみにこの投稿をしたのは俺じゃないです。(なのでモザイクいれときました!)
このように、お店の予約をとるまでは問題がなく、便利だなーと見ていたのですが、出席者も欠席者も多かったので、いざお店に向かう段になって「行くの誰だっけ?」問題が発生しました。
そうです。点呼する必要があるのです。
PCだとそれぞれのリアクションの上にマウスを持っていくと誰のリアクションかわかりますし、スマホだと長押ししてるとわかります。でも、すこぶる見づらいのです。
会社のSlackでその画面を出すと個人情報の嵐なので、とりあえず個人Slack作って同じ状態を再現してみました。
おわかりいただけるだろうか?
スマホのリアクション表示は、割と見やすいんですが、ユーザ名のところはリストではなく結合された文字列で表現されているので、人数が多いと区切りがわかりにくかったです。
なのでいつも見慣れているJSONかCSVの形で出力したいなぁと思いました。
Slackで特定の投稿のリアクションを見るのはAPI一発でできます。なんてヌルゲーなのでしょう・・・!!
`U88DPF001`さんて誰ですの(´・ω・`)?
当日は時間もなかったのでここで諦めました。。。
SlackのAPIドキュメントに書かれているChannel
とかUser
とかは、IDだけ返ってくるんですね。
なので表示名や氏名(Full name)を知るためには、別途users.info
APIを叩いて、ユーザ情報を取ってこなければならなかったのです。
なのでコードを書きました。
出来上がったものがこちらです。
APIトークンを環境変数SLACK_API_TOKEN
に指定して、第一引数にパーマネントリンクを指定するとつぎのようなJSONがとれます。
[{
"reaction": "ok_woman",
"users": ["yu0819ki", "yu0819ki_bbb"]
}, {
"reaction": "no_good",
"users": ["yu0819ki_aaa"]
}]
ああ、これで参加者がわかりそうですね!ね!!
このソースにはもうちょっと手を加えるつもり(Slackに投稿したり、CSV化したり、Webから使えるようにしたり)ですが、SlackのAPIの取り回しの勘所はこんなところです。
というところでよろしくご査収ください。