安排預約 - Amazon Lex V1

如果您使用的是 Amazon Lex V2,請改參閱 Amazon Lex V2 指南

 

如果您使用的是 Amazon Lex V1,我們建議您將機器人升級至 Amazon Lex V2。我們不再將新功能新增至 V1,並強烈建議對所有新機器人使用 V2。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

安排預約

在本練習中的範例機器人會為牙醫診所排定預約。範例同時說明如何使用回應卡,利用按鈕來取得使用者輸入。範例特別說明以動態方式在執行時間產生回應卡。

您可以在建置階段設定回應卡 (也稱為靜態回應卡),或在 AWS Lambda 函數中動態產生回應卡。在此範例中,機器人使用以下回應卡:

  • 列出預約類型按鈕的回應卡。如需範例,請參閱下列影像:

    響應卡要求預約時間表的類型和三個選項:清潔(30 分鐘),根管(60 分鐘)和美白(90 分鐘)。
  • 列出預約日期按鈕的回應卡。如需範例,請參閱下列影像:

    響應卡詢問日期安排約會和三個選項:2-15,2-16 和 2-17。
  • 列出按鈕以確認建議之預約時間的回應卡。如需範例,請參閱下列影像:

    響應卡要求確認預約的時間和日期,有兩個選項:是和否。

可預約的日期和時間各不相同,因此您需要在執行時間產生回應卡。您可以使用 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 canalcleaningwhitening 的列舉值。

  • 意圖 – 一個意圖 (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 函數用來在輸入驗證和履行活動之間進行選擇。如需詳細資訊,請參閱輸入事件格式

後續步驟

步驟 1:創建一個 Amazon Lex 機器人