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

Developer cookbook

Σύνδεση μέσω SIP (χωρίς αριθμό τηλεφώνου)

Στείλτε κλήσεις σε έναν πράκτορα ThunderPhone απευθείας από το PBX, τον πάροχο ή την εφαρμογή SIP σας, με ένα εφάπαξ URI SIP ανά κλήση ή μια μόνιμη διεύθυνση SIP.

Αν το δικό σας σύστημα διαχειρίζεται ήδη αριθμούς τηλεφώνου (ένα PBX, μια πλατφόρμα κέντρου επικοινωνίας ή έναν λογαριασμό παρόχου όπου εναλλάσσετε αριθμούς), μπορείτε να στέλνετε κλήσεις σε έναν πράκτορα ThunderPhone μέσω απλού SIP. Δεν εισάγετε ούτε αγοράζετε αριθμό στο ThunderPhone. Το σύστημά σας καλεί μια διεύθυνση SIP και ο πράκτορας απαντά.

Υπάρχουν δύο είδη διεύθυνσης SIP:

URI SIP ανά κλήσηΤελικό σημείο SIP
Μοιάζει μεsip:c-<token>@sip.thunderphone.comsip:agent-<id>-<letters>@sip.thunderphone.com
Δημιουργείται μεPOST /v1/calls/register-sip, μία φορά ανά κλήσηPOST /v1/sip-endpoints, μία φορά
Έλεγχος ταυτότηταςΤο διακριτικό μίας χρήσης στη διεύθυνσηΌνομα χρήστη και κωδικός πρόσβασης SIP digest (και προαιρετικά λίστα επιτρεπόμενων IP προέλευσης)
Κατάλληλο γιαΕφαρμογές που ήδη καλούν ένα API πριν μεταφέρουν μια κλήση· μεταβλητές ανά κλήσηPBX και παρόχους που πρέπει απλώς να «στρέφουν έναν κορμό» στο ThunderPhone
Ισχύει για5 λεπτά, μία κλήσηΜέχρι να το διαγράψετε

Και τα δύο είδη δρομολογούν σε έναν πράκτορα στον οργανισμό σας και εμφανίζονται στο ιστορικό κλήσεων όπως κάθε άλλη εισερχόμενη κλήση.

URI SIP ανά κλήση

1. Καταχωρίστε την κλήση

curl -X POST https://api.thunderphone.com/v1/calls/register-sip \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "agent_id": 12,
    "to_number": "+14155550142",
    "variables": {"customer_name": "Ada"}
  }'
{
  "call_id": 862197007562,
  "sip_uri": "sip:c-1790372992.Qm3xT8vLk2PzR7nYw4HbJa.uF6sD1gK9eW2cX5vB8nM0q@sip.thunderphone.com",
  "expires_at": "2026-09-25T21:49:52Z",
  "agent_id": 12,
  "to_number": "+14155550142"
}
  • Το to_number (προαιρετικό) είναι ο αριθμός που κάλεσε ο καλών από τη δική σας πλευρά. Αποθηκεύεται ως προορισμός της κλήσης στο ιστορικό κλήσεων και ο πράκτορας τον βλέπει ως δικό του αριθμό.
  • Οι variables (προαιρετικές) συμπληρώνουν τα {{placeholders}} στην προτροπή του πράκτορα, με τον ίδιο τρόπο όπως στις εξερχόμενες κλήσεις.
  • Το call_id είναι το αναγνωριστικό που θα έχει η κλήση στο ιστορικό κλήσεων (GET /v1/calls/{call_id}) μόλις συνδεθεί.

2. Καλέστε το URI

Στείλτε την κλήση στο sip_uri εντός 5 λεπτών. Το URI λειτουργεί μόνο για μία κλήση: μόλις μια κλήση το χρησιμοποιήσει, εξαντλείται, ακόμη και αν η κλήση τερματιστεί γρήγορα.

Με το Twilio, για παράδειγμα, επιστρέψτε αυτό το TwiML για την κλήση που θέλετε να μεταβιβάσετε:

<Response>
  <Dial>
    <Sip>sip:c-1790372992.Qm3xT8vLk2PzR7nYw4HbJa.uF6sD1gK9eW2cX5vB8nM0q@sip.thunderphone.com;transport=tcp</Sip>
  </Dial>
</Response>

Από ένα PBX, καλέστε το URI ως προορισμό SIP. Δεν απαιτείται όνομα χρήστη ή κωδικός πρόσβασης· το διακριτικό είναι το διαπιστευτήριο, επομένως αντιμετωπίστε το URI ως κωδικό πρόσβασης μέχρι να χρησιμοποιηθεί.

Τελικό σημείο SIP (μόνιμη διεύθυνση)

1. Δημιουργήστε το τελικό σημείο

curl -X POST https://api.thunderphone.com/v1/sip-endpoints \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"agent_id": 12, "name": "Main PBX"}'
{
  "id": 7,
  "name": "Main PBX",
  "agent_id": 12,
  "sip_uri": "sip:agent-12-jhxmginwjx@sip.thunderphone.com",
  "username": "tp409667538f83",
  "password": "8mJ0…",
  "allowed_source_cidrs": [],
  "status": "active",
  "created_at": "2026-09-25T21:46:18Z"
}

2. Ρυθμίστε το σύστημά σας να το χρησιμοποιεί

Διαμορφώστε έναν κορμό SIP ή έναν προορισμό με:

ΡύθμισηΤιμή
URI SIPτο sip_uri του τελικού σημείου
Όνομα χρήστη / κωδικός πρόσβασηςusername / password (έλεγχος ταυτότητας digest· το ThunderPhone προκαλεί έλεγχο για κάθε κλήση)
ΜεταφοράTCP στη θύρα 5060 ή TLS στη θύρα 5061 (συνιστάται), ή UDP στη θύρα 5060
ΚωδικοποιητέςG.711 (PCMU/PCMA) ή G.722

Αυτές οι ρυθμίσεις μεταφοράς και κωδικοποιητών ισχύουν και για URI ανά κλήση. Δύο λεπτομέρειες δικτύου είναι σημαντικές και για τους δύο τύπους διευθύνσεων:

  • Ακολουθήστε το Record-Route. Μετά το πρώτο INVITE, η υπόλοιπη σηματοδοσία της κλήσης (ACK, τερματισμός, μεταφορές) μεταβαίνει στον συγκεκριμένο διακομιστή ThunderPhone που απάντησε, ο οποίος αναφέρεται στην κεφαλίδα Record-Route (sip-1.thunderphone.com ή sip-2.thunderphone.com, ή στη διεύθυνση IP του). Αν περιορίζετε την εξερχόμενη SIP, επιτρέψτε αυτούς τους κεντρικούς υπολογιστές, καθώς και το sip.thunderphone.com: 172.170.39.202 (sip), 13.86.104.121 (sip-1) και 20.80.98.90 (sip-2).
  • Ο ήχος μεταδίδεται αλλού. Το sip.thunderphone.com μεταφέρει μόνο σηματοδοσία. Επιτρέψτε πολυμέσα (RTP) προς τις διευθύνσεις και τις θύρες στην απάντηση SDP.

Κάθε κλήση προς τη διεύθυνση φτάνει στον πράκτορα του τελικού σημείου, ανεξάρτητα από τον αριθμό που πληκτρολόγησε ο καλών στη δική σας πλευρά. Δεν εισάγετε ποτέ αριθμούς, επομένως η εναλλαγή τους στη δική σας πλευρά δεν απαιτεί καμία αλλαγή στο ThunderPhone.

Μεταβίβαση του αριθμού που κλήθηκε (προαιρετικό)

Για να καταγράψετε ποιον από τους αριθμούς σας κάλεσε ο καλών, στείλτε τον στο INVITE σε μια κεφαλίδα X-Original-To (για παράδειγμα X-Original-To: +14155550142) ή σε μια τυπική κεφαλίδα Diversion. Το ThunderPhone τον αποθηκεύει ως προορισμό της κλήσης.

Ο προορισμός επιλέγεται με αυτή τη σειρά: το to_number που δόθηκε όταν καταχωρίστηκε ένα URI ανά κλήση, έπειτα ένας αριθμός στο X-Original-To, έπειτα ένας στο Diversion. Αν κανένα από αυτά δεν παρέχει αριθμό, εμφανίζεται ως sip:agent-12-jhxmginwjx (η διεύθυνση του τελικού σημείου) για ένα τελικό σημείο ή ως sip:call για ένα URI ανά κλήση.

Με το Twilio μπορείτε να προσθέσετε την κεφαλίδα στο URI SIP: sip:agent-12-jhxmginwjx@sip.thunderphone.com;transport=tcp?X-Original-To=%2B14155550142.

Περιορισμός διευθύνσεων IP προέλευσης (προαιρετικό)

Ορίστε το allowed_source_cidrs ώστε να δέχεται κλήσεις μόνο από τις δικές σας διευθύνσεις σηματοδοσίας, επιπλέον του ονόματος χρήστη και του κωδικού πρόσβασης:

curl -X PATCH https://api.thunderphone.com/v1/sip-endpoints/7 \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"allowed_source_cidrs": ["203.0.113.0/28"]}'

Οι κλήσεις από οποιαδήποτε άλλη διεύθυνση απορρίπτονται πριν φτάσουν στον πράκτορα. Χρησιμοποιήστε τις διευθύνσεις από τις οποίες το σύστημά σας στέλνει σηματοδοσία SIP (για έναν πάροχο όπως το Twilio, τα δημοσιευμένα εύρη IP σηματοδοσίας του), όχι τις διευθύνσεις πολυμέσων σας.

Τι βλέπουν οι καλούντες και το σύστημά σας

  • Αναγνώριση καλούντος: το τμήμα χρήστη της κεφαλίδας From αποθηκεύεται ως ο καλών. Ένας αριθμός τηλεφώνου (ψηφία, προαιρετικά με +, κενά, παύλες, τελείες ή παρενθέσεις) κανονικοποιείται σε E.164· οτιδήποτε άλλο, όπως ένα όνομα χρήστη SIP, διατηρείται όπως στάλθηκε. Διατηρούνται έως 32 χαρακτήρες και ένας απών καλών αποθηκεύεται ως anonymous.
  • Απορριφθείσες κλήσεις: ένα άγνωστο ή ληγμένο URI ανά κλήση λαμβάνει SIP 404 Not Found. Ένα URI ανά κλήση που έχει ήδη χρησιμοποιηθεί, ένα απενεργοποιημένο endpoint ή μια πηγή εκτός της λίστας επιτρεπόμενων (συμπεριλαμβανομένης κάθε κλήσης UDP προς endpoint με λίστα επιτρεπόμενων) αποσυνδέεται πριν ξεκινήσει ο πράκτορας: το σύστημά σας μπορεί να δει την κλήση να αποτυγχάνει ή να συνδέεται και έπειτα να τερματίζεται αμέσως. Αυτές οι απορρίψεις δεν δημιουργούν καταχώριση στο ιστορικό κλήσεων. Αν ο οργανισμός σας δεν έχει διαθέσιμη πίστωση ή έχει φτάσει το όριο δαπανών του, η κλήση απορρίπτεται και εμφανίζεται στο ιστορικό κλήσεων ως αποτυχημένη κλήση χωρίς χρέωση. Για να επαναλάβετε μια προσπάθεια ανά κλήση, καταχωρίστε νέο URI.
  • Μεταφορές: οι τυφλές μεταφορές του πράκτορα λειτουργούν (το ThunderPhone στέλνει SIP REFER, το οποίο πρέπει να αποδέχεται το σύστημά σας). Οι θερμές μεταφορές δεν είναι διαθέσιμες σε κλήσεις διεύθυνσης SIP, επειδή δεν υπάρχει αριθμός ThunderPhone για εμφάνιση ως αναγνώριση καλούντος στο δεύτερο σκέλος. Με το Twilio, το παραπάνω TwiML συνδέει τον πράκτορα αλλά δεν χειρίζεται μεταφορές: προσθέστε referUrl="https://YOUR_SERVER/sip-transfer" στο <Dial> και ζητήστε από αυτό το webhook να διαβάζει το ReferTransferTarget και να επιστρέφει TwiML που καλεί τον προορισμό μεταφοράς (δείτε τον οδηγό SIP REFER του Twilio).
  • Μηνύματα κειμένου: η διεύθυνση SIP και ο αριθμός που καλέστηκε δεν μπορούν να στείλουν μηνύματα. Ο πράκτορας μπορεί να στείλει μήνυμα κατά τη διάρκεια κλήσης διεύθυνσης SIP μόνο αν έχει ρυθμιστεί ξεχωριστός αριθμός με δυνατότητα SMS για αποστολή μηνυμάτων· διαφορετικά, το εργαλείο SMS του δεν είναι διαθέσιμο.
  • Καταχώριση: το ThunderPhone δεν δέχεται SIP REGISTER. Στείλτε κλήσεις στη διεύθυνση· μην κάνετε καταχώριση σε αυτή.

Τιμολόγηση

Οι κλήσεις διεύθυνσης SIP χρεώνονται με την κανονική χρέωση ανά λεπτό του πράκτορα. Δεν υπάρχει χρέωση αριθμού τηλεφώνου, επειδή κανένας αριθμός ThunderPhone δεν εξυπηρετεί την κλήση. Ο δικός σας πάροχος χρεώνει το δικό του σκέλος της κλήσης ως συνήθως. Δείτε την Τιμολόγηση.

Δοκιμάστε το

  1. Δημιουργήστε ένα URI ανά κλήση ή ένα endpoint όπως παραπάνω.
  2. Καλέστε το από το σύστημά σας ή από οποιοδήποτε SIP softphone (για endpoint, εισαγάγετε το όνομα χρήστη και τον κωδικό πρόσβασης).
  3. Αφού τερματίσετε την κλήση, ανοίξτε την ενότητα Κλήσεις στον πίνακα ελέγχου ή ανακτήστε την με GET /v1/calls/{call_id}. Εμφανίζει τον καλούντα, τον προορισμό (δείτε τη σειρά στην ενότητα «Περάστε τον αριθμό που καλέστηκε») και την απομαγνητοφώνηση.

Λεπτομέρειες API: αναφορά API διευθύνσεων SIP.