川のブログ

川の適当気ままなブログです。 

TalkAPIを用いたBotの作成

こんにちはかわです。

アドベントカレンダー9日目というか、

9つ目の記事です。

完璧に遅れています。

今回はリクルートさんが出しているAPIの1つ

TalkAPIを使いたいと思います。

TalkAPIとは

リクルートテクノロジーさんが出しているAPI

社内で用いられていた機械学習ディープラーニング技術を

APIとして一般公開したものの一つ

この他にもいろいろなAPIがあるので見てみてください。

f:id:nakanaka1826:20171211223324p:plain

a3rt.recruit-tech.co.jp

現段階でAPIの一日のリクエストの制限は無いみたいです。

Botの作成

LINEのBotを作成したいと思います。

Ruby + Sinatra でHerokuにあっぷします。

APIKEYの発行

以下のリンクにとんでください

a3rt.recruit-tech.co.jp

f:id:nakanaka1826:20171211223501p:plain

したの方にある「APIKEYの発行」から登録を開始してください。

登録が完了すると

f:id:nakanaka1826:20171211223720p:plain

こんな感じの画面が表示され、

APIKEYがメールに届くのでそれを利用してください。

LINE Message APIの利用

この記事を見てアカウント等を作ってください。

kawakawa.hatenablog.com

ここからは一気に設定していきます。

ターミナル上
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の方に設定しておいてください。

動かす

f:id:nakanaka1826:20171211233742p:plain

こんな感じ。

これとdocomoの雑談APIを使って作ったBotと会話させてみる。

TalkAPIから話してみる

かわ->か TalkAPI -> と 雑談API -> ざ
か:こんにちは
と:こんにちは
ざ:あらこんにちは
と:こんにちは
ざ:こんちゃっす
と:こんにちは
ざ:ちはー
と:こんにちは
ざ:ごきげんよう
と:またいつかお会いしましょう
ざ:話は変わりますけど、12月1日は映画の日だって、知ってました?
と:あるかどうかですよ
ざ:ないよ
と:そうですよね
ざ:うん
と:どうしました?
ざ:好きです
と:私をですか?嬉しいです
ざ:すかをつかんでるんです
と:私はそんなに嫌いじゃないですよ
ざ:健康に注意されていますか?
と:はいそうです
ざ:はいそうですってます?

こんな感じの会話だった。

以上になります