Flowsdone · Webchat widget

Un chat con IA, embebible en cualquier página

Un solo <script>, un objeto de configuración y listo: el mismo widget que usa la demo se integra en cualquier sitio en minutos.

Integración

Cómo agregarlo a tu página

Cada cliente tiene su canal Chat web en la consola (sección Canales), con su clave pública (wc_…) y el fragmento listo para copiar. Tres pasos: cargar el CSS y el JS del widget, definir la configuración antes de que el script corra, y listo — se auto-inicializa solo.

1

Cargá el CSS y el script del widget

Van en cualquier parte de tu <head> o antes de cerrar </body>. Se sirven desde nuestro dominio, no hace falta alojarlos vos.

<link rel="stylesheet" href="https://chat.flowsdone.com/agent-chat-widget.css" />
<script src="https://chat.flowsdone.com/agent-chat-widget.js"></script>
2

Definí window.AgentChatConfig antes del script

El widget busca esta variable global apenas carga y se auto-inicializa. El único campo obligatorio es channelKey, la clave del canal Chat web del cliente. Si el canal tiene dominios permitidos, el chat solo funciona en esas webs.

<script>
  window.AgentChatConfig = {
    wsUrl: "wss://chat.flowsdone.com/ws",
    channelKey: "wc_TU_CLAVE",      // obligatorio: la clave del canal Chat web
    title: "Mi Asistente",
    initialMessage: "¡Hola! ¿En qué te puedo ayudar?",
    launcherColor: "#4F46E5",
    sendButtonColor: "#10B981"
  };
</script>
<link rel="stylesheet" href="https://chat.flowsdone.com/agent-chat-widget.css" />
<script src="https://chat.flowsdone.com/agent-chat-widget.js"></script>
3

(Opcional) Inicializá manualmente

Si preferís no usar window.AgentChatConfig — por ejemplo, para crear el widget después de una acción del usuario — llamá a init() a mano con el script cargado con defer.

<script defer src="https://chat.flowsdone.com/agent-chat-widget.js"></script>
<script>
  window.addEventListener("load", function () {
    window.AgentChat.init({ wsUrl: "wss://chat.flowsdone.com/ws", channelKey: "wc_TU_CLAVE" });
  });
</script>
Referencia

Variables de configuración disponibles

Todo lo que acepta AgentChatConfig / AgentChat.init(options), agrupado por para qué sirve. Ninguna es obligatoria salvo channelKey.

Conexión

VariableDefaultQué hace
channelKey—Obligatorio. Clave pública del canal Chat web del cliente (wc_…), en la consola → Canales. Decide qué agente responde; las conversaciones cuentan como las de cualquier canal.
wsUrlautoEndpoint del WebSocket. Por defecto se arma a partir del dominio de la página (wss://tu-dominio/ws), así que en la web del cliente hay que indicarlo: wss://chat.flowsdone.com/ws (el fragmento de la consola ya lo incluye).
sessionIdautoId de sesión del visitante. Se genera y persiste en localStorage si no lo pasás.
conversationIdautoId de conversación, también persistido en localStorage. Pasalo vos si necesitás controlar cuándo empieza una conversación nueva.

Textos y contenido

VariableDefaultQué hace
titleAI AssistantTítulo en el header del chat.
initialMessage"Hi! How can I help you today?"Primer mensaje que muestra el bot al abrir.
inputPlaceholder"Type your message..."Placeholder del campo de texto.
sendLabelSendTexto accesible (aria-label) del botón de enviar.
openLabel / closeLabelOpen chat / Close chatTextos accesibles del botón flotante y del botón de cerrar.
messagesobjeto con defaults en inglésSobrescribí socketConnecting, socketConnected, socketDisconnected, genericError y/o queuedError para traducir los mensajes de estado.

Tamaño y posición

VariableDefaultQué hace
width420pxAncho de la ventana del chat abierta.
height680pxAlto de la ventana del chat abierta.
maxHeight80vhTope de alto relativo al viewport, para pantallas chicas.
positionbottom-rightbottom-right o bottom-left.
bottom20pxSeparación desde el borde inferior de la pantalla.
sideOffset20pxSeparación desde el borde lateral (derecho o izquierdo según position).
launcherSize60pxDiámetro del botón flotante.

Colores y tema

VariableDefaultQué hace
launcherColor#4F46E5Color de fondo del botón flotante.
launcherIconColor#ffffffColor del ícono dentro del botón flotante.
launcherIconAccentColor#111827Color de acento secundario del ícono por defecto.
launcherIconUrl—URL de una imagen propia para reemplazar el ícono SVG por defecto del botón flotante.
headerColor#111827Color de fondo del header del chat.
headerTextColor#ffffffColor del texto del header.
userMessageColor / userMessageTextColor#4F46E5 / #ffffffFondo y texto de las burbujas del usuario.
botMessageColor / botMessageTextColor#E5E7EB / #111827Fondo y texto de las burbujas del bot.
sendButtonColor#10B981Color del botón de enviar.

Comportamiento

VariableDefaultQué hace
modewidgetwidget (botón flotante + ventana popup) o fullscreen (el chat ocupa toda la pantalla, sin botón flotante).
autoOpenfalseSi es true, el chat se abre solo 100ms después de cargar la página.
showLaunchertruePonelo en false para ocultar el botón flotante por completo (útil si vos disparás la apertura desde otro elemento).
closeOnEsctrueCierra el chat con la tecla Esc (no aplica en modo fullscreen).
focusInputOnOpentrueEnfoca el campo de texto automáticamente al abrir el chat.
toastDuration4500 (ms)Cuánto tiempo queda visible un mensaje de error tipo toast.

Animación

VariableDefaultQué hace
animationslide-upslide-up, scale, fade o none. Efecto al abrir/cerrar la ventana del chat.
animationDuration280msDuración de esa transición.

Reconexión del WebSocket

VariableDefaultQué hace
reconnectInterval1500 (ms)Espera inicial antes de reintentar la conexión si el WebSocket se corta.
maxReconnectInterval15000 (ms)Tope del backoff exponencial entre reintentos.