2017-03-31 14 views
1

私はFacebookのメッセンジャーにプッシュ通知用のサービスを構築しました。私のnodejsアプリケーションはローカルホストで正常に動作しますが、AWSでは動作しません。ClaudiaJSとAWS LambdaでPOST HTTPを送信

送信メッセージにリクエストモジュール(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

非同期操作のためのAPIビルダーメソッドハンドラーの約束を返す必要があります。あなたは約束にHTTPリクエストをオンにするgotまたはminimal-request-promiseようなものを使用、またはちょうどreturn new Promise((resolve, reject) => request(...., function (error, result) { if (error) { return reject(errror); else resolve(result) } }))

を参照してくださいここクラウディアから外部サービスを使用する方法についてのガイドの項目#4のようなシンプルな約束ラッパーを使用することができます。https://claudiajs.com/tutorials/external-services.html

+0

プロミスラッパーを使用するだけで効果的でした!ありがとう! –

関連する問題