配置履行进度更新 - Amazon Lex

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

配置履行进度更新

调用意图的履行 Lambda 函数时,机器人要等到函数完成后才会发送响应。如果 Lambda 函数需要超过几秒钟才能完成,则用户可能会认为机器人没有响应。要解决这个问题,您可以将机器人配置为在履行 Lambda 函数运行时向用户发送更新,以便用户知道机器人仍在处理他们的请求。

当您向某个意图添加履行更新时,机器人会在履行开始时做出响应,并在履行过程中定期做出响应。配置开始响应时,可以指定机器人发送响应之前的延迟。这样,您就可以支持无法快速完成该履行的情况。配置更新响应时,需要指定发送更新的频率。您还可以配置超时以限制履行函数必须运行的时间。

您还可以向机器人添加履行的响应。这样,机器人就能够根据履行成功、失败或超时的结果,发送不同的响应。

仅当通过 StartConversation 操作与机器人互动时,才会进行履行更新。通过 StartConversationRecognizeTextRecognizeUtterance 操作与机器人互动时,可以进行履行后更新。

履行更新

履行更新是在您的 Lambda 函数履行意图时发送的。当开启履行更新时,您将提供在履行开始时发送的开始响应和在履行过程中定期发送的更新响应。

当您指定更新响应时,您还可以指定超时时间,决定该履行函数可以运行多长时间。您可以将超时时长指定为最多 15 分钟(900 秒)。

如果您通过在控制台将 active 设置为 false 或执行 CreateIntentUpdateIntent 操作来关闭履行更新,则不会使用为履行更新指定的超时时长,而是使用默认的 30 秒超时时长。

如果履行函数超时,Amazon Lex V2 会执行以下三项操作之一:

  • 履行后响应已配置并处于活动状态:返回超时响应。

  • 履行后响应已配置但未激活:返回异常。

  • 未配置履行后响应:返回异常。

开始响应

在流式对话期间调用履行 Lambda 函数时,Amazon Lex V2 会返回开始响应。它通常会告诉用户实现意图需要一些时间,并建议用户等待。执行 RecognizeTextRecognizeUtterance 操作时,不会返回开始响应。

您最多可以指定五个响应消息。Amazon Lex V2 会选择向用户播放其中一条消息。

您可以在 Lambda 函数被调用和返回开始响应之间配置延迟。如果 Lambda 函数在延迟结束之前完成其工作,则不会返回开始响应。

您可以通过控制台中的 active 切换开关或 FulfillmentUpdatesSpecification 结构来开启和关闭开始响应。如果 active 为 false,则不播放开始响应。

更新响应

在履行 Lambda 函数运行期间,Amazon Lex 会在流式对话期间定期返回更新响应。当您执行 RecognizeTextRecognizeUtterance 操作时,不会播放更新响应。您可以配置更新响应的播放频率。例如,在履行函数运行期间,您可以每 30 秒播放一次更新响应,让用户知道流程正在运行,应继续等待。

您最多可以指定五个更新消息。Amazon Lex V2 选择要向用户播放的消息。使用多条消息可以防止更新重复。

如果用户在履行 Lambda 函数运行时通过语音、DTMF 或文本提供输入,则 Amazon Lex V2 会将更新响应返回给用户。

如果 Lambda 函数在第一个更新周期结束之前完成其工作,则不会返回更新响应。

您可以通过控制台中的 active 切换开关或 FullmentUpdatesSpecification 结构来开启和关闭更新响应。如果 active 为 false,则不返回更新响应。

履行后响应

当履行函数结束时,Amazon Lex V2 会返回履行后响应。实现任何意图时都可以使用履行后响应,而不仅仅是在流式对话时。履行后响应会通知用户该函数已完成以及完成结果。

您可以通过控制台中的 active 切换开关或 PostFulfillmentStatusSpecification 结构来开启和关闭履行后响应。如果 active 为 false,则不播放响应。

有三种类型的履行后响应:

  • 成功:当履行 Lambda 函数成功完成其工作时返回。如果履行后响应未激活,Amazon Lex V2 会执行下一个配置的操作。

  • 超时:当 Lambda 函数在配置的超时时间过后未完成其工作时返回。如果履行后响应未激活,Amazon Lex V2 将返回异常。

  • 失败:当 Lambda 函数在响应中返回状态 Failed 或 Amazon Lex V2 在实现意图时遇到错误时返回。如果履行后响应未激活,Amazon Lex V2 将返回异常。

您最多可以为每种类型指定五个消息。Amazon Lex V2 会选择向用户播放其中一条消息。

与履行开始和履行更新响应不同,履行后响应可以为流式和非流式对话回放。

您还可以通过配置 Lambda 函数返回履行后消息来覆盖这些消息。

注意

如果该意图有结束响应,则会在履行后响应之后返回。

履行后示例

为了更好地了解履行后响应,我们以一个 BookTrip 机器人为例。该机器人是为帮助计划行程而创建的,具有 BookFlight 意图,并配置了履行 Lambda 函数,可以为客户预订航班。引发 BookFlight 的插槽后,Amazon Lex V2 就会调用履行 Lambda 函数。在此履行过程中,可能会出现以下三种结果之一:

  • 成功:航班成功预订。

  • 超时:预订过程所花费的时间比配置的履行 Lambda 执行时间更长(例如,无法在分配的时间内联系到航空公司)。

  • 失败:由于其他原因预订失败。

出现任何结果,您都可以通过履行后响应为客户提供更有意义的响应。每种结果的示例如下:

  • 成功响应:“我们成功为您预订了机票,并已向您发送了一封确认电子邮件。如果您有任何疑问,请随时通过该电子邮件中提供的联系信息与我们联系。”

  • 超时响应:“由于我们系统繁忙,预订机票所需的时间比预期更长。我们已将您的请求放入队列,并通过电子邮件向您发送了与此请求对应的参考编号。一旦完成机票预订,我们将向您发送预订确认函。如果您有任何疑问,请随时通过该电子邮件中提供的联系信息与我们联系。”

    注意

    如果您未配置超时消息,Amazon Lex 会抛出与用例对应的 4XX 错误。

  • 失败响应:“很遗憾,我们无法为您预订机票。我们已经通过电子邮件向您发送了帮您预订机票时遇到的问题的详细信息。”