

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

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

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

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

セッション属性はセッションの期間にわたって保持されます。Amazon Lex V2 は、セッションが終了するまで暗号化されたデータストアに保存します。クライアントは、`sessionAttributes` フィールドに値を設定して [RecognizeText](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeText.html) または [RecognizeUtterance](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeUtterance.html) オペレーションを呼び出すことで、リクエスト内でセッション属性を作成することができます。Lambda 関数は、レスポンスのセッション属性を作成できます。クライアントまたは Lambda 関数がセッション属性を作成すると、クライアントアプリケーションが Amazon Lex V2 へのリクエストに`sessionAttribute`フィールドを含めないたびに、保存された属性値が使用されます。

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

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

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

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

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

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

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

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