Actualizar server.js
This commit is contained in:
47
server.js
47
server.js
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user