

サポート終了通知: 2025 年 9 月 15 日、 AWS は Amazon Lex V1 のサポートを終了します。 V1 2025 年 9 月 15 日を過ぎると、Amazon Lex V1 コンソールまたは Amazon Lex V1 リソースにはアクセスできなくなります。Amazon Lex V2 を使用している場合は、代わりに [Amazon Lex V2 ガイド](https://docs.aws.amazon.com/lexv2/latest/dg/what-is.html)を参照してください。

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

# セッション属性の設定
<a name="context-mgmt-session-attribs"></a>

*セッション属性*には、セッション中にボットとクライアントアプリケーションの間でやり取りされるアプリケーション固有の情報が含まれます。Amazon Lex は、ボットに設定されたすべての Lambda 関数にセッション属性を渡します。Lambda 関数でセッション属性が追加または更新されると、Amazon Lex からクライアントアプリケーションに新しい情報が返されます。例:
+ [演習 1: 設計図を使用して Amazon Lex ボットを作成する (コンソール)](gs-bp.md) で、サンプルボットは `price` セッション属性を使用して花の価格を保持しています。Lambda 関数は、注文された花の種類に基づいて、この属性を設定します。詳細については、「[ステップ 5 (オプション): 情報フローの詳細を確認する (コンソール)](gs-bp-details-after-lambda.md)」を参照してください。
+ [旅行を予約する](ex-book-trip.md) で、サンプルボットは `currentReservation` セッション属性を使用して、会話中のスロットタイプデータのコピーを保持し、ホテルやレンタカーを予約します。詳細については、「[情報フローの詳細](book-trip-detail-flow.md)」を参照してください。

ボットの初期化、プロンプトやレスポンスカードのカスタマイズには、Lambda 関数のセッション属性を使用します。例:
+ 初期化 - ピザの注文ボットにおいて、[PostContent](API_runtime_PostContent.md) オペレーションまたは [PostText](API_runtime_PostText.md) オペレーションへの最初の呼び出しで、クライアントアプリケーションはユーザーの場所をセッション属性として渡します。例えば、 `"Location": "111 Maple Street"`。Lambda 関数は、この情報に基づいて最寄りのピザ屋を見つけ、注文を行います。
+ プロンプトのカスタマイズ - セッション属性を参照するようにプロンプトとレスポンスカードを設定します。例: 「[FirstName] 様、トッピングは何になさいますか?」 ユーザーの名前をセッション属性 (`{"FirstName": "Jo"}`) として渡すと、Amazon Lex はプレースホルダをその名前に置き換えます。次に、カスタマイズしたプロンプトをユーザーに送信します:「Jo 様、トッピングは何になさいますか?」

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

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

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

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

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

`PostText` オペレーションの場合は、次に示すように、[`sessionAttributes`] フィールドを使用してリクエストの本文にマップを挿入します。

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

`PostContent` オペレーションの場合は、マップを base64 エンコードし、それを `x-amz-lex-session-attributes` ヘッダーとして送信します。

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