Node.js Facebook Messenger API:Post请求返回错误500

Node.js Facebook Messenger API:Post请求返回错误500,node.js,facebook,Node.js,Facebook,我的帖子webhook: router.post('/webhook', function (req, res) { var data = req.body; // Make sure this is a page subscription if (data.object == 'page') { // Iterate over each entry // There may be multiple if batched

我的帖子webhook:

router.post('/webhook', function (req, res) {
          var data = req.body;

      // Make sure this is a page subscription
      if (data.object == 'page') {
        // Iterate

 over each entry

 // There may be multiple if batched
    data.entry.forEach(function(pageEntry) {
      var pageID = pageEntry.id;
      var timeOfEvent = pageEntry.time;
      // Iterate over each messaging event
      pageEntry.messaging.forEach(function(messagingEvent) {
        if (messagingEvent.optin) {
          receivedAuthentication(messagingEvent);
        } else if (messagingEvent.message) {
          receivedMessage(messagingEvent);
        } else if (messagingEvent.delivery) {
          receivedDeliveryConfirmation(messagingEvent);
        } else if (messagingEvent.postback) {
          receivedPostback(messagingEvent);
        } else if (messagingEvent.read) {
          receivedMessageRead(messagingEvent);
        } else if (messagingEvent.account_linking) {
          receivedAccountLink(messagingEvent);
        } else {
          console.log("Webhook received unknown messagingEvent: ", messagingEvent);
        }
      });
    });

    // Assume all went well.
    //
    // You must send back a 200, within 20 seconds, to let us know
    // you've successfully received the callback. Otherwise, the request
    // will time out and we will keep trying to resend.
    res.sendStatus(200);
  }
});
2.my receivedMessage功能:

function receivedMessage(event) {
  var senderID = event.sender.id;
  var recipientID = event.recipient.id;
  var timeOfMessage = event.timestamp;
  var message = event.message;

  console.log("Received message for user %d and page %d at %d with message:", 
    senderID, recipientID, timeOfMessage);
  console.log(JSON.stringify(message));

  var messageId = message.mid;

  var messageText = message.text;
  var messageAttachments = message.attachments;

  if (messageText) {

    // If we receive a text message, check to see if it matches a keyword
    // and send back the example. Otherwise, just echo the text we received.
    switch (messageText) {
      case 'generic':
        sendGenericMessage(senderID);
        break;

      default:
        sendTextMessage(senderID, messageText);
    }
  } else if (messageAttachments) {
    sendTextMessage(senderID, "Message with attachment received");
  }
}
这是我在运行代码时没有发出sendTextMessage(调用callsend api,我认为代码失败)时的服务器日志:

2017-03-17T10:06:11.296017+00:00应用程序[web.1]:收到用户的消息 1367047720019479和第1334554393257327页,电话1489745171043 消息:2017-03-17T10:06:11.298010+00:00应用程序[web.1]: {“mid”:“mid.$cAAS9xUXoM5lhDQCaY1a27tcMAHJS”,“seq”:157393,“文本”:“测试” 消息“}2017-03-17T10:06:11.298044+00:00应用程序[web.1]: {“收件人”:{“id”:“1367047720019479”},“消息”:{“文本”:“测试” 消息“}}2017-03-17T10:06:11.298649+00:00应用程序[web.1]:POST/webhook/ 200 3.244 ms-2

现在,当我包括sendtext和callSendAPI时:

function sendTextMessage(recipientId, messageText) {
  var messageData = {
    recipient: {
      id: recipientId
    },
    message: {
      text: messageText
    }
  };
console.log(JSON.stringify(messageData));

callSendAPI(messageData);

}


function callSendAPI(messageData) {

 ***console.log("inside the call api");***
request.post({
    uri: 'https://graph.facebook.com/v2.6/me/messages',
    qs: { access_token: access },
    //method: 'POST',
    json: messageData

  }, function (error, response, body) {
    if (!error && response.statusCode == 200) {
      var recipientId = body.recipient_id;
      var messageId = body.message_id;

      console.log("Successfully sent generic message with id %s to recipient %s", 
        messageId, recipientId);
    } else {
      console.error("Unable to send message.");
      console.error(response);
      console.error(error);
    }
  });  
}
这是它给出的输出:

2017-03-17T10:09:38.141702+00:00应用程序[web.1]:收到用户的消息 1367047720019479和第1334554393257327页,电话1489745373029 消息:2017-03-17T10:09:38.141719+00:00应用程序[web.1]: {“mid”:“mid.$cAAS9xUXoM5lhDQOvZVa275xBT7LW”,“seq”:157396,“文本”:“测试” 消息“}2017-03-17T10:09:38.141757+00:00应用程序[web.1]: {“收件人”:{“id”:“1367047720019479”},“消息”:{“文本”:“测试” 消息“}}2017-03-17T10:09:38.141778+00:00应用程序[web.1]:在 调用api 2017-03-17T10:09:38.143120+00:00应用程序[web.1]:POST /webhook/5001.686 ms-253


请帮助我如何修复此错误:所有令牌都已正确设置页面访问和验证令牌。我是messenger平台的新手

因此API响应的是500,还是您端的500
POST/webhook/500
建议可能是后者,因此在这种情况下,您要做的第一件事就是开始检查错误日志…感谢您的响应在我记录错误应用程序时,错误在我这边。使用(函数(err,req,res,next){res.status(err.status | 500);console.log(err.message);res.render('error',{message:err.message,error:{},title:'error'});});返回的错误是请求未定义,解决此问题时未定义json,建议将不胜感激。.谢谢。@CBroe这是我的请求。.正文{“object”:“page”,“entry”:[{“id”:“1334554393257327”,“time”:1489757872858,“消息传递”:[{“发件人”:{“id”:“13670 47720019479”},“收件人”:{“id”:“1334554393257327”},“时间戳”:1489745373029,“消息”:{“mid”:“mid.$cAAS9xUXoM5lhDQOvZVa275xBT7LW”,“seq”:157396,“文本”:“测试混乱时代”}}]当我检查req时,它不是空的,这是它的日志,这只是你发送的内容的日志……我甚至怀疑这是否来自实际的错误日志。你好,先生@CBroe获得了更多日志POST/webhook/500 41.779 ms-24 2017-03-20T06:10:17.596212+00:00应用程序[web.1]:错误:发送后无法设置标题。2017-03-20T06:10:17.596213+00:00应用程序[web.1]:在ServerResponse.OutgoingMessage.setHeader(_http_outing.js:356:11)一直在尝试绕过它,希望得到它。非常感谢您的建议。谢谢