LoginSignup
19

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-05-22

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に対応させる | スペースマーケットブログ

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19