אף אחד לא אוהב לעבוד קשה ואם הטכנולוגיה מאפשרת לנו לעשות את העבודה השחורה, אז למה שלא ננצל את זה? הכלי שנקרא וובהוק ועליו נספר במאמר זה מאפשר לנו לעשות את זה בדיוק - להיעזר במנגנון אוטומטי שיחסוך לנו זמן וטרחה ויעבוד בשבילנו מסביב לשעון ללא התערבות יד אדם.

מה זה Webhook?

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

אם אינכם אנשים טכניים, ההסבר הזה עשוי להישמע מורכב. אז ננסה לפשט את ההסבר ולהמחיש את הערך באמצעות דוגמה של שימוש בוובהוק: אם אתם עובדים עם מערכת לניהול קשרי לקוחות (CRM) ואתם רוצים "להזריק" את יומן השיחות מהמספר הוירטואלי שלכם אל תוך ה-CRM, תוכלו להגדיר וובהוק שיקבל את המידע על כל שיחה שמתבצעת במספר ויקים רשומת שיחה בתוכנת ה-CRM. התוצאה: כל רישום השיחות מהמספר הוירטואלי שלכם יופיע במערכת ה-CRM באופן אוטומטי בלי התערבות יד אדם.

הגדרת Webhook בשירותי אקסטרה

בשירותים שלנו שדרכם מתאפשרת שיחת טלפון, ניתן להגדיר Webhook:

  1. בקו הסלולרי בסיום שיחה.
  2. במספר הוירטואלי בתחילה ובסיום שיחה.
  3. בנתב הוירטואלי בתחילה ובסיום שיחה.

כדי להירשם לאירועים ולהגדיר URL לוובהוק, יש להיכנס להגדרות השירות המבוקש באיזור האישי.

מידע טכני על הוובהוק שלנו

המערכת שלנו תבצע בקשת HTTP אל כתובת ה-URL שתוגדר במסך הגדרות של השירות שבעבורו הפעלתם וובהוק.

  1. סוג הבקשות האפשריות: HTTP GET או HTTP POST - בשתיהן יועבר מידע לגבי השיחה, במבנה ובפורמט שונה. הפורמטים מפורטים בהמשך הכתוב.
  2. הבקשה תגיע מאחת מכתובות ה-IP היוצאות שלנו.
  3. על כתובת הוובהוק להיות מאובטחת SSL. סכימת ה-URL חייבת להיות https.
  4. התגובה שתתקבל לבקשה לא תישמר.
  5. אם לא תתקבל תגובה תוך 10 שניות, הבקשה תיכשל סופית. אין מנגנון retry.

אירועים

יש לנו 3 סוגי אירועים בעבור שיחות טלפון:

  1. תחילת שיחה - במספר הוירטואלי ובנתב הוירטואלי.
  2. סיום שיחה - בכל השירותים.
  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 או בלעדיה, ואף ניתן לשרשר פרמטרים. כל הכתובות הבאות תקינות:

https://www.example.com/
https://www.example.com/?
https://www.example.com/?my_id=12345

ולאחר שרשור הפרמטרים של השיחה זה ייראה כך:

https://www.example.com/?my_id=12345&id=JUXglqw&type=end&(...)

התוספת בצהוב היא שרשור הפרמטרים עם המידע לגבי השיחה, שמות הפרמטרים באדום.

רשימת פרמטרים 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 שהופק בעבורכם. כך תבצעו בדיקה של הוובהוק:

  1. הפיקו url בשירות הנ"ל. אין צורך בהרשמה, עם כניסה לשירות תופק בעבורכם כתובת באופן אוטומטי.
  2. הדביקו את הURL שהופק אל התיבה המתאימה בהגדרת המספר הוירטואלי באיזור האישי.
  3. בצעו שיחה אל המספר הוירטואלי לניסיון.
  4. חזרו אל השירות webhook.site ובחנו את הבקשה שנשלחה מהשרת שלנו.