ドコモのAPIを使って自然言語でユーザと会話ができるプログラムを作成する

docomoが11/11日にdocomo Developer supportというサイトを公開しました。
ここで公開されたAPIは、

  • 音声認識
  • 環境センサー
  • 雑談対話
  • 知識Q&A
  • 文字認識
  • 位置情報
  • ドコモケータイ払い

の7つです。(11/19現在)

この中で、雑談対話APIが簡単で面白そうだったので、これを使ってチャットができる簡単なプログラムを作ってみようと思います。

とりあえず試してみる

最初に、 http://dev.smt.docomo.ne.jp/ から、雑談対話APIを使うためのAPIキーを取得しておきましょう。
雑談対話APIのURLは、
https://api.apigw.smt.docomo.ne.jp/dialogue/v1/dialogue
です。
また、認証情報としてリクエスト時にクエリパラメータにAPIキーをつける必要があります。APIKEY=[APIキー]という形式です。
会話をするには、リクエストボディにJSON形式で、

{
  “utt”:“こんにちは!"
}

のように書きます。

curlコマンドを使って試してみましょう。

curl -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"utt":”こんにちは!"}' 'https://api.apigw.smt.docomo.ne.jp/dialogue/v1/dialogue?APIKEY=[取得したAPIキー]'

こんなふうにリクエストを送ると、

{
  "utt":"おはようございます",
  "yomi":"おはようございます",
  "mode":"dialog","da":"27",
  "context":"5c_UavJtt8jvDrX1sX3zHk”
}

のように、JSON形式で返答が返ってきます。
返答に含まれる”context”を次の会話文のパラメータとして使用すると、同じ人として認識され、会話が継続されるようです。
その他のパラメータや詳細に関しては、
http://dev.smt.docomo.ne.jp/?p=docs.api.zatsudan.reference.detail01
を読んでください。

実際に会話をするプログラムを作ってみる

こんな感じのプログラムをRubyで書いてみました。

実行してみます。

$ ruby docomo-dialogue.rb
com > こんにちは!声かけてくれるのを待ってたんだ。
you > だろうと思ったよ
com > だよな
you > 今なにしてるの?
com > ちょうど、手が空いたところです。
you > それは ちょうどいいね
com > だいぶ混んでますね
you > そうかな?
com > そうだよ
you > ごめん
com > やだ
you > 許して…
com > そうかもしれません
you > ありがとう
com > おうおう
you > 

こんな感じで、なんとなく意味は通じる?会話をすることができます。
面白いですね!