Alexa Nodejs设备地址API



我正在学习Alexa技能套件,并制定了实现Alexa设备地址API的简单技能。但是,当我在AWS平台上测试代码时,它将返回" null"作为响应,在日志中我得到:

{ Error: connect ECONNREFUSED 127.0.0.1:443
at Object.exports._errnoException (util.js:1018:11)
at exports._exceptionWithHostPort (util.js:1041:20)
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1086:14)
code: 'ECONNREFUSED',
errno: 'ECONNREFUSED',
syscall: 'connect',
address: '127.0.0.1',
port: 443 }

(并非日志中的所有信息,但我认为这是引起问题的部分(

这是我的代码:

function locationIntent(context,callback) {
var cardTitle = 'Location';
var deviceId = context.context.System.device.deviceId;
var accessToken = context.context.System.apiAccessToken;
var endpoint = context.context.System.apiEndpoint;
var url = endpoint+"/v1/devices/"+deviceId+"/settings/address";
var options = {
    Host: "api.amazonalexa.com",
    Endpoint:"/v1/devices/"+deviceId+"/settings/address",
    Authorization: "Bearer" +accessToken
      };  
getLocation(options,function(rep,err){
    if(err){
        console.log(err);
    }else{
         var speechOutput = "Your adress is "+rep.addressLine1;
         var repromptText = speechOutput;
         var shouldEndSession = true;
         callback({},
            buildSpeechletResponse(cardTitle, speechOutput, repromptText, shouldEndSession));
            }});
}
function getLocation(options,callback){
https.get(options,function(res){
    var body = '';
    res.on('data',function(chunk){
        body+=chunk;
    });
    res.on('end',function(){
        var result = JSON.parse(body);
        console.log(result);
        try{
        callback(result);
    }catch(e){
        console.log("errorn"+e);
        callback("Something is wrong");
    }
    });
}).on('error',function(e){
    console.log("error in api:"+e);
    callback('',e);
});
}

所以我真的很想知道我的代码中有什么问题。谢谢:(

https.get(options, ...,在选项中,我看到您有 Host: "api.amazonalexa.com",,所以您正在尝试连接到它,对吗?

但我发现它实际上是在尝试连接到127.0.0.1

您是否有可能对主机文件进行任何更改,并将api.amazonalexa.com映射到127.0.0.1

或您的DNS服务器正在这样做?

您可以尝试在命令提示符nslookup api.amazonalexa.com中运行以下命令并查看其返回的内容吗?


LE:

请参阅此处https://nodejs.org/api/http.html#http_http_http_request_options_callback Host应该是小写host。如果将其放置大写,它将不会使用它,并且默认为localhost,该 CC_9与您的错误一样。还说hostname is preferred over host因此使用该名称。Endpoint甚至都不存在。它应该是pathAuthorization应为auth。从那里阅读文档和示例,应该有效。

相关内容

  • 没有找到相关文章

最新更新