年の瀬だし今年1年どんなスタンプを使ったのか見てみる
これは、Recruit Engineers Advent Calendar 2019 22日目の記事です。
こんにちは。リクルートテクノロジーズの加藤です。 リクルートテクノロジーズのslackはtimesと呼ばれる分報文化が盛んで、ユーザそれぞれが自分のtimesを作って好き勝手呟いたり誰かと雑談したり、真面目に議論したりと、おもいおもいの使い方をしています。
そろそろ年の瀬なので、今年1年timesで使われたスタンプを集計したりしてみようかなと思い立ち、やってみましたという記事です。ソースは全て公開しているので、よかったら遊んでみてください。
出力イメージ
bot宛にメンションを飛ばすと、集計をして返してくれるというシンプルな作りになっています。
下画像は僕のtimesで実行してみた結果です。草
が多いことからどんなtimesなのかがよくわかります。
遊び方
1. slackアプリケーションを作る
まず、ワークスペースに新しくアプリケーションを追加します。 アプリケーションが追加できたら、必要な権限などの設定をしていきます。
botユーザを追加
oauth権限を設定
データを取得するために必要な history
系の権限と、メッセージ投稿に必要な権限を設定します。bot
権限は、botユーザを追加した時に自動で設定されます。
eventサブスクリプションを設定
botあてのメンションに反応するため、app_mention
イベントを設定します。
botユーザをチャンネルに招待する
メンションを飛ばすなりすれば招待できます。app_mention
イベントに反応するために必要です。
2. ローカルで動かしてみる
$ git clone https://github.com/YoshiyukiKato/slack-reaction-counter
$ cd slack-reaction-counter
$ npm install
設定ファイルを作成
サンプルをコピーして、ローカル用の設定ファイルを作成します。 1で作成したslackアプリケーション設定画面から値を取得して、環境変数に設定します。
$ cp local.example.env local.env
export SLACK_SIGNING_SECRET= export SLACK_ACCESS_TOKEN=
エンドポイントを公開
slackのeventを受け取るには、slackからのwebhook用のエンドポイントが必要です。 エンドポイントはグローバルに公開されていないといけないので、ローカルで動かすならngrokを使います。
$ npm run local
$ ngrok http 3000
ngrokで割り当てられたURLをslackアプリケーションのevent subscription URLとして設定します。
3. リモートにデプロイする
僕はappengine上で動かしていますが、herokuでもなんでも動かしたい環境にデプロイしてください。 やることは一つだけで、デプロイが終わったらslackアプリケーションのevent subscription URLを更新するだけです。
さいごに
楽しんでいただければ幸いです。もしバグとか見つけたらIssueなど上げてくださると助かります。