Open in
Använd dina egna nummer (VoIP, API)
Anslut Twilio, Telnyx, SignalWire, Vonage, Plivo eller någon annan SIP-trunk via SIP, importera telefonnumren du redan äger och låt ThunderPhone-röstagenter besvara och ringa samtal med dem.
Godkända ThunderPhone-nummer kan ringa utgående samtal och köra kampanjer. Om du föredrar att använda nummer du äger via din egen VoIP-leverantör går den här guiden igenom anslutningsflödet: testa autentiseringsuppgifter → skapa anslutning → importera nummer → verifiera.
Leverantörer som stöds
| Leverantör | provider-id | Anteckningar |
|---|---|---|
| Twilio | twilio | Account SID + Auth Token; en anslutning per Twilio-konto eller underkonto (se Twilio-underkonton) |
| Telnyx | telnyx | API-nyckel; guidad onboarding tillgänglig (setup_method: guided_telnyx) |
| SignalWire | signalwire | Ingen inbyggd leverantörsanslutning; anslut den som manual med SignalWire SIP-förinställningen |
| Vonage | vonage | Ingen inbyggd leverantörsanslutning; anslut den som manual med Vonage SIP-förinställningen |
| Manuell SIP | manual | Valfri SIP-trunk, inklusive SignalWire, Vonage och Plivo. Om du börjar från en av dessa leverantörsrutor i instrumentpanelen är anslutningen fortfarande manual och lagrar valet i sip_config.preset (signalwire, vonage eller plivo) |
1. Testa autentiseringsuppgifter
Innan du skapar en sparad VoIP-anslutning kontrollerar du leverantörens
autentiseringsuppgifter för att bekräfta att de fungerar. Detta returnerar ett
verification_evidence_id som du skickar till steget för att skapa anslutningen, så att
autentiseringsuppgifterna inte debiteras två gånger för testning.
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" }
}'{
"status": "pass",
"verification_evidence_id": "b9a2...",
"suggested_connection_name": "Telnyx: Acme Main (+15550001234)",
"checks": {
"credentials_valid": true,
"inbound_reachable": true,
"outbound_authorized": true
}
}Om någon kontroll misslyckas blir svarets status fail och checks
visar vilket steg som misslyckades. Åtgärda konfigurationen hos leverantören
(trunktilldelning, IP-tillåtelselista, auktorisering för utgående samtal) och försök igen.
2. Skapa anslutningen
Skicka verification_evidence_id som du nyss fick:
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..."
}'Svaret är ett VoipConnection-objekt
med status="connected". Autentiseringsuppgifter och andra hemliga anslutningsvärden lagras på serversidan och
returneras aldrig i klartext vid efterföljande GET-anrop — för att rotera dem kör du ett nytt
test och PATCH med det nya underlaget.
Twilio-underkonton
En Twilio-anslutning är knuten till det enda Twilio-konto vars Account SID och Auth Token den innehåller. Twilio lagrar telefonnummer och SIP- trunkar i varje underkonto, så en anslutning som skapats med huvudkontot endast kan se huvudkontots egna nummer, och en befintlig anslutning kan inte senare växlas till ett annat underkonto.
För att nå nummer i underkonton skapar du en anslutning per underkonto. Instrumentpanelen gör detta åt dig: när du ansluter ett huvudkonto med aktiva underkonton listar installationsdialogrutan dem, du markerar dem du vill använda, och ThunderPhone skapar en anslutning (och en SIP-trunk) i var och en. Samma flöde är tillgängligt via API:t:
# 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": "..."}}'{
"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..."]}'Svaret innehåller en rad per underkonto med status som
created, skipped (redan anslutet) eller failed, samt ett error
som du kan agera på. Raderna är oberoende, så ett fel i ett underkonto
blockerar aldrig de andra, och ett discovery_id är giltigt i 30
minuter så att en misslyckad rad enkelt kan försöka igen. Underkontots token
hämtas från Twilio vid identifiering och lagras i den nya anslutningen;
de returneras aldrig av API:et. Varje ny anslutning importerar och
verifierar sedan nummer på exakt samma sätt som en anslutning du skapade manuellt.
Lägg till "enable_transfers": true för att även aktivera samtalsöverföringar för varje
ny anslutnings SIP-trunk. Ett fel där rapporteras i anslutningens
test_result.transfer_enable_error och gör inte att raden misslyckas.
3. Lista och importera nummer
Granska numren som är synliga för dina autentiseringsuppgifter och som inte redan finns i en ThunderPhone-organisation:
curl https://api.thunderphone.com/v1/voip-connections/5/available-numbers \
-H "Authorization: Bearer sk_live_YOUR_API_KEY"Importera sedan de du vill ha:
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"]}'Varje import blir en telefonnummerresurs
i din organisation med number_type="voip" och status="provisioning".
4. Verifiera varje importerat nummer
Importen registrerar numret som tillgängligt; att faktiskt dirigera samtal via det kräver verifiering. För leverantörsanslutningar (Twilio, Telnyx) kontrolleras leverantörens inloggningsuppgifter och SIP-nåbarhet på nytt. För en manuell SIP-anslutning försöker ThunderPhone först med ett loopback-självsamtal: ThunderPhone genomför ett kort testsamtal från numret, via din SIP- trunk, tillbaka till samma nummer. Om det inte verifierar den inkommande vägen faller det tillbaka på ett kort testsamtal från numret, via din SIP-trunk, till ett ThunderPhone-nummer. Dessa tester kontrollerar trunkens användarnamn, lösenord, transport, utgående dirigering och inkommande leverans. Din operatör debiterar dessa samtal som alla andra.
curl -X POST https://api.thunderphone.com/v1/phone-numbers/{id}/verify-voip \
-H "Authorization: Bearer sk_live_YOUR_API_KEY"Vid lyckat resultat ändras voip_verification_status till verified och
numret får status="active". Ett nummer i ditt eget Telnyx-konto
fortsätter att ta emot inkommande samtal om testsamtalet misslyckas eller om
utgående samtal ännu inte har konfigurerats: det får status="active" med
voip_verification_status inställt på unverified, och svaret förklarar
varför. Vid fel anger svaret
vad som misslyckades — för en manuell trunk är det operatörens SIP-svar, till
exempel "avvisade ThunderPhones autentiseringsuppgifter (SIP 401)" eller "kunde
inte dirigera ett samtal (SIP 404)" — åtgärda det (autentiseringsuppgifter,
tillåtna käll-IP-adresser, en saknad trunk-tilldelning i leverantörens
instrumentpanel) och ring igen.
För en tillåtslistad manuell SIP-anslutning misslyckas testet av inkommande samtal också om dessa tillåtna käll-IP-adresser skulle blockera ett verkligt inkommande samtal.
5. Tilldela agenter och ta emot ett samtal
När numret har verifierats tilldelar du röstagent för inkommande / utgående samtal på samma sätt som för ett ThunderPhone-nummer. Se Hantera inkommande samtal och Ring utgående samtal.
Roterande autentiseringsuppgifter
När en leverantörsnyckel roteras kör du test-och-uppdatera-flödet igen:
# 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"
}'Anslutningen ligger kvar — du behöver inte importera numren på nytt.