איך זה עובד
- הירשמו לאירוע
telephony.incoming(טלפון) אוweb.incoming(ווידג’ט). שניהם webhooks חוסמים: ThunderPhone ממתין עד 10 שניות לתגובה שלכם לפני המשך השיחה. - ThunderPhone שולח לכם את
{call_id, from_number, to_number}(סשנים של וידג’ט כוללים שדות ייעודיים לווידג’ט במקום מספרים — ראו את סכמת הבקשה). - השרת שלכם מגיב עם תצורת סוכן (הנחיה, קול, מוצר, כלים). ThunderPhone משתמש בתצורה הזו עבור השיחה.
- אם תחזירו
{}, תחרגו מזמן ההמתנה או תתקבל שגיאה, ייעשה שימוש בסוכן שהוקצה סטטית כגיבוי. ברירת מחדל בטוחה.
פועל באופן זהה עבור שיחות טלפון (
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 נכון פעם אחת; השתמשו בו מחדש בכל מקום.
בניית שילוב כלי
שלבו ניתוב דינמי עם כלים לכל סוכן.
סמנטיקת מסירה
ניסיונות חוזרים, סדר, פסקי זמן.