はじめに
- Slackでreactionしてくれた人の情報を集めたかった
- マウスオーバーでも誰がリアクションしたかは確認できるけどユーザIDを正確に集めたかったので目ではやりたくない
- プログラマたるもの楽をするために苦労をしたい
SlackのAPIを使う
-
reactions.getがあるのでこれを使えばよさそう
https://api.slack.com/methods/reactions.get/test
-
Required Argumentがtokenのみなので、このまま叩けばなんらか情報が取れるかと思ったけど以下レスポンスが返ってきた
{
"ok": false,
"error": "no_item_specified"
}
- アイテムを特定できないとダメそうですね
- アイテムはこいつらを指しているらしい (file, file comment, channel message, group message, or direct message)
- 今回はchannel messageを特定できれば良いのでtimestampを調べることにした
- messageのURLをコピーするとチャンネルIDとタイムスタンプがついている
- このような感じ https://XXXXXXXX.slack.com/archives/C1234567890/p1541732787005700
- reactions.getが要求する形式に合わせる
p1541732787005700
->1541732787.005700
- chanMel とtimestampを設定してAPIを叩いてみたら欲しい情報が得られた
- どうやらchannel messageの場合はchannelとtimestampは必須らしい(APIドキュメントのErrorsに書いてある)
{
"name": "woman-gesturing-ok::skin-tone-4",
"users": [
"W1234567890",
"W1234567890",
"W1234567890",
"W1234567890",
"W1234567890",
"W1234567890",
"W1234567890",
"W1234567890",
"W1234567890",
"W1234567890",
"W1234567890",
"W1234567890",
"W1234567890",
"W1234567890",
"W1234567890",
"W1234567890",
"W1234567890",
"W1234567890",
"W1234567890"
],
"count": 19
}
※ ユーザIDはマスク済み
まとめ
- reaction情報を集めたいメッセージのURLをコピーする
- タイムスタンプのフォーマットをAPIに合わせる p1541732787005700
->
1541732787.005700` - channelとtimestampを使ってreactions.get apiをコールする