אף אחד לא אוהב לעבוד קשה ואם הטכנולוגיה מאפשרת לנו לעשות את העבודה השחורה, אז למה שלא ננצל את זה? הכלי שנקרא וובהוק ועליו נספר במאמר זה מאפשר לנו לעשות את זה בדיוק - להיעזר במנגנון אוטומטי שיחסוך לנו זמן וטרחה ויעבוד בשבילנו מסביב לשעון ללא התערבות יד אדם.
מה זה Webhook?
וובהוק הוא מנגנון אוטומציה שמוזנק בעת התרחשות של אירוע מסויים: כאשר משהו קורה, הוובהוק שולח מידע לאן שהגדרנו.
אירוע כזה למשל הוא סיום שיחה יוצאת בחייגן הוירטואלי שלנו או שיחה נכנסת לקו הסלולרי. בעת האירוע המערכת שלנו שולחת בקשת HTTP אל כתובת URL מוגדרת מראש ומצרפת אליה מידע על השיחה כמו מספר הטלפון של הצד השני, משך השיחה ועוד. נסו לדמיין רובוט שעובד מסביב לשעון ובסיום של כל שיחה, גולש לטופס באתר שלכם, ממלא את כל הפרטים בטופס (משך שיחה, סטטוס שיחה, מועד השיחה...) ומשגר את הטופס.
אם אינכם אנשים טכניים, ההסבר הזה עשוי להישמע מורכב. אז ננסה לפשט את ההסבר ולהמחיש את הערך באמצעות דוגמה של שימוש בוובהוק: אם אתם עובדים עם מערכת לניהול קשרי לקוחות (CRM) ואתם רוצים "להזריק" את יומן השיחות מהמספר הוירטואלי שלכם אל תוך ה-CRM, תוכלו להגדיר וובהוק שיקבל את המידע על כל שיחה שמתבצעת במספר ויקים רשומת שיחה בתוכנת ה-CRM. התוצאה: כל רישום השיחות מהמספר הוירטואלי שלכם יופיע במערכת ה-CRM באופן אוטומטי בלי התערבות יד אדם.
הגדרת Webhook בשירותי אקסטרה
בשירותים שלנו שדרכם מתאפשרת שיחת טלפון, ניתן להגדיר Webhook:
- בקו הסלולרי בסיום שיחה.
- במספר הוירטואלי בתחילה ובסיום שיחה.
- בנתב הוירטואלי בתחילה ובסיום שיחה.
כדי להירשם לאירועים ולהגדיר URL לוובהוק, יש להיכנס להגדרות השירות המבוקש באיזור האישי.
מידע טכני על הוובהוק שלנו
המערכת שלנו תבצע בקשת HTTP אל כתובת ה-URL שתוגדר במסך הגדרות של השירות שבעבורו הפעלתם וובהוק.
- סוג הבקשות האפשריות: HTTP GET או HTTP POST - בשתיהן יועבר מידע לגבי השיחה, במבנה ובפורמט שונה. הפורמטים מפורטים בהמשך הכתוב.
- הבקשה תגיע מאחת מכתובות ה-IP היוצאות שלנו.
- על כתובת הוובהוק להיות מאובטחת SSL. סכימת ה-URL חייבת להיות https.
- התגובה שתתקבל לבקשה לא תישמר.
- אם לא תתקבל תגובה תוך 10 שניות, הבקשה תיכשל סופית. אין מנגנון retry.
אירועים
יש לנו 3 סוגי אירועים בעבור שיחות טלפון:
- תחילת שיחה - במספר הוירטואלי ובנתב הוירטואלי.
- סיום שיחה - בכל השירותים.
- סיום עיבוד AI - אם מופעל בחשבון.
בכל אחד מהאירועים נשלח אל הוובהוק את אובייקט השיחה המלא ונכלול את הפרטים ככל שאנחנו יכולים.
למשל: באירוע תחילת שיחה, אין מידע על משך השיחה שכן היא טרם התחילה, אז נעביר את הערך 0. באירוע סוף שיחה אין לנו עדיין סיכום שיחה שכן זהו עיבוד אסינכרוני שמוזנק בדיוק באירוע סיום שיחה, ורק בסיומו האובייקט יכיל את סיכום ה-AI.
POST Request
אנו ממליצים להקים וובהוק מסוג POST היות והמידע שאנחנו שולחים לגבי השיחה הולך וגדל עם השנים. למשל: במסגרת שירות סיכום שיחה GenieAI שלנו, אנו מעבירים טקסט סיכום שיחה ולעתים תמלול מלא של השיחה. ובמקרים כאלה של מידע רב, POST היא השיטה המתאימה יותר לכך ועל כן מוטב לבחור בה.
אם תבחרו בהגדרת הוובהוק שהמידע יישלח בשיטת POST, אנו נייצר אובייקט JSON ונשלח אותו בתוך HTTP BODY. דוגמה לאובייקט כזה:
{
"id":"JUXglqw",
"event":"end",
"type":"outgoing",
"own_type":"VIVR",
"ivr_dialed":3,
"duration":12,
"note":"A note by the user",
"starred": false,
"time":{
"timezone":"Israel",
"gmt_offset":"+02:00",
"start":"2024-01-01 22:22:22",
"end":"2024-01-01 22:22:22"
},
"numbers":{
"own":{
"friendly":"077-8038038",
"e164":"+972778038038"
},
"caller":{
"friendly":"053-7654321",
"e164":"+972537654321"
},
"destination":{
"friendly":"053-1234567",
"e164":"+972531234567"
}
},
"AI":{
"status":"COMPLETED",
"summary":{
"gist":"השיחה כוללת הודעה מוקלטת על הקלטת שיחות",
"body":"השיחה היא למעשה מענה קולי אוטומטי של קופת חולים כללית. המערכת מספקת מידע על אפשרויות זימון תורים טלפוני או דיגיטלי, שעות פעילות, אפשרות לקבלת מענה טלפוני בנושא הולטר לב והולטר לחץ דם בימים ראשון עד חמישי בין 9:00 בבוקר ל-13:00, ואפשרות לשיחה עם נציג בנושאים אחרים. בנוסף, מוזכרת אפשרות לזימון תורים דרך אתר ואפליקציית כללית בסמארטפון או במערכת הזימון בשירות העצמי בטלפון.",
"questions":{
"next_steps":[
"לבדוק את שעות הפעילות של המוקד הטלפוני",
"לשקול שימוש באפליקציית כללית לזימון תורים",
"לבדוק אפשרות לקבלת מענה טלפוני בנושא הולטר לב/לחץ דם"
]
}
}
}
}
GET Request
בהגדרת הוובהוק, אם תבחרו שהמידע יישלח בבקשת GET, אנחנו נבצע קריאה אל ה-URL שהגדרתם ונשרשר את הפרמטרים הבאים כ-Url-encoded Query String. ניתן להגדיר כתובת עם querystring או בלעדיה, ואף ניתן לשרשר פרמטרים. כל הכתובות הבאות תקינות:
ולאחר שרשור הפרמטרים של השיחה זה ייראה כך:
התוספת בצהוב היא שרשור הפרמטרים עם המידע לגבי השיחה, שמות הפרמטרים באדום.
רשימת פרמטרים GET
בטבלה מפורטים כל הפרמטרים המועברים בקריאת GET אל הוובהוק.
שימו לב: אובייקט AI
והתכונה note
- שניהם אינם מועברים בוובהוק ב-GET אלא רק בקריאת POST!
שם הפרמטר | תיאור | דוגמה |
---|---|---|
id | מזהה ייחודי של השיחה באקסטרה. | JUXglqw |
event | האירוע שעליו הוובהוק מדווח. שימו לב: לכל שירות יש את האירועים שלו, למשל: בקו הסלולרי הדיווח הוא רק בסיום שיחה בעוד במספר הוירטואלי יש קריאה גם בהתחלה וגם בסיום שיחה. | end start AI-DONE |
type | סטטוס \ סוג השיחה: נכנסת נענתה, יוצאת לא נענתה וכו' | outgoing outgoing_missed outgoing_start incoming incoming_missed incoming_start |
own_type | מזהה השירות באקסטרה: מספר וירטואלי, נתב וירטואלי, קו סלולרי | VIVR VNUM MOBL |
starred | האם השיחה מסומנת בכוכב? | 0 1 |
ivr_dialed | מספר שהוקש בנתב הוירטואלי. אם לא הוקש או לא נתב או הייתה הקשה שגויה, שדה זה יושמט | 3 |
own_number_friendly | מספר הקו שלכם באקסטרה, שממנו הוצאתם שיחה או אליו קיבלתם שיחה. | 077-8038038 |
own_number_e164 | מספר הקו שלכם באקסטרה בפורמט בינלאומי | +972778038038 |
caller_number_friendly | מספר הטלפון של יוזם השיחה בפורמט ידידותי. ריק אם המספר חסום | 053-7654321 |
caller_number_e164 | מספר הטלפון של יוזם השיחה בפורמט בינלאומי | +972537654321 |
destination_number_friendly | מספר הטלפון של מקבל השיחה בפועל בפורמט ידידותי. לרוב יהיה זהה ל-own_number אבל במקרה של "עקוב אחריי" או בניתוב בנתב הוירטואלי, יחזיק את המספר שאליו השיחה חוברה בפועל. | 053-1234567 |
destination_number_e164 | מספר הטלפון של מקבל השיחה בפורמט בינלאומי. | +972531234567 |
time_duration_seconds | משך השיחה בשניות. לא יועבר באירועי תחילת שיחה. | 126 0 |
time_timezone | אזור זמן | Israel |
time_gmt_offset | ההפרש מ-GMT | +02:00 |
time_started | הזמן שבו התחילה השיחה בפורמט רגיל. | 2024-01-01 22:22:22 |
time_started_8601 | הזמן שבו התחילה השיחה בפורמט 8601. | 2024-02-13T15:19:21+00:00 |
time_ended | הזמן שבו הסתיימה השיחה בפורמט רגיל. לא יועבר באירועי תחילת שיחה. | 2024-01-01 23:23:23 |
time_ended_8601 | הזמן שבו הסתיימה השיחה בפורמט 8601. לא יועבר באירועי תחילת שיחה. | 2024-02-13T15:19:21+00:00 |
פרמטרים נוספים Custom Data
הדרך לצרף פרמטרים שלכם לוובהוק, כמו למשל: מזהה פנימי אצלכם במערכת, היא באמצעות שרשור שלהם אל ה-URL של הבקשה. למשל:
https://www.example.com/?my_id=12345
בקריאה ל-URL זה, לא משנה אם זו קריאת POST עם JSON Body או קריאת GET עם Querystring, בשניהם אותם פרמטרים "יחזרו" אליכם כחלק מה-URL ותוכלו לחלץ אותם.
קובץ הקלטת שיחה
היות והקלטת שיחה היא מידע מאוד רגיש, איננו מחזירים אותו לצד שאר הפרמטרים של השיחה.
כדי לקבל את קובץ ההקלטה של השיחה יש לבצע קריאת API נפרדת.
צרו קשר כדי לקבל הנחיות ותיעוד בנושא זה.
ההמלצה שלנו: Webhook.site
כדי לבצע בדיקות לוובהוק שלנו, אנו ממליצים לכם להיעזר בשירות Webhook.site המייצר כתובת URL ייחודית, אותה תוכלו להגדיר ככתובת הוובהוק למספר הוירטואלי. השירות ישמור ויציג בפניכם את הבקשות המתקבלות ב-URL שהופק בעבורכם. כך תבצעו בדיקה של הוובהוק:
- הפיקו url בשירות הנ"ל. אין צורך בהרשמה, עם כניסה לשירות תופק בעבורכם כתובת באופן אוטומטי.
- הדביקו את הURL שהופק אל התיבה המתאימה בהגדרת המספר הוירטואלי באיזור האישי.
- בצעו שיחה אל המספר הוירטואלי לניסיון.
- חזרו אל השירות webhook.site ובחנו את הבקשה שנשלחה מהשרת שלנו.