gpt4 book ai didi

node.js - Alexa Nodejs设备地址api

转载 作者:太空宇宙 更新时间:2023-11-04 00:10:24 26 4
gpt4 key购买 nike

我正在学习 Alexa Skill 套件,并制作一个简单的技能来实现 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("error\n"+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_request_options_callback Host 应为小写的 host。如果您将其大写,它将不会使用它并默认为 localhost ,即 127.0.0.1 如您的错误所示。它还表示主机名优先于主机,因此请使用该名称。 Endpoint 甚至不存在。它应该是路径授权应为auth。阅读那里的文档和示例,它应该可以工作。

关于node.js - Alexa Nodejs设备地址api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49950824/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com