ThunderPhone 2.0 आता लाइव्ह आहे.स्वतःच सुरू करा—2¢/मिनिटपासून.घोषणा वाचा

Developer cookbook

तुमचे स्वतःचे नंबर आणा (VoIP, API)

Twilio, Telnyx, SignalWire, Vonage, Plivo किंवा इतर कोणताही SIP ट्रंक SIP द्वारे कनेक्ट करा, तुमच्याकडे आधीपासून असलेले फोन नंबर इम्पोर्ट करा आणि ThunderPhone एजंटना त्यांवर कॉल स्वीकारू व करू द्या.

मंजूर ThunderPhone क्रमांकांवरून आउटबाउंड कॉल करता येतात आणि मोहिमा चालवता येतात. तुम्ही तुमच्या स्वतःच्या VoIP प्रदात्यामार्फत तुमचे स्वतःचे क्रमांक वापरण्यास प्राधान्य देत असल्यास, हे मार्गदर्शक तुम्हाला कनेक्शन प्रक्रियेतून मार्गदर्शन करते: क्रेडेन्शियल्स तपासा → कनेक्शन तयार करा → क्रमांक इंपोर्ट करा → पडताळा.

समर्थित प्रदाते

प्रदाताprovider आयडीनोंदी
Twiliotwilioखाते SID + Auth Token; प्रत्येक Twilio खाते किंवा उपखात्यासाठी एक कनेक्शन (Twilio उपखाती पहा)
TelnyxtelnyxAPI की; मार्गदर्शित ऑनबोर्डिंग उपलब्ध (setup_method: guided_telnyx)
SignalWiresignalwireमूळ प्रदाता कनेक्शन नाही; SignalWire SIP प्रीसेटसह manual म्हणून कनेक्ट करा
Vonagevonageमूळ प्रदाता कनेक्शन नाही; Vonage SIP प्रीसेटसह manual म्हणून कनेक्ट करा
मॅन्युअल SIPmanualSignalWire, Vonage आणि Plivo यांसह कोणताही SIP ट्रंक. डॅशबोर्डमधील त्या प्रदाता टाइलपैकी एखाद्यापासून तुम्ही सुरुवात केल्यास, कनेक्शन तरीही manual असते आणि निवड sip_config.preset मध्ये साठवते (signalwire, vonage किंवा plivo)

1. क्रेडेन्शियल्स तपासा

स्थायी VoIP कनेक्शन तयार करण्यापूर्वी, प्रदात्याची क्रेडेन्शियल्स कार्यरत असल्याची खात्री करण्यासाठी त्यांची चाचणी करा. यामुळे verification_evidence_id मिळतो, जो तुम्ही तयार करण्याच्या टप्प्यावर पाठवता, त्यामुळे चाचणीसाठी क्रेडेन्शियल्सवर दुहेरी शुल्क आकारले जात नाही.

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

कोणतीही तपासणी अयशस्वी झाल्यास, प्रतिसादातील status हे fail असेल आणि checks मध्ये कोणता टप्पा अयशस्वी झाला ते दिसेल. प्रदात्याकडील कॉन्फिगरेशन दुरुस्त करा (ट्रंक असाइनमेंट, IP अनुमतीसूची, आउटबाउंड परवानगी) आणि पुन्हा प्रयत्न करा.

2. कनेक्शन तयार करा

तुम्हाला नुकताच मिळालेला 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..."
  }'

प्रतिसाद status="connected" मधील VoipConnection ऑब्जेक्ट असतो. क्रेडेन्शियल्स सर्व्हर-साइड संग्रहित केले जातात आणि पुढील GET विनंत्यांमध्ये कधीही साध्या मजकुरात परत केले जात नाहीत — बदलण्यासाठी नवीन test चालवा आणि नवीन पुराव्यासह PATCH करा.

Twilio सबअकाउंट्स

Twilio कनेक्शन ज्या एकाच Twilio खात्याचा Account SID आणि Auth Token त्यात असतो, त्या खात्याशी जोडलेले असते. Twilio प्रत्येक उपखात्यामध्ये फोन क्रमांक आणि SIP ट्रंक ठेवते, त्यामुळे मूळ खात्याने केलेल्या कनेक्शनला फक्त मूळ खात्याचे स्वतःचे क्रमांक दिसतात आणि विद्यमान कनेक्शन नंतर दुसऱ्या उपखात्यावर बदलता येत नाही.

सबअकाउंट्समधील नंबर वापरण्यासाठी, प्रत्येक सबअकाउंटसाठी एक कनेक्शन तयार करा. डॅशबोर्ड तुमच्यासाठी हे करतो: सक्रिय सबअकाउंट्स असलेले पॅरेंट अकाउंट कनेक्ट केल्यावर, सेटअप डायलॉगमध्ये ते सूचीबद्ध होतात, तुम्ही हवे असलेले निवडता आणि ThunderPhone प्रत्येकामध्ये कनेक्शन (आणि SIP ट्रंक) तयार करते. हाच फ्लो 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..."]}'

प्रतिसादात प्रत्येक उपखात्यासाठी एक पंक्ती असते, ज्यामध्ये status created, skipped (आधीच जोडलेले) किंवा failed असतो, तसेच तुम्ही त्यावर कारवाई करू शकता असा error असतो. पंक्ती स्वतंत्र असतात, त्यामुळे एका उपखात्यातील अपयश इतरांना कधीही अडवत नाही, आणि discovery_id 30 मिनिटांसाठी वैध राहतो, त्यामुळे अयशस्वी पंक्तीवर सहज पुन्हा प्रयत्न करता येतो. शोधाच्या वेळी उपखाता टोकन Twilio मधून वाचले जातात आणि नवीन कनेक्शनमध्ये साठवले जातात; ते API द्वारे कधीही परत केले जात नाहीत. त्यानंतर प्रत्येक नवीन कनेक्शन तुम्ही हाताने तयार केलेल्या कनेक्शनप्रमाणेच क्रमांक आयात करते आणि पडताळते. प्रत्येक नवीन कनेक्शनच्या SIP ट्रंकसाठी कॉल हस्तांतरणही चालू करण्यासाठी "enable_transfers": true जोडा; तेथील अपयश त्या कनेक्शनच्या test_result.transfer_enable_error मध्ये नोंदवले जाते आणि पंक्ती अयशस्वी होत नाही.

3. नंबर सूचीबद्ध करा आणि इंपोर्ट करा

तुमच्या क्रेडेन्शियल्सना दिसणारे आणि आधीच ThunderPhone ऑर्गमध्ये नसलेले नंबर तपासा:

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

नंतर तुम्हाला हवे असलेले नंबर इंपोर्ट करा:

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

प्रत्येक आयात तुमच्या संस्थेमध्ये number_type="voip" आणि status="provisioning" असलेला फोन नंबर रिसोर्स बनतो.

4. प्रत्येक इम्पोर्ट केलेला नंबर सत्यापित करा

इंपोर्ट केल्यावर नंबर उपलब्ध म्हणून नोंदवला जातो; प्रत्यक्षात त्याद्वारे कॉल रूट करण्यासाठी पडताळणी आवश्यक असते. प्रदाता कनेक्शनसाठी (Twilio, Telnyx), यामध्ये प्रदात्याची क्रेडेन्शियल्स आणि SIP रीचेबिलिटी पुन्हा तपासली जाते. मॅन्युअल SIP कनेक्शनसाठी प्रथम लूपबॅक सेल्फ-कॉलचा प्रयत्न केला जातो: ThunderPhone नंबर वरून, तुमच्या SIP ट्रंक द्वारे, त्याच नंबरवर परत एक लहान प्रोब कॉल करते. यामुळे इनबाउंड मार्गाची पडताळणी न झाल्यास, नंबर वरून, तुमच्या SIP ट्रंक द्वारे, ThunderPhone नंबर वर एक लहान प्रोब कॉल केला जातो. या चाचण्या ट्रंकचे युजरनेम, पासवर्ड, ट्रान्सपोर्ट, आउटबाउंड रूटिंग आणि इनबाउंड डिलिव्हरी तपासतात. तुमचा कॅरिअर या कॉल्ससाठी इतर कोणत्याही कॉलप्रमाणे बिल आकारतो.

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

यशस्वी झाल्यावर, voip_verification_status verified मध्ये बदलते आणि नंबर status="active" स्थितीत जातो. तुमच्या स्वतःच्या Telnyx खात्यातील नंबरची चाचणी कॉल अयशस्वी झाल्यास किंवा आउटबाउंड अजून सेट केलेले नसल्यासही तो इनबाउंड कॉल घेत राहतो: voip_verification_status unverified वर सेट करून तो status="active" स्थितीत जातो आणि प्रतिसादात त्याचे कारण दिले जाते. अयशस्वी झाल्यास, प्रतिसादात काय अयशस्वी झाले ते स्पष्टपणे दिले जाते — मॅन्युअल ट्रंकसाठी ते कॅरिअरचे SIP उत्तर असते, उदाहरणार्थ "ThunderPhone ची क्रेडेन्शियल्स नाकारली (SIP 401)" किंवा "कॉल रूट करता आला नाही (SIP 404)" — ते दुरुस्त करा (क्रेडेन्शियल्स, अनुमत स्रोत IPs, प्रोव्हायडर डॅशबोर्डमधील गहाळ ट्रंक असाइनमेंट) आणि पुन्हा कॉल करा.

अॅलोलिस्ट केलेल्या मॅन्युअल SIP कनेक्शनसाठी, ते Allowed Source IPs प्रत्यक्ष इनबाउंड कॉल ब्लॉक करत असल्यास इनकमिंग-कॉल चाचणी देखील अयशस्वी होते.

5. एजंट्स असाइन करा आणि कॉल घ्या

नंबर सत्यापित झाल्यावर, तुम्ही ThunderPhone नंबरप्रमाणेच इनबाउंड / आउटबाउंड एजंट्स असाइन करता. इनबाउंड कॉल हाताळा आणि आउटबाउंड कॉल करा पहा.

क्रेडेन्शियल्स रोटेट करणे

प्रदाता की रोटेट झाल्यावर, टेस्ट-नंतर-अपडेट फ्लो पुन्हा चालवा:

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

कनेक्शन कायम राहते — नंबर पुन्हा इम्पोर्ट करण्याची गरज नाही.


पुढील पायऱ्या