设置 Lex V2 机器人的意图上下文 - Amazon Lex

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

设置 Lex V2 机器人的意图上下文

您可以根据上下文设置触发意图。上下文是一个在定义机器人时与意图相关联的状态变量。通过控制台或 CreateIntent 操作创建意图时,您可以为该意图配置上下文。目前,只支持在英语(美国) (en-US) 语言环境中使用上下文。

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

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

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

您也可以通过 Lambda 函数为意图设置对话上下文。的输出上下文将发送到 Lambda 函数输入事件。Lambda 函数可以在其响应中发送上下文。有关更多信息,请参阅 将 AWS Lambda 功能集成到您的机器人中

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

Lex V2 机器人的意图输出上下文

当意图实现时,使意图的输出上下文处于活动状态。您可以通过输出上下文来控制哪些意图符合跟随当前意图的条件。

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

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

在定义输出上下文时,还要定义其生存时间、上下文包含在响应中的时间长度或回合数。轮流是您的应用程序向其发出的一次请求。一旦回合数或时间到期,上下文将不再处于活动状态。

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

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

  • 将输出上下文返回为作为下一句话的输入上下文。如果将话语识别为企图引发意图,则它使用上下文将可以返回的意图限制为具有指定上下文的意图。

Lex V2 机器人的意图输入上下文

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

您可以通过控制台或 CreateIntent 操作设置意图响应的输入上下文。一个意图可以包含多个输入上下文。

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

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