---
title: "Strumenti integrati"
description: "Istruisci gli agenti ThunderPhone a terminare le chiamate, trasferire i chiamanti, navigare nei tastierini, attendere in linea, cercare nelle Knowledge, riprodurre suoni, inviare email e calcolare i totali."
---

Gli strumenti integrati consentono a un agente di eseguire azioni comuni durante le chiamate senza collegare la tua API. La maggior parte è disponibile automaticamente; email, suoni, calcolatrice e ricerca nella Knowledge vengono visualizzati solo dopo aver configurato l'impostazione o la fonte correlata. Indica all'agente quando usare ogni azione nel suo prompt.

| Strumento | Usalo per | Come abilitarlo | Chiamate supportate |
| --- | --- | --- | --- |
| `end_call` | Concludere una conversazione completata | Sempre disponibile | Telefono, Talk nel browser, widget, simulazione e Realtime |
| `transfer_call` | Instradare un chiamante telefonico | Configura l'instradamento nel prompt | Chiamate telefoniche normali; Realtime inline con `call_events` può usare il trasferimento a freddo. Realtime dell'agente salvato lo omette. |
| `send_keypad_input` | Premere tasti in un menu telefonico | Sempre disponibile nelle normali chiamate telefoniche | Chiamate telefoniche; Realtime inline in uscita con `call_events`. Realtime dell'agente salvato lo omette. |
| `no_response` | Continuare ad ascoltare mentre parla un menu automatizzato o un chiamante pensa ad alta voce; un chiamante che chiede all'agente di aspettare riceve solo "Certo." | Sempre disponibile | Tutti i tipi di chiamata |
| `wait_on_hold` | Attendere in silenzio il ritorno di una persona | Incluso nelle chiamate in uscita | Sessioni telefoniche in uscita e Realtime inline in uscita |
| `search_knowledge_base` | Rispondere dalle fonti collegate | Collega Knowledge all'agente | Chiamate dell'agente salvato con Knowledge collegata |
| `play_sound` | Riprodurre un suono di notifica configurato | **Avanzate → Suono dello strumento** | Chiamate dell'agente salvato |
| `send_email` | Inviare un'email a un unico destinatario fisso | **Avanzate → Invia email** | Chiamate dell'agente salvato |
| `calculate` | Calcolare con precisione totali, commissioni e resto | **Avanzate → Calcolatrice** | Chiamate dell'agente salvato |

## `end_call`

Termina la chiamata corrente quando il prompt indica al modello di farlo. È disponibile per impostazione predefinita e non richiede alcuna configurazione dell'agente.

Scrivi nel prompt la condizione e l'eventuale saluto richiesto:

```text
When the caller confirms they need nothing else, say goodbye and end the call.
```

Una chiamata terminata dal modello ha `end_reason: "ai_hangup"`, inclusa una che termina dopo l'avviso del limite di durata della chiamata. La chiamata termina con `max_duration` solo se viene raggiunto prima il limite di durata, e con `balance_exhausted` quando il saldo prepagato si esaurisce.

## `transfer_call`

Trasferisce un chiamante telefonico a un numero fisso indicato dal modello. Il trasferimento a freddo è immediato. Un trasferimento a caldo con verifica chiama privatamente la destinazione prima di collegare le parti. Il trasferimento a caldo richiede un numero VoIP importato e verificato che possa effettuare chiamate in uscita.

Inserisci nel prompt il numero di destinazione e la condizione esatta di instradamento:

```text
If the caller asks for billing, transfer them to +15551234567.
```

Un trasferimento a freddo riuscito ha `end_reason: "ai_transfer"`; un passaggio a caldo completato ha `end_reason: "ai_warm_transfer"`. Un tentativo a caldo non riuscito restituisce il controllo all'agente, quindi la successiva conclusione della chiamata ne determina il motivo di terminazione. Nelle sessioni non telefoniche, una richiesta di trasferimento termina invece la sessione.

Consulta [Trasferire chiamate](/it/guides/call-transfers) per la configurazione nel dashboard e tramite API, l'instradamento, la verifica, la gestione degli errori, i limiti e i test.

## `send_keypad_input`

Invia cifre DTMF (tastierino telefonico) `0`–`9`, `*` e `#` a una linea telefonica. Il modello lo usa per navigare in un IVR, il menu automatizzato che chiede ai chiamanti di premere tasti. È disponibile per impostazione predefinita e non richiede alcuna configurazione dell'agente.

Indica al modello quali menu può navigare e da dove provengono i valori richiesti. Non chiedergli di indovinare le opzioni del menu:

```text
Follow the phone menu for account status. Press a key only after the menu
states what that key does. Enter the account number supplied by the caller.
```

La piattaforma rimuove i caratteri non supportati e invia le cifre valide nell'ordine corretto. Se non rimangono cifre valide o la chiamata non può inviare input dal tastierino, l'errore viene restituito all'agente affinché possa gestirlo.

## `no_response`

Mantiene l'agente in silenzio mentre un sistema automatizzato sta ancora parlando o gli chiede
di continuare ad ascoltare, e mentre un chiamante pensa ad alta voce ("ehm, vediamo") o si volta
per parlare con qualcun altro. Quando un chiamante chiede all'agente di aspettare mentre fa qualcosa
("un secondo", "controllo", "può aspettare un attimo?") e non gli dà altro a cui rispondere, l'agente
dice solo "Certo." (non "Si prenda tutto il tempo necessario") e attende che il chiamante parli di nuovo.
I controlli di silenzio dell'agente continuano comunque e vengono sempre pronunciati se la linea resta
silenziosa. Non serve per il saluto di una persona reale, una domanda o una vera coda di attesa. È disponibile
per impostazione predefinita e non dispone di impostazioni dell'agente.

Se il tuo prompt indica all'agente cosa dire quando un chiamante chiede un momento, il
prompt prevale.

Di solito è sufficiente la descrizione integrata. Per chiamate con molti IVR, rafforza il limite nel prompt:

```text
Stay silent while a phone menu is still speaking. Answer a live person as soon
as they address you.
```

Questa azione non termina la chiamata.

## `wait_on_hold`

Mette un agente in uscita in stato di attesa silenziosa finché una persona non torna.
Il modello lo usa solo dopo che l'altra parte ha dichiarato esplicitamente che l'agente
viene messo in attesa. È disponibile automaticamente nelle chiamate in uscita e non
dispone di un'impostazione nel dashboard.

```text
If a person explicitly puts you on hold, wait silently. When they return,
continue from the question you were discussing.
```

Non chiedere all'agente di usarlo per un messaggio IVR come "attenda prego". Per impostazione
predefinita, l'attesa dura fino a 15 minuti. Per le normali chiamate in uscita, `POST /v1/call`
accetta un valore intero positivo per `max_hold_seconds`; Realtime inline limita
`max_hold_seconds` a 10–900 secondi. Se la persona
torna, l'agente riprende senza modificare il motivo di fine della chiamata. Se il limite
scade, la piattaforma termina la chiamata con `end_reason: "ai_hangup"`.

## `search_knowledge_base`

Cerca nei documenti allegati all'agente e restituisce i passaggi pertinenti. Allega
una base di conoscenza o singoli documenti di Knowledge per abilitarlo, quindi indica
al modello quali risposte devono provenire da tali fonti:

```text
Search the knowledge base before answering policy questions. If the first
search is inconclusive, try once more with different key terms.
```

Se una ricerca non riesce, il risultato viene restituito all'agente. Consulta [Base di
conoscenza](/it/guides/knowledge-base) per la configurazione nel dashboard e nell'API.

## `play_sound`

Riproduce il suono di notifica configurato per l'agente dopo qualsiasi intervento vocale nello
stesso turno. Nel dashboard, imposta **Avanzate → Suono dello strumento** su **Chime**, **Ding**
o **Beep**, quindi distribuisci l'agente. **Nessuno** rimuove lo strumento.

Con l'[API Agents](/api-reference/agents), prepara `play_sound_asset` come
`"chime"`, `"ding"` o `"beep"`, quindi distribuisci. Impostalo su `""` per disabilitare
lo strumento.

```text
After confirming that an appointment was saved, say "You're all set" and play
the notification sound.
```

Un errore di riproduzione viene restituito all'agente e non termina la chiamata.

## `send_email`

Invia un'email in testo semplice all'unico destinatario configurato dal proprietario dell'agente.
Il modello fornisce l'oggetto e il corpo. Non vede mai un parametro destinatario
e non può scegliere né modificare l'indirizzo.

Nel dashboard, abilita **Avanzate → Invia email**, salva un indirizzo destinatario,
quindi distribuisci l'agente. Con l'[API Agents](/api-reference/agents), prepara sia
`send_email_enabled: true` sia un valore non vuoto per `send_email_recipient`, quindi distribuisci.
Definisci nel prompt l'attivazione e i contenuti obbligatori:

```text
When the caller asks to leave a message, collect their name, callback number,
and message. Read the details back for confirmation, then email them.
```

Una chiamata può tentare al massimo tre invii email. Ogni oggetto è limitato a 300
caratteri e ogni corpo a 20.000 caratteri. Configurazione mancante, contenuto non valido,
limite per chiamata e errori di consegna vengono restituiti all'agente.
Una consegna non riuscita utilizza comunque uno dei tre tentativi.

Esegui test con un destinatario controllato prima di distribuire su larga scala. Talk nel browser e
le simulazioni inviano email reali; non esiste una modalità di prova senza invio.

## `calculate`

Valuta esattamente un'espressione aritmetica e restituisce il risultato, così l'agente
non somma i prezzi a mente. È disattivato per impostazione predefinita. Nella dashboard,
abilita **Avanzate → Calcolatrice**, quindi distribuisci l'agente. Con l'[API
Agents](/api-reference/agents), configura `calculator_enabled: true`, quindi distribuisci.

Il modello scrive l'espressione, ad esempio `2*23.5 + 16.5 + 4`, e legge il
risultato al chiamante. Le espressioni possono usare numeri, `+`, `-`, `*`, `/` e
parentesi. Una chiamata può includere fino a 10 espressioni separate da `;`, ad esempio
un subtotale e il totale con un costo di consegna, per un massimo di 500 caratteri complessivi.
I risultati vengono arrotondati a 10 cifre decimali. La matematica usa aritmetica decimale esatta, quindi
`0.1 + 0.2` restituisce `0.3`. La divisione per zero e qualsiasi altro problema nell'espressione
vengono restituiti all'agente come errore da correggere. Viene eseguito su ThunderPhone e
risponde istantaneamente, senza frasi riempitive né suoni di digitazione.

Attivalo per gli agenti che comunicano totali degli ordini, commissioni o resto. Non è necessaria
alcuna modifica al prompt.

## Nota sulla compatibilità

L'impostazione **Avanzate → Informative non interrompibili** e il campo legacy
`speak_uninterruptible_enabled` rimangono per compatibilità, ma abilitarli non ha alcun effetto.
Lascia disattivata l'impostazione; nessun prompt può attivare questo strumento.

Per un'informativa obbligatoria all'apertura della chiamata, usa **Annuncio di consenso**. Viene riprodotto
testualmente prima della normale conversazione e non può essere interrotto. Consulta [Leggi sul consenso
alla registrazione delle chiamate](/it/guides/recording-consent-laws).

## Testa e monitora gli strumenti integrati

Usa Talk nel browser o una simulazione per verificare prompt, ricerca nella knowledge base, suoni
ed email. Questi ambienti non possono riprodurre il comportamento della rete telefonica. Testa
la navigazione tramite tastierino e l'attesa in una chiamata telefonica in uscita, e testa un trasferimento
assistito completo in una chiamata reale usando un numero VoIP importato idoneo. Il supporto Realtime
è limitato come indicato nella tabella precedente.

## Chiamate, prezzi e webhook

Le azioni integrate non prevedono costi per strumento per utilizzo. Si applicano comunque le normali tariffe per chiamate e provider; consulta i [Prezzi](/it/guides/pricing). Le relative chiamate e i risultati possono comparire nella trascrizione completata, ma non emettono eventi `telephony.tool` o `web.tool`. Questi eventi sono riservati alle [funzioni definite dall'utente](/it/tools/overview). Solo un riaggancio o un trasferimento completato modifica `end_reason` della chiamata; gli altri errori vengono restituiti all'agente. Consulta i [webhook di completamento](/it/webhooks/call-complete) per il record della chiamata.
