Reputation: 349
I am working on lambda function and creating a method for AWS-SDK historical metric report using node, js and I am getting the following errors.
Have look at a SS of error
here is my code
function getKeyByValue(object, value) {
return Object.keys(object).find(key =>
object[key] === value);
}
exports.handler = async (event) => {
const AWS = require('aws-sdk');
var connect = new AWS.Connect({ apiVersion: '2017-08-08' });
let queueARN = event.queueARN || null;
const connectInstanceId = process.env.instanceID;
let flag =0, nextToken = null;
let queueARNsObject = {}, queueARNsArray=[], queueTypeObject={};
do{
let listQueuesParams = {
InstanceId: connectInstanceId, /* required */
QueueTypes: [
"STANDARD",
],
NextToken: nextToken,
};
let listQueuesPromise = connect.listQueues(listQueuesParams).promise();
listQueuesResult = await listQueuesPromise;
// console.log(listQueuesResult);
listQueuesResult.QueueSummaryList.forEach(queue => {
if(queueARN != null){
if (queue.Arn == queueARN){
queueARNsArray = [queue.Arn];
queueARNsObject[queue.Name]= queue.Arn;
queueTypeObject[queue.QueueType]= queue.Arn;
flag = 1;
return;
}
}else{
queueARNsObject[queue.Name]= queue.Arn;
queueTypeObject[queue.QueueType]= queue.Arn;
queueARNsArray.push(queue.Arn);
nextToken = listQueuesResult.NextToken;
}
});
}while (flag=0 && nextToken != null);
const metricsList = [
{
Name : 'CONTACTS_HANDLED',
Unit : 'COUNT',
Statistic : 'SUM'
},
{
Name : 'CONTACTS_ABANDONED',
Unit : 'COUNT',
Statistic : 'SUM'
},
];
// Metrics params
var getMetricParams = {
InstanceId: connectInstanceId,
StartTime: 1592854200,
EndTime: 1592855700,
Filters: {
Channels: ["VOICE"],
Queues: queueARNsArray
},
CurrentMetrics: metricsList,
Groupings: ["QUEUE"]
};
// get current metrics by queues
var getMetricsPromise = connect
.getMetricData(getMetricParams)
.promise();
var getMetricsResult = await getMetricsPromise;
// console.log("current |||||||| 1 metrics:", JSON.stringify(getCurrentMetricsResult));
let queueMetricsArray = [];
if(getMetricsResult.MetricResults.length){
getMetricsResult.MetricResults.forEach(queue => {
let queueMetrics = {
"Queue_Name" : getKeyByValue(queueARNsObject ,queue.Dimensions.Queue.Arn),
"CallsHandled": queue.Collections[0].Value ,
"CallsAbanoded": queue.Collections[1].Value ,
}
queueMetricsArray.push(queueMetrics);
console.log("TYPE||||", getKeyByValue(queueTypeObject ,queue.Dimensions.Queue.Arn))
});
}else{
keys.forEach(key => {
let queueMetrics = {
"Queue_Name" : getKeyByValue(event ,queue.Dimensions.Queue.Arn),
"CONTACTS_HANDLED": 0,
"CONTACTS_ABANDONED": 0
}
queueMetricsArray.push(queueMetrics);
})
}
const response = {
responseCode: 200,
metricResults: queueMetricsArray
};
return response;
};
I don't have any idea what this is an error about. if anyone of you knows please help me to fix it Thanks. I don't know where the Missing required key 'HistoricalMetrics' in params" I've checked the params but I didn't get anything.
Upvotes: 0
Views: 631
Reputation: 51664
The error message relates to this part of your code:
// Metrics params
var getMetricParams = {
InstanceId: connectInstanceId,
StartTime: 1592854200,
EndTime: 1592855700,
Filters: {
Channels: ["VOICE"],
Queues: queueARNsArray
},
CurrentMetrics: metricsList,
Groupings: ["QUEUE"]
};
The attribute CurrentMetrics
cannot be used here and the required attribute HistoricMetrics
is missing.
Please have a look at the GetMetricData
API reference for more information.
Upvotes: 1