如果您使用的是 Amazon Lex V2,請改參閱 Amazon Lex V2 指南。
如果您使用的是 Amazon Lex V1,我們建議您將機器人升級至 Amazon Lex V2。我們不再將新功能新增至 V1,並強烈建議對所有新機器人使用 V2。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
安排預約
在本練習中的範例機器人會為牙醫診所排定預約。範例同時說明如何使用回應卡,利用按鈕來取得使用者輸入。範例特別說明以動態方式在執行時間產生回應卡。
您可以在建置階段設定回應卡 (也稱為靜態回應卡),或在 AWS Lambda 函數中動態產生回應卡。在此範例中,機器人使用以下回應卡:
-
列出預約類型按鈕的回應卡。如需範例,請參閱下列影像:
-
列出預約日期按鈕的回應卡。如需範例,請參閱下列影像:
-
列出按鈕以確認建議之預約時間的回應卡。如需範例,請參閱下列影像:
可預約的日期和時間各不相同,因此您需要在執行時間產生回應卡。您可以使用 AWS Lambda 函數來動態產生這些回應卡。Lambda 函數在其對 Amazon Lex 的響應返回響應卡。Amazon Lex 在對客戶的回應中包含回應卡。
如果用戶端 (例如,Facebook Messenger) 支援回應卡,使用者可以從按鈕清單中選擇,或輸入回應。否則,使用者會直接輸入回應。
除了上例中顯示的按鈕之外,您也可以包含影像、附件和其他有用的資訊以顯示在回應卡上。如需有關回應卡的資訊,請參閱 回應卡。
在本練習中,您會進行以下動作:
-
建立並測試機器人 (使用 ScheduleAppointment 藍圖)。就此練習,您使用機器人藍圖來快速設定和測試機器人。如需可用的藍圖清單,請參閱Amazon Lex 和AWS LambdaBlueprints (藍圖)。此機器人已針對一個意圖 (
MakeAppointment
) 進行預先設定。 -
建立和測試 Lambda 函數 (使用 Lambda 提供的 lex-make-appointment-python藍圖)。您可以將
MakeAppointment
意圖設定為使用此 Lambda 函數做為程式碼掛接,以執行初始化、驗證和履行工作。注意
提供的 Lambda 函數範例會根據牙醫預約的模擬可用性展示動態對話。在實際的應用程式中,您可以使用實際的行事曆來設定預約時間。
-
更新
MakeAppointment
意圖組態以使用 Lambda 函數做為程式碼掛接。然後,測試體 end-to-end 驗。 -
將排程約會機器人發佈到 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 機器人與臉書信使。如需回應卡的詳細資訊,請參閱管理訊息 。
當 Amazon Lex 叫用 Lambda 函數時,會將事件資料作為輸入傳遞。其中一個事件欄位是 invocationSource
Lambda 函數用來在輸入驗證和履行活動之間進行選擇。如需詳細資訊,請參閱輸入事件格式。