ThunderPhone 2.0 on nüüd saadaval.Iseteenindusena alates 2 senti/min.Loe uudist

Developer cookbook

Kasuta oma numbreid (VoIP, API)

Ühenda Twilio, Telnyx, SignalWire, Vonage, Plivo või mis tahes muu SIP-trunk SIP-i kaudu, impordi juba omatavad telefoninumbrid ning lase ThunderPhone

Heaks kiidetud ThunderPhone'i numbritega saab teha väljaminevaid kõnesid ja käivitada kampaaniaid. Kui eelistad kasutada oma numbreid oma VoIP-teenusepakkuja kaudu, juhendab see juhend ühendamise protsessi: testi mandaate → loo ühendus → impordi numbrid → kinnita.

Toetatud teenusepakkujad

Teenusepakkujaprovider idMärkused
TwiliotwilioAccount SID + Auth Token; üks ühendus iga Twilio konto või alamkonto kohta (vt Twilio alamkontod)
TelnyxtelnyxAPI-võti; juhendatud seadistamine on saadaval (setup_method: guided_telnyx)
SignalWiresignalwireTeenusepakkuja natiivset ühendust pole; ühenda see manual-ina SignalWire'i SIP-eelseadistusega
VonagevonageTeenusepakkuja natiivset ühendust pole; ühenda see manual-ina Vonage'i SIP-eelseadistusega
Käsitsi SIPmanualMis tahes SIP-trunk, sealhulgas SignalWire, Vonage ja Plivo. Kui alustad juhtpaneelil ühe sellise teenusepakkuja paaniga, on ühendus endiselt manual ja salvestab valiku sip_config.preset-i (signalwire, vonage või plivo)

1. Testi mandaate

Enne püsiva VoIP-ühenduse loomist kontrolli teenusepakkuja mandaate, et kinnitada nende toimivust. See tagastab verification_evidence_id, mille edastad loomise etappi, et mandaatide testimise eest ei võetaks tasu kaks korda.

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

Kui mõni kontroll ebaõnnestub, on vastuse status väärtus fail ning checks näitab, milline etapp nurjus. Paranda teenusepakkuja poolne konfiguratsioon (trunki määramine, IP-lubatud loend, väljaminevate kõnede autoriseerimine) ja proovi uuesti.

2. Loo ühendus

Edasta äsja saadud verification_evidence_id:

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

Vastus on VoipConnectioni objekt olekuga status="connected". Volitused salvestatakse serveripoolselt ja neid ei tagastata järgmiste GET-päringutega kunagi lihttekstina — volituste vahetamiseks käivita uus test ja saada PATCH-päring uute tõenditega.

Twilio alamkontod

Twilio ühendus on seotud ühe Twilio kontoga, mille Account SID-i ja Auth Tokenit see sisaldab. Twilio hoiab telefoninumbreid ja SIP-trunke iga alamkonto sees, seega näeb peakontoga loodud ühendus ainult peakonto enda numbreid ning olemasolevat ühendust ei saa hiljem teisele alamkontole ümber lülitada.

Alamkontodel olevate numbrite kasutamiseks loo iga alamkonto jaoks üks ühendus. Töölaud teeb seda sinu eest: kui ühendad aktiivsete alamkontodega ülemkonto, kuvatakse need seadistusdialoogis, märgid soovitud kontod ja ThunderPhone loob igas neist ühenduse (ning SIP-magistraali). Sama töövoog on saadaval API kaudu:

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

Vastus sisaldab iga alamkonto kohta ühe rea, mille status on created, skipped (juba ühendatud) või failed, ning error, mille põhjal saad tegutseda. Read on sõltumatud, seega ühe alamkonto tõrge ei blokeeri kunagi teisi ning discovery_id kehtib 30 minutit, nii et nurjunud rida saab lihtsalt uuesti proovida. Alamkonto tokenid loetakse Twiliost tuvastamise ajal ja salvestatakse uuele ühendusele; neid ei tagastata kunagi API kaudu. Iga uus ühendus impordib ja kontrollib seejärel numbreid täpselt nagu käsitsi loodud ühendus. Lisa "enable_transfers": true, et lubada kõnede edastamine ka iga uue ühenduse SIP-trunkis; sealne tõrge esitatakse selle ühenduse test_result.transfer_enable_error väljal ega nurja rida.

3. Loetle ja impordi numbrid

Vaata volitustele nähtavaid numbreid, mis ei ole veel ThunderPhone'i organisatsioonis:

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

Seejärel impordi soovitud numbrid:

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

Iga import muutub sinu organisatsioonis telefoninumbri ressursiks, millel on number_type="voip" ja status="provisioning".

4. Kinnita iga imporditud number

Importimine registreerib numbri saadaolevana; kõnede tegelik suunamine selle kaudu vajab kinnitamist. Teenusepakkuja ühenduste (Twilio, Telnyx) puhul kontrollitakse uuesti teenusepakkuja mandaate ja SIP-i kättesaadavust. Käsitsi seadistatud SIP-ühenduse puhul proovitakse esmalt tagasisilmusega enesekõnet: ThunderPhone teeb lühikese testkõne numbrilt, sinu SIP- trunki kaudu ja tagasi samale numbrile. Kui see ei kinnita sissetulevat teed, tehakse lühike testkõne numbrilt, sinu SIP-trunki kaudu ja ThunderPhone'i numbrile. Need testid kontrollivad trunki kasutajanime, parooli, transporti, väljaminevat marsruutimist ja sissetulevate kõnede edastust. Sinu operaator arveldab nende kõnede eest nagu mis tahes muude kõnede eest.

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

Õnnestumisel muutub voip_verification_status väärtuseks verified ja number saab oleku status="active". Sinu Telnyx kontol olev number võtab sissetulevaid kõnesid vastu ka siis, kui selle testkõne ebaõnnestub või väljaminevad kõned pole veel seadistatud: see saab oleku status="active", kus voip_verification_status on määratud väärtusele unverified, ning vastus selgitab põhjust. Ebaõnnestumise korral kirjeldab vastus täpselt, mis nurjus — käsitsi seadistatud trunk-liini puhul on selleks operaatori SIP-vastus, näiteks "ThunderPhone'i autentimisandmed lükati tagasi (SIP 401)" või "kõnet ei saanud suunata (SIP 404)" — paranda probleem (autentimisandmed, lubatud lähte-IP-aadressid, puuduva trunk-liini määrang operaatori juhtpaneelil) ja proovi uuesti.

Lubatud loendisse lisatud käsitsi seadistatud SIP-ühenduse puhul nurjub sissetuleva kõne test samuti siis, kui need lubatud lähte-IP-aadressid blokeeriksid tegeliku sissetuleva kõne.

5. Määra häälagendid ja võta kõne vastu

Kui number on kinnitatud, määra sissetulevate ja väljaminevate kõnede häälagendid samamoodi nagu ThunderPhone'i numbri puhul. Vaata Sissetulevate kõnede haldamine ja Väljaminevate kõnede tegemine.

Autentimisandmete vahetamine

Kui teenusepakkuja võti vahetub, korda testimise ja seejärel uuendamise protsessi:

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

Ühendus jääb paika — numbreid ei ole vaja uuesti importida.


Järgmised sammud