CakePHPでもChatOps

ここ2週間ほど、追い込みで自宅に引きこもっていたわたなべです。

ChatOps

去年の夏ころから弊社でもSlackを使っていて、いま開発中の案件でも開発中の様々なイベントがSlackに流れてくるようになっています。いま連携してるのはこんな感じ。

  • Github
  • Pivotal Tracker
  • Jenkins
  • Trello
  • Crashlytics

あとは、増井さんが作った「チャットで勤怠管理する「みやもとさん」」とかも使ってます。

blog.masuidrive.jp

アプリからもSlackへ

で、いま開発中のアプリはとあるスケジュールに従って自動的にインスタンスが立ち上がったり、落ちたり(破棄まで)する機能があります。この状態もSlackに流したいなーとおもって調べらた、PHPでSlackのIncoming WebHooksを使って連携させるライブラリが山ほどありました。

Community-built Integrations - Slack

どれか選んで使ってもよかったのですが、CakePHPのHttpSocketクラスを使えばサクッと実装できそうだったので、Pluginを作りました。

CakeSlack


READMEにも書きましたが、bootstrap.phpなりに設定を書いた上で、以下のような感じ。

<?php
App::uses('Slack', 'CakeSlack.Lib');

....

Slack::send('CakePHPからこんにちわ');

これで、以下のように簡単に連携できます。

f:id:kaz_29:20150319114452p:plain

Packagistにも登録したのでインストールは以下一発で。

$ composer require "kaz29/cake_slack":"dev-master"


簡単に連携はできますが、確かSlackにも流量制限(1秒1リクエスト?未確認です)があったはずなので大量に流れる可能性がある場合はキューに溜めるなりの工夫が必要かと思います。


ということでproduction環境に仕込んだこのプラグインが動くまで(あと30分)の待ち時間に久々の更新でした(^^;。

13:05追記

ということで無事起動して一安心(^^。

f:id:kaz_29:20150320081922p:plain