我有一个包含请求调用的模块,但它似乎没有被执行。
var request = require('request');
var Alexa = require('alexa-sdk');
var APP_ID = <my alexa app ID>;
var self = module.exports = {
handler : function (event, context, callback) {
var alexa = Alexa.handler(event, context);
alexa.appId = APP_ID;
alexa.registerHandlers(self);
alexa.execute();
},
"TestIntent": function () {
var speechOutput = "Recorded Test";
request("http://www.google.com",
function(error, response,body)
{
return console.log(body);
}
);
this.emit(':tell', speechOutput);
}
}
我从未在 Lambda 控制台或其他任何地方的 console.log 中看到 google body 出现。我尝试过其他调用(例如 API 发布到我的应用程序服务器 API),但也没有看到该调用出现在该服务器上。
似乎该进程在请求回调完成之前关闭。
在 Amazon Lambda“测试器”中,我得到了有效的响应。在 Alexa“测试器”中,我得到“记录测试”的响应。在 Echo 上(通过 Alexa),我从设备返回“记录的测试”响应。所以这个技能看起来效果很好。只是“请求”操作(在本例中,只是拉取 google.com)失败了。
Thanks!!
UPDATE:我至少能够完成通话,但可能不是最干净的方式。
var request = require('request');
var Alexa = require('alexa-sdk');
var APP_ID = <my alexa app ID>;
var self = module.exports = {
handler : function (event, context, callback) {
var alexa = Alexa.handler(event, context);
alexa.appId = APP_ID;
alexa.registerHandlers(self);
alexa.execute();
},
"TestIntent": function () {
var that = this;
var speechOutput = "Recorded Test";
request("http://www.google.com",
function(error, response,body)
{
console.log(body);
that.emit(':tell', speechOutput);
return;
}
);
}
}