ThunderPhone 2.0 jau čia.Viską atlikite savarankiškai – nuo 2 ct/min.Skaityti pranešimą

Developer cookbook

Naudokite savo numerius (VoIP, API)

Prijunkite Twilio, Telnyx, SignalWire, Vonage, Plivo ar bet kurį kitą SIP magistralinį ryšį per SIP, importuokite jau turimus telefono numerius ir leiskite ThunderPhone agentams į juos atsiliepti bei iš jų skambinti.

Patvirtinti ThunderPhone numeriai gali skambinti ir vykdyti kampanijas. Jei norite naudoti jums priklausančius numerius per savo VoIP teikėją, šiame vadove aprašomas prisijungimo procesas: išbandyti prisijungimo duomenis → sukurti jungtį → importuoti numerius → patvirtinti.

Palaikomi teikėjai

Teikėjasprovider IDPastabos
TwiliotwilioPaskyros SID + autentifikavimo prieigos raktas; viena jungtis kiekvienai Twilio paskyrai ar antrinei paskyrai (žr. Twilio antrinės paskyros)
TelnyxtelnyxAPI raktas; galima vedama pradinė sąranka (setup_method: guided_telnyx)
SignalWiresignalwireNėra vietinės teikėjo jungties; prijunkite kaip manual naudodami SignalWire SIP išankstinį nustatymą
VonagevonageNėra vietinės teikėjo jungties; prijunkite kaip manual naudodami Vonage SIP išankstinį nustatymą
Rankinis SIPmanualBet kuri SIP magistralė, įskaitant SignalWire, Vonage ir Plivo. Jei valdymo skydelyje pradedate nuo vienos iš šių teikėjų plytelių, jungtis vis tiek yra manual ir pasirinkimą saugo sip_config.preset (signalwire, vonage arba plivo)

1. Išbandykite prisijungimo duomenis

Prieš kurdami išsaugomą VoIP jungtį, patikrinkite teikėjo prisijungimo duomenis, kad patvirtintumėte, jog jie veikia. Taip gausite verification_evidence_id, kurį perduosite kūrimo veiksmui, kad už prisijungimo duomenų testavimą nebūtų imamas mokestis du kartus.

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

Jei kuris nors patikrinimas nepavyksta, atsakymo status bus fail, o checks nurodys, kuris veiksmas nepavyko. Ištaisykite teikėjo pusės konfigūraciją (magistralinio ryšio priskyrimą, IP leidžiamų adresų sąrašą, leidimą skambinti) ir bandykite dar kartą.

2. Sukurkite ryšį

Pateikite ką tik gautą 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..."
  }'

Atsakymas yra VoipConnection objektas, kurio status="connected". Prisijungimo duomenys saugomi serverio pusėje ir vėlesnėse GET užklausose niekada negrąžinami kaip paprastasis tekstas — norėdami juos pakeisti, paleiskite naują test ir atlikite PATCH su naujais įrodymais.

Twilio subpaskyros

Twilio ryšys susietas su viena Twilio paskyra, kurios paskyros SID ir autentifikavimo prieigos raktą jis turi. Twilio saugo telefonų numerius ir SIP magistrales kiekvienoje antrinėje paskyroje, todėl su pirmine paskyra sukurtas ryšys mato tik pačios pirminės paskyros numerius, o esamo ryšio vėliau negalima perjungti į kitą antrinę paskyrą.

Norėdami pasiekti subpaskyrose esančius numerius, sukurkite po vieną ryšį kiekvienai subpaskyrai. Valdymo skydelis tai atlieka už jus: prijungus pagrindinę paskyrą su aktyviomis subpaskyromis, sąrankos dialogo lange jos pateikiamos sąraše, pažymite norimas, o ThunderPhone kiekvienoje sukuria ryšį (ir SIP magistralę). Tą patį procesą galima atlikti per API:

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

Atsakyme pateikiama po vieną eilutę kiekvienai papildomai paskyrai su status reikšme created, skipped (jau prijungta) arba failed, taip pat su error, pagal kurią galite imtis veiksmų. Eilutės yra nepriklausomos, todėl vienos papildomos paskyros klaida niekada neblokuoja kitų, o discovery_id galioja 30 minučių, todėl nepavykusią eilutę galima tiesiog bandyti dar kartą. Papildomų paskyrų prieigos raktai aptikimo metu nuskaitomi iš Twilio ir išsaugomi naujame ryšyje; jie niekada negrąžinami per API. Kiekvienas naujas ryšys tada importuoja ir patikrina numerius lygiai taip pat, kaip rankiniu būdu sukurtas ryšys. Pridėkite "enable_transfers": true, kad taip pat įjungtumėte skambučių peradresavimą kiekvieno naujo ryšio SIP magistralei; klaida ten nurodoma to ryšio test_result.transfer_enable_error ir nelaikoma eilutės klaida.

3. Peržiūrėkite ir importuokite numerius

Peržiūrėkite jūsų prisijungimo duomenims matomus numerius, kurie dar nėra ThunderPhone organizacijoje:

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

Tada importuokite norimus numerius:

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

Kiekvienas importuotas numeris jūsų organizacijoje tampa telefono numerio ištekliumi su number_type="voip" ir status="provisioning".

4. Patvirtinkite kiekvieną importuotą numerį

Importavus numeris užregistruojamas kaip pasiekiamas; norint iš tikrųjų nukreipti per jį skambučius, reikia patvirtinimo. Teikėjo jungtims (Twilio, Telnyx) tai iš naujo patikrina teikėjo kredencialus ir SIP pasiekiamumą. Naudojant rankinę SIP jungtį, pirmiausia bandomas grįžtamojo ryšio skambutis: ThunderPhone atlieka trumpą bandomąjį skambutį iš numerio, per jūsų SIP magistralę, atgal į tą patį numerį. Jei taip nepavyksta patvirtinti įeinančio ryšio, sistema atlieka trumpą bandomąjį skambutį iš numerio, per jūsų SIP magistralę, į ThunderPhone numerį. Šiais bandymais tikrinamas magistralės naudotojo vardas, slaptažodis, perdavimo protokolas, išeinančių skambučių maršrutizavimas ir įeinančių skambučių pristatymas. Jūsų ryšio teikėjas už šiuos skambučius apmokestina kaip už bet kuriuos kitus.

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

Sėkmės atveju voip_verification_status pakeičiama į verified, o numerio būsena tampa status="active". Numeris jūsų Telnyx paskyroje toliau priima įeinančius skambučius, jei bandomasis skambutis nepavyksta arba dar nesukonfigūruoti išeinantys skambučiai: jo būsena tampa status="active", o voip_verification_status nustatoma į unverified, ir atsakyme nurodoma priežastis. Nesėkmės atveju atsakyme išsamiai nurodoma, kas nepavyko — rankinio magistralinio ryšio atveju tai yra ryšio teikėjo SIP atsakymas, pavyzdžiui, "atmetė ThunderPhone prisijungimo duomenis (SIP 401)" arba "nepavyko nukreipti skambučio (SIP 404)" — ištaisykite problemą (prisijungimo duomenis, leidžiamus šaltinio IP adresus, trūkstamą magistralinio ryšio priskyrimą teikėjo valdymo skydelyje) ir bandykite dar kartą.

Jei rankinė SIP jungtis įtraukta į leidžiamųjų sąrašą, įeinančio skambučio testas taip pat nepavyks, jei tie leidžiami šaltinio IP adresai blokuotų realų įeinantį skambutį.

5. Priskirkite agentus ir priimkite skambutį

Patvirtinus numerį, įeinančių ir išeinančių skambučių agentus priskiriate taip pat, kaip ThunderPhone numeriui. Žr. Įeinančių skambučių tvarkymas ir Išeinančių skambučių inicijavimas.

Prisijungimo duomenų keitimas

Kai pasikeičia teikėjo raktas, dar kartą atlikite tikrinimo ir atnaujinimo eigą:

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

Ryšys išlieka — numerių iš naujo importuoti nereikia.


Kiti veiksmai