

终止支持通知：2025年9月15日， AWS 我们将停止对Amazon Lex V1的支持。2025 年 9 月 15 日之后，您将无法再访问 Amazon Lex V1 控制台或 Amazon Lex V1 资源。如果您使用的是 Amazon Lex V2，请改为参阅 [Amazon Lex V2 指南](https://docs.aws.amazon.com/lexv2/latest/dg/what-is.html)。

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 设置请求属性
<a name="context-mgmt-request-attribs"></a>

*请求属性*包含请求特定的信息，并仅应用于当前请求。客户端应用程序会将此信息发送给 Amazon Lex。可以使用请求属性传递不需要在整个会话中保留的信息。您可以创建自己的请求属性，也可以使用预定义属性。要发送请求属性，请在 [PostText](API_runtime_PostText.md) 请求的 [PostContent](API_runtime_PostContent.md) 或 `requestAttributes` 字段中使用 `x-amz-lex-request-attributes` 标头。由于请求属性不像会话属性那样在不同请求间保留，因此不会在 `PostContent` 或 `PostText` 响应中返回。

**注意**  
要发送在请求间保留的信息，请使用会话属性。

命名空间 `x-amz-lex:` 是为预定义请求属性预留的。请勿创建带有 `x-amz-lex:` 前缀的请求属性。

## 设置预定义请求属性
<a name="context-mgmt-special"></a>

Amazon Lex 提供预定义请求属性，用于管理它对发送至机器人的信息的处理方式。这些属性不会在整个会话中保留，因此必须在每个请求中发送预定义属性。所有预定义属性都在 `x-amz-lex:` 命名空间中。

除了以下预定义属性之外，Amazon Lex 还提供消息收发平台的预定义属性。有关这些属性的列表，请参阅[在消息收发平台上部署 Amazon Lex 机器人](example1.md)。

### 设置响应类型
<a name="special-response"></a>

如果您有两个具有不同功能的客户端应用程序，则可能需要限制响应中的消息的格式。例如，您可能希望将发送到 Web 客户端的消息限制为纯文本，但使移动客户端能够同时使用纯文本和语音合成标记语言（SSML）。要设置 [PostContent](API_runtime_PostContent.md) 和 [PostText](API_runtime_PostText.md) 操作返回的消息的格式，请使用 `x-amz-lex:accept-content-types"` 请求属性。

您可以将此属性设置为以下消息类型的任意组合：
+ `PlainText` — 消息包含 UTF-8 纯文本。
+ `SSML` — 消息包含为语音输出设置格式的文本。
+ `CustomPayload` — 消息包含为您的客户端创建的自定义格式。您可以定义负载以满足应用程序的需要。

Amazon Lex 仅返回具有响应的 `Message` 字段中指定的类型的消息。您可以设置多个值，以逗号分隔这些值。如果您使用消息组，则每个消息组必须至少包含一个指定类型的消息。否则，您将收到 `NoUsableMessageException` 错误。有关更多信息，请参阅 [消息组](howitworks-manage-prompts.md#message-groups)。

**注意**  
`x-amz-lex:accept-content-types` 请求属性不会影响 HTML 正文的内容。`PostText` 操作响应的内容始终为纯 UTF-8 文本。`PostContent` 操作响应的正文包含请求中 `Accept` 标头中设置的格式的数据。

### 设置首选时区
<a name="special-time-zone"></a>

要设置用于解析日期的时区，以使其与用户的时区相关，请使用 `x-amz-lex:time-zone` 请求属性。如果您未在 `x-amz-lex:time-zone` 属性中指定时区，则默认值取决于您用于自动程序的区域。


| Region | 默认时区 | 
| --- | --- | 
| 美国东部（弗吉尼亚州北部） |  America/New\$1York  | 
| 美国西部（俄勒冈州） |  America/Los\$1Angeles  | 
| 亚太地区（新加坡） |  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 数据库时区的列表](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)。

## 设置用户定义的请求属性
<a name="context-mgmt-user"></a>

*用户定义的请求属性*是您在每个请求中发送给自动程序的数据。可在 `PostContent` 请求的 `amz-lex-request-attributes` 标头或 `PostText` 请求的 `requestAttributes` 字段中发送信息。

要向 Amazon Lex 发送请求属性，您需要创建属性 string-to-string映射。下面显示了如何映射请求属性：

```
{
   "attributeName": "attributeValue",
   "attributeName": "attributeValue"
}
```

对于 `PostText` 操作，您可以使用 `requestAttributes` 字段将映射插入请求正文中，如下所示：

```
"requestAttributes": {
   "attributeName": "attributeValue",
   "attributeName": "attributeValue"
}
```

对于 `PostContent` 操作，您对映射进行 base64 编码，然后将其作为 `x-amz-lex-request-attributes` 标头发送。

如果您要在请求属性中发送二进制或结构化数据，必须先将该数据转换为简单字符串。有关更多信息，请参阅 [设置复杂属性](context-mgmt-complex-attributes.md)。