Primeros pasos
¿Qué es AI Chat Widget?
AI Chat Widget es un asistente de chat que se ejecuta en su propio servidor y se coloca en cualquier sitio web con una sola línea de código. Responde a las preguntas de los visitantes con el proveedor de IA que usted elija, a partir de los datos que le proporcione, y puede recoger solicitudes de contacto cuando no pueda ayudar.
Todo reside en su alojamiento: el panel de administración, las conversaciones, la base de conocimiento y sus claves de IA. No se envía nada a nosotros. El único tráfico externo es el que circula entre su servidor y el servicio de IA que elija, y entre el navegador del visitante y su servidor.
Qué puede hacer con él
- Conectar cualquier proveedor de IA: OpenAI, Anthropic, Google Gemini, Mistral, Groq, Perplexity, OpenRouter, xAI, Together AI, Azure OpenAI, Cohere, LM Studio, Ollama, o cualquier servicio que usted mismo describa en unos pocos campos.
- Crear varios bots, cada uno con su propio tema, apariencia, textos, reglas y lista de sitios web.
- Entrenar a un bot con una base de conocimiento: texto pegado, listas de preguntas y respuestas, archivos TXT, Markdown, CSV, HTML, PDF y Word, páginas web y mapas del sitio completos.
- Permitir que los visitantes dejen sus datos de contacto cuando el bot no pueda responder, y recibir un correo por cada solicitud.
- Leer y exportar conversaciones, valorar respuestas y consultar las estadísticas para saber qué preguntan realmente los visitantes.
- Proteger todo con inicio de sesión en dos pasos, un registro de auditoría completo, listas de acceso por sitio web, límites de frecuencia y presupuestos diarios de tokens.
- Trabajar en seis idiomas: inglés, polaco, alemán, francés, italiano y español, tanto en el panel como en el widget.

Cómo funciona
Cuatro elementos básicos, que se configuran en este orden: un proveedor, un bot, el código de incrustación y, después, lo que los visitantes dicen en realidad.
- 1Proveedor de IA. Una conexión guardada con un servicio de IA: su dirección, cómo iniciar sesión (su clave API) y cómo leer su respuesta. Los perfiles integrados cubren los servicios más populares; también puede añadir los suyos.
- 2Bot. Un asistente de chat. Tiene un proveedor y un modelo, una descripción de su función (tema, ámbito, tono), una apariencia, textos y reglas. Puede ejecutar tantos bots como permita su licencia, para distintos sitios web o finalidades.
- 3Código de incrustación. Una única línea
<script>que coloca el chat en una página (o un pequeño plugin de WordPress que lo hace por usted). - 4Conversaciones. Cada mensaje del visitante llega primero a su servidor. Su servidor comprueba las reglas, elabora las instrucciones para la IA, consulta al proveedor y devuelve la respuesta. La clave de IA nunca llega al navegador del visitante.
Qué ocurre cuando un visitante envía un mensaje
- 1El widget envía el mensaje a
api.phpen su servidor. - 2El servidor comprueba que el sitio web figura en la lista de sitios permitidos del bot y aplica el límite de frecuencia, las palabras bloqueadas y el presupuesto diario de tokens.
- 3Busca fragmentos coincidentes en la base de conocimiento (si el bot la usa) y elabora las instrucciones: tema, ámbito, tono, información del negocio, fragmentos y las reglas de seguridad siempre activas.
- 4Consulta al proveedor de IA (y a un proveedor de reserva si el primero falla).
- 5Almacena el intercambio según el modo de registro del bot y devuelve la respuesta, con enlaces a las fuentes cuando el modelo los proporciona.
Requisitos del sistema
| Requisito | Detalles |
|---|---|
| PHP | 8.1 o superior |
| Extensiones de PHP necesarias | pdo_mysql, openssl, mbstring |
| Muy recomendadas | curl (llamadas a proveedores de IA e importación de páginas web), sodium (verificación de la licencia), dom y libxml (lectura de páginas web y archivos Word), zlib e iconv (archivos PDF) |
| Opcional | zip (plugin de WordPress como archivo .zip; sin ella, los archivos Word se leen con un lector integrado) |
| Base de datos | MySQL 5.7+ o MariaDB 10.3+ (la base de conocimiento usa el índice de texto completo de InnoDB) |
| Servidor web | Apache 2.4 (las reglas de acceso se incluyen como .htaccess) o Nginx (consulte Mantenimiento para las reglas equivalentes) |
| Navegador para el panel | Cualquier versión actual de Chrome, Edge, Firefox o Safari |
| Conexiones salientes | HTTPS hacia su(s) proveedor(es) de IA; SMTP hacia su servidor de correo si usa las funciones de correo |
Instalación
La instalación lleva unos minutos y funciona en un alojamiento compartido normal, en un VPS o en un servidor dedicado. No se necesita Composer ni línea de comandos en el servidor.
- 1Copie los archivos. Suba la carpeta completa
ai-chat-widgeta la raíz web o a cualquier subcarpeta. La dirección se detecta automáticamente, por lo que el nombre de la carpeta no importa. - 2Cree una base de datos MySQL vacía en el panel de control de su alojamiento (por ejemplo cPanel o DirectAdmin: «Bases de datos MySQL»), junto con un usuario de la base de datos con todos los permisos sobre ella. Anote el host (a menudo
localhost), el nombre de la base, el usuario y la contraseña; los introducirá en el instalador. - 3Abra el instalador. Vaya a
https://your-site/ai-chat-widget/install/y elija el idioma del instalador (inglés, polaco, alemán, francés, italiano o español). - 4Rellene el formulario. Host, nombre, usuario y contraseña de la base de datos, un prefijo de tablas (el valor predeterminado
acw_es adecuado) y su primer administrador: nombre, correo y una contraseña de al menos 12 caracteres. - 5Finalice. El instalador crea las tablas, escribe
config/config.phpy un archivo de bloqueo, y muestra un enlace a la página de inicio de sesión. - 6**Elimine la carpeta
install/** del servidor cuando se le solicite.

config/config.php.** Contiene la clave de la aplicación que cifra sus claves de IA, la contraseña SMTP y los secretos de la autenticación en dos pasos. Con una copia de la base de datos pero sin este archivo, esos valores no se pueden volver a leer. Guarde una copia en un lugar seguro, fuera de la raíz web.Actualización
Suba los archivos nuevos sobre los antiguos (conserve config/ y storage/), inicie sesión y abra Información del sistema. Si la base de datos necesita cambios, la página los enumera; pulse Aplicar actualizaciones una sola vez. Consulte "Mantenimiento" para conocer el procedimiento completo.
Primer inicio de sesión y el panel
Inicie sesión con el correo y la contraseña que estableció durante la instalación. El panel recuerda su idioma y funciona igual en un teléfono.
El menú izquierdo está agrupado por tareas:
| Grupo | Entradas |
|---|---|
| Panel | Resumen y comprobaciones rápidas |
| Configuración | Bots, Proveedores de IA, Base de conocimiento |
| Conversaciones | Conversaciones, Solicitudes de contacto, Estadísticas |
| Administración | Usuarios, Ajustes, Registro de auditoría, Información del sistema, Acerca de |
El panel muestra su plan de licencia, si el inicio de sesión en dos pasos está activado, cuántos usuarios y bots tiene, y advertencias: actualizaciones pendientes de la base de datos, una extensión de PHP que falta o avisos de "2FA obligatoria". La barra superior contiene su menú de perfil (perfil, autenticación en dos pasos, cerrar sesión); la flecha situada al final del menú lo contrae a iconos.
Los pequeños iconos "?"
Cada campo de formulario tiene un icono "?" que abre una breve explicación. Se pueden desactivar para todos en Ajustes > General o solo para usted en Mi perfil.
Inicio rápido: su primer bot en 8 pasos
De una instalación vacía a un chat en su página, paso a paso.
- 1Añada un proveedor de IA. Vaya a Proveedores de IA, abra un perfil ya preparado (por ejemplo, OpenAI) y pegue su clave API. El enlace "Obtener una clave API" situado bajo el campo abre la página del proveedor donde se crea la clave.
- 2Pruebe la conexión. En el mismo editor pulse Obtener modelos y utilice después la consola de prueba: elija un modelo, envíe un mensaje y compruebe que llega una respuesta. Corrija aquí la clave antes de crear un bot.
- 3Cree un bot. Vaya a Bots > Añadir bot. Póngale nombre, elija el proveedor y el modelo y, en la pestaña Tema y prompt, describa de qué debe hablar: su negocio, el tono y lo que no debe responder.
- 4Defina la apariencia y los textos. Pestañas Apariencia, Comportamiento, Textos y Marca: colores, posición, saludo y preguntas sugeridas. La pestaña Chat de prueba y "Vista previa del prompt final" le permiten conversar con el bot directamente en el panel.
- 5Permita su sitio web. En la pestaña Seguridad, añada su sitio a Sitios permitidos (por ejemplo,
example.como*.example.com). El chat solo se carga en los sitios que figuren en la lista. - 6Incruste el chat. Abra la pestaña Incrustar, copie el script de una línea y péguelo antes de
</body>en sus páginas. En WordPress, descargue en su lugar el pequeño plugin desde la misma pestaña. - 7Opcional: añada conocimiento y solicitudes de contacto. Añada documentos en Base de conocimiento o active Solicitudes de contacto en el bot (configure antes Ajustes > Correo).
- 8Observe y ajuste. Converse con el bot en su página. Más adelante revise Conversaciones y Estadísticas, decida qué se almacena (pestaña Privacidad) y mejore el prompt allí donde las respuestas no fueron útiles.
Guía de uso
Proveedores de IA
Un perfil de proveedor indica a la aplicación cómo comunicarse con un servicio de IA. Los perfiles son datos, no código, por lo que puede añadir un servicio nuevo o poco habitual sin esperar a una actualización.

Perfiles integrados
OpenAI, Anthropic (Claude), Google Gemini, Mistral, Groq, Perplexity, OpenRouter, xAI (Grok), Together AI, Azure OpenAI, Cohere, LM Studio y Ollama (ambos locales), además de un perfil genérico compatible con OpenAI que puede apuntar a cualquier servidor compatible. Todos están listos para usar: ábralo, pegue la clave y guarde.
Cómo añadir su clave
Abra un proveedor y rellene Clave API. La clave se almacena cifrada y no se vuelve a mostrar (solo los últimos cuatro caracteres). Un mensaje verde confirma que la clave está guardada; deje el campo vacío en ediciones posteriores para conservarla. El enlace Obtener una clave API situado junto al campo lleva a la página donde el proveedor emite las claves.

La consola de prueba
Bajo el formulario, la consola envía un mensaje real con el perfil tal como se está editando, esté guardado o no. Muestra la respuesta, el tiempo, el número de tokens y, si algo falla, la solicitud y la respuesta exactas (con su clave oculta). Úsela siempre que modifique un perfil.
Edición de un perfil
{{model}} (Google Gemini coloca el modelo en la dirección).{{model}}, {{messages}}, {{system}}, {{prompt}}, {{max_tokens}}, {{temperature}} y {{top_p}} se rellenan en cada llamada. Los valores opcionales vacíos pueden omitirse automáticamente.choices.0.message.content. * recoge todos los elementos de una lista.id | etiqueta). Obtener modelos la lee en directo desde el proveedor.Cómo añadir un servicio que no figura en la lista
Duplique el perfil compatible con OpenAI (muchos servicios hablan ese protocolo) o parta de un perfil similar y cambie la dirección, las cabeceras y las rutas. La consola de prueba le indica qué corregir. Los perfiles pueden exportarse e importarse como archivos JSON, de modo que puede compartir uno que funcione.
Seguridad integrada
Cada llamada pasa por una comprobación de dirección que bloquea las redes privadas, las direcciones de enlace local y las de metadatos de la nube (salvo que permita las redes privadas para ese perfil), rechaza las redirecciones, limita el tamaño de la respuesta y el tiempo, y nunca escribe su clave en los registros ni en los mensajes de error.
Bots
Un bot es un asistente de chat. Su editor tiene pestañas y cada campo tiene un icono de ayuda "?". Guarde una sola vez al final; los cambios sin guardar se señalan si abandona la página.


General
Tema y prompt
Usted rellena un formulario en lugar de escribir un prompt. La aplicación elabora un conjunto de instrucciones probado en torno a sus textos y añade siempre reglas de seguridad que no se pueden quitar.
{{site_name}}, {{current_date}} y {{page_title}}.Vista previa del prompt final muestra exactamente lo que recibirá el modelo, incluidas las reglas de seguridad.
Modelo
Apariencia
Color principal (el color del texto se adapta automáticamente), tema claro, oscuro o automático, posición (izquierda o derecha), distancias al borde, tamaño de la ventana, redondeo de las esquinas, icono y etiqueta del botón, imagen del avatar y, para usuarios avanzados, CSS personalizado que se aplica solo dentro de la ventana del chat (licencias de pago).
Comportamiento
Solicitudes de contacto
Consulte el capítulo "Solicitudes de contacto".
Dónde y cuándo
Mostrar el chat en todas las páginas, solo en las que coincidan con unos patrones, o en todas excepto ellas (los patrones usan *); en todos los dispositivos, solo en ordenador o solo en móvil; solo en horario de atención, con un mensaje o sin nada fuera de él. Licencias de pago.
Textos
Por idioma: título de la ventana, saludo, texto de ayuda del campo de entrada, preguntas sugeridas (hasta cinco botones), aviso de IA, mensajes de error y de desconexión, etiqueta del botón de envío, y la introducción y el agradecimiento del formulario de contacto. Los campos vacíos usan traducciones integradas, de modo que el widget habla el idioma del visitante aunque usted no escriba nada.
Seguridad
example.com o *.example.com). Las solicitudes de cualquier otro sitio se rechazan, lo que impide que otros usen su bot y su crédito de IA.Privacidad
Marca
La pequeña línea "Powered by" al pie del chat. Siempre está activa con la licencia Free; Single y Agency pueden ocultarla; Agency puede sustituir su texto y su enlace (marca blanca).
Incrustar y Chat de prueba
La pestaña Incrustar contiene el script, el plugin de WordPress y una página de prueba lista para usar. Chat de prueba conversa con el bot dentro del panel sin almacenar nada.
Cómo colocar el chat en su sitio web
Una línea de código o un pequeño plugin. El widget se dibuja dentro de un Shadow DOM, de modo que los estilos de su sitio no pueden estropearlo y él no puede estropear su sitio.
Cualquier sitio web
Abra su bot, la pestaña Incrustar, copie el script y péguelo justo antes de la etiqueta de cierre </body> en todas las páginas donde deba aparecer el chat:
<script src="https://your-site/ai-chat-widget/assets/widget/loader.js"
data-bot="YOUR-BOT-ID" async></script>Después, añada su sitio web en Seguridad > Sitios permitidos; de lo contrario, el chat no se cargará allí.
WordPress
La pestaña Incrustar ofrece un pequeño plugin (un .zip, o un único archivo .php si el servidor no tiene la extensión zip). Súbalo en Plugins > Añadir nuevo > Subir plugin, actívelo y el chat aparecerá en todas las páginas. El plugin solo añade la línea de script con el ID de su bot; el chat, las claves de IA y las conversaciones permanecen en su instalación.
Atributos opcionales del script
| Atributo | Significado |
|---|---|
data-context-title | El título de la página que se envía al bot (por defecto, el título del documento). |
data-context-url | La dirección de la página que se envía al bot (por defecto, la dirección actual). |
data-lang | Fuerza el idioma del widget (por defecto, el idioma de la página o el del navegador del visitante). |
data-api | Dirección de api.php, si su instalación está en otra ruta. |
Control del chat desde su página
AIChatWidget.open(); // open the window
AIChatWidget.close(); // close it
AIChatWidget.toggle(); // open or close
AIChatWidget.setContext({ title: 'Red city bike', url: location.href });Úselos para abrir el chat desde su propio botón o para indicar al bot qué producto está viendo el visitante.
Lo que ven los visitantes
Un botón redondo en la esquina; una ventana con una cabecera (título, botón de contacto cuando está activado, reiniciar, cerrar), la conversación con formato Markdown, botones de preguntas sugeridas, pulgares, enlaces a fuentes, el aviso de IA y un cuadro de entrada. En los teléfonos, la ventana ocupa toda la pantalla. La conversación se conserva al recargar la página dentro de la sesión del navegador.

Base de conocimiento
La base de conocimiento contiene los datos a partir de los cuales responden sus bots: precios, políticas, preguntas frecuentes, detalles de productos. Cuando un visitante pregunta algo, el bot busca los fragmentos que mejor coinciden y responde a partir de ellos en lugar de adivinar.

Formas de añadir contenido
# o está escrita en mayúsculas se trata como un encabezado que permanece unido al texto que le sigue.Q: ... y A: ... (también Pytanie/Odpowiedź, Frage/Antwort, Question/Réponse, Domanda/Risposta, Pregunta/Respuesta). Cada par permanece unido, lo que da los mejores resultados.
Qué bot usa un documento
Cada documento pertenece a un bot o a todos los bots. Use "todos los bots" para los datos de toda la empresa, como envíos y devoluciones. Un documento puede desactivarse sin eliminarlo. Las páginas importadas pueden volver a leerse con un clic para actualizarlas.
Cómo lo usa un bot
En la pestaña Tema y prompt del bot, elija el modo:
- Usarla y recurrir al conocimiento general (predeterminado). Los fragmentos coincidentes se añaden a las instrucciones. El bot puede seguir usando su conocimiento general cuando los fragmentos no dicen nada.
- Responder solo con la base de conocimiento. Cuando nada coincide, no se consulta a la IA en absoluto: el bot responde con su texto de "cuando no puede responder", lo que no consume tokens, evita respuestas inventadas y marca la pregunta como sin respuesta.
- No usarla.
Una continuación muy breve como "¿y la garantía?" se busca junto con la pregunta anterior. Los documentos procedentes de una dirección web añaden un enlace a la fuente bajo la respuesta.
Búsqueda
La búsqueda no necesita ningún servicio externo. El texto se divide en fragmentos; las palabras se reducen a su raíz (los acentos y las terminaciones no importan), el índice de texto completo de la base de datos selecciona candidatos y una clasificación de relevancia (BM25) elige los mejores. Funciona en los seis idiomas del panel. Una pregunta en un idioma distinto al del documento no coincidirá: escriba sus documentos en el idioma que usan sus visitantes.
Probar una búsqueda
El cuadro Probar una búsqueda de la página Base de conocimiento muestra qué fragmentos recibiría un bot para una pregunta, con una puntuación de relevancia. Úselo después de añadir documentos.
Cerrar el círculo
En Estadísticas, cada pregunta sin respuesta tiene un enlace Añadir una respuesta a la base de conocimiento. Abre un formulario de pregunta y respuesta con la pregunta y el bot ya rellenados. Escriba la respuesta y guarde: la próxima vez el bot la sabrá.
Límites
| Plan | Documentos | Tamaño total |
|---|---|---|
| Free | 5 | 100 KB |
| Single | 100 | 2 MB |
| Agency | Ilimitados | Ilimitado |
Solicitudes de contacto
Cuando el bot no puede ayudar, el visitante puede dejar sus datos en lugar de abandonar el sitio. Usted recibe un correo por cada solicitud y una lista en el panel.

Cómo activarlo
- 1Configure el correo saliente en Ajustes > Correo y envíe el mensaje de prueba.
- 2Abra el bot, pestaña Solicitudes de contacto, y marque Recopilar solicitudes de contacto.
- 3Elija cuándo se ofrece el formulario: un botón en la cabecera del chat y/o justo después de una respuesta que el bot no pudo dar.
- 4Elija qué campos aparecen (nombre, teléfono, mensaje: oculto, opcional u obligatorio; el correo siempre es obligatorio), si se solicita el consentimiento y a quién se avisa.
Gestión de las solicitudes

La página Solicitudes de contacto enumera todas las solicitudes con filtros (búsqueda, bot, estado). Abra una para ver el mensaje, la página en la que estaba el visitante y la conversación de la que procede. Marque las solicitudes como atendidas, elimínelas una a una o en bloque y expórtelas a CSV (licencias de pago). Los filtros activos se resaltan y se cuentan junto a "Restablecer filtros".
Protección
El formulario funciona incluso fuera del horario de atención. Incluye un campo trampa oculto para bots, un límite de seis solicitudes por visitante y tres por dirección de correo por hora, y valida todos los campos en el servidor.
Conversaciones
Lea lo que han preguntado los visitantes, marque lo importante y mantenga la base de datos ordenada sin ninguna tarea programada.

La lista
Filtre por bot, intervalo de fechas, texto de búsqueda y vista: todas, fijadas, sin respuesta, valoradas como no útiles o con errores. Cada fila muestra señales: valoraciones, «sin respuesta» y errores del proveedor. Abra una conversación para leer el intercambio completo con los tokens, el tiempo de respuesta y los indicadores.

Acciones
Fije las conversaciones que desee conservar, elimine una o varias, o elimine todo lo de un bot. Exportar (CSV o JSON, licencias de pago) respeta sus filtros; las celdas CSV que podrían ejecutarse como fórmulas de una hoja de cálculo se neutralizan.
Modos de registro
Lo que se guarda depende del ajuste Registro de conversaciones de cada bot: textos completos, solo metadatos (recuentos, tiempos, valoraciones) o nada. Con «metadatos» o «desactivado», el navegador del visitante conserva el historial durante la sesión.
Limpieza automática
Las conversaciones antiguas se eliminan según reglas: por antigüedad, por número y por tamaño, para cada bot (reglas propias o las predeterminadas) y para toda la base de datos (número total y tamaño total). Las conversaciones fijadas nunca se eliminan automáticamente. No hay cron: la limpieza se ejecuta sola cuando se usa la aplicación, como máximo una vez por minuto. Limpiar ahora muestra primero una vista previa (cuántas conversaciones, cuántos kilobytes y por qué) y pide confirmación.
Estadísticas
Los contadores se guardan como totales diarios anónimos, de modo que las estadísticas funcionan incluso con bots que no almacenan conversaciones.

Los recuadros muestran respuestas, tokens, errores, preguntas sin respuesta, mensajes bloqueados y valoraciones. Tres gráficos muestran respuestas, tokens y problemas por día. Una tabla compara sus bots. Con una licencia de pago, dos listas muestran las últimas preguntas que el bot no pudo responder (cada una con un enlace para añadir una respuesta a la base de conocimiento) y las respuestas valoradas como no útiles: la forma más rápida de mejorar un bot.
Ajustes
Opciones de toda la aplicación, organizadas en pestañas.
Streaming de respuestas
Con el streaming activado, los visitantes ven aparecer la respuesta palabra por palabra. Requiere un servidor que no retenga las respuestas, así que pulse primero Probar el streaming: envía seis fragmentos con medio segundo de separación e indica si llegan uno a uno. Si la prueba indica que todo llegó de una vez, mantenga el streaming desactivado. Los proveedores que no admiten streaming entregan simplemente la respuesta completa de una vez.
Correo y notificaciones
El correo saliente se utiliza para restablecer la contraseña, los códigos de inicio de sesión y los avisos de nuevas solicitudes de contacto. Es opcional; todo lo demás funciona sin él.

Configuración
smtp.example.com, 587 con STARTTLS o 465 con SSL/TLS.Pulse Guardar y enviar correo de prueba. Si el mensaje llega, todo funciona.
Textos de correo

En Ajustes > Textos de correo elija un correo (restablecimiento de contraseña, contraseña cambiada, código de inicio de sesión, nueva solicitud de contacto, confirmación al visitante, prueba) y un idioma, y edite después el asunto y el texto. Los marcadores {placeholders} como {name}, {link} o {code} se sustituyen al enviar el correo. Restaurar el texto integrado vuelve al texto predeterminado. Los correos dirigidos a personas se redactan en el idioma que hayan elegido en su perfil.
Cuentas, autenticación en dos pasos y registro de auditoría
Cada usuario es administrador; no hay roles que configurar. El acceso está protegido por contraseñas, autenticación en dos pasos opcional y un registro de auditoría completo.
Usuarios
En Usuarios puede añadir o eliminar administradores (el número depende de su licencia), restablecer la autenticación en dos pasos de un compañero que haya perdido su dispositivo y ver quién ha iniciado sesión y cuándo.
Autenticación en dos pasos

Abra Mi perfil > Autenticación en dos pasos y elija una:
- Aplicación de autenticación. Escanee o escriba la clave en una aplicación como Google Authenticator, Microsoft Authenticator o Aegis y, después, introduzca el código de 6 dígitos para confirmar.
- Código por correo. En cada inicio de sesión se envía por correo un código de 6 dígitos (válido diez minutos, cinco intentos). Requiere que el correo saliente funcione. Para confirmar, introduzca un código enviado a su dirección.
En ambos casos recibirá una sola vez los códigos de recuperación. Guárdelos en un lugar seguro: cada uno funciona una sola vez si no puede usar el segundo paso habitual. Ajustes > General > Exigir autenticación en dos pasos lo hace obligatorio para todos.
Contraseña olvidada
Cuando el correo saliente está configurado, la página de inicio de sesión muestra ¿Ha olvidado su contraseña?. Se envía por correo un enlace de un solo uso válido durante 60 minutos; se muestra la misma respuesta exista o no la dirección. Al establecer una nueva contraseña se levanta el bloqueo de la cuenta y se envía un aviso. Sin correo, otro administrador establece una nueva contraseña por usted en Usuarios.
Bloqueos y límites
Cinco contraseñas incorrectas bloquean una cuenta durante 15 minutos; los demasiados fallos desde una misma dirección se limitan. Las sesiones caducan transcurrido el tiempo definido en Ajustes.
Registro de auditoría

Se registra cada acción importante: inicios de sesión y fallos, cambios de ajustes, cambios de claves y de licencia, cambios de usuarios, exportaciones y eliminaciones. El registro nunca almacena contraseñas, claves ni textos de mensajes. Las entradas antiguas se eliminan transcurrido el número de días definido en Ajustes.
Información del sistema, actualizaciones y datos de demostración
Detalles técnicos y las herramientas de un clic.

Información del sistema muestra las versiones de la aplicación y de PHP, la base de datos, las extensiones de PHP cargadas, los permisos de archivos y la lista de actualizaciones de la base de datos (migraciones). Cuando una nueva versión trae cambios en la base de datos, el panel muestra un aviso; abra Información del sistema y pulse Aplicar actualizaciones. Las actualizaciones están numeradas, se ejecutan una sola vez y se pueden repetir sin riesgo.
Datos de demostración
Ajustes > Datos de demostración carga cuatro bots de ejemplo (tienda de bicicletas, FAQ de un bufete de abogados, asistente de ventas SaaS, selección de personal) con unas cien conversaciones repartidas en seis meses, algunas fijadas y valoradas, preguntas sin respuesta, solicitudes de contacto y documentos de conocimiento. La limpieza automática se pausa mientras estén cargados (de lo contrario, las conversaciones deliberadamente antiguas desaparecerían). Eliminar datos de demostración borra exactamente los bots de demostración y sus datos, y restaura su ajuste de limpieza anterior.
Licencias
La aplicación es gratuita para uso propio. Las licencias de pago son para uso comercial y eliminan los límites.
| Free | Single | Agency | |
|---|---|---|---|
| Uso | Uso propio | Comercial, un dominio de instalación | Comercial, varios dominios |
| Bots | 2 | 10 | Ilimitados |
| Sitios permitidos (todos los bots) | 2 | 10 | Ilimitados |
| Administradores | 1 | 5 | Ilimitados |
| Base de conocimiento | 5 documentos, 100 KB | 100 documentos, 2 MB | Ilimitada |
| Línea «Powered by» | Siempre visible | Se puede ocultar | Se puede ocultar y sustituir (marca blanca) |
| Proveedor de reserva | - | Sí | Sí |
| Segmentación, horario de atención, apertura automática, CSS personalizado | - | Sí | Sí |
| Listas de estadísticas (sin respuesta, no útiles) | Solo recuentos | Sí | Sí |
| Exportación de conversaciones y solicitudes de contacto | - | Sí | Sí |
| Correo de confirmación al visitante | - | Sí | Sí |
Activar una clave
Vaya a Ajustes > Licencia, pegue la clave y guarde. La clave se verifica en su servidor con una clave pública integrada y está vinculada a su dominio: no se envía ningún dato a ninguna parte. Si la clave no coincide con el dominio o ha caducado, la aplicación se mantiene en Free; los widgets en funcionamiento nunca se desactivan, solo se limita la creación de elementos nuevos.
Funciones de un vistazo
Muchos bots
Distintos temas, aspectos, textos, reglas y listas de sitios web, cada uno con su propio proveedor y modelo.
Cualquier proveedor de IA
Catorce perfiles listos para usar más los suyos propios, configurados a partir de datos, probados en vivo, con un proveedor de reserva.
Base de conocimiento
Texto, P y R, TXT, MD, CSV, HTML, PDF, DOCX, páginas web y sitemaps, con búsqueda sin servicios adicionales.
Solicitudes de contacto
Un formulario en el chat, avisos por correo, una lista con exportación y eliminación automática.
Conversaciones
Búsqueda, filtros, fijado, valoraciones, exportación y limpieza por antigüedad, número y tamaño.
Estadísticas
Totales diarios, gráficos, preguntas sin respuesta y respuestas no útiles, con correcciones de un clic.
Streaming
Respuestas opcionales palabra por palabra, con una prueba integrada de su servidor.
Seis idiomas
Inglés, polaco, alemán, francés, italiano y español, en el panel y en el widget.
Seguro por diseño
Autenticación en dos pasos, protección CSRF, claves cifradas, registro de auditoría, listas de acceso de sitios web, límites y presupuestos.
Correo
Restablecimiento de contraseña, códigos de inicio de sesión por correo y avisos con textos editables en cada idioma.
WordPress y cualquier sitio
Una línea de script o un pequeño plugin, con un widget en Shadow DOM que nunca choca con sus estilos.
Opciones de privacidad
Registro completo, solo metadatos o ninguno, IP abreviadas, aviso de IA, casilla de consentimiento y reglas de conservación.
Referencia
Para desarrolladores: la API del widget
El widget se comunica con api.php en su servidor. No hay cookies ni sesiones: un visitante es un token aleatorio guardado en el navegador.
| Solicitud | Finalidad |
|---|---|
GET api.php?a=config&bot=ID&lang=xx | Configuración y textos del widget en el idioma del visitante. |
POST api.php?a=message&bot=ID | Un mensaje del visitante (cuerpo JSON). Añada &stream=1 para eventos enviados por el servidor cuando el streaming está activado. |
POST api.php?a=rate&bot=ID | Pulgar arriba o abajo para una respuesta (referencia firmada). |
POST api.php?a=lead&bot=ID | Una solicitud de contacto (cuerpo JSON). |
GET api.php?a=test&bot=ID | Una pequeña página de prueba con el widget. |
Cada solicitud debe proceder de un sitio permitido (la cabecera Origin se comprueba con la lista del bot). Las respuestas son JSON con ok y, en caso de error, un código error y un message traducido. Las respuestas en streaming usan los eventos delta (un fragmento de texto), done (respuesta final, conversación, firma, fuentes) y error.
AIChatWidget.Privacidad y notas sobre el RGPD
Usted decide qué se almacena. Estos ajustes le ayudan a cumplir sus obligaciones; no constituyen asesoramiento jurídico.
- Modo de registro por bot. Completo, solo metadatos o desactivado. Elija lo que realmente necesite.
- Direcciones IP. Se guardan abreviadas (sin la última parte) o no se guardan.
- Conservación. Elimine conversaciones por antigüedad, número o tamaño, y las solicitudes de contacto pasado un número de días. Ambas tareas se ejecutan automáticamente.
- Eliminación a petición. Elimine las conversaciones de una persona desde la lista (busque el texto) y su solicitud de contacto desde Solicitudes de contacto.
- Aviso de IA. Una frase breve en el chat que indica al visitante que habla con una IA; enlaza con su política de privacidad.
- Consentimiento. Una casilla obligatoria en el formulario de contacto.
- Datos en tránsito. Los mensajes se envían al proveedor de IA que haya elegido. Consulte sus condiciones y su acuerdo de tratamiento de datos, y menciónelo en su política de privacidad. Elija un proveedor o un modelo acorde con sus obligaciones, o un modelo local (Ollama, LM Studio) si los datos no deben salir de su servidor.
- Sus datos se quedan con usted. La propia aplicación no envía nada a CreativAI.
Resumen de seguridad
Defensa en profundidad, sin servicios adicionales.
- Inicio de sesión. Contraseñas con hash, bloqueo tras fallos repetidos, autenticación en dos pasos opcional con códigos de recuperación, sesiones que caducan.
- Formularios. Protección CSRF en cada cambio; toda la salida se escapa; política de seguridad de contenido con nonces.
- Secretos. Las claves de IA, la contraseña SMTP y los secretos de la autenticación en dos pasos se cifran con AES-256-GCM usando la clave de su aplicación.
- Identificadores públicos. Los bots, las conversaciones y las solicitudes de contacto usan UUID aleatorios en las direcciones, nunca números secuenciales.
- Widget. Construido solo con llamadas al DOM (sin HTML sin procesar procedente del modelo), dentro de un Shadow DOM; los enlaces de las respuestas se abren con
rel="noopener noreferrer nofollow". - Límites contra abusos. Lista de sitios permitidos, límite de frecuencia, límites de longitud de mensajes y conversaciones, palabras bloqueadas, presupuesto diario de tokens, un campo trampa oculto y límites por dirección en el formulario de contacto.
- Solicitudes salientes. Las llamadas a la IA y las importaciones de páginas web se comprueban frente a direcciones privadas y de metadatos de la nube, las redirecciones se verifican en cada paso y se limitan el tamaño y el tiempo.
- Inyección de prompts. El texto del visitante, el contexto de la página y los extractos de conocimiento se etiquetan como datos no fiables y siempre se añaden reglas de seguridad fijas. Un prompt reduce este riesgo, pero no lo elimina: mantenga acotado el ámbito del bot y no incluya nunca secretos en las instrucciones ni en la base de conocimiento de un bot.
- Archivos. Las cargas se comprueban por tipo y tamaño y se leen como texto; los documentos de Word se analizan con las entidades externas desactivadas.
Mantenimiento
Una rutina breve que mantiene la instalación en buen estado.
Copias de seguridad
Haga copia de dos elementos: la base de datos y el archivo **config/config.php** (contiene la clave que descifra sus claves de IA almacenadas). Los documentos subidos se guardan en la base de datos, de modo que un volcado de la base de datos cubre también la base de conocimiento.
Actualización
- 1Haga una copia de seguridad de la base de datos.
- 2Suba los archivos nuevos sobre los antiguos; conserve
config/ystorage/. - 3Inicie sesión, abra Información del sistema y pulse Aplicar actualizaciones si hay actualizaciones en la lista.
- 4Pulse Ctrl+F5 una vez para refrescar la hoja de estilos.
Registros
Los errores que no pueden mostrarse a los visitantes se escriben en el registro de errores de PHP. El registro de auditoría del panel recoge las acciones administrativas.
Reglas de Nginx
Los archivos .htaccess protegen las carpetas internas en Apache. En Nginx añada reglas equivalentes, por ejemplo:
location ~ ^/ai-chat-widget/(app|config|database|language|storage|_devs|_idea)/ { deny all; }
location ~* \.(sql|md|lock|log|json)$ { deny all; }Para el streaming detrás de Nginx, asegúrese de que proxy_buffering esté desactivado para api.php (la aplicación ya envía X-Accel-Buffering: no).
Límites del alojamiento que importan
upload_max_filesize y post_max_size de PHP limitan las cargas de archivos a la base de conocimiento. Un PDF grande puede necesitar un memory_limit de 256 MB o más. Debe permitirse el HTTPS saliente para las llamadas a la IA y las importaciones de páginas web.
Ayuda y solución de problemas
Problemas frecuentes y soluciones
Empiece por el síntoma.
| Síntoma | Qué comprobar |
|---|---|
| El widget no aparece | El bot está Activo; su sitio web figura en Sitios permitidos; las reglas de «Dónde y cuándo» (patrones, dispositivos, horario de atención) permiten esta página; la política de seguridad de contenido de su sitio permite el script; abra la página de prueba del bot desde la pestaña Incrustar para comparar. |
| El chat dice «origin not allowed» o no se carga nada | Añada el dominio exacto (sin https:// ni www.) a Sitios permitidos. *.example.com cubre los subdominios. |
| «Sorry, something went wrong» | Falló el proveedor. Abra Proveedores de IA, ejecute la consola de pruebas y lea el error: clave incorrecta (401), sin crédito o facturación (402/429), nombre de modelo incorrecto o tiempo de espera agotado. Active un proveedor de reserva para mayor resiliencia. |
| Las respuestas ignoran mis documentos | Pruebe con Probar una búsqueda. La pregunta y el documento deben estar en el mismo idioma; use las palabras que emplean los visitantes; compruebe que el documento esté activo y asignado a este bot o a todos; compruebe que el modo del bot no sea «No usarla». |
| Se rechaza un PDF | Probablemente sea un escaneo (sin texto seleccionable) o esté protegido con contraseña. Exporte un PDF con texto o pegue el texto. |
| No se puede importar una página web | Use una dirección https pública; no se pueden leer las páginas protegidas por inicio de sesión; para una página de intranet active «Permitir direcciones de una red privada» en la página Base de conocimiento. |
| Los correos no llegan | Envíe el mensaje de prueba en Ajustes > Correo y lea el error. Compruebe el puerto y el cifrado, que la dirección del remitente pertenezca a su dominio y la carpeta de spam. Añada registros SPF y DKIM para su dominio. |
| No aparece el enlace «¿Ha olvidado su contraseña?» | El correo saliente no está configurado. Configure Ajustes > Correo. |
| He perdido mi segundo factor | Use un código de recuperación. En caso contrario, otro administrador restablece su autenticación en dos pasos en Usuarios. |
| Me he bloqueado la cuenta | Espere 15 minutos. Con acceso a la base de datos, un administrador puede quitar el bloqueo en la tabla users. |
| El streaming parece roto | Ejecute Probar el streaming en Ajustes. Si todo llega de una vez, el servidor o un proxy almacena las respuestas en búfer: mantenga el streaming desactivado o corrija el búfer (vea Mantenimiento). |
| Fallan las cargas | Aumente upload_max_filesize y post_max_size en PHP; los límites son 600 KB para archivos de texto y 8 MB para PDF y Word. |
| Un aviso indica que hay actualizaciones de la base de datos pendientes | Abra Información del sistema y pulse Aplicar actualizaciones. |
| Las pantallas se ven sin estilo tras una actualización | Pulse Ctrl+F5. |
| Página en blanco o error 500 | Revise el registro de errores de PHP y que PHP sea 8.1 o superior con las extensiones necesarias (Información del sistema). |
Interpretar los errores del proveedor
| Mensaje | Suele significar |
|---|---|
| 401 / unauthorized | Falta la clave API, es incorrecta o corresponde a otro servicio. |
| 402 / insufficient credit | La cuenta no tiene crédito o no se ha configurado la facturación. |
| 404 / model not found | El nombre del modelo es incorrecto o no está disponible para su cuenta. |
| 429 / rate limit | Demasiadas solicitudes o se ha agotado una cuota; espere o aumente el límite con el proveedor. |
| timeout | El proveedor fue demasiado lento; inténtelo de nuevo o aumente el tiempo de espera en el perfil. |
| private network | El perfil apunta a una dirección local: active «Permitir direcciones de red privada» solo para ese perfil y únicamente si es un modelo local. |
Preguntas frecuentes
¿Necesito un desarrollador para usarlo?
No. Todo se configura en el panel y cada campo tiene un icono de ayuda. Solo se necesita un desarrollador para integraciones poco habituales.
¿Dónde se guardan mis claves de IA?
Cifradas en su base de datos. Nunca se envían al navegador del visitante ni se escriben en los registros.
¿Cuánto me costará la IA?
El proveedor le cobra directamente por los tokens. Use el presupuesto diario de tokens, una longitud de respuesta corta y el modo «Responder solo con la base de conocimiento» para mantener los costes predecibles, y vigile los tokens en la página Estadísticas.
¿Puedo usar un modelo que se ejecute en mi propio ordenador o servidor?
Sí. Use el perfil de Ollama o de LM Studio y active «Permitir direcciones de red privada» para él.
¿Puede una instalación servir a varios sitios web?
Sí. Añada cada sitio web a la lista de sitios permitidos del bot, o cree un bot por sitio. El número de bots y de sitios web depende de su licencia.
¿Qué ocurre si mi licencia caduca?
La aplicación vuelve a los límites de Free. Los widgets existentes siguen funcionando; solo se bloquea la creación de nuevos bots, sitios web y documentos por encima de los límites de Free.
¿Puedo cambiar la redacción del widget?
Sí: en la pestaña Textos, por idioma. Los campos vacíos usan las traducciones integradas.
¿Funciona con constructores de páginas y tiendas online?
Sí. Es una sola línea de script, por lo que funciona en cualquier lugar donde pueda editar el pie de página o añadir un script. Se incluye un plugin de WordPress.
Contacto
¿Preguntas, sugerencias o algo no funciona como se describe aquí? Escriba al desarrollador.