【Hubot】HubotとHipChatでお手軽ChatOpsを作る
今回はHubotとHipChatで簡単なChatOpsを作ってみます。
HubotはGitHub社が開発しているbotの開発・実行フレームワークです。
ChatOpsというのは、SlackやHipChatみたいなチャット系サービスから特定のアカウントに向けて特定の言葉を送るとなんらかの処理をやってくれる仕組みみたいなやつです。
使い方としては色々ありそうですが、スマホからメッセージアプリでデプロイできちゃうみたいなのは便利そうですよね。
今回は、HipChatで送ったメッセージに対して決まった処理を返すということをやってみます。
準備する
Macのローカル上で開発していきます。
Hubotはnode.jsで動くので、インストールします。
brew install node
homebrewをインストールしていない場合はこちら
Homebrew — OS X用パッケージマネージャー
からしてください。
次に、Hubotに命令を書くためのcofeescriptをインストールします。
npm install -g yo generator-hubot
オプションの -g はグローバルインストールを指していて、インストールと同時にパスを通してくれるらしいです。
yoはプロジェクトのテンプレートを作ってくれるツールらしいです。
npmコマンドがきかない場合は、パスを通してあげましょう。
vim /.bash_profile export PATH=$HOME/local/node/bin:$PATH source /.bash_profile
プロジェクト作成
適当な場所でプロジェクトを作成します。
mkdir mybot cd mybot
そして、yoを実行します。
yo hubot
すると、Hubotの設定に関して色々聞かれます。
? ========================================================================== We're constantly looking for ways to make yo better! May we anonymously report usage statistics to improve the tool over time? More info: https://github.com/yeoman/insight & http://yeoman.io ========================================================================== Yes _____________________________ / \ //\ | Extracting input for | ////\ _____ | self-replication process | //////\ /_____\ \ / ======= |[^_/\_]| /---------------------------- | | _|___@@__|__ +===+/ /// \_\ | |_\ /// HUBOT/\\ |___/\// / \\ \ / +---+ \____/ | | | //| +===+ \// |xx| ? Owner: keimaejima ? Bot name: mybot ? Description: A simple helpful robot for your Company ? Bot adapter: (campfire) hipchat ? Bot adapter: hipchat create bin/hubot create bin/hubot.cmd create Procfile create README.md create external-scripts.json create hubot-scripts.json create .gitignore create package.json create scripts/example.coffee create .editorconfig _____________________________ _____ / \ \ \ | Self-replication process | | | _____ | complete... | |__\\| /_____\ \ Good luck with that. / |//+ |[^_/\_]| /---------------------------- | | _|___@@__|__ +===+/ /// \_\ | |_\ /// HUBOT/\\ |___/\// / \\ \ / +---+ \____/ | | | //| +===+ \// |xx|
それぞれ次のような意味ですので、適当に入力していきます。
? Owner: (オーナーの名前) ? Bot name: (ボットの名前) ? Description: (ボットの説明) ? Bot adapter: (使うツール、今回はHipChat)
これでインストールが完了するので、試しにHubotを起動して話しかけてみます。
bin/hubot —mybot
mybot> mybot ping
PONG
うまくいきました!
HipChatと連動させる
さて、HipChatと連動させていきます。
HipChat本体はAdapterというものを通してHubotとやりとりをするので、HipChatのアダプターをインストールします。
npm install hubot-hipchat —save
インストールが終わったら、bin/hubotにHipChatの情報を書き込みます。
(事前にボット用アカウントは作っておいてください。)
vim bin/hubot
#!/bin/sh set -e npm install export PATH="node_modules/.bin:node_modules/hubot/node_modules/.bin:$PATH" export HUBOT_HIPCHAT_JID="Hubot 用アカウントのJabber ID" export HUBOT_HIPCHAT_PASSWORD="Hubot 用アカウントのパスワード" export HUBOT_HIPCHAT_ROOMS="ルームの Jabber ID" export HUBOT_LOG_LEVEL="debug" exec node_modules/.bin/hubot "$@"
Jadder IDはHipChatの「Edit Profile」から確認できます。
hubotの振る舞いについては、script以下のファイルに記述していきます。
hubot起動時に拡張子.coffeeのファイルをすべて読み込んでくれるので、ファイルの数と名前はなんでも良いみたいです。
module.exports = (robot) -> robot.respond /ザワールド/i, (msg) -> msg.send "時よ止まれ" robot.respond /てめえは俺を/i, (msg) -> msg.send "怒らせた"
もう一度hubotを起動します。
bin/hubot -a hipchat
エラーなく起動できたら、HipChatから話しかけてみます。
うまくいきました!
今回はシンプルな応答式でしたが、サーバーでコマンドを実行する処理を書いたりしたら色々と使えそうですよね。
引き続き勉強したいと思います。
以上っす!