chatbotで会社のSlackを監視する👀

  • 8
    いいね
  • 0
    コメント

これはトレタ Advent Calendar 201625日目の記事です。昨日はCTOの@masuidriveによるRailsでFoundation for Emails 2.0を使ってレスポンシブなHTMLメールを送るでした。

今日はSlackのちょっとした悩みを解決する便利botの紹介です。

Slackに関するちょっとした悩み

Slackはオフラインのコミュニケーションにとても便利ですが、個人的に不満に感じているところがあります。

例えば、いつの間にか知らないチャンネルができてる問題。会社で作っているプロダクトが多数にわたり、人数も増えてくるとSlackのチャンネルも増えてきます。業務上知っておきたいやりとりがされているチャンネルの存在を、かなり後になって知ることになってしまった・・・😫という経験がある人も居るんじゃないでしょうか。

こうした類のSlack上で起こっている出来事に気づけない問題は他にもいくつかあります。例えば誰かが便利なbotを運用し始めていても、そのチャンネルに参加してないと気づかない事があるでしょう。個人的にはカスタムemojiが増えたことに気づきづらいのもSlackに対する不満です。弊社では日々おもしろemojiが増え続けているので、こうした 物の最新動向にもキャッチアップしてきたいところです :eyes:

Real Time Messaging API

Slackではこうした 新しくチャンネルが作られた teamにbotが追加された 絵文字が追加された といったようなイベントをAPIで拾える仕組みが用意されています。Real Time Messaging API | Slackではかなり豊富な種類のイベントを取得できるようになっていて、更にWebsocketを利用してリアルタイムに新着イベントを受け取り、それに応じてプログラムで何かするといったことが可能です。

Screen Shot 2016-12-25 at 6.15.20 PM.png

botkitでSlack監視botを作る

howdyai/botkitを使えばRTM APIを使ったSlackイベントを監視するbotが簡単に作れます。例えば以下のような感じで特定のイベントに対するハンドラを設定しておくと、新しいイベントを検知してチャットに通知を書き込むなど好きな処理を実行できます。

bot.js
controller.on('channel_created', function(bot, message) {
  // botがjoinしているチャンネルに新しいチャンネル名を書き込む...
});

新しいチャンネルが作成されたらbotが通知してくれる仕組みは、サンプルコードを作って以下に公開しています。弊社のSlackチームでも#channel-notifyという部屋を作って密かに運用開始していますが便利です。簡単に動かせるようにしてある(はず)なので、使ってみたい人は是非。

horimislime/slack-new-channel-notifier: Notifies when new public channels are created.

Screen_Shot_2016-12-25_at_7_43_20_PM.png

まとめ

SlackのReal Time Messaging APIとbotkitを使ったchatbotについて紹介しました。一緒に働く仲間が増えるほど、Slack上でのやり取りも増えて見落とす情報も増えてきます。簡単なchatbotを作るだけでもこうした情報も拾えたりするので、ぜひ試してみてはどうでしょう。


これにてトレタ Advent Calendar 2016は終わりです。どれもとても面白い内容なので、もし見逃している記事があればチェックしてみてください!それでは。メリークリスマス :christmas_tree: