Open in
נקודות קצה של Webhook
נהלו כתובות URL מרובות של 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}/rotate-secret | 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",
"paused_at": null,
"pause_last_error": "",
"pause_undelivered_count": null,
"created_at": "2026-04-20T18:24:10.113Z",
"updated_at": "2026-04-20T18:24:10.113Z"
}| שדה | סוג | תיאור |
|---|---|---|
id | UUID | מזהה נקודת הקצה |
label | מחרוזת | שם תצוגה, 1–120 תווים |
url | מחרוזת | כתובת URL מסוג HTTPS; http://localhost מותר לפיתוח |
events | מערך של מחרוזות | סוגי אירועים שהוגדר להם מנוי (ראו ערכים חוקיים). מערך ריק מגדיר מנוי לכל האירועים, מלבד אירועים מפורשים בלבד לכל תור (telephony.turn / web.turn) |
status | מחרוזת | active, disabled (מושהה ידנית), או failing (מוגדר אוטומטית כאשר מסירה ממצה את לוח הזמנים שלה לניסיונות חוזרים במשך 24 שעות ללא אף תגובת 2xx) |
agent_id | מספר שלם | null | הסוכן שנקודת קצה זו מוגדרת עבורו; null מציין כלל-ארגוני |
agent_name | מחרוזת | null | שם הסוכן המוגדר, או null עבור נקודת קצה כלל-ארגונית |
secret_hint | מחרוזת | 4 התווים הראשונים ו-4 התווים האחרונים של סוד החתימה עם שלוש נקודות (a1b2…9f0e) — מספיק כדי להצליב עם הסוד ששמרתם באופן מקומי, בלי לחשוף את הערך המלא |
paused_at | חותמת זמן | null | המועד שבו ThunderPhone הגדירה את נקודת הקצה כ-failing. הערך הוא null כשהיא active או disabled |
pause_last_error | מחרוזת | שגיאת המסירה האחרונה כאשר נקודת הקצה הושהתה, לדוגמה HTTP 503: Service Unavailable. ריק אלא אם הסטטוס הוא failing |
pause_undelivered_count | מספר שלם | null | אירועים שלא נמסרו מאז המסירה המוצלחת האחרונה של נקודת הקצה, נספרים בעת השהייתה |
created_at, updated_at | חותמת זמן |
סוגי אירועים תקפים
events מאומת מול קבוצה מדויקת זו — ערכים שאינם ברשימה
מחזירים 400. ראו קטלוג אירועים עבור מבנה
המטען של כל סוג.
telephony.incoming,telephony.complete,telephony.tool,telephony.turnweb.incoming,web.complete,web.tool,web.turnsms.sent,sms.failedsms.received(שמור; עדיין לא נפלט)call.graded,call.data_extracted,call.transfer_completedcampaign.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. נקודת קצה נכשלת אינה מקבלת תעבורה נוספת. אנו שולחים אימייל לבעלים ולמנהלים של הארגון שלכם כאשר זה קורה, ולוח הבקרה מציג את נקודת הקצה המושהית עם לחצן הפעלה מחדש. לאחר שנקודת הקצה מתוקנת, הגדירו באמצעותPATCHאת הסטטוס שלה בחזרה ל-active; מסירות שלוח הזמנים שלהן לניסיונות חוזרים עדיין לא הסתיים מתחדשות מהמקום שבו נעצרו.
רשימת נקודות קצה
curl https://api.thunderphone.com/v1/developer/webhook-endpoints \
-H "Authorization: Bearer sk_live_YOUR_API_KEY"מחזיר מערך של אובייקטי נקודת קצה.
העבירו ?agent_id=42 כדי להחזיר רק נקודות קצה המוגדרות עבור אותו סוכן.
נקודות קצה בהיקף סוכן
נקודות קצה כלל-ארגוניות מקבלות כל אירוע תואם. נקודת קצה עם
agent_id מקבלת רק אירועים תואמים עבור שיחות שטופלו על ידי אותו סוכן;
אירועים ללא הקשר של סוכן, כגון alert.triggered, לעולם אינם מגיעים אליה. תוכלו
גם ליצור ולנהל נקודות קצה אלה מתוך הקטע
Webhooks בבונה הסוכנים.
יצירת נקודת קצה
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 עם אובייקט נקודת הקצה המעודכן.
החלפת סוד החתימה
החליפו את סוד החתימה של נקודת קצה, למשל אם הוא אבד או ייתכן שנחשף. עבור נקודת קצה בהיקף סוכן, תוכלו גם להשתמש בלוח הבקרה: פתחו את הקטע וובהוקים של הסוכן ובחרו יצירה מחדש של סוד בנקודת הקצה. נקודות קצה כלל-ארגוניות מוחלפות דרך ה-API.
curl -X POST https://api.thunderphone.com/v1/developer/webhook-endpoints/c4d5e6f7-.../rotate-secret \
-H "Authorization: Bearer sk_live_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'| שדה | סוג | נדרש | תיאור |
|---|---|---|---|
include_copies | בוליאני | לא | ברירת המחדל היא true. מעניק גם את הסוד החדש לנקודות קצה אחרות בארגון שלכם שלהן אותה כתובת URL ואותו סוד נוכחי, כגון עותקים של נקודת קצה זו אצל סוכנים אחרים, כך שמקלט אחד ימשיך לאמת באמצעות סוד אחד |
מחזיר 200 OK:
{
"endpoint": { "id": "c4d5e6f7-...", "secret_hint": "7f3a…c21d", "...": "..." },
"secret": "7f3a90b2c4d5e6f708192a3b4c5d6e7f8091a2b3c4d5c21d",
"rotated_endpoint_ids": ["c4d5e6f7-..."]
}| שדה | סוג | תיאור |
|---|---|---|
endpoint | אובייקט | אובייקט נקודת הקצה עם secret_hint החדש שלו |
secret | מחרוזת | סוד החתימה החדש. מוחזר רק בתגובה זו |
rotated_endpoint_ids | מערך של UUID | כל נקודת קצה שמשתמשת כעת בסוד החדש |
שליחת מסירת בדיקה
שלחו אירוע webhook.test סינתטי לנקודת קצה אחת באמצעות צינור המסירה הרגיל, כולל סריאליזציית JSON קנונית, שתי כותרות החתימה, תיעוד המסירה ומעקב אחר ניסיונות חוזרים.
הבדיקה ממוקדת בנקודת הקצה שנבחרה, ללא קשר למסנן 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 של
נקודת קצה. אם הניסיון הראשון נכשל, ThunderPhone מנסה שוב פעם אחת לאחר
כדקה ולאחר מכן מפסיק; המסירה תוצג אז עם status: "failed"
תחת ניפוי מסירות. מסירת בדיקה לעולם אינה מסמנת
את נקודת הקצה כ-failing.
כדי להגדיר טריגר בהתאם למבנה של אירוע אמיתי, העבירו
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 נפסקת מיד;
ניסיונות חוזרים שמתבצעים כעת נזנחים.
ניפוי מסירות
לפני שתסיקו שוובהוק לא נשלח, בדקו את
GET /v1/developer/webhook-deliveries.
הוא מציג ניסיונות אחרונים משתי מערכות הוובהוקים, כולל מזהה השיחה,
מקור כתובת ה-URL, סטטוס HTTP, מספר ניסיונות, קטגוריית כשל מרשימת ההיתרים וזמן
הניסיון החוזר הבא. הוא לעולם אינו מחזיר את מטען האירוע, התמליל, טקסט השגיאה השמור,
גוף התגובה או נתיב כתובת ה-URL.
ניתן לראות את אותה היסטוריה אחרונה גם תחת סוכנים → בחרו סוכן → וובהוקים → מסירות אחרונות. השורות מציגות את תווית נקודת הקצה ואת מקור כתובת ה-URL ששימש בניסיון העדכני ביותר. זהו מצב תפעולי ולא יומן ביקורת בלתי ניתן לשינוי: מחיקת נקודת קצה מוחקת גם את שורות המסירה שלה.
עבור 404 של n8n, ודאו תחילה שתהליך העבודה פעיל, מקבל POST, ומשתמש
בכתובת ה-URL של וובהוק הייצור ולא בכתובת ה-URL של הבדיקה. 401 או 403 מצביעים על
אימות או אימות חתימה; פסקי זמן מצביעים על זמן תגובה או זמינות של היעד;
שגיאות TLS מצביעות על שרשרת האישורים, שם המארח או תוקף האישור.