本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
创建一个 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/
。 -
在左侧边栏中选择函数。
-
选择创建函数。
-
您可以选择从头开始创作以最少的代码开始,选择使用蓝图以从列表中选择常见用例的示例代码,或者选择容器镜像为您的函数选择要部署的容器镜像。如果您选择从头开始创作,请继续执行以下步骤:
-
给您的函数起一个有意义的函数名称来描述它的作用。
-
从运行时下拉菜单中选择一种语言来编写函数。
-
为您的函数选择一个指令集架构。
-
默认情况下,Lambda 创建具有基本权限的新角色。要使用现有角色或使用创建角色 AWS 策略模板,展开更改默认执行角色菜单并选择一个选项。
-
展开高级设置菜单以配置更多选项。
-
-
选择创建函数。
从头开始创建新函数时所看到的内容如下图所示。
Lambda 处理程序函数因您使用的语言而异。它最低限度地将event
JSON对象作为参数。您可以进入 AWS Lambda Lex V2 的输入事件格式 查看 Amazon 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 函数:
-
在识别意图后的初始响应中,例如,在用户说要订购披萨之后。
-
从用户引发槽位值后,例如,在用户告诉机器人他们要订购的披萨大小之后。
-
在每次重试之间引发一个槽位时,例如,客户没有使用公认的披萨尺寸时。
-
确认意图时,例如,在确认披萨订单时。
-
要履行意图时,例如,要订购披萨时。
-
在履行意图之后以及机器人结束对话之前。例如,切换到点饮料的意图时。