インテントコンテキストの設定 - Amazon Lex V1

Amazon Lex V2 を使用している場合は、代わりに Amazon Lex V2 ガイドを参照してください。

 

Amazon Lex V1 を使用している場合は、ボットを Amazon Lex V2 にアップグレードすることをお勧めします。V1 には新機能を追加されませんので、すべての新しいボットには V2 を使用することを強くお勧めします。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

インテントコンテキストの設定

Amazon Lex はコンテキストに基づいてインテントをトリガーすることができます。コンテキストは、ボットを定義するときにインテントに関連付けることができる状態変数です。

コンソールを使用して、または PutIntent オペレーションを使用してインテントを作成するときに、インテント用のコンテキストを設定します。英語 (US) (en-US) ロケールで、PutBot オペレーションでボットを作成した際に、enableModelImprovements パラメータを true に設定した場合のみ、コンテクストを使用することができます。

コンテキストには、出力コンテキストと出力コンテキストの 2 種類の関係があります。出力コンテキストは、関連するインテントが満たされたときにアクティブになります。出力コンテキストは、PostText オペレーション、または PostContent オペレーションの応答でアプリケーションに返され、現在のセッションに設定されます。コンテキストがアクティブになった後、コンテキストが定義されたときに設定されたターン数または時間制限の間、アクティブなままになります。

入力コンテキストは、インテントを認識するための条件を指定します。会話中にインテントを認識できるのは、その入力コンテキストがすべてアクティブになっているときだけです。入力コンテクストがないインテントは、常に認識の対象となります。

Amazon Lex は、出力コンテキストでインテントを満たすことによってアクティブになったコンテキストのライフサイクルを自動的に管理します。また、PostContent オペレーション、または PostText のオペレーションの呼び出しでアクティブなコンテキストを設定することができます。

また、インテントの Lambda 関数を使用して会話のコンテキストを設定することができます。Amazon Lex からの出力コンテキストは、Lambda 関数の入力イベントに送信されます。Lambda 関数は、そのレスポンスでコンテキストを送信することができます。詳細については、「Lambda 関数の入力イベントとレスポンスの形式」を参照してください。

例えば、レンタカーを予約するインテントがあり「book_car_fulfilled」という出力コンテキストを返すよう設定されているとします。インテントが達成すると、Amazon Lex は出力コンテキスト変数「book_car_fulfilled」を設定します。「book_car_filded」はアクティブなコンテキストであるため、ユーザーの発話がそのインテントを引き出す試みとして認識される限り、「book_car_filded」コンテキストを入力コンテキストとして設定したインテントが認識対象として考慮されます。これは、領収書のメール送信や予約の変更など、車を予約した後にのみ意味を持つインテントに使用できます。

出力コンテキスト

Amazon Lex は、インテントが実行されたときに、インテントの出力コンテキストをアクティブにします。出力コンテキストを使用して、現在のインテントをフォローアップできるインテントを制御できます。

各コンテキストは、セッションで保持されるパラメータのリストを持っています。パラメータは、履行されたインテントのスロット値です。これらのパラメータを使用して、他のインテントのスロット値を事前に入力することができます。詳細については、「デフォルトのスロット値を使用する」を参照してください。

出力コンテキストは、コンソールまたは PutIntent オペレーションでインテントを作成するときに設定します。1 つのインテントに複数の出力コンテキストを設定することができます。インテントが実行されると、すべての出力コンテキストがアクティブになり、PostText または PostContent 応答で返されます。

次に、コンソールを使用してインテントに出力コンテキストを割り当てる方法を示します。

order_complete というラベルの付いた出力タグには、5 ターン、つまり 90 秒の有効期間があります。

出力コンテキストを定義するときは、そのコンテキストの有効期限 (TTL)、つまり Amazon Lex からの応答に含まれる時間の長さまたはターン数も定義します。ある順番は、アプリケーションから Amazon Lex への 1 つのリクエストです。ターン数または時間が経過すると、コンテキストはアクティブでなくなります。

アプリケーションは必要に応じて、出力コンテキストを使用することができます。例えば、アプリケーションは出力コンテキストを次のように使用できます。

  • コンテキストに基づき、アプリケーションの動作を変更します。例えば、旅行アプリケーションでは、コンテキストの「book_car_filled」に対して「rental_hotel_filded」とは異なるアクションを設定することができます。

  • 出力コンテキストを、次の発話の入力コンテキストとして Amazon Lex に返します。Amazon Lex がその発話をインテントを引き出す試みと認識した場合、そのコンテキストを使用して、返されるインテントを指定されたコンテキストを持つものに限定します。

コンテキストを入力する

入力コンテキストを設定することで、会話の中でインテントが認識されるポイントを限定することができます。入力コンテキストがないインテントは、常に認識対象となります。

インテントが応答する入力コンテキストは、コンソールまたは PutIntent オペレーションを使用して設定します。インテントは複数の入力コンテキストを持つことができます。次に、コンソールを使用してインテントに入力コンテキストを割り当てる方法を示します。

order_complete というラベルの付いた入力タグ。

複数の入力コンテキストを持つインテントでは、インテントをトリガーするには、すべてのコンテキストがアクティブである必要があります。PostText オペレーション、PostContent オペレーション、または PutSession のオペレーションを呼び出すと、入力コンテキストを設定することができます。

インテント内のスロットは、現在アクティブなコンテキストからデフォルト値を取るように設定することができます。デフォルト値は、Amazon Lex が新しいインテントを認識するが、スロット値を受信しない場合に使用されます。スロットを定義する際に、コンテキスト名とスロット名を #context-name.parameter-name という形で指定します。詳細については、「デフォルトのスロット値を使用する」を参照してください。