ThunderPhone 2.0 je tu.Začnite sami, že od 2 ¢/min.Preberite obvestilo

Developer cookbook

Uporabite lastne številke (VoIP, API)

Povežite Twilio ali Telnyx — oziroma katero koli SIP-povezavo — uvozite telefonske številke, ki jih že imate, in omogočite glasovnim agentom ThunderPhone, da nanje odgovarjajo in z njih opravljajo klice.

Številke ThunderPhone pokrivajo dohodne klice, vendar za odhodne klice in kampanje potrebujete številke, ki jih imate v lasti pri svojem ponudniku VoIP. Ta vodnik vas vodi skozi tristopenjski postopek: preizkusite poverilnice → ustvarite povezavo → uvozite številke → preverite.

Podprti ponudniki

PonudnikID providerOpombe
TwiliotwilioSID računa + žeton za preverjanje pristnosti; ena povezava na račun ali podračun Twilio (glejte podračune Twilio)
TelnyxtelnyxKljuč API; na voljo je vodeno uvajanje (setup_method: guided_telnyx)
SignalWiresignalwireKmalu na voljo — danes se povežite prek ročnega SIP
VonagevonageKmalu na voljo — danes se povežite prek ročnega SIP
Ročni SIPmanualKateri koli SIP trunk — uporabite lastno konfiguracijo

1. Preizkusite poverilnice

Preden ustvarite trajno povezavo VoIP, preverite poverilnice ponudnika, da potrdite, da delujejo. To vrne verification_evidence_id, ki ga posredujete koraku ustvarjanja, da poverilnice niso dvakrat zaračunane za preizkušanje.

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
  }
}

Če katero koli preverjanje ne uspe, bo status odgovora fail, v checks pa bo prikazano, pri katerem koraku je prišlo do napake. Popravite konfiguracijo pri ponudniku (dodelitev trunka, seznam dovoljenih naslovov IP, odobritev odhodnih klicev) in poskusite znova.

2. Ustvarite povezavo

Posredujte verification_evidence_id, ki ste ga pravkar prejeli:

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 s status="connected". Poverilnice so shranjene na strežniku in jih nadaljnje zahteve GET nikoli ne vrnejo v odprtem besedilu — za zamenjavo izvedite nov test in PATCH z novim dokazilom.

Podračuni Twilio

Povezava Twilio je vezana na posamezni račun Twilio, katerega Account SID in Auth Token vsebuje. Twilio telefonske številke in SIP tranke hrani znotraj posameznega podračuna, zato povezava, ustvarjena z nadrejenim računom, vidi le številke nadrejenega računa, obstoječe povezave pa pozneje ni mogoče preklopiti na drug podračun (posodobitev je zavrnjena, ker SIP trank povezave obstaja v izvirnem računu).

Za dostop do številk v podračunih ustvarite eno povezavo za vsak podračun. Nadzorna plošča to naredi namesto vas: ko povežete nadrejeni račun z aktivnimi podračuni, jih pogovorno okno za nastavitev prikaže, označite želenega in ThunderPhone v vsakem ustvari povezavo (in SIP trank). Enak potek je na voljo prek 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 vsebuje eno vrstico za vsak podračun s status created, skipped (že povezano) ali failed ter z error, na podlagi katerega lahko ukrepate. Vrstice so neodvisne, zato neuspeh v enem podračunu nikoli ne blokira drugih, discovery_id pa ostane veljaven 30 minut, zato lahko neuspešno vrstico preprosto poskusite znova. Žetoni podračunov se ob odkrivanju preberejo iz Twilio in shranijo v novi povezavi; API jih nikoli ne vrne. Vsaka nova povezava nato uvozi in preveri številke povsem enako kot povezava, ki ste jo ustvarili ročno.

3. Prikažite in uvozite številke

Preglejte številke, vidne vašim poverilnicam, ki še niso v organizaciji ThunderPhone:

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

Nato uvozite želene:

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"]}'

Vsak uvoz postane vir telefonske številke v vaši organizaciji z source="voip" in status="provisioning".

4. Preverite vsako uvoženo številko

Uvoz številko registrira kot razpoložljivo; za dejansko usmerjanje klicev prek nje je potrebno preverjanje. Pri povezavah s ponudniki (Twilio, Telnyx) to znova preveri poverilnice ponudnika in dosegljivost SIP. Pri povezavi ročni SIP se izvede kratek preizkusni klic (nekaj sekund, samodejno prekinjen) s številke, prek vašega SIP trunka, na številko ThunderPhone — tako se dejansko preverijo uporabniško ime, geslo, transport in odhodno usmerjanje trunka. Vaš operater ta klic zaračuna enako kot vsak drug klic.

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

Ob uspehu se voip_verification_status spremeni v verified in številka dobi status="active". Ob napaki odgovor natančno navede, kaj ni uspelo — pri ročnem trunku je to odgovor SIP operaterja, na primer "zavrnjene poverilnice ThunderPhone (SIP 401)" ali "klica ni bilo mogoče usmeriti (SIP 404)" — odpravite težavo (poverilnice, dovoljeni izvorni IP-naslovi, manjkajoča dodelitev trunka na nadzorni plošči ponudnika) in znova izvedite klic.

5. Dodelite agente in sprejmite klic

Ko je številka preverjena, dohodne/odhodne agente dodelite enako kot za številko ThunderPhone. Glejte Obravnava dohodnih klicev in Izvajanje odhodnih klicev.

Menjava poverilnic

Ko se ključ ponudnika zamenja, znova izvedite postopek preskusi in nato posodobi:

# 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"
  }'

Povezava ostane vzpostavljena — številk ni treba znova uvoziti.


Naslednji koraki