Dialogflow のコンテキストは、自然言語のコンテキストと似ています。たとえば、誰かが「それはオレンジです」と言った場合、「それ」が何を指しているのかを理解するためにコンテキストが必要になります。同様に、Dialogflow がそのようなエンドユーザー表現を処理するには、インテントを正しく一致させるためにコンテキストが必要になります。
コンテキストを使用すると、会話のフローを制御できます。文字列名で指定される入力コンテキストと出力コンテキストを設定することで、インテントのコンテキストを構成できます。インテントが一致すると、そのインテントに構成済みの出力コンテキストがアクティブになります。コンテキストがアクティブな間、Dialogflow では、構成済みのインテントと、現在アクティブなコンテキストに一致する入力コンテキストをマッチングする可能性が高まります。
次の図は、銀行エージェントのコンテキストを使用する例を示しています。
- エンドユーザーは当座預金口座に関する情報を尋ねます。
-
Dialogflow によって、このエンドユーザー表現が
CheckingInfo
インテントとマッチングされます。このインテントにはchecking
出力コンテキストが含まれているので、コンテキストがアクティブになります。 - エージェントはエンドユーザーに、当座預金口座に関する情報の種類を尋ねます。
- エンドユーザーは「私の口座残高」と応答します。
-
Dialogflow によって、このエンドユーザー表現が
CheckingBalance
インテントとマッチングされます。このインテントには、checking
入力コンテキストが含まれています。この入力コンテキストがインテントと一致するには、アクティブになっている必要があります。同様に、savings
コンテキストがアクティブな場合、同じエンドユーザー表現をマッチングするSavingsBalance
インテントも存在している可能性があります。 - 必要なデータベース クエリが実行されると、エージェントから当座預金残高のレスポンスが送られます。