りんなと雑談apiの会話~part4~
こんにちはかわです。
アドベントカレンダー8日目です。
前回の記事です。
今回は雑談APIを使えるように改良し、実際にりんなと喋らせたい思います。
雑談apiを叩く
雑談apiのためのgemとredisのgemをGemfileについか
Gemfile
source "https://rubygems.org" gem 'sinatra' gem 'line-bot-api' gem 'docomoru' gem 'redis'
bundle install を忘れずにする
bundle install
雑談apiを使う際にcontextを保存しないといけない。
今回はredisを使い保存する。以下のコマンドを打つ
heroku addons:add rediscloud
main.rbを修正
require 'sinatra' require 'line/bot' require 'redis' require 'docomoru' get '/' do "Test Program" end def client @client ||= Line::Bot::Client.new { |config| config.channel_secret = ENV["LINE_CHANNEL_SECRET"] config.channel_token = ENV["LINE_CHANNEL_TOKEN"] } end post '/callback' do redis_url = ENV['REDISCLOUD_URL'] redis = Redis.new(url: redis_url) talk_client = Docomoru::Client.new(api_key: ENV["DOCOMO_API_KEY"]) body = request.body.read events = client.parse_events_from(body) events.each { |event| case event when Line::Bot::Event::Message case event.type when Line::Bot::Event::MessageType::Text userId = event['source']['userId'] context = redis.get(userId) mode = redis.get(userId + "a") params = {mode: mode, context: context} response = talk_client.create_dialogue(event.message['text'], params) redis.set(userId, response.body['context']) redis.set(userId + 'a', response.body['mode']) message = { type: 'text', text: response.body['utt'] } client.reply_message(event['replyToken'], message) end end } end
pushと環境変数を設定する
heroku config:set DOCOMO_API_KEY="docomoのAPI KEYを入力" git add --all git commit -m "docomo api use" git push heroku master
一応これで完成なので実際に動くか確認
できた。
たまに話題をずらす
実験
雑談apiをつかったBotが完成したため、りんなと喋らせます。
りんなをバーコードから友だち追加
りんなをグループに入れることができないみたいなので、
ひたすら打つ。
先手雑談Botでいきます。
自分が「こんにちは」からのスタートになります。
以下結果です。
自分:こんにちは 雑談Bot(以下雑):こんにちはにこ りんな(以下り):こんぽ 雑:話は変わりますけど、カルシウムが不足するとイライラするって、俗説だって知ってました? り:ナトリウム!!!!笑 雑:ナトリウムは温度が低下してますよ り:アルミニウム 雑:アルミニウムは強度が高いですね り:それ正解! 雑:アルミニウムは熱伝導が良いですね り:ムカデ 雑:ムカデとゲジゲジって、似てますよね。 り:毛虫w 雑:残念です。 ・ ・ ・
こんな感じの会話です。
Botは真面目なのにりんなが適当な返しをしてる
Botが少しかわいそうに見てきた(笑)
こんな感じで作っていきました。
どうでした?