

终止支持通知：2025年9月15日， AWS 我们将停止对Amazon Lex V1的支持。2025 年 9 月 15 日之后，您将无法再访问 Amazon Lex V1 控制台或 Amazon Lex V1 资源。如果您使用的是 Amazon Lex V2，请改为参阅 [Amazon Lex V2 指南](https://docs.aws.amazon.com/lexv2/latest/dg/what-is.html)。

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

# 预订旅程
<a name="ex-book-trip"></a>

本示例介绍了如何创建可以支持多个目的的自动程序。本示例还介绍了如何使用会话属性实现跨目的信息共享。创建机器人后，您可以在 Amazon Lex 控制台中使用测试客户端来测试该机器人 (BookTrip)。客户端针对每个用户输入使用 [PostText](API_runtime_PostText.md) 运行时 API 操作向 Amazon Lex 发送请求。

本示例中的 BookTrip 机器人配置有两个意图（BookHotel 和 BookCar）。例如，假设用户首先预订酒店。在交互过程中，用户提供入住日期、地点和入住天数等信息。实现目的后，客户端可以使用会话属性保留这一信息。有关会话属性的更多信息，请参阅 [PostText](API_runtime_PostText.md)。

现在假设用户继续预订汽车。使用用户在之前的 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 蓝图](lex-lambda-blueprints.md)。





**下一个步骤**  
[步骤 1：查看本练习中使用的蓝图](ex-book-trip-blueprints.md)