【发布时间】:2019-01-09 13:05:18
【问题描述】:
我试图在我的内联 Lambda 函数中从外部 api 返回数据,但是当我在 Alexa 的开发人员控制台中对此进行测试时,我得到“请求的技能响应有问题”,我无法解决为什么。
此外,当我从 AWS 控制台执行此操作时,我无法通过 console.log 查看实际返回的内容。
(为了发帖,我删除了默认意图)
const request = require('request');
const handlers = {
'LaunchRequest': function () {
this.emit(':ask', 'Welcome');
},
'GiveUpdateIntent': function (){
var slot = this.event.request.intent.slots.line.value;
httpGet(slot, (theResult) => {
this.response.speak(theResult);
this.emit(':responseReady');
});
}
};
function httpGet(query, callback) {
var options = {
host: 'api.tfl.gov.uk',
path: '/line/' + encodeURIComponent(query) + '/status',
method: 'GET',
};
var req = http.request(options, res => {
res.setEncoding('utf8');
var responseString = "";
//accept incoming data asynchronously
res.on('data', chunk => {
responseString += chunk;
});
//return the data when streaming is complete
res.on('end', () => {
console.log(responseString[0]);
callback(responseString[0]);
});
});
req.end();
}
exports.handler = function (event, context, callback) {
const alexa = Alexa.handler(event, context, callback);
alexa.APP_ID = APP_ID;
alexa.registerHandlers(handlers);
alexa.execute();
};
【问题讨论】:
-
“另外,由于我是从 aws 控制台执行此操作,我无法通过 Console.log 查看它实际返回的内容。” 为什么不呢?
-
我不知道为什么,但即使我运行我知道有效的非常简单的代码,console.log 也不会出现在我的控制台中。
-
这出乎意料。您的 Lambda 执行角色的权限可能存在问题。
-
啊,我可以在日志文件中看到 console.log 输出
-
我刚刚在这里回答了一个类似的问题stackoverflow.com/questions/51764274/…
标签: node.js amazon-web-services aws-lambda alexa alexa-skills-kit