【Slack】新しいチャンネルが作成されたら通知できるようにしてみた!
社内でもSlackを導入しているのですが
新しいチャンネルが作成されても気づくことができず
後にこんなチャンネルがあったのか!?
ということがしばしばあったので
新しいチャンネルが作成されたら通知する仕組みを作ってみました😊
作成した構成
プログラムを書いてそれをサーバに配置しておくというパターンではなく
Slack Appを使用し、さらにサーバレスで実装してみました!
⑴API GatewayとLambdaの設定
API Gateway
* メソッドは「POST」
* 統合リクエストの「統合タイプ」は「Lambda関数」を設定
Lambda
* 言語は「Node.js 6.10」
* Slack Appとの連携確認が必要なため、一旦下記のコードで作成
exports.handler = (event, context, callback) => { context.succeed(event["body-json"]); };
⑵Slack Appを作成
下記URLにアクセスし、「Start Building」をクリック
https://api.slack.com/
「App Name」と「Development Slack Team」を入力し、「Create App」をクリックすると…
アプリケーションが作成されました!
⑶Slack Appの設定 −その1− Bot User
続けてアプリケーションの設定をしていきます
メニューから「Bot Users」を選択
「Default username」にBotのユーザ名を入力
Botをリアルタイムに処理させるため
「Always Show My Bot as Online」を「On」にする
最後に「Add Bot User」をクリックして保存します
⑷Slack Appの設定 −その2− Event Subscriptions
メニューから「Event Subscriptions」を選択
「Enable Events」を「On」にして
「Request URL」に⑴API GatewayとLambdaを設定するで作成した
API Gatewayのエンドポイントを入力します
しばらくして「Verified」になればOKです!
ここで「Verified」にならなければLambdaのコードか
API Gatewayの設定にミスがあるかもしれませんーーー😥
少し下にいって「Subscribe to Bot Events」に
「channel_created」のイベントを追加します
最後に「Save Changes」をクリックして保存します
⑸Slack Appの設定 −その3− Install App
メニューから「Install App」を選択
「Install App to Team」をクリック!
アプリケーションインストールの確認画面が表示されるので
問題なければ「Authorize」をクリックします
インストールされるとSlackの画面で
アプリケーションが起動しているのを確認できます
⑹プログラムの作成
作成された新しいチャンネルを通知するコードを書いていきますー
その前に…Botのtokenが必要なのでそれをメモしておきます
メニューから「OAuth & Permissions」を選択して
「Bot User OAuth Access Token」に書かれているtokenをメモメモ。。
いよいよコードの作成!
今回はBotkitを使って作成しました
Botkitのインストール方法はこちらの記事を参考にさせていただきました!
http://blog.duck8823.com/entry/2016/05/20/005734
コードはいたってシンプル↓
# vi index.js //slack settings var Botkit = require('botkit'); var controller = Botkit.slackbot({ debug: true }); var bot = controller.spawn({ token: <メモしたBotのtoken> }); // slack new channnel exports.handler = (event, context, callback) => { var channelName = event["body-json"]["event"]["channel"]["name"] bot.say({ text: 'new channel: #' + channelName, link_names: 1, channel: 'C2XXXX' //通知するチャンネルID }); };
作成したコードをzipにします
# zip -r xxxx.zip index.js node_modules
zipファイルをLambdaにアップロードすれば完了です!
⑺新しいチャンネルを作成すると通知されるか確認
早速動作するか確認しましょう
おっ!無事に新しいチャンネルの通知が来ました〜
感想
今回作成したものはPublicチャンネルのみ通知されます
もともとPrivateチャンネルは通知されないみたいです
Botのアクションをトリガーにして
他にも様々な仕掛けを作ることができそうです🤗