ThunderPhone 2.0 yayında.Hemen kendiniz kullanmaya başlayın; dakikası 2 sentten başlayan fiyatlarla.Duyuruyu okuyun

Developer cookbook

Kendi numaralarınızı getirin (VoIP, API)

Twilio, Telnyx, SignalWire, Vonage, Plivo veya diğer herhangi bir SIP trunk

Onaylı ThunderPhone numaraları giden aramalar yapabilir ve kampanyalar yürütebilir. Kendi VoIP sağlayıcınız üzerinden size ait numaraları kullanmayı tercih ediyorsanız, bu kılavuz bağlantı akışında size yol gösterir: kimlik bilgilerini test edin → bağlantı oluşturun → numaraları içe aktarın → doğrulayın.

Desteklenen sağlayıcılar

Sağlayıcıprovider kimliğiNotlar
TwiliotwilioHesap SID'si + Kimlik Doğrulama Belirteci; her Twilio hesabı veya alt hesabı için bir bağlantı (Twilio alt hesapları bölümüne bakın)
TelnyxtelnyxAPI anahtarı; rehberli başlangıç kurulumu kullanılabilir (setup_method: guided_telnyx)
SignalWiresignalwireYerel sağlayıcı bağlantısı yoktur; SignalWire SIP ön ayarıyla manual olarak bağlayın
VonagevonageYerel sağlayıcı bağlantısı yoktur; Vonage SIP ön ayarıyla manual olarak bağlayın
Manuel SIPmanualSignalWire, Vonage ve Plivo dahil olmak üzere herhangi bir SIP trunk'ı. Kontrol panelinde bu sağlayıcı kutucuklarından biriyle başlarsanız bağlantı yine manual olur ve seçimi sip_config.preset içinde (signalwire, vonage veya plivo) saklar

1. Kimlik bilgilerini test edin

Kalıcı bir VoIP bağlantısı oluşturmadan önce, çalıştıklarını doğrulamak için sağlayıcı kimlik bilgilerini sınayın. Bu işlem, oluşturma adımına ileteceğiniz bir verification_evidence_id döndürür; böylece kimlik bilgileri test için iki kez ücretlendirilmez.

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

Herhangi bir kontrol başarısız olursa, yanıt status değeri fail olur ve checks hangi adımın başarısız olduğunu gösterir. Sağlayıcı tarafındaki yapılandırmayı (trunk ataması, IP izin listesi, giden çağrı yetkilendirmesi) düzeltin ve yeniden deneyin.

2. Bağlantıyı oluşturun

Az önce aldığınız verification_evidence_id değerini iletin:

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

Yanıt, status="connected" durumunda bir VoipConnection nesnesidir. Kimlik bilgileri sunucu tarafında saklanır ve sonraki GET isteklerinde hiçbir zaman düz metin olarak döndürülmez — yenilemek için yeni bir test çalıştırın ve yeni kanıtla PATCH isteği gönderin.

Twilio alt hesapları

Bir Twilio bağlantısı, içerdiği Account SID ve Auth Token bilgilerine sahip tek Twilio hesabına bağlıdır. Twilio, telefon numaralarını ve SIP trunk'larını her alt hesap içinde tutar; bu nedenle ana hesapla oluşturulan bir bağlantı yalnızca ana hesabın kendi numaralarını görür ve mevcut bir bağlantı daha sonra farklı bir alt hesaba geçirilemez.

Alt hesaplarda bulunan numaralara erişmek için her alt hesap için bir bağlantı oluşturun. Kontrol paneli bunu sizin için yapar: etkin alt hesapları olan bir ana hesabı bağladığınızda, kurulum iletişim kutusu bunları listeler, istediklerinizi işaretlersiniz ve ThunderPhone her birinde bir bağlantı (ve bir SIP trunk'ı) oluşturur. Aynı akış API üzerinden de kullanılabilir:

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

Yanıt, her alt hesap için bir satır içerir; status değeri created, skipped (zaten bağlı) veya failed olur ve işlem yapabileceğiniz bir error da içerir. Satırlar birbirinden bağımsızdır; bu nedenle bir alt hesaptaki hata diğerlerini asla engellemez. Ayrıca discovery_id 30 dakika boyunca geçerli kalır, böylece başarısız bir satırı yeniden deneyebilirsiniz. Alt hesap token'ları keşif sırasında Twilio'dan okunur ve yeni bağlantıda saklanır; API tarafından hiçbir zaman döndürülmez. Her yeni bağlantı, elle oluşturduğunuz bir bağlantıyla tamamen aynı şekilde numaraları içe aktarır ve doğrular. Her yeni bağlantının SIP trunk'ında çağrı aktarımlarını da etkinleştirmek için "enable_transfers": true ekleyin; buradaki bir hata, ilgili bağlantının test_result.transfer_enable_error alanında bildirilir ve satırı başarısız kılmaz.

3. Numaraları listeleyin ve içe aktarın

Kimlik bilgilerinizin görebildiği ve henüz bir ThunderPhone kuruluşunda bulunmayan numaraları inceleyin:

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

Ardından istediklerinizi içe aktarın:

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

Her içe aktarma, kuruluşunuzda number_type="voip" ve status="provisioning" değerlerine sahip bir telefon numarası kaynağına dönüşür.

4. İçe aktarılan her numarayı doğrulayın

İçe aktarma, numarayı kullanılabilir olarak kaydeder; çağrıların gerçekten bu numara üzerinden yönlendirilmesi doğrulama gerektirir. Sağlayıcı bağlantılarında (Twilio, Telnyx) bu işlem sağlayıcı kimlik bilgilerini ve SIP erişilebilirliğini yeniden kontrol eder. manuel SIP bağlantısında önce geri döngülü bir öz çağrı dener: ThunderPhone numaradan başlayan, SIP trunk'ınız üzerinden geçen ve aynı numaraya geri dönen kısa bir yoklama çağrısı yapar. Bu işlem gelen çağrı yolunu doğrulamazsa, numaradan başlayan, SIP trunk'ınız üzerinden geçen ve bir ThunderPhone numarasına giden kısa bir yoklama çağrısına geri döner. Bu testler trunk'ın kullanıcı adını, parolasını, aktarımını, giden çağrı yönlendirmesini ve gelen çağrı teslimini kontrol eder. Operatörünüz bu çağrıları diğer çağrılar gibi ücretlendirir.

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

Başarılı olduğunda voip_verification_status değeri verified olur ve numara status="active" durumuna geçer. Kendi Telnyx hesabınızdaki bir numara, test çağrısı başarısız olduğunda veya giden çağrılar henüz ayarlanmamışsa bile gelen çağrıları almaya devam eder: voip_verification_status değeri unverified olarak ayarlanmış şekilde status="active" durumuna geçer ve yanıt nedenini belirtir. Başarısızlık durumunda yanıt, neyin başarısız olduğunu açıklar — manuel bir trunk için bu, operatörün SIP yanıtıdır; örneğin "ThunderPhone kimlik bilgileri reddedildi (SIP 401)" veya "bir çağrı yönlendirilemedi (SIP 404)" — sorunu giderin (kimlik bilgileri, izin verilen kaynak IP'leri, sağlayıcı panosunda eksik trunk ataması) ve yeniden çağırın.

İzin listesine alınmış manuel SIP bağlantısında, bu İzin Verilen Kaynak IP'ler gerçek bir gelen çağrıyı engelliyorsa gelen çağrı testi de başarısız olur.

5. Ajanları atayın ve çağrı alın

Numara doğrulandıktan sonra, gelen / giden ajanları bir ThunderPhone numarasıyla aynı şekilde atarsınız. Bkz. Gelen çağrıları yönetin ve Giden çağrılar yapın.

Kimlik bilgilerini yenileme

Bir sağlayıcı anahtarı yenilendiğinde, önce test edip ardından güncelleme akışını yeniden çalıştırın:

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

Bağlantı olduğu yerde kalır — numaraları yeniden içe aktarmanız gerekmez.


Sonraki adımlar