קטלוג אירועים
כל סוגי אירועי ה-webhook ש-ThunderPhone שולחת.
לכל גוף וובהוק יש שדה type שהערך שלו הוא אחד מסוגי
האירועים בדף זה. בעת הרשמה אל
נקודת קצה, מערך ה-events חייב לכלול את
סוגי האירועים הרצויים לכם (או להיות ריק כדי להירשם לכל האירועים —
למעט אירועי כל תור telephony.turn /
web.turn, שנמסרים רק לנקודות קצה שמציינות אותם
במפורש).
שני סגנונות מסירה נושאים אירועים אלה:
- מסירות לנקודת קצה הן תמיד התראות ללא חסימה
עם ניסיונות חוזרים: השיבו עם
כל 2xx; המעטפה כוללת
event_idלמניעת כפילויות. - חילופים חוסמים פועלים רק דרך
וובהוק מדור קודם בעל כתובת URL יחידה: בקשת
התצורה של
telephony.incoming/web.incoming(מספרים ומפתחות וידג'ט במצב וובהוק, זמן קצוב של 10 שניות) ושיגור כלים במצב וובהוק. התגובה שלכם מעצבת את השיחה בזמן אמת.
דוגמאות המטען בהמשך מציגות את מעטפת נקודת הקצה בסדר ההעברה שלה
(מפתחות ממוינים לפי סדר אלפביתי: data, event_id, type);
מסירות מדור קודם נושאות את אותם data ללא event_id.
אירועי שיחות
telephony.incoming
נשלח כאשר שיחה נכנסת מגיעה לאחד
ממספרי הטלפון שלכם. מסירות לנקודות קצה הן
התראות ללא המתנה לתגובה הנשלחות עבור כל שיחה נכנסת, בין אם
המספר מוגדר לסוכן או מוגדר לוובהוק. מספרים ללא
סוכן משויך מקבלים בנוסף את בקשת התצורה החוסמת
בוובהוק מדור קודם — עיינו ב-
telephony.incoming / web.incoming עבור
סכמת הבקשה / התגובה המלאה.
{
"data": {
"call_id": 987654321,
"from_number": "+14155550199",
"to_number": "+15551234567"
},
"event_id": "3f6b2ad0-1c9e-4a57-9f2b-8f6f0f9d2f11",
"type": "telephony.incoming"
}telephony.complete
נשלח כאשר שיחת טלפוניה נכנסת או יוצאת מסתיימת. אינו חוסם.
כולל את התמלול, כתובת ה-URL של ההקלטה כאשר היא זמינה, וסיכום חיוב. עיינו ב-
telephony.complete / web.complete עבור
סכמת המטען.
telephony.tool
נשלח לאחר ששיחת טלפוניה מפעילה כלי פונקציה. התראת ביקורת שאינה חוסמת — הכלי כבר הופעל בעת מסירת אירוע זה; הוא מכסה את כלי הפונקציה שלכם בלבד (לא כלים מובנים, מאגר ידע, חיבורי אפליקציות, או כלי MCP).
{
"data": {
"arguments": { "date": "2026-04-21" },
"call_id": 987654321,
"from_number": "+14155550199",
"response": {
"response": { "available_slots": ["9:00 AM", "2:00 PM"] },
"status": 200
},
"to_number": "+15551234567",
"tool_name": "search_appointments"
},
"event_id": "1f0a7c3e-52d4-4a0e-8f4b-b1a6a1c0d9e2",
"type": "telephony.tool"
}response היא תוצאת ההפעלה: {"status": <http status>, "response": <your endpoint's JSON>} בהצלחה, או
{"status": <status>, "error": "<message>"} בכישלון.
telephony.turn
נשלח במהלך שיחת טלפוניה פעילה, פעם אחת עבור כל
תור הכולל דיבור בעת התרחשותו — ההשלמות המדוברות של הסוכן
והתורים המתומללים של המתקשר. מאפשר לעקוב אחר השיחה החיה
באמצעות וובהוקים רגילים במקום לבצע תשאול של
GET /v1/calls/{call_id}/transcript.
אינו חוסם.
{
"data": {
"call_id": 987654321,
"entry_type": "completion",
"from_number": "+14155550199",
"position": 7,
"role": "assistant",
"start_ms": 15200,
"text": "How many employees does your company have?",
"to_number": "+15551234567"
},
"event_id": "8d3f5a2c-7b1e-4c9a-b6d0-2e4f6a8c0d1e",
"type": "telephony.turn"
}| שדה | סוג | תיאור |
|---|---|---|
position | integer | האינדקס של התור בהיסטוריית השיחה — מזהה יציב לצורך מיון |
role | string | assistant (דיבור הסוכן) או user (דיבור המתקשר) |
text | string | טקסט תמלול התור כפי שהיה ידוע בזמן השליחה |
entry_type | string | סוג רשומת ההיסטוריה הבסיסית: completion (סוכן), או user_turn / span (מתקשר) |
start_ms, end_ms | integer | היסטי שמע באלפיות שנייה מתחילת השיחה; קיימים רק כאשר תזמון ההשמעה כבר היה ידוע בזמן השליחה |
web.incoming
המקבילה בערוץ האינטרנטי של telephony.incoming, נשלחת כאשר
סשן של רכיב אינטרנט או שיחת בדיקת מיקרופון של הבונה
מתחילים. מסירות לנקודות קצה הן ללא המתנה לתגובה עבור כל סשן אינטרנטי.
מפתחות הניתנים לפרסום במצב mode="webhook" מקבלים בנוסף את
בקשת התצורה החוסמת בוובהוק מדור קודם — לבקשה החוסמת
הזו יש מבנה שונה (origin_domain,
publishable_key_prefix; ללא מספרי טלפון). עיינו ב-
telephony.incoming / web.incoming.
{
"data": {
"call_id": 987654322,
"from_number": "web",
"origin_domain": "https://example.com",
"publishable_key_prefix": "pk_live_a1b2",
"to_number": "+15551234567"
},
"event_id": "9a2b4c6d-8e0f-4a1b-9c2d-3e4f5a6b7c8d",
"type": "web.incoming"
}from_number הוא תמיד הערך המילולי "web". עבור סשני רכיב במצב וובהוק,
to_number ריק (מספר הסוכן של הסשן מוקצה
לאחר התצורה); עבור שיחות בדיקת מיקרופון של הבונה, origin_domain ו-
publishable_key_prefix ריקים.
web.complete
המקבילה בערוץ האינטרנטי של telephony.complete, המכסה שיחות
רכיב אינטרנטי (direction: "web") ושיחות בדיקת מיקרופון של הבונה
(direction: "test"). אינו חוסם. אותו מבנה מטען כמו
telephony.complete, בתוספת origin_domain,
כאשר from_number מוגדר ל-"web".
web.tool
המקבילה בערוץ האינטרנטי של telephony.tool. ה-data מכיל
origin_domain במקום from_number / to_number.
web.turn
המקבילה בערוץ האינטרנטי של telephony.turn,
המכסה שיחות רכיב אינטרנט ושיחות בדיקת מיקרופון של הבונה. אותו מבנה מטען,
עם origin_domain במקום from_number / to_number.
כמו telephony.turn, היא דורשת הרשמה מפורשת — היא
לעולם אינה נמסרת באמצעות מערך events ריק.
אירועי קול
יצירת קול מותאם אישית היא אסינכרונית. אירועים אלה, שאינם חוסמים, מאפשרים לכם להגיב לתוצאה סופית במקום לבצע תשאול חוזר של נקודת הקצה של פרטי השכפול.
voice.ready
נשלח כאשר קול מותאם אישית מסיים עיבוד וניתן להקצות אותו לסוכן.
{
"data": {
"voice": {
"created_at": "2026-07-30T14:12:08.317Z",
"display_name": "Support voice",
"failure_reason": "",
"gender": "female",
"id": "cv_2f6f90b0e9a34ee8b39be7d1",
"language": "en",
"name": "custom:cv_2f6f90b0e9a34ee8b39be7d1",
"status": "ready",
"updated_at": "2026-07-30T14:13:31.605Z"
}
},
"event_id": "2d5f0a61-e9b5-4a3c-b684-29d7d9e4b214",
"type": "voice.ready"
}voice.failed
נשלח כאשר עיבוד של קול מותאם אישית מגיע לכשל קבוע.
{
"data": {
"reason": "audio sample could not be processed",
"voice": {
"created_at": "2026-07-30T14:12:08.317Z",
"display_name": "Support voice",
"failure_reason": "audio sample could not be processed",
"gender": "female",
"id": "cv_2f6f90b0e9a34ee8b39be7d1",
"language": "en",
"name": "custom:cv_2f6f90b0e9a34ee8b39be7d1",
"status": "failed",
"updated_at": "2026-07-30T14:13:31.605Z"
}
},
"event_id": "3493e985-1a75-4f77-a10a-e74af440cd31",
"type": "voice.failed"
}| שדה | סוג | תיאור |
|---|---|---|
voice.id | מחרוזת | מזהה ציבורי של קול מותאם אישית |
voice.name | מחרוזת | ערך הקול של הסוכן בתבנית custom:<public_id> |
voice.display_name | מחרוזת | שם הקול המוצג לארגון |
voice.language | מחרוזת | קוד השפה היחידה של השכפול |
voice.gender | מחרוזת | male, female או מחרוזת ריקה |
voice.status | מחרוזת | ready עבור voice.ready; failed עבור voice.failed |
voice.failure_reason | מחרוזת | ריק בהצלחה; פרטי כשל העיבוד במקרה של כשל |
voice.created_at, voice.updated_at | חותמת זמן | חותמות זמן בתקן ISO 8601 |
reason | מחרוזת | פרטי הכשל; קיים רק ב-voice.failed |
אירועי איכות
call.graded
נשלח בכל פעם שהרצת דירוג AI מסתיימת עבור שיחה. אינו חוסם.
{
"data": {
"call_id": 987654321,
"grade": {
"call_outcome": "success",
"created_at": "2026-04-20T18:25:11.002Z",
"detected_issues": [],
"graded_at": "2026-04-20T18:25:11.002Z",
"grader_model": "heuristic-v1",
"id": 5512,
"score": 92,
"status": "completed",
"summary": "Caller asked about their policy and got a full answer…"
}
},
"event_id": "7c1d2e3f-4a5b-4c6d-8e9f-0a1b2c3d4e5f",
"type": "call.graded"
}| שדה | סוג | תיאור |
|---|---|---|
grade.id | מספר שלם | מזהה הדירוג |
grade.score | מספר שלם | null | 0–100 |
grade.call_outcome | מחרוזת | success, failure, unknown או no_conversation |
grade.summary | מחרוזת | סיכום בפסקה אחת |
grade.detected_issues | מערך | מחרוזות של בעיות שאותרו על ידי המדרג |
grade.status | מחרוזת | תמיד completed — רק הרצות שהסתיימו פולטות אירוע |
grade.grader_model | מחרוזת | המדרג שהפיק את התוצאה (לדוגמה, heuristic-v1) |
grade.graded_at, grade.created_at | חותמת זמן |
issue.reported
נשלח כאשר דיווח בעיה נוצר —
בין אם הוא נשלח על ידי משתמש מלוח הבקרה (source: "user") או
נוצר אוטומטית על ידי דירוג שיחה (source: "system"). אינו חוסם.
{
"data": {
"call_id": 987654321,
"issue_report": {
"created_at": "2026-04-20T18:25:11.002Z",
"description": "Five-second silence before responding to the main question.",
"id": 4321,
"severity": "warning",
"source": "system",
"status": "open",
"title": "Agent paused too long"
}
},
"event_id": "5e6f7a8b-9c0d-4e1f-8a2b-3c4d5e6f7a8b",
"type": "issue.reported"
}| שדה | סוג | תיאור |
|---|---|---|
issue_report.severity | מחרוזת | critical, warning או info |
issue_report.status | מחרוזת | open או resolved |
issue_report.source | מחרוזת | user (נשלח מלוח הבקרה) או system (נוצר על ידי דירוג) |
אירועי שיחות בדיקה
test-call.completed
נשלח כאשר
הרצת שיחת בדיקה
מגיעה למצב סופי — completed או failed, כולל הרצות
שנכשלו בעת ההפעלה ומעולם לא יצרו שיחה. אינו חוסם. שימושי
לחיבור הרצות CI באצווה למערכות הצ'אט וההתראות שלכם.
{
"data": {
"test_call_run": {
"call_id": 987654321,
"completed_at": "2026-04-20T18:25:04.822Z",
"error_message": "",
"id": 7110,
"status": "completed",
"target_id": 12,
"target_type": "agent"
}
},
"event_id": "2b3c4d5e-6f7a-4b8c-9d0e-1f2a3b4c5d6e",
"type": "test-call.completed"
}| שדה | סוג | תיאור |
|---|---|---|
test_call_run.target_type | מחרוזת | agent או phone_number |
test_call_run.target_id | מספר שלם | מזהה הסוכן או מספר הטלפון שמטרת ההרצה הייתה אליו, בהתאם ל-target_type |
test_call_run.status | מחרוזת | completed או failed |
test_call_run.call_id | מספר שלם | null | null כאשר ההרצה נכשלה לפני שבוצעה שיחה |
test_call_run.error_message | מחרוזת | ריק במקרה של הצלחה |
אירועי התראות
alert.triggered
נשלח כאשר כלל התראה שבו ערוץ העברה ל-webhooks של מפתחים מופעל חוצה את הסף שלו. אינו חוסם. כלל מופעל פעם אחת ולאחר מכן מכבד את תקופת הצינון שלו, כך שחריגה מתמשכת יוצרת אירוע אחד לכל חלון צינון.
{
"data": {
"comparator": "lt",
"event_id": "b8e6a1d4-2c3f-4a5b-9c8d-7e6f5a4b3c2d",
"fired_at": "2026-04-20T18:00:00+00:00",
"metric": "success_rate",
"metric_value": 71.4,
"rule_id": "d2c3b4a5-6f7e-4d8c-9b0a-1c2d3e4f5a6b",
"rule_name": "Success rate below 80%",
"threshold": 80.0,
"window_hours": 24
},
"event_id": "4d5e6f7a-8b9c-4d0e-9f1a-2b3c4d5e6f7a",
"type": "alert.triggered"
}| שדה | סוג | תיאור |
|---|---|---|
event_id (ב-data) | UUID | מזהה הפעלת ההתראה — שונה מ-event_id של מסירת המעטפת |
rule_id, rule_name | UUID, מחרוזת | הכלל שהופעל |
metric | מחרוזת | success_rate, failure_rate, avg_score, call_volume או suite_regression |
comparator | מחרוזת | lt, lte, gt או gte |
metric_value | מספר | ערך המדד לאורך החלון בעת הפעלת הכלל |
threshold | מספר | הסף שהוגדר |
window_hours | מספר שלם | חלון הערכה נגרר |
fired_at | חותמת זמן |
עיינו במדריך ההתראות כדי ליצור כללים, מדדים, תקופות צינון וערוצי אימייל / Slack.