GetCurrentMetricData от Amazon Connet не является функцией - PullRequest
0 голосов
/ 29 сентября 2018

В последнее время я работаю над проектом с Amazon Lambda.

Я создал лямбда-функцию следующим образом

var AWS = require ('aws-sdk');
exports.handler = (event, context, callback) => {
    // TODO implement
    var connect = new AWS.Connect({apiVersion: '2017-08-08'});
    var params = {
        InstanceId: '' /* required */
    };
    connect.getCurrentMetricData(params, function(err, data) {
      if (err) console.log(err, err.stack); // an error occurred
      else   {
            const response = {
                statusCode: 200,
                body: JSON.stringify(data)
            };
            callback(null, data);
      }           // successful response
    });

    // const response = {
    //         statusCode: 200,
    //         body: JSON.stringify(typeof connect.getCurrentMetricData)
    // };
    // callback(null, response);
};

Но в журнале сказано, что connect.getCurrentMetricData не является функцией.

Кто-нибудь может мне помочь с этой ошибкой?Большое спасибо.

ps, я написал код в онлайн-редакторе Amazon Lambda (nodejs 8.10) и протестировал другие функции подключения, такие как createUser, deleteUser, typeof result является функцией.Только когда дело доходит до getCurrentMetricData, результат typeof будет неопределенным.

Спасибо

1 Ответ

0 голосов
/ 08 октября 2018
var AWS = require ('aws-sdk');
AWS.config.region = 'your Region';
var connect = new AWS.Connect(); 

exports.handler = (event, context, callback) => {
var AGENTS_ON_CALL_VALUE;
var dataContent = {
  CurrentMetrics: [  
    { Name: 'AGENTS_ON_CALL',
      Unit: 'COUNT'
    },
  ],
  Filters: { 
    Channels: [ 'VOICE' ],
    Queues: [ 'Your Queue ID']
  },
  InstanceId: 'Connect InstanceID',
  Groupings: [ 'QUEUE' ],
  MaxResults: 1
};

connect.getCurrentMetricData(dataContent, function(err, data) {
    var jsonstring = JSON.stringify(data);
    if (err){
        console.log(err, err.stack);
    } else{    
        var obj = JSON.parse(jsonstring);
        AGENTS_ON_CALL_VALUE = obj.MetricResults[0].Collections[0].Value;
        console.log(AGENTS_ON_CALL_VALUE);    
        callback(null,"Finish getting Data"); 
    }  
});
}

Проблема решена.Получите новейший AWS-SDK.В противном случае он вернет getCurrentMetricData не является ошибкой функции.

...