使用ClaudiaJS和AWS Lambda发送POST HTTP

时间:2017-03-31 21:23:11

标签: node.js facebook amazon-web-services aws-lambda

我在facebook messenger中为推送通知构建服务。我的nodejs应用程序在我的localhost中工作正常,但在AWS中没有。

我使用请求模块(npm)发送消息。

我的服务可以获取参数,但不会发送HTTP POST。

var ApiBuilder = require('claudia-api-builder'),
  api = new ApiBuilder();

var request = require('request')



api.get('hello', function (req) {

  var token = req.queryString.token;
  var sender = req.queryString.sender;
  var msg = req.queryString.msg;
  messageData = {};
  messageData.text = msg;

  request({
      url: 'https://graph.facebook.com/v2.6/me/messages',
      qs: { access_token: token },
      method: 'POST',
      json: {
          recipient: { id: sender },
          message: messageData,
      }
  }, function (error, response, body) {
      if (error) {
          return 'Error sending message: ' + error;
      } else if (response.body.error) {
          return 'Error: ' + response.body.error;
      }
  });



  return sender + ' ' + messageData.text  ;
})


module.exports = api;

1 个答案:

答案 0 :(得分:2)

您需要从API构建器方法处理程序返回一个用于异步操作的promise。您可以使用nullgot之类的内容将HTTP请求转换为Promise,或者只使用简单的承诺包装,例如minimal-request-promise

请参阅指南中有关如何使用Claudia的外部服务的第4项:https://claudiajs.com/tutorials/external-services.html