サポート終了通知: 2025 年 9 月 15 日、 AWS は Amazon Lex V1 のサポートを終了します。 V1 2025 年 9 月 15 日以降、Amazon Lex V1 コンソールまたは Amazon Lex V1 リソースにアクセスできなくなります。Amazon Lex V2 を使用している場合は、代わりに Amazon Lex V2 ガイドを参照してください。
翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ステップ 2b (オプション): 入力による情報フローの詳細を確認する (コンソール)
このセクションでは、クライアントが PostText API を使用してリクエストを送信する場合の、クライアントと Amazon Lex の間の情報のフローについて説明します。詳細については、「PostText」を参照してください。
-
ユーザーの入力: 「花を注文したい」
-
クライアント (コンソール) は以下の PostText リクエストを Amazon Lex に送信します。
POST /bot/OrderFlowers/alias/$LATEST/user/4o9wwdhx6nlheferh6a73fujd3118f5w/text "Content-Type":"application/json" "Content-Encoding":"amz-1.0" { "inputText": "I would like to order some flowers", "sessionAttributes": {} }リクエストの URI と本文の両方で Amazon Lex に情報が提供されています。
-
リクエスト URI – ボット名 (
OrderFlowers)、ボットのエイリアス ($LATEST)、およびユーザー名 (ユーザーを識別するランダムな文字列) を提供します。末尾のtextでは、これがPostTextAPI リクエストである (PostContentではない) ことが示されています。 -
リクエストボディ – ユーザー入力 (
inputText) と空のsessionAttributesが含まれています。クライアントが最初のリクエストを行うときにはセッション属性はありません。Lambda 関数は後でセッション属性を使用します。
-
-
inputTextから、Amazon Lex はインテント (OrderFlowers) を検出します。このインテントには、ユーザー入力の初期化と検証、あるいはフルフィルメントを行うためのコードフック (Lambda 関数) がありません。Amazon Lex は、値を引き出すインテントのスロットのいずれか (この場合は
FlowerType) を選択します。また、そのスロットの値を引き出すプロンプトの 1 つ (すべてインテント設定の一部) を選択し、以下のレスポンスをクライアントに返します。コンソールに、ユーザーへのレスポンスのメッセージが表示されます。
クライアントはレスポンス内のメッセージを表示しています。
-
-
ユーザーの入力: 「バラ」
-
クライアント (コンソール) は以下の PostText リクエストを Amazon Lex に送信します。
POST /bot/OrderFlowers/alias/$LATEST/user/4o9wwdhx6nlheferh6a73fujd3118f5w/text "Content-Type":"application/json" "Content-Encoding":"amz-1.0" { "inputText": "roses", "sessionAttributes": {} }リクエストボディの
inputTextは、ユーザー入力を示します。sessionAttributesは空のままです。 -
Amazon Lex はまず、現在のインテントのコンテキストの
inputTextを解釈します (このサービスではFlowerTypeスロットに関する情報を特定のユーザーに求めていたことが記憶されています)。Amazon Lex は現在のインテントのスロット値を更新し、別のスロット (PickupDate) をそのスロットのプロンプトメッセージの 1 つ (「何日にバラをピックアップなさいますか?」)と共に選択します。次に、Amazon Lex は以下のレスポンスを返します。
クライアントはレスポンス内のメッセージを表示しています。
-
-
ユーザーの入力: 「明日」
-
クライアント (コンソール) は以下の PostText リクエストを Amazon Lex に送信します。
POST /bot/OrderFlowers/alias/$LATEST/user/4o9wwdhx6nlheferh6a73fujd3118f5w/text "Content-Type":"application/json" "Content-Encoding":"amz-1.0" { "inputText": "tomorrow", "sessionAttributes": {} }リクエストボディの
inputTextは、ユーザー入力を示します。sessionAttributesは空のままです。 -
Amazon Lex はまず、現在のインテントのコンテキストの
inputTextを解釈します (このサービスではPickupDateスロットに関する情報を特定のユーザーに求めていたことが記憶されています)。Amazon Lex は現在のインテントのスロット (PickupDate) の値を更新します。値を引き出す別のスロット (PickupTime) を選択します。値を引き出すプロンプトの 1 つ (2017 年 1 月 5 日の何時にバラを配達しますか? )がクライアントに返されます。次に、Amazon Lex は以下のレスポンスを返します。
クライアントはレスポンス内のメッセージを表示しています。
-
-
ユーザーの入力: 「午後 6 時」
-
クライアント (コンソール) は以下の PostText リクエストを Amazon Lex に送信します。
POST /bot/OrderFlowers/alias/$LATEST/user/4o9wwdhx6nlheferh6a73fujd3118f5w/text "Content-Type":"application/json" "Content-Encoding":"amz-1.0" { "inputText": "6 pm", "sessionAttributes": {} }リクエストボディの
inputTextは、ユーザー入力を示します。sessionAttributesは空のままです。 -
Amazon Lex はまず、現在のインテントのコンテキストの
inputTextを解釈します (このサービスではPickupTimeスロットに関する情報を特定のユーザーに求めていたことが記憶されています)。Amazon Lex はまず現在のインテントのスロット値を更新します。ここで、Amazon Lex はすべてのスロットのデータがそろっていることを検出します。OrderFlowersインテントには確認メッセージが設定されています。そのため、Amazon Lex はインテントの達成に進む前に、ユーザーからの明示的な確認を必要とします。Amazon Lex は、花を注文する前に確認を要求する以下のメッセージをクライアントに送信します。
クライアントはレスポンス内のメッセージを表示しています。
-
-
ユーザーの入力: 「はい」
-
クライアント (コンソール) は以下の PostText リクエストを Amazon Lex に送信します。
POST /bot/OrderFlowers/alias/$LATEST/user/4o9wwdhx6nlheferh6a73fujd3118f5w/text "Content-Type":"application/json" "Content-Encoding":"amz-1.0" { "inputText": "Yes", "sessionAttributes": {} }リクエストボディの
inputTextは、ユーザー入力を示します。sessionAttributesは空のままです。 -
Amazon Lex は、現在のインテントの確認のコンテキストで
inputTextを解釈して、注文を進めることをユーザーが望んでいることを理解します。OrderFlowersインテントには、フルフィルメントアクティビティとしてReturnIntentが設定されています (インテントを達成するための Lambda 関数はありません)。したがって、Amazon Lex は次のスロットデータをクライアントに返します。
Amazon Lex は
dialogStateをReadyForFulfillmentに設定します。これで、クライアントはインテントを達成できます。
-
-
ここで、ボットをもう一度テストします。そのためには、コンソールで [Clear] リンクを選択して、新しい (ユーザー) コンテキストを確立する必要があります。ここで、花の注文のデータを提供するときに、無効なデータを指定してみます。例:
-
花の種類として「Jasmine」 (サポートされている花の種類ではない)
-
花をピックアップする日付として「昨日」
ボットではこれらの値が受け付けられることがわかります。これは、ユーザーデータを初期化/検証するコードがないためです。次のセクションでは、その処理を行う Lambda 関数を追加します。Lambda 関数について、以下の点に注意してください。
-
Lambda 関数はユーザー入力のたびにスロットデータを検証します。インテントは最後に達成されます。つまり、ボットはスロットデータをクライアントに返すだけではなく、花の注文を処理してユーザーにメッセージを返します。詳細については、「Lambda 関数を使用する」を参照してください。
-
Lambda 関数はセッション属性も設定します。セッション属性の詳細については、「PostText」を参照してください。
ご利用開始のセクションを完了したら、その他の演習 (その他の例: Amazon Lex ボットの作成) を行うことができます。旅行を予約する は、セッション属性を使用してクロスインテント情報を共有し、ユーザーと動的に会話します。
-
次のステップ
ステップ 3: Lambda 関数を作成する (コンソール)