Edited at

Slack で Hubot を使えるようにする

More than 3 years have passed since last update.

Slack がコミュニケーションの中心になっていくなかで、Slack からできることを増やそうということで、Hubot(https://hubot.github.com/) を導入してみることにした。

Hubot を動かす環境として、お手軽な Heroku(https://www.heroku.com/) を利用する。

まず、Hubot を導入し、Slack 用の bot を作成する。Hubot の導入には npm(https://www.npmjs.org/) が必要なので、事前にインストールしておく。

$ npm install -g hubot coffee-script generator-hubot

続いて、bot 用のディレクトリを作成し、その中で bot を作成する。

$ mkdir [bot_path_name]

$ cd [bot_path_name]
$ yo hubot
_____________________________
/ \
//\ | Extracting input for |
////\ _____ | self-replication process |
//////\ /_____\ \ /
======= |[^_/\_]| /----------------------------
| | _|___@@__|__
+===+/ /// \_\
| |_\ /// HUBOT/\\
|___/\// / \\
\ / +---+
\____/ | |
| //| +===+
\// |xx|
? Owner: Your Name <your@mail.address>
? Bot name: hubot
? Description: A simple helpful robot for you
? Bot adapter: slack

create ...(省略)
_____________________________
_____ / \
\ \ | Self-replication process |
| | _____ | complete... |
|__\\| /_____\ \ Good luck with that. /
|//+ |[^_/\_]| /----------------------------
| | _|___@@__|__
+===+/ /// \_\
| |_\ /// HUBOT/\\
|___/\// / \\
\ / +---+
\____/ | |
| //| +===+
\// |xx|

hubot-...(省略)

これまでは、hubot --create を使っていたが、非推奨になっており、Yeoman(http://yeoman.io/) を使う方式に変わったようだ。そのため、generator-hubot のインストールが必要となっている。

yo hubot するとウィザードが始まるので、必要な情報を入力していく。入力した情報は、package.json に反映されるので、後から修正することも可能。

Bot adapter として slack を必ず指定すること。後から、個別にインストールする手間が省ける。

ここまでで bot の作成は完了したので、Heroku へデプロイするための準備を始める。まず git リポジトリを作成する。

$ cd [bot_path_name]

$ git init
$ git add .
$ git commit -m "Initial commit"

続けて Heroku 上にアプリケーションを作成する。Heroku の操作のために Heroku Toolbelt(https://toolbelt.heroku.com/) を事前に導入しておくこと。

$ heroku login

Enter your Heroku credentials.
Email: your@mail.address
Password (typing will be hidden):
Authentication successful.

$ heroku create [your-hubot-app]

Hubot の動作には Redis(http://redis.io/) が必要なので、無料で使えるプランのある Redis To Go という Heroku の Add-on を利用する。有料のものも含めれば、他にも幾つか選択肢がある。

$ heroku addons:create redistogo:nano

ここで、設定に必要な情報を取得するため、Slack の Integration の設定を行う。以下の URL より、Hubot との連携のための設定を追加する。

http://my.slack.com/services/new/hubot

追加すると Heroku にデプロイする際に必要な Config の情報が表示されているので、こちらを使用する。


HUBOT_SLACK_TOKEN=[your token]


設定は、heroku コマンドで行う

$ heroku config:set HUBOT_SLACK_TOKEN=[your token] 

Hubot を Heroku にデプロイする手順で HEROKU_URL という Config を設定するものがよくあるが、これは hubot-heroku-keepalive(https://github.com/hubot-scripts/hubot-heroku-keepalive) で必要な設定である(hubot-heroku-keepalive は、yo hubot により追加済)。

ところが、こちらも非推奨となっており、現在は HUBOT_HEROKU_KEEPALIVE_URL を使うようになっているので、こちらを設定しておく。

$ heroku config:set HUBOT_HEROKU_KEEPALIVE_URL=[your bot app url]

URL は、以下のコマンドの結果の web_url に書かれているものを指定すればよい。

$ heroku apps:info

ここまでで、Heroku へのデプロイに必要な設定は完了したので、push してデプロイする。

$ git push heroku master

デプロイが終わったら、Slack で bot に ping を打って、動作確認をしよう!


追記

Hubot Integration の内容が変更になったので、これに合わせて書き換えました。

変更点は、必要な環境変数が減ったので、その記述を削除しています。

削除された環境変数


  • HUBOT_SLACK_TEAM

  • HUBOT_SLACK_BOTNAME