// Capturar la fecha y hora actual
// Función para agregar cero si es necesario
function agregarCeroSiEsNecesario(valor) {
if (valor < 10) {
return '0' + valor;
} else {
return valor.toString();
}
}
// Función para obtener la fecha y hora actual
function obtenerFechaHoraActual() {
var ahora = new Date();
var fechaHora = agregarCeroSiEsNecesario(ahora.getDate()) + '/' +
agregarCeroSiEsNecesario(ahora.getMonth() + 1) + ' ' +
agregarCeroSiEsNecesario(ahora.getHours()) + ':' +
agregarCeroSiEsNecesario(ahora.getMinutes());
return fechaHora;
}
$(document).ready(function() {
var temporizadorMensajeAutomatico;
function reiniciarTemporizadorMensajeAutomatico() {
clearTimeout(temporizadorMensajeAutomatico); // Limpia el temporizador anterior
temporizadorMensajeAutomatico = setTimeout(function() { // Establece un nuevo temporizador
var chatArea = $('#chatArea');
var mensajeAutomatico = '
DeclaraChat: Gracias por ingresar al DeclaraChat, que tenga buen día. ' + obtenerFechaHoraActual() + '
';
chatArea.append(mensajeAutomatico);
chatArea.scrollTop(chatArea.prop("scrollHeight"));
}, 60000); // 5 minutos = 300000 milisegundos
}
$('#chatForm').submit(function(e) {
e.preventDefault(); // Evita el envío tradicional del formulario
var mensaje = $('input[name="mensaje"]').val();
var chatArea = $('#chatArea');
if (mensaje.trim() === '') return; // No enviar mensajes vacíos
chatArea.append('Ciudadano: ' + mensaje + ' ' + obtenerFechaHoraActual() + '
'+ '
');
// AJAX para enviar el mensaje al servidor y recibir la respuesta
$.post("/preguntar", {mensaje: mensaje}, function(data) {
var chatArea = $('#chatArea');
var respuestaHtml = '';
var muestraAyudaHtml = true;
// Este mensaje se añadirá solo si la respuesta no incluye opciones
var ayudaHtml = function() {
return 'DeclaraChat: ¿En qué más te puedo ayudar?' + ' ' + obtenerFechaHoraActual() + '
';
};
if (data.esSaludoInicial) {
muestraAyudaHtml = false;
}
var muestraAyudaHtml = data.muestraAyudaHtml;
if (data.respuesta && data.respuesta.opciones) {
// Respuesta que contiene opciones, manejo especial sin mensaje adicional de ayuda
respuestaHtml += 'DeclaraChat:';
data.respuesta.opciones.forEach(function(opcion) {
respuestaHtml += '
' + opcion.texto +
'
' + opcion.detalles.join(" ") + '
';
});
respuestaHtml += '
';
chatArea.append(respuestaHtml);
} else {
// Caso para detalles, respuesta directa, o ninguna respuesta
if (data.respuesta && data.respuesta.detalles) {
data.respuesta.detalles.forEach(function(detalle) {
respuestaHtml += 'DeclaraChat: ' + detalle.texto + '
';
});
} else if (data.respuesta && data.respuesta.respuesta) {
respuestaHtml = 'DeclaraChat: ' + data.respuesta.respuesta + ' ' + obtenerFechaHoraActual() + '
';
if (data.respuesta.respuesta.includes("Dime, ¿en qué te puedo apoyar hoy?")) {
muestraAyudaHtml = false; // No mostrar mensaje de ayuda después de confirmación de nombre
}
} else if (data.respuesta && typeof data.respuesta === 'string') {
respuestaHtml = 'DeclaraChat: ' + data.respuesta + ' ' + obtenerFechaHoraActual() + '
';
} else {
respuestaHtml = 'DeclaraChat: Respuesta no disponible'+ ' ' + obtenerFechaHoraActual() + ''+'
';
}
// Añadir la respuesta al chatArea
chatArea.append(respuestaHtml);
if (muestraAyudaHtml) {
chatArea.append(ayudaHtml());
}
// Añadir el mensaje adicional de ayuda después de la respuesta principal, excepto en respuestas con opciones
}
chatArea.scrollTop(chatArea.prop("scrollHeight"));
$('input[name="mensaje"]').val(''); // Limpia el campo de entrada después de enviar
reiniciarTemporizadorMensajeAutomatico(); // Reinicia el temporizador de mensaje automático si lo tienes implementado
});
// Utilizar delegación de eventos para manejar clics en las opciones
$('#chatArea').on('click', '.opcion', function() {
if ($(this).closest('.opciones-container').hasClass('disabled')) return;
var indiceSeleccionado = $(this).data('index');
var detallesTexto = $(this).find('.detalles').text();
var detallesPuntos = detallesTexto.split(/\. |\: |\" /);
var primerElementoHtml = ''; // Inicializa el HTML del primer elemento
var detallesItemsHtml = detallesPuntos.map(function(punto, index) {
punto = punto.trim();
if (!punto) return ''; // Ignora elementos vacíos
// Maneja el primer elemento por separado
if (index === 0) {
primerElementoHtml = '' + punto + '
';
return '';
} else {
// A partir del segundo elemento, crea la lista
return '' + punto + '';
}
}).join('');
// Envuelve los elementos de la lista con indentación
var detallesListaHtml = detallesItemsHtml ? '' + detallesItemsHtml + '
' : '';
// Combina el primer elemento sin indentación con la lista con indentación
var detallesHtml = 'Declara Chat:
' + primerElementoHtml + detallesListaHtml + ' ' + obtenerFechaHoraActual() + '' + '
' ;
$('#chatArea').append(detallesHtml);
var ayudaHtml = 'Declara Chat: ¿Te puedo ayudar con algo más? ' + ' ' + obtenerFechaHoraActual() + '
';
$('#chatArea').append(ayudaHtml);
$('#chatArea').scrollTop($('#chatArea').prop("scrollHeight"));
$(this).closest('.opciones-container').addClass('disabled').find('.opcion').off('click').css('opacity', '0.5');
});
// Limpiar el campo de entrada después de enviar
$('input[name="mensaje"]').val('');
reiniciarTemporizadorMensajeAutomatico();
});
var mensajeBienvenidaMostrado = false;
$('#toggleChat').click(function() {
$('#chatBox').show(); // Muestra el chat
$(this).hide(); // Oculta el botón de abrir chat
// Solo realiza la petición y muestra el mensaje de bienvenida si no se ha mostrado antes
if (!mensajeBienvenidaMostrado) {
$.get("/check_name", function(data) {
var chatArea = $('#chatArea');
if (data.nombre) {
var mensajeConNombre = '' +
'
¡Hola ' + data.nombre + ' 😃!, soy DeclaraChat, tu asistente virtual de DeclaraNet Chihuahua
' +
'
Quiero recordarte que ni yo ni nadie del equipo de la Secretaría de la Función Pública del Estado de Chihuahua te solicitará ningún tipo de información personal sensible mediante correo o liga que lleve a nuestra página de internet. Por tu seguridad NO la compartas
' +
'
Estos son algunos de los temas con los que puedo ayudarte:
' +
'
' +
'- Revisión de declaraciones
' +
'- Contraseña
' +
'- CURP
' +
'- Formatos
' +
'- Normatividad aplicable
' +
'- Cambios o corrección de correo electrónico ¡y mucho más!
' +
'
' +
'
Dime, ' + data.nombre + ' ¿En qué te puedo apoyar hoy?
' + '
' + obtenerFechaHoraActual() + ''
'
';
chatArea.append(mensajeConNombre);
} else {
var mensajeInicial = '' +
'
¡Hola 😃!, soy DeclaraChat, tu asistente virtual de DeclaraNet Chihuahua
' +
'
Quiero recordarte que ni yo ni nadie del equipo de la Secretaría de la Función Pública del Estado de Chihuahua te solicitará ningún tipo de información personal sensible mediante correo o liga que lleve a nuestra página de internet. Por tu seguridad NO la compartas
' +
'
Estos son algunos de los temas con los que puedo ayudarte:
' +
'
' +
'- Revisión de declaraciones
' +
'- Contraseña
' +
'- CURP
' +
'- Formatos
' +
'- Normatividad aplicable
' +
'- Cambios o corrección de correo electrónico ¡y mucho más!
' +
'
' +
'
Dime, ¿Cual es tu nombre?
' + '
' + obtenerFechaHoraActual() + ''
'
' ;
chatArea.append(mensajeInicial);
}
chatArea.scrollTop(chatArea.prop("scrollHeight"));
mensajeBienvenidaMostrado = true; // Marca que el mensaje ya se mostró
});
}
reiniciarTemporizadorMensajeAutomatico();
});
$('#closeChat').click(function() {
$('#chatBox').hide(); // Oculta el chat
$('#toggleChat').show(); // Muestra el botón de abrir chat
});
// Cierra el chat al hacer clic fuera de él
$(document).mouseup(function(e) {
var container = $("#chatBox");
// Si el objetivo del clic no es el contenedor ni un descendiente del contenedor
if (!container.is(e.target) && container.has(e.target).length === 0) {
container.hide(); // Oculta el chat
$('#toggleChat').show(); // Muestra el botón de abrir chat
}
});
});
let mensaje = document.querySelector('.chat-container');
mensaje.addEventListener('mouseenter', function() {
document.body.classList.add('no-scroll');
});
mensaje.addEventListener('mouseleave', function() {
document.body.classList.remove('no-scroll');
});