Lita chat bot でおみくじを引いてもらうメモ
概要
- Lita chat bot をSlack に参加させる
-
omikuji
と発言するとおみくじを引いてくれる(handler の作成)
- Heroku にデプロイ
前提
- git
- GitHub などのサイトに
lita-omikuji
の名前でリポジトリ作成済
- heroku toolbelt
- RSpec
- Bundler
手順
- Lita 本体を作る - この本体に対してプラグイン(gem) を追加していくことで機能を拡張する
- 振る舞い(Handler) を追加する - 本体の機能を拡張するためのgem(lita-omikuji) を作成する
- omikuji 機能を追加したLita 本体をHeroku にデプロイ
Lita 本体
mkcd ~/lita-bot
bundle init
git init
echo "gem 'lita'" >> Gemfile
echo "gem 'lita-slack'" >> Gemfile
bundle install
echo "gem 'lita-omikuji', github: 'gouf/lita-omikuji'" >> Gemfile
git add .; git commit -m 'Initial Commit'
Slack Token の設定
omikuji
と発言するとおみくじを引いてくれる(handler の作成)- git
- GitHub などのサイトに
lita-omikuji
の名前でリポジトリ作成済 - heroku toolbelt
- RSpec
- Bundler
手順
- Lita 本体を作る - この本体に対してプラグイン(gem) を追加していくことで機能を拡張する
- 振る舞い(Handler) を追加する - 本体の機能を拡張するためのgem(lita-omikuji) を作成する
- omikuji 機能を追加したLita 本体をHeroku にデプロイ
Lita 本体
mkcd ~/lita-bot
bundle init
git init
echo "gem 'lita'" >> Gemfile
echo "gem 'lita-slack'" >> Gemfile
bundle install
echo "gem 'lita-omikuji', github: 'gouf/lita-omikuji'" >> Gemfile
git add .; git commit -m 'Initial Commit'
Slack Token の設定
mkcd ~/lita-bot
bundle init
git init
echo "gem 'lita'" >> Gemfile
echo "gem 'lita-slack'" >> Gemfile
bundle install
echo "gem 'lita-omikuji', github: 'gouf/lita-omikuji'" >> Gemfile
git add .; git commit -m 'Initial Commit'
https://your_team_name.slack.com/services/new にアクセスして、Lita を選択
Lita.configure do |config|
config.robot.adapter = :slack
config.adapters.slack.token = "abcd-1234567890-hWYd21AmMH2UHAkx29vb5c1Y"
end
上記のような設定の案内が出てくるので、lita_config.rb
に記述
アダプタの変更
アダプタをデフォルトの:shell
から:slack
に変更する
lita_config.rb
config.robot.adapter = :slack
Lita Omikuji
bundle install
でlita
コマンドが使えるようになったので、lita handler omikuji
でテンプレートを作ってもらって、おみくじを引いてくれる機能を書いていく
このとき、下記のように本体とは別のディレクトリで作業する
cd ~/
lita handler omikuji # => lita-omikuji
cd lita-omikuji
git init; git add .; git commit -m 'Initial Commit'
git remote add github [email protected]:my_account_name/lita-omikuji.git
lita handler
のときにCI 利用やテストカバレッジ生成についての質問があるが、今回はパス
(自身でプラグインを作成する際には利用されたい)
RSpec
ここで おもむろにテストを適当に書く
lita-omikuji/spec/lita/handlers/omikuji_spec.rb
require 'spec_helper'
describe Lita::Handlers::Omikuji, lita_handler: true do
it { is_expected.to route('omikuji') }
it { is_expected.to route('omikuji').to(:omikuji) }
it 'retrieve message "omikuji"' do
omikuji_list = %w(大吉 吉 中吉 小吉 半吉 末吉 末小吉 平凶 小凶 半凶 末凶 凶 大凶)
send_message('omikuji')
expect(omikuji_list).to include(replies.last)
end
end
Omikuji 実装
テストにパスするように実装を書く
module Lita
module Handlers
class Omikuji < Handler
route(/omikuji/i, :omikuji) # 正規表現にマッチしたら、指定されたメソッド名を呼び出す
def omikuji(response)
omikuji_list = %w(
大吉 吉 中吉 小吉
半吉 末吉 末小吉
平凶 小凶 半凶
末凶 凶 大凶
).freeze
response.reply(omikuji_list.sample)
end
end
Lita.register_handler(Omikuji)
end
end
GitHub にプッシュ
実装したので予め作っておいたリポジトリにプッシュ
git push github master
Heroku にデプロイ
Procfile
の作成redistogo addon の追加
echo "web: bundle exec lita" > Procfile
heroku addons:add redistogo
-
lita_config.rb
にRedis to Go の設定を追記
config.redis[:url] = ENV['REDISTOGO_URL']
config.http.port = ENV['PORT']
変更点をコミットしておいて、git でHeroku にプッシュ
heroku create
git push heroku master
動作確認
Slack にアクセスし、lita にomikuji
と話しかけると、おみくじを引いてくれる
継続利用
Heroku にデプロイした場合、放置されるとアプリが休眠するらしいので、Uptime などのサービスでアプリの監視をさせる
※ http://my_app_name.herokuapp.com/lita/info にリクエストを投げると(JSON での)応答が返ってくる
Links
Author And Source
この問題について(Lita chat bot でおみくじを引いてもらうメモ), 我々は、より多くの情報をここで見つけました https://qiita.com/gouf/items/e540a015b81da193ec06著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .