Edited at

herokuでhubotを動かしslackのbotを作る手順

More than 3 years have passed since last update.

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と設定する

参考

HubotをHerokuのFree dynoに対応させる | スペースマーケットブログ