Lex V2 ボットのセッション属性の設定 - Amazon Lex

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

Lex V2 ボットのセッション属性の設定

セッション属性には、セッション中にボットとクライアントアプリケーションの間でやり取りされるアプリケーション固有の情報が含まれます。Amazon Lex は、ボットに設定されたすべての Lambda 関数にセッション属性を渡します。Lambda 関数がセッション属性を追加または更新した場合、Amazon Lex は新しい情報をクライアントアプリケーションに返します。

Lambda 関数でセッション属性を使用して、ボットを初期化し、プロンプトとレスポンスカードをカスタマイズします。以下に例を示します。

  • 初期化 - ピザの注文ボットにおいて、RecognizeText または RecognizeUtterance オペレーションへの最初の呼び出しで、クライアントアプリケーションはユーザーの場所をセッション属性として渡します。例えば、"Location": "111 Maple Street" と指定します。Lambda 関数は、この情報に基づいて最寄りのピザ屋を見つけ、注文を行います。

  • プロンプトのカスタマイズ - セッション属性を参照するようにプロンプトとレスポンスカードを設定します。例: 「[FirstName] 様、トッピングは何になさいますか?」 ユーザーの名前をセッション属性 ({"FirstName": "Vivian"}) として渡すと、Amazon Lex はプレースホルダーをその名前に置き換えます。そして「ビビアン、どのトッピングがいい?」というパーソナライズされたプロンプトをユーザーに送ります。

セッション属性はセッションの期間にわたって保持されます。Amazon Lex では、セッションが終わるまで、セッション属性を暗号化されたデータストアに保存します。クライアントは、sessionAttributes フィールドに値を設定して RecognizeText または RecognizeUtterance オペレーションを呼び出すことで、リクエスト内でセッション属性を作成することができます。Lambda 関数は、レスポンスのセッション属性を作成できます。クライアントまたは Lambda 関数でセッション属性を作成すると、クライアントアプリケーションで Amazon Lex へのリクエストに sessionAttribute フィールドを指定しない場合に、いつでも保存された属性値が使用されます。

例えば、2 つのセッション属性 {"x": "1", "y": "2"} があるとします。クライアントが RecognizeText オペレーションまたは RecognizeUtterance オペレーションを呼び出すときに sessionAttributes フィールドを指定しない場合、Amazon Lex は保存されたセッション属性 ({"x": 1, "y": 2}) を使用して Lambda 関数を呼び出します。Lambda 関数からセッション属性が返されない場合、Amazon Lex は保存されたセッション属性をクライアントアプリケーションに返します。

クライアントアプリケーションまたは Lambda 関数のいずれかがセッション属性を渡すと、Amazon Lex は保存されたセッション属性を更新します。既存の値 {"x": 2} などを渡すと、保存された値が更新されます。新しい一連のセッション属性 ({"z": 3} など) を渡すと、既存の値は削除され、新しい値のみが保持されます。空のマップ {} を渡すと、保存された値が消去されます。

セッション属性を Amazon Lex に送信するには、属性の文字列間マップを作成します。セッション属性のマッピング方法を以下に示します。

{ "attributeName": "attributeValue", "attributeName": "attributeValue" }

RecognizeText のオペレーションでは、次のように、sessionAttributes 構造の sessionState フィールドを使って、マップをリクエストのボディに挿入します。

"sessionState": { "sessionAttributes": { "attributeName": "attributeValue", "attributeName": "attributeValue" } }

RecognizeUtterance のオペレーションでは、マップを base64 でエンコードし、x-amz-lex-session-state ヘッダーの一部として送信します。

バイナリまたは構造化されたデータをセッション属性で送信する場合は、最初にデータを単純な文字列に変換する必要があります。詳細については、「Lex V2 ボットでの複雑な属性の設定」を参照してください。