View a markdown version of this page

调用 Lambda 函数 - Amazon Connect Customer

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

调用 Lambda 函数

第 1 步:创建 Lambda 函数

在活动执行期间,出站活动将使用一批配置文件调用您的 Lambda 函数,并期望得到包含每个配置文件结果的响应。

请求有效载荷

当您的 Lambda 函数被调用时,它将收到具有以下结构的 JSON 负载:

有效载荷结构

{ "InvocationMetadata": { "CampaignContext": { "CampaignId": "string", "RunId": "string", "ActionId": "string", "CampaignName": "string" } }, "Items": { "CustomerProfiles": [ { "ProfileId": "string", "CustomerData": "string", "IdempotencyToken": "string" } ] } }

字段描述

InvocationMetadata
  • CampaignContext: 包含有关活动执行的元数据

  • CampaignId: 活动的唯一标识符

  • RunId: 此次特定活动的唯一标识符

  • ActionId: 出站广告活动执行的流程操作的标识符

  • CampaignName: 竞选 Human-readable 名称

物品
  • CustomerProfiles:需要处理的客户资料阵列(分批处理以提高效率)

  • ProfileId:客户资料的唯一标识符

  • CustomerData: 客户资料的 JSON 字符串

  • IdempotencyToken: 此特定调用的唯一标记,可确保等导处理

请求负载示例

{ "InvocationMetadata": { "CampaignContext": { "CampaignId": "campaign-12345", "RunId": "run-67890", "ActionId": "activity-abc123", "CampaignName": "Welcome Campaign" } }, "Items": { "CustomerProfiles": [ { "ProfileId": "customer-001", "CustomerData": "{\"firstName\":\"John\",\"lastName\":\"Doe\",\"email\":\"john.doe@example.com\"}", "IdempotencyToken": "token-xyz789" }, { "ProfileId": "customer-002", "CustomerData": "{\"firstName\":\"Jane\",\"lastName\":\"Smith\",\"email\":\"jane.smith@example.com\"}", "IdempotencyToken": "token-abc456" } ] } }

预期响应负载

您的 Lambda 函数必须返回具有以下结构的 JSON 响应:

响应结构

{ "Items": { "CustomerProfiles": [ { "Id": "string", "ResultData": {} } ] } }

字段描述

物品
  • CustomerProfiles:与请求中每个客户资料对应的结果数组

  • ID:必须与请求ProfileId中的内容相匹配

  • ResultData:包含您的处理结果的自定义 JSON 对象(可选)

响应负载示例

{ "Items": { "CustomerProfiles": [ { "Id": "customer-001", "ResultData": { "recommendedProduct": "Premium Plan", "score": 85, "nextAction": "send_email" } }, { "Id": "customer-002", "ResultData": { "error": "Invalid customer data", "errorCode": "VALIDATION_ERROR" } } ] } }

重要约束

有效载荷大小限制

  • 最大响应负载大小:每个客户配置文件 32 KB

  • 如果您ResultData超过此限制,则调用将被标记为无效

回复要求

  • 您必须为请求中ProfileId包含的所有内容提供答复

  • 缺少的回复将被视为错误

  • 响应中的Id字段必须与请求中的ProfileId字段完全匹配

错误处理

  • 如果您的 Lambda 函数引发异常,则批次中的所有配置文件都将被标记为失败

  • 在其中包含错误详细信息以ResultData供调试

调用类型

  • 调用类型:REQUEST_RESPONSE(同步)

  • 您的函数应在 30 秒内返回结果,而不是异步处理。响应时间超过 30 秒将导致操作失败

第 2 步:授予出站活动访问您的 Lambda 函数的权限

  1. 在以下位置打开 Amazon Connect 控制台https://console.aws.amazon.com/connect/。

  2. 在实例页面上的实例别名列中选择您的实例名称。此实例名称显示在您用于访问 Amazon Connect 的 URL 中。

  3. 在导航窗格的 “渠道和通信” 下,选择 “出站广告系列” 。

  4. 在 “设置自定义操作” 部分下,使用 Lambda 函数下拉框选择要添加到出站活动实例的函数。

  5. 选择添加 Lambda 函数。确认在 Lambda 函数下添加了函数的 ARN。

重要

前面的控制台过程自动将所需的基于资源的策略添加到 Lambda 函数。如果您使用 AWS CLI 或 SDK,则可以使用lambda集成配置调用 PutConnectInstanceIntegration API。与控制台一样,此 API 会自动向您的 Lambda 函数添加所需的基于资源的策略。

如果您需要手动添加基于资源的策略(例如,用于跨账户调用),请添加一个策略声明,向connect-campaigns.amazonaws.com服务主体授予调用您的函数的权限。您可以选择添加带有AWS:SourceAccount和的Condition元素,AWS:SourceArn以限制对您的账户和 Connect Customer 实例的访问权限。我们建议将这两个条件都包括在内。以下示例显示了所需的策略声明。

{ "Statement": [ { "Effect": "Allow", "Principal": { "Service": "connect-campaigns.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:region:account-id:function:function-name", "Condition": { "StringEquals": { "AWS:SourceAccount": "account-id" }, "ArnLike": { "AWS:SourceArn": "arn:aws:connect:region:account-id:instance/instance-id" } } } ] }

有关基于资源的策略的更多信息,请参阅 Lambda 开发人员指南中的为 Lambda 使用基于资源的策略。

第 3 步:从活动中调用 Lambda

  1. 打开或创建旅程流程。

  2. 向网格中添加自定义操作块(在 “集成” 组中)。将分支与数据块连接起来。

  3. 选择自定义操作块的标题以打开其属性页面。

  4. 在函数 ARN 下,从已添加到出站广告系列实例的函数列表中进行选择。

第 4 步:使用 Lambda 函数响应

直接访问变量

要直接在流程块中访问这些变量,请在自定义操作块之后添加该块,然后引用这些属性,如以下示例所示:

RecommendedProduct - $.LambdaInvocation.ResultData.recommendedProduct Score - $.LambdaInvocation.ResultData.score

确保为源属性指定的名称与 Lambda ResultData 返回的密钥名称相匹配。