gpt4 book ai didi

amazon-web-services - 无法在 Amazon Connect 联系流中调用 AWS Lambda 函数

转载 作者:行者123 更新时间:2023-12-02 01:04:35 24 4
gpt4 key购买 nike

我正在尝试在 Amazon Connect Contact 流中集成 AWS Lambda 函数。 AWS Lambda 函数工作正常并给出响应。在 Connect 联系流中调用该函数时,它返回错误语句,但我无法找出错误是什么以及错误日志存储在哪里。
enter image description here

我正在尝试将用户的电话号码获取到 Amazon Connect,然后我想检查该电话号码是否已存在于 DynamoDB 中。为此,我正在编写 lambda 函数并尝试从 Amazon Connect 调用它

const AWS=require('aws-sdk');
const doClient=new AWS.DynamoDB.DocumentClient({region: 'us-east-1'});

exports.handler = function(event, context, callback) {
var params={
TableName:'testdata',
Key: {
Address: event.Details.ContactData.CustomerEndpoint.Address
}
};
doClient.get(params,function(err,data){
if(err)
{
callback(err,null);
}
else
{
callback(null,data);
}
});

}

最佳答案

首先,您需要确保已正确授予权限。从 AWS CLI,发出以下命令并进行以下编辑。

  • 将函数“Lambda_Function_Name”替换为您的 Lambda 函数的实际名称。
  • 将源帐户“111122223333”替换为您的 AWS 帐号
  • 将 source-arn 字符串替换为您的 Amazon Connect 实例的 arn 字符串。
    aws lambda add-permission --function-name function:Lambda_Function_Name --statement-id 1 --principal connect.amazonaws.com --action lambda:InvokeFunction --source-account 111122223333 --source-arn arn:aws:connect:us-east-1:111122223333:instance/444555a7-abcd-4567-a555-654327abc87

  • 一旦您的权限设置正确,Amazon Connect 应该能够访问 Lambda。但是,您必须确保您的 Lambda 函数返回格式正确的响应。 函数返回的输出必须是键/值对的平面对象,其值仅包含字母数字、破折号和下划线字符。不支持嵌套和复杂对象。 返回数据的大小必须小于 32 Kb 的 UTF-8 数据。

    即使在您的调用流上启用了日志记录,Amazon Connect 也不会提供有关 Lambda 函数失败原因的非常详细的信息。我建议在您的 Lambda 函数中硬编码一个简单的响应,例如以下 node.js 响应,以确保您的 Lambda 响应格式不会导致您的问题,然后从那里开始工作。
    callback(null, {test : "Here is a valid response"});

    当您使用“调用 AWS Lambda 函数”步骤时,您不需要将电话号码作为单独的参数传递给 Lambda,如图所示。 Amazon Connect 已将包含该信息的 JSON 对象传递给 Lambda。下面是 Amazon Connect 发送到 Lambda 的示例。

    {
    "Details": {
    "ContactData": {
    "Attributes": {
    "Call_Center": "0"
    },
    "Channel": "VOICE",
    "ContactId": "",
    "CustomerEndpoint": {
    "Address": "+13215551212",
    "Type": "TELEPHONE_NUMBER"
    },
    "InitialContactId": "",
    "InitiationMethod": "INBOUND",
    "InstanceARN": "",
    "PreviousContactId": "",
    "Queue": null,
    "SystemEndpoint": {
    "Address": "+18005551212",
    "Type": "TELEPHONE_NUMBER"
    }
    }
    },
    "Name": "ContactFlowEvent"
    }


    您可以在 Lambda 函数中使用以下内容来引用要在 DynamoDB 中查找的调用号码。
    var CallingNumber = event.Details.ContactData.CustomerEndpoint.Address;

    希望这可以帮助。

    关于amazon-web-services - 无法在 Amazon Connect 联系流中调用 AWS Lambda 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48586446/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com