我正在尝试在Amazon Connect Contact流程中集成AWS Lambda函数。 AWS Lambda函数运行正常并给出响应。在调用Connect联系人流中的函数时,它返回错误语句但我无法找出错误是什么以及错误日志存储在何处。
我正在尝试将用户的电话号码输入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);
}
});
}
答案 0 :(得分:1)
首先,您需要确保已正确授予权限。在AWS CLI中,使用以下编辑发出以下命令。
将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;
希望这有帮助。