シンチャオ!稲葉貴大です!残り3週間弱ですが、社員の方とサッカーをしたりとベトナム生活を楽しんでいます。仕事は充実しており、貴重な体験をさせてもらっています。
さてさて今回はChatbot製作日記第2回目です!Intentsの中のFollowup-IntentとContextsについて紹介したいと思います。
Followup-Intent
Followup-Intentは決まったIntentが行われた後に発行されるIntentのことです。
私たちは飛行機を予約するというIntentを作成し、として予約をキャンセルする場合を考えました。初めに、Intentsのページにいき、airplane-reservedのIntentを作成した後、隠しメニューのAdd follow-up intentをクリックしました。そして、次に示したように飛行機の予約をキャンセルするFollowup-Intentを作りました。
飛行機の予約をキャンセルするFollowup-Intentの中には最初から次のようにキーワードが入っています。そのため、自分で入力する必要がないことが分かりました。
次に、実際に実行した様子を紹介します。
例として「名古屋までの飛行機を予約して」と聞かれた際にキーワードを読み取り、レスポンスするようにしました。
そして、「キャンセルして」といわれると、次のようにairplane-reserved-cancelが動作していることが確認できました。ここで、airplane-reservedのIntentが呼び出される前にこの作業を行うと、うまく返答出来ないことがわかりました。つまり、親のIntentが呼び出された後にのみFollowup-Intentが動作することが理解できました。
Contexts
ContextはFollowup-Intentよりも柔軟な対話を作る方法として使われます。ここでは、飛行機の予約を行なった後にホテルを予約する場合を例にして紹介したいと思います。
最初にこのように、airplane-reservedのIntentのoutput contextにreservedと記入しました。そして、次に示したようにhotel-reservedのIntentのinput contextとoutput contextにも同様にreservedと記入しました。こうすることによって、二つのIntentを繋げることを可能にしました。
実際に試してみた結果を次に示しました。
飛行機の予約をした後、「ホテルの予約をして」と聞かれた場合を想定すると次のようになりました。下図を参照すると、hotel-reservedのIntentが呼び出されたことが確認できます。一方で、飛行機の予約をする前に同様のことを行うと、Intentが呼び出されないことが分かりました。
Followup-IntentとContextの違い
ここで、Followup_IntentとContextって同じ?と思う方もいると思います。実際、Followup-Intentを作る場合、自動的にContextが作成されています。自分で自由にIntentやContextを決めたい時は、手動でContextを作成すれば柔軟な構造で実現できます。また、Fulfillmentを用いてサーバーを設定し、Contextを状況によって変えることも可能です。Fulfillmentについては、また詳しく説明したいと思います。
Chatbotについて気になった方、このようなもの作りに携わりたいと思った方!お気軽に下のボタンよりお問い合わせください。