つながる会話を作成する
前回は、Intentを使って挨拶のやりとりを作成しました。実際、私たちの会話はこのような会話のキャッチボールが何度も繰り返されることで成り立っています。
今回は、会話を継続するための機能を使って、天気に関する会話のやりとりを作成してみようと思います。下記の図のようなイメージです。
「今日の天気わかる?」という会話の後に、晴れ、曇り、雨のいずれかを入力し、入力した天気に応じて、チャットボットの応答文が変わる仕組みです。
ポイントは、「傘いるかな?」の問いかけに対して、前回答えた天気に応じた応答文が返ってくるところです。
以下の画像を参考に、天気の会話をIntentに登録します。Intentの追加は左メニューの「Intents」から「CREATE INTENT」をクリックします。
手順については「Dialogflowを使ってみよう その①」の記事を参考にしてみてください。
まずはそれぞれの会話のセットを作成します。
最初の挨拶と天気を訪ねる応答文
「晴れ」と回答した時の応答文
「曇り」と回答した時の応答文
「雨」と回答した時の応答文
「晴れ」と回答した後に「傘が必要か?」という問いかけに対する応答文
「曇り」と回答した後に「傘が必要か?」という問いかけに対する応答文
「雨」と回答した後に「傘が必要か?」という問いかけに対する応答文
会話のセットはできましたが、それぞれのIntentは独立しているので、これでは「傘が必要か?」という問いかけに対して、実行するインテントが確定できません。
そこで、このIntentをつなげて会話を継続させるためにContextsを使います。
Contextsを作成する
Contextsとは、会話を継続させるために次の会話に必要な情報を設定するものです。
それぞれのIntent内の「Contexts」に記述します。
「Add input context」 ⇒ Intentを実行する条件
「Add output context」 ⇒ Intentを実行した結果
「晴れ」「曇り」「雨」と発言した時のIntentを 「Add output context」 に登録しておきます。これで、どの天気のIntentが実行されたのかを記憶させることができます。
曇り、雨のパターンも同様に、Intent名をContextsに登録します。
次に「傘が必要か?」という問いかけに対して、晴れの場合、曇りの場合、雨の場合で応答文が異なる3つのIntentのどれを実行するかを登録していきます。
今度は、Intentが呼ばれる条件を指定するため、「Add input context」のほうに、条件として使われたIntent名を入力して保存します。
例えば、晴れの場合の応答文は「晴れ」と回答した時のIntent名「tenkisun」を登録します。
曇り、雨の場合も同様に、回答した天気に対応するIntent名を登録します。
実行してみよう
このような感じで、回答した天気に応じて、傘が必要かどうかを答えてくれるチャットボットができました。
Contextを使うことで会話のパターンが広がり、よりチャットボットらしくなりました。
簡単に作れるので、是非、皆さんも作ってみてください。
Dialogflowにはもっと色々な使い方があります。それについてはまた今度、記事にしたいと思います。