Actualizar server.js

This commit is contained in:
2026-03-07 21:44:09 +00:00
parent 62edc138b2
commit c89f1c5b24

View File

@@ -440,26 +440,37 @@ async function procesarConIA(ownerId, mensajeCliente, datosExpediente) {
if (!settings.wa_ai_enabled) return null; if (!settings.wa_ai_enabled) return null;
// 🕒 OBTENER FECHA ACTUAL REAL
const ahora = new Date();
const opciones = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
const fechaHoyTexto = ahora.toLocaleDateString('es-ES', opciones);
const promptSistema = ` const promptSistema = `
Eres el asistente de "${empresaNombre}". Eres el Asistente IA de "${empresaNombre}".
DATOS EXPEDIENTE #${datosExpediente.ref}:
- Estado: ${datosExpediente.estado} CONTEXTO TEMPORAL:
- Cita actual: ${datosExpediente.cita || 'Ninguna'} - Hoy es: ${fechaHoyTexto}.
Eres el asistente de "${empresaNombre}". - Estamos en el año 2026. Úsalo para calcular fechas si el cliente dice "el lunes" o "mañana".
DATOS DEL EXPEDIENTE #${datosExpediente.ref}:
- Estado: ${datosExpediente.estado}
- Cita actual registrada: ${datosExpediente.cita || 'Ninguna'}
PRESENTACIÓN (IMPORTANTE):
- Si el cliente te saluda por primera vez o es el inicio de la charla, preséntate así: "Hola, soy el asistente virtual de ${empresaNombre}. Estoy aquí para ayudarte con tu expediente #${datosExpediente.ref}."
REGLA DE CITAS (CRÍTICA): REGLA DE CITAS (CRÍTICA):
- Tú NO confirmas citas finales, solo recoges la preferencia del cliente. - Tú NO confirmas citas finales, solo recoges la preferencia del cliente.
- Si el cliente propone un día/hora, responde: "He recibido su preferencia para el [FECHA]. Voy a consultarlo con el técnico asignado y le confirmaremos por aquí en cuanto valide su agenda." - Si el cliente propone un día/hora, responde: "He recibido su preferencia para el [FECHA]. Voy a consultarlo con el técnico asignado y le confirmaremos por aquí en cuanto valide su agenda."
- Al final de esa respuesta, añade el código: [PROPUESTA:DD-MM-YYYY HH:mm] - Al final de esa respuesta, añade el código: [PROPUESTA:YYYY-MM-DD HH:mm]
- Si el cliente no propone nada, dile que nos diga qué mañanas o tardes le vienen mejor para que el técnico se organice. - Si el cliente no propone nada concreto, pídele que te indique qué franja horaria le viene mejor.
REGLAS DE ORO: REGLAS DE ORO:
1. Si el cliente pregunta "¿Cuándo venís?", responde con la "Fecha Cita" si existe. Si no existe, di que la oficina le llamará en breve para agendar. 1. Si el cliente pregunta "¿Cuándo venís?", usa la "Cita actual registrada". Si no hay, di que la oficina contactará con él.
2. NUNCA inventes precios ni presupuestos. Si preguntan coste, di que el técnico debe valorar el daño in situ. 2. NUNCA inventes precios.
3. Si el cliente está enfadado o usa lenguaje ofensivo, di: "Siento las molestias. He dado aviso urgente a mis compañeros de la oficina para que le llamen ahora mismo". 3. Ante enfados, deriva a un humano con amabilidad.
4. Responde SIEMPRE en máximo 2 frases cortas. Usa un tono cercano pero profesional. 4. Responde en máximo 2 o 3 frases cortas.
5. Si preguntan por el nombre del técnico y está asignado, dáselo. Si no, di que se le notificará por SMS/WhatsApp en cuanto se le asigne uno. 5. No uses negritas (**), usa asteriscos (*) si es vital resaltar algo.
6. No uses negritas (**) en el texto, usa asteriscos (*) solo si es muy necesario.
`; `;
const completion = await openai.chat.completions.create({ const completion = await openai.chat.completions.create({
@@ -468,7 +479,7 @@ async function procesarConIA(ownerId, mensajeCliente, datosExpediente) {
{ role: "system", content: promptSistema }, { role: "system", content: promptSistema },
{ role: "user", content: mensajeCliente } { role: "user", content: mensajeCliente }
], ],
temperature: 0.5, // Menos locura, más precisión temperature: 0.5,
}); });
return completion.choices[0].message.content; return completion.choices[0].message.content;