本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
会话和请求属性是属性和值的 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地图。在这种情况下,您可以将对象转换为一个简单字符串,以便通过 RecognizeText 和 RecognizeUtterance 操作将其发送给自动程序。
例如,如果您正在使用 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. varobj
= JSON.parse(JSON string
);
要通过RecognizeUtterance
操作发送属性,在将属性添加到请求标头之前,必须对属性进行 base64 编码,如以下 JavaScript代码所示:
var
encodedAttributes
= new Buffer(attributeString
).toString("base64");
您可以通过先将二进制数据转换为 base64 编码字符串、然后将该字符串作为会话属性中的值发送,来向 RecognizeText
和 RecognizeUtterance
操作发送二进制数据:
"sessionAttributes" : {
"binaryData": "base64 encoded data
"
}