安排预约 - Amazon Lex V1

终止支持通知:2025年9月15日, AWS 我们将停止对Amazon Lex V1的支持。2025 年 9 月 15 日之后,您将无法再访问 Amazon Lex V1 控制台或 Amazon Lex V1 资源。如果您使用的是 Amazon Lex V2,请改为参阅 Amazon Lex 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}?” and

        {Date} 的什么时间?”

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

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

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

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

此 Lambda 函数蓝图代码可以同时执行 initialization/validation 和履行任务。

  • 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 机器人