

支援終止通知：2025 年 9 月 15 日， AWS 將停止對 Amazon Lex 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`欄位，就會使用儲存的屬性值。

例如，假設您有兩個工作階段屬性，`{"x": "1", "y": "2"}`。如果用戶端在未指定 `sessionAttributes` 欄位的情況下呼叫 `PostContent`或 `PostText`操作，Amazon Lex 會使用儲存的工作階段屬性 () 呼叫 Lambda 函數`{"x": 1, "y": 2}`。如果 Lambda 函數未傳回工作階段屬性，Amazon Lex 會將儲存的工作階段屬性傳回至用戶端應用程式。

如果用戶端應用程式或 Lambda 函數傳遞工作階段屬性，Amazon Lex 會更新儲存的工作階段屬性。傳遞現有的值，例如 ` {"x": 2}`，會更新儲存的值。如果您傳送一組新的工作階段屬性，例如 `{"z": 3}`，現有的值會被移除，只保留新值。當傳遞空白對應 `{}` 時，會清除儲存的值。

若要將工作階段屬性傳送至 Amazon Lex，您可以建立屬性的string-to-string映射。以下說明如何對應工作階段屬性：

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

對於 `PostText` 操作，您使用 `sessionAttributes` 欄位將對應插入請求的本文，如下所示：

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

對於 `PostContent` 操作，您用 base64 來編碼對應，然後將其做為 `x-amz-lex-session-attributes` 標頭傳送。

如果您在工作階段屬性中傳送二進位或結構化資料，必須先將資料轉換為簡單的字串。如需詳細資訊，請參閱[設定複雜屬性](context-mgmt-complex-attributes.md)。