我在facebook信使中构建了一个推送通知服务。我的nodejs应用程序在我的本地主机上运行得很好,但在AWS中却不行。
我使用请求模块(npm)发送消息。
我的服务可以获得参数,但不发送HTTP。
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;发布于 2017-04-02 11:05:54
您需要从API构建器方法处理程序中返回异步操作的承诺。您可以使用类似got或minimal-request-promise之类的工具将HTTP请求转换为承诺,也可以只使用简单的承诺包装器(如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
https://stackoverflow.com/questions/43149865
复制相似问题