如何从AWS Lambda

时间:2017-08-05 16:02:40

标签: javascript json node.js

我正在使用亚马逊的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);
},

感谢您的帮助!

1 个答案:

答案 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