安排预约 - Amazon Lex V1

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

 

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

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

安排预约

本练习中的示例自动程序将为牙医诊所安排预约。本示例还介绍了如何使用响应卡获取带有按钮的用户输入。具体来说,该示例介绍了如何在运行时动态生成响应卡。

您可以在构建时配置响应卡(也称为静态响应卡),也可以在 AWS Lambda 函数中动态生成响应卡。在本示例中,自动程序使用以下响应卡:

  • 列出预约类型按钮的响应卡。有关示例,请参阅下图:

    响应卡要求安排预约类型和三个选项:清洁(30 分钟)、根管(60 分钟)和美白(90 分钟)。
  • 列出预约日期按钮的响应卡。有关示例,请参阅下图:

    响应卡询问预约的日期和三个选项:2-15、2-16 和 2-17。
  • 列出按钮以确认建议预约时间的响应卡。有关示例,请参阅下图:

    响应卡要求确认预约的时间和日期,有两个选项:是和否。

可用的预约日期和时间有所不同,这就需要您在运行时生成响应卡。您可以使用 AWS Lambda 函数动态生成这些响应卡。Lambda 函数将在其发送给 Amazon Lex 的响应中返回响应卡。Amazon Lex 将在其发送给客户端的响应中包含响应卡。

如果客户端 (如 Facebook Messenger) 支持响应卡,则用户可以在按钮列表中进行选择或键入响应。如果不支持,则用户只需键入响应。

除了上述示例中显示的按钮以外,您还可在响应卡上包含映像、附件和其他有用的信息。有关响应卡的信息,请参阅 响应卡

在本练习中,您将执行以下操作:

  • 创建并测试机器人(使用 ScheduleAppointment 蓝图)。在本练习中,您将使用自动程序蓝图快速设置并测试自动程序。有关可用蓝图的列表,请参阅 Amazon Lex 和 AWS Lambda 蓝图。此自动程序预配置了一个目的 (MakeAppointment)。

     

  • 创建和测试 Lambda 函数(使用 Lambda 提供的 lex-make-appointment-python蓝图)。您将 MakeAppointment 意图配置为将此 Lambda 函数用作代码挂钩,以执行初始化、验证和履行任务。

    注意

    所提供的示例 Lambda 函数将根据牙医预约的模型可用性显示动态对话。在实际应用程序中,您可以使用真正的日历安排预约。

  • 更新 MakeAppointment 意图配置以将 Lambda 函数用作代码挂钩。然后,测试 end-to-end 体验。

  • 将安排预约机器人发布到 Facebook Messenger,以便您可以查看响应卡的实际操作(目前 Amazon Lex 控制台中的客户端不支持响应卡)。

以下几个部分提供了有关您在本练习中使用的蓝图的摘要信息。

机器人蓝图概述 (ScheduleAppointment)

您用于为本练习创建机器人的 ScheduleAppointment 蓝图已预先配置了以下内容:

  • 槽类型 – 一个称为 AppointmentTypeValue 的自定义槽类型,具有枚举值 root canalcleaningwhitening

  • 目的 – 一个目的 (MakeAppointment),按如下方式进行预配置:

    • – 目的配置了以下槽:

      • AppointmentType,属于 AppointmentTypes 自定义类型。

      • Date,属于 AMAZON.DATE 内置类型。

      • Time,属于 AMAZON.TIME 内置类型。

    • 表达 – 目的预配置了以下表达:

      • “我想进行预约”

      • “预约”

      • “预订 {AppointmentType}”

      如果用户表达出上述任意一种说法,Amazon Lex 将确定意图是 MakeAppointment,然后使用提示引发插槽数据。

    • 提示 – 目的预配置了以下提示:

      • 用于 AppointmentType 槽的提示 –“您想要安排哪种类型的预约?”

      • 提示进入时Date段 — “我应该什么时候安排你的 {AppointmentType}?”

      • 提示输入时Time段 — “你想在什么时候安排 {AppointmentType}?” 以及

        {Date} 的什么时间?”

      • 确认提示 –“{Time} 可以预约,我应该直接帮您预约吗?”

      • 取消消息 –“好的,我不会安排预约。”

Lambda 函数蓝图概述 () lex-make-appointment-python

Lambda 函数蓝图 (lex-make-appointment-python) 是您使用机器人蓝图创建的机器人的代码挂钩。 ScheduleAppointment

此 Lambda 函数蓝图代码可以执行初始化/验证和履行任务。

  • Lambda 函数代码显示了基于牙医预约示例可用性的动态对话(在实际应用程序中,您可以使用日历)。对于用户指定的日期或时间,代码按如下方式配置:

    • 如果没有可用的预约,Lambda 函数将返回指示 Amazon Lex 提示用户选择其他时间或日期的响应(通过将 dialogAction 类型设置为 ElicitSlot))。有关更多信息,请参阅 响应格式

    • 如果在指定的时间或日期只有一个可用预约,Lambda 函数将在响应中建议可用的时间,并通过将响应中的 dialogAction 设置为 ConfirmIntent 来指示 Amazon Lex 获取用户确认。这说明了如何通过主动建议可用的预约时间来改善用户体验。

    • 如果有多个可用预约,Lambda 函数将在返回到 Amazon Lex 的响应中提供可用时间列表。Amazon Lex 将在返回到客户端的响应中提供来自 Lambda 函数的消息。

  • 履行代码挂钩之后,Lambda 函数将返回表示预约已安排的摘要消息(即意图已履行)。

注意

在本示例中,我们将展示如何使用响应卡。Lambda 函数将构建响应卡并将其返回给 Amazon Lex。该响应卡将可用的日期和时间作为可供选择的按钮一一列出。使用 Amazon Lex 控制台提供的客户端测试机器人时,您无法查看响应卡。要进行查看,必须将自动程序与消息收发平台 (如 Facebook Messenger) 集成。有关说明,请参阅 将 Amazon Lex 机器人与 Facebook Messenger 集成。有关响应卡的更多信息,请参阅 管理消息

Amazon Lex 调用 Lambda 函数时,会将事件数据作为输入进行传递。其中一个事件字段是 invocationSource,Lambda 函数会使用该字段在输入验证和履行活动之间进行选择。有关更多信息,请参阅 输入事件格式

下一个步骤

步骤 1:创建 Amazon Lex 机器人