如果您使用的是 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 LambdaBlueprints (藍圖)。