2016年05月時点でherokuでhubotを動かして、slackのbotを作成する手順です。
研究室向けにこの文書を作りましたが、別に公開していい内容だったので公開します。
質問受けながら進めるスタイルを想定した資料なので、言葉足らずの部分があるかとは思いますが、疑問点があれば、適宜コメントください。
前提条件
- nodeJSがインストール済み
- Git コマンドラインツールがインストール済み
- npm でyoeman, generator-hubotがインストール済み
- heorku コマンドラインツールがインストール済み
- heroku 設定済み
プロジェクトの作成
プロジェクトディレクトリの作成
$ mkdir {botの名前}
$ cd {botの名前}
hubotの初期設定
$ yo hubot
? Owner {開発者の名前} # ダイアログに從って必要項目を入力
? Bot name {botの名前}
? Description {botの説明}
? Bot adapter slack # slck bot を作る場合はここでslackと入力
hubotの動作確認
$ bin/hubot
{botの名前}> {botの名前} ping
{botの名前}> PONG
Gitリポジトリのイニシャライズ
$ git init
コマンドを作る、試す
Botにコマンドを追加する際は、./script
内にscriptを作ります。
参考
hubotスクリプトの書き方とサンプル集 | mitc
作ったコマンドを試す
$ bin/hubot
{botの名前}> {botの名前} {コマンド}
{botの名前}> {コマンドに対応するメッセージ}
Gitコミット
動作確認ができたら、コミットします。
$ git add -A
$ git commit -m'Initial commit'
Heroku アプリケーションの作成
Herokuにデプロイします。
herokuコマンドの利用が今回はじめての場合、ログインなどを求められます。
$ heroku create {botの名前} # ほかのでもいいけどわかりやすいのはこれ
$ git push heroku master
Heorku アプリケーションの環境変数の設定
環境変数は https://dashboard.heroku.com/apps から直接編集できるが、以下ではコマンドによる設定法を示す。
好きな方でやればいいと思う。
https://myteam.slack.com/apps/manage/A0F7XDU93-hubot で Add Configration すればslackトークンは取得できる。(URLのmyteamのところは、自分のチームに読み替えてください)
$ heroku config:set HUBOT_SLACK_TOKEN={slackのトークン} # slack の設定画面より値を取得
$ heroku config:set HEROKU_URL='https://{slackのチーム名}.herokuapp.com'
$ heroku config:set HUBOT_SLACK_TEAM='{slackのチーム名}'
$ heroku config:set HUBOT_SLACK_BOTNAME='{botの名前}'
参考
Slack + Hubot + Heroku で松岡修造botを作ったよ - すずきろぐ
Heokru Keepalive関係の設定
HerokuのFree dynoプランでの動作対応
6時間はスリープしないといけないので、スリープする時間が6時間以上になりようにする。
まずは、環境変数の設定
$ heroku config:set HUBOT_HEROKU_WAKEUP_TIME=8:00
$ heroku config:set HUBOT_HEROKU_SLEEP_TIME=24:00
$ heroku config:set TZ='Asia/Tokyo'
$ heroku config:set HUBOT_HEROKU_KEEPALIVE_URL=$(heroku apps:info -s | grep web-url | cut -d= -f2) # 末尾は / です。
いったん、スリープしたbotは自分で起動できないのでHeroku Schedulerで起こします。
$ heroku addons:create scheduler:standard
$ heroku addons:open scheduler # 設定画面がブラウザで開く
UTCの時間で、起こすタイミングを設定する。
HUBOT_HEROKU_WAKEUP_TIME で 設定した時間帯-9時間した時間にスケジュールを設定
コマンドは、curl ${HUBOT_HEROKU_KEEPALIVE_URL}heroku/keepalive
と設定する