ThunderPhone 2.0 er lanceret.Selvbetjening fra 2 cent/min.Læs mere om lanceringen

Developer cookbook

Foretag udgående opkald (API)

Udløs et AI-drevet udgående opkald fra din egen kode — spørgeskemaer, opfølgning eller bekræftelsesflows.

Udgående opkald lader dig overdrage et destinationsnummer og en agentkonfiguration til ThunderPhone og lade AI'en foretage opkaldet på dine vegne. Typiske anvendelser:

  • Aftalebekræftelser
  • Opfølgende opkald til undersøgelser
  • "Andet forsøg"-opfølgninger efter et ubesvaret opkald
  • Notifikationer i dispatch-stil

Forudsætninger

  1. Tilføj et VoIP-nummer

    Udgående opkald kræver, at du ejer from_number via en VoIP-forbindelse. Demo-numre er kun til indgående opkald. Se Medbring dine egne numre.

  2. Opret en agent

    En prompt til udgående opkald starter typisk med, at agenten identificerer sig selv og sit formål — "Hej, det er Acme, der ringer for at bekræfte din aftale i morgen kl. 15…" Angiv outbound_speak_order til agent_first (standardindstillingen).

  3. Hold en positiv saldo

    Udgående opkald returnerer 402 Payment Required, hvis saldoen er ≤ $0.00. Fyld saldoen op via POST /v1/billing/top-up eller aktiver automatisk genopfyldning.

Foretag et opkald med en gemt agent

Den enkleste metode — referer til en agent via 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
  }'

Svar:

{ "call_id": 987654321, "status": "initiated" }

Foretag et opkald med indlejret konfiguration

Hvis du vil bruge en engangsprompt, som ikke er værd at gemme som en agent, skal du sende config i stedet. Strukturen svarer til svarskemaet for 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"
    }
  }'

Følg opkaldet

Abonner parallelt på telephony.complete webhook — den hurtigste måde at vide, at et opkald er afsluttet. Hvis du ikke kan modtage indgående webhooks, skal du forespørge GET /v1/calls/{call_id} hvert par sekunder; posten indeholder end_reason, duration_seconds og optagelsens URL, når opkaldet afsluttes.

Fejltilstande, der er værd at håndtere

FejlLøsning
402 Payment RequiredFyld saldoen op, eller aktiver automatisk genopfyldning
403 udgående opkald blokeret (demo-nummer)Tilføj et VoIP-nummer i stedet
403 udgående opkald blokeret (ubekræftet VoIP)Kør POST /v1/phone-numbers/{id}/verify-voip
404 from_number is not registered to this organizationBekræft, at from_number matcher et telefonnummer, du ejer
502 Bad GatewayMidlertidig SIP- / LiveKit-fejl; det er sikkert at prøve igen

Styring af ventetid

Udgående opkald, der varer længe, fordi den kaldte part er langsom til at svare (IVR-træer, køer), kan begrænses med max_hold_seconds:

{
  "from_number": "+15551234567",
  "to_number":   "+14155550199",
  "agent_id":    12,
  "max_hold_seconds": 120
}

Agenten lægger på, hvis der ikke er modtaget menneskelig lyd i de seneste N sekunder. Standardværdien er 900 (15 minutter).


Næste trin