Estoy tratando de construir un servidor webhook usando el nodo js. Si algún usuario configura la URL de su servidor como un gancho utilizando la API proporcionada por mí, entonces mi servidor de webhook debería responder a ese servidor de usuario.
Obtuve esta idea de la aplicación Facebook Messenger Chatbot que utiliza el mismo enfoque.
Servidor 1 - Mi servidor
const express = require("express"); const axios = require("axios"); const app = express(); const PORT = 3000; /* Set Middleware to Express App */ app.use(express.json()); // Routes app.post("/handle-webhooks", (req, res) => { const body = {"id": "1", "message": "hello"}; const headers = { 'Content-Type': "application/json", } const clientWebhookUrl = "http://localhost:8093/webhook2" // This will be different for each client axios.post(clientWebhookUrl, body, {headers}) return res.sendStatus(200); }) app.post("/set-webhook", (req,res) => { const clientWebhookUrl = req.url; // This URL will be saved to database return res.sendStatus(200) } /* Listen Server */ app.listen(PORT, () => { console.log(`App is listening on port ${PORT}.`); })Servidor 2 - Mi Cliente 1 Servidor
Usando cartero, el Cliente realizará una solicitud de publicación a http://localhost:3000/set-webhook y configurará el punto final webhook2 de su servidor web como una URL de webhook para recibir una respuesta de mi servidor.
const express = require("express"); const axios = require("axios"); const app = express(); const PORT = 8093; /* Set Middleware to Express App */ app.use(express.json()); // Routes app.post("/webhook2", (req, res) => { const body = req.body; // receives {"id": "1", "message": "hello"} return res.status(200).send(body); }) /* Listen Server */ app.listen(PORT, () => { console.log(`App is listening on port ${PORT}.`); })¿El enfoque anterior es correcto para realizar esta tarea? ¿O necesito agregar un código más complejo para esto?
Gracias.