UNPKG

skailan-conversations

Version:

Servicio de conversaciones y mensajería para Skailan

74 lines 2.67 kB
export class WebhookController { /** * Maneja webhooks genéricos */ async handleWebhook(req, res) { try { const { provider } = req.params; const organizationId = req.organization?.id; if (!organizationId) { res.status(400).json({ error: "Organization ID not found" }); return; } if (!provider) { res.status(400).json({ error: "Provider parameter is required" }); return; } // Redirigir a controladores específicos según el proveedor switch (provider.toLowerCase()) { case 'telegram': // Aquí podrías instanciar TelegramWebhookController res.json({ success: true, message: "Telegram webhook handled" }); break; case 'whatsapp': res.json({ success: true, message: "WhatsApp webhook handled" }); break; case 'facebook': res.json({ success: true, message: "Facebook webhook handled" }); break; default: res.status(400).json({ error: `Unsupported provider: ${provider}` }); } } catch (error) { console.error("❌ Error procesando webhook:", error); res.status(500).json({ error: "Internal server error" }); } } /** * Endpoint básico para verificación de webhooks */ async verifyWebhook(req, res) { try { const { mode, token, challenge } = req.query; const verifyToken = process.env.WEBHOOK_VERIFY_TOKEN; if (mode === "subscribe" && token === verifyToken) { res.status(200).send(challenge); } else { res.status(403).json({ error: "Invalid verification token" }); } } catch (error) { console.error("❌ Error verificando webhook:", error); res.status(500).json({ error: "Internal server error" }); } } /** * Endpoint de salud para webhooks */ async healthCheck(req, res) { try { res.json({ success: true, message: "Webhook service is healthy", timestamp: new Date().toISOString(), }); } catch (error) { console.error("❌ Error en health check:", error); res.status(500).json({ error: "Internal server error" }); } } } //# sourceMappingURL=webhookController.js.map