迷ったらカレー

技術系の雑多なブログ

年の瀬だし今年1年どんなスタンプを使ったのか見てみる

これは、Recruit Engineers Advent Calendar 2019 22日目の記事です。

こんにちは。リクルートテクノロジーズの加藤です。 リクルートテクノロジーズのslackはtimesと呼ばれる分報文化が盛んで、ユーザそれぞれが自分のtimesを作って好き勝手呟いたり誰かと雑談したり、真面目に議論したりと、おもいおもいの使い方をしています。

そろそろ年の瀬なので、今年1年timesで使われたスタンプを集計したりしてみようかなと思い立ち、やってみましたという記事です。ソースは全て公開しているので、よかったら遊んでみてください。

github.com

出力イメージ

bot宛にメンションを飛ばすと、集計をして返してくれるというシンプルな作りになっています。 下画像は僕のtimesで実行してみた結果です。が多いことからどんなtimesなのかがよくわかります。

f:id:yoshiyuki-kato:20191221074808p:plain

遊び方

1. slackアプリケーションを作る

まず、ワークスペースに新しくアプリケーションを追加します。 アプリケーションが追加できたら、必要な権限などの設定をしていきます。

api.slack.com

botユーザを追加

f:id:yoshiyuki-kato:20191221075054p:plain

oauth権限を設定

データを取得するために必要な history 系の権限と、メッセージ投稿に必要な権限を設定します。bot権限は、botユーザを追加した時に自動で設定されます。 f:id:yoshiyuki-kato:20191221075118p:plain

eventサブスクリプションを設定

botあてのメンションに反応するため、app_mention イベントを設定します。 f:id:yoshiyuki-kato:20191221075429p:plain

botユーザをチャンネルに招待する

メンションを飛ばすなりすれば招待できます。app_mention イベントに反応するために必要です。 f:id:yoshiyuki-kato:20191221080608p:plain

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として設定します。

f:id:yoshiyuki-kato:20191221075237p:plain

3. リモートにデプロイする

僕はappengine上で動かしていますが、herokuでもなんでも動かしたい環境にデプロイしてください。 やることは一つだけで、デプロイが終わったらslackアプリケーションのevent subscription URLを更新するだけです。

さいごに

楽しんでいただければ幸いです。もしバグとか見つけたらIssueなど上げてくださると助かります。