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

Developer cookbook

Donesite vlastite brojeve (VoIP, API)

Povežite Twilio ili Telnyx — ili bilo koji SIP trunk — uvezite telefonske brojeve koje već posjedujete i omogućite glasovnim agentima ThunderPhonea da odgovaraju na pozive i upućuju pozive putem njih.

ThunderPhone brojevi pokrivaju dolazne pozive, ali za odlazne pozive i kampanje potrebni su vam brojevi koje imate kod vlastitog VoIP pružatelja. Ovaj vas vodič vodi kroz tijek u tri koraka: testirajte vjerodajnice → izradite vezu → uvezite brojeve → potvrdite.

Podržani pružatelji

Pružateljprovider idNapomene
TwiliotwilioSID računa + autentifikacijski token; jedna veza po Twilio računu ili podračunu (pogledajte Twilio podračune)
TelnyxtelnyxAPI ključ; dostupno je vođeno uvođenje (setup_method: guided_telnyx)
SignalWiresignalwireUskoro — danas se povežite putem ručnog SIP-a
VonagevonageUskoro — danas se povežite putem ručnog SIP-a
Ručni SIPmanualBilo koji SIP trunk — upotrijebite vlastitu konfiguraciju

1. Testirajte vjerodajnice

Prije izrade trajno spremljene VoIP veze provjerite vjerodajnice pružatelja kako biste potvrdili da rade. Time se vraća verification_evidence_id koji prosljeđujete koraku izrade kako se vjerodajnice ne bi dvostruko naplatile za testiranje.

curl -X POST https://api.thunderphone.com/v1/voip-connections/test \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "provider":    "telnyx",
    "credentials": { "apiKey": "KEY...", "connectionId": "123456" },
    "sip_config":  { "domain": "acme.sip.telnyx.com" }
  }'
Response
{
  "status": "pass",
  "verification_evidence_id": "b9a2...",
  "suggested_connection_name": "Telnyx: Acme Main (+15550001234)",
  "checks": {
    "credentials_valid": true,
    "inbound_reachable": true,
    "outbound_authorized": true
  }
}

Ako bilo koja provjera ne uspije, status odgovora bit će fail, a checks će prikazati koji korak nije uspio. Ispravite konfiguraciju na strani pružatelja (dodjelu trunka, popis dopuštenih IP adresa, autorizaciju odlaznih poziva) i pokušajte ponovno.

2. Stvorite vezu

Proslijedite verification_evidence_id koji ste upravo dobili:

curl -X POST https://api.thunderphone.com/v1/voip-connections \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name":         "Acme Telnyx Main",
    "provider":     "telnyx",
    "setup_method": "api_key",
    "credentials":  { "apiKey": "KEY...", "connectionId": "123456" },
    "sip_config":   { "domain": "acme.sip.telnyx.com" },
    "verification_evidence_id": "b9a2..."
  }'

Odgovor je objekt VoipConnection sa status="connected". Vjerodajnice se pohranjuju na poslužitelju i nikada se ne vraćaju u običnom tekstu u naknadnim GET zahtjevima — za rotaciju pokrenite novi test i izvršite PATCH s novim dokazom.

Twilio podračuni

Twilio veza povezana je s jednim Twilio računom čiji Account SID i Auth Token sadrži. Twilio čuva telefonske brojeve i SIP trunkove unutar svakog podračuna, pa veza uspostavljena s nadređenim računom vidi samo vlastite brojeve nadređenog računa, a postojeća veza ne može se kasnije prebaciti na drugi podračun (ažuriranje se odbija jer se SIP trunk veze nalazi na izvornom računu).

Za pristup brojevima na podračunima stvorite jednu vezu po podračunu. Nadzorna ploča to radi umjesto Vas: kada povežete nadređeni račun s aktivnim podračunima, dijalog za postavljanje ih prikazuje, označite one koje želite, a ThunderPhone stvara vezu (i SIP trunk) u svakom od njih. Isti je tijek dostupan putem API-ja:

# Discover active subaccounts visible to the parent credentials
curl -X POST https://api.thunderphone.com/v1/voip-connections/twilio/subaccounts \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"credentials": {"accountSid": "ACparent...", "authToken": "..."}}'
Response
{
  "discovery_id": "7c1e...",
  "parent": { "sid": "ACparent...", "friendly_name": "Acme" },
  "subaccounts": [
    { "sid": "ACsupport...", "friendly_name": "Acme Support", "already_connected": false, "connection_id": null },
    { "sid": "ACsales...",   "friendly_name": "Acme Sales",   "already_connected": true,  "connection_id": 5 }
  ]
}
# Create a connection for each selected subaccount
curl -X POST https://api.thunderphone.com/v1/voip-connections/twilio/subaccounts/connect \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"discovery_id": "7c1e...", "subaccount_sids": ["ACsupport..."]}'

Odgovor sadrži jedan redak po podračunu sa status vrijednosti created, skipped (već povezano) ili failed, uz error prema kojoj možete postupiti. Redci su neovisni, pa neuspjeh na jednom podračunu nikada ne blokira ostale, a discovery_id ostaje valjan 30 minuta, tako da možete jednostavno ponovno pokušati neuspjeli redak. Tokeni podračuna čitaju se iz Twilioa tijekom otkrivanja i pohranjuju na novoj vezi; API ih nikada ne vraća. Svaka nova veza zatim uvozi i potvrđuje brojeve jednako kao veza koju ste stvorili ručno.

3. Prikažite i uvezite brojeve

Pregledajte brojeve vidljive Vašim vjerodajnicama koji još nisu u ThunderPhone organizaciji:

curl https://api.thunderphone.com/v1/voip-connections/5/available-numbers \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY"

Zatim uvezite one koje želite:

curl -X POST https://api.thunderphone.com/v1/voip-connections/5/import-numbers \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"numbers": ["+15550001234", "+15550009999"]}'

Svaki uvoz postaje resurs telefonskog broja u Vašoj organizaciji s source="voip" i status="provisioning".

4. Potvrdite svaki uvezeni broj

Uvoz registrira broj kao dostupan; stvarno usmjeravanje poziva putem njega zahtijeva potvrdu. Za veze s pružateljima usluga (Twilio, Telnyx) to ponovno provjerava vjerodajnice pružatelja usluga i SIP dostupnost. Za ručno SIP povezivanje uspostavlja kratki probni poziv (nekoliko sekundi, automatski prekinut) s broja, putem vašeg SIP trunka, na ThunderPhone broj — tako se stvarno potvrđuju korisničko ime, lozinka, transport i odlazno usmjeravanje trunka. Vaš operater taj poziv naplaćuje kao i svaki drugi.

curl -X POST https://api.thunderphone.com/v1/phone-numbers/{id}/verify-voip \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY"

Pri uspjehu se voip_verification_status mijenja u verified, a broj prelazi u status="active". Pri neuspjehu odgovor navodi što nije uspjelo — za ručni trunk to je SIP odgovor operatera, na primjer "odbio je vjerodajnice za ThunderPhone (SIP 401)" ili "nije moguće usmjeriti poziv (SIP 404)" — ispravite problem (vjerodajnice, dopuštene izvorne IP adrese, nedostajuću dodjelu trunka na nadzornoj ploči pružatelja usluga) i ponovno pozovite.

5. Dodijelite agente i primite poziv

Nakon potvrde broja, dodjeljujete agente za dolazne / odlazne pozive na isti način kao za ThunderPhone broj. Pogledajte Obrada dolaznih poziva i Upućivanje odlaznih poziva.

Rotiranje vjerodajnica

Kada se ključ pružatelja usluga rotira, ponovno pokrenite postupak testiranja pa ažuriranja:

# 1. Test the new credentials
curl -X POST https://api.thunderphone.com/v1/voip-connections/test ...
 
# 2. PATCH the connection with the new evidence
curl -X PATCH https://api.thunderphone.com/v1/voip-connections/{id} \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "credentials": { "apiKey": "NEW_KEY..." },
    "verification_evidence_id": "fresh-evidence-id"
  }'

Veza ostaje na mjestu — nema potrebe ponovno uvoziti brojeve.


Sljedeći koraci