终止支持通知:2025年9月15日, AWS 我们将停止对Amazon Lex V1的支持。2025 年 9 月 15 日之后,您将无法再访问亚马逊 Lex V1 主机或 Amazon Lex V1 资源。如果您使用的是 Amazon Lex V2,请改为参阅 Amazon Lex V2 指南。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
本示例介绍了如何创建可以支持多个目的的自动程序。本示例还介绍了如何使用会话属性实现跨目的信息共享。创建机器人后,您可以在 Amazon Lex 控制台中使用测试客户端来测试该机器人 (BookTrip)。客户端针对每个用户输入使用 PostText 运行时 API 操作向 Amazon Lex 发送请求。
本示例中的 BookTrip 机器人配置有两个意图(BookHotel 和 BookCar)。例如,假设用户首先预订酒店。在交互过程中,用户提供入住日期、地点和入住天数等信息。实现目的后,客户端可以使用会话属性保留这一信息。有关会话属性的更多信息,请参阅 PostText。
现在假设用户继续预订汽车。使用用户在之前的 BookHotel intent 中提供的信息(即目的地城市以及入住和退房日期),您配置为初始化和验证意图的代码挂钩(Lambda 函数)初始化 BookCar 意图的空位数据(即目的地、接送城市、提货日期和返回日期)。 BookCar 这一过程表明,跨目的信息共享让您可以构建能够与用户展开动态会话的自动程序。
在本示例中,我们使用以下会话属性。只有客户端和 Lambda 函数可以设置和更新会话属性。Amazon Lex 只在客户端和 Lambda 函数之间传递这些会话属性。Amazon Lex 不会保留或修改任何会话属性。
-
currentReservation
— 包含正在进行的预订的插槽数据及其他相关信息。下面是从客户端发到 Amazon Lex 的一个示例请求。请求正文中包含currentReservation
会话属性。POST /bot/BookTrip/alias/$LATEST/user/wch89kjqcpkds8seny7dly5x3otq68j3/text "Content-Type":"application/json" "Content-Encoding":"amz-1.0" { "inputText":"Chicago", "sessionAttributes":{ "currentReservation":"{\"ReservationType\":\"Hotel\", \"Location\":\"Moscow\", \"RoomType\":null, \"CheckInDate\":null, \"Nights\":null}" } }
-
lastConfirmedReservation
— 包含前一个意图的类似信息(如果有)。例如,如果用户预订了酒店,然后正在预订汽车,则此会话属性会存储先前 BookHotel 意图的车位数据。 -
confirmationContext
— Lambda 函数在根据前一个预订的插槽数据(如果有)来预填充某些插槽数据时,会将本属性设置为AutoPopulate
。这可以实现跨目的信息共享。例如,如果用户之前预订了酒店,现在需要预订汽车,则 Amazon Lex 可以提示用户确认(或拒绝)在预订酒店的同一城市和相同日期预订汽车
在本练习中,您使用蓝图创建 Amazon Lex 机器人和 Lambda 函数。有关蓝图的更多信息,请参阅Amazon Lex 和 AWS Lambda 蓝图。