console.log("versión 1.96"); // SCRIPT PARA EL FRONT const chatbot_input = document.getElementById("chatbot-input"); const chatbot_send = document.getElementById("chatbot-send"); const chatbot_container = document.getElementById("chatbot-container"); const chatbot_icon = document.getElementById("chatbot-icon"); const messagesContainer = document.getElementById('chatbot-messages'); const minimise = document.getElementById("minimise"); const close_button = document.getElementById("close"); let conversation = []; // Variable para almacenar la conversación const make_id = chatbotData.make_id; document.addEventListener('DOMContentLoaded', () => { let mailPubliMostrado = false; chatbot_icon.addEventListener("click", () => { chatbot_container.classList.toggle("hidden_chatbot"); chatbot_icon.classList.toggle("hidden_chatbot"); // Solo ejecuta mail_publi() la primera vez que se abre el chatbot if (!mailPubliMostrado) { setTimeout(() => { mail_publi(); mailPubliMostrado = true; }, 5000); } }); const backendButton = document.getElementById("toggle-backend"); const makeButton = document.getElementById("toggle-make"); const toggleMessage = document.getElementById("toggle-message"); function toggleButton(selectedButton, otherButton) { selectedButton.classList.add("active"); otherButton.classList.remove("active"); // Actualizar mensaje según el botón activo if (selectedButton.id === "toggle-backend") { toggleMessage.textContent = "Preguntas frecuentes: Resuelve cualquier duda que tengas sobre Avainza"; } else { toggleMessage.textContent = "Asistente de Avainza: Utiliza las funciones del chatbot de Avainza."; } } // Marcar el botón de Make como activo al cargar la página toggleButton(makeButton, backendButton); // Event Listeners para alternar la selección backendButton.addEventListener("click", function () { toggleButton(backendButton, makeButton); }); makeButton.addEventListener("click", function () { toggleButton(makeButton, backendButton); }); close_button.addEventListener("click", () => { chatbot_container.classList.add("hidden_chatbot") }); minimise.addEventListener("click", () => { chatbot_icon.classList.toggle("hidden_chatbot") chatbot_container.classList.toggle("hidden_chatbot") }); // Detectar presionar "Enter" en el input y ejecutar la función correcta según la opción seleccionada // Detectar presionar "Enter" en el input y ejecutar la función correcta según la opción seleccionada chatbot_input.addEventListener("keypress", (e) => { if (e.key === 'Enter') { e.preventDefault(); // Prevenir salto de línea const input = chatbot_input.value.trim(); if (!input) return; // Verificar qué botón está activo y ejecutar la función correspondiente if (backendButton.classList.contains("active")) { console.log("📡 Enviando pregunta al backend..."); enviarPreguntaAlBackend(input); // Envía la pregunta al backend } else if (makeButton.classList.contains("active")) { console.log("⚙️ Ejecutando acción en Make..."); enviarConversacionAMake(input); // Envía la conversación a Make } } }); // Función para enviar pregunta al backend function enviarPreguntaAlBackend(input) { conversation.push({ role: "user", content: input }); const userMessage = document.createElement('div'); userMessage.className = 'pregunta_usuario'; userMessage.textContent = input; messagesContainer.appendChild(userMessage); chatbot_input.value = ''; const typingMessage = document.createElement('div'); typingMessage.className = 'respuesta_chatbot'; typingMessage.textContent = 'Escribiendo...'; messagesContainer.appendChild(typingMessage); messagesContainer.scrollTop = messagesContainer.scrollHeight; fetch(chatbotData.ajax_url, { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', }, body: new URLSearchParams({ action: 'enviar_api_key', acting_instructions: chatbotData.acting_instructions, company_info: chatbotData.company_info, input: JSON.stringify(conversation), }), }) .then((response) => response.json()) .then((data) => { if (data.success) { typingMessage.textContent = data.data.message; conversation.push({ role: "assistant", content: data.data.message }); } else { typingMessage.textContent = 'Error al obtener respuesta del backend.'; console.error('Error:', data.data); } }) .catch((error) => { typingMessage.textContent = 'Error en la petición al backend.'; console.error('Error en la petición AJAX:', error); }); } // Función para enviar conversación a Make function enviarConversacionAMake(input) { if (!make_id) { console.error("❌ Error: make_id no está definido."); addChatbotMessage('❌ Error: Usuario no registrado o sin make_id.'); return; } const userMessage = document.createElement('div'); userMessage.className = 'pregunta_usuario'; userMessage.textContent = input; messagesContainer.appendChild(userMessage); chatbot_input.value = ''; messagesContainer.scrollTop = messagesContainer.scrollHeight; addChatbotMessage("Procesando..."); fetch('https://hook.eu2.make.com/1pt3d4gruv6iv3cb5nwdkt46a729banv', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ clave: make_id, conversacion: input }) }) .then(response => response.json()) .then(data => { console.log('✅ Datos enviados correctamente:', data); addChatbotMessage(data.respuesta); }) .catch(error => { console.error("❌ Ha habido un error al enviar la conversación a Make:", error); addChatbotMessage('❌ Ha habido un error enviando a Make. Inténtalo más tarde.'); }); } const messagesContainer = document.getElementById('chatbot-messages'); const welcomeMessage = document.getElementById('chatbot-welcome-message'); const inputField = document.getElementById('chatbot-input'); const sendButton = document.getElementById('chatbot-send'); const audio_button = document.getElementById('input_audio'); const sendConversationBtn = document.getElementById("send-conversation"); if (!sendConversationBtn) { console.error("❌ Error: El botón 'send-conversation' no existe en el HTML."); } else { console.log("✅ Botón 'send-conversation' encontrado correctamente."); // Verificar si el usuario está registrado en Avainza let usuarioRegistrado = chatbotData.user_id !== undefined && chatbotData.user_id !== null && chatbotData.user_id > 0; if (!usuarioRegistrado) { welcomeMessage.innerHTML = ` ¡Bienvenido al asistente virtual de Avainza! 👋 Actualmente puedes hacer preguntas generales, pero para acceder a funciones avanzadas como creación de emails, facturas y reuniones, debes iniciar sesión. ✨ `; sendConversationBtn.classList.add("boton-deshabilitado"); sendConversationBtn.addEventListener("click", function (event) { event.preventDefault(); // Evita cualquier acción predeterminada addChatbotMessage("⚠️ Para enviar la conversación, primero debes iniciar sesión en Avainza."); }); } else { console.log("✅ Usuario registrado: habilitando botón."); // Quitamos la clase deshabilitada y aseguramos que el botón esté activo sendConversationBtn.classList.remove("boton-deshabilitado"); sendConversationBtn.addEventListener("click", function () { if (!make_id) { console.error("❌ Error: make_id no está definido."); return; } let conversationText = chatbot_input.value.trim(); console.log("📌 Conversación final antes de enviar a Make:", conversationText); chatbot_input.value = ''; fetch('https://hook.eu2.make.com/1pt3d4gruv6iv3cb5nwdkt46a729banv', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ clave: make_id, conversacion: conversationText }) }) .then(response => response.json()) .then(data => { console.log('✅ Datos enviados correctamente:', data); addChatbotMessage(data.respuesta); }) .catch(error => { console.error("❌ Ha habido un error al enviar la conversación:", error); }); }); } } // Botón borrador_correo document.getElementById('borrador_correo').addEventListener('click', () => { addChatbotMessage( "¡Por supuesto! Indica aquí el destinatario y el tema, y yo lo crearé por ti. Si quieres, también puedes indicar detalles como el tono, la longitud..." ); showEmailForm() }); // Botón creador_factura document.getElementById('crear_factura').addEventListener('click', () => { addChatbotMessage( "¡Por supuesto! Por favor, apunta aquí los datos correspondientes, y yo la crearé por ti." ); showInvoiceForm(); }); // Botón resumir_reunion document.getElementById('resumir_reunion').addEventListener('click', () => { addChatbotMessage( "¡Por supuesto! Por favor, dime con quién quieres la reunión y si quieres incluir algún detalle para crearla." ); showAgendaForm(); }); //Botón para escuchar el micro e imprimir el audio audio_button.addEventListener('click', () => { ManageAudio(); }); // Mostrar formulario de correo function showEmailForm() { const formHTML = `
`; // messagesContainer.innerHTML += formHTML; addChatbotMessage(formHTML); const emailForm = document.getElementById('email-draft-form'); const recipientField = document.getElementById('email-recipient'); const subjectField = document.getElementById('email-subject'); const submitButton = document.getElementById('email-submit'); // Activar el botón Enviar solo si los campos obligatorios están llenos emailForm.addEventListener('input', () => { submitButton.disabled = !recipientField.value || !subjectField.value; }); // Manejar envío del formulario emailForm.addEventListener('submit', (e) => { e.preventDefault(); const recipient = recipientField.value; const subject = subjectField.value; const details = document.getElementById('email-details').value; sendEmailDraft({ recipient, subject, details, make_id }); }); } // Enviar datos a Make.com function sendEmailDraft(data) { let intencion = "borrador_correo"; const conversation = { destinatario: data.recipient, tema: data.subject, detalles: data.details }; fetch('https://hook.eu2.make.com/1pt3d4gruv6iv3cb5nwdkt46a729banv', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ clave: make_id, intencion: intencion, conversacion: conversation }) }) .then(addChatbotMessage("Procesando...")) .then(response => { return response.text() }) // Leer el cuerpo como texto .then(data => { // Convierte la respuesta en un objeto JavaScript const cleanedData = data.trim(); const jsonData = JSON.parse(cleanedData); console.log(jsonData.respuesta); console.log(jsonData); // Agregar mensaje al chatbot if (jsonData.estado == "ok") { addChatbotMessage("¡El borrador que encontrarás a continuación ha sido enviado a tu correo!"); } addChatbotMessage(jsonData.respuesta); // addChatbotMessage(`Aquí tienes el contenido del borrador:\n${respuesta}`); }) .catch(error => { console.error("Ha habido un error: " + error); addChatbotMessage('Ups, algo salió mal. Inténtalo de nuevo más tarde.'); }); } function mail_publi() { const formHTML = ` Cómo ahorrar 10 horas a la semana con soluciones de IA inteligentes