El widget expone una API global en window.ThaliqWidget que permite controlarlo programaticamente desde JavaScript.
Como acceder a la instancia
Hay dos formas de inicializar el widget, y cada una expone la API de manera distinta:
Opcion A — Auto-init con data-api-key
<script src="https://cdn.thaliq.com/widget.js" data-api-key="tq_live_xxx"></script>
Despues de cargar, window.ThaliqWidget es directamente la instancia. Podes llamar metodos sobre el global:
window.ThaliqWidget.open();
window.ThaliqWidget.send('Hola');
Opcion B — Init programatico
const widget = ThaliqWidget.init({ apiKey: 'tq_live_xxx' });
window.thaliq = widget; // guardalo donde quieras
ThaliqWidget.init() retorna la instancia. El global window.ThaliqWidget sigue siendo { init, _class } (no la instancia). Guarda el retorno para llamar metodos despues.
No mezcles estilos. Si usas <script data-api-key> para auto-init, no llames ThaliqWidget.init() despues — sobreescribirias la instancia.
Metodos de la instancia
open()
Abre la ventana de chat.
window.ThaliqWidget.open();
close()
Cierra la ventana de chat.
window.ThaliqWidget.close();
toggle()
Alterna entre abierto y cerrado.
window.ThaliqWidget.toggle();
send(text)
Envia un mensaje programaticamente. Util para iniciar conversaciones contextuales. Internamente escribe el texto en el input y dispara el envio.
window.ThaliqWidget.send('Necesito ayuda con mi pedido #12345');
Ejemplo: Boton contextual
<button onclick="ThaliqWidget.send('Quiero saber mas sobre el Plan Growth')">
Preguntar sobre Plan Growth
</button>
reset()
Reinicia la conversacion: limpia los mensajes en pantalla, descarta el conversationId activo y vuelve al estado inicial. La proxima request crea un thread nuevo.
window.ThaliqWidget.reset();
setMcpTokens(tokens)
Actualiza los tokens MCP en runtime (passthrough al backend en el header X-MCP-Tokens). Util cuando el usuario se loguea contra un sistema externo despues de cargar el widget y necesitas darle acceso al MCP server correspondiente sin recargar.
window.ThaliqWidget.setMcpTokens({
'github-mcp': 'ghp_xxx',
'jira-mcp': 'eyJh...',
});
destroy()
Elimina el widget completamente del DOM y limpia listeners + suscripcion SSE. Util para SPAs cuando navegas a otra pagina o cuando el componente que lo monta se desmontya.
window.ThaliqWidget.destroy();
Ejemplo: Abrir el chat automaticamente
<script
src="https://cdn.thaliq.com/widget.js"
data-api-key="tq_live_xxx"
></script>
<script>
// Abrir el chat 3 segundos despues de cargar la pagina
setTimeout(() => {
window.ThaliqWidget.open();
}, 3000);
</script>
Ejemplo: Abrir con un boton custom
Usa data-show-launcher="false" para ocultar el boton flotante y controlar el chat con tu propio boton:
<!-- Tu propio boton -->
<button id="help-btn" class="my-help-button">
¿Necesitas ayuda?
</button>
<script
src="https://cdn.thaliq.com/widget.js"
data-api-key="tq_live_xxx"
data-show-launcher="false"
></script>
<script>
document.getElementById('help-btn').addEventListener('click', () => {
window.ThaliqWidget.open();
});
</script>
Ejemplo: Mensaje contextual segun la pagina
<script>
// Detectar la pagina actual y enviar mensaje contextual
document.addEventListener('DOMContentLoaded', () => {
const path = window.location.pathname;
if (path.includes('/pricing')) {
// En la pagina de pricing, pre-cargar pregunta
window.ThaliqWidget.open();
window.ThaliqWidget.send('Quiero mas informacion sobre los planes');
}
});
</script>