
🎛️ Resumen de tus Widgets
Este es tu centro de mando de widgets. Aquí puedes ver cada burbuja de chat que has creado.- ¿Por qué tener más de uno? Puede que quieras un “Bot de Ventas” para tu página de precios y un bot de “Soporte Técnico” para tu centro de ayuda. Aquí los gestionas todos.
- Acciones clave por Widget:
- 📋 Copiar Script: Obtén el código mágico para pegar en tu sitio web.
- ⚙️ Configurar: La parte divertida. Ajusta colores, mensajes y comportamiento (lo vemos en un momento).
- 🗑️ Eliminar: Tíralo si no lo necesitas.
Cómo incrustarlo (chat)
Pégalo antes de</body>. No pongas mode="voice" (eso carga el widget de voz).
language="en". El loader lee language-lovi. Si lo omites, usa navigator.language (dos letras; un → en).
Orden del loader:
mode="voice" → WhatsApp full → chat.
El atributo url del <script> no hace nada. La config se cachea 24 h en localStorage con clave = id del widget.
URLs
- Loader:
https://widget.lovi.ai/iawidget.js - Iframe de chat:
https://widget.lovi.ai(query opcional?showClose=falsey/olang={language-lovi}) - Config:
GET https://cloud.lovi.ai/functions/v1/widget?access_key=…&id_widget=…&language=…(la clave la pone el script; no la pongas en capturas) - Chat dentro del iframe:
…/functions/v1/widget/{user,chat,messages,…}— sesión interna, no API pública de embed
voice-widget ni ?mode=voice en esta página.
El loader crea #app-chatbot en el host. El chat vive en el iframe #app-chatbot-iframe (allow="fullscreen; autoplay; encrypted-media; picture-in-picture" — sin micrófono). Handshake postMessage (get_widget, get_customer, data_collection, save_customer, close, reset, new_message).
Escritorio: 450px × 85vh (máx. 824px), bottom/right: 10px (o izquierda si floating_position es "left"). Viewport max-width 650px (y max-height 650px): el iframe ya es el 100% del viewport (border-radius: 0). Eso no es el toggle de “Pantalla completa” de la config. is_fullscreen + element_dom incrustan en un nodo; showClose="false" cubre toda la página en cualquier viewport. Launcher: bottom: 10px; right: 20px.
WhatsApp (dos caminos)
- Script:
whatsapp_type="full"ywhatsapp_numberno vacío → no carga el chat; solo un botón ahttps://wa.me/{número}. - Config del widget:
whatsapp_type == truey número, solo siinnerWidth ≤ 650→ sustituye la burbuja de chat en móvil.
mode="voice", gana la voz frente a WhatsApp full.
Allowlist del host (CSP / firewall)
widget.lovi.ai y cloud.lovi.ai. El widget no envía cabecera Content-Security-Policy.
🎨 Personalizar tu Widget (La Clase de Arte)
Haz clic en el icono de engranaje ⚙️ para entrar al laboratorio de configuración. Hagamos que este widget sea verdaderamente tuyo.1. Lo Básico
- Agente de IA: ¿Qué cerebro alimenta este chat? Selecciona uno de tus agentes de la lista.
- Idiomas: ¿Tu sitio habla inglés, español y francés? Díselo al widget para que no quede en ridículo.
2. Mensaje Flotante (El Gancho 🪝)
¡No dejes que tu bot se esconda! Configura un mensaje llamativo que aparezca encima del icono.- Aburrido: “Chatea aquí.”
- Mejor: “¡Hola! ¿Necesitas ayuda con tu pedido? 👋”
⚠️ Atención: Añade traducciones para todos tus idiomas. ¡No querrás que los visitantes de habla hispana vean una burbuja en blanco!
3. Aspecto Visual (Viste para Impresionar)
- Cabecera: Elige qué se muestra arriba. ¿Solo un título? ¿Tu logo? ¿Un avatar de un robot con monóculo? Depende de ti.
- Colores: Usa la herramienta de cuentagotas 🖊️ para coincidir exactamente con tu marca.
- Color principal: Las burbujas de mensajes y el botón de enviar.
- Color de texto: ¡Asegúrate de que sea legible! El texto amarillo sobre fondo blanco es un crimen contra la vista.
4. El Portero: Formularios de Recogida de Datos 📝
¿Quieres saber con quién hablas antes de que empiecen a chatear? Activa el Formulario.- Pide Nombre, Email o Teléfono.
- Haz los campos “Obligatorios” si eres estricto, u “Opcionales” si eres más relajado.
- RGPD / Privacidad: Añade un enlace a tu política para cumplir con la ley. 👮♂️
5. Recogida Inteligente de Datos (Avanzado 🤓)
Por cada clave de la config, el loader leelocalStorage o sessionStorage o una cookie JS, o (si source === "js_global") una variable window por ruta con puntos. Siempre manda url: location.href. El name de salida es opcional. Esos valores van al contexto del mensaje; el widget no saluda solo “Hola, Juan” salvo que tu agente lo haga.
🛠️ Ajustes Extra y Diseño
Ajusta la experiencia:- Posición: ¿Izquierda o Derecha? (La derecha es estándar, la izquierda es para rebeldes).
- Pantalla completa (config): Junto con
element_dom, incrustan el chat en un nodo. No es el full bleed móvil: amax-width: 650pxel iframe ya ocupa el viewport. - Incrustado (
dom): id de un elemento HTML (no#id/.class). Si el nodo no existe, no hay embed. - CSS extra: Se inyecta como etiqueta
<style>en el iframe y en el host (#app-chatbot) sin encapsular, así que puede afectar la página. Selectores del iframe:.widget_chat,.widget_chat_window, … Launcher en el host:.widget_chat_switch,.widget_chat_switch_open,#app-chatbot-iframe.
🎨 CSS Personalizado (CSS extra) — La Guía del Diseñador
¿Los colores y opciones predefinidas se te quedan cortos? El campo CSS extra te da control total sobre la apariencia del widget. Aquí puedes escribir reglas CSS que ajustan estilos, sobrescriben clases predeterminadas o incluso añaden animaciones. Dónde encontrarlo: Entra a la configuración del widget (icono ⚙️), despliega la sección “CSS extra” y escribe tu código en el área de texto.⚙️ Cómo funciona por dentro
Lo que escribes aquí no es magia, es bastante predecible una vez que lo entiendes:- Tu CSS se guarda junto a la configuración del widget.
- Al cargar, tu CSS se inyecta dos veces: una etiqueta
<style>dentro del iframe del chat (acotada al chat) y otra<style>en el host (#app-chatbot) sin encapsular (puede afectar el resto de la página). - En el iframe, tus reglas suelen ir después de los estilos por defecto. En el host,
.widget_chat_switchy#app-chatbot-iframepintan el launcher.
🎯 Alcance: Las clases de la ventana (.widget_chat,.widget_chat_window, …) aplican dentro del iframe. Las reglas del launcher en el host no están aisladas del CSS de tu sitio.
💪 ¿Mi regla no aplica? Como nuestros estilos base son específicos, a veces tu regla “empata” y no gana. Si ves que un cambio no surte efecto, añade!importantal final de la propiedad (ej.border-radius: 0 !important;) o usa un selector más específico.
🧩 Selectores que puedes usar
Estas son las “etiquetas” reales de las piezas del widget. Apunta a ellas con tu CSS:💡 Ejemplos prácticos
Burbujas del bot más cuadradas y con sombra:
🧪 Pruébalo siempre en el Playground (ver más abajo) antes de publicar. Un } olvidado puede romper varios estilos a la vez.
🧪 Prueba de Manejo (Playground)
Antes de pegar el código en tu sitio en vivo, pruébalo en el Playground.- ¿El color choca?
- ¿El Agente es educado?
- ¿Funciona el formulario?
