Express JS интеграция с облачными функциями для Firebase не работает - PullRequest
0 голосов
/ 03 мая 2020

Я хотел бы использовать этот SDK платформы Facebook Messenger из https://www.npmjs.com/package/facebook-bot-messenger с этим примером кода:

var MessengerPlatform = require('facebook-bot-messenger');
var app = require('express')();
var server = require('http').Server(app);
var bot = MessengerPlatform.create({
pageID: '<your page id>',
appID: '<your app id>',
appSecret: '<your app secret>',
validationToken: '<your validation token>',
pageToken: '<your page token>'
}, server);

app.use(bot.webhook('/webhook'));

bot.on(MessengerPlatform.Events.MESSAGE, function(userId, message) {
   // add code below.
});

server.listen(8080);

Это моя реализация:

var MessengerPlatform = require('facebook-bot-messenger');
var app = require('express')();
var bot = MessengerPlatform.create({
   pageID: process.env.PAGE_ID,
   appID: process.env.APP_ID,
   appSecret: process.env.APP_SECRET,
   validationToken: process.env.VALIDATION_TOKEN,
   pageToken: process.env.PAGE_ACCESS_TOKEN
});

app.use(bot.webhook('/messengerWebhook'));

app.get('/', validateServer);
app.post('/', handlePOST);

exports.messengerWebhook = functions.https.onRequest(app);

async function validateServer(req, res) {
   const mode = req.query['hub.mode'];
   const token = req.query['hub.verify_token'];
   const challenge = req.query['hub.challenge'];
   if (mode && token) {
     if (mode == 'subscribe' && token == process.env.VALIDATION_TOKEN) {
       await res.status(200).send(challenge);
     } else {
       await res.sendStatus(403);
     }
   }
}

async function handlePOST(req, res) {
    bot.on(MessengerPlatform.Events.MESSAGE, function(userId, message) {
        bot.sendTextMessage(userId, "hello");
     });
 }

функции в get будут работать правильно, но те, что в посте, ничего не сделают.

Как исправить код, чтобы правильно реализовать пример кода с помощью облачных функций?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...