

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

# 為您的 Amazon Lex V2 機器人建立 AWS Lambda函數
<a name="lambda-attach"></a>

若要為 Amazon Lex V2 機器人建立 Lambda 函數，AWS Lambda請從 AWS 管理主控台存取 並建立新的函數。如需詳細資訊，請參閱 [AWS Lambda開發人員指南](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)AWS Lambda。

1. 登入 AWS 管理主控台，並在 https：//[https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/) 開啟AWS Lambda主控台。

1. 選擇左側邊欄中**的函數**。

1. 選取 **Create function** (建立函式)。

1. 您可以選取**從頭開始撰寫**以最小程式碼、**使用藍圖**從清單中選取常見使用案例的範例程式碼，或**選取容器映像**來選取要為函數部署的容器映像。如果您**從頭選取作者**，請繼續執行下列步驟：

   1. 為您的函數提供有意義的**函數名稱**，以描述其功能。

   1. 從**執行時間**下的下拉式選單中選擇語言，以寫入函數。

   1. 為您的函數選取指令集**架構**。

   1. 根據預設，Lambda 會建立具有基本許可的角色。若要使用現有角色或使用 AWS 政策範本建立角色，請展開**變更預設執行角色**功能表，然後選取 選項。

   1. 展開**進階設定**選單以設定更多選項。

1. 選取 **Create function** (建立函式)。

下圖顯示從頭開始建立新函數時看到的內容：

![\[新的 Lambda 函數。\]](http://docs.aws.amazon.com/zh_tw/lexv2/latest/dg/images/lambda/lambda-new-function.png)


Lambda 處理常式函數會根據您使用的語言而有所不同。它至少需要 `event` JSON 物件做為引數。您可以在 Amazon Lex V2 `event` 提供的 中查看欄位[AWS LambdaLex V2 的輸入事件格式](lambda-input-format.md)。修改處理常式函數，以最終傳回符合 中所述格式的 `response` JSON 物件[AWS LambdaLex V2 的回應格式](lambda-response-format.md)。
+ 完成撰寫函數後，請選取**部署**以允許使用函數。

請記住，您可以將每個機器人別名與最多一個 Lambda 函數建立關聯。不過，您可以在 Lambda 程式碼中為機器人定義任意數量的函數，並在 Lambda 處理常式函數中呼叫這些函數。例如，雖然相同機器人別名中的所有意圖都必須呼叫相同的 Lambda 函數，但您可以建立路由器函數，為每個意圖啟用個別的函數。以下是您可以針對應用程式使用或修改的範例路由器函數：

```
import os
import json
import boto3

# reuse client connection as global
client = boto3.client('lambda')

def router(event):
    intent_name = event['sessionState']['intent']['name']
    fn_name = os.environ.get(intent_name)
    print(f"Intent: {intent_name} -> Lambda: {fn_name}")
    if (fn_name):
        # invoke lambda and return result
        invoke_response = client.invoke(FunctionName=fn_name, Payload = json.dumps(event))
        print(invoke_response)
        payload = json.load(invoke_response['Payload'])
        return payload
    raise Exception('No environment variable for intent: ' + intent_name)

def lambda_handler(event, context):
    print(event)
    response = router(event)
    return response
```

**在 Amazon Lex V2 機器人對話中使用 AWS Lambda函數的時機**

您可以在與使用者對話的下列時間點使用 Lambda 函數：
+ 在辨識意圖後的初始回應中。例如，在使用者說他們想要訂購比薩之後。
+ 從使用者引出槽值之後。例如，在使用者告知機器人要訂購的比薩大小之後。
+ 在每次嘗試引出槽之間。例如，如果客戶不使用可辨識的比薩大小。
+ 確認意圖時。例如，確認比薩訂單時。
+ 實現意圖。例如，訂購比薩。
+ 在滿足意圖之後，以及機器人關閉對話之前。例如，切換到訂購飲料的意圖。

**Topics**
+ [使用主控台將 AWS Lambda函數連接至 Amazon Lex V2 機器人](lambda-attach-console.md)
+ [使用 API 操作將 AWS Lambda函數連接至 Amazon Lex V2 機器人](lambda-attach-api.md)

# 使用主控台將 AWS Lambda函數連接至 Amazon Lex V2 機器人
<a name="lambda-attach-console"></a>

您必須先將 Lambda 函數連接至 Amazon Lex V2 機器人別名，才能叫用它。每個機器人別名只能連接一個 Lambda 函數。執行這些步驟，以使用 AWS 主控台連接 Lambda 函數。

1. 登入 AWS 管理主控台，並在 https：//[https://console.aws.amazon.com/lex/](https://console.aws.amazon.com/lex/) 開啟 Amazon Lex 主控台。

1. 從左側面板中選擇**機器人**，然後從機器人清單中選擇您要連接 Lambda 函數的機器人名稱。

1. 在左側面板中，選取**部署**功能表下的**別名**。

1. 從別名清單中，選擇您要連接 Lambda 函數的別名名稱。

1. 在**語言**面板中，選取您要 Lambda 函數使用的語言。如果面板中沒有語言，請選取**管理別名中的**語言來新增語言。

1. 在**來源**下拉式功能表中，選擇您要連接的 Lambda 函數名稱。

1. 在 **Lambda 函數版本或別名**下拉式功能表中，選擇您要使用的 Lambda 函數版本或別名。然後選取 **Save (儲存)**。相同的 Lambda 函數用於機器人支援的語言中的所有意圖。

**設定 Amazon Lex V2 意圖，以使用主控台叫用 Lambda 函數**

1. 選取機器人後，在左側選單中，選取您要叫用 Lambda 函數之機器人語言下的**意圖**。

1. 選擇您要叫用 Lambda 函數的意圖，以開啟意圖編輯器。

1. 有兩種設定 Lambda 程式碼掛勾的選項：

   1. 若要在對話的每個步驟之後叫用 Lambda 函數，請捲動至意圖編輯器底部的**程式碼掛**勾區段，然後選取**使用 Lambda 函數進行初始化和驗證**核取方塊，如下圖所示：  
![\[Amazon Lex V2 意圖編輯器的程式碼掛勾區段。\]](http://docs.aws.amazon.com/zh_tw/lexv2/latest/dg/images/lambda/lambda-code-hooks-all.png)

   1. 或者，在叫用 Lambda 函數的對話階段中使用**對話方塊程式碼掛**勾區段。**對話方塊程式碼掛接**區段顯示如下：  
![\[Amazon Lex V2 意圖編輯器的程式碼掛勾區段。\]](http://docs.aws.amazon.com/zh_tw/lexv2/latest/dg/images/lambda/lambda-code-hook-step.png)

      有兩種方式可以控制 Amazon Lex V2 如何呼叫程式碼掛鉤來回應：
      + 切換**作用中**按鈕以將其標記為*作用中*或非*作用中*。當程式碼掛鉤處於*作用中*狀態時，Amazon Lex V2 會呼叫程式碼掛鉤。當程式碼掛鉤處於*非作用中*狀態時，Amazon Lex V2 不會執行程式碼掛鉤。
      + 展開 **Lambda 對話方塊程式碼掛勾**區段，然後選取**叫用 Lambda 函數**核取方塊，將其標記為*啟用或停用***。您只能在程式碼掛鉤標示為作用中時啟用或停用該程式碼掛鉤。標示為*啟用*時，程式碼掛鉤會正常執行。*停用*時，不會呼叫程式碼掛鉤，Amazon Lex V2 就像成功傳回程式碼掛鉤一樣。若要在對話方塊程式碼掛鉤成功、失敗或逾時後設定回應，請選取**進階選項**

      您可以在下列對話階段叫用 Lambda 程式碼掛勾：
      + 若要呼叫函數做為**初始回應**，請捲動至**初始回應**區段，展開**回應旁的箭頭以確認使用者的請求**，然後選取**進階選項**。尋找快顯功能表底部的**對話方塊程式碼掛**勾區段。
      + 若要在**槽引出**後叫用函數，請捲動至**槽**區段，展開相關**槽提示**旁的箭頭，然後選取**進階選項**。尋找快顯功能表底部附近的**對話方塊程式碼掛**接區段，就在**預設值**上方。

        您也可以在每次引出後叫用 函數。若要這樣做，請在**槽提示**區段中展開**機器人引出資訊**，選取**更多提示選項**，然後選取**每次引出後叫用 Lambda 程式碼掛**勾旁的核取方塊。
      + 若要叫用 函數進行**意圖確認**，請捲動至**確認**區段，展開**提示旁的箭頭以確認意圖**，然後選取**進階選項**。尋找快顯功能表底部的**對話方塊程式碼掛**勾區段。
      + 若要叫用 函數以進行**意圖履行**，請捲動至**履行**區段。切換**作用中**按鈕，將程式碼掛鉤設定為*作用中*。展開**成功履行**旁的箭頭，然後選取**進階選項**。選取 **Fulfillment** **Lambda 程式碼掛勾區段下的使用 Lambda 函數履行**旁的核取方塊，將程式碼掛勾設定為*啟用*。

1. 設定叫用 Lambda 函數的對話階段後，請再次**建置**機器人以測試函數。

# 使用 API 操作將 AWS Lambda函數連接至 Amazon Lex V2 機器人
<a name="lambda-attach-api"></a>

您必須先將 Lambda 函數連接至 Amazon Lex V2 機器人別名，才能叫用它。您只能將一個 Lambda 函數與每個機器人別名建立關聯。執行這些步驟，以使用 API 操作連接 Lambda 函數。

如果您要建立新的機器人別名，請使用 [CreateBotAlias](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateBotAlias.html) 操作來連接 Lambda 函數。若要將 Lambda 函數連接至現有的機器人別名，請使用 [UpdateBotAlias](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateBotAlias.html) 操作。修改 `botAliasLocaleSettings` 欄位以包含正確的設定：

```
{
    "botAliasLocaleSettings" : {
        locale: {
            "codeHookSpecification": {
                "lambdaCodeHook": {
                    "codeHookInterfaceVersion": "1.0",
                    "lambdaARN": "arn:aws:lambda:region:account-id:function:function-name"
                }
            },
            "enabled": true
        },
        ...
    }
}
```

1. `botAliasLocaleSettings` 欄位會映射到物件，其金鑰是您要連接 Lambda 函數的地區設定。[支援的語言和地區設定](how-languages.md#supported-languages) 如需支援的地區設定清單和有效金鑰的代碼，請參閱 。

1. 若要尋找 Lambda 函數`lambdaARN`的 ，請在 https：//[https://console.aws.amazon.com/lambda/home](https://console.aws.amazon.com/lambda/home) 開啟AWS Lambda主控台，選取**左側邊欄中的函數**，然後選取要與機器人別名建立關聯的函數。在**函數概觀**的右側，找到**函數 ARN** `lambdaARN`下的 。它應該包含區域、帳戶 ID 和函數的名稱。

1. 若要允許 Amazon Lex V2 叫用別名的 Lambda 函數，請將 `enabled` 欄位設定為 `true`。

**設定 Amazon Lex V2 意圖以使用 API 操作叫用 Lambda 函數**

若要在意圖期間設定 Lambda 函數叫用，如果您要建立新的意圖，請使用 [CreateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateIntent.html) 操作；如果您在現有意圖中叫用函數，請使用 [UpdateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateIntent.html) 操作。在意圖操作中控制 Lambda 函數調用的欄位為 `dialogCodeHook`、`intentConfirmationSetting`、 `initialResponseSetting`和 `fulfillmentCodeHook`。

如果您在引發槽時叫用 函數，如果您要建立新的槽，請使用 [CreateSlot](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateSlot.html) 操作，或 [UpdateSlot](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateSlot.html) 操作來叫用現有槽中的函數。在槽操作中控制 Lambda 函數調用的欄位是 `valueElicitationSetting` 物件`slotCaptureSetting`的 。

1. 若要將 Lambda 對話方塊程式碼掛鉤設定為在每次對話後執行，請將 `enabled` 欄位中下列 [DialogCodeHookSettings](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_DialogCodeHookSettings.html) 物件的 `dialogCodeHook` 欄位設定為 `true`：

   ```
   "dialogCodeHook": {
       "enabled": boolean
   }
   ```

1. 或者，您可以將 Lambda 對話方塊程式碼掛鉤設定為僅在對話中的特定時間點執行，方法是修改結構中的 `codeHook`和/或 `elicitationCodeHook` 欄位，對應至您要叫用函數的對話階段。若要使用 Lambda 對話方塊程式碼勾點來執行意圖履行，請使用 [CreateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateIntent.html) 或 [UpdateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateIntent.html) 操作中的 `fulfillmentCodeHook` 欄位。這三種類型的程式碼掛鉤的結構和用途如下所示：

## codeHook
<a name="lambda-code-hook"></a>

`codeHook` 欄位定義程式碼掛鉤在對話中指定階段執行的設定。這是具有下列結構的 [DialogCodeHookInvocationSetting](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_DialogCodeHookInvocationSetting.html) 物件：

```
"codeHook": {
    "active": boolean,
    "enableCodeHookInvocation": boolean,
    "invocationLabel": string,
    "postCodeHookSpecification": [PostDialogCodeHookInvocationSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_PostDialogCodeHookInvocationSpecification.html),
}
```
+ 將 `active` Amazon Lex V2 `true` 的欄位變更為 ，以在對話中的該時間點呼叫程式碼掛勾。
+ 將 `enableCodeHookInvocation` Amazon Lex V2 `true` 的欄位變更為 ，以允許程式碼掛鉤正常執行。如果您標記 `false`，Amazon Lex V2 就像程式碼掛鉤成功傳回一樣。
+ `invocationLabel` 指出從中叫用程式碼掛鉤的對話方塊步驟。
+ 使用 `postCodeHookSpecification` 欄位來指定程式碼掛鉤成功、失敗或逾時之後發生的動作和訊息。

## elicitationCodeHook
<a name="lambda-elicitation-code-hook"></a>

`elicitationCodeHook` 欄位定義程式碼掛鉤在需要重新引出插槽時要執行的設定。如果槽引出失敗或意圖確認遭拒，可能會發生這種情況。`elicitationCodeHook` 欄位是具有下列結構的 [ElicitationCodeHookInvocationSetting](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ElicitationCodeHookInvocationSetting.html) 物件：

```
"elicitationCodeHook": {
    "enableCodeHookInvocation": boolean,
    "invocationLabel": string
}
```
+ 將 `enableCodeHookInvocation` Amazon Lex V2 `true` 的欄位變更為 ，以允許程式碼掛鉤正常執行。如果您標記 `false`，Amazon Lex V2 就像程式碼掛鉤成功傳回一樣。
+ `invocationLabel` 指出從中叫用程式碼掛鉤的對話方塊步驟。

## fulfillmentCodeHook
<a name="lambda-fulfillment-code-hook"></a>

`fulfillmentCodeHook` 欄位定義要執行的程式碼掛鉤設定，以滿足意圖。它映射到下列 [FulfillmentCodeHookSettings](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_FulfillmentCodeHookSettings.html) 物件：

```
"fulfillmentCodeHook": {
    "active": boolean,
    "enabled": boolean,
    "fulfillmentUpdatesSpecification": [FulfillmentUpdatesSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_FulfillmentUpdatesSpecification.html),
    "postFulfillmentStatusSpecification": [PostFulfillmentStatusSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_PostFulfillmentStatusSpecification.html)
}
```
+ 將 `active` Amazon Lex V2 `true` 的欄位變更為 ，以在對話中的該時間點呼叫程式碼掛勾。
+ 將 `enabled` Amazon Lex V2 `true` 的欄位變更為 ，以允許程式碼掛鉤正常執行。如果您標記 `false`，Amazon Lex V2 就像程式碼掛鉤成功傳回一樣。
+ 使用 `fulfillmentUpdatesSpecification` 欄位來指定在滿足意圖期間顯示來更新使用者的訊息，以及與其相關聯的時間。
+ 使用 `postFulfillmentStatusSpecification` 欄位指定程式碼掛鉤成功、失敗或逾時後發生的訊息和動作。

您可以將 `active`和`enableCodeHookInvocation`/`enabled` 欄位設定為 ，在對話中的下列時間點叫用 Lambda 程式碼掛勾`true`：

## 在初始回應期間
<a name="lambda-hook-initial-response"></a>

若要在辨識意圖後於初始回應中叫用 Lambda 函數，請在 [CreateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateIntent.html) 或 [UpdateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateIntent.html) 操作的 `initialResponse` 欄位中使用 `codeHook`結構。`initialResponse` 欄位對應至下列 [InitialResponseSetting](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_InitialResponseSetting.html) 物件：

```
"initialResponse": {
    "codeHook": {
        "active": boolean,
        "enableCodeHookInvocation": boolean,
        "invocationLabel": string,
        "postCodeHookSpecification": [PostDialogCodeHookInvocationSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_PostDialogCodeHookInvocationSpecification.html),
    },
    "initialResponse": [FulfillmentUpdatesSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_FulfillmentUpdatesSpecification.html),
    "nextStep": [PostFulfillmentStatusSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_PostFulfillmentStatusSpecification.html),
    "conditional": [ConditionalSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ConditionalSpecification.html)
}
```

## 槽引出後或在槽重新引出期間
<a name="lambda-hook-elicit-slot"></a>

若要在引出槽值後叫用 Lambda 函數，請使用 [CreateSlot](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateSlot.html) 或 [UpdateSlot](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateSlot.html) 操作的 `valueElicitation` 欄位中的 `slotCaptureSetting` 欄位。`slotCaptureSetting` 欄位對應至下列 [SlotCaptureSetting](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_SlotCaptureSetting.html) 物件：

```
"slotCaptureSetting": {
    "captureConditional": [ConditionalSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ConditionalSpecification.html),
    "captureNextStep": [DialogState object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_DialogState.html),
    "captureResponse": [ResponseSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ResponseSpecification.html),
    "codeHook": {
        "active": true,
        "enableCodeHookInvocation": true,
        "invocationLabel": string,
        "postCodeHookSpecification": [PostDialogCodeHookInvocationSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_PostDialogCodeHookInvocationSpecification.html),
    },
    "elicitationCodeHook": {
        "enableCodeHookInvocation": boolean,
        "invocationLabel": string
    },
    "failureConditional": [ConditionalSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ConditionalSpecification.html),
    "failureNextStep": [DialogState object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_DialogState.html),
    "failureResponse": [ResponseSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ResponseSpecification.html)
}
```
+ 若要在槽引出成功後叫用 Lambda 函數，請使用 `codeHook` 欄位。
+ 若要在槽引出失敗且 Amazon Lex V2 嘗試重試槽引出後叫用 Lambda 函數，請使用 `elicitationCodeHook` 欄位。

## 意圖確認或拒絕之後
<a name="lambda-hook-confirm-intent"></a>

若要在確認意圖時叫用 Lambda 函數，請使用 [CreateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateIntent.html) 或 [UpdateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateIntent.html) 操作`intentConfirmationSetting`的 欄位。`intentConfirmation` 欄位對應至下列 [IntentConfirmationSetting](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_IntentConfirmationSetting.html) 物件：

```
"intentConfirmationSetting": {
    "active": boolean,
    "codeHook": {
        "active": boolean,
        "enableCodeHookInvocation": boolean,
        "invocationLabel": string,
        "postCodeHookSpecification": [PostDialogCodeHookInvocationSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_PostDialogCodeHookInvocationSpecification.html),
    },
    "confirmationConditional": [ConditionalSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ConditionalSpecification.html),
    "confirmationNextStep": [DialogState object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_DialogState.html),
    "confirmationResponse": [ResponseSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_DialResponseSpecificationogState.html),
    "declinationConditional": [ConditionalSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ConditionalSpecification.html),
    "declinationNextStep": [FulfillmentUpdatesSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_FulfillmentUpdatesSpecification.html),
    "declinationResponse": [PostFulfillmentStatusSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_PostFulfillmentStatusSpecification.html),
    "elicitationCodeHook": {
        "enableCodeHookInvocation": boolean,
        "invocationLabel": string,
    },
    "failureConditional": [ConditionalSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ConditionalSpecification.html),
    "failureNextStep": [DialogState object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_DialogState.html),
    "failureResponse": [ResponseSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ResponseSpecification.html),
    "promptSpecification": [PromptSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_PromptSpecification.html)
}
```
+ 若要在使用者確認意圖及其插槽後叫用 Lambda 函數，請使用 `codeHook` 欄位。
+ 若要在使用者拒絕意圖確認且 Amazon Lex V2 嘗試重試槽引出後叫用 Lambda 函數，請使用 `elicitationCodeHook` 欄位。

## 在意圖履行期間
<a name="lambda-hook-fulfill-intent"></a>

若要叫用 Lambda 函數以滿足意圖，請使用 [CreateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateIntent.html) 或 [UpdateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateIntent.html) 操作中的 `fulfillmentCodeHook` 欄位。`fulfillmentCodeHook` 欄位對應至下列 [FulfillmentCodeHookSettings](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_FulfillmentCodeHookSettings.html) 物件：

```
{
    "active": boolean,
    "enabled": boolean,
    "fulfillmentUpdatesSpecification": [FulfillmentUpdatesSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_FulfillmentUpdatesSpecification.html),
    "postFulfillmentStatusSpecification": [PostFulfillmentStatusSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_PostFulfillmentStatusSpecification.html)
}
```

3. 設定叫用 Lambda 函數的對話階段後，請使用 `BuildBotLocale`操作來重建機器人，以測試函數。