チャットツール slack に常駐する bot をつくったので、そのときの導入メモ。 bot 開発には lita を利用した。lita は Ruby で書かれた chat bot フレームワーク。hubot にインスパイアされて開発されたようだ。 js (coffee script) よりも ruby のほうがとっつきやすかったので採用した。
環境は、ubuntu 14.04, ruby 2.1.5, lita 4.0.4.
ゆくゆくは、iRKit とか使って家電と連携したりしたい。
今回の構成図を上記に示す。
1. 事前準備: もろもろインストールする
1.1 lita をインストール
lita は gem でインストールできる。
1
|
|
1.2 redis をインストール
lita はデータ永続化ストレージとして redis を使うことが前提となっている。 つまり、ローカル環境で lita を実行するには(開発するには)、redis が必要なため、redis をインストールする。
1 2 |
|
redis を起動する。
1 2 3 4 |
|
2. lita プロジェクト作成、起動
lita プロジェクト”sample”を作成する。
1 2 3 |
|
ruby のバージョンを rbenv で指定しておく。
1 2 3 |
|
bundler でインストールする。
1
|
|
lita start
で lita をローカル環境で起動してみる。
lita help
で返ってくればOK。
1 2 3 4 5 6 7 8 9 10 11 |
|
lita プラグイン もたくさんあるので、適当に Gemfile
に追加して bundle install
するとよい。
3. herokuへデプロイして Slack と連携する
lita bot を heroku へデプロイする。 また、アダプタ lita-slack を利用して Slack と連携する。
3.1 事前準備
heroku へのデプロイは、git push して行うので、git でバージョン管理を開始する。
1 2 3 |
|
heroku で ruby バージョンを指定するには、Gemfile
でruby "VERSION"
と記述する。
また、Slack と連携するため、lita-slack
アダプタもインストールする。
この時点で、Gemfile
は以下の通り。
1 2 3 4 5 |
|
bundler でインストールする。
1
|
|
slack とつなげたり、Redis To Go を利用するために、lita_config.rb
を以下のように修正する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
heroku でのアプリケーション起動には foreman でのアプリケーション起動が必要となる。
以下の Procfile
を作成する。
1
|
|
3.2 heroku の設定
新規に heroku アプリケーションを作成する。
ここでは、lita-sample
という名前にした。
1
|
|
heroku の redis アドオン Redis To Go をアプリケーションへ追加する。 事前に heroku へクレジットカードの登録が必要。
1
|
|
heroku の環境変数を設定する。 設定するのは、Slack APIキーのみでOK。 Slack API キーは、https://YOUR-DOMAIN.slack.com/services/new/lita から Integration の設定をしたら入手可能。
REDISTOGO_URL
などは、アドオン追加時に自動で設定されている。
1 2 3 |
|
3.3 heroku へデプロイする
git commit して git push してあげる。 そうすると heoku アプリケーションが起動する。
1 2 |
|
Slack に lita さんが見えるはずなので 適当なチャンネルに招待して @lita help
とか声をかけると答えてくれる。
3.4 heroku アプリケーションをたたき起こす
heroku を無料で使う 1 web dyno (webサーバインスタンス) のときは、1時間アクセスがないとアプリケーションがスリープする。つまり、せっかくデプロイした bot も眠ってしまうため、定期的にhttpアクセスさせてたたき起こしておく。
なお、lita-cron
で bot に定期的に投稿させてもだめだったので、heroku アプリケーションへの http アクセスが必要なもよう。
定期的な http アクセスには Uptime Robot を利用した。
4. handler 作成
以下のように handler のひな形を生成する。
lita-
というプレフィックスが自動で付与される。
1 2 3 4 |
|
handlers/lita-hello_handler/lib/lita/handlers/hello_hundler.rb
を修正する。
route
で正規表現にマッチした場合の処理へルーティングする。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
Gemfile
に以下を追記し、 bundle install
する。
1
|
|
commit して再度 heroku へ push してデプロイする。
1 2 |
|
slack 上で @lita java あなた
とかつぶやくとサイコーにジャバな気分になる。