如果您使用的是 Amazon Lex V2,请改为参阅 Amazon Lex V2 指南。
如果您使用的是 Amazon Lex V1,我们建议您将机器人升级到 Amazon Lex V2。我们不再向 V1 添加新功能,强烈建议使用 V2 以获得全新的机器人。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
设置请求属性
Request attributes 包含请求特定的信息,并仅应用于当前请求。客户端应用程序会将此信息发送给 Amazon Lex。可以使用请求属性传递不需要在整个会话中保留的信息。您可以创建自己的请求属性,也可以使用预定义属性。要发送请求属性,请在 PostText 请求的 PostContent 或 requestAttributes
字段中使用 x-amz-lex-request-attributes
标头。由于请求属性不像会话属性那样在不同请求间保留,因此不会在 PostContent
或 PostText
响应中返回。
注意
要发送在请求间保留的信息,请使用会话属性。
命名空间 x-amz-lex:
是为预定义请求属性预留的。请勿创建带有 x-amz-lex:
前缀的请求属性。
设置预定义请求属性
Amazon Lex 提供预定义请求属性,用于管理它对发送至机器人的信息的处理方式。这些属性不会在整个会话中保留,因此必须在每个请求中发送预定义属性。所有预定义属性都在 x-amz-lex:
命名空间中。
除了以下预定义属性之外,Amazon Lex 还提供消息收发平台的预定义属性。有关这些属性的列表,请参阅在消息收发平台上部署 Amazon Lex 机器人。
设置响应类型
如果您有两个具有不同功能的客户端应用程序,则可能需要限制响应中的消息的格式。例如,您可能希望将发送到 Web 客户端的消息限制为纯文本,但使移动客户端能够同时使用纯文本和语音合成标记语言 (SSML)。要设置 PostContent 和 PostText 操作返回的消息的格式,请使用 x-amz-lex:accept-content-types"
请求属性。
您可以将此属性设置为以下消息类型的任意组合:
-
PlainText
— 消息包含 UTF-8 纯文本。 -
SSML
— 消息包含为语音输出设置格式的文本。 -
CustomPayload
— 消息包含为您的客户端创建的自定义格式。您可以定义负载以满足应用程序的需要。
Amazon Lex 仅返回具有响应的 Message
字段中指定的类型的消息。您可以设置多个值,以逗号分隔这些值。如果您使用消息组,则每个消息组必须至少包含一个指定类型的消息。否则,您将收到 NoUsableMessageException
错误。有关更多信息,请参阅消息组。
注意
x-amz-lex:accept-content-types
请求属性不会影响 HTML 正文的内容。PostText
操作响应的内容始终为纯 UTF-8 文本。PostContent
操作响应的正文包含请求中 Accept
标头中设置的格式的数据。
设置首选时区
要设置用于解析日期的时区,以使其与用户的时区相关,请使用 x-amz-lex:time-zone
请求属性。如果您未在 x-amz-lex:time-zone
属性中指定时区,则默认值取决于您用于自动程序的区域。
区域 | 默认时区 |
---|---|
美国东部(弗吉尼亚州北部) |
America/New_York
|
美国西部(俄勒冈州) |
America/Los_Angeles
|
亚太地区(新加坡) |
Asia/Singapore
|
亚太地区(悉尼) |
Australia/Sydney
|
亚太地区(东京) |
Asia/Tokyo
|
欧洲地区(法兰克福) |
Europe/Berlin
|
欧洲地区(爱尔兰) |
Europe/Dublin
|
欧洲地区(伦敦) |
Europe/London
|
例如,如果用户在对“您希望您的包裹哪天送达?”提示的响应中回复 tomorrow
,则包裹送达的实际日期依据用户的时区确定。例如,纽约时间 9 月 16 日 01:00 时相当于洛杉矶时间 9 月 15 日 22:00。如果您的服务在美国东部(弗吉尼亚州北部)区域中运行,洛杉矶的一位用户使用默认时区要求包裹于“明天”送达,那么该包裹将于 17 日送达,而不是 16 日。但是,如果您将 x-amz-lex:time-zone
请求属性设置为 America/Los_Angeles
,该包裹将于 16 日送达。
您可以将该属性设置为任何互联网编号分配机构 (IANA) 时区名称。有关时区名称的列表,请参阅维基百科上的 tz 数据库时区的列表
设置用户定义的请求属性
用户定义的请求属性 是您在每个请求中发送给自动程序的数据。可在 PostContent
请求的 amz-lex-request-attributes
标头或 PostText
请求的 requestAttributes
字段中发送信息。
要向 Amazon Lex 发送请求属性,请创建属性的字符串到字符串映射。下面显示了如何映射请求属性:
{ "attributeName": "attributeValue", "attributeName": "attributeValue" }
对于 PostText
操作,您可以使用 requestAttributes
字段将映射插入请求正文中,如下所示:
"requestAttributes": { "attributeName": "attributeValue", "attributeName": "attributeValue" }
对于 PostContent
操作,您对映射进行 base64 编码,然后将其作为 x-amz-lex-request-attributes
标头发送。
如果您要在请求属性中发送二进制或结构化数据,必须先将该数据转换为简单字符串。有关更多信息,请参阅设置复杂属性。