選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

練習 3:新增 Lambda 函數 (AWS CLI)

焦點模式
練習 3:新增 Lambda 函數 (AWS CLI) - Amazon Lex V1

支援終止通知:在 2025 年 9 月 15 日, AWS 將停止對 Amazon Lex V1 的支援。2025 年 9 月 15 日之後,您將無法再存取 Amazon Lex V1 主控台或 Amazon Lex V1 資源。如果您使用的是 Amazon Lex V2,請改參閱 Amazon Lex V2 指南

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

支援終止通知:在 2025 年 9 月 15 日, AWS 將停止對 Amazon Lex V1 的支援。2025 年 9 月 15 日之後,您將無法再存取 Amazon Lex V1 主控台或 Amazon Lex V1 資源。如果您使用的是 Amazon Lex V2,請改參閱 Amazon Lex V2 指南

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

新增 Lambda 函數來驗證使用者輸入,並滿足使用者對機器人的意圖。

新增 Lambda 表達式是一個五步驟程序。

  1. 使用 Lambda AddPermission 函數來啟用呼叫 Lambda 調用操作的OrderFlowers意圖。

  2. 使用 GetIntent操作從 Amazon Lex 取得意圖。

  3. 更新意圖以新增 Lambda 函數。

  4. 使用 PutIntent操作將更新的意圖傳回 Amazon Lex。

  5. 使用 GetBotPutBot 操作重建使用該意圖的任何機器人。

若要執行本練習中的命令,您必須知道要執行命令的區域。如需區域的列表,請參閱 模型建置配額

如果您在新增InvokeFunction許可之前將 Lambda 函數新增至意圖,您會收到下列錯誤訊息:

            An error occurred (BadRequestException) when calling the 
            PutIntent operation: Lex is unable to access the Lambda 
            function Lambda function ARN in the context of intent 
            intent ARN.  Please check the resource-based policy on 
            the function.
        

來自 GetIntent 操作的回應包含一個名為 checksum 的欄位,可識別意圖的特定修訂版本。使用 PutIntent 操作更新意圖時,您必須提供檢查總和值。若不提供,會得到以下錯誤訊息:

            An error occurred (PreconditionFailedException) when calling 
            the PutIntent operation: Intent intent name already exists. 
            If you are trying to update intent name you must specify the 
            checksum.
        

此練習使用來自 的 Lambda 函數練習 1:使用藍圖建立 Amazon Lex 機器人 (主控台)。如需建立 Lambda 函數的說明,請參閱 步驟 3:建立 Lambda 函數 (主控台)

注意

下列 AWS CLI 範例已針對 Unix、Linux 和 macOS 格式化。用於 Windows 時,請將 "\$LATEST" 變更為 $LATEST

將 Lambda 函數新增至意圖
  1. 在 中 AWS CLI,新增OrderFlowers意圖的InvokeFunction許可:

    aws lambda add-permission \ --region region \ --function-name OrderFlowersCodeHook \ --statement-id LexGettingStarted-OrderFlowersBot \ --action lambda:InvokeFunction \ --principal lex.amazonaws.com \ --source-arn "arn:aws:lex:region:account ID:intent:OrderFlowers:*" --source-account account ID

    Lambda 會傳送下列回應:

    {
        "Statement": "{\"Sid\":\"LexGettingStarted-OrderFlowersBot\",
          \"Resource\":\"arn:aws:lambda:region:account ID:function:OrderFlowersCodeHook\",
          \"Effect\":\"Allow\",
          \"Principal\":{\"Service\":\"lex.amazonaws.com\"},
          \"Action\":[\"lambda:InvokeFunction\"],
          \"Condition\":{\"StringEquals\":
            {\"AWS:SourceAccount\": \"account ID\"},
            {\"AWS:SourceArn\":
              \"arn:aws:lex:region:account ID:intent:OrderFlowers:*\"}}}"
    }
  2. 從 Amazon Lex 取得意圖。Amazon Lex 會將輸出傳送至名為 的檔案OrderFlowers-V3.json

    aws lex-models get-intent \ --region region \ --name OrderFlowers \ --intent-version "\$LATEST" > OrderFlowers-V3.json
  3. 在文字編輯器中,開啟 OrderFlowers-V3.json

    1. 尋找並刪除 createdDatelastUpdatedDateversion 欄位。

    2. 更新 fulfillmentActivity 欄位:

      "fulfillmentActivity": { "type": "CodeHook", "codeHook": { "uri": "arn:aws:lambda:region:account ID:function:OrderFlowersCodeHook", "messageVersion": "1.0" } }
    3. 儲存檔案。

  4. 在 中 AWS CLI,將更新的意圖傳送至 Amazon Lex:

    aws lex-models put-intent \ --region region \ --name OrderFlowers \ --cli-input-json file://OrderFlowers-V3.json

更新好意圖之後,重建機器人。

重建 OrderFlowersBot 機器人
  1. 在 中 AWS CLI,取得OrderFlowersBot機器人的定義,並將其儲存至 檔案:

    aws lex-models get-bot \ --region region \ --name OrderFlowersBot \ --version-or-alias "\$LATEST" > OrderFlowersBot-V3.json
  2. 在文字編輯器中開啟 OrderFlowersBot-V3.json。移除 createdDatelastUpdatedDatestatusversion 欄位。

  3. 在文字編輯器中,將下列行新增至機器人的定義:

    "processBehavior": "BUILD",
  4. 在 中 AWS CLI,建置機器人的新修訂版本:

    aws lex-models put-bot \ --region region \ --name OrderFlowersBot \ --cli-input-json file://OrderFlowersBot-V3.json

    伺服器的回應為:

    {
        "status": "READY", 
        "intents": [
            {
                "intentVersion": "$LATEST", 
                "intentName": "OrderFlowers"
            }
        ], 
        "name": "OrderFlowersBot", 
        "locale": "en-US", 
        "checksum": "checksum", 
        "abortStatement": {
            "messages": [
                {
                    "content": "Sorry, I'm not able to assist at this time", 
                    "contentType": "PlainText"
                }
            ]
        }, 
        "version": "$LATEST", 
        "lastUpdatedDate": timestamp, 
        "createdDate": timestamp, 
        "clarificationPrompt": {
            "maxAttempts": 2, 
            "messages": [
                {
                    "content": "I didn't understand you, what would you like to do?", 
                    "contentType": "PlainText"
                }
            ]
        }, 
        "voiceId": "Salli", 
        "childDirected": false, 
        "idleSessionTTLInSeconds": 600, 
        "description": "Bot to order flowers on the behalf of a user"
    }
    

後續步驟

練習 4:發佈版本 (AWS CLI)

在本頁面

隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。