支援終止通知:在 2025 年 9 月 15 日, AWS 將停止對 Amazon Lex V1 的支援。2025 年 9 月 15 日之後,您將無法再存取 Amazon Lex V1 主控台或 Amazon Lex V1 資源。如果您使用的是 Amazon Lex V2,請改參閱 Amazon Lex 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
時,Lambda 函數會將此值設定為 。如此可跨意圖資訊共享。例如,如果使用者先前預訂了飯店,但現在想要預訂租車,Amazon Lex 可以提示使用者確認 (或拒絕) 正在預訂與飯店預訂相同的城市和日期的租車
在本練習中,您會使用藍圖來建立 Amazon Lex 機器人和 Lambda 函數。如需有關藍圖的詳細資訊,請參閱 Amazon Lex 和 AWS Lambda 藍圖。