Slack に Hubotを導入する際にはまったところ（Heroku経由）

# SlackにHubot導入

## はじめに

最近いろいろと話題のSlackを導入（Heroku経由）しようとしていてはまったところを開発方法に沿って挙げていきます！

## 新しいボット作成

### 1. `hubot` と `coffee-script` をインストール

```bash
$ [sudo] npm install -g hubot coffee-script
```

### 2. hubot作成

```bash
$ hubot --create ボットの名前
```

例）`testbot`という名前のボットを作るならばこのようになります。

```bash
$ hubot --create testbot
Creating a hubot install at testbot
(省略)
```

```bash
$ cd testbot
$ ls
Procfile              README.md             
bin/                  external-scripts.json 
hubot-scripts.json    package.json          scripts/
```

### 3. ライブラリ追加

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

`package.json` に `hubot-slack`まれているか確認

### 4. レポジトリを作成してプッシュ

## ローカルでHubotが使えるか確認

```bash
$ bin/hubot
Hubot> hubot ping
Hubot> PONG
```

## Herokuにデプロイ

### 1. Procfileを編集

```Prockfile
web: bin/hubot --adapter slack
```

Note: [Prockfileについて](https://github.com/herokaijp/devcenter/wiki/procfile)


### 2. Heroku app作成

```bash
$ heroku create my-company-slackbot
```

### 3. Addon追加

```
$ heroku addons:add rediscloud
```

### 4. SlackのインテグレーションページからHubotをアクティブにする

リンク：https://sirok.slack.com/services/new/hubot

### 5. Herokuのconfig設定

```
$ heroku config:add HEROKU_URL=http://XXXXX.herokuapp.com
$ heroku config:add HUBOT_SLACK_TOKEN=XXXXX
$ heroku config:add HUBOT_SLACK_TEAM=myteam
$ heroku config:add HUBOT_SLACK_BOTNAME=slack-hubot
```

### Herokuにデプロイ

```bash
$ git push heroku master
$ heroku ps:scale web=1
```

これでひと通りの作業が終了しましたが・・・・Slackでいくら読んでもhubotが呼ばれていませんでした。そんな時の対処法について次は書いていきます。

# はまったところ

## Herokuのログを確認してみる

これでHerokuのログを見ることができます。

```bash
$ heroku logs
```

## パラメータの不足

### 問題

```bash
2014-08-31T03:30:34.671420+00:00 app[web.1]: [Sun Aug 31 2014 03:30:34 GMT+0000 (UTC)] ERROR Not enough parameters provided. I need a token, rooms and account
```

### 解決策

言われた通りに必要なものを設定しましょう。

## HubotがSlackにアクセスできるようにする

### 問題

modeが **blacklist** になっているとダメです。

```
2014-08-31T08:18:53.303034+00:00 app[web.1]: Slack adapter options: { token: 'XXX',
2014-08-31T08:18:53.303053+00:00 app[web.1]:   mode: 'blacklist',
2014-08-31T08:18:53.303055+00:00 app[web.1]:   channels: [ 'CHANNEL' ],
2014-08-31T08:18:53.303050+00:00 app[web.1]:   team: 'TEAM',
2014-08-31T08:18:53.303052+00:00 app[web.1]:   name: 'bot',
2014-08-31T08:18:53.303056+00:00 app[web.1]:   link_names: 0 }
```

### 解決策

modeを **blacklist** から **whitelist** にする

```bash
$ heroku config:add HUBOT_SLACK_CHANNELMODE=whitelist
```


## どのチャットルームを見るのか設定

### 問題

```bash
2014-08-31T08:18:53.303034+00:00 app[web.1]: Slack adapter options: { token: 'XXX',
2014-08-31T08:18:53.303053+00:00 app[web.1]:   mode: 'blacklist',
2014-08-31T08:18:53.303055+00:00 app[web.1]:   channels: [ 'CHANNEL' ],
2014-08-31T08:18:53.303050+00:00 app[web.1]:   team: 'TEAM',
2014-08-31T08:18:53.303052+00:00 app[web.1]:   name: 'bot',
2014-08-31T08:18:53.303056+00:00 app[web.1]:   link_names: 0 }
```

### 解決策

対象にするチャネルを設定する

```bash
$ heroku config:add HUBOT_SLACK_CHANNELS=channel1, channel2
```


## 参照サイト一覧

### 公式ドキュメント
- [https://github.com/tinyspeck/hubot-slack](https://github.com/tinyspeck/hubot-slack)

### Qiita上ドキュメント

- [slackにHubotを導入(Heroku経由)](http://qiita.com/Katsumata_RYO/items/dc4543aa5827d4c3211c)
- [slackと連携するhubotをherokuで動かす](http://qiita.com/sue738/items/3d0d4d96e584ece670b3)
- [Heroku上でHubotを動かす](http://qiita.com/mattuso/items/641aac71412bdce64182)