2017-03-31 4 views
1

Ich baue einen Dienst für Push-Benachrichtigungen in der Facebook Messenger. Meine Nodejs-App funktioniert in meinem lokalen Host, aber nicht in AWS.Senden Sie POST HTTP mit ClaudiaJS und AWS Lambda

Ich benutze Anfrage Modul (Npm) für senden Nachricht.

Mein Dienst kann die Parameter abrufen, sendet jedoch keinen 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; 

Antwort

1

Sie müssen ein Versprechen aus dem API-Builder-Methodenhandler für asynchrone Vorgänge zurückgeben. Sie können hier so etwas wie got oder minimal-request-promise, um den HTTP-Anforderung in ein Versprechen, oder benutzen Sie einfach ein einfaches Versprechen Wrapper wie return new Promise((resolve, reject) => request(...., function (error, result) { if (error) { return reject(errror); else resolve(result) } }))

Siehe Punkt # 4 in der Anleitung, wie man die Verwendung externer Dienste von Claudia verwenden: https://claudiajs.com/tutorials/external-services.html

+0

Mit nur dem Versprechen Wrapper hat super funktioniert! Vielen Dank! –