メニュー
Amazon Lex
開発者ガイド

ボットの例: BookTrip

この例では、複数のインテントをサポートするように設定されているボットの作成を示しています。この例では、クロスインテント情報共有のためのセッション属性の使用方法も示しています。ボットを作成した後で、Amazon Lex コンソールでテストクライアントを使用してボット (BookTrip) をテストします。クライアントでは、PostText ランタイム API オペレーションを使用して、各ユーザー入力に対するリクエストが Amazon Lex に送信されます。

この例の BookTrip ボットは、2 つのインテント (BookHotel と BookCar) を使用して設定されています。たとえば、ユーザーが最初にホテルを予約するとします。その操作中に、ユーザーはチェックイン日時、場所、宿泊数などの情報を指定します。インテントが達成されると、クライアントではセッション属性を使用してこの情報を保持できます。セッション属性の詳細については、「PostText」を参照してください。

次に、そのユーザーが引き続き車を予約するとします。前の BookHotel インテントでユーザーが提供した情報 (つまり、目的地、およびチェックイン/チェックアウトの日時) を使用して、BookCar インテントを初期化および検証するように設定されたコードフック (Lambda 関数) によって、BookCar インテント用のスロットデータ (つまり、目的地、受け取り場所、受け取り日付、および返却日時) が初期化されます。これは、クロスインテント情報共有によって、ユーザーと動的に会話できるボットを構築する方法を示しています。

この例では以下のセッション属性を使用しています。セッション属性を設定および更新できるのはクライアントと Lambda 関数だけであり、Amazon Lex はクライアントと Lambda 関数の間でセッション属性を渡すだけです。Amazon Lex では、セッション属性が保持および変更されることはありません。

  • currentReservation – 進行中の予約とその他の関連情報のスロットデータが含まれています。クライアントから Amazon Lex へのリクエストの例を次に示します。この例では、リクエスト本文に currentReservation セッション属性が含まれています。

    POST /bot/BookTrip/alias/$LATEST/user/wch89kjqcpkds8seny7dly5x3otq68j3/text "Content-Type":"application/json" "Content-Encoding":"amz-1.0" { "inputText":"Chicago", "sessionAttributes":{ "currentReservation":"{\"ReservationType\":\"Hotel\", \"Location\":\"Moscow\", \"RoomType\":null, \"CheckInDate\":null, \"Nights\":null}" } }

     

  • lastConfirmedReservation – 前のインテントでの類似した情報が含まれています (該当する場合)。たとえば、ユーザーがホテルを予約した後に車を予約中である場合、このセッション属性には前の BookHotel インテントのスロットデータが格納されています。

     

  • confirmationContext – Lambda 関数では、前の予約のスロットデータ (存在する場合) に基づいて一部のスロットデータを事前入力する際に、これが AutoPopulate に設定されます。これにより、クロスインテント情報共有が可能になります。たとえば、ユーザーがホテルを予約した後に車を予約しようとしている場合、Amazon Lex では、ホテルの予約と同じ場所と日時で車を予約することを確認 (または拒否) するようにユーザーに指示できます。

この演習では、設計図を使用して Amazon Lex ボットと Lambda 関数を作成します。設計図の詳細については、「Amazon Lex と AWS Lambda の設計図」を参照してください。

次のステップ

ステップ 1: この演習で使用する設計図を確認する