我正在构建一项新技能,我的lambda函数需要调用另一个API来获取一些歌曲的信息。我的lambda函数已附上。
我的问题是,我可以通过Web浏览器打开网址并获得正确的响应,但是当我在AWS Lambda网站上测试Play意图时,有时我会超时,有时候我得到了200个代码,但这样的身体不完整:{ “r”:0,“is_show_quick_start”:0,“song”:[]},其中“歌曲”应该包含上下文。 (如果你通过任何网络浏览器打开网址,你可以看到它)
另外,我测试了另一个url,它也可以通过Web浏览器打开,但是当我在AWS Lambda网站上测试它时总是得到500.
我对NodeJS很新,并且建立了Alexa技能。谁有人可以帮我解决一下?谢谢!
resize
答案 0 :(得分:1)
请尝试使用' https'而是打包来调用GET。请参阅下面的示例,
function findSongIfo(callBack) {
var url = 'https://douban.fm/j/mine/playlist?type=n&sid=966135&pt=206.8&channel=1&pb=64&from=mainsite&r=1d56c92354';
var req = https.get(url, (res) => {
var body = "";
res.on("data", (chunk) => {
body += chunk
});
res.on("end", () => {
var result = JSON.parse(body);
callBack(result)
});
}).on("error", (error) => {
callBack(err);
});
}
}
我已经将GET调用创建为一个单独的函数,您可以在其中传递回调。您需要为' http'包
添加以下参考var https = require('https');