idobata 経由で Hubot と会話をしよう

# 目的
* idobata 経由で Hubot と会話すること

# Hubot
* GitHub が開発しているチャット用の bot フレームワーク
* 幅広いチャットサービスの bot として導入することができる
* [公式ベージ](https://hubot.github.com/)
* [ソースコード](https://github.com/github/hubot)

# idobata
* 日本製のチャットサービス
* [公式ベージ](https://idobata.io/)

![スクリーンショット 0026-10-12 20.50.43.png](https://qiita-image-store.s3.amazonaws.com/0/28573/a20df1e3-6d95-0796-5afc-d124f2b31047.png)

* 今回はこの idobata 経由で Hubot と会話をする

# Hubot の導入
* 注 : Ubuntu 14.04 上で作業をしています

## Node.js のインストール
* hubot のインストールに npm を使うため、 node.js をインストールする

```bash
$ wget git.io/nodebrew
$ perl nodebrew setup
$ export PATH=$HOME/.nodebrew/current/bin:$PATH
$ nodebrew ls-remote
$ nodebrew install-binary v0.11.14
$ nodebrew use v0.11.14
```

## hubot のインストール

```bash
$ npm install -g hubot coffee-script
# Hubot ひな形作成、起動
$ hubot --create mybot
$ cd mybot
$ ./bin/hubot
```

* Redis を入れていないと下記のエラーが出る

```bash
Hubot> [Mon Oct 06 2014 01:03:49 GMT+0000 (UTC)] ERROR [Error: Redis connection to localhost:6379 failed - connect ECONNREFUSED]
[Mon Oct 06 2014 01:03:49 GMT+0000 (UTC)] ERROR [Error: Redis connection to localhost:6379 failed - connect ECONNREFUSED]
[Mon Oct 06 2014 01:03:50 GMT+0000 (UTC)] ERROR [Error: Redis connection to localhost:6379 failed - connect ECONNREFUSED]
```

* エラー解消のため Redis をインストール

```bash
$ sudo apt-get update
$ sudo apt-get -yV upgrade
$ sudo apt-get install redis-server
```

* Hubot 起動から終了

```bash
$ ls
bin  external-scripts.json  hubot-scripts.json  node_modules  package.json  Procfile  README.md  scripts
$ ./bin/hubot
Hubot> [Mon Oct 06 2014 01:15:37 GMT+0000 (UTC)] INFO Data for hubot brain retrieved from Redis
Hubot> hubot ping
# Hubot からの応答
Hubot> PONG 
# exit で終了
Hubot> exit
```

## idobata との連携
* idobata と連携できるように adapter を導入しておく
    * ソース : https://github.com/idobata/hubot-idobata
* adapter インストールコマンド

```bash
$ npm install hubot-idobata --save
```

# idobata の環境構築
* アカウント取得
* 好きな名前で Organization の作成
* 作成した Organization に Room を作成
* 作成した Room に bot を追加する
    * 今回は idobot の名前で追加

![スクリーンショット 0026-10-12 21.59.26.png](https://qiita-image-store.s3.amazonaws.com/0/28573/58864c54-cfa3-4658-277c-ce9a5e1e6efe.png)

* API Token を確認しておく


# hubot を Heroku で動かす

* Hubot を常時動かすために適当な PaaS 上にデプロイする
    * 今回は、 Heroku 上で動かすことにする
* Procfile を編集
    * Procfile : Heroku 上で Dynos が実行するコマンド
    * Hubot を起動するようにする

```bash:Procfile
web: bin/hubot --adapter idobata --name idobot
```

* heroku へのデプロイ

```bash
$ heroku create
Creating afternoon-taiga-4406... done, stack is cedar
http://afternoon-hoge-4406.herokuapp.com/ | git@heroku.com:afternoon-hoge-4406.git
# appname は create コマンドで表示されたものを使用する
$ heroku config:set HEROKU_URL=http://<appname>.herokuapp.com
# idobata に bot 追加時に確認した API Token を入力する
$ heroku config:set HUBOT_IDOBATA_API_TOKEN=hogehogehoge
# idobata に登録した bot の名前を入力する
$ heroku config:set HUBOT_NAME=idobot
# データ永続化のために Redis の addon を導入
# 事前に Heroku 上の設定でクレジットカードの登録を済ませておく必要がある
$ heroku addons:add redistogo:nano
# Heroku へデプロイする
$ git push heroku origin
```

# Hubot に話しかける

* idobata の Room を開き、 作成した idobot に話しかける

![スクリーンショット 0026-10-12 22.36.37.png](https://qiita-image-store.s3.amazonaws.com/0/28573/80613864-d5a1-5b80-7a8b-32591f3b3f71.png)

* すぐに返事してくれれば OK