支援終止通知:在 2025 年 9 月 15 日, AWS 將停止對 Amazon Lex V1 的支援。2025 年 9 月 15 日之後,您將無法再存取 Amazon Lex V1 主控台或 Amazon Lex V1 資源。如果您使用的是 Amazon Lex V2,請改參閱 Amazon Lex V2 指南。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在本練習中的範例機器人會為牙醫診所排定預約。範例同時說明如何使用回應卡,利用按鈕來取得使用者輸入。範例特別說明以動態方式在執行時間產生回應卡。
您可以在建置時間設定回應卡 (也稱為靜態回應卡),或在 AWS Lambda 函數中動態產生回應卡。在此範例中,機器人使用以下回應卡:
-
列出預約類型按鈕的回應卡。如需範例,請參閱下列影像:
-
列出預約日期按鈕的回應卡。如需範例,請參閱下列影像:
-
列出按鈕以確認建議之預約時間的回應卡。如需範例,請參閱下列影像:
可預約的日期和時間各不相同,因此您需要在執行時間產生回應卡。您可以使用 AWS Lambda 函數動態產生這些回應卡。Lambda 函數會在回應 Amazon Lex 時傳回回應卡。Amazon Lex 會在回應用戶端時包含回應卡。
如果用戶端 (例如,Facebook Messenger) 支援回應卡,使用者可以從按鈕清單中選擇,或輸入回應。否則,使用者會直接輸入回應。
除了上例中顯示的按鈕之外,您也可以包含影像、附件和其他有用的資訊以顯示在回應卡上。如需有關回應卡的資訊,請參閱 回應卡。
在本練習中,您會進行以下動作:
-
建立和測試機器人 (使用 ScheduleAppointment 藍圖)。就此練習,您使用機器人藍圖來快速設定和測試機器人。如需可用的藍圖清單,請參閱Amazon Lex 和 AWS Lambda 藍圖。此機器人已針對一個意圖 (
MakeAppointment
) 進行預先設定。 -
建立和測試 Lambda 函數 (使用 Lambda 提供的 lex-make-appointment-python 藍圖)。您可以設定使用此 Lambda 函數做為程式碼掛鉤的
MakeAppointment
意圖,以執行初始化、驗證和履行任務。注意
提供的範例 Lambda 函數會根據牙醫預約的模擬可用性來展示動態對話。在實際的應用程式中,您可以使用實際的行事曆來設定預約時間。
-
更新
MakeAppointment
意圖組態,以使用 Lambda 函數做為程式碼掛勾。然後,測試端對端體驗。 -
將排程預約機器人發佈到 Facebook Messenger,以便您可以查看作用中的回應卡 (Amazon Lex 主控台中的用戶端目前不支援回應卡)。
以下章節提供有關在本練習中所用之藍圖的摘要資訊。
主題
機器人藍圖概觀 (ScheduleAppointment)
在本練習中,您用來建立機器人的 ScheduleAppointment 藍圖已預先設定以下設定:
-
槽類型 – 一個稱為
AppointmentTypeValue
的自訂槽類型,包含root canal
、cleaning
和whitening
的列舉值。 -
意圖 – 一個意圖 (
MakeAppointment
),這已預先設定如下:-
槽 – 已使用以下槽來設定意圖:
-
槽
AppointmentType
,為AppointmentTypes
自訂類型。 -
槽
Date
,為AMAZON.DATE
內建類型。 -
槽
Time
,為AMAZON.TIME
內建類型。
-
-
表達用語 - 意圖已使用以下表達用語進行預先設定:
-
「我想要預約」
-
「預約」
-
「預約 {AppointmentType}」
如果使用者說出任何這些內容,Amazon Lex 會判斷
MakeAppointment
是意圖,然後使用提示來引出槽資料。 -
-
提示 - 意圖已使用以下提示進行預先設定:
-
AppointmentType
槽的提示 -「您想要排定哪一種預約?」 -
Date
槽的提示 -「我應該何時排定您的 {AppointmentType}?」 -
Time
槽提示 –「您希望在何時排程 {AppointmentType}?」 以及「在 {Date} 幾點?」
-
確認提示 -「可以約 {Time},要我幫您預約該時間嗎?」
-
取消訊息 -「好的,我不會排定預約。」
-
-
Lambda 函數藍圖概觀 (lex-make-appointment-python)
Lambda 函數藍圖 (lex-make-appointment-python) 是您使用 ScheduleAppointment 機器人藍圖建立之機器人的程式碼掛鉤。
此 Lambda 函數藍圖程式碼可以同時執行初始化/驗證和履行任務。
-
Lambda 函數程式碼顯示根據牙醫預約的範例可用性進行的動態對話 (在實際應用程式中,您可以使用行事曆)。對於使用者指定的一天或日期,程式碼設定如下:
-
如果沒有可用的預約,Lambda 函數會傳回回應,指示 Amazon Lex 提示使用者改日或日期 (將
dialogAction
類型設定為ElicitSlot)
。如需詳細資訊,請參閱回應格式。 -
如果在指定的日期只有一個預約可用,Lambda 函數會建議回應中的可用時間,並指示 Amazon Lex 在回應
dialogAction
中設定 以取得使用者確認ConfirmIntent
。這裡說明了您可以如何透過主動提出可預約時間,改善使用者體驗。 -
如果有多個可用的預約,Lambda 函數會傳回回應 Amazon Lex 的可用時間清單。Amazon Lex 會傳回回應給用戶端,其中包含來自 Lambda 函數的訊息。
-
-
做為履行程式碼掛鉤,Lambda 函數會傳回摘要訊息,指出已排定預約 (也就是已履行意圖)。
注意
在這個範例中,我們示範如何使用回應卡。Lambda 函數會建構回應卡並將其傳回給 Amazon Lex。回應卡會將可預約的日期和時間列為可供選擇的按鈕。使用 Amazon Lex 主控台提供的用戶端測試機器人時,看不到回應卡。若要查看,必須將機器人與簡訊平台整合,例如 Facebook Messenger。如需說明,請參閱 將 Amazon Lex 機器人與 Facebook Messenger 整合。如需回應卡的詳細資訊,請參閱管理訊息 。
當 Amazon Lex 調用 Lambda 函數時,它會傳遞事件資料做為輸入。其中一個事件欄位是 invocationSource
,Lambda 函數會使用它在輸入驗證和履行活動之間進行選擇。如需詳細資訊,請參閱輸入事件格式。