# Azioni lato client nel browser del visitatore

> Esegui un'azione nel browser del visitatore: con un handler JavaScript registrato con IntoChatActions o un endpoint del sito che usa la sessione dell'utente.

Un'azione lato client viene eseguita nella pagina in cui è incorporato il tuo agente, non sui server di intoCHAT. Serve a raggiungere ciò che solo il browser del visitatore può raggiungere: un endpoint del tuo sito che usa la sessione di login del visitatore, oppure dati e funzioni presenti nella pagina.

## Quale scegliere

| Vuoi chiamare | Usa |
| --- | --- |
| Un'API pubblica o che richiede la tua chiave segreta | Un'[azione API lato server](/it/docs/api-actions) |
| Un endpoint del tuo dominio che usa i cookie del visitatore | Un'azione lato client, senza codice aggiuntivo |
| Qualcosa nella pagina, come il carrello in JavaScript o una finestra da aprire | Un'azione lato client con un handler registrato |
| Niente: vuoi solo che il visitatore apra una delle tue pagine | Un [pulsante personalizzato](/it/docs/custom-buttons) |

## Configurazione

1. Nella scheda **Actions**, crea l'azione come descritto in [Azioni API personalizzate](/it/docs/api-actions): URL, input e **When to use**.
2. Nel passaggio **3. When the AI should use it**, seleziona **Client-side action**.
3. Salva l'azione.

> La richiesta viene composta nel browser del visitatore, quindi lui può vederne tutto il contenuto. La credenziale della scheda **Authentication** volutamente non viene inviata. Se l'endpoint richiede la tua chiave segreta, usa un'azione lato server.

## Come funziona una chiamata

Quando l'agente chiama un'azione lato client, il widget della chat passa la chiamata allo script di incorporamento presente nella tua pagina:

1. Se la pagina ha registrato un handler con il nome dell'azione, viene eseguito e il valore restituito va all'agente.
2. Altrimenti la pagina richiama l'URL dell'azione dal tuo dominio, includendo i cookie del visitatore.

Ogni chiamata ha 20 secondi di tempo, poi viene segnalata all'agente come non riuscita. L'azione richiede comunque un URL pubblico valido anche se usi solo un handler; con un handler registrato quell'URL non viene chiamato.

## Registrare un handler

Il nome dell'handler è il nome dell'azione in cui ogni carattere diverso da lettere, cifre, `_` e `-` viene sostituito da `_`: "Get cart" diventa `Get_cart`. L'editor mostra il nome esatto nel suo esempio di codice.

`window.IntoChatActions` è disponibile non appena lo script dello snippet è stato eseguito, prima ancora che il widget della chat sia caricato. Gli handler vengono cercati quando l'agente chiama l'azione, quindi registrarli prima o dopo che il widget è pronto funziona allo stesso modo. Aggiungi uno script in qualsiasi punto dopo lo 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: gli input compilati dall'agente.
    // Restituisci qualcosa di serializzabile in JSON. L'agente lo vede.
    return { items: window.myStore.cart.items };
  });
</script>
```

Il codice che potrebbe essere eseguito prima dello snippet può invece aggiungere coppie `[name, handler]` a `window.IntoChatActionsQueue`; lo script le registra quando si carica. Nella maggior parte delle pagine non serve. Con più agenti nella stessa pagina, tutti condividono gli stessi handler.

L'handler riceve come `args` gli input compilati dall'agente. Se genera un errore, il messaggio arriva all'agente come chiamata non riuscita. `IntoChatActions.unregister(name)` rimuove un handler e `IntoChatActions.registered()` elenca i nomi registrati.

## Provarla

**Send test request** nell'editor parte dai server di intoCHAT. Controlla che l'URL risponda e mostra la struttura della risposta, ma non vede le sessioni dei visitatori né gli handler della tua pagina. Nel **Playground** non c'è una tua pagina attorno alla chat, quindi l'URL viene richiamato dal widget stesso, senza i cookie o gli handler del tuo sito. Prova handler ed endpoint legati alla sessione su una pagina del tuo sito in cui è installato il widget.

> Le azioni lato client richiedono la bolla della chat che lo script di incorporamento aggiunge alla pagina. In un incorporamento inline tramite iframe non c'è uno script nella pagina che risponda, quindi la chiamata fallisce dopo 20 secondi.
