用ClaudiaJS和AWS Lambda发送POST HTTP

我在Facebook Messenger中build立一个推送通知服务。 我的nodejs应用程序在我的本地主机上正常工作,但不在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; 

您需要从API构build器方法处理程序中为asynchronous操作返回一个承诺。 你可以使用像got或者minimal-request-promise这样的东西把HTTP请求变成一个Promise,或者只是使用一个简单的promise包装,比如return new Promise((resolve, reject) => request(...., function (error, result) { if (error) { return reject(errror); else resolve(result) } }))

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