设置复杂属性 - Amazon Lex V1

如果您使用的是 Amazon Lex V2,请改为参阅 Amazon Lex V2 指南

 

如果您使用的是 Amazon Lex V1,我们建议您将机器人升级到 Amazon Lex V2。我们不再向 V1 添加新功能,强烈建议使用 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" } } ] }

该数据数组无法正常转换为字符串到字符串映射。在这种情况下,您可以将对象转换为一个简单字符串,以便通过 PostContentPostText 操作将其发送给自动程序。

例如,如果您使用的是 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 编码字符串、然后将该字符串作为会话属性中的值发送,来向 PostContentPostText 操作发送二进制数据:

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