

支援終止通知：2025 年 9 月 15 日， AWS 將停止對 Amazon Lex V1 的支援。2025 年 9 月 15 日之後，您將無法再存取 Amazon Lex V1 主控台或 Amazon Lex V1 資源。如果您使用的是 Amazon Lex V2，請改參閱 [Amazon Lex V2 指南](https://docs.aws.amazon.com/lexv2/latest/dg/what-is.html)。

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

# 排程預約
<a name="ex1-sch-appt"></a>

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

您可以在建置時間設定回應卡 （也稱為靜態回應卡），或在 AWS Lambda 函數中動態產生回應卡。在此範例中，機器人使用以下回應卡：
+ 列出預約類型按鈕的回應卡。如需範例，請參閱下圖：  
![詢問要安排的預約類型和三個選項的回應卡：清理 (30 分鐘）、根管 (60 分鐘） 和白化 (90 分鐘）。](http://docs.aws.amazon.com/zh_tw/lex/latest/dg/images/respcard-10.png)
+ 列出預約日期按鈕的回應卡。如需範例，請參閱下圖：  
![要求安排預約日期的回應卡和三個選項：2-15、2-16 和 2-17。](http://docs.aws.amazon.com/zh_tw/lex/latest/dg/images/respcard-20.png)
+ 列出按鈕以確認建議之預約時間的回應卡。如需範例，請參閱下圖：  
![要求確認預約時間和日期的回應卡，有兩個選項：是和否。](http://docs.aws.amazon.com/zh_tw/lex/latest/dg/images/respcard-30.png)

  

可預約的日期和時間各不相同，因此您需要在執行時間產生回應卡。您可以使用 AWS Lambda 函數來動態產生這些回應卡。Lambda 函數會在回應 Amazon Lex 時傳回回應卡。Amazon Lex 會在回應用戶端時包含回應卡。

如果用戶端 (例如，Facebook Messenger) 支援回應卡，使用者可以從按鈕清單中選擇，或輸入回應。否則，使用者會直接輸入回應。

除了上例中顯示的按鈕之外，您也可以包含影像、附件和其他有用的資訊以顯示在回應卡上。如需有關回應卡的資訊，請參閱 [回應卡](howitworks-manage-prompts.md#msg-prompts-resp-card)。

在本練習中，您會進行以下動作：
+ 建立和測試機器人 (使用 ScheduleAppointment 藍圖)。就此練習，您使用機器人藍圖來快速設定和測試機器人。如需可用的藍圖清單，請參閱[Amazon Lex 和 AWS Lambda 藍圖](lex-lambda-blueprints.md)。此機器人已針對一個意圖 (`MakeAppointment`) 進行預先設定。

   
+ 建立和測試 Lambda 函數 （使用 Lambda 提供的 lex-make-appointment-python 藍圖）。您可以將`MakeAppointment`意圖設定為使用此 Lambda 函數做為程式碼掛勾，以執行初始化、驗證和履行任務。
**注意**  
提供的範例 Lambda 函數會根據牙醫預約的模擬可用性，展示動態對話。在實際的應用程式中，您可以使用實際的行事曆來設定預約時間。
+ 更新`MakeAppointment`意圖組態以使用 Lambda 函數做為程式碼掛勾。然後，測試端對端體驗。
+ 將排程預約機器人發佈到 Facebook Messenger，以便您可以查看作用中的回應卡 (Amazon Lex 主控台中的用戶端目前不支援回應卡）。

以下章節提供有關在本練習中所用之藍圖的摘要資訊。

**Topics**
+ [機器人藍圖概觀 (ScheduleAppointment)](#ex1-sch-appt-bp-summary-bot)
+ [Lambda 函數藍圖概觀 (lex-make-appointment-python)](#ex1-sch-appt-summary-lambda)
+ [步驟 1：建立 Amazon Lex 機器人](ex1-sch-appt-create-bot.md)
+ [步驟 2：建立 Lambda 函數](ex1-sch-appt-create-lambda-function.md)
+ [步驟 3：更新意圖：設定程式碼掛勾](ex1-sch-appt-create-integrate.md)
+ [步驟 4：將機器人部署在 Facebook Messenger 平台上](ex-sch-appt-fb-integration.md)
+ [資訊流程的詳細資訊](ex1-sch-appt-info-flow-details.md)

## 機器人藍圖概觀 (ScheduleAppointment)
<a name="ex1-sch-appt-bp-summary-bot"></a>

在本練習中，您用來建立機器人的 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)
<a name="ex1-sch-appt-summary-lambda"></a>

Lambda 函數藍圖 (lex-make-appointment-python) 是您使用 ScheduleAppointment 機器人藍圖建立之機器人的程式碼掛勾。

此 Lambda 函數藍圖程式碼可以同時執行初始化/驗證和履行任務。
+ Lambda 函數程式碼顯示以牙醫預約的範例可用性為基礎的動態對話 （在實際應用程式中，您可以使用行事曆）。對於使用者指定的一天或日期，程式碼設定如下：
  +  如果沒有可用的預約，Lambda 函數會傳回回應，指示 Amazon Lex 提示使用者改日或日期 （將`dialogAction`類型設定為 `ElicitSlot)`。如需詳細資訊，請參閱[回應格式](lambda-input-response-format.md#using-lambda-response-format)。
  + 如果指定的日期只有一個預約可用，Lambda 函數會建議回應中的可用時間，並指示 Amazon Lex 在回應`dialogAction`中設定 以取得使用者確認`ConfirmIntent`。這裡說明了您可以如何透過主動提出可預約時間，改善使用者體驗。
  + 如果有多個可用的預約，Lambda 函數會在回應 Amazon Lex 時傳回可用時間的清單。Amazon Lex 會傳回回應給用戶端，其中包含來自 Lambda 函數的訊息。
+ 做為履行程式碼掛勾，Lambda 函數會傳回摘要訊息，指出已排定預約 （也就是已履行意圖）。

**注意**  
在這個範例中，我們示範如何使用回應卡。Lambda 函數會建構回應卡並將其傳回給 Amazon Lex。回應卡會將可預約的日期和時間列為可供選擇的按鈕。使用 Amazon Lex 主控台提供的用戶端測試機器人時，看不到回應卡。若要查看，必須將機器人與簡訊平台整合，例如 Facebook Messenger。如需說明，請參閱[將 Amazon Lex 機器人與 Facebook Messenger 整合](fb-bot-association.md)。如需回應卡的詳細資訊，請參閱[管理訊息](howitworks-manage-prompts.md)。

當 Amazon Lex 叫用 Lambda 函數時，它會傳遞事件資料做為輸入。其中一個事件欄位是 `invocationSource`，Lambda 函數會使用此欄位在輸入驗證和履行活動之間進行選擇。如需詳細資訊，請參閱[輸入事件格式](lambda-input-response-format.md#using-lambda-input-event-format)。

**後續步驟**  
[步驟 1：建立 Amazon Lex 機器人](ex1-sch-appt-create-bot.md)