287
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

Organization

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

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 との連携のための設定を追加する。

追加すると 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
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
287
Help us understand the problem. What are the problem?