Effettua chiamate in uscita (API)
Avvia una chiamata in uscita gestita dall
Le chiamate in uscita ti consentono di fornire a ThunderPhone un numero di destinazione e una configurazione dell'agente, lasciando che l'IA effettui la chiamata per tuo conto. Casi d'uso tipici:
- Conferme di appuntamenti
- Richiamate per sondaggi
- Follow-up al "secondo tentativo" dopo una chiamata persa
- Notifiche in stile dispatch
Prerequisiti
- Porta un numero VoIP
Le chiamate in uscita richiedono che tu possieda il
from_numbertramite una connessione VoIP. I numeri demo sono solo per le chiamate in entrata. Consulta Porta i tuoi numeri. - Crea un agente
Un prompt orientato alle chiamate in uscita tende a iniziare con l'agente che si identifica e ne spiega lo scopo — "Salve, Acme chiama per confermare il suo appuntamento di domani alle 15…" Imposta
outbound_speak_ordersuagent_first(l'impostazione predefinita). - Mantieni un saldo positivo
Le chiamate in uscita restituiscono
402 Payment Requiredse il saldo è ≤$0.00. Ricarica tramitePOST /v1/billing/top-upoppure abilita la ricarica automatica.
Effettua una chiamata con un agente salvato
Il percorso più semplice — fai riferimento a un agente tramite id:
curl -X POST https://api.thunderphone.com/v1/call \
-H "Authorization: Bearer sk_live_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"from_number": "+15551234567",
"to_number": "+14155550199",
"agent_id": 12
}'Risposta:
{ "call_id": 987654321, "status": "initiated" }Effettua una chiamata con configurazione inline
Se vuoi un prompt una tantum che non vale la pena salvare come agente,
passa invece config. La struttura corrisponde allo schema di risposta del
webhook call.incoming:
curl -X POST https://api.thunderphone.com/v1/call \
-H "Authorization: Bearer sk_live_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"from_number": "+15551234567",
"to_number": "+14155550199",
"config": {
"prompt": "You are confirming Jane Doe appointment for 3pm tomorrow…",
"voice": "john",
"product": "spark"
}
}'Monitora la chiamata
In parallelo, iscriviti al
webhook telephony.complete —
il modo più rapido per sapere che una chiamata è terminata. Se non puoi accettare
webhook in entrata, interroga GET /v1/calls/{call_id} ogni paio di secondi; il
record include end_reason, duration_seconds e l'URL della registrazione
una volta terminata la chiamata.
Modalità di errore da gestire
| Errore | Correzione |
|---|---|
402 Payment Required | Ricarica il saldo oppure abilita la ricarica automatica |
403 chiamate in uscita bloccate (numero demo) | Porta invece un numero VoIP |
403 chiamate in uscita bloccate (VoIP non verificato) | Esegui POST /v1/phone-numbers/{id}/verify-voip |
404 from_number is not registered to this organization | Verifica che from_number corrisponda a un numero di telefono di tua proprietà |
502 Bad Gateway | Errore SIP / LiveKit transitorio; puoi riprovare in sicurezza |
Controllare il tempo di attesa
Le chiamate in uscita che durano a lungo perché il destinatario risponde lentamente
(alberi IVR, code) possono essere limitate con max_hold_seconds:
{
"from_number": "+15551234567",
"to_number": "+14155550199",
"agent_id": 12,
"max_hold_seconds": 120
}L'agente riaggancia se non riceve audio umano negli ultimi N secondi. Il valore predefinito è 900 (15 minuti).
Passaggi successivi
Tutti i campi della richiesta e i codici di errore.
Invia le chiamate in uscita completate al tuo sistema in streaming.
Ricarica automatica affinché le chiamate in uscita non falliscano mai per saldo insufficiente.
Esegui un test a secco del tuo agente in uscita prima della produzione.