设置意图上下文 - Amazon Lex V1

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

 

如果您使用的是 Amazon Lex V1,我们建议您将机器人升级到 Amazon Lex V2。我们不再向 V1 添加新功能,强烈建议使用 V2 以获得全新的机器人。

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

设置意图上下文

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

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

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

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

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

您也可以通过 Lambda 函数为意图设置对话上下文。将 Amazon Lex 的输出上下文发送到 Lambda 函数输入事件。Lambda 函数可以在其响应中发送上下文。有关更多信息,请参阅Lambda 函数输入事件和响应格式

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

输出上下文

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

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

当您通过控制台或 PutIntent 操作创建意图时,您可以配置输出上下文。您可以为一个意图配置多个输出上下文。履行意图时,所有输出上下文都将被激活,并在 PostTextPostContent 响应中返回。

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

标有 order_complete 的输出标签,生存时间为 5 个回合或 90 秒。

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

您的应用程序可以根据需要使用输出上下文。例如,您的应用程序可以通过输出上下文来:

  • 根据上下文更改应用程序的行为。例如,旅行应用程序对上下文“book_car_fulfilled”的操作可能与对“rental_hotel_fulfilled”的操作不同。

  • 将输出上下文作为下一句话的输入上下文返回给 Amazon Lex。如果 Amazon Lex 将言语识别为尝试引发意图,则会通过上下文将可以返回的意图限制为具有指定上下文的意图。

输入上下文

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

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

标有 order_complete 的输入标签。

对于具有多个输入上下文的意图,所有上下文都必须处于活动状态才能触发该意图。您可以在调用 PostTextPostContentPutSession 操作时设置输入上下文。

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