res.send(200) проблема на боте мессенджера в фейсбуке

Я пытаюсь создать бот-мессенджер на Facebook с помощью nodejs. Я разработал бот с основными функциями. При тестировании на негативный сценарий, когда пользователь отправляет GIF или стикер, он должен ответить "Я не смог получить вас. Извините". Он отправляет это сообщение, но после этого каждые несколько минут продолжает отправлять это сообщение. Я заметил, что сервер ngrok выдал внутреннюю ошибку сервера HTTP 500 для запроса POST. При дальнейшей отладке я смог обнаружить, что res.send(200) не выполняется должным образом. Консоль stmt, которую я имею после res.send(200), никогда не печатается. Не уверен, что я могу пропустить. Любая помощь приветствуется. Пробовал перезагружать сервер и подписывался на приложение с новой ссылкой ngork https. Это же сообщение продолжает печататься:(.

Вот мой код

    server.post('/', (req, res, next) => {
            // Extract the body of the POST request
            let data = req.body;
            let incomingMessage = '';
            if(data.object === 'page') {
                data.entry.forEach(pageObj => {
                    // Iterate through the messaging Array
                    pageObj.messaging.forEach(msgEvent => {
                         incomingMessage = {
                            sender: msgEvent.sender.id,
                            timeOfMessage: msgEvent.timestamp,
                            message: msgEvent.message
                        }
                    });
                });
            }
            const {
                message,
                sender
            } = incomingMessage

            if(message.text) {
                f.txt(sender, 'Hi there!!!');
            } else {
                f.txt(sender, `I couldn't get you. Sorry :(`);
                //res.send(200);
            }
        res.send(200);
        console.log('We are at the end of post');
        return next();
    });

1 ответ

Возможно, этот ответ не решит вашу проблему, но может быть полезным. Если вы хотите отправить HTTP-код 200, используйте вместо этого:

res.sendStatus(200); // equivalent to res.status(200).send('OK')

С другой стороны, если это не промежуточное ПО, вы можете удалить return next(); линия.

Другие вопросы по тегам