В поисках решения этого вопроса я наткнулся на этот вопрос. Ответ NHLIVES не для меня, так как я использую node.js. Следующий код неполон и изменен из примера Amazon, но не должен содержать ошибок. Это, безусловно, может быть улучшено. Но это сработало для меня, и я надеюсь, что это будет полезно для следующего человека в будущем.
Еще одна вещь, модуль 'request' недоступен в Lambda, поэтому вы должны предоставить его. Просто создайте zip-файл с вашим index.js на верхнем уровне, каталогом node_modules, содержащим каталоги 'request' и 'safe-buffer' (скопированы из установки вашего локального узла) и загрузите zip-файл в Amazon Lambda (в AWS Lambda: «Тип ввода кода»: «Загрузить ZIP-файл»).
var AWS = require('aws-sdk');
var requestlib = require('request');
exports.handler = function (request, context) {
var whoami = async function (request) {
var amznProfileURL = 'https://api.amazon.com/user/profile?access_token=';
if (request.directive.header.namespace === 'Alexa.Discovery' && request.directive.header.name === 'Discover') {
amznProfileURL += request.directive.payload.scope.token;
} else {
amznProfileURL += request.directive.endpoint.scope.token;
}
await new Promise(function(resolve, reject) {
log("LWArequest: ", "amznProfileURL ", amznProfileURL);
requestlib(amznProfileURL, function(error, response, body) {
if (response.statusCode == 200) {
var profile = JSON.parse(body);
log("LWArequest: ", "user_id ", body);
resolve();
} else {
log("LWArequest: ", "error ", "can't connect to Amazon Profile Service");
reject();
}
});
}
);
}
whoami(request);
if (request.directive.header.namespace === 'Alexa.Discovery' && request.directive.header.name === 'Discover') {
log("DEBUG:", "Discover request", JSON.stringify(request));
handleDiscovery(request, context, "");
}
function log(message, message1, message2) {
console.log(message + message1 + message2);
}
}
Вы должны увидеть что-то подобное в вашем файле журнала CloudWatch:
2018-07-17T23:06:28.108Z 08d795d3-8a16-11e8-b912-0f46b6510aa8
LWArequest: amznProfileURL https://api.amazon.com/user/profile?access_token=Atza|IwEBIP5ozi...
2018-07-17T23:06:28.409Z 08d795d3-8a16-11e8-b912-0f46b6510aa8
LWArequest: user_id
{
"user_id": "amzn1.account.A..........................A"
}
Надеюсь, это поможет.