SlackにHubot導入
はじめに
最近いろいろと話題のSlackを導入(Heroku経由)しようとしていてはまったところを開発方法に沿って挙げていきます!
新しいボット作成
1. hubot
と coffee-script
をインストール
$ [sudo] npm install -g hubot coffee-script
2. hubot作成
$ hubot --create ボットの名前
例)testbot
という名前のボットを作るならばこのようになります。
$ hubot --create testbot
Creating a hubot install at testbot
(省略)
$ cd testbot
$ ls
Procfile README.md
bin/ external-scripts.json
hubot-scripts.json package.json scripts/
3. ライブラリ追加
$ npm install hubot-slack --save
package.json
に hubot-slack
まれているか確認
4. レポジトリを作成してプッシュ
ローカルでHubotが使えるか確認
$ bin/hubot
Hubot> hubot ping
Hubot> PONG
Herokuにデプロイ
1. Procfileを編集
web: bin/hubot --adapter slack
Note: Prockfileについて
2. Heroku app作成
$ 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にデプロイ
$ git push heroku master
$ heroku ps:scale web=1
これでひと通りの作業が終了しましたが・・・・Slackでいくら読んでもhubotが呼ばれていませんでした。そんな時の対処法について次は書いていきます。
はまったところ
Herokuのログを確認してみる
これでHerokuのログを見ることができます。
$ heroku logs
パラメータの不足
問題
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 にする
$ heroku config:add HUBOT_SLACK_CHANNELMODE=whitelist
どのチャットルームを見るのか設定
問題
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 }
解決策
対象にするチャネルを設定する
$ heroku config:add HUBOT_SLACK_CHANNELS=channel1, channel2