

终止支持通知：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-active-context"></a>

您可以让 Amazon Lex 根据*上下文*触发意图。*上下文*是一个在定义机器人时与意图相关联的状态变量。

通过控制台或 [PutIntent](API_PutIntent.md) 操作创建意图时，您可以为该意图配置上下文。您只能在英语（美国）(en-US) 区域设置中使用上下文，并且前提是您在使用 [PutBot](API_PutBot.md) 操作创建机器人时将 `enableModelImprovements` 参数设置为 `true`。

上下文有两种类型的关系，即输出上下文和输入上下文。当履行关联的意图时，*输出上下文*就会变为活动状态。在 [PostText](API_runtime_PostText.md) 或 [PostContent](API_runtime_PostContent.md) 操作的响应中，会将输出上下文返回到您的应用程序，并为当前会话设置上下文。上下文被激活后，会保持活动状态，直到定义上下文时配置的回合数或时间限制。

*输入上下文*指定了可以识别意图的条件。只有当对话的所有输入上下文都处于活动状态时，才能识别出意图。没有输入上下文的意图始终可以被识别。

Amazon Lex 自动管理通过使用输出上下文履行意图而激活的上下文的生命周期。您还可以在调用 `PostContent` 或 `PostText` 操作时设置活动上下文。

您也可以通过 Lambda 函数为意图设置对话上下文。将 Amazon Lex 的输出上下文发送到 Lambda 函数输入事件。Lambda 函数可以在其响应中发送上下文。有关更多信息，请参阅 [Lambda 函数输入事件和响应格式](lambda-input-response-format.md)。

例如，假设您打算预订一辆配置返回名为“book\$1car\$1fulfilled”的输出上下文的租车。履行意图时，Amazon Lex 会将输出上下文变量设置为“book\$1car\$1fulfilled”。由于“book\$1car\$1fulfilled”上下文处于活动状态，因此，只要用户的言语被识别为试图引发该意图，就可以考虑将“book\$1car\$1fulfilled”上下文设置为输入上下文的意图进行识别。您可以将其用于只有在预订车辆后才有意义的意图，例如，通过电子邮件发送收据或修改预订。

## 输出上下文
<a name="context-output"></a>

履行意图时，Amazon Lex 会激活意图的输出上下文。您可以通过输出上下文来控制哪些意图符合跟随当前意图的条件。

每个上下文都有一个在会话中维护的参数列表。这些参数是已履行意图的插槽值。您可以使用这些参数为其他意图预填充插槽值。有关更多信息，请参阅[使用默认插槽值](context-mgmt-default.md)。

当您通过控制台或 [PutIntent](API_PutIntent.md) 操作创建意图时，您可以配置输出上下文。您可以为一个意图配置多个输出上下文。履行意图时，所有输出上下文都将被激活，并在 [PostText](API_runtime_PostText.md) 或 [PostContent](API_runtime_PostContent.md) 响应中返回。

以下是使用控制台为意图分配输出上下文的示例。

![\[标有 order_complete 的输出标签，生存时间为 5 个回合或 90 秒。\]](http://docs.aws.amazon.com/zh_cn/lex/latest/dg/images/context-output.png)


在定义输出上下文时，还要定义其*生存时间*以及该上下文包含在 Amazon Lex 的响应中的时长或回合数。一个*回合*是指从您的应用程序向 Amazon Lex 发出的一个请求。一旦回合数或时间到期，上下文将不再处于活动状态。

您的应用程序可以根据需要使用输出上下文。例如，您的应用程序可以通过输出上下文来：
+ 根据上下文更改应用程序的行为。例如，旅行应用程序对上下文“book\$1car\$1fulfilled”的操作可能与对“rental\$1hotel\$1fulfilled”的操作不同。
+ 将输出上下文作为下一句话的输入上下文返回给 Amazon Lex。如果 Amazon Lex 将言语识别为尝试引发意图，则会通过上下文将可以返回的意图限制为具有指定上下文的意图。

## 输入上下文
<a name="context-input"></a>

您可以设置输入上下文来限制对话中识别意图的点。没有输入上下文的意图始终可以被识别。

您可以通过控制台或 `PutIntent` 操作设置意图响应的输入上下文。一个意图可以包含多个输入上下文。以下是使用控制台为意图分配输入上下文的示例。

![\[标有 order_complete 的输入标签。\]](http://docs.aws.amazon.com/zh_cn/lex/latest/dg/images/context-input.png)


对于具有多个输入上下文的意图，所有上下文都必须处于活动状态才能触发该意图。您可以在调用 [PostText](API_runtime_PostText.md)、[PostContent](API_runtime_PostContent.md) 或 [PutSession](API_runtime_PutSession.md) 操作时设置输入上下文。

您可以将意图中的插槽配置为采用当前活动上下文中的默认值。当 Amazon Lex 识别出新的意图但未收到插槽值时，使用默认值。定义插槽时，可以在表单 `#context-name.parameter-name` 中指定上下文名称和插槽名称。有关更多信息，请参阅 [使用默认插槽值](context-mgmt-default.md)。