ThunderPhone 2.0 je stigao.Postavite sve sami, već od 2 ¢/min.Pročitajte objavu

Developer cookbook

Upućujte odlazne pozive (API)

Pokrenite odlazni poziv koji vodi AI iz vlastitog koda — ankete, naknadne kontakte ili tijekove potvrde.

Odlazno pozivanje omogućuje vam da ThunderPhoneu predate odredišni broj i konfiguraciju agenta te da AI uputi poziv u vaše ime. Uobičajeni slučajevi upotrebe:

  • Potvrde termina
  • Povratni pozivi za ankete
  • Naknadni kontakt pri „drugom pokušaju” nakon propuštenog poziva
  • Obavijesti u stilu dispečerskih poruka

Preduvjeti

  1. Odaberite broj omogućen za odlazne pozive

    Upotrijebite broj koji posjedujete putem VoIP veze ili zatražite dopuštenje za upotrebu svojih ThunderPhone brojeva za odlazne pozive na stranici Phone Numbers. ThunderPhone brojevi u početku su samo za dolazne pozive. ThunderPhone ručno pregledava svaki zahtjev; nakon odobrenja ti brojevi mogu upućivati pozive do odobrenog dnevnog ograničenja (koje se ponovno postavlja u 00:00 UTC) i pokretati kampanje, a Vi možete zatražiti veće ograničenje. VoIP brojevi korisnika nemaju dnevno ograničenje, stoga ih preporučujemo za odlazne pozive. Pogledajte Upotrijebite vlastite brojeve.

  2. Izradite agenta

    Uputa prilagođena odlaznim pozivima obično počinje tako da se agent predstavi i navede svoju svrhu — "Pozdrav, ovdje Acme, zovemo kako bismo potvrdili Vaš termin za sutra u 15 h…" Postavite outbound_speak_order na agent_first (zadana vrijednost).

  3. Održavajte pozitivan saldo

    Odlazni pozivi vraćaju 402 Payment Required ako je saldo ≤ $0.00. Nadoplatite saldo ili omogućite automatsku nadoplatu u odjeljku Organization → Billing Settings na nadzornoj ploči. Vaš ključ sk_live_ može provjeriti saldo pomoću GET /v1/billing, ali ne može nadoplatiti saldo ni promijeniti automatsku nadoplatu.

Uputite poziv sa spremljenim agentom

Najjednostavniji način — navedite agenta prema identifikatoru:

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":   "+14155552671",
    "agent_id":    12
  }'

Odgovor:

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

Uputite poziv s ugrađenom konfiguracijom

Ako želite jednokratni prompt koji ne vrijedi spremati kao agenta, umjesto toga proslijedite config. Struktura odgovara shemi odgovora web-dojavnika 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":   "+14155552671",
    "config": {
      "prompt":  "You are confirming Jane Doe appointment for 3pm tomorrow…",
      "voice":   "john",
      "product": "spark"
    }
  }'

Pratite poziv

Istodobno se pretplatite na telephony.complete webhook — najbrži način da saznate da je poziv završio. Ako ne možete primati dolazne webhookove, anketirajte GET /v1/calls/{call_id} svakih nekoliko sekundi; zapis nakon završetka poziva uključuje end_reason, duration_seconds i URL snimke.

Ako je vaš agent postavljen za izdvajanje strukturiranih podataka nakon poziva, ti se podaci isporučuju zasebno nakon dovršetka finalizacije.

Proslijedite varijable po pozivu spremljenom agentu

Spremljeni agenti mogu upotrebljavati rezervirana mjesta kao što su {{name}} ili {{name|there}} u tekstu upute. Kada upućujete odlazni poziv s agent_id, proslijedite variables s vrijednostima za taj poziv:

{
  "from_number": "+[REDACTED_PHONE]",
  "to_number": "+[REDACTED_PHONE]",
  "agent_id": 12,
  "variables": {
    "name": "Jordan"
  }
}

Upotrijebite vrijednosti niza označene nazivom rezerviranog mjesta. Te se varijable primjenjuju na spremljene agente; primjer umetnutog config u ovom vodiču ne upotrebljava ih.

Načini neuspjeha koje vrijedi obraditi

PogreškaRješenje
402 Payment RequiredNadopunite saldo ili omogućite automatsku nadoplatu
400 s code: destination_not_allowedThunderPhone ne zove taj broj: nevažeći brojevi, brojevi hitnih službi, brojevi s posebnom tarifom, kratki kodovi ili sankcionirane države. S ThunderPhone brojeva mogu se zvati samo uobičajeni brojevi u SAD-u i Kanadi (bez brojeva s posebnom tarifom). reason navodi koji je razlog; pogledajte blokirana odredišta
409 s retryable: false za ThunderPhone brojSlijedite code: zatražite odlazno pozivanje na stranici Phone Numbers, pričekajte pregled na čekanju ili upotrijebite drugi broj koji ispunjava uvjete
429 s code: platform_outbound_daily_limit_reachedOrganizacija je iskoristila današnji broj odlaznih poziva s ThunderPhone brojeva. Pričekajte resets_at (00:00 UTC), zatražite veće ograničenje na stranici Phone Numbers ili zovite s broja na vlastitoj VoIP vezi
429 s code: concurrent_call_limit_reachedOrganizacija ima onoliko poziva u tijeku koliko iznosi njezino ograničenje istodobnih poziva (prema zadanim postavkama 20, uključujući dolazne, odlazne, web i testne pozive). Pokušajte ponovno nakon broja sekundi iz zaglavlja Retry-After ili kada poziv završi; pošaljite e-poruku na support@thunderphone.com za povećanje ograničenja
429 s code: same_number_too_soonIsti ste to_number nazvali prije manje od 10 sekundi. Pokušajte ponovno nakon broja sekundi iz zaglavlja Retry-After
409 s retryable: false za VoIP broj korisnikaIspravite stanje navedeno u code; za neuspjele provjere pokrenite POST /v1/phone-numbers/{id}/verify-voip
sukob idempotentnosti 409Ponovno upotrijebite ključ samo s izvornim normaliziranim zahtjevom ili pošaljite novi ključ
404 from_number is not registered to this organizationPotvrdite da se from_number podudara s aktivnim telefonskim brojem u vašoj organizaciji. Broj koji je već u postupku dodjele, nije uspio, oslobađa se ili je oslobođen također vraća ovaj odgovor
500 samo s poljem detailNije konfiguriran odlazni trunk. Obratite se podršci; ovo nije problem stanja broja koji možete ispraviti
502 Bad GatewayPrivremeni kvar SIP-a / LiveKita; sigurno je pokušati ponovno

Pogledajte referencu za odlazne pozive za potpuni stabilni popis kodova prihvatljivosti i oba oblika odgovora 409. Ako aktivni broj postane neprihvatljiv nakon prihvaćanja zahtjeva, ali prije upućivanja poziva, završna provjera vraća sadržaj odgovora 409 koji nije moguće ponovno pokušati.

Upravljanje vremenom čekanja

Odlazni pozivi koji dugo traju jer primatelj sporo odgovara (IVR stabla, redovi čekanja) mogu se ograničiti pomoću max_hold_seconds:

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

Agent prekida poziv ako u posljednjih N sekundi nije primljen ljudski zvuk. Zadana vrijednost je 900 sekundi (15 minuta).


Sljedeći koraci