Open in
Τελικά σημεία webhook
Διαχειριστείτε πολλαπλά URL webhook με μυστικά ανά τελικό σημείο και φίλτρα συμβάντων.
Το σύστημα webhook βάσει τελικών σημείων σάς επιτρέπει να καταχωρίζετε πολλαπλούς προορισμούς ανά οργανισμό, καθέναν με το δικό του μυστικό, τη δική του κατάσταση και τη δική του συνδρομή σε ένα υποσύνολο τύπων συμβάντων. Αυτό είναι το προτεινόμενο μοντέλο για όλες τις νέες ενσωματώσεις.
Συγκρίνετέ το με το παλαιότερο webhook με ένα URL, το οποίο διατηρείται για συμβατότητα με προηγούμενες εκδόσεις, αλλά υποστηρίζει μόνο ένα URL ανά οργανισμό.
Τελικά σημεία
| Μέθοδος | Διαδρομή | Απαιτούμενος ρόλος | Περιγραφή |
|---|---|---|---|
GET | /v1/developer/webhook-endpoints | admin+ | Εμφάνιση λίστας τελικών σημείων |
POST | /v1/developer/webhook-endpoints | admin+ | Δημιουργία τελικού σημείου |
PATCH | /v1/developer/webhook-endpoints/{endpoint_id} | admin+ | Ενημέρωση ετικέτας / URL / συμβάντων / κατάστασης |
DELETE | /v1/developer/webhook-endpoints/{endpoint_id} | admin+ | Διαγραφή τελικού σημείου |
POST | /v1/developer/webhook-endpoints/{endpoint_id}/test | admin+ | Αποστολή υπογεγραμμένης δοκιμαστικής παράδοσης |
GET | /v1/developer/webhook-deliveries | admin+ | Επιθεώρηση πρόσφατων αποτελεσμάτων παραδόσεων τελικών σημείων και παλαιότερων παραδόσεων |
Αντικείμενο τελικού σημείου
{
"id": "c4d5e6f7-...",
"label": "Production — Call events",
"url": "https://example.com/thunderphone/hook",
"events": ["telephony.incoming", "telephony.complete"],
"status": "active",
"agent_id": 42,
"agent_name": "Support Agent",
"secret_hint": "a1b2…9f0e",
"created_at": "2026-04-20T18:24:10.113Z",
"updated_at": "2026-04-20T18:24:10.113Z"
}| Πεδίο | Τύπος | Περιγραφή |
|---|---|---|
id | UUID | Αναγνωριστικό τελικού σημείου |
label | string | Εμφανιζόμενο όνομα, 1–120 χαρακτήρες |
url | string | URL HTTPS· επιτρέπεται το http://localhost για ανάπτυξη |
events | array of string | Τύποι συμβάντων στους οποίους έχετε εγγραφεί (δείτε τις έγκυρες τιμές). Ο κενός πίνακας εγγράφεται σε όλα τα συμβάντα, εκτός από τα συμβάντα ανά γύρο που επιλέγονται μόνο ρητά (telephony.turn / web.turn) |
status | string | active, disabled (μη αυτόματα σε παύση) ή failing (ορίζεται αυτόματα όταν μια παράδοση εξαντλήσει το πρόγραμμα επαναλήψεων των 24 ωρών χωρίς ούτε μία απάντηση 2xx) |
agent_id | integer | null | Πράκτορας στον οποίο περιορίζεται αυτό το τελικό σημείο· το null σημαίνει σε επίπεδο οργανισμού |
agent_name | string | null | Όνομα του πράκτορα στον οποίο περιορίζεται το τελικό σημείο ή null για τελικό σημείο σε επίπεδο οργανισμού |
secret_hint | string | Οι πρώτοι 4 και οι τελευταίοι 4 χαρακτήρες του μυστικού υπογραφής με αποσιωπητικά (a1b2…9f0e) — αρκετοί για να αντιστοιχίσετε το μυστικό που αποθηκεύσατε τοπικά χωρίς να εκθέσετε την πλήρη τιμή |
created_at, updated_at | timestamp |
Έγκυροι τύποι συμβάντων
Το events επικυρώνεται ως προς αυτό το ακριβές σύνολο — τιμές εκτός της λίστας
επιστρέφουν 400. Δείτε τον Κατάλογο συμβάντων για τη
δομή του φορτίου κάθε τύπου.
telephony.incoming,telephony.complete,telephony.tool,telephony.turnweb.incoming,web.complete,web.tool,web.turncall.graded,call.data_extractedcampaign.completedissue.reported,issue.escalatedtest-call.completedalert.triggered
Το issue.escalated δεν έχει περιβάλλον πράκτορα και παραδίδεται μόνο σε
τελικά σημεία σε επίπεδο οργανισμού.
Τα voice.ready και voice.failed δεν μπορούν να επιλεγούν ρητά. Για να τα
λαμβάνετε, δημιουργήστε ένα τελικό σημείο σε επίπεδο οργανισμού με events: []. Μια κενή λίστα συμβάντων
λαμβάνει κάθε υποστηριζόμενο συμβάν εκτός από τα telephony.turn και web.turn,
τα οποία πρέπει να επιλεγούν ρητά.
Καταστάσεις τελικών σημείων
active— οι παραδόσεις πραγματοποιούνται κανονικά.disabled— τίθεται μη αυτόματα σε παύση μέσωPATCH. Δεν αποστέλλονται αιτήματα. Δεν αλλάζουμε ποτέ την κατάσταση ενός τελικού σημείουdisabled· η επαναφορά του σεactiveείναι πάντα δική σας επιλογή.failing— ορίζεται αυτόματα όταν μια παράδοση στο τελικό σημείο εξαντλήσει ολόκληρο το πρόγραμμα επαναλήψεων της (8 προσπάθειες σε 24 ώρες) χωρίς να λάβει ποτέ 2xx. Ένα τελικό σημείο που αποτυγχάνει δεν λαμβάνει περαιτέρω κίνηση. Αφού διορθωθεί το τελικό σημείο, επαναφέρετε την κατάστασή του σεactiveμεPATCH· οι παραδόσεις των οποίων το πρόγραμμα επαναλήψεων δεν έχει ακόμη εξαντληθεί συνεχίζουν από εκεί που σταμάτησαν.
Λίστα τελικών σημείων
curl https://api.thunderphone.com/v1/developer/webhook-endpoints \
-H "Authorization: Bearer sk_live_YOUR_API_KEY"Επιστρέφει έναν πίνακα από αντικείμενα τελικού σημείου.
Περάστε ?agent_id=42 για να επιστρέψετε μόνο τελικά σημεία που περιορίζονται σε εκείνον τον πράκτορα.
Τελικά σημεία περιορισμένα σε πράκτορα
Τα τελικά σημεία σε επίπεδο οργανισμού λαμβάνουν κάθε συμβάν που αντιστοιχεί. Ένα τελικό σημείο με
agent_id λαμβάνει μόνο συμβάντα που αντιστοιχούν σε κλήσεις τις οποίες χειρίζεται εκείνος ο πράκτορας·
συμβάντα χωρίς περιβάλλον πράκτορα, όπως το alert.triggered, δεν το φτάνουν ποτέ. Μπορείτε
επίσης να δημιουργείτε και να διαχειρίζεστε αυτά τα τελικά σημεία από την ενότητα
Διαδικτυακά άγκιστρα του δημιουργού πρακτόρων.
Δημιουργία τελικού σημείου
curl -X POST https://api.thunderphone.com/v1/developer/webhook-endpoints \
-H "Authorization: Bearer sk_live_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"label": "Production — Call events",
"url": "https://example.com/thunderphone/hook",
"events": ["telephony.incoming", "telephony.complete"]
}'result = requests.post(
"https://api.thunderphone.com/v1/developer/webhook-endpoints",
headers={"Authorization": "Bearer sk_live_YOUR_API_KEY"},
json={
"label": "Production — Call events",
"url": "https://example.com/thunderphone/hook",
"events": ["telephony.incoming", "telephony.complete"],
},
).json()
secret = result["secret"]
endpoint_id = result["id"]Πεδία αιτήματος
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
label | συμβολοσειρά | ναι | 1–120 χαρακτήρες |
url | συμβολοσειρά | ναι | URL HTTPS (το http επιτρέπεται μόνο για localhost / 127.0.0.1) |
events | πίνακας | όχι | Κενό ή παραλειπόμενο εγγράφει σε όλα τα συμβάντα εκτός από τα telephony.turn / web.turn, που απαιτούν ρητή εγγραφή. Πρέπει να χρησιμοποιούνται οι τιμές που αναφέρονται στους Έγκυρους τύπους συμβάντων· τα διπλότυπα αφαιρούνται |
agent_id | ακέραιος | null | όχι | Περιορίστε την παράδοση σε έναν πράκτορα αυτού του οργανισμού· παραλείψτε το ή χρησιμοποιήστε null για τελικό σημείο σε επίπεδο οργανισμού |
Επιστρέφει 201 Created με το ενημερωμένο αντικείμενο τελικού σημείου και
ένα πρόσθετο πεδίο secret ανώτατου επιπέδου που περιέχει το ακατέργαστο κλειδί υπογραφής — μια
δεκαεξαδική συμβολοσειρά 48 χαρακτήρων:
{
"id": "c4d5e6f7-…",
"label": "Production — Call events",
"url": "https://example.com/thunderphone/hook",
"events": ["telephony.incoming", "telephony.complete"],
"status": "active",
"secret_hint": "a1b2…9f0e",
"created_at": "2026-04-20T18:24:10.113Z",
"updated_at": "2026-04-20T18:24:10.113Z",
"secret": "a1b2c37e08d94f5b16a2c8d90e7f3a4b5c6d7e8f90a19f0e"
}Ενημέρωση τελικού σημείου
curl -X PATCH https://api.thunderphone.com/v1/developer/webhook-endpoints/c4d5e6f7-... \
-H "Authorization: Bearer sk_live_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"label": "Production — Call + Grade events",
"events": ["telephony.incoming", "telephony.complete", "call.graded"]
}'| Πεδίο | Τύπος | Περιγραφή |
|---|---|---|
label | συμβολοσειρά | |
url | συμβολοσειρά | |
events | πίνακας | |
status | συμβολοσειρά | active ή disabled. Ορίστε active για να επανενεργοποιήσετε ένα τελικό σημείο που ο διακομιστής έχει επισημάνει ως failing |
agent_id | ακέραιος | null | Ορίστε αναγνωριστικό πράκτορα για να περιορίσετε το τελικό σημείο ή null για να το ορίσετε σε επίπεδο οργανισμού |
Επιστρέφει 200 OK με το ενημερωμένο αντικείμενο τελικού σημείου.
Αποστολή δοκιμαστικής παράδοσης
Στείλτε ένα συνθετικό συμβάν webhook.test σε ένα τελικό σημείο μέσω της κανονικής
ροής παράδοσης, συμπεριλαμβανομένης της κανονικής σειριοποίησης JSON,
του X-ThunderPhone-Signature, της καταγραφής παράδοσης και της παρακολούθησης
επαναλήψεων. Η δοκιμή στοχεύει το επιλεγμένο τελικό σημείο ανεξάρτητα από το φίλτρο
events του.
curl -X POST https://api.thunderphone.com/v1/developer/webhook-endpoints/c4d5e6f7-.../test \
-H "Authorization: Bearer sk_live_YOUR_API_KEY"Το τελικό σημείο λαμβάνει έναν φάκελο όπως ο παρακάτω:
{
"data": {
"message": "ThunderPhone webhook test",
"sent_at": "2026-07-17T20:12:34.567890+00:00"
},
"event_id": "2ad6507c-7d19-4498-9b2d-7e8f944ab5a1",
"type": "webhook.test"
}Το API επιστρέφει 200 OK μετά την πρώτη προσπάθεια, ακόμη και αν ο προορισμός
επιστρέψει σφάλμα. Ελέγξτε τα success, status, response_code και error
για το αποτέλεσμα της παράδοσης:
{
"success": true,
"event_id": "2ad6507c-7d19-4498-9b2d-7e8f944ab5a1",
"event_type": "webhook.test",
"status": "delivered",
"response_code": 204,
"error": ""
}Το webhook.test είναι συνθετικό και δεν μπορεί να προστεθεί στη συνδρομή
events ενός τελικού σημείου. Εάν η πρώτη προσπάθεια αποτύχει, η παράδοση ακολουθεί
το ίδιο χρονοδιάγραμμα επαναλήψεων με τις κανονικές παραδόσεις συμβάντων.
Για να διαμορφώσετε έναν ενεργοποιητή για πραγματικό σχήμα συμβάντος, περάστε ένα προαιρετικό
event_type. Η παράδοση παραμένει συνθετική και περιέχει "sample": true;
τα δείγματα που σχετίζονται με κλήσεις χρησιμοποιούν call_id: 0 και agent_id: 0.
curl -X POST https://api.thunderphone.com/v1/developer/webhook-endpoints/c4d5e6f7-.../test \
-H "Authorization: Bearer sk_live_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"event_type":"call.graded"}'Το event_type δέχεται οποιαδήποτε τιμή από τους Έγκυρους τύπους συμβάντων.
Η παράλειψή του διατηρεί τη γενική συμπεριφορά του webhook.test.
Διαγραφή τελικού σημείου
curl -X DELETE https://api.thunderphone.com/v1/developer/webhook-endpoints/c4d5e6f7-... \
-H "Authorization: Bearer sk_live_YOUR_API_KEY"Επιστρέφει 204 No Content. Η παράδοση στη διεύθυνση URL σταματά αμέσως·
οι επαναλήψεις που βρίσκονται σε εξέλιξη εγκαταλείπονται.
Αποσφαλμάτωση παραδόσεων
Πριν συμπεράνετε ότι ένα webhook δεν στάλθηκε, ελέγξτε το
GET /v1/developer/webhook-deliveries.
Εμφανίζει πρόσφατες προσπάθειες και από τα δύο συστήματα webhook, συμπεριλαμβανομένων του αναγνωριστικού
κλήσης, της προέλευσης URL, της κατάστασης HTTP, του αριθμού προσπαθειών, της επιτρεπόμενης
κατηγορίας αποτυχίας και της ώρας της επόμενης επανάληψης. Δεν επιστρέφει ποτέ το ωφέλιμο φορτίο
συμβάντος, την απομαγνητοφώνηση, το αποθηκευμένο κείμενο σφάλματος, το σώμα απόκρισης ή τη διαδρομή URL.
Μπορείτε επίσης να δείτε το ίδιο πρόσφατο ιστορικό στις Πράκτορες → επιλέξτε έναν πράκτορα → Webhooks → Πρόσφατες παραδόσεις. Οι γραμμές εμφανίζουν την ετικέτα του τελικού σημείου και την προέλευση URL που χρησιμοποιήθηκε από την πιο πρόσφατη προσπάθεια. Αυτή είναι λειτουργική κατάσταση και όχι αμετάβλητο αρχείο ελέγχου: η διαγραφή ενός τελικού σημείου διαγράφει επίσης τις γραμμές παραδόσεών του.
Για ένα 404 του n8n, επιβεβαιώστε πρώτα ότι η ροή εργασίας είναι ενεργή, δέχεται POST και χρησιμοποιεί
τη διεύθυνση URL webhook παραγωγής αντί για τη διεύθυνση URL δοκιμής. Ένα 401 ή 403 υποδεικνύει
έλεγχο ταυτότητας ή επικύρωση υπογραφής· τα χρονικά όρια υποδεικνύουν καθυστέρηση
ή διαθεσιμότητα προορισμού· τα σφάλματα TLS υποδεικνύουν την αλυσίδα πιστοποιητικών, το όνομα κεντρικού υπολογιστή ή τη λήξη.