אף אחד לא אוהב לעבוד קשה ואם הטכנולוגיה מאפשרת לנו לעשות את העבודה השחורה, אז למה שלא ננצל את זה? הכלי שנקרא וובהוק ועליו נספר במאמר זה מאפשר לנו לעשות את זה בדיוק - להיעזר במנגנון אוטומטי שיחסוך לנו זמן וטרחה ויעבוד בשבילנו מסביב לשעון ללא התערבות יד אדם.
מה זה 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"
}
},
"contact": {
"id": "bsn6HIpx",
"name": "שליח HFD"
},
"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 ותוכלו לחלץ אותם.
קובץ הקלטת שיחה
כל מה שקשור לשיחת טלפון הוא מאוד פרטי ורגיש, והקלטת השיחה היא האלמנט הכי פרטי בשיחת הטלפון ולכן חשוב לנו לשמור עליה בצורה המיטבית. בהתאם לכך איננו מייצרים URL סטטי ציבורי של הקלטת השיחות - זוהי שיטה פחות בטוחה.
עם זאת, הצורך באחזור הקלטת השיחה ברור ומתבקש ואנחנו מציעים כמה אפשרויות לקבל את הקלטת השיחה:
אחזור קובץ ההקלטה עם API
קריאת API אל מתודת /calls/recording/ מחזירה את הקובץ עצמו כתגובת HTTP. זו השיטה המומלצת בעינינו כי בשום שלב אין בה url ציבורי שגישה אליו תאפשר האזנה להקלטת השיחה.
במידה והמטרה היא שמירת ההקלטה, שיטה זו גם "חוסכת" שלב אחד: במקום לאחזר בשני שלבים של הפקדת url ציבורי ואז קריאה נוספת להוריד את קובץ ההקלטה, קריאה זו מחזירה ישירות את קובץ ההקלטה.
הפקת url חתום זמני לגישה להקלטה
ניתן להגדיר זמן תפוגה בדקות (מקסימום 10) ולהפיק url ייחודי לגישה חופשית אך מוגבלת בזמן, אל הקלטת השיחה. בהתאם לשימוש, ניתן להגדיר זמן תפוגה קצר, למשל: ביצירת אוטומציה ששולחת את הקלטת השיחה בוואטסאפ, אפשר להגדיר זמן תפוגה של 2 דקות - זה יספיק לאוטומציה שלכם להוריד את ההקלטה מהשרת שלנו ולשלוח אותה הלאה בוואטסאפ. לאחר 2 דקות ה-URL ייחסם ויפסיק לעבוד מבלי התערבות שלכם.
חשוב: URL ציבורי או מוגבל בזמן חוזר רק בקריאת API ובוובהוק שהוגדר לקריאה במתודת POST.
ניתן להפיק url כזה בשני אופנים:
- אחזור באמצעות קריאת API אל /calls/get-recording-urls/ - הקריאה מקבלת זמן תפוגה בדקות ורשימה של מזהה (או מזהים רבים) של שיחה ומחזירה רשימה של כתובות url חתומות ההופכות את ה-URL לנגיש למספר דקות, לפי הפרמטר שהועבר.
אופן הביצוע: קריאת API על פי התיעוד. - בקריאת ה-Webhook באמצעות הוספת פרמטר ל-URL - ואז בהטרגה של הוובהוק יישלח בתוך אובייקט השיחה גם פרמטר עם url מוגבל בזמן.
אופן הביצוע: הוספת פרמטר ל-URL בשם: config[ttl] עם ערך מספרי בין 1 ל-10 לציון מספר הדקות לתפוגה, למשל:
https://mywebhook.make.com/?config[ttl]=3
בצעו בדיקות עם Webhook.site
כדי לבצע בדיקות לוובהוק שלנו, אנו ממליצים להיעזר בשירות Webhook.site המייצר כתובת URL ייחודית, אותה תוכלו להגדיר ככתובת הוובהוק בהגדרות הקו באקסטרה. השירות ישמור ויציג בפניכם את הבקשות המתקבלות ב-URL שהופק בעבורכם. כך תבצעו בדיקה של הוובהוק:
- הפיקו url בשירות הנ"ל. אין צורך בהרשמה, עם כניסה לשירות תופק בעבורכם כתובת באופן אוטומטי.
- הדביקו את הURL שהופק אל התיבה המתאימה בהגדרת הוובהוק.
- בצעו שיחת ניסיון אל המספר באקסטרה.
- חזרו אל השירות webhook.site ובחנו את הבקשה שנשלחה מהשרת שלנו.