# Acciones del lado del cliente en el navegador

> Ejecuta una acción en el navegador del visitante: con un manejador JavaScript registrado con IntoChatActions o un endpoint de tu web que usa su sesión.

Una acción del lado del cliente se ejecuta en la página donde está insertado tu agente, no en los servidores de intoCHAT. Sirve para llegar a lo que solo alcanza el navegador del visitante: un endpoint de tu web que depende de su sesión iniciada, o datos y funciones de la propia página.

## Cuál elegir

| Quieres llamar a | Usa |
| --- | --- |
| Una API pública o que necesita tu clave secreta | Una [acción API del lado del servidor](/es/docs/api-actions) |
| Un endpoint de tu dominio que usa las cookies del visitante | Una acción del lado del cliente, sin código adicional |
| Algo de la página, como el carrito en JavaScript o un diálogo que abrir | Una acción del lado del cliente con un manejador registrado |
| Nada: solo quieres que el visitante abra una de tus páginas | Un [botón personalizado](/es/docs/custom-buttons) |

## Configuración

1. En la pestaña **Actions**, crea la acción como se explica en [Acciones API propias](/es/docs/api-actions): URL, datos y **When to use**.
2. En el paso **3. When the AI should use it**, selecciona **Client-side action**.
3. Guarda la acción.

> La petición se monta en el navegador del visitante, así que puede ver todo su contenido. La credencial de la pestaña **Authentication** no se envía, a propósito. Si el endpoint necesita tu clave secreta, usa una acción del lado del servidor.

## Cómo se ejecuta una llamada

Cuando el agente llama a una acción del lado del cliente, el widget del chat pasa la llamada al script de inserción de tu página:

1. Si tu página registró un manejador con el nombre de la acción, se ejecuta y lo que devuelve llega al agente.
2. Si no, tu página llama a la URL de la acción desde tu propio dominio, con las cookies del visitante.

Cada llamada tiene 20 segundos. Después se comunica al agente como fallida. La acción necesita una URL pública válida aunque solo uses un manejador; con un manejador registrado, esa URL no se llama.

## Registrar un manejador

El nombre del manejador es el nombre de la acción con cada carácter que no sea letra, dígito, `_` o `-` sustituido por `_`: «Get cart» pasa a ser `Get_cart`. El editor muestra el nombre exacto en su ejemplo de código.

`window.IntoChatActions` está disponible en cuanto se ha ejecutado el script del snippet, antes de que cargue el propio widget del chat. Los manejadores se buscan cuando el agente llama a la acción, así que da igual registrarlos antes o después de que el widget esté listo. Añade un script en cualquier punto después del snippet:

```html
<script src="https://www.intochat.ai/api/embed.js" data-chatbot-id="YOUR_AGENT_ID"></script>
<script>
  window.IntoChatActions.register("Get_cart", async function (args) {
    // args: los datos que rellenó el agente.
    // Devuelve algo serializable en JSON. El agente lo ve.
    return { items: window.myStore.cart.items };
  });
</script>
```

El código que pueda ejecutarse antes del snippet puede añadir pares `[name, handler]` a `window.IntoChatActionsQueue`; el script de inserción los registra al cargar. La mayoría de las páginas no lo necesitan. Con varios agentes en una página, todos comparten los mismos manejadores.

El manejador recibe en `args` los datos que rellenó el agente. Si lanza un error, el mensaje llega al agente como llamada fallida. `IntoChatActions.unregister(name)` quita un manejador e `IntoChatActions.registered()` lista los nombres registrados.

## Probarla

**Send test request** en el editor se ejecuta desde los servidores de intoCHAT. Comprueba que la URL responde y muestra la forma de la respuesta, pero no ve las sesiones de tus visitantes ni los manejadores de tu página. En el **Playground** no hay ninguna página tuya alrededor del chat, así que el propio widget llama a la URL, sin las cookies ni los manejadores de tu web. Prueba los manejadores y los endpoints con sesión en una página de tu web donde esté instalado el widget.

> Las acciones del lado del cliente necesitan la burbuja de chat que el script de inserción añade a tu página. En una inserción con iframe no hay ningún script en la página que responda, así que la llamada falla a los 20 segundos.
