From 67dc0d5d163705904491ae49b9b0c1b98c8c3656 Mon Sep 17 00:00:00 2001 From: AI Bot Date: Mon, 24 Aug 2026 13:18:20 -0500 Subject: [PATCH] fix(webhook): garantizar tipo_publicacion_id y timeouts de Evolution API --- src/app/api/webhooks/whatsapp/route.ts | 14 ++++++++++---- src/lib/evolution.ts | 2 +- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/app/api/webhooks/whatsapp/route.ts b/src/app/api/webhooks/whatsapp/route.ts index df9dc46..18d3068 100644 --- a/src/app/api/webhooks/whatsapp/route.ts +++ b/src/app/api/webhooks/whatsapp/route.ts @@ -274,8 +274,14 @@ export async function POST(req: Request) { fechaVencimiento = getLastDayOfMonth(); } - // Buscar tipo de publicación correspondiente (NOTICIA, EVENTO, CLASIFICADO) - let tipoPublicacionId = ''; + // Mapeo seguro de tipo_publicacion_id requerido por el esquema de Appwrite + const DEFAULT_PUBLICATION_TYPES: Record = { + noticia: '69c2b91400362d5d52b6', + evento: '69c2b9150030f3d1288c', + aviso: '69c2b916002aeec66684' + }; + + let tipoPublicacionId = DEFAULT_PUBLICATION_TYPES[parsed.tipo] || '69c2b91400362d5d52b6'; try { const types = await databases.listDocuments( APPWRITE_ALMEIRA_CONFIG.databaseId, @@ -290,7 +296,7 @@ export async function POST(req: Request) { tipoPublicacionId = matched.$id; } } catch (e) { - console.warn('No se pudo obtener el tipo de publicación en Appwrite:', e); + console.warn('No se pudo obtener el tipo de publicación en Appwrite, usando fallback:', e); } // Crear Post en Appwrite (Vinculando la imagen destacada de la biblioteca de medios) @@ -302,13 +308,13 @@ export async function POST(req: Request) { titulo: truncateString(parsed.titulo, 70), slug: generateSlug(parsed.titulo) + '-' + Date.now().toString().slice(-4), tipo: parsed.tipo, + tipo_publicacion_id: tipoPublicacionId, resumen_redes: truncateString(parsed.seo_descripcion, 155), seo_titulo: truncateString(parsed.titulo, 60), seo_descripcion: truncateString(parsed.seo_descripcion, 155), contenido: parsed.contenido, estado: 'borrador', // Requiere aprobación fecha_publicacion: new Date().toISOString(), - ...(tipoPublicacionId && { tipo_publicacion_id: tipoPublicacionId }), ...(fechaVencimiento && { fecha_finalizacion: new Date(fechaVencimiento).toISOString() }), ...(featuredMediaDocId && { imagen_destacada_id: featuredMediaDocId }), ...(ogImageUrl && { og_image_url: ogImageUrl }) diff --git a/src/lib/evolution.ts b/src/lib/evolution.ts index 29f057d..10027c2 100644 --- a/src/lib/evolution.ts +++ b/src/lib/evolution.ts @@ -15,7 +15,7 @@ export async function sendWhatsAppMessage(numberId: string, text: string) { const response = await axios.post(url, { number: numberId, text: text - }, { headers }); + }, { headers, timeout: 25000 }); return response.data; }