

支援終止通知：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-complex-attributes"></a>

工作階段和請求屬性是屬性與值的字串至字串對應。在許多情況下，您可以使用字串對應在用戶端應用程式與機器人之間傳輸屬性值。不過，在某些情況下，您可能需要傳輸無法輕易轉換為字串對應的二進位資料或複雜架構。例如，以下 JSON 物件代表美國三個最熱門的城市陣列：

```
{
   "cities": [
      {
         "city": {
            "name": "New York",
            "state": "New York",
            "pop": "8537673"
         }
      },
      {
         "city": {
            "name": "Los Angeles",
            "state": "California",
            "pop": "3976322"
         }
      },
      {
         "city": {
            "name": "Chicago",
            "state": "Illinois",
            "pop": "2704958"
         }
      }
   ]
}
```

這個資料陣列不會妥當地轉譯為字串至字串對應。在這種情況下，您可以將物件轉換成簡單的字串，讓您可以透過 [PostContent](API_runtime_PostContent.md) 和 [PostText](API_runtime_PostText.md) 操作將其傳送到機器人。

例如，如果您使用 JavaScript，可以使用 `JSON.stringify` 操作將物件轉換成 JSON，以及使用 `JSON.parse` 操作將 JSON 文字轉換成 JavaScript 物件：

```
// To convert an object to a string.
var jsonString = JSON.stringify({{object}}, null, 2);
// To convert a string to an object.
var {{obj}} = JSON.parse({{JSON string}});
```

若要透過 `PostContent` 操作傳送工作階段屬性，您必須先以 base64 編碼後再將其新增至請求標頭，如以下 JavaScript 程式碼所示：

```
var {{encodedAttributes}} = new Buffer({{attributeString}}).toString("base64");
```

您可以先將資料轉換成以 base64 編碼的字串，然後將該字串當做值在工作階段屬性中傳送，藉此將二進位資料傳送到 `PostContent` 和 `PostText` 操作：

```
"sessionAttributes" : {
   "binaryData": "{{base64 encoded data}}"
}
```