2
在Node.js Lambda函数和Alexa之间对API进行REST调用时出现问题。我正在使用request库来使用帐户关联技能拨打电话。我只为这个意图设置了一个样本话语,模拟器看到这个很好。Node.js Lambda函数从REST调用返回“Alexa响应无效”
此外,cloudwatch日志显示来自api端点的200响应代码以及API中从console.logs到CW的任何返回数据。
'use strict';
var http = require('http');
var request = require('request');
var Alexa = require('alexa-sdk');
var APP_ID = "amzn1.ask.skill.XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX";
exports.handler = function(event, context, callback) {
var alexa = Alexa.handler(event, context);
alexa.appId = APP_ID;
alexa.registerHandlers(handlers);
alexa.execute();
};
var handlers = {
'LaunchRequest': function() {
this.emit(':tell', 'Hi!');
},
'ApiWelcomeIntent': function() {
request('https://some.web/api', function (error, response, body) {
if (!error && response.statusCode == 200) {
// from within the callback, write data to response, essentially returning it.
var speechOutput = JSON.stringify(body);
console.log(body + " :Raw output?");
console.log(speechOutput + ' :JSON stringified');
console.log(response.statusCode);
this.emit(':tell', speechOutput);
} else {
console.log(error + ' : ' + response.statusCode);
this.emit(':tell', 'There was an error');
}
});
},
'AMAZON.HelpIntent': function() {} //.........And other built in intents.
}
};
我在猜测它与某些我要求Alexa“发出/说出”的speechOutput格式有关吗?
嘿@renansdias你的答案听起来很正确的,但使用自后我仍然面临的问题。你可以检查我的代码以及在https://stackoverflow.com/questions/45613412/aws-lambda-not-able-to-make-rest-call-to-external-api – devutkarsh