Node.js Facebook Messenger API:Post请求返回错误500
我的帖子webhook: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
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)一直在尝试绕过它,希望得到它。非常感谢您的建议。谢谢