本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
創建一個 AWS Lambda 您的機器人的功能
若要為您的 Amazon Lex V2 機器人建立 Lambda 函數,請存取 AWS Lambda 從您的 AWS Management Console 並創建一個新的功能。您可以參考 AWS Lambda 開發人員指南,了解更多詳情 AWS Lambda.
-
登入 AWS Management Console 並打開 AWS Lambda 控制台位於https://console.aws.amazon.com/lambda/
。 -
選擇左側邊欄中的「功能」。
-
選取 Create function (建立函式)。
-
您可以選取從頭開始撰寫最少程式碼、使用藍圖從清單中選取常見使用案例的範例程式碼,或選取容器映像來選取要為您的函數部署的容器映像。如果您從頭開始選取「作者」,請繼續執行下列步驟:
-
給你的函數一個有意義的函數名稱來描述它的作用。
-
從「執行階段」下的下拉式功能表中選擇一種語言,以將函數寫入。
-
為您的函數選取指令集架構。
-
根據預設,Lambda 會建立具有基本權限的角色。若要使用現有角色或建立角色 AWS 原則範本,展開 [變更預設執行角色] 功能表,然後選取選項。
-
展開 [進階設定] 功能表以設定更多選項。
-
-
選取 Create function (建立函式)。
下圖顯示了從頭開始創建新函數時所看到的內容:
Lambda 處理常式函數會因您使用的語言而有所不同。它最低限度地將一個event
JSON對象作為參數。您可以看到在 Amazon Lex V2 提供的欄位AWS Lambda Lex V2 的輸入事件格式。event
修改處理常式函數,最終傳回符合中所述格式的response
JSON物件AWS Lambda Lex V2 的響應格式。
-
完成寫入函數後,請選取 [部署] 以允許使用函數。
請記住,您最多可以將每個機器人別名與一個 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
何時使用 AWS Lambda 機器人對話中的功能
您可以在與使用者交談的下列時間點使用 Lambda 函數:
-
在意圖被識別後的初始響應。例如,在用戶說他們要訂購比薩餅之後。
-
從用戶引出插槽值之後。例如,在用戶告訴機器人他們想要訂購的比薩餅大小之後。
-
在每次重試之間引出一個插槽。例如,如果客戶不使用公認的比薩餅尺寸。
-
確認意圖時。例如,在確認披薩訂單時。
-
為了實現一個意圖。例如,要放置一個比薩餅的訂單。
-
在實現意圖之後,並在您的機器人關閉對話之前。例如,切換到訂購飲料的意圖。