概要
僕の職場では、障害が発生するとSlackのとあるチャンネルで障害についてのやりとりを行うようになっていて、
障害状況をPCを開いていない人向けにLineで報告しています。
ただ、障害状況をLineで報告するのに、わざわざLineを開くという作業が面倒だったので、
Slackのチャンネルから任意の発言のみをLineに送る仕組みを作ってみました。
方法
タイトルにもある通り、zapierを使うと、Slackへの通知をLineに転送できます。
(zapierはIFTTTのように、とあるサービスのアクションをトリガに、別のサービスでアクションを行う」ことのできる便利ツールです。)
また、zapierはIFTTTのようにLineへの通知をAppレベルでサポートしていなかったので、Lineへの通知はLine Notifyを使いました。
Line Notifyの設定
別の方がスクショ付きで丁寧に解説していたので下記を参照してtokenのコピーまで行ってください。
http://qiita.com/takeshi_ok_desu/items/576a8226ba6584864d95
zapierの設定
zapierのアカウントがなければアカウントを発行して、下記URLにアクセスして「MAKE A ZAP!」のボタンをクリックしてください。
https://zapier.com/app/dashboard
トリガの設定
トリガの設定では、「Slack」を選択して、適当に設定をしてください。
※ものすごく親切なUIだったので迷うことはないはずです。
フィルターの設定
トリガとしてSlackを選択しただけでは、すべての発言に反応してしまうので「Filter」を新たに追加して、
特定の発言にのに反応するように条件を設定します。
(僕は、SlackのTextを条件に、特定の文字列(@line-notify)が入っている時にのみ通す設定しました)
アクションの設定
zapierにはWebhookと呼ばれるAppがあり、これを使うとHTTPのGETやPOSTを行えます。
このAppはPOST時のHEADERやFORMを指定できて、
すごいことにトリガで設定したAppのリクエストデータをここで使うこともできてしまうのです。
設定方法は、Line NotifyにPOSTできればいいので、メソッドをPOSTにして下記の通り設定します。
※ スクショにはないですが、HeadersのKeyに「Authorization」を設定して、
valueにあらかじめ取得したLineのtokenをBearerの文字列とともに「Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxx」のようにセットしてください。
すべての設定を終えたら、Zapを有効にすれば完了です。
最後に
この機能を実現しようとした時に、最初はbotkitを使うか、OutgoingWebhooksを使うか迷ったのですが、
わざわざ、これしきの機能のためにサーバを作って常駐プロセスを立てるのが嫌だったので別の方法をさがしてみることにしました。
(※常駐プロセスは突然死したりすることもあって、死活監視したりするのが面倒だったため・・・)
そこで、Slackからの発言をトリガとしてLineに通知できるように
IFTTTを使ってみようと思ったのですが、
残念ながらIFTTTではSlackの発言をトリガにできないようだったので、
IFTTTよりもマイナー(?)でも、強力なツールとして名高いzapierを使ってみました。
Zapierであれば、非エンジニアでも簡単にChatOps的なことが実現できるほどに簡単&便利なので、
botやサーバを立てるのが億劫な皆さんの参考になればと思います。
(他にいい方法があれば教えてください)