Search

Jump to a page or agent

Deploy

Insertar el widget

Poner el chat en el sitio de un cliente.

El widget es un web component: una etiqueta HTML que el cliente pega en su sitio y que abre el chat contra un agente tuyo. No necesita framework, no necesita build, y funciona igual en un sitio hecho con React que en uno hecho a mano.

El widget con una conversación en curso

Lo que necesitas antes de empezar

Dos cosas, y una de ellas hay que crearla:

  • El id del agente. Está en la URL de su página: /agents/<id>.
  • Una clave de consumo, que se crea en API keys. Es un tipo de clave distinto de las de administración — ver Claves API.

Aviso

La clave de consumo es publicable, y eso es intencional: cualquiera que vea el HTML de la página puede extraerla. Identifica al embed, no a la persona. No pongas ahí una clave de administración, y no asumas que un visitante no puede leerla.

El snippet

<script src="https://tu-cdn/ai-chat.iife.js"></script>

<ai-chat
  gateway-url="https://tu-gateway.example.com"
  agent-id="EL_ID_DEL_AGENTE"
  api-key="LA_CLAVE_DE_CONSUMO"
  lang="es"
  persist-session
></ai-chat>

Eso es todo lo mínimo. El elemento se llena del alto y ancho que le dé la caja donde lo pongas, así que el tamaño lo controla el CSS del cliente:

ai-chat {
  display: block;
  height: 600px;
}

Inline o flotante

Por defecto el widget es inline: un bloque que ocupa su hueco en la página, como cualquier otro elemento. Con mode="floating" se convierte en una burbuja en la esquina que abre una tarjeta, al estilo de un chat de soporte.

<ai-chat mode="floating" gateway-url="..." agent-id="..." api-key="..."></ai-chat>

Nota

Que inline sea el valor por defecto no es una preferencia estética: el bundle se publica a todos los embeds a la vez, así que un default flotante pondría un panel fijo encima de la página de cada cliente sin que nadie desplegara nada.

Cerrado, el modo flotante no renderiza el chat en absoluto — detrás de la burbuja no hay ni conexión abierta ni nada escuchando.

Idioma

El widget resuelve su idioma en este orden: el atributo lang, luego el <html lang> de la página, luego el navegador, y en último caso inglés.

En un sitio en español no hace falta poner nada — lo hereda del <html lang> del cliente. El atributo es para cuando el sitio declara un idioma y el chat debe ir en otro.

Persistir la conversación

Con persist-session, el widget guarda el id de la sesión en localStorage y al recargar la página retoma la conversación donde iba. Sin el atributo, cada carga empieza de cero.

Es lo que casi siempre quieres, con una salvedad importante: en un sitio donde varias personas usan el mismo navegador, guardar la sesión sin identificar a cada una hace que compartan el historial. Para eso está Identidad de usuario final, y es la solución correcta a ese problema — no quitar persist-session.

Qué NO llega al widget

El resultado crudo de una herramienta no sale del gateway. Si el agente consulta un inventario, el widget recibe la respuesta redactada por el modelo, no las filas que devolvió la consulta.

Eso es estructural, no una opción: una clave de consumo es publicable, y un resultado de herramienta puede traer datos del cliente o salida de una shell. Para leer el resultado crudo está la pestaña Debug de la sesión en la consola, que es la superficie hecha para diagnosticar.

Errores

El widget no muestra el error crudo. Traduce el fallo a una frase para el visitante y decide si ofrece reintentar — un 401 no lo ofrece, porque mandaría a alguien a golpearse contra una pared.

El texto original no se pierde: queda guardado tal cual en la sesión y lo puedes leer en Sessions.

Siguientes pasos