Το ThunderPhone 2.0 είναι εδώ.Ξεκινήστε μόνοι σας, από 2¢/λεπτό.Διαβάστε την ανακοίνωση

Developer cookbook

Χρησιμοποιήστε τους δικούς σας αριθμούς (VoIP, API)

Συνδέστε το Twilio ή το Telnyx — ή οποιοδήποτε SIP trunk — εισαγάγετε τους τηλεφωνικούς αριθμούς που ήδη διαθέτετε και επιτρέψτε στους πράκτορες ThunderPhone να απαντούν και να πραγματοποιούν κλήσεις μέσω αυτών.

Οι αριθμοί ThunderPhone καλύπτουν τις εισερχόμενες κλήσεις, αλλά οι εξερχόμενες κλήσεις και οι καμπάνιες χρειάζονται αριθμούς που σας ανήκουν μέσω του δικού σας παρόχου VoIP. Αυτός ο οδηγός σάς καθοδηγεί στη ροή τριών βημάτων: δοκιμή διαπιστευτηρίων → δημιουργία σύνδεσης → εισαγωγή αριθμών → επαλήθευση.

Υποστηριζόμενοι πάροχοι

ΠάροχοςΑναγνωριστικό providerΣημειώσεις
TwiliotwilioSID λογαριασμού + Διακριτικό ελέγχου ταυτότητας· μία σύνδεση ανά λογαριασμό ή υπολογαριασμό Twilio (δείτε υπολογαριασμούς Twilio)
TelnyxtelnyxΚλειδί API· διαθέσιμη καθοδηγούμενη ενσωμάτωση (setup_method: guided_telnyx)
SignalWiresignalwireΣύντομα διαθέσιμο — συνδεθείτε σήμερα μέσω μη αυτόματου SIP
VonagevonageΣύντομα διαθέσιμο — συνδεθείτε σήμερα μέσω μη αυτόματου SIP
Μη αυτόματο SIPmanualΟποιοδήποτε SIP trunk — χρησιμοποιήστε τη δική σας διαμόρφωση

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 θα δείχνει ποιο βήμα απέτυχε. Διορθώστε τη διαμόρφωση στην πλευρά του παρόχου (ανάθεση trunk, λίστα επιτρεπόμενων 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..."
  }'

Η απόκριση είναι ένα αντικείμενο VoipConnection με status="connected". Τα διαπιστευτήρια αποθηκεύονται στην πλευρά του διακομιστή και δεν επιστρέφονται ποτέ ως απλό κείμενο από επόμενα αιτήματα GET — για εναλλαγή, εκτελέστε νέο test και PATCH με τα νέα αποδεικτικά στοιχεία.

Δευτερεύοντες λογαριασμοί Twilio

Μια σύνδεση Twilio συνδέεται με τον μοναδικό λογαριασμό Twilio του οποίου διαθέτει το Account SID και το Auth Token. Το Twilio διατηρεί αριθμούς τηλεφώνου και κορμούς SIP μέσα σε κάθε δευτερεύοντα λογαριασμό, επομένως μια σύνδεση που δημιουργείται με τον γονικό λογαριασμό βλέπει μόνο τους αριθμούς του γονικού λογαριασμού και μια υπάρχουσα σύνδεση δεν μπορεί αργότερα να μεταφερθεί σε διαφορετικό δευτερεύοντα λογαριασμό (η ενημέρωση απορρίπτεται επειδή ο κορμός 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. Κάθε νέα σύνδεση έπειτα εισάγει και επαληθεύει αριθμούς ακριβώς όπως μια σύνδεση που δημιουργήσατε χειροκίνητα.

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

Κάθε εισαγωγή γίνεται ένας πόρος αριθμού τηλεφώνου στον οργανισμό σας με source="voip" και status="provisioning".

4. Επαληθεύστε κάθε εισαγόμενο αριθμό

Η εισαγωγή καταχωρεί τον αριθμό ως διαθέσιμο· η πραγματική δρομολόγηση κλήσεων μέσω αυτού απαιτεί επαλήθευση. Για συνδέσεις παρόχων (Twilio, Telnyx), αυτό επανελέγχει τα διαπιστευτήρια του παρόχου και την προσβασιμότητα SIP. Για μια χειροκίνητη σύνδεση 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". Σε περίπτωση αποτυχίας, η απόκριση αναφέρει αναλυτικά τι απέτυχε — για έναν χειροκίνητο κορμό, πρόκειται για την απάντηση SIP του παρόχου, για παράδειγμα «απορρίφθηκαν τα διαπιστευτήρια του ThunderPhone (SIP 401)» ή «δεν ήταν δυνατή η δρομολόγηση κλήσης (SIP 404)» — διορθώστε το ζήτημα (διαπιστευτήρια, επιτρεπόμενες IP προέλευσης, αντιστοίχιση κορμού που λείπει στον πίνακα ελέγχου του παρόχου) και καλέστε ξανά.

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

Η σύνδεση παραμένει στη θέση της — δεν χρειάζεται να εισαγάγετε ξανά αριθμούς.


Επόμενα βήματα