Edited at

[Slack]Botkitをherokuの無料プランで動かす方法

More than 1 year has passed since last update.

SlackのBotを作るためのフレームワークBotkitでbotを作成し、

herokuの無料プランで動かす方法です。


1.SlackでBotを作成する

下記リンクより、SlackのBot設定ページに遷移する。

https://my.slack.com/services/new/bot

Botの名前を設定し、Add integtationボタンを押下する。

API Tokenが発行されるので、メモしておく。

BotのIconや名前などもここで設定できる。


2.Botkitをダウンロードする

ローカル環境の適当なディレクトリにBotkitをダウンロードする。

git clone https://github.com/howdyai/botkit.git

botkitの依存パッケージをインストールする。

cd botkit

npm install


3.サンプルBotをローカル環境で動かす

下記コマンドを実行し、ステップ1でコピーしたAPI Tokenを使ってサンプルBotを動かす。

token=YOUR_API_TOKEN node bot.js

※YOUR_API_TOKENを各自のトークンで差し替える。

好きなチャンネルに入り、Botを招待すれば、Botの作成は完了。

/invite @test-bot

デフォルトでは以下のコマンドが使える。

@test-bot hello

@test-bot call me <Other Name> ※<Other Name>には好きなワードを入れる
@test-bot who am I
@test-bot shutdown
@test-bot uptime

テストが終わったら、ローカルで動かしているbotはctrl+cで止める。


4.GitHubにアップする

herokuでworkerを登録するために、ルートディレクトリにProcfileを作成してからコミットし、Githubにアップする。


Procfile

worker: node slack_bot.js



5.Herokuにアップする

Herokuにログインし、botkitをアップする。

heroku login

git push heroku master

Herokuの環境変数にAPI Tokenを追加する。

heroku config:add token=YOUR_API_TOKEN

※YOUR_API_TOKENを各自のトークンで差し替える。


6.workerを起動させる

herokuのDashboardでwebをoffにし、workerをonにする。


7.Heroku SchedulerでJobを登録する

Herokuの無料プランでは一定時間(30分間)何もアクセスがないと自動的にSleep状態になるため、Heroku Schedulerを使って、定期的にDynoを起こす必要がある。

まずはHeroku Schedulerをインストールする。

次に、Heroku SchedulerにJobを登録する。

FREQUENCYはHourlyにする。

(seq 22 23; seq 0 3; seq 10 18) | grep -qw $((10#date -u "+%H")) && curl http://xxxxxxx.herokuapp.com > /dev/null 2>&1

※上記コマンドはGMT表記なので、6-12時、19-27時の合計14時間稼働することになる。


<参考>

http://toach.click/slack-botkit/

http://qiita.com/kawanamiyuu/items/3193c74c888b816c6bd4