我正在使用亚马逊的Alexa软件在node.js 6.10中为一个学校项目编写AWS Lambda,而且我对Javascript没有多少经验,而且没有JSON经验。我的学校有一个运输API,用于查找它是否在:https://prtstatus.wvu.edu/api/[TENDIGITTIMESTAMP]/?format=json
如果我带着印章去那里,我会得到" {" status":" 7"," message":" The PRT已关闭。","时间戳":" 1494028926","电台":[]," bussesDispatched":&# 34; 0""持续时间":[]}"
我想要得到的是消息并将其转发给其他人(我已经覆盖了那部分)。我不知道的是如何从URL中分解JSON响应或首先编写请求。有人可以帮我弄清楚要写什么来使用"消息"我的项目中的字符串?
到目前为止,我有:
'getPRTStatus': function() {
var date = Math.round(new Date().getTime()/1000);
//this is the spot where I need help filling in
//var object = JSON.parse('http://prtstatus.wvu.edu/api/'+date+'/?format=json');
this.attributes.speechOutput = this.t(object.message);
this.attributes.repromptSpeech = this.t(object.message);
this.emit(':ask', this.attributes.speechOutput, this.attributes.repromptSpeech);
},
感谢您的帮助!
答案 0 :(得分:3)
您是否可以从URL发布JSON响应,因为这有助于缩小问题范围。
<强>更新强>
您需要向API端点发出http get请求。您没有获得JSON响应,
var url = "http://prtstatus.wvu.edu/api/"+date+"/?format=json"
您可以使用像https://www.npmjs.com/package/request这样的软件包查看他们如何使其工作的文档。
像这样,
var options = {
"method": "get",
"url": "http://prtstatus.wvu.edu/api/1501906657/?format=json",
}
request(options, function(err, response, body) {
if (err) {
console.log(err)
} else {
console.log(body);
}
另一次更新
你可以尝试类似的东西,
var request = require('request'); //Import the NPM package
var object; //global variable to be used later on to store the response
然后在你的函数中,
'getPRTStatus': function() {
var date = Math.round(new Date().getTime()/1000);
var options = {
'method' : 'get',
'url' : 'http://prtstatus.wvu.edu/api/' + date + '/?format=json'
};
request(options, function(err, response, body){
if(err) {
console.log(err);
}
else {
object = JSON.parse(body); //You got the response parsed & stored in the global variable named object
}
});
this.attributes.speechOutput = this.t(object.message);
this.attributes.repromptSpeech = this.t(object.message);
this.emit(':ask', this.attributes.speechOutput,
this.attributes.repromptSpeech);
}
根据您的问题更新了我的答案。希望有所帮助。对于任何未来的API相关问题,您应该尝试使用Chrome中的Postman。我将发布一个关于如何开始使用它的链接。您还将在邮递员中获得API调用的直接代码。 链接邮递员应用:https://chrome.google.com/webstore/detail/postman/fhbjgbiflinjbdggehcddcbncdddomop?utm_source=gmail