API en tiempo de ejecución del widget
Controla el widget desde JavaScript mediante el objeto window.syncanix.
Cuando el widget se carga, instala un objeto window.syncanix que puedes invocar desde tu propio código.
Lo que puedes hacer
- open() — abre el panel de chat de forma programática.
- setPosition(position) — mueve el lanzador a otra esquina.
- enable() / disable() — activa o desactiva el chat en tiempo de ejecución sin desmontarlo (para incidencias, el pago o el horario de soporte).
- unmount() — elimina el widget de la página.
- registerComponent() / unregisterComponent() / getComponentCatalog() — registra tus propios componentes de React para que el asistente los represente, validados con un esquema.
- registerAction() / unregisterAction() / getActionCatalog() — permite que el asistente llame a tus propias funciones, opcionalmente validadas por esquema y con confirmación.
- setContext() / clearContext() — alimenta el estado en vivo de la aplicación (usuario, página, carrito) en el siguiente turno. Solo JSON acotado, nunca secretos.
- setTokenProvider(fn) — proporciona el token del usuario final por turno (tiene prioridad sobre el atributo data).
- setStepUpProvider(fn) — proporciona el flujo de reautenticación reforzada.
- setHeadersProvider(fn) — añade encabezados de solicitud (como Authorization o un token CSRF) a cada llamada de herramienta; tiene prioridad sobre el atributo de datos.
- setTheme(key) — cambia el tema en vivo por nombre sin volver a montar el chat (para un interruptor claro/oscuro del sitio).
Ejemplo
// Open the chat programmatically
window.syncanix.open();
// Feed live host-app context into the next turn (bounded JSON, no secrets)
window.syncanix.setContext({ page: 'checkout', cartItems: 3 });
// Provide the signed-in user's token per turn (recommended for SSR apps)
window.syncanix.setTokenProvider(async () => await getAccessToken());Qué puede representar el asistente — y qué no puede ver
La superficie representable es explícita por diseño: las primitivas integradas, los componentes que registras con registerComponent y los embeds de orígenes que tu administrador ha incluido en la lista de permitidos. El asistente solo puede manejar lo que le has entregado deliberadamente.
El widget nunca escanea, autodetecta ni captura el DOM de tu página hacia el modelo. Leer contenido de la página anfitriona en un contexto de IA es una superficie de exfiltración de datos e inyección, así que la captura del DOM en vivo queda mediada por el cliente: tú decides qué es integrable registrándolo.
Se carga una sola vez
Instalar el objeto global es idempotente: si el script se incluye dos veces, el duplicado se ignora con una advertencia, así que nunca acabas con dos widgets.