Actualizar server.js
This commit is contained in:
37
server.js
37
server.js
@@ -889,7 +889,7 @@ async function sendWhatsAppAuto(phone, message, instanceName, useDelay = false)
|
||||
}
|
||||
|
||||
// ==========================================
|
||||
// 🔔 DISPARADOR DE EVENTOS DE WHATSAPP
|
||||
// 🔔 DISPARADOR DE EVENTOS DE WHATSAPP (CON MODO SEGURO)
|
||||
// ==========================================
|
||||
async function triggerWhatsAppEvent(ownerId, serviceId, eventType) {
|
||||
try {
|
||||
@@ -914,23 +914,27 @@ async function triggerWhatsAppEvent(ownerId, serviceId, eventType) {
|
||||
if (svcQ.rowCount === 0) return false;
|
||||
const s = svcQ.rows[0];
|
||||
const raw = s.raw_data || {};
|
||||
const phone = raw["Teléfono"] || raw["TELEFONO"] || "";
|
||||
if (!phone) return false; // Sin teléfono = No enviado
|
||||
|
||||
// 4. Buscamos el token del portal cliente (o lo creamos si no existe)
|
||||
const phoneClean = phone.replace('+34', '').trim();
|
||||
// 1. EXTRAER TELÉFONO DEL CLIENTE LIMPIO
|
||||
let rawPhone = raw["Teléfono"] || raw["TELEFONO"] || raw["TELEFONOS"] || "";
|
||||
let cleanPhoneToMatch = String(rawPhone).replace(/\D/g, "");
|
||||
if (cleanPhoneToMatch.length > 9) cleanPhoneToMatch = cleanPhoneToMatch.slice(-9);
|
||||
if (cleanPhoneToMatch.length < 9) return false; // Si no hay teléfono válido, cancelamos
|
||||
|
||||
const finalPhoneToSend = "34" + cleanPhoneToMatch;
|
||||
|
||||
// 2. Buscamos el token del portal cliente (o lo creamos si no existe)
|
||||
let token = "ERROR";
|
||||
const clientQ = await pool.query("SELECT portal_token FROM clients WHERE phone LIKE $1 AND owner_id=$2 LIMIT 1", [`%${phoneClean}%`, ownerId]);
|
||||
const clientQ = await pool.query("SELECT portal_token FROM clients WHERE phone LIKE $1 AND owner_id=$2 LIMIT 1", [`%${cleanPhoneToMatch}%`, ownerId]);
|
||||
|
||||
if (clientQ.rowCount > 0) {
|
||||
token = clientQ.rows[0].portal_token;
|
||||
} else {
|
||||
// El cliente no existe en la agenda aún. Lo creamos al vuelo.
|
||||
const cName = raw["Nombre Cliente"] || raw["CLIENTE"] || "Asegurado";
|
||||
const cAddr = raw["Dirección"] || raw["DOMICILIO"] || "";
|
||||
const insertC = await pool.query(
|
||||
"INSERT INTO clients (owner_id, full_name, phone, addresses) VALUES ($1, $2, $3, $4) RETURNING portal_token",
|
||||
[ownerId, cName, phone, JSON.stringify([cAddr])]
|
||||
[ownerId, cName, finalPhoneToSend, JSON.stringify([cAddr])]
|
||||
);
|
||||
token = insertC.rows[0].portal_token;
|
||||
}
|
||||
@@ -956,9 +960,22 @@ async function triggerWhatsAppEvent(ownerId, serviceId, eventType) {
|
||||
text = text.replace(/{{ENLACE}}/g, linkMagico);
|
||||
|
||||
const useDelay = settings.wa_delay_enabled !== false;
|
||||
const instanceName = `cliente_${ownerId}`;
|
||||
|
||||
// RETORNAMOS EL ÉXITO O FRACASO DEL ENVÍO
|
||||
return await sendWhatsAppAuto(phone, text, `cliente_${ownerId}`, useDelay);
|
||||
// ====================================================
|
||||
// 🛑 MODO PRUEBAS (Desvía los mensajes a tu móvil)
|
||||
// ====================================================
|
||||
const MODO_PRUEBAS = true; // Cambia esto a 'false' para enviar a clientes reales
|
||||
const MI_TELEFONO = "34667248132"; // <--- TU NÚMERO DE MÓVIL YA CONFIGURADO
|
||||
|
||||
if (MODO_PRUEBAS) {
|
||||
console.log(`🛡️ [MODO PRUEBAS] Enviando WA al admin (${MI_TELEFONO}) en lugar de al cliente (${finalPhoneToSend})`);
|
||||
const textoPrueba = `*(SIMULACIÓN PARA CLIENTE: ${finalPhoneToSend})*\n\n` + text;
|
||||
return await sendWhatsAppAuto(MI_TELEFONO, textoPrueba, instanceName, useDelay);
|
||||
} else {
|
||||
console.log(`[WA] Enviando mensaje real al cliente: ${finalPhoneToSend}`);
|
||||
return await sendWhatsAppAuto(finalPhoneToSend, text, instanceName, useDelay);
|
||||
}
|
||||
|
||||
} catch (e) {
|
||||
console.error("Error Motor WA:", e.message);
|
||||
|
||||
Reference in New Issue
Block a user