在 Lex V2 機器人中設定複雜的屬性 - Amazon Lex

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在 Lex V2 機器人中設定複雜的屬性

工作階段和請求屬性是屬性與值的字串至字串對應。在許多情況下,您可以使用字串對應在用戶端應用程式與機器人之間傳輸屬性值。不過,在某些情況下,您可能需要傳輸無法輕易轉換為字串對應的二進位資料或複雜架構。例如,以下 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" } } ] }

這個資料陣列不會妥當地轉譯為字串至字串對應。在這種情況下,您可以將物件轉換為簡單的字串,以便使用 RecognizeTextRecognizeUtterance 操作將其傳送至機器人。

例如,如果您使用 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);

若要使用 RecognizeUtterance操作傳送屬性,您必須先將屬性 base64 編碼,才能將屬性新增至請求標頭,如下列 JavaScript 程式碼所示:

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

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

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