TalkAPIを用いたBotの作成
こんにちはかわです。
アドベントカレンダー9日目というか、
9つ目の記事です。
完璧に遅れています。
TalkAPIを使いたいと思います。
TalkAPIとは
APIとして一般公開したものの一つ
この他にもいろいろなAPIがあるので見てみてください。
Botの作成
LINEのBotを作成したいと思います。
Ruby + Sinatra でHerokuにあっぷします。
APIKEYの発行
以下のリンクにとんでください
したの方にある「APIKEYの発行」から登録を開始してください。
登録が完了すると
こんな感じの画面が表示され、
APIKEYがメールに届くのでそれを利用してください。
LINE Message APIの利用
この記事を見てアカウント等を作ってください。
ここからは一気に設定していきます。
ターミナル上
mkdir talkBot cd talkBot git init heroku create talk-bot
gemfile
source "https://rubygems.org" gem 'sinatra' gem 'line-bot-api' gem 'json'
Procfile
web: bundle exec rackup config.ru -p $PORT
main.rb
require 'sinatra' require 'line/bot' require 'net/https' require 'json' 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 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 uri = URI.parse("https://api.a3rt.recruit-tech.co.jp/talk/v1/smalltalk") http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE req = Net::HTTP::Post.new(uri.path) req.set_form_data({'apikey' => ENV["Talk_Key"], 'query' => event.message['text']}) res = http.request(req) result = JSON.parse(res.body) message = { type: 'text', text: result["results"][0]["reply"] } client.reply_message(event['replyToken'], message) end end } end
ターミナル上
bundle install git add --all git commit -m "start" push heroku master heroku config:set LINE_CHANNEL_SECRET="自分のBotのChannel Secret" heroku config:set LINE_CHANNEL_TOKEN="自分のBotのアクセストークン" heroku config:set Talk_Key="TalkAPIのAPIKEY"
CallBackのURLをLINEBOTの方に設定しておいてください。
動かす
こんな感じ。
これとdocomoの雑談APIを使って作ったBotと会話させてみる。
TalkAPIから話してみる
かわ->か TalkAPI -> と 雑談API -> ざ か:こんにちは と:こんにちは ざ:あらこんにちは と:こんにちは ざ:こんちゃっす と:こんにちは ざ:ちはー と:こんにちは ざ:ごきげんよう と:またいつかお会いしましょう ざ:話は変わりますけど、12月1日は映画の日だって、知ってました? と:あるかどうかですよ ざ:ないよ と:そうですよね ざ:うん と:どうしました? ざ:好きです と:私をですか?嬉しいです ざ:すかをつかんでるんです と:私はそんなに嫌いじゃないですよ ざ:健康に注意されていますか? と:はいそうです ざ:はいそうですってます?
こんな感じの会話だった。