import express from 'express'; import dotenv from 'dotenv'; import { registerConversationRoutes } from './routes/conversations'; import { registerWebhookRoutes, clearWebhooks, registerWebhook, waitForGateway, WebhookConfig, } from './webhook'; dotenv.config(); if (process.env.NODE_ENV === 'development') { process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'; } if ( process.env.NODE_ENV !== 'development' && process.env.NODE_TLS_REJECT_UNAUTHORIZED === '0' ) { throw new Error('NODE_TLS_REJECT_UNAUTHORIZED está activado en producción. Abortando.'); } const app = express(); app.use(express.json()); const port = Number(process.env.PORT) || 3001; const agentUrl = process.env.LLM_AGENT_URL as string | undefined; const openWaUrl = process.env.OPEN_WA_URL as string | undefined; const config: WebhookConfig = { API_URL: openWaUrl || '', MAX_ATTEMPTS: parseInt(process.env.MAX_ATTEMPTS || '100', 10), RETRY_MS: parseInt(process.env.RETRY_MS || '2000', 10), }; registerConversationRoutes(app, openWaUrl); registerWebhookRoutes(app, config, openWaUrl, agentUrl); app.listen(port, async () => { console.log(`WhatsApp router listening on ${port}`); try { await waitForGateway(config); await clearWebhooks(config); await registerWebhook(config, port); } catch (err: any) { console.error('Webhook setup failed:', err.message); } });