当前位置:  开发笔记 > 前端 > 正文

如何从AWS Lambda函数查询第三方JSON API

如何解决《如何从AWSLambda函数查询第三方JSONAPI》经验,为你挑选了1个好方法。

我正在为新的亚马逊ECHO工作"技能".该技能将允许用户向Alexa询问有关Enphase太阳系的状态和性能的信息.Alexa将回应从基于JSON的Enphase API中提取的结果.例如,用户可以问,

 "Alexa.  Ask Enphase how much solar energy I have produced in the last week."
 ALEXA <"Your array has produced 152kWh in the last week.">

问题是我用JavaScript编程已经多年了,这是我第一次使用AWS Lambda.我没有非常成功地找到有关如何将JSON查询嵌入AWS Lambda函数中的第三方服务器的任何信息.以下是我的Lambda函数中相关的代码部分:

 /**
  * Gets power from Enphase API and prepares speach
  */
 function GetPowerFromEnphase(intent, session, callback) {
      var Power = 0;
      var repromptText = null;
      var sessionAttributes = {};
      var shouldEndSession = false;
      var speechOutput = "";

      //////////////////////////////////////////////////////////////////////
      // Need code here for sending JSON query to Enphase server to get power
      // Request:
      // https://api.enphaseenergy.com/api/v2/systems/67/summary
      // key=5e01e16f7134519e70e02c80ef61b692&user_id=4d7a45774e6a41320a
      // Response:
      // HTTP/1.1 200 OK
      // Content-Type: application/json; charset=utf-8
      // Status: 200
      // {"system_id":67,"modules":35,"size_w":6270,"current_power":271,
      // "energy_today":30030,"energy_lifetime":59847036,
      // "summary_date":"2015-03 04","source":"microinverters",
      // "status":"normal","operational_at":1201362300,
      // "last_report_at":1425517225}
      //////////////////////////////////////////////////////////////////////

      speechOutput = "Your array is producing " + Power + " kW, goodbye";
      shouldEndSession = true;

      // Setting repromptText to null signifies that we do not want to reprompt the user.
      // If the user does not respond or says something that is not understood, the session
      // will end.
      callback(sessionAttributes,
         buildSpeechletResponse(intent.name, speechOutput, repromptText,
         shouldEndSession));
 }

一些指导将非常感谢.即使有人能指出我正确的方向.谢谢!



1> Ryan..:

Request是一个非常流行的库,用于处理node.js中的http请求.以下是使用您的数据的POST示例:

var request = require('request');

request({
  url: 'https://api.enphaseenergy.com/api/v2/systems/67/summary',
  method: 'POST',
  headers: {
    Accept: 'application/json',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    key: '5e01e16f7134519e70e02c80ef61b692',
    user_id: '4d7a45774e6a41320a'
  })
}, function (error, response, body) {
  if (!error && response.statusCode == 200) {
    console.log('BODY: ', body);
    var jsonResponse = JSON.parse(body); // turn response into JSON

    // do stuff with the response and pass it to the callback...

    callback(sessionAttributes, 
        buildSpeechletResponse(intent.name, speechOutput, repromptText,
        shouldEndSession));
  }
});

我没有ECHO/Alexa的例子,但这里有一个Lambda呼叫获取天气数据发送给Slack的例子

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有