构建Alexa技能时,在lambda函数中使用NodeJS请求的http响应或超时不正确

时间:2017-10-02 07:25:17

标签: node.js amazon-web-services lambda alexa-skills-kit

我正在构建一项新技能,我的lambda函数需要调用另一个API来获取一些歌曲的信息。我的lambda函数已附上。

我的问题是,我可以通过Web浏览器打开网址并获得正确的响应,但是当我在AWS Lambda网站上测试Play意图时,有时我会超时,有时候我得到了200个代码,但这样的身体不完整:{ “r”:0,“is_show_quick_start”:0,“song”:[]},其中“歌曲”应该包含上下文。 (如果你通过任何网络浏览器打开网址,你可以看到它)

另外,我测试了另一个url,它也可以通过Web浏览器打开,但是当我在AWS Lambda网站上测试它时总是得到500.

我对NodeJS很新,并且建立了Alexa技能。谁有人可以帮我解决一下?谢谢!

resize

1 个答案:

答案 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');