如果您使用的是 Amazon Lex V2,请改为参阅 Amazon Lex V2 指南。
如果您使用的是 Amazon Lex V1,我们建议您将机器人升级到 Amazon Lex V2。我们不再向 V1 添加新功能,强烈建议使用 V2 以获得全新的机器人。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
预订旅程
本示例介绍了如何创建可以支持多个目的的自动程序。本示例还介绍了如何使用会话属性实现跨目的信息共享。创建机器人后,您可以使用 Amazon Lex 控制台中的测试客户端对机器人 (BookTrip) 进行测试。客户端针对每个用户输入使用 PostText 运行时 API 操作向 Amazon Lex 发送请求。
本示例中的 BookTrip 自动程序配置了两个目的 (BookHotel 和 BookCar)。例如,假设用户首先预订酒店。在交互过程中,用户提供入住日期、地点和入住天数等信息。实现目的后,客户端可以使用会话属性保留这一信息。有关会话属性的更多信息,请参阅 PostText。
现在假设用户继续预订汽车。自动程序使用用户在前一个 BookHotel 目的中提供的信息 (即目的地城市、入住日期及离店日期) 以及您配置用来对 BookCar 目的进行初始化和验证的代码挂钩 (Lambda 函数),对 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 蓝图。