Hubot プロジェクトの準備 (Mac)
Hubot のインストール
shell
$ npm install -g yo generator-hubot
Hubot のプロジェクトを作成
shell
$ mkdir mybot(プロジェクト名)
$ cd mybot
$ yo hubot
# 今回は Slack と連携したいので Bot adapter には slack を指定
slack bot の用意
slack で適当なチームを用意する
slack で hubot を使用するための設定をする
- Apps & Custom Integrations を選択
Heroku の設定
ターミナルから Heroku を操作するための準備
- 下記を参考に toolbelt を取得する
- heroku にログイン
$ heroku login
Heroku 上にアプリケーションを作成
shell
$ heroku create app_name
Creating app_name... done, stack is cedar-14
https://app_name.herokuapp.com/ | https://git.heroku.com/app_name.git
Git remote heroku added
# ちなみに heroku 上でユニークな名前じゃないといけないっぽい
$ git remote -v
heroku https://git.heroku.com/app_name.git (fetch)
heroku https://git.heroku.com/app_name.git (push)
Heroku の config を追加
shell
$ heroku config:add HUBOT_SLACK_TOKEN=xxx
# slack の token を設定する(上で発行された API token)
$ heroku config:add HUBOT_CHATWORK_ROOMS="room_id"
# slack で hubot を参加させたい room id を設定
$ heroku config:add TZ=Asia/Tokyo
# タイムゾーンを日本に設定
Heroku が起きている時間をスケジューラで設定
- 無料プランは 1 日 6 時間眠ってしまうので Process Scheduler というアドオンで時間を管理
keep-alive 設定
- heroku は 30 分間アクセスがないと sleep するので hubot-heroku-keepalive を設定
shell
$ npm install hubot-heroku-keepalive --save
$ heroku config:set HUBOT_HEROKU_KEEPALIVE_URL=https://app_name.herokuapp.com/
# Process Scheduler と合わせて wakeup time と sleep time を設定する
$ heroku config:add HUBOT_HEROKU_WAKEUP_TIME=7:00
$ heroku config:add HUBOT_HEROKU_SLEEP_TIME=24:00
Heroku へのデプロイ
bot がやること
- 毎正時に時刻を知らせる機能を追加
script/notice.coffee
cronJob = require('cron').CronJob
module.exports = (robot) ->
new cronJob('0 0 * * * *', () =>
date = new Date()
hour = date.getHours()
envelope = room: process.env.HUBOT_CHATWORK_ROOMS
robot.send envelope, "#{hour} 時です。"
).start()
デプロイ
- heroku に push
$ git push heroku master
結果
- こんな感じで決まった時間に決まったメッセージを post できる