Uitgaande oproepen plaatsen (API)
Start vanuit je eigen code een uitgaande oproep met AI voor enquêtes, follow-ups of bevestigingsflows.
Met uitgaand bellen kun je ThunderPhone een bestemmingsnummer en een agentconfiguratie geven, waarna de AI namens jou het gesprek voert. Veelvoorkomende toepassingen:
- Afspraakbevestigingen
- Terugbellen voor enquêtes
- Opvolging bij een "tweede poging" na een gemiste oproep
- Meldingen in dispatchstijl
Vereisten
- Zorg voor een VoIP-nummer
Voor uitgaand bellen moet je eigenaar zijn van het
from_numbervia een VoIP-verbinding. Demonummers zijn alleen voor inkomende gesprekken. Zie Gebruik je eigen nummers. - Maak een agent
Een prompt voor uitgaande gesprekken begint meestal met de agent die zichzelf en het doel identificeert — "Hallo, je spreekt met Acme om je afspraak voor morgen om 15.00 uur te bevestigen…" Stel
outbound_speak_orderin opagent_first(de standaardwaarde). - Houd een positief saldo aan
Uitgaande oproepen retourneren
402 Payment Requiredals het saldo ≤$0.00is. Waardeer op viaPOST /v1/billing/top-upof schakel automatisch opwaarderen in.
Plaats een oproep met een opgeslagen agent
De eenvoudigste manier — verwijs naar een agent op 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
}'Antwoord:
{ "call_id": 987654321, "status": "initiated" }Plaats een oproep met inlineconfiguratie
Als je een eenmalige prompt wilt die het niet waard is om als agent op te slaan,
geef dan config door. De structuur komt overeen met het antwoordschema van de
call.incoming-webhook:
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"
}
}'Volg de oproep
Abonneer je parallel hierop op de
telephony.complete-webhook —
de snelste manier om te weten dat een oproep is beëindigd. Als je geen inkomende
webhooks kunt ontvangen, poll dan elke paar seconden GET /v1/calls/{call_id}; het
record bevat end_reason, duration_seconds en de opname-URL zodra de oproep eindigt.
Foutmodi die je moet afhandelen
| Fout | Oplossing |
|---|---|
402 Payment Required | Waardeer het saldo op of schakel automatisch opwaarderen in |
403 uitgaand geblokkeerd (demonummer) | Gebruik in plaats daarvan een VoIP-nummer |
403 uitgaand geblokkeerd (niet-geverifieerde VoIP) | Voer POST /v1/phone-numbers/{id}/verify-voip uit |
404 from_number is not registered to this organization | Controleer of from_number overeenkomt met een telefoonnummer waarvan je eigenaar bent |
502 Bad Gateway | Tijdelijke SIP- / LiveKit-fout; je kunt veilig opnieuw proberen |
De wachttijd beheren
Uitgaande oproepen die lang duren doordat de gebelde partij traag reageert
(IVR-menu's, wachtrijen) kun je beperken met max_hold_seconds:
{
"from_number": "+15551234567",
"to_number": "+14155550199",
"agent_id": 12,
"max_hold_seconds": 120
}De agent verbreekt de oproep als er in de afgelopen N seconden geen menselijke audio is ontvangen. De standaardwaarde is 900 (15 minuten).
Volgende stappen
Elk aanvraagveld en elke foutcode.
Stream voltooide uitgaande oproepen naar je systeem.
Automatisch opwaarderen zodat uitgaande oproepen nooit mislukken door onvoldoende saldo.
Test je uitgaande agent droog voordat je naar productie gaat.