创建一个 AWS Lambda 适用于你的机器人的功能 - Amazon Lex

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

创建一个 AWS Lambda 适用于你的机器人的功能

要为您的 Amazon Lex V2 机器人创建 Lambda 函数,请访问 AWS Lambda 来自你的 AWS Management Console 并创建一个新函数。你可以参考 AWS Lambda 开发者指南,了解有关以下内容的更多详细信息 AWS Lambda.

  1. 登录 AWS Management Console 然后打开 AWS Lambda 控制台位于https://console.aws.amazon.com/lambda/

  2. 在左侧边栏中选择函数

  3. 选择创建函数

  4. 您可以选择从头开始创作以最少的代码开始,选择使用蓝图以从列表中选择常见用例的示例代码,或者选择容器镜像为您的函数选择要部署的容器镜像。如果您选择从头开始创作,请继续执行以下步骤:

    1. 给您的函数起一个有意义的函数名称来描述它的作用。

    2. 运行时下拉菜单中选择一种语言来编写函数。

    3. 为您的函数选择一个指令集架构

    4. 默认情况下,Lambda 创建具有基本权限的新角色。要使用现有角色或使用创建角色 AWS 策略模板,展开更改默认执行角色菜单并选择一个选项。

    5. 展开高级设置菜单以配置更多选项。

  5. 选择创建函数

从头开始创建新函数时所看到的内容如下图所示。

新的 Lambda 函数。

Lambda 处理程序函数因您使用的语言而异。它最低限度地将eventJSON对象作为参数。您可以进入 AWS Lambda Lex V2 的输入事件格式 查看 Amazon Lex V2 提供的 event 中包含的字段。修改处理函数以最终返回与中描述的格式相匹配的responseJSON对象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 函数:

  • 在识别意图后的初始响应中,例如,在用户说要订购披萨之后。

  • 从用户引发槽位值后,例如,在用户告诉机器人他们要订购的披萨大小之后。

  • 在每次重试之间引发一个槽位时,例如,客户没有使用公认的披萨尺寸时。

  • 确认意图时,例如,在确认披萨订单时。

  • 要履行意图时,例如,要订购披萨时。

  • 在履行意图之后以及机器人结束对话之前。例如,切换到点饮料的意图时。