Skip to main content
כברירת מחדל, לכל מספר טלפון ומפתח ציבורי מוקצה סוכן סטטי. כשאתם זקוקים להתאמה אישית לכל מתקשר או לכל מבקר — ניתוב VIP, הקשר של משתמש מחובר, בדיקות A/B של הנחיות — עברו למצב webhook ותנו לשרת שלכם להחליט.

איך זה עובד

  1. הירשמו לאירוע telephony.incoming (טלפון) או web.incoming (ווידג’ט). שניהם webhooks חוסמים: ThunderPhone ממתין עד 10 שניות לתגובה שלכם לפני המשך השיחה.
  2. ThunderPhone שולח לכם את {call_id, from_number, to_number} (סשנים של וידג’ט כוללים שדות ייעודיים לווידג’ט במקום מספרים — ראו את סכמת הבקשה).
  3. השרת שלכם מגיב עם תצורת סוכן (הנחיה, קול, מוצר, כלים). ThunderPhone משתמש בתצורה הזו עבור השיחה.
  4. אם תחזירו {}, תחרגו מזמן ההמתנה או תתקבל שגיאה, ייעשה שימוש בסוכן שהוקצה סטטית כגיבוי. ברירת מחדל בטוחה.
פועל באופן זהה עבור שיחות טלפון (telephony.incoming) וסשנים של וידג’ט (web.incoming), בין אם הם נשלחים לנקודת קצה של webhook או ל-webhook הישן בעל כתובת URL יחידה.

1. הגדירו את יעד ה-webhook

עבור מספרי טלפון, הירשמו עם נקודת הקצה שלכם ל-telephony.incoming:
התגובה כוללת secret חד-פעמי — שמרו אותו; תשתמשו בו לאימות חתימה.

2. הטמיעו את המטפל

שלושה כללי אצבע:
  • אמתו את החתימה בכל בקשה (ראו אימות חתימות webhook). אל תדלגו על כך בפיתוח — עשו זאת נכון פעם אחת והשתמשו מחדש.
  • הגיבו במהירות. עשר שניות הן הגבול הקשיח, וכל שנייה היא שקט מת עבור המתקשר. בצעו חיפושים במסד הנתונים אם צריך, אך אל תקראו למודלי שפה גדולים במורד הזרם באופן סינכרוני — אם אתם רוצים יצירה דינמית של הנחיות, חשבו מראש ושמרו במטמון.
  • בצעו נסיגה בצורה נקייה. כל מצב בלתי צפוי צריך להחזיר {} כדי שהסוכן שהוקצה באופן סטטי יטפל בשיחה.

3. סכמת תגובה

גוף התגובה תואם בדיוק את סכמת התגובה לשיחה נכנסת. השדות הנפוצים:
סדר הדיבור לכל שיחה ו-max_hold_seconds אינם זמינים בתגובת ה-webhook. הגדירו אותם ב-סוכן שאליו אתם מפנים.

דפוסים

הקשר של משתמש מחובר

בווידג’טים במצב webhook, דף המבקר כבר יודע מי הוא. קראו ל-webhook שלכם עם פרמטר מחרוזת שאילתה שה-SDK של הווידג’ט מעביר הלאה (?customer_id=123) וחפשו את הלקוח בצד השרת.

השקת A/B של הנחיות

לפני שתממשו זאת ידנית, שימו לב של-ThunderPhone יש יכולת מובנית של ניסויים (/dashboard/experiments ולשונית A/B בבונה הסוכנים) שמגדירה וריאציות, מפצלת תעבורה ומשווה תוצאות לכל וריאציה — ללא צורך ב-webhook. אם בכל זאת אתם זקוקים לשליטה בצד ה-webhook: בצעו גיבוב של call_id → קטגוריה; החזירו הנחיה A עבור 0..49 והנחיה B עבור 50..99. תעדו במסד הנתונים שלכם את הקטגוריה שבחרתם, ולאחר מכן בצעו התאמה מול ציון השיחה שהושלמה.

ניתוב מבוסס זמן

שעות פעילות → סוכן “תמיכה חיה”; מחוץ לשעות הפעילות → סוכן “קבלת הודעה”. מתג פשוט המבוסס על new Date().getUTCHours() בפונקציית הטיפול שלכם.

השלבים הבאים

הפניית webhook לשיחות נכנסות

סכמות מדויקות של בקשות ותגובות, כולל כל מפתח תצורה.

אימות חתימות webhook

הגדירו את ה-HMAC נכון פעם אחת; השתמשו בו מחדש בכל מקום.

בניית שילוב כלי

שלבו ניתוב דינמי עם כלים לכל סוכן.

סמנטיקת מסירה

ניסיונות חוזרים, סדר, פסקי זמן.