如果您使用的是 Amazon Lex V2,請改參閱 Amazon Lex V2 指南。
如果您使用的是 Amazon Lex V1,我們建議您將機器人升級至 Amazon Lex V2。我們不再將新功能新增至 V1,並強烈建議對所有新機器人使用 V2。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定複雜屬性
會話和請求屬性是屬性和值的 string-to-string 映射。在許多情況下,您可以使用字串對應在用戶端應用程式與機器人之間傳輸屬性值。不過,在某些情況下,您可能需要傳輸無法輕易轉換為字串對應的二進位資料或複雜架構。例如,以下 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"
}
}
]
}
這個數據數組不能很好地轉換為 string-to-string地圖。在這種情況下,您可以將物件轉換成簡單的字串,讓您可以透過 PostContent 和 PostText 操作將其傳送到機器人。
例如,如果您正在使用 JavaScript,則可以使用JSON.stringify
操作將對象轉換為 JSON,並將 JSON 文本轉換為 JavaScript 對象的JSON.parse
操作:
// To convert an object to a string. var jsonString = JSON.stringify(
object
, null, 2); // To convert a string to an object. varobj
= JSON.parse(JSON string
);
若要傳送作業的工PostContent
作階段屬性,您必須在將屬性新增至要求標頭之前,base64 對屬性進行編碼,如下列 JavaScript程式碼所示:
var
encodedAttributes
= new Buffer(attributeString
).toString("base64");
您可以先將資料轉換成以 base64 編碼的字串,然後將該字串當做值在工作階段屬性中傳送,藉此將二進位資料傳送到 PostContent
和 PostText
操作:
"sessionAttributes" : {
"binaryData": "base64 encoded data
"
}