Real Time API

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

 

Real Time API

 

הסבר כללי

 

Real Time API של חברת וויסנטר מעביר אליכם את אירועי טלפוניה המתרחשים בחשבונכם בעזרת חיבור דרך Socket.

ב Events SDK מתבצע שימוש על מנת לקבל מידע בזמן אמת דרך חיבור "שקע" (Socket Connection) כאשר מאחורי הקלעים בצד שרת של חברת וויסנטר ה Events SDK מבצע שימוש ב Socket.io על מנת לשלוח ולקבל אירועי טלפוניה.

התחילו מימוש של שירות זה על ידי הורדה והתקנה של הSDK שלנו מכאן.
בנוסף, במידה ואתם משתמשים בשפת תכנות NET. תוכלו להוריד את החבילה שלנו מהאתר של Nuget.

 

התחברות לשירות

 

על מנת להתחבר ולבצע שימוש בשירות, תחילה יש לבצע אימות, האימות יכול להתבצע באחת משלוש צורות:

1. אימות דרך פרטי משתמש.
2. אימות דרך פרטי חשבון.
3. אימות דרך טוקן הניתן מראש.

 

דוגמאת קוד לחיבור דרך פרטי משתמש


במידה והנכם מעוניינים לקבל אירועים פר משתמש כל משתמש יוכל להתחבר עם פרטי הגישה למשתמש וויסנטר שלו (הניתנים דרך ממשק הניהול):


1
2
3
4
5
          
let sdk = new EventsSDK({
loginType: 'user',
email: '[email protected]',
password: 'password',
});
        

 

דוגמאת קוד לחיבור דרך פרטי חשבון

 

במידה והנכם מעוניינים לקבל אירועים עבור פעילות של כלל החשבון שלכם תוכל לממש צורת התחברות זו.

 

1
2
3
4
5
          
let sdk = new EventsSDK({
loginType: 'account',
username: 'username',
password: 'password',
});
        

 

דוגמאת קוד לחיבור דרך פרטי טוקן

 

במידה ותרצו לקבוע מי המשתמשים בארגון שלכם תוכלו לקבל עליהם אירועי טלפוניה במסגרת שימוש ב Real Time api תוכלו להשתמש בטוקן שניתן לכם מראש.

1
2
3
4
5
          
let sdk = new EventsSDK({
loginType: 'token',
useLoginApi: true,
token: 'token',
});
        

 

מימוש הסוקט

 

את החיבור לסוקט ניתן לממש באחת משתי צורות:

  1. חיבור צד לקוח בעזרת HTML
  2. חיבור צד שרת בעזרת C#

 

דוגמת קוד לחיבור צד לקוח בעזרת HTML

 

באפשרותכם להתחבר לסוקט של Real Time api ישירות דרך הדפדפן של הנציג במערכת המידע שלכם.
על מנת שתוכלו לבצע בדיקות לאחר חיבור מוצלח תוכלו לפתוח את הקטע קוד מטה בדפדפן שלכם ולבחון את האירועים המתקבלים דרך דף הרקע של הדפדפן תחת לשונית Console (ניתן גם ללחוץ על F12 בדפדפן).

 

קטע קוד עבור חיבור בעזרת HTML

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
          
<html>
<head></head>
<body>
Status: <span id="status-txt">Disconnected</span>
<br/>
<br/>
<div id="response-body"></div>
</body>
</html>
<!-- Events SDK -->

<script src="https://cdn.voicenter.co/cdn/events-sdk/voicenter-events-sdk.umd.js"></script>

<script>
let sdk = new EventsSDK({
loginType: 'user',
email: '[email protected]',
password: 'password',
});
sdk.init().then(function () {
// Success login event
sdk.on('loginSuccess', function (response) {
document.getElementById("status-txt").innerHTML = "Connected";
})
// Extension event
sdk.on('ExtensionEvent', function (response) {
console.log(response);
const cur = document.getElementById("response-body");
cur.innerHTML = cur.innerHTML + response.data.reason + "<br />";
})
// After logging in, receive all extensions statuses
sdk.on('AllExtensionsStatus', function (response) {
console.log(response);
})
});
</script>
        

 

לאחר החיבור המוצלח תופיע הודעה של Connected, כמו כן בעת ביצוע פעולה מסוימת עם השלוחה יופיע חיווי מתאים בדפדפן.
למשל, אם שיניתם סטטוס, או קיבלתם שיחה או ביצעתם שיחה.

 

 

דוגמת קוד לחיבור Socket.io בצד שרת בשפת C#

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
          
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using VoicenterRealtimeAPI;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
//Logger
VoicenterRealtime voicenterRealtime = new VoicenterRealtime();
Logger.onLog += (object sender, VoicenterRealtimeLogger e) =>
{
Console.WriteLine(e.message);
};
//Listener
VoicenterRealtimeListener socket = voicenterRealtime.Token("XXXXX").Init();
socket.OnEvent += OnEventHandler;
socket.Listen();
Console.ReadLine();
}
}
}
        

 

 

סוגי אירועים

 

יש מידע רב שנשלח במסגרת API זה, לכן המידע מתחלק לסוגים שונים כאשר הוא נשלח בפורמט POST-JSON: 

  1. Initial message
  2. loginSuccess
  3. loginStatus
  4. AllExtensionStatus
  5. QueueEvents
  6. ExtensionEvent

 

Initial message

 

אירוע יישלח לאחר הבקשה שלכם להתחבר לשירות.

המידע שנשלח באירוע זה מתאר את המידע הטכני בחיבור שלכם ל Socket של וויסנטר, מידע זה שימושי בעיקר עבור חברת וויסנטר לצורך ניטור איכות החיבור.

 

שם שדה תיאור שדה סוג שדה
sidמזהה ייחודי של החיבור ל Socket שלכם.מחרוזת
Upgradesרשימת שדרוגי התעבורה האפשריים.מערך
pingIntervalהמרווח זמן של פרוטוקול socket.io.מספר שלם
pingTimeoutמרווח הזמן הקצוב של פרוטוקול socket.io.מספר שלם

 

הודעת Initial message לדוגמה

 

1
2
3
4
5
6
          
{
sid: "WF-eNmG0VbGkSn1wbD3n",
upgrades: [],
pingInterval: 60000,
pingTimeout: 180000
}
        

 

loginSuccess

 

סוג אירוע זה יישלח אליכם לאחר ביצוע חיבור מוצלח על ה Socket מולנו.
במידה ואינכם מצליחים להתחבר עקב פרטי חיבור משתמש לא נכונים תקבלו תגובה: 401(“Unauthorized”).

במידה ואינכם מצליחים להתחבר עקב פרטי טוקן לא נכונים תקבלו תגובה: 500(“Unexpected token”).

 

פרמטרים באירוע loginSuccess

 

שם שדה תיאור שדה סוג שדה
errorCodeשדה זה יתן קוד 0 במידה והכל תקין ובוצע חיבור מוצלח.
קוד 1 יוחזר במידה והחיבור אינו מוצלח.
מספר שלם
errorDescהתיאור “Ok” יעיד על תיאור של חיבור מוצלח.מחרוזת
servertimeמציין בפורמט Epoch את הזמן הנוכחי בשרת אשר מפעיל את השירות.מספר שלם
servertimeoffsetמציין בדקות את ההבדל בין הזמן הנוכחי בשרת לבין הזמן הנוכחי שלכם.מספר שלם

 

הודעת loginSuccess לדוגמה

 

1
2
3
4
5
6
          
{
errorCode: 0,
errorDesc: "OK"
servertime: 1597930812,
servertimeoffset: 180,
}
        

 

loginStatus

 

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

 

פרמטרים באירוע loginStatus

 

שם שדה תיאור שדה סוג שדה
errorCodeשדה זה יתן קוד 0 במידה והכל תקין ובוצע חיבור מוצלח.
קוד 1 יוחזר במידה והחיבור אינו מוצלח.
מספר שלם
errorDescתיאור "OK" יעיד על ביצוע חיבור מוצלח.מחרוזת
servertimeמרווח הזמן של הפרוטוקל Socket.io.מספר שלם
servertimeoffsetמרווח הפסקת הזמן של הפרוטוקול Socket.io מספר שלם
Queuesמערך של מעגלי המתנה מנוטרים בחשבונכם.מערך
QueueIDמזהה ייחודי של מעגל ההמתנה.מספר שלם
QueueNameשם מעגל ההמתנהמחרוזת
Callsמערך אשר מציג את השיחות הפעילות בכל מעגל המתנה.
במידה ואין שיחות פעילות המערך יהיה ריק.
מערך
CallerIDמספר הטלפון של הלקוח הממתין במעגל ההמתנה.מחרוזת
CallerNameשם של הלקוח המתקשר. בשיחות של וויסנטר יש באפשרותכם להציג שם מתקשר.
לא נתמך על ידי כל הספקים.
מחרוזת
IvrUniqueIDמזהה שיחה ייחודי.
שדה זה יכול גם להיקרא Ivrid.
מחרוזת
JoinTimeStampזמן בפורמט Epoch של הצטרפות השיחה למעגל ההמתנה.מספר שלם
DistributorIDנמצא בתוך המערך שמציין את מעגלי ההמתנה.
מציין את המזהה המספרי של החשבון בוויסנטר אליו שייך המעגל
מספר שלם
IsDistributedQueueמציין האם המעגל הוא מעגל המתנה מבוזר או לא.
ערכים אפשרים הם true/false.
בוליאני
UserIDמזהה משתמש של וויסנטר אשר עליו מוגדר מעגל ההמתנה.מספר שלם
JoinTimeStampמופיע בתוך המערך של Calls ומציין בפורמט epoch את הזמן שבו השיחה הצטרפה למעגל ההמתנה.Epoch
calldurationintervalמציין בפורמט Epoch את משך זמן השיחה.Epoch

 

דוגמא לאירוע מסוג LoginStatus

 

[
"loginStatus",
{
"servertime": 1597941727,
"queues": [
{
"Calls": [
{
"CallerID": "0501234567",
"CallerName": "John Doe",
"IvrUniqueID": "2020082015645675456434324949c071d",
"JoinTimeStamp": 1597941709,
"ivrid": "2020082015645675456434324949c071d"
}
]
"QueueID": 12345678,
"QueueName": "Queue1",
"DistributorID": 111,
"IsDistributedQueue": false,
"UserID": 11111
}
{
"Calls": [
]
"QueueID": 12345679,
"QueueName": "Queue2",
"DistributorID": 111,
"IsDistributedQueue": false,
"UserID": 11111
}
]
"errorCode": 0
}
]

 

AllExtensionStatus

 

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

 

פרמטרים באירוע AllExtensionStatus

שם שדה תיאור שדה סוג שדה
errorCodeסטטוס 0 יעיד על תקינות.מספר שלם
errorDescתיאור "OK" יעיד על קבלת מידע מוצלח על שלוחות בחשבונכם.מחרוזת
servertimeמרווח הזמן של הפרוטוקל Socket.io.מספר שלם
servertimeoffsetמרווח הפסקת הזמן של הפרוטוקול Socket.ioמספר שלם
extensionsמערך עם פרטי שלוחות המנוטרות ב Real Time API.מערך
userIDמזהה ייחודי של משתמש וויסנטר.
לכל משתמש יש שלוחה (השלוחה יכולה להיות טלפון IP, סופטפון או כרטיס סים לסלולר).
מספר שלם
onlineUserIDמזהה משתמש ייחודי אשר כרגע מחובר לשלוחה.
נתון זה יהיה רלוונטי במידה והנכם עובדים בתצורה של כיסאות חמים.
בתצורה זו בעצם אין לנציגים מקומות קבועים
מספר שלם
userNameשם המשתמש של המשתמש אשר מחובר לשלוחה.מחרוזת
numberמזהה ייחודי של השלוחה.מספר שלם
extenUserמזהה ייחודי של פרוטוקול טלפוניה SIP של השלוחה, לפי פרמטר זה תוכלו לזהות איזו שלוחה זו.מחרוזת
representativeמזהה של המשתמש שכרגע מחובר לשלוח.
במידה ואתם עובדים בתצורה של כיסאות חמים שדה זה יציג את השם של הנציג אשר מחובר לשלוחה זו.
מספר שלם
summeryבמערך זה יוצג השם משתמש של הנציג אשר מחובר לשלוחה זו.
במידה ושום משתמש לא התחבר לשלוחה יוצג השם משתמש של המשתמש אליו השלוחה משויכת.
מערך
representativeStatusמזהה סידורי של הסטאטוס שבו הנציג נמצא כרגע.
את רשימת הסטטוסים ניתן לראות בממשק הניהול.
הערכים יהיו בין 1 - 13.
מספר שלם
representativeUpdatedהזמן שבו הנציג שינה סטטוס פעם אחרונה.מספר שלם
lastCallEventEpochהזמן בפורמט Epoch של השיחה האחרונה (נכנסת או יוצאת) של הנציג.מספר שלם
lastAnsweredCallEvent Epochהזמן בפורמט Epoch של השיחה האחרונה שהנציג ענה.מספר שלם
lastHangupCallEpochהזמן בפורמט Epoch שבו הנציג סיים את שיחתו האחרונה.מספר שלם
Callsמערך אשר מציג את השיחות הפעילות של השלוחה.
במידה ולשלוחה אין שיחה פעילה, המערך יהיה ריק.
מערך
CallerIDנמצא בתוך מערך Calls, מציג את מספר הטלפון של הלקוח המתקשר.מחרוזת
CallerNameשם המתקשר.
בשיחות פנימיות בתוך וויסנטר ניתן להגדיר שם מתקשר.
מחרוזת
IvrUniqueIDמזהה שיחה ייחודי.
יכול גם להופיע כפרמטר - Ivrid.
מחרוזת
JoinTimeStampהזמן בפורמט Epoch שבו השיחה נכנסה למעגל המתנה.מספר שלם

 

דוגמא לאירוע AllExtensionStatus

 

[
"AllExtensionsStatus",
{
"servertime": 1597945606,
"extensions": [
{
"calls": [
]
"userID": 12345678,
"userName": "Clark Kent",
"number": 9876543,
"onlineUserID": 12345678,
"extenUser": "SIPSIP1",
"summery": {
"representative": "Clark Kent"
}
"representative": 0,
"representativeStatus": 2,
"lastCallEventEpoch": 1597933035,
"lastAnsweredCallEventEpoch": 1545243466,
"representativeUpdated": 0,
"peerStatus": "OK"
}
{
"calls": [
]
"userID": 12345679,
"userName": "Lois Lane",
"number": 9876542,
"extenUser": "SIPSIP2",
"summery": {
"representative": "Lois Lane"
}
"representative": 12345679,
"representativeStatus": 1,
"lastCallEventEpoch": 1597944981,
"lastAnsweredCallEventEpoch": 1597944981,
"representativeUpdated": 1597944933000,
"peerStatus": "OK"
}
]
"errorCode": 0
}
]

 

QueueEvent

 

אירועים מסוג זה יאפשרו לכם לקבל מידע על שיחות שהצטרפו אל מעגל המתנה ויצאו ממעגל המתנה.
אירועים מסוג זה יהיו בעלי משמעות רבה עבורכם במידה וניטור פעילות מעגל ההמתנה מאוד חשובה ללוגיקה העסקית שלכם.
מה נחשב ליציאה מעגל המתנה במסגרת API זה:

  1. מענה של שיחה על ידי נציג.
  2. יציאה יזומה של הלקוח מהמתנה (במידה ומעגל ההמתנה שלכם מאפשר זאת).
  3. ניתוק של השיחה ונטישה של ההמתנה על ידי הלקוח.

על ידי קבלת מידע על יציאה ונטישה של לקוח ממעגל המתנה תוכלו לשלוח אליהם הודעת ווצאפ/סמס על מנת להמשיך התקשרות בערוץ תקשורת נפרד.
תוכלו בין היתר גם להקפיץ התרעה למנהלי המוקד שלכם על שיחה ננטשת ועוד פעולות.

נא שימו לב כי אירועי מעגל המתנה יישלחו על ידי Real Time API רק במידה וביצעתם התחברות דרך טוקן או פרטי חשבון.
במידה ויבצעתם חיבור עם פרטי משתמש אירועים אלו לא יישלחו אליכם.

 

פרמטרים ב QueueEvent

 

שם שדה תיאור שדה סוג שדה
eventNameשם האירוע אשר בעצם מודיע על סוג האירוע.
יכיל את הערך: "queue".
מחרוזת
reasonשדה זה מציין את הסיבה להיווצרות האירוע, עבור אירועים של מעגלי המתנה ישנם 3 סיבות:
סיבה ראשונה: "JOIN" - שיחה הצטרפה אל המעגל המתנה.
סיבה שנייה: 'EXIT" - שיחה ממתינה במעגל ההמתנה נענתה.
סיבה שלישית: “ABANDONED” - שיחה שלא נענתה במעגל עקב אחת מהסיבות הבאות: ניתוק של השיחה על ידי הלקוח, מיצוי זמן המתנה מקסימלי במעגל של השיחה.
מחרוזת
servertimeמרווח הזמן של הפרוטוקל Socket.io. מספר שלם
servertimeoffsetמרווח הפסקת הזמן של הפרוטוקול Socket.ioמספר שלם
dataמערך אשר יכלול בתוכו מידע של מעגלי ההמתנהמערך
QueueIDמזהה ייחודי של מעגל ההמתנהמספר שלם
QueueNameשם של מעגל ההמתנהמחרוזת
Callsמערך אשר יציג שיחות פעילות במעגל ההמתנה.
במידה ולא קיימות שיחות פעילות, המערך יהיה ריק.
מערך
CallerIDמספר טלפון של הלקוח המתקשרמחרוזת
CallerNameשם של הלקוח המתקשר. בשיחות של וויסנטר יש באפשרותכם להציג שם מתקשר.
לא נתמך על ידי כל הספקים.
מחרוזת
IvrUniqueIDמזהה שיחה ייחודי.
שדה זה יכול גם להיקרא Ivrid.
מחרוזת
JoinTimeStampמציין את מועד הצטרפות השיחה למעגל בפורמט Epoch.מספר שלם

 

דוגמא לאירוע של הצטרפות למעגל

 

[
"QueueEvent",
{
"data": {
"QueueID": 15106,
"QueueName": "ניקיטה בדיקה",
"UserID": 83242,
"DistributorID": 5956,
"Calls": [
{
"CallerID": "0722776772",
"CallerName": "Queue Testing",
"IvrUniqueID": "2022102013511002256fea804710c058",
"JoinTimeStamp": 1666263072,
"calldurationinterval": 1666263072,
"ivrid": "2022102013511002256fea804710c058",
"customdata": {
}
}
]
}
"eventName": "queue",
"reason": "JOIN",
"servertime": 1666263072,
"servertimeoffset": 0,
"telephonyservertime": 1666273872,
"ivruniqueid": "2022102013511002256fea804710c058"
}
]

 

דוגמא לאירוע של מענה של שיחה שנמצאת במעגל

 

[
"QueueEvent",
{
"data": {
"QueueID": 1234567,
"Calls": [
]
"QueueName": "Queue1"
}
"eventName": "queue",
"reason": "EXIT",
"servertime": 1598206119,
"servertimeoffset": 180,
"telephonyservertime": 1598206119,
"ivruniqueid": "2020082015645675456434324949c071d"
}
]

 

דוגמא לאירוע של שיחה ננטשת ממעגל המתנה

 

* שיחה ננטשת היא שיחה שהלקוח המתקשר סיים אותה לפני קבלת מענה מנציג.

[
"QueueEvent",
{
"data": {
"QueueID": 1234567,
"Calls": [
]
"QueueName": "Queue1"
}
"eventName": "queue",
"reason": "ABANDONED",
"servertime": 1598206251,
"servertimeoffset": 180,
"telephonyservertime": 1598206251,
"ivruniqueid": "2020082015645675456434324949c0712"
}
]

 

אירועי שלוחות

 

אירועים אלו מציינים פעילות טלפונית (צלצול/מענה/ניתוק) של השלוחות הקיימות בחשבון.
במידה וביצעתם חיבור התחלתי בעזרת פרטי משתמש אז תקבלו אירועי שלוחות רק עבור השלוחות השייכות לאותו משתמש.
לחלופין, במידה וביצעתם חיבור בעזרת טוקן או פרטי חשבון תקבלו אירועי שלוחות עבור כלל השלוחות בחשבון שלכם.

 

פרמטרים של ExtensionEvent

 

שם שדה תיאור סוג שדה
eventName""extension", יעיד על סוג האירוע.מחרוזת
reasonהסיבה לשליחת האירוע, הסיבות האפשריות הן:
צלצול/חיוג של שיחה חדשה - NEWCALL, כך תוכלו לדעת שיש צלצול/חיוג בשלוחה הרלוונטית.
מענה של שיחה - ANSWER - כך תוכלו לדעת ששלוחה ענתה לשיחה או שיחה יוצאת נענתה.
סיום שיחה - HANGUP - לאו דווקא סיום שיחה שנענתה, יש פרמטר נוסף אשר ישקף האם השיחה נענתה.
שיחה נמצאת במצב ממתינה - HOLD - ויש אירוע - UNHOLD - אשר יעדכן על סיום מצב ממתינה.
אירוע עבור ציון שינוי סטטוס של משתמש - userStatusUpdate.
מחרוזת
causeפרמטר זה יישלח רק כאשר השדה “reason”= “HANGUP” ומאחר והשדה cause מסמן את סיבת סיום השיחה.
הסיבה - Normal hangup - תסמן סיום שיחה של שיחה שצלצלה בשלוחה מסוימת, אך זה לא אומר שהשיחה נענתה, יתרה מזו, אם השיחה סיימה לצלצל במספר שלוחות אירוע זה יישלח מספר פעמים בהתאמה.
סיבה - Answered elsewhere - במידה והשיחה צלצלה במספר השלוחות אז למעט השלוחה שענתה לשיחה, שאר השלוחות יקבלו את הסיבה הנ"ל.
הסיבה - Call Rejected - כאשר נציג רוצה לבצע שיחת קליק2קול והרגל הראשונה של השיחה לא קיבלה מענה עקב דחייה/תקלה.
מחרוזת
servertimeמרווח הזמן של פרוטוקול Socket.io.מספר שלם
servertimeoffsetמרווח הפסקת הזמן של פרוטוקול Socket.io.מספר שלם
Dataמערך אשר מציג את אירועי השלוחותמערך
Callsמערך אשר מציג את השיחות הפעילות עבור השלוחה הרלוונטית
במידה ואין שיחות פעילות המערך יהיה ריק.
מערך
currentCallמערך אשר מציג את השיחה הפעילה הרלוונטית לאירוע שהתקבל, במידה ויש מספר שיחות פעילות בשלוחה, המערך ייתן חיווי על השיחה הרלוונטית לאירוע שהתקבל.
לדוגמא, במידה והשלוחה נמצאת בשיחה ובו זמנית מקבל שיחה נוספת.
עבור השיחה הנוספת יישלח אירוע נוסף.
מערך
answeredהשדה המסמן האם השיחה נענתה.
במידה והשיחה נענתה - השדה יכיל את הספרה 1, אחרת השדה יכיל את הספרה 0.
בוליאני
callAnsweredשדה בפורמט Epoch אשר מכיל את זמן מענה השיחה.
במידה והשיחה לא נענתה, השדה יכיל 0.
מספר שלם
callStartedשדה אשר מציין את זמן תחילת השיחה בפורמט Epoch.מספר שלם
callernameשם המתקשר אשר יופיע לנציג בשלוחה, עבורו שלוחות של וויסנטר באפשרותכם לקבוע שם מתקשר דרך נתב השיחות. מחרוזת
callerphoneמספר טלפון של הלקוח המתקשר/ הלקוח אליו מחייגים.מחרוזת
callstatusמציג את הסטטוס הנוכחי של השיחה. הסטטוסים האפשריים הם:
צלצול של שיחה נכנסת - Ringing - יוצג באירוע.
עבור חיוג של שיחות יוצאות - Dialing - יוצג באירוע.
עבור מענה של שיחה בשלוחה - Talking - יוצג באירוע.
עבור מקרה שבו השלוחה מאזינה לשלוחה אחרת - Spying - יוצג באירוע.
מחרוזת
customdataמידע ייחודי שלכם שאתם העברתם ב Click2Call או External Layer api או Dialer API.מערך
didמציין את המספר אליו התקשרו בשיחה נכנסת בלבד.מחרוזת
directionכיוון השיחה, הכיוונים האפשריים הם:
שיחה נכנסת תצויין על ידי Incoming סטטוס.
שיחה יוצאת תצויין על ידי Outgoing סטטוס.
האזנה לשלוחה תצויין על ידי Spy סטטוס.
שיחות קליק2קול יצויינו על ידי Click2Call סטטוס.
מחרוזת
c2cdirectionבמידה והאירוע הוא עבור שיחת קליק2קול, שדה זה מציין את הרגל של השיחה בעזרת אחד משני ערכים:
עבור רגל ראשונה -1 יצויין ערך זה.
עבור רגל שנייה 2 יצויין ערך זה.
מספר שלם
ivridמזהה שיחה ייחודי.מחרוזת
recordingפרטי הקלטת השיחהמערך
Filenameשם הקלטת השיחה (חשוב: לא מדובר על הקישור להקלטת השיחה).
השדה יישלח במידה והשיחה אמורה להיות מוקלטת.
במידה ומדובר על שיחה יוצאת שדה זה יישלח רק בעת מענה של השיחה ולא בצלצול של השיחה.
השדה נשלח בתוך המערך של recording.
מחרוזת
IsMutedשדה זה מציין אם הקלטת השיחה מושתקת או לא.
יש באפשרותכם בעזרתכם Voicenter Mute API או הסופטפון להשתיק/לא להקליט חלק מסוים מהשיחה ולעצור את הקלטת השיחה וכמובן גם להחזיר.
הערך 0 יציין שהשיחה היא לא בהשתק.
הערך 1 יציין שכן.
מחרוזת
extenUserמזהה סיפ (מזהה ייחודי לכל שלוחה) של השלוחה.מחרוזת
userIDמזהה משתמש אשר אליו שייכת השלוחה.מספר שלם
onlineUserIDמזהה המשתמש אשר נמצא כרגע בלוגין על השלוחה שבמסגרתה התקבל האיוונט.
במידה והנכם עובדים בשיטת כיסאות חמים, קרי לנציגים אין עמדה קבועה, כך תוכלו לדעת איזה משתמש מחובר לאיזו שלוחה באותו רגע.
מספר שלם
userNameשם המשתמש שהוגדר למשתמש בוויסנטר.מחרוזת
numberמזהה מספרי של השלוחה.מספר שלם
representativeשם הנציג אשר מחובר לשלוחה באותו רגע.
שם הנציג יוצג לפי ההגדרה של שם המשתמש בוויסנטר.
מחרוזת
representativeStatusמזהה מספרי של הסטטוס שבו השלוחה נמצאת כעת.
הערכים יהיו בין 1-13.
מספר שלם
representativeUpdatedהזמן (בפורמט Epoch) שבו בוצע שינוי הסטטוס האחרון של השלוחה.מספר שלם
lastCallEventEpochהזמן (בפורמט Epoch) שבו בוצעה השיחה האחרונה בשלוחה הרלוונטית.מספר שלם
lastAnsweredCallEvent Epochהזמן (בפורמט Epoch) שבו נענתה השיחה האחרונה בשלוחה הרלוונטית.מספר שלם
lastHangupCallEpochהזמן (בפורמט Epoch) שבו הסתיימה השיחה האחרונה בשלוחה הרלוונטית.מספר שלם
callerIDבשיחות נכנסות מציג את מספר הטלפון של הלקוח המתקשר.
בשיחות יוצאות יציג את המספר המזהה שאיתו מתקשרים.
השדה הזה יופיע כאשר reason="HANGUP".
מחרוזת
queueIDבמידה והשיחה עברה במעגל המתנה, שדה זה יציין את המזהה הייחודי של המעגל.מספר שלם
campaignIDבמידה ומדובר על שיחת חייגן, שדה זה יציין את המזהה הייחודי של הקמפיין שהשיחה היא חלק ממנו.מספר שלם

 

דוגמאות לאירוע של שיחה נכנסת מצלצלת

 

[
"ExtensionEvent",
{
"data": {
"eventName": "extension",
"reason": "NEWCALL",
"servertime": 1606908124,
"servertimeoffset": 120,
"calls": [
{
"callStarted": 1606908123,
"calldurationinterval": 1606908123,
"callAnswered": 0,
"answered": 0,
"callername": "Test Voicenter",
"callerphone": "0501234567",
"callstatus": "Ringing",
"customdata": {
}
"direction": "Incoming",
"ivrid": "202012021122010135330b4f77",
"recording": {
"Filename": "2020120-aws-0501234567-0722776772.mp3",
"IsMuted": 0
}
"did": "0722776772"
}
]
"userID": 7654321,
"userName": "Clark Kent",
"number": 1234567,
"extenUser": "SIPSIP1",
"summery": {
"representative": "Clark Kent"
}
"onlineUserID": 7654321,
"representative": 7654321,
"representativeStatus": 1,
"lastCallEventEpoch": 1606908124,
"lastAnsweredCallEventEpoch": 1606847063,
"lastHangupCallEpoch": 1606905028,
"representativeUpdated": 1606763622000,
"currentCall": {
"callStarted": 1606908123,
"calldurationinterval": 1606908123,
"callAnswered": 0,
"answered": 0,
"callername": "Test Voicenter",
"callerphone": "0501234567",
"callstatus": "Ringing",
"customdata": {
}
"direction": "Incoming",
"ivrid": "202012021122010135330b4f77",
"recording": {
"Filename": "2020120-aws-0501234567-0722776772.mp3",
"IsMuted": 0
}
"did": "0722776772"
}
}
}
]

 

דוגמאות לאירוע של שיחה נכנסת שנענתה

 

[
"ExtensionEvent",
{
"data": {
"eventName": "extension",
"reason": "ANSWER",
"servertime": 1606908124,
"servertimeoffset": 120,
"calls": [
{
"callStarted": 1606908123,
"calldurationinterval": 1606908123,
"callAnswered": 1606908134,
"answered": 1,
"callername": "Test Voicenter",
"callerphone": "0501234567",
"callstatus": "Talking",
"customdata": {
}
"direction": "Incoming",
"ivrid": "202012021122010135330b4f77",
"recording": {
"Filename": "2020120-aws-0501234567-0722776772.mp3",
"IsMuted": 0
}
"did": "0722776772"
}
]
"userID": 7654321,
"userName": "Clark Kent",
"number": 1234567,
"extenUser": "SIPSIP1",
"summery": {
"representative": "Clark Kent"
}
"onlineUserID": 7654321,
"representative": 7654321,
"representativeStatus": 1,
"lastCallEventEpoch": 1606908124,
"lastAnsweredCallEventEpoch": 1606847063,
"lastHangupCallEpoch": 1606905028,
"representativeUpdated": 1606763622000,
"currentCall": {
"callStarted": 1606908123,
"calldurationinterval": 1606908123,
"callAnswered": 1606908134,
"answered": 1,
"callername": "Test Voicenter",
"callerphone": "0501234567",
"callstatus": "Talking",
"customdata": {
}
"direction": "Incoming",
"ivrid": "202012021122010135330b4f77",
"recording": {
"Filename": "2020120-aws-0501234567-0722776772.mp3",
"IsMuted": 0
}
"did": "0722776772"
}
}
}
]

 

דוגמא לאירוע של שיחה נכנסת שנענתה והסתיימה

 

[
"ExtensionEvent",
{
"data": {
"eventName": "extension",
"reason": "HANGUP",
"cause": "Normal hangup",
"callerID": "0501234567",
"ivruniqueid": "202012021122010135330b4f77",
"servertime": 1606908139,
"servertimeoffset": 120,
"calls": [
]
"userID": 7654321,
"userName": "Clark Kent",
"number": 1234567,
"extenUser": "SIPSIP1",
"summery": {
"representative": "Clark Kent"
}
"onlineUserID": 7654321,
"representative": 7654321,
"representativeStatus": 1,
"lastCallEventEpoch": 1606908139,
"lastAnsweredCallEventEpoch": 1606908139,
"lastHangupCallEpoch": 1606908139,
"representativeUpdated": 1606763622000,
"currentCall": {
"callStarted": 1606908123,
"calldurationinterval": 1606908123,
"callAnswered": 1606908134,
"answered": 1,
"callername": "Test Voicenter",
"callerphone": "0501234567",
"callstatus": "Talking",
"customdata": {
}
"direction": "Incoming",
"ivrid": "202012021122010135330b4f77",
"recording": {
"Filename": "2020120-aws-0501234567-0722776772.mp3",
"IsMuted": 0
}
"did": "0722776772"
}
}
}
]

 

דוגמאות עבור שיחות קליק2קול

 

שיחות קליק2קול כמו כן שיחות חייגן לנציג (חייגן חכם מתנהג באופן דומה לשיחות נכנסות), מכילות 2 חלקים:

1. רגל 1 - השיחה אשר מקשרת בין מקור השיחה (לרוב נציג).
במידה והיה מענה ברגל 1 החלק השני של השיחה ייכנס לפעולה.
2. רגל 2 - החיוג המעשי ליעד.

 

דוגמא לאירוע של שיחת קליק2קול (רגל 1) שמחייגת בשלוחה

 

[
"ExtensionEvent",
{
"data": {
"eventName": "extension",
"reason": "NEWCALL",
"servertime": 1606913080,
"servertimeoffset": 120,
"calls": [
{
"callStarted": 1606913080,
"calldurationinterval": 1606913080,
"callAnswered": 0,
"answered": 0,
"callername": "0501234567",
"callerphone": "0501234567",
"callstatus": "Dialing",
"customdata": {
}
"direction": "Click2Call",
"ivrid": "20201200013quvnhxku5v",
"recording": {
"Filename": "2020120-aws-SIPSIP1-972501234567.mp3",
"IsMuted": 0
}
"did": "",
"c2cdirection": "1"
}
]
"userID": 7654321,
"userName": "Clark Kent",
"number": 1234567,
"extenUser": "SIPSIP1",
"summery": {
"representative": "Clark Kent"
}
"onlineUserID": 7654321,
"representative": 7654321,
"representativeStatus": 1,
"lastCallEventEpoch": 1606913081,
"lastAnsweredCallEventEpoch": 1606908139,
"lastHangupCallEpoch": 1606908139,
"representativeUpdated": 1606763622000,
"currentCall": {
"callStarted": 1606913080,
"calldurationinterval": 1606913080,
"callAnswered": 0,
"answered": 0,
"callername": "0501234567",
"callerphone": "0501234567",
"callstatus": "Dialing",
"customdata": {
}
"direction": "Click2Call",
"ivrid": "20201200013quvnhxku5v",
"recording": {
"Filename": "2020120-aws-0501234567-0722776772.mp3",
"IsMuted": 0
}
"did": "",
"c2cdirection": "1"
}
}
}
]

 

דוגמא לאירוע של שיחת קליק2קול (רגל 1) שנענתה בשלוחה

 

[
"ExtensionEvent",
{
"data": {
"eventName": "extension",
"reason": "ANSWER",
"servertime": 1606913082,
"servertimeoffset": 120,
"calls": [
{
"callStarted": 1606913080,
"calldurationinterval": 1606913080,
"callAnswered": 1606913082,
"answered": 1,
"callername": "0501234567",
"callerphone": "0501234567",
"callstatus": "Talking",
"customdata": {
}
"direction": "Click2Call",
"ivrid": "20201200013quvnhxku5v",
"recording": {
"Filename": "2020120-aws-SIPSIP1-972501234567.mp3",
"IsMuted": 0
}
"did": "",
"c2cdirection": "1"
}
]
"userID": 7654321,
"userName": "Clark Kent",
"number": 1234567,
"extenUser": "SIPSIP1",
"summery": {
"representative": "Clark Kent"
}
"onlineUserID": 7654321,
"representative": 7654321,
"representativeStatus": 1,
"lastCallEventEpoch": 1606913081,
"lastAnsweredCallEventEpoch": 1606908139,
"lastHangupCallEpoch": 1606908139,
"representativeUpdated": 1606763622000,
"currentCall": {
"callStarted": 1606913080,
"calldurationinterval": 1606913080,
"callAnswered": 1606913082,
"answered": 1,
"callername": "0501234567",
"callerphone": "0501234567",
"callstatus": "Talking",
"customdata": {
}
"direction": "Click2Call",
"ivrid": "20201200013quvnhxku5v",
"recording": {
"Filename": "2020120-aws-0501234567-0722776772.mp3",
"IsMuted": 0
}
"did": "",
"c2cdirection": "1"
}
}
}
]

 

דוגמא לאירוע של שיחת קליק2קול (רגל 2) שמחייגת ליעד

 

[
"ExtensionEvent",
{
"data": {
"eventName": "extension",
"reason": "NEWCALL",
"servertime": 1606913083,
"servertimeoffset": 120,
"calls": [
{
"callStarted": 1606913080,
"calldurationinterval": 1606913080,
"callAnswered": 0,
"answered": 0,
"callername": "0501234567",
"callerphone": "0501234567",
"callstatus": "Talking",
"customdata": {
}
"direction": "Click2Call",
"ivrid": "20201200013quvnhxku5v",
"recording": {
"Filename": "2020120-aws-SIPSIP1-972501234567.mp3",
"IsMuted": 0
}
"did": "",
"c2cdirection": "2"
}
]
"userID": 7654321,
"userName": "Clark Kent",
"number": 1234567,
"extenUser": "SIPSIP1",
"summery": {
"representative": "Clark Kent"
}
"onlineUserID": 7654321,
"representative": 7654321,
"representativeStatus": 1,
"lastCallEventEpoch": 1606913083,
"lastAnsweredCallEventEpoch": 1606913082,
"lastHangupCallEpoch": 1606908139,
"representativeUpdated": 1606763622000,
"currentCall": {
"callStarted": 1606913080,
"calldurationinterval": 1606913080,
"callAnswered": 0,
"answered": 0,
"callername": "0501234567",
"callerphone": "0501234567",
"callstatus": "Talking",
"customdata": {
}
"direction": "Click2Call",
"ivrid": "20201200013quvnhxku5v",
"recording": {
"Filename": "2020120-aws-0501234567-0722776772.mp3",
"IsMuted": 0
}
"did": "",
"c2cdirection": "2"
}
}
}
]

 

דוגמא לאירוע של שיחת קליק2קול (רגל 2) שנענתה ביעד

 

[
"ExtensionEvent",
{
"data": {
"eventName": "extension",
"reason": "ANSWER",
"servertime": 1606913090,
"servertimeoffset": 120,
"calls": [
{
"callStarted": 1606913080,
"calldurationinterval": 1606913080,
"callAnswered": 1606913090,
"answered": 1,
"callername": "0501234567",
"callerphone": "0501234567",
"callstatus": "Talking",
"customdata": {
}
"direction": "Click2Call",
"ivrid": "20201200013quvnhxku5v",
"recording": {
"Filename": "2020120-aws-SIPSIP1-972501234567.mp3",
"IsMuted": 0
}
"did": "",
"c2cdirection": "2"
}
]
"userID": 7654321,
"userName": "Clark Kent",
"number": 1234567,
"extenUser": "SIPSIP1",
"summery": {
"representative": "Clark Kent"
}
"onlineUserID": 7654321,
"representative": 7654321,
"representativeStatus": 1,
"lastCallEventEpoch": 1606913083,
"lastAnsweredCallEventEpoch": 1606913082,
"lastHangupCallEpoch": 1606908139,
"representativeUpdated": 1606763622000,
"currentCall": {
"callStarted": 1606913080,
"calldurationinterval": 1606913080,
"callAnswered": 1606913090,
"answered": 1,
"callername": "0501234567",
"callerphone": "0501234567",
"callstatus": "Talking",
"customdata": {
}
"direction": "Click2Call",
"ivrid": "20201200013quvnhxku5v",
"recording": {
"Filename": "2020120-aws-0501234567-0722776772.mp3",
"IsMuted": 0
}
"did": "",
"c2cdirection": "2"
}
}
}
]

 

דוגמא לאירוע של שיחת קליק2קול (רגל 2) שנענתה והסתיימה

 

[
"ExtensionEvent",
{
"data": {
"eventName": "extension",
"reason": "HANGUP",
"servertime": 1606913094,
"servertimeoffset": 120,
"callerID": "0501234567",
"ivruniqueid": "20201200013quvnhxku5v",
"cause": "Normal hangup",
"calls": [
]
"userID": 7654321,
"userName": "Clark Kent",
"number": 1234567,
"extenUser": "SIPSIP1",
"summery": {
"representative": "Clark Kent"
}
"onlineUserID": 7654321,
"representative": 7654321,
"representativeStatus": 1,
"lastCallEventEpoch": 1606913083,
"lastAnsweredCallEventEpoch": 1606913082,
"lastHangupCallEpoch": 1606908139,
"representativeUpdated": 1606763622000,
"currentCall": {
"callStarted": 1606913080,
"calldurationinterval": 1606913080,
"callAnswered": 1606913090,
"answered": 1,
"callername": "0501234567",
"callerphone": "0501234567",
"callstatus": "Talking",
"customdata": {
}
"direction": "Click2Call",
"ivrid": "20201200013quvnhxku5v",
"recording": {
"Filename": "2020120-aws-0501234567-0722776772.mp3",
"IsMuted": 0
}
"did": "",
"c2cdirection": "2"
}
}
}
]

 

דוגמא לאירוע של שינוי סטטוס

 

 

בדוגמה הנ"ל הנציג משנה את הסטטוס שלו לLaunch - סטטוס מספר 3.
ניתן לראות ב Login/Logout API של חברת וויסנטר לקבל מספרי סטטוסים בארגונכם. 

[
"ExtensionEvent",
{
"eventName": "extension",
"reason": "userStatusUpdate",
"servertime": 1606917164,
"servertimeoffset": 120,
"data": {
"calls": [
]
"userID": 7654321,
"userName": "Clark Kent",
"number": 1234567,
"extenUser": "SIPSIP1",
"summery": {
"representative": "Clark Kent"
}
"onlineUserID": 7654321,
"representative": 7654321,
"representativeStatus": 3,
"lastCallEventEpoch": 1606915860,
"lastAnsweredCallEventEpoch": 1606915833,
"lastHangupCallEpoch": 1606915860,
"representativeUpdated": 1606917164000
}
}
]