$shibayu36->blog;

株式会社はてなでエンジニアをしています。プログラミングや読書のことなどについて書いています。

Hubot + Heroku + Slack

Hubot触ってみようと思って、いろいろ動かして見たのでメモ。

Hubotのrepositoryを作る

https://github.com/github/hubot/tree/master/docs これのとおりに

hubot --create shibabot

とかすると作れる。

bin/hubot

とかして動けばひとまず良い。

Slackで動かすためにHerokuにデプロイする

SlackでHubotを動かすためには、

  • Hubot側でSlackのHubot Integrationのtokenなどを設定する
  • Slack側で、Hubotにメッセージを送るためのURLを指定する

の2つが必要。Slack側でURLを指定するために、どこかにデプロイするか、もしくは手元で動かしたのを外から見えるようにする必要がある。Herokuにデプロイするのが難しくなく、かつ無料分で可能なので、そちらで動かす。だいたいのことは https://github.com/tinyspeck/hubot-slack に書いてあるのでそれを参照すれば良い。

まずはSlack側でhubotのintegrationを有効にする。Add New IntegrationしてHubot選択すれば出来るはず。するとHUBOT_SLACK_TOKEN, HUBOT_SLACK_TEAMというのが現れるので、ひとまずhubot側の設定用にこれをメモしておく。

続いてHubotをHerokuで動かせるように設定する。これは、https://github.com/tinyspeck/hubot-slack#deploying-to-heroku を見ればすぐにできるはず。上でメモした情報を利用してherokuの環境変数とかを設定すればよいだけ。途中でHEROKU_URLを設定しているのは、hubotがidlingしないようにするためらしい。

最後にデプロイ先のURLをSlack側のHubot URLというところに埋めれば良い。例えばデプロイしたherokuのURLがhttp://soothing-mists-4567.herokuapp.comであれば、それを埋める。
f:id:shiba_yu36:20140915144235p:plain

ここまででうまく行っていれば、設定したSlack上でhubot helpとかコマンドを打つと返信してくれるはず。そしたらひとまず完成。もしうまく行ってなかったとすると、何か設定ミスなので、herokuのlogとかを見ると解決できるはず。以下のようなコマンドを打つと、herokuで動いているアプリのlogを出してくれる。

heroku logs

僕は最初Hubot URLにpathの/hubot/slack-webhookまで含めてしまい、おかしくなっていたのをログを見て解決できた。

まとめ

  • SlackでHubotを動かすには、メッセージを受け取る先のURLを指定しないといけない(最初はまった)
    • どこかにデプロイするか何かする必要がある
  • Hubotをherokuで動かすのは無料かつ簡単で便利