@voicenter-team/events-sdk 0.0.117 → 0.0.118
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/voicenter-events-sdk.cjs.js +1 -1
- package/dist/voicenter-events-sdk.cjs.js.map +1 -1
- package/dist/voicenter-events-sdk.es.js +2 -1
- package/dist/voicenter-events-sdk.es.js.map +1 -1
- package/dist/voicenter-events-sdk.iife.js +1 -1
- package/dist/voicenter-events-sdk.iife.js.map +1 -1
- package/dist/voicenter-events-sdk.umd.js +1 -1
- package/dist/voicenter-events-sdk.umd.js.map +1 -1
- package/package.json +1 -1
|
@@ -15,5 +15,5 @@
|
|
|
15
15
|
`+x+Q.join(`,
|
|
16
16
|
`+x)+`
|
|
17
17
|
`+fe+"}":"{"+Q.join(",")+"}":"{}";return D.pop(),de}};u.stringify=function(E,_,T){var V,C,x,D;if(typeof _=="function"||typeof _=="object"&&_){if((D=d.call(_))==s)C=_;else if(D==v){x={};for(var N,P=0,G=_.length;G>P;N=_[P++],D=d.call(N),(D==g||D==p)&&(x[N]=1));}}if(T)if((D=d.call(T))==p){if((T-=T%1)>0)for(V="",T>10&&(T=10);V.length<T;V+=" ");}else D==g&&(V=T.length<=10?T:T.slice(0,10));return R("",(N={},N[""]=E,N),C,x,V,"",[])}}if(!o("json-parse")){var S,K,$=String.fromCharCode,z={92:"\\",34:'"',47:"/",98:"\b",116:" ",110:`
|
|
18
|
-
`,102:"\f",114:"\r"},q=function(){throw S=K=null,SyntaxError()},J=function(){for(var E,_,T,V,C,x=K,D=x.length;D>S;)switch(C=x.charCodeAt(S)){case 9:case 10:case 13:case 32:S++;break;case 123:case 125:case 91:case 93:case 58:case 44:return E=j?x.charAt(S):x[S],S++,E;case 34:for(E="@",S++;D>S;)if(C=x.charCodeAt(S),32>C)q();else if(C==92)switch(C=x.charCodeAt(++S)){case 92:case 34:case 47:case 98:case 116:case 110:case 102:case 114:E+=z[C],S++;break;case 117:for(_=++S,T=S+4;T>S;S++)C=x.charCodeAt(S),C>=48&&57>=C||C>=97&&102>=C||C>=65&&70>=C||q();E+=$("0x"+x.slice(_,S));break;default:q()}else{if(C==34)break;for(C=x.charCodeAt(S),_=S;C>=32&&C!=92&&C!=34;)C=x.charCodeAt(++S);E+=x.slice(_,S)}if(x.charCodeAt(S)==34)return S++,E;q();default:if(_=S,C==45&&(V=!0,C=x.charCodeAt(++S)),C>=48&&57>=C){for(C==48&&(C=x.charCodeAt(S+1),C>=48&&57>=C)&&q(),V=!1;D>S&&(C=x.charCodeAt(S),C>=48&&57>=C);S++);if(x.charCodeAt(S)==46){for(T=++S;D>T&&(C=x.charCodeAt(T),C>=48&&57>=C);T++);T==S&&q(),S=T}if(C=x.charCodeAt(S),C==101||C==69){for(C=x.charCodeAt(++S),(C==43||C==45)&&S++,T=S;D>T&&(C=x.charCodeAt(T),C>=48&&57>=C);T++);T==S&&q(),S=T}return+x.slice(_,S)}if(V&&q(),x.slice(S,S+4)=="true")return S+=4,!0;if(x.slice(S,S+5)=="false")return S+=5,!1;if(x.slice(S,S+4)=="null")return S+=4,null;q()}return"$"},se=function(E){var _,T;if(E=="$"&&q(),typeof E=="string"){if((j?E.charAt(0):E[0])=="@")return E.slice(1);if(E=="["){for(_=[];E=J(),E!="]";T||(T=!0))T&&(E==","?(E=J(),E=="]"&&q()):q()),E==","&&q(),_.push(se(E));return _}if(E=="{"){for(_={};E=J(),E!="}";T||(T=!0))T&&(E==","?(E=J(),E=="}"&&q()):q()),(E==","||typeof E!="string"||(j?E.charAt(0):E[0])!="@"||J()!=":")&&q(),_[E.slice(1)]=se(J());return _}q()}return E},Ce=function(E,_,T){var V=ke(E,_,T);V===h?delete E[_]:E[_]=V},ke=function(E,_,T){var V,C=E[_];if(typeof C=="object"&&C)if(d.call(C)==v)for(V=C.length;V--;)Ce(C,V,T);else f(C,function(x){Ce(C,x,T)});return T.call(E,_,C)};u.parse=function(E,_){var T,V;return S=0,K=""+E,T=se(J()),J()!="$"&&q(),S=K=null,_&&d.call(_)==s?ke((V={},V[""]=T,V),"",_):T}}}})(this)},{}],48:[function(a,t){function e(r,o){var c=[];o=o||0;for(var f=o||0;f<r.length;f++)c[f-o]=r[f];return c}t.exports=e},{}]},{},[1])(1)}const ze=Object.freeze(Object.defineProperty({__proto__:null,default:Ge},Symbol.toStringTag,{value:"Module"})),Je=Object.assign({"./v1_3_7.js":ze}),We=/v\d+_\d+_\d+/;function He(a){return typeof a=="function"}const ye=Object.entries(Je).reduce((a,t)=>{var o;const e=t[1].default,r=(o=t[0].match(We))==null?void 0:o[0];return He(e)&&r&&(a[r]=e()),a},{}),Ne=a=>{if(a in ye)return ye[a];throw new Error(`Socket version ${a} not found`)},Ye=(a,...t)=>Ne(a)(...t),Qe={...ye,getSocketVersion:Ne,makeSocketVersion:Ye};var Oe=(a=>(a.RINGING="Ringing",a.TALKING="Talking",a.DIALING="Dialing",a.HOLD="Hold",a))(Oe||{}),_e=(a=>(a.INCOMING="Incoming",a.OUTGOING="Outgoing",a))(_e||{}),ne=(a=>(a.CONNECTED="connected",a.DISCONNECTED="disconnected",a.TRYING_TO_CONNECT="tryingToConnect",a))(ne||{}),Ie=(a=>(a.AUTOMATIC="Automatic",a.IVR="IVR",a))(Ie||{}),Re=(a=>(a.INCOMINC="Incoming",a.OUTGOING="Outgoing",a.SPY="Spy",a.CLICK2CALL="Click2Call",a))(Re||{}),Be=(a=>(a.RESPONSE_FROM_API_VALID="RESPONSE_FROM_API_VALID",a.RESPONSE_FROM_API_INVALID="RESPONSE_FROM_API_INVALID",a))(Be||{}),L=(a=>(a.ALL_DIALER_STATUS="AllDialersStatus",a.ALL_EXTENSION_STATUS="AllExtensionsStatus",a.ALL_USERS_STATUS="AllUsersStatus",a.CONNECT="connect",a.DISCONNECT="disconnect",a.CONNECT_ERROR_EVENT="connect_error",a.EXTENSION_EVENT="ExtensionEvent",a.KEEP_ALIVE="keepalive",a.KEEP_ALIVE_RESPONSE="keepaliveResponse",a.LOGIN_STATUS="loginStatus",a.LOGIN_SUCCESS="loginSuccess",a.QUEUE_EVENT="QueueEvent",a.ONLINE_STATUS_EVENT="onlineStatusEvent",a.DIALER_EVENT="DialerEvent",a.EXTENSIONS_UPDATED="ExtensionsUpdated",a.ALL_VOICEBOTS_STATUS="AllVoicebotsStatus",a.VOICEBOT_SUBSCRIBE_TO_CALL_FAILED="subscribeToCallFailed",a.VOICEBOT_SUBSCRIBED_TO_CALL="subscribedToCall",a.VOICEBOT_INITIAL_CALL_HISTORY="initialCallHistory",a.VOICEBOT_UNSUBSCRIBED_FROM_CALL="unsubscribedFromCall",a.VOICEBOT_EVENT="VoicebotEvent",a))(L||{}),me=(a=>(a.NEWCALL="NEWCALL",a.ANSWER="ANSWER",a.HOLD="HOLD",a.UNHOLD="UNHOLD",a.HANGUP="HANGUP",a.USER_STATUS_UPDATE="userStatusUpdate",a))(me||{}),xe=(a=>(a.NORMAL_HANGUP="Normal hangup",a.USER_BUSY="User busy",a.CALL_REJECTED="Call Rejected",a.UNALLOCATED_NUMBER="Unallocated (unassigned) number",a.UNKNOWN="Unknown",a.NO_USER_RESPONDING="No user responding",a.USER_ALERTING="User alerting, no answer",a.ANSWERED_ELSEWHERE="Answered elsewhere",a))(xe||{}),Ue=(a=>(a.ANSWER="ANSWER",a.ABANDONED="ABANDONED",a.EXIT="EXIT",a.JOIN="JOIN",a))(Ue||{});class te{static mapExtensionEvent(t){var f,h;const e=t.reason;let r,o;t.data.currentCall&&(o=this.mapExtensionCall(t,t.data.currentCall));const c=this.mapExtensionData(t,t.data);return e===me.HANGUP?r={...t,reason:e,data:{...c,currentCall:o?{...o,duration:o.callAnswered_UTC_CLIENT?Date.now()-o.callAnswered_UTC_CLIENT:0}:void 0,calls:(f=t.data.calls)==null?void 0:f.map(d=>{const i=this.mapExtensionCall(t,d);return{...i,duration:i.callAnswered_UTC_CLIENT?Date.now()-i.callAnswered_UTC_CLIENT:0}})}}:r={...t,data:{...c,currentCall:o,calls:(h=t.data.calls)==null?void 0:h.map(d=>this.mapExtensionCall(t,d))},reason:e},r}static mapAllExtensionStatus(t){return{...t,extensions:t.extensions.map(e=>{var r;return{...this.mapExtensionData(t,e),currentCall:e.currentCall?this.mapExtensionCall(t,e.currentCall):void 0,calls:(r=e.calls)==null?void 0:r.map(o=>this.mapExtensionCall(t,o))}})}}static mapAllVoicebotStatus(t){return{...t,voicebots:t.voicebots.map(e=>({...e,Calls:e.Calls.map(r=>{var o;return{...this.mapVoicebotCall(t,r),eventsData:(o=r==null?void 0:r.eventsData)==null?void 0:o.map(c=>this.mapVoicebotEventsData(t,c))}})}))}}static mapVoicebotEvent(t){var e,r;return{...t,data:{...t.data,Call:{...this.mapVoicebotCall(t,t.data.Call),eventsData:(r=(e=t.data.Call)==null?void 0:e.eventsData)==null?void 0:r.map(o=>this.mapVoicebotEventsData(t,o))}}}}static mapVoicebotInitialCallHistory(t){return{...t,history:t.history.map(e=>{const r=this.mapVoicebotCall(t,e);return{...r,eventsData:r.eventsData.map(o=>this.mapVoicebotEventsData(t,o))}})}}static mapVoicebotCall(t,e){return this.configureUTCForObject(e,[{key:"callStarted",format:"sec"}],t.servertime,t.servertimeoffset)}static mapVoicebotEventsData(t,e){return this.configureUTCForObject(e,[{key:"Timestamp",format:"sec"}],t.servertime,t.servertimeoffset)}static mapExtensionData(t,e){return this.configureUTCForObject(e,[{key:"lastAnsweredCallEventEpoch",format:"sec"},{key:"lastCallEventEpoch",format:"sec"},{key:"lastHangupCallEpoch",format:"sec"},{key:"representativeUpdated",format:"ms"}],t.servertime,t.servertimeoffset)}static mapExtensionCall(t,e){return this.configureUTCForObject(e,[{key:"callAnswered",format:"sec"},{key:"callStarted",format:"sec"}],t.servertime,t.servertimeoffset)}static mapQueueCall(t,e){return this.configureUTCForObject(e,[{key:"JoinTimeStamp",format:"sec"},{key:"VHJoinTimeStamp",format:"sec"}],t.servertime,t.servertimeoffset)}static mapLoginStatusEvent(t){return{...t,queues:t.queues.map(e=>({...e,Calls:e.Calls.map(r=>this.mapQueueCall(t,r))}))}}static mapQueueEvent(t){return{...t,data:{...t.data,Calls:t.data.Calls.map(e=>this.mapQueueCall(t,e))}}}static assignProperty(t,e,r){t[e]=r}static configureUTCForObject(t,e,r,o){const c=(r-o*60)*1e3,f=Date.now()-c,h={};return e.forEach(d=>{const i=t[d.key],u=d.key;if(i!==0&&typeof i=="number"&&!isNaN(i)){let l=i;d.format==="ms"&&(l=Math.floor(l/1e3));const s=(l-o*60)*1e3;this.assignProperty(h,`${u}_UTC`,s),this.assignProperty(h,`${u}_UTC_CLIENT`,s+f)}else this.assignProperty(h,`${u}_UTC`,0),this.assignProperty(h,`${u}_UTC_CLIENT`,0)}),{...t,...h}}}var Se=(a=>(a.UPDATE_MONITORED_EXTENSIONS="updateMonitoredExtensions",a.KEEP_ALIVE="keepalive",a.SUBSCRIBE_VOICEBOT_CALL_UPDATES="subscribeVoicebotCallUpdates",a.UNSUBSCRIBE_VOICEBOT_CALL_UPDATES="unsubscribeVoicebotCallUpdates",a))(Se||{});class Ze{constructor(t){X(this,"io");X(this,"ioFunction");X(this,"lastEventTimestamp",new Date().getTime());X(this,"doReconnect",!0);X(this,"connectionState","disconnected");X(this,"keepAliveInterval");X(this,"reconnectTimeout");X(this,"networkReconnectTimeout");X(this,"reconnectionTime",Le.reconnectionDelay);X(this,"maxReconnectionDelay",120);X(this,"networkCleanup",[]);this.eventsSdkClass=t,this.reconnectionTime=t.options.reconnectionDelay,this.setupNetworkListeners()}setupNetworkListeners(){const t=()=>this.closeAllConnections(),e=()=>this.handleNetworkOnline();typeof window<"u"&&"addEventListener"in window&&typeof window.addEventListener=="function"?(window.addEventListener("offline",t),window.addEventListener("online",e),this.networkCleanup.push(()=>window.removeEventListener("offline",t),()=>window.removeEventListener("online",e))):typeof self<"u"&&"addEventListener"in self&&typeof self.addEventListener=="function"&&(self.addEventListener("offline",t),self.addEventListener("online",e),this.networkCleanup.push(()=>self.removeEventListener("offline",t),()=>self.removeEventListener("online",e)))}handleNetworkOnline(){this.networkReconnectTimeout&&clearTimeout(this.networkReconnectTimeout),this.networkReconnectTimeout=setTimeout(()=>{this.connectionState==="disconnected"&&this.doReconnect&&this.eventsSdkClass.connect(ee.NEXT)},500)}getSocketIoFunction(t){const e=t.split("v="),r="v".concat(e[e.length-1]).replaceAll(".","_");this.ioFunction=Qe.getSocketVersion(r)}initSocketConnection(){if(this.connectionState!=="disconnected")return;this.connectionState="connecting";const t=this.eventsSdkClass.authClass.token,e=this.eventsSdkClass.options.protocol,r=this.eventsSdkClass.server;try{const o=r?r.Domain:this.eventsSdkClass.URL,c=r?`${e}://${o}`:this.eventsSdkClass.URL,f={reconnection:!1,upgrade:!1,transports:["websocket"],forceNew:!0,query:{token:t},timeout:this.eventsSdkClass.options.timeout};if(this.ioFunction&&c)this.io=this.ioFunction(c,f),this.initSocketEvents(),this.eventsSdkClass.eventEmitterClass.emit(L.ONLINE_STATUS_EVENT,{attemptToConnect:c,connectionStatus:ne.TRYING_TO_CONNECT}),this.eventsSdkClass.loggerClass.sdkAttemptToConnect(o);else throw new Error("Socket server url not defined")}catch(o){this.connectionState="disconnected",this.eventsSdkClass.loggerClass.sdkAttemptToConnectError(o)}}clearKeepAliveInterval(){this.keepAliveInterval&&(clearInterval(this.keepAliveInterval),this.keepAliveInterval=void 0)}initKeepAlive(){this.clearKeepAliveInterval(),this.keepAliveInterval=setInterval(async()=>{new Date().getTime()>this.lastEventTimestamp+this.eventsSdkClass.options.keepAliveTimeout&&this.io&&this.connectionState==="connected"&&this.eventsSdkClass.authClass.token&&(this.eventsSdkClass.emit(Se.KEEP_ALIVE,this.eventsSdkClass.authClass.token),this.eventsSdkClass.loggerClass.keepAliveEmit())},this.eventsSdkClass.options.keepAliveTimeout)}async closeAllConnections(){if(this.clearKeepAliveInterval(),this.reconnectTimeout&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=void 0),this.networkReconnectTimeout&&(clearTimeout(this.networkReconnectTimeout),this.networkReconnectTimeout=void 0),this.io){const t=this.io;this.io=void 0;try{await Promise.race([new Promise(e=>{t.on("disconnect",()=>e()),t.removeAllListeners(),t.close(),t.disconnect()}),new Promise(e=>setTimeout(e,1e3))])}catch{}}this.connectionState="disconnected",this.eventsSdkClass.loggerClass.stop(),ie.clearSessionStorage()}initSocketEvents(){this.io&&(this.io.removeAllListeners(),this.io.on(L.LOGIN_SUCCESS,t=>this.onLoginSuccessEvent(t,L.LOGIN_SUCCESS)).on(L.QUEUE_EVENT,t=>this.onQueueEvent(t,L.QUEUE_EVENT)).on(L.EXTENSION_EVENT,t=>this.onExtensionEvent(t,L.EXTENSION_EVENT)).on(L.DIALER_EVENT,t=>this.onDialerEvent(t,L.DIALER_EVENT)).on(L.LOGIN_STATUS,t=>this.onLoginStatusEvent(t,L.LOGIN_STATUS)).on(L.ALL_EXTENSION_STATUS,t=>this.onAllExtensionStatus(t,L.ALL_EXTENSION_STATUS)).on(L.ALL_DIALER_STATUS,t=>this.onAllDialerStatus(t,L.ALL_DIALER_STATUS)).on(L.KEEP_ALIVE_RESPONSE,t=>this.onKeepAliveResponse(t)).on(L.EXTENSIONS_UPDATED,t=>this.onExtensionsUpdatedEvent(t,L.EXTENSIONS_UPDATED)).on(L.CONNECT,()=>this.onConnect()).on(L.DISCONNECT,t=>this.onDisconnect(t)).on(L.CONNECT_ERROR_EVENT,t=>this.onConnectError(t)).on(L.ALL_VOICEBOTS_STATUS,t=>this.onAllVoicebotsStatus(t,L.ALL_VOICEBOTS_STATUS)).on(L.VOICEBOT_EVENT,t=>this.onVoicebotEvent(t,L.VOICEBOT_EVENT)).on(L.VOICEBOT_SUBSCRIBED_TO_CALL,t=>this.onVoicebotSubscribedToCall(t,L.VOICEBOT_SUBSCRIBED_TO_CALL)).on(L.VOICEBOT_SUBSCRIBE_TO_CALL_FAILED,t=>this.onVoicebotSubscribeToCallFailed(t,L.VOICEBOT_SUBSCRIBE_TO_CALL_FAILED)).on(L.VOICEBOT_INITIAL_CALL_HISTORY,t=>this.onVoicebotInitialCallHistory(t,L.VOICEBOT_INITIAL_CALL_HISTORY)).on(L.VOICEBOT_UNSUBSCRIBED_FROM_CALL,t=>this.onVoicebotUnsubscribedFromCall(t,L.VOICEBOT_UNSUBSCRIBED_FROM_CALL)))}updateEventTimestamp(){this.lastEventTimestamp=new Date().getTime()}onLoginSuccessEvent(t,e){this.updateEventTimestamp(),this.eventsSdkClass.loggerClass.eventLog(e,t),this.eventsSdkClass.eventEmitterClass.emit(e,t)}onQueueEvent(t,e){this.updateEventTimestamp(),this.eventsSdkClass.loggerClass.eventLog(e,t),this.eventsSdkClass.eventEmitterClass.emit(e,te.mapQueueEvent(t))}onExtensionEvent(t,e){this.updateEventTimestamp();const r=te.mapExtensionEvent(t);r&&(this.eventsSdkClass.loggerClass.eventLog(e,t),this.eventsSdkClass.eventEmitterClass.emit(e,r))}onDialerEvent(t,e){this.updateEventTimestamp(),this.eventsSdkClass.loggerClass.eventLog(e,t),this.eventsSdkClass.eventEmitterClass.emit(e,t)}onVoicebotEvent(t,e){this.updateEventTimestamp();const r=te.mapVoicebotEvent(t);this.eventsSdkClass.loggerClass.eventLog(e,t),this.eventsSdkClass.eventEmitterClass.emit(e,r)}onAllVoicebotsStatus(t,e){this.updateEventTimestamp();const r=te.mapAllVoicebotStatus(t);this.eventsSdkClass.loggerClass.eventLog(e,t),this.eventsSdkClass.eventEmitterClass.emit(e,r)}onVoicebotSubscribedToCall(t,e){this.updateEventTimestamp(),this.eventsSdkClass.loggerClass.eventLog(e,t),this.eventsSdkClass.eventEmitterClass.emit(e,t)}onVoicebotSubscribeToCallFailed(t,e){this.updateEventTimestamp(),this.eventsSdkClass.loggerClass.eventLog(e,t),this.eventsSdkClass.eventEmitterClass.emit(e,t)}onVoicebotInitialCallHistory(t,e){this.updateEventTimestamp();const r=te.mapVoicebotInitialCallHistory(t);this.eventsSdkClass.loggerClass.eventLog(e,t),this.eventsSdkClass.eventEmitterClass.emit(e,r)}onVoicebotUnsubscribedFromCall(t,e){this.updateEventTimestamp(),this.eventsSdkClass.loggerClass.eventLog(e,t),this.eventsSdkClass.eventEmitterClass.emit(e,t)}onLoginStatusEvent(t,e){this.updateEventTimestamp(),this.eventsSdkClass.loggerClass.eventLog(e,t),this.eventsSdkClass.eventEmitterClass.emit(e,te.mapLoginStatusEvent(t))}onAllExtensionStatus(t,e){this.updateEventTimestamp();const r=te.mapAllExtensionStatus(t);this.eventsSdkClass.loggerClass.eventLog(e,t),this.eventsSdkClass.eventEmitterClass.emit(e,r)}onAllDialerStatus(t,e){this.updateEventTimestamp(),this.eventsSdkClass.loggerClass.eventLog(e,t),this.eventsSdkClass.eventEmitterClass.emit(e,t)}onKeepAliveResponse(t){if(this.updateEventTimestamp(),this.eventsSdkClass.loggerClass.keepAliveResponse(t),t.errorCode){this.closeAllConnections().then(()=>{this.doReconnect&&this.connectionState==="disconnected"&&this.scheduleReconnect()});return}}onExtensionsUpdatedEvent(t,e){this.updateEventTimestamp(),this.eventsSdkClass.loggerClass.eventLog(e,t),this.eventsSdkClass.eventEmitterClass.emit(e,t)}onConnect(){this.connectionState="connected",this.reconnectionTime=this.eventsSdkClass.options.reconnectionDelay,this.reconnectTimeout&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=void 0),this.eventsSdkClass.eventEmitterClass.emit(L.ONLINE_STATUS_EVENT,{connectionStatus:ne.CONNECTED}),this.eventsSdkClass.loggerClass.start().then(()=>{this.eventsSdkClass.loggerClass.sdkConnectionSuccess()})}scheduleReconnect(){!this.doReconnect||this.reconnectTimeout||(this.eventsSdkClass.eventEmitterClass.emit(L.ONLINE_STATUS_EVENT,{connectionStatus:ne.TRYING_TO_CONNECT}),this.reconnectTimeout=setTimeout(()=>{this.reconnectTimeout=void 0,this.reconnectionTime=Math.min(this.reconnectionTime*2,this.maxReconnectionDelay),this.reconnectionTime>this.maxReconnectionDelay&&(this.reconnectionTime=this.eventsSdkClass.options.reconnectionDelay),this.eventsSdkClass.connect(ee.NEXT)},this.reconnectionTime*1e3))}onDisconnect(t){if(this.connectionState="disconnected",this.eventsSdkClass.loggerClass.sdkDisconnect([t]),!this.doReconnect){this.eventsSdkClass.eventEmitterClass.emit(L.ONLINE_STATUS_EVENT,{connectionStatus:ne.DISCONNECTED});return}this.closeAllConnections(),this.scheduleReconnect()}onConnectError(t){this.connectionState="disconnected",this.eventsSdkClass.loggerClass.sdkAttemptToConnectError(t),this.doReconnect?this.scheduleReconnect():this.eventsSdkClass.eventEmitterClass.emit(L.ONLINE_STATUS_EVENT,{connectionStatus:ne.DISCONNECTED})}async destroy(){this.doReconnect=!1,this.networkCleanup.forEach(t=>t()),await this.closeAllConnections()}}class et{constructor(t){X(this,"storageLogger");this.eventsSdkClass=t,this.eventsSdkClass=t}init(){if(!this.eventsSdkClass.options.useLogger)return;if(this.eventsSdkClass.options.storageLoggerInstance){this.storageLogger=this.eventsSdkClass.options.storageLoggerInstance;return}let t;this.eventsSdkClass.options.loggerSocketConnection&&(t=this.eventsSdkClass.options.loggerSocketConnection),this.eventsSdkClass.socketIoClass.ioFunction&&!t&&(t=this.eventsSdkClass.socketIoClass.ioFunction(this.eventsSdkClass.options.loggerServer,this.eventsSdkClass.options.loggerConnectOptions)),t&&(this.storageLogger=new M({socket:t,loggerOptions:this.eventsSdkClass.options.loggerConfig}))}async start(){this.storageLogger&&await this.storageLogger.start()}async stop(){this.storageLogger&&await this.storageLogger.stop()}log(t){if(this.eventsSdkClass.options.useLogger)if(this.storageLogger)switch(t.Level){case M.LevelEnum.INFO:this.storageLogger.log(t);break;case M.LevelEnum.DEBUG:this.storageLogger.debug(t);break;case M.LevelEnum.WARNING:this.storageLogger.warn(t);break;case M.LevelEnum.ERROR:this.storageLogger.error(t)}else t.Level===M.LevelEnum.INFO?console.log(t):t.Level===M.LevelEnum.ERROR&&console.error(t)}sdkConnectionSuccess(){const t={...this.eventsSdkClass.options,token:"CENSORED",password:"CENSORED"};this.log({Message:`Sdk connected to the socket server ${this.eventsSdkClass.server&&this.eventsSdkClass.server.Domain?this.eventsSdkClass.server.Domain:this.eventsSdkClass.URL}`,Body:JSON.stringify(t,this.eventsSdkClass.getCircularReplacer()),ActionName:M.ActionNameEnum.WSCONNECT,isShowClient:!1,Status:"Connection established",StatusCode:200,Level:M.LevelEnum.INFO,LogType:M.LogTypeEnum.INFO})}sdkDisconnect(t){this.log({Message:`Sdk disconnected from the socket server ${this.eventsSdkClass.server&&this.eventsSdkClass.server.Domain?this.eventsSdkClass.server.Domain:this.eventsSdkClass.URL} (${t})`,ActionName:M.ActionNameEnum.WSCONNECT,isShowClient:!1,Status:"Connection closed",StatusCode:200,Level:M.LevelEnum.INFO,LogType:M.LogTypeEnum.INFO})}sdkAttemptToConnect(t){this.log({Message:`${this.eventsSdkClass.options.loggerConfig.system} is trying to connect to WS server ${t}`,ActionName:M.ActionNameEnum.WSCONNECT,isShowClient:!1,Status:"Switching Protocols",StatusCode:101,Level:M.LevelEnum.INFO,LogType:M.LogTypeEnum.INFO})}sdkAttemptToConnectError(t){this.log({Message:`${t}`,ActionName:M.ActionNameEnum.WSCONNECT,isShowClient:!1,Status:"Connection error",StatusCode:500,Level:M.LevelEnum.ERROR,LogType:M.LogTypeEnum.ERROR})}loginError(t,e,r,o){this.log({Message:`External login request error with the login type ${t} ${t===Y.TOKEN?r:o}`,ActionName:M.ActionNameEnum.WSCONNECT,isShowClient:!1,Status:"External login error",StatusCode:e||400,Level:M.LevelEnum.ERROR,LogType:M.LogTypeEnum.ERROR})}getSettingsError(t,e){this.log({Message:`Get settings error with token ${t}, error: ${e}`,ActionName:M.ActionNameEnum.WSCONNECT,isShowClient:!1,Status:"Get settings error",StatusCode:400,Level:M.LevelEnum.ERROR,LogType:M.LogTypeEnum.ERROR})}refreshTokenError(t,e,r){this.log({Message:`Refresh token error with old refresh token ${t}, url: ${e}, error: ${r}`,ActionName:M.ActionNameEnum.WSCONNECT,isShowClient:!1,Status:"Get settings error",StatusCode:400,Level:M.LevelEnum.ERROR,LogType:M.LogTypeEnum.ERROR})}keepAliveEmit(){this.log({Message:`Keep alive event emitted with this token: ${this.eventsSdkClass.authClass.token}`,ActionName:M.ActionNameEnum.WSCONNECT,isShowClient:!1,Level:M.LevelEnum.INFO,LogType:M.LogTypeEnum.INFO})}keepAliveResponse(t){this.log({Message:`Keep alive response: ${JSON.stringify(t)}`,ActionName:M.ActionNameEnum.WSCONNECT,isShowClient:!1,Status:"Successful",StatusCode:200,Level:M.LevelEnum.INFO,LogType:M.LogTypeEnum.INFO})}eventLog(t,e){const r={[Z.FULL]:[],[Z.BOOTSTRAP]:[L.LOGIN_STATUS,L.LOGIN_SUCCESS,L.ALL_EXTENSION_STATUS,L.ALL_DIALER_STATUS],[Z.DEBUG_EXTENSIONS]:[L.ALL_EXTENSION_STATUS,L.EXTENSION_EVENT,L.EXTENSIONS_UPDATED],[Z.DEBUG_DIALER]:[L.ALL_DIALER_STATUS,L.DIALER_EVENT],[Z.DEBUG_QUEUE]:[L.QUEUE_EVENT]};this.eventsSdkClass.options.debugOption&&(r[this.eventsSdkClass.options.debugOption].includes(t)||this.eventsSdkClass.options.debugOption===Z.FULL)&&this.log({Message:`Event name: ${t}`,Body:{...this.getStaticData(),...e},ActionName:M.ActionNameEnum.WSCONNECT,isShowClient:!1,Status:"Successful",Level:M.LevelEnum.DEBUG,LogType:M.LogTypeEnum.INFO})}getStaticData(){return{SocketId:this.eventsSdkClass.socketIoClass&&this.eventsSdkClass.socketIoClass.io?this.eventsSdkClass.socketIoClass.io.id:""}}}class tt{constructor(t){X(this,"listeners",{[L.ALL_EXTENSION_STATUS]:[],[L.ALL_DIALER_STATUS]:[],[L.ALL_USERS_STATUS]:[],[L.ALL_VOICEBOTS_STATUS]:[],[L.QUEUE_EVENT]:[],[L.EXTENSION_EVENT]:[],[L.DIALER_EVENT]:[],[L.LOGIN_SUCCESS]:[],[L.LOGIN_STATUS]:[],[L.KEEP_ALIVE_RESPONSE]:[],[L.ONLINE_STATUS_EVENT]:[],[L.EXTENSIONS_UPDATED]:[],[L.VOICEBOT_SUBSCRIBED_TO_CALL]:[],[L.VOICEBOT_SUBSCRIBE_TO_CALL_FAILED]:[],[L.VOICEBOT_INITIAL_CALL_HISTORY]:[],[L.VOICEBOT_UNSUBSCRIBED_FROM_CALL]:[],[L.VOICEBOT_EVENT]:[]});X(this,"allListeners",[]);this.eventsSdkClass=t,this.eventsSdkClass=t}on(t,e){t==="*"?this.allListeners.push(e):this.listeners[t].push(e)}off(t,e){if(t==="*")this.allListeners=this.allListeners.filter(r=>r!==e);else{const o=this.listeners[t].filter(c=>c!==e);this.listeners={...this.listeners,[t]:o}}}emit(t,e){this.eventsSdkClass.socketIoClass.lastEventTimestamp=new Date().getTime(),this.listeners[t].forEach(o=>o({name:t,data:e}));const r={name:t,data:e};this.allListeners.forEach(o=>o(r))}}class nt{constructor(t){X(this,"options");X(this,"servers",[]);X(this,"URLList",[]);X(this,"server");X(this,"URL");X(this,"socket");X(this,"mainServer");X(this,"alreadyAttemptedOtherServers",[]);X(this,"authClass",new $e(this));X(this,"socketIoClass");X(this,"loggerClass",new et(this));X(this,"eventEmitterClass",new tt(this));X(this,"getCircularReplacer",()=>{const t=new WeakSet;return(e,r)=>{if(!(e==="socket"||e==="io"||e==="nsps")){if(typeof r=="object"&&r!==null){if(t.has(r))return;t.add(r)}return r}}});this.options={...Le,...t},this.socketIoClass=new Ze(this)}on(t,e){this.eventEmitterClass.on(t,e)}emit(t,...e){this.socketIoClass.io&&this.socketIoClass.io.emit(t,...e)}connect(t){t===ee.MAIN&&this.findMainServer(),t===ee.NEXT&&this.findNextServer(),this.socketIoClass.doReconnect=!0;try{this.loggerClass.init()}catch(e){console.error(e)}this.socketIoClass.initSocketConnection(),this.socketIoClass.initKeepAlive()}async disconnect(){this.socketIoClass.doReconnect=!1,await this.socketIoClass.closeAllConnections(),await this.loggerClass.stop()}clearKeepAliveInterval(){this.socketIoClass.clearKeepAliveInterval()}findMainServer(){this.servers.length?(this.mainServer=this.servers.reduce((t,e)=>e.Priority>t.Priority?e:t),this.server=this.mainServer):this.URLList.length&&(this.URL=this.URLList[0])}findNextServer(){if(this.servers.length&&this.server)if(this.server.Priority===this.mainServer.Priority){let t=this.servers.filter(e=>e.Priority!==this.mainServer.Priority&&this.alreadyAttemptedOtherServers.indexOf(e.Priority)+1===0);t.length||(this.alreadyAttemptedOtherServers=[],t=this.servers.filter(e=>e.Priority!==this.mainServer.Priority&&this.alreadyAttemptedOtherServers.indexOf(e.Priority)+1===0)),t.length&&(this.server=t.reduce((e,r)=>r.Priority>e.Priority?r:e),this.alreadyAttemptedOtherServers.push(this.server.Priority))}else this.server=this.mainServer;else if(this.URLList.length)if(this.URL===this.URLList[0]){let t=this.URLList.filter(e=>e!==this.URLList[0]&&this.alreadyAttemptedOtherServers.indexOf(e)+1===0);t.length||(this.alreadyAttemptedOtherServers=[],t=this.URLList.filter(e=>e!==this.URLList[0]&&this.alreadyAttemptedOtherServers.indexOf(e)+1===0)),t.length&&(this.URL=t[0],this.alreadyAttemptedOtherServers.push(this.URL))}else this.URL=this.URLList[0]}async init(){const t=await this.authClass.login();return t&&this.authClass.onLoginResponse(t),!0}getCurrentMonitorServer(){return this.server}}exports.CallStatusEnum=Oe;exports.CallTypeEnum=_e;exports.ConnectionStatusEnum=ne;exports.DebugOption=Z;exports.DialerTypeEnum=Ie;exports.DirectionEnum=Re;exports.DoNotCallMeStatusCodeEnum=Be;exports.EventsEnum=L;exports.ExtensionEventReasonEnum=me;exports.ExtensionHangupCauseEnum=xe;exports.LoginType=Y;exports.QueueEventReasonEnum=Ue;exports.ServerListenerEventsEnum=Se;exports.ServerParameter=ee;exports.default=nt;
|
|
18
|
+
`,102:"\f",114:"\r"},q=function(){throw S=K=null,SyntaxError()},J=function(){for(var E,_,T,V,C,x=K,D=x.length;D>S;)switch(C=x.charCodeAt(S)){case 9:case 10:case 13:case 32:S++;break;case 123:case 125:case 91:case 93:case 58:case 44:return E=j?x.charAt(S):x[S],S++,E;case 34:for(E="@",S++;D>S;)if(C=x.charCodeAt(S),32>C)q();else if(C==92)switch(C=x.charCodeAt(++S)){case 92:case 34:case 47:case 98:case 116:case 110:case 102:case 114:E+=z[C],S++;break;case 117:for(_=++S,T=S+4;T>S;S++)C=x.charCodeAt(S),C>=48&&57>=C||C>=97&&102>=C||C>=65&&70>=C||q();E+=$("0x"+x.slice(_,S));break;default:q()}else{if(C==34)break;for(C=x.charCodeAt(S),_=S;C>=32&&C!=92&&C!=34;)C=x.charCodeAt(++S);E+=x.slice(_,S)}if(x.charCodeAt(S)==34)return S++,E;q();default:if(_=S,C==45&&(V=!0,C=x.charCodeAt(++S)),C>=48&&57>=C){for(C==48&&(C=x.charCodeAt(S+1),C>=48&&57>=C)&&q(),V=!1;D>S&&(C=x.charCodeAt(S),C>=48&&57>=C);S++);if(x.charCodeAt(S)==46){for(T=++S;D>T&&(C=x.charCodeAt(T),C>=48&&57>=C);T++);T==S&&q(),S=T}if(C=x.charCodeAt(S),C==101||C==69){for(C=x.charCodeAt(++S),(C==43||C==45)&&S++,T=S;D>T&&(C=x.charCodeAt(T),C>=48&&57>=C);T++);T==S&&q(),S=T}return+x.slice(_,S)}if(V&&q(),x.slice(S,S+4)=="true")return S+=4,!0;if(x.slice(S,S+5)=="false")return S+=5,!1;if(x.slice(S,S+4)=="null")return S+=4,null;q()}return"$"},se=function(E){var _,T;if(E=="$"&&q(),typeof E=="string"){if((j?E.charAt(0):E[0])=="@")return E.slice(1);if(E=="["){for(_=[];E=J(),E!="]";T||(T=!0))T&&(E==","?(E=J(),E=="]"&&q()):q()),E==","&&q(),_.push(se(E));return _}if(E=="{"){for(_={};E=J(),E!="}";T||(T=!0))T&&(E==","?(E=J(),E=="}"&&q()):q()),(E==","||typeof E!="string"||(j?E.charAt(0):E[0])!="@"||J()!=":")&&q(),_[E.slice(1)]=se(J());return _}q()}return E},Ce=function(E,_,T){var V=ke(E,_,T);V===h?delete E[_]:E[_]=V},ke=function(E,_,T){var V,C=E[_];if(typeof C=="object"&&C)if(d.call(C)==v)for(V=C.length;V--;)Ce(C,V,T);else f(C,function(x){Ce(C,x,T)});return T.call(E,_,C)};u.parse=function(E,_){var T,V;return S=0,K=""+E,T=se(J()),J()!="$"&&q(),S=K=null,_&&d.call(_)==s?ke((V={},V[""]=T,V),"",_):T}}}})(this)},{}],48:[function(a,t){function e(r,o){var c=[];o=o||0;for(var f=o||0;f<r.length;f++)c[f-o]=r[f];return c}t.exports=e},{}]},{},[1])(1)}const ze=Object.freeze(Object.defineProperty({__proto__:null,default:Ge},Symbol.toStringTag,{value:"Module"})),Je=Object.assign({"./v1_3_7.js":ze}),We=/v\d+_\d+_\d+/;function He(a){return typeof a=="function"}const ye=Object.entries(Je).reduce((a,t)=>{var o;const e=t[1].default,r=(o=t[0].match(We))==null?void 0:o[0];return He(e)&&r&&(a[r]=e()),a},{}),Ne=a=>{if(a in ye)return ye[a];throw new Error(`Socket version ${a} not found`)},Ye=(a,...t)=>Ne(a)(...t),Qe={...ye,getSocketVersion:Ne,makeSocketVersion:Ye};var Oe=(a=>(a.RINGING="Ringing",a.TALKING="Talking",a.DIALING="Dialing",a.HOLD="Hold",a))(Oe||{}),_e=(a=>(a.INCOMING="Incoming",a.OUTGOING="Outgoing",a))(_e||{}),ne=(a=>(a.CONNECTED="connected",a.DISCONNECTED="disconnected",a.TRYING_TO_CONNECT="tryingToConnect",a))(ne||{}),Ie=(a=>(a.AUTOMATIC="Automatic",a.IVR="IVR",a))(Ie||{}),Re=(a=>(a.INCOMINC="Incoming",a.OUTGOING="Outgoing",a.SPY="Spy",a.CLICK2CALL="Click2Call",a))(Re||{}),Be=(a=>(a.RESPONSE_FROM_API_VALID="RESPONSE_FROM_API_VALID",a.RESPONSE_FROM_API_INVALID="RESPONSE_FROM_API_INVALID",a))(Be||{}),L=(a=>(a.ALL_DIALER_STATUS="AllDialersStatus",a.ALL_EXTENSION_STATUS="AllExtensionsStatus",a.ALL_USERS_STATUS="AllUsersStatus",a.CONNECT="connect",a.DISCONNECT="disconnect",a.CONNECT_ERROR_EVENT="connect_error",a.EXTENSION_EVENT="ExtensionEvent",a.KEEP_ALIVE="keepalive",a.KEEP_ALIVE_RESPONSE="keepaliveResponse",a.LOGIN_STATUS="loginStatus",a.LOGIN_SUCCESS="loginSuccess",a.QUEUE_EVENT="QueueEvent",a.ONLINE_STATUS_EVENT="onlineStatusEvent",a.DIALER_EVENT="DialerEvent",a.EXTENSIONS_UPDATED="ExtensionsUpdated",a.ALL_VOICEBOTS_STATUS="AllVoicebotsStatus",a.VOICEBOT_SUBSCRIBE_TO_CALL_FAILED="subscribeToCallFailed",a.VOICEBOT_SUBSCRIBED_TO_CALL="subscribedToCall",a.VOICEBOT_INITIAL_CALL_HISTORY="initialCallHistory",a.VOICEBOT_UNSUBSCRIBED_FROM_CALL="unsubscribedFromCall",a.VOICEBOT_EVENT="VoicebotEvent",a))(L||{}),me=(a=>(a.NEWCALL="NEWCALL",a.ANSWER="ANSWER",a.HOLD="HOLD",a.UNHOLD="UNHOLD",a.HANGUP="HANGUP",a.USER_STATUS_UPDATE="userStatusUpdate",a))(me||{}),xe=(a=>(a.NORMAL_HANGUP="Normal hangup",a.USER_BUSY="User busy",a.CALL_REJECTED="Call Rejected",a.UNALLOCATED_NUMBER="Unallocated (unassigned) number",a.UNKNOWN="Unknown",a.NO_USER_RESPONDING="No user responding",a.USER_ALERTING="User alerting, no answer",a.ANSWERED_ELSEWHERE="Answered elsewhere",a))(xe||{}),Ue=(a=>(a.ANSWER="ANSWER",a.ABANDONED="ABANDONED",a.EXIT="EXIT",a.JOIN="JOIN",a))(Ue||{});class te{static mapExtensionEvent(t){var f,h;const e=t.reason;let r,o;t.data.currentCall&&(o=this.mapExtensionCall(t,t.data.currentCall));const c=this.mapExtensionData(t,t.data);return e===me.HANGUP?r={...t,reason:e,data:{...c,currentCall:o?{...o,duration:o.callAnswered_UTC_CLIENT?Date.now()-o.callAnswered_UTC_CLIENT:0}:void 0,calls:(f=t.data.calls)==null?void 0:f.map(d=>{const i=this.mapExtensionCall(t,d);return{...i,duration:i.callAnswered_UTC_CLIENT?Date.now()-i.callAnswered_UTC_CLIENT:0}})}}:r={...t,data:{...c,currentCall:o,calls:(h=t.data.calls)==null?void 0:h.map(d=>this.mapExtensionCall(t,d))},reason:e},r}static mapAllExtensionStatus(t){return{...t,extensions:t.extensions.map(e=>{var r;return{...this.mapExtensionData(t,e),currentCall:e.currentCall?this.mapExtensionCall(t,e.currentCall):void 0,calls:(r=e.calls)==null?void 0:r.map(o=>this.mapExtensionCall(t,o))}})}}static mapAllVoicebotStatus(t){return{...t,voicebots:t.voicebots.map(e=>({...e,Calls:e.Calls.map(r=>{var o;return{...this.mapVoicebotCall(t,r),eventsData:(o=r==null?void 0:r.eventsData)==null?void 0:o.map(c=>this.mapVoicebotEventsData(t,c))}})}))}}static mapVoicebotEvent(t){var e,r;return{...t,data:{...t.data,Call:{...this.mapVoicebotCall(t,t.data.Call),eventsData:(r=(e=t.data.Call)==null?void 0:e.eventsData)==null?void 0:r.map(o=>this.mapVoicebotEventsData(t,o))}}}}static mapVoicebotInitialCallHistory(t){return{...t,history:t.history.map(e=>{var o;const r=this.mapVoicebotCall(t,e);return{...r,eventsData:(o=r.eventsData)==null?void 0:o.map(c=>this.mapVoicebotEventsData(t,c))}})}}static mapVoicebotCall(t,e){return this.configureUTCForObject(e,[{key:"callStarted",format:"sec"}],t.servertime,t.servertimeoffset)}static mapVoicebotEventsData(t,e){return this.configureUTCForObject(e,[{key:"Timestamp",format:"sec"}],t.servertime,t.servertimeoffset)}static mapExtensionData(t,e){return this.configureUTCForObject(e,[{key:"lastAnsweredCallEventEpoch",format:"sec"},{key:"lastCallEventEpoch",format:"sec"},{key:"lastHangupCallEpoch",format:"sec"},{key:"representativeUpdated",format:"ms"}],t.servertime,t.servertimeoffset)}static mapExtensionCall(t,e){return this.configureUTCForObject(e,[{key:"callAnswered",format:"sec"},{key:"callStarted",format:"sec"}],t.servertime,t.servertimeoffset)}static mapQueueCall(t,e){return this.configureUTCForObject(e,[{key:"JoinTimeStamp",format:"sec"},{key:"VHJoinTimeStamp",format:"sec"}],t.servertime,t.servertimeoffset)}static mapLoginStatusEvent(t){return{...t,queues:t.queues.map(e=>({...e,Calls:e.Calls.map(r=>this.mapQueueCall(t,r))}))}}static mapQueueEvent(t){return{...t,data:{...t.data,Calls:t.data.Calls.map(e=>this.mapQueueCall(t,e))}}}static assignProperty(t,e,r){t[e]=r}static configureUTCForObject(t,e,r,o){const c=(r-o*60)*1e3,f=Date.now()-c,h={};return e.forEach(d=>{const i=t[d.key],u=d.key;if(i!==0&&typeof i=="number"&&!isNaN(i)){let l=i;d.format==="ms"&&(l=Math.floor(l/1e3));const s=(l-o*60)*1e3;this.assignProperty(h,`${u}_UTC`,s),this.assignProperty(h,`${u}_UTC_CLIENT`,s+f)}else this.assignProperty(h,`${u}_UTC`,0),this.assignProperty(h,`${u}_UTC_CLIENT`,0)}),{...t,...h}}}var Se=(a=>(a.UPDATE_MONITORED_EXTENSIONS="updateMonitoredExtensions",a.KEEP_ALIVE="keepalive",a.SUBSCRIBE_VOICEBOT_CALL_UPDATES="subscribeVoicebotCallUpdates",a.UNSUBSCRIBE_VOICEBOT_CALL_UPDATES="unsubscribeVoicebotCallUpdates",a))(Se||{});class Ze{constructor(t){X(this,"io");X(this,"ioFunction");X(this,"lastEventTimestamp",new Date().getTime());X(this,"doReconnect",!0);X(this,"connectionState","disconnected");X(this,"keepAliveInterval");X(this,"reconnectTimeout");X(this,"networkReconnectTimeout");X(this,"reconnectionTime",Le.reconnectionDelay);X(this,"maxReconnectionDelay",120);X(this,"networkCleanup",[]);this.eventsSdkClass=t,this.reconnectionTime=t.options.reconnectionDelay,this.setupNetworkListeners()}setupNetworkListeners(){const t=()=>this.closeAllConnections(),e=()=>this.handleNetworkOnline();typeof window<"u"&&"addEventListener"in window&&typeof window.addEventListener=="function"?(window.addEventListener("offline",t),window.addEventListener("online",e),this.networkCleanup.push(()=>window.removeEventListener("offline",t),()=>window.removeEventListener("online",e))):typeof self<"u"&&"addEventListener"in self&&typeof self.addEventListener=="function"&&(self.addEventListener("offline",t),self.addEventListener("online",e),this.networkCleanup.push(()=>self.removeEventListener("offline",t),()=>self.removeEventListener("online",e)))}handleNetworkOnline(){this.networkReconnectTimeout&&clearTimeout(this.networkReconnectTimeout),this.networkReconnectTimeout=setTimeout(()=>{this.connectionState==="disconnected"&&this.doReconnect&&this.eventsSdkClass.connect(ee.NEXT)},500)}getSocketIoFunction(t){const e=t.split("v="),r="v".concat(e[e.length-1]).replaceAll(".","_");this.ioFunction=Qe.getSocketVersion(r)}initSocketConnection(){if(this.connectionState!=="disconnected")return;this.connectionState="connecting";const t=this.eventsSdkClass.authClass.token,e=this.eventsSdkClass.options.protocol,r=this.eventsSdkClass.server;try{const o=r?r.Domain:this.eventsSdkClass.URL,c=r?`${e}://${o}`:this.eventsSdkClass.URL,f={reconnection:!1,upgrade:!1,transports:["websocket"],forceNew:!0,query:{token:t},timeout:this.eventsSdkClass.options.timeout};if(this.ioFunction&&c)this.io=this.ioFunction(c,f),this.initSocketEvents(),this.eventsSdkClass.eventEmitterClass.emit(L.ONLINE_STATUS_EVENT,{attemptToConnect:c,connectionStatus:ne.TRYING_TO_CONNECT}),this.eventsSdkClass.loggerClass.sdkAttemptToConnect(o);else throw new Error("Socket server url not defined")}catch(o){this.connectionState="disconnected",this.eventsSdkClass.loggerClass.sdkAttemptToConnectError(o)}}clearKeepAliveInterval(){this.keepAliveInterval&&(clearInterval(this.keepAliveInterval),this.keepAliveInterval=void 0)}initKeepAlive(){this.clearKeepAliveInterval(),this.keepAliveInterval=setInterval(async()=>{new Date().getTime()>this.lastEventTimestamp+this.eventsSdkClass.options.keepAliveTimeout&&this.io&&this.connectionState==="connected"&&this.eventsSdkClass.authClass.token&&(this.eventsSdkClass.emit(Se.KEEP_ALIVE,this.eventsSdkClass.authClass.token),this.eventsSdkClass.loggerClass.keepAliveEmit())},this.eventsSdkClass.options.keepAliveTimeout)}async closeAllConnections(){if(this.clearKeepAliveInterval(),this.reconnectTimeout&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=void 0),this.networkReconnectTimeout&&(clearTimeout(this.networkReconnectTimeout),this.networkReconnectTimeout=void 0),this.io){const t=this.io;this.io=void 0;try{await Promise.race([new Promise(e=>{t.on("disconnect",()=>e()),t.removeAllListeners(),t.close(),t.disconnect()}),new Promise(e=>setTimeout(e,1e3))])}catch{}}this.connectionState="disconnected",this.eventsSdkClass.loggerClass.stop(),ie.clearSessionStorage()}initSocketEvents(){this.io&&(this.io.removeAllListeners(),this.io.on(L.LOGIN_SUCCESS,t=>this.onLoginSuccessEvent(t,L.LOGIN_SUCCESS)).on(L.QUEUE_EVENT,t=>this.onQueueEvent(t,L.QUEUE_EVENT)).on(L.EXTENSION_EVENT,t=>this.onExtensionEvent(t,L.EXTENSION_EVENT)).on(L.DIALER_EVENT,t=>this.onDialerEvent(t,L.DIALER_EVENT)).on(L.LOGIN_STATUS,t=>this.onLoginStatusEvent(t,L.LOGIN_STATUS)).on(L.ALL_EXTENSION_STATUS,t=>this.onAllExtensionStatus(t,L.ALL_EXTENSION_STATUS)).on(L.ALL_DIALER_STATUS,t=>this.onAllDialerStatus(t,L.ALL_DIALER_STATUS)).on(L.KEEP_ALIVE_RESPONSE,t=>this.onKeepAliveResponse(t)).on(L.EXTENSIONS_UPDATED,t=>this.onExtensionsUpdatedEvent(t,L.EXTENSIONS_UPDATED)).on(L.CONNECT,()=>this.onConnect()).on(L.DISCONNECT,t=>this.onDisconnect(t)).on(L.CONNECT_ERROR_EVENT,t=>this.onConnectError(t)).on(L.ALL_VOICEBOTS_STATUS,t=>this.onAllVoicebotsStatus(t,L.ALL_VOICEBOTS_STATUS)).on(L.VOICEBOT_EVENT,t=>this.onVoicebotEvent(t,L.VOICEBOT_EVENT)).on(L.VOICEBOT_SUBSCRIBED_TO_CALL,t=>this.onVoicebotSubscribedToCall(t,L.VOICEBOT_SUBSCRIBED_TO_CALL)).on(L.VOICEBOT_SUBSCRIBE_TO_CALL_FAILED,t=>this.onVoicebotSubscribeToCallFailed(t,L.VOICEBOT_SUBSCRIBE_TO_CALL_FAILED)).on(L.VOICEBOT_INITIAL_CALL_HISTORY,t=>this.onVoicebotInitialCallHistory(t,L.VOICEBOT_INITIAL_CALL_HISTORY)).on(L.VOICEBOT_UNSUBSCRIBED_FROM_CALL,t=>this.onVoicebotUnsubscribedFromCall(t,L.VOICEBOT_UNSUBSCRIBED_FROM_CALL)))}updateEventTimestamp(){this.lastEventTimestamp=new Date().getTime()}onLoginSuccessEvent(t,e){this.updateEventTimestamp(),this.eventsSdkClass.loggerClass.eventLog(e,t),this.eventsSdkClass.eventEmitterClass.emit(e,t)}onQueueEvent(t,e){this.updateEventTimestamp(),this.eventsSdkClass.loggerClass.eventLog(e,t),this.eventsSdkClass.eventEmitterClass.emit(e,te.mapQueueEvent(t))}onExtensionEvent(t,e){this.updateEventTimestamp();const r=te.mapExtensionEvent(t);r&&(this.eventsSdkClass.loggerClass.eventLog(e,t),this.eventsSdkClass.eventEmitterClass.emit(e,r))}onDialerEvent(t,e){this.updateEventTimestamp(),this.eventsSdkClass.loggerClass.eventLog(e,t),this.eventsSdkClass.eventEmitterClass.emit(e,t)}onVoicebotEvent(t,e){this.updateEventTimestamp();const r=te.mapVoicebotEvent(t);this.eventsSdkClass.loggerClass.eventLog(e,t),this.eventsSdkClass.eventEmitterClass.emit(e,r)}onAllVoicebotsStatus(t,e){this.updateEventTimestamp();const r=te.mapAllVoicebotStatus(t);this.eventsSdkClass.loggerClass.eventLog(e,t),this.eventsSdkClass.eventEmitterClass.emit(e,r)}onVoicebotSubscribedToCall(t,e){this.updateEventTimestamp(),this.eventsSdkClass.loggerClass.eventLog(e,t),this.eventsSdkClass.eventEmitterClass.emit(e,t)}onVoicebotSubscribeToCallFailed(t,e){this.updateEventTimestamp(),this.eventsSdkClass.loggerClass.eventLog(e,t),this.eventsSdkClass.eventEmitterClass.emit(e,t)}onVoicebotInitialCallHistory(t,e){this.updateEventTimestamp();const r=te.mapVoicebotInitialCallHistory(t);this.eventsSdkClass.loggerClass.eventLog(e,t),this.eventsSdkClass.eventEmitterClass.emit(e,r)}onVoicebotUnsubscribedFromCall(t,e){this.updateEventTimestamp(),this.eventsSdkClass.loggerClass.eventLog(e,t),this.eventsSdkClass.eventEmitterClass.emit(e,t)}onLoginStatusEvent(t,e){this.updateEventTimestamp(),this.eventsSdkClass.loggerClass.eventLog(e,t),this.eventsSdkClass.eventEmitterClass.emit(e,te.mapLoginStatusEvent(t))}onAllExtensionStatus(t,e){this.updateEventTimestamp();const r=te.mapAllExtensionStatus(t);this.eventsSdkClass.loggerClass.eventLog(e,t),this.eventsSdkClass.eventEmitterClass.emit(e,r)}onAllDialerStatus(t,e){this.updateEventTimestamp(),this.eventsSdkClass.loggerClass.eventLog(e,t),this.eventsSdkClass.eventEmitterClass.emit(e,t)}onKeepAliveResponse(t){if(this.updateEventTimestamp(),this.eventsSdkClass.loggerClass.keepAliveResponse(t),t.errorCode){this.closeAllConnections().then(()=>{this.doReconnect&&this.connectionState==="disconnected"&&this.scheduleReconnect()});return}}onExtensionsUpdatedEvent(t,e){this.updateEventTimestamp(),this.eventsSdkClass.loggerClass.eventLog(e,t),this.eventsSdkClass.eventEmitterClass.emit(e,t)}onConnect(){this.connectionState="connected",this.reconnectionTime=this.eventsSdkClass.options.reconnectionDelay,this.reconnectTimeout&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=void 0),this.eventsSdkClass.eventEmitterClass.emit(L.ONLINE_STATUS_EVENT,{connectionStatus:ne.CONNECTED}),this.eventsSdkClass.loggerClass.start().then(()=>{this.eventsSdkClass.loggerClass.sdkConnectionSuccess()})}scheduleReconnect(){!this.doReconnect||this.reconnectTimeout||(this.eventsSdkClass.eventEmitterClass.emit(L.ONLINE_STATUS_EVENT,{connectionStatus:ne.TRYING_TO_CONNECT}),this.reconnectTimeout=setTimeout(()=>{this.reconnectTimeout=void 0,this.reconnectionTime=Math.min(this.reconnectionTime*2,this.maxReconnectionDelay),this.reconnectionTime>this.maxReconnectionDelay&&(this.reconnectionTime=this.eventsSdkClass.options.reconnectionDelay),this.eventsSdkClass.connect(ee.NEXT)},this.reconnectionTime*1e3))}onDisconnect(t){if(this.connectionState="disconnected",this.eventsSdkClass.loggerClass.sdkDisconnect([t]),!this.doReconnect){this.eventsSdkClass.eventEmitterClass.emit(L.ONLINE_STATUS_EVENT,{connectionStatus:ne.DISCONNECTED});return}this.closeAllConnections(),this.scheduleReconnect()}onConnectError(t){this.connectionState="disconnected",this.eventsSdkClass.loggerClass.sdkAttemptToConnectError(t),this.doReconnect?this.scheduleReconnect():this.eventsSdkClass.eventEmitterClass.emit(L.ONLINE_STATUS_EVENT,{connectionStatus:ne.DISCONNECTED})}async destroy(){this.doReconnect=!1,this.networkCleanup.forEach(t=>t()),await this.closeAllConnections()}}class et{constructor(t){X(this,"storageLogger");this.eventsSdkClass=t,this.eventsSdkClass=t}init(){if(!this.eventsSdkClass.options.useLogger)return;if(this.eventsSdkClass.options.storageLoggerInstance){this.storageLogger=this.eventsSdkClass.options.storageLoggerInstance;return}let t;this.eventsSdkClass.options.loggerSocketConnection&&(t=this.eventsSdkClass.options.loggerSocketConnection),this.eventsSdkClass.socketIoClass.ioFunction&&!t&&(t=this.eventsSdkClass.socketIoClass.ioFunction(this.eventsSdkClass.options.loggerServer,this.eventsSdkClass.options.loggerConnectOptions)),t&&(this.storageLogger=new M({socket:t,loggerOptions:this.eventsSdkClass.options.loggerConfig}))}async start(){this.storageLogger&&await this.storageLogger.start()}async stop(){this.storageLogger&&await this.storageLogger.stop()}log(t){if(this.eventsSdkClass.options.useLogger)if(this.storageLogger)switch(t.Level){case M.LevelEnum.INFO:this.storageLogger.log(t);break;case M.LevelEnum.DEBUG:this.storageLogger.debug(t);break;case M.LevelEnum.WARNING:this.storageLogger.warn(t);break;case M.LevelEnum.ERROR:this.storageLogger.error(t)}else t.Level===M.LevelEnum.INFO?console.log(t):t.Level===M.LevelEnum.ERROR&&console.error(t)}sdkConnectionSuccess(){const t={...this.eventsSdkClass.options,token:"CENSORED",password:"CENSORED"};this.log({Message:`Sdk connected to the socket server ${this.eventsSdkClass.server&&this.eventsSdkClass.server.Domain?this.eventsSdkClass.server.Domain:this.eventsSdkClass.URL}`,Body:JSON.stringify(t,this.eventsSdkClass.getCircularReplacer()),ActionName:M.ActionNameEnum.WSCONNECT,isShowClient:!1,Status:"Connection established",StatusCode:200,Level:M.LevelEnum.INFO,LogType:M.LogTypeEnum.INFO})}sdkDisconnect(t){this.log({Message:`Sdk disconnected from the socket server ${this.eventsSdkClass.server&&this.eventsSdkClass.server.Domain?this.eventsSdkClass.server.Domain:this.eventsSdkClass.URL} (${t})`,ActionName:M.ActionNameEnum.WSCONNECT,isShowClient:!1,Status:"Connection closed",StatusCode:200,Level:M.LevelEnum.INFO,LogType:M.LogTypeEnum.INFO})}sdkAttemptToConnect(t){this.log({Message:`${this.eventsSdkClass.options.loggerConfig.system} is trying to connect to WS server ${t}`,ActionName:M.ActionNameEnum.WSCONNECT,isShowClient:!1,Status:"Switching Protocols",StatusCode:101,Level:M.LevelEnum.INFO,LogType:M.LogTypeEnum.INFO})}sdkAttemptToConnectError(t){this.log({Message:`${t}`,ActionName:M.ActionNameEnum.WSCONNECT,isShowClient:!1,Status:"Connection error",StatusCode:500,Level:M.LevelEnum.ERROR,LogType:M.LogTypeEnum.ERROR})}loginError(t,e,r,o){this.log({Message:`External login request error with the login type ${t} ${t===Y.TOKEN?r:o}`,ActionName:M.ActionNameEnum.WSCONNECT,isShowClient:!1,Status:"External login error",StatusCode:e||400,Level:M.LevelEnum.ERROR,LogType:M.LogTypeEnum.ERROR})}getSettingsError(t,e){this.log({Message:`Get settings error with token ${t}, error: ${e}`,ActionName:M.ActionNameEnum.WSCONNECT,isShowClient:!1,Status:"Get settings error",StatusCode:400,Level:M.LevelEnum.ERROR,LogType:M.LogTypeEnum.ERROR})}refreshTokenError(t,e,r){this.log({Message:`Refresh token error with old refresh token ${t}, url: ${e}, error: ${r}`,ActionName:M.ActionNameEnum.WSCONNECT,isShowClient:!1,Status:"Get settings error",StatusCode:400,Level:M.LevelEnum.ERROR,LogType:M.LogTypeEnum.ERROR})}keepAliveEmit(){this.log({Message:`Keep alive event emitted with this token: ${this.eventsSdkClass.authClass.token}`,ActionName:M.ActionNameEnum.WSCONNECT,isShowClient:!1,Level:M.LevelEnum.INFO,LogType:M.LogTypeEnum.INFO})}keepAliveResponse(t){this.log({Message:`Keep alive response: ${JSON.stringify(t)}`,ActionName:M.ActionNameEnum.WSCONNECT,isShowClient:!1,Status:"Successful",StatusCode:200,Level:M.LevelEnum.INFO,LogType:M.LogTypeEnum.INFO})}eventLog(t,e){const r={[Z.FULL]:[],[Z.BOOTSTRAP]:[L.LOGIN_STATUS,L.LOGIN_SUCCESS,L.ALL_EXTENSION_STATUS,L.ALL_DIALER_STATUS],[Z.DEBUG_EXTENSIONS]:[L.ALL_EXTENSION_STATUS,L.EXTENSION_EVENT,L.EXTENSIONS_UPDATED],[Z.DEBUG_DIALER]:[L.ALL_DIALER_STATUS,L.DIALER_EVENT],[Z.DEBUG_QUEUE]:[L.QUEUE_EVENT]};this.eventsSdkClass.options.debugOption&&(r[this.eventsSdkClass.options.debugOption].includes(t)||this.eventsSdkClass.options.debugOption===Z.FULL)&&this.log({Message:`Event name: ${t}`,Body:{...this.getStaticData(),...e},ActionName:M.ActionNameEnum.WSCONNECT,isShowClient:!1,Status:"Successful",Level:M.LevelEnum.DEBUG,LogType:M.LogTypeEnum.INFO})}getStaticData(){return{SocketId:this.eventsSdkClass.socketIoClass&&this.eventsSdkClass.socketIoClass.io?this.eventsSdkClass.socketIoClass.io.id:""}}}class tt{constructor(t){X(this,"listeners",{[L.ALL_EXTENSION_STATUS]:[],[L.ALL_DIALER_STATUS]:[],[L.ALL_USERS_STATUS]:[],[L.ALL_VOICEBOTS_STATUS]:[],[L.QUEUE_EVENT]:[],[L.EXTENSION_EVENT]:[],[L.DIALER_EVENT]:[],[L.LOGIN_SUCCESS]:[],[L.LOGIN_STATUS]:[],[L.KEEP_ALIVE_RESPONSE]:[],[L.ONLINE_STATUS_EVENT]:[],[L.EXTENSIONS_UPDATED]:[],[L.VOICEBOT_SUBSCRIBED_TO_CALL]:[],[L.VOICEBOT_SUBSCRIBE_TO_CALL_FAILED]:[],[L.VOICEBOT_INITIAL_CALL_HISTORY]:[],[L.VOICEBOT_UNSUBSCRIBED_FROM_CALL]:[],[L.VOICEBOT_EVENT]:[]});X(this,"allListeners",[]);this.eventsSdkClass=t,this.eventsSdkClass=t}on(t,e){t==="*"?this.allListeners.push(e):this.listeners[t].push(e)}off(t,e){if(t==="*")this.allListeners=this.allListeners.filter(r=>r!==e);else{const o=this.listeners[t].filter(c=>c!==e);this.listeners={...this.listeners,[t]:o}}}emit(t,e){this.eventsSdkClass.socketIoClass.lastEventTimestamp=new Date().getTime(),this.listeners[t].forEach(o=>o({name:t,data:e}));const r={name:t,data:e};this.allListeners.forEach(o=>o(r))}}class nt{constructor(t){X(this,"options");X(this,"servers",[]);X(this,"URLList",[]);X(this,"server");X(this,"URL");X(this,"socket");X(this,"mainServer");X(this,"alreadyAttemptedOtherServers",[]);X(this,"authClass",new $e(this));X(this,"socketIoClass");X(this,"loggerClass",new et(this));X(this,"eventEmitterClass",new tt(this));X(this,"getCircularReplacer",()=>{const t=new WeakSet;return(e,r)=>{if(!(e==="socket"||e==="io"||e==="nsps")){if(typeof r=="object"&&r!==null){if(t.has(r))return;t.add(r)}return r}}});this.options={...Le,...t},this.socketIoClass=new Ze(this)}on(t,e){this.eventEmitterClass.on(t,e)}emit(t,...e){this.socketIoClass.io&&this.socketIoClass.io.emit(t,...e)}connect(t){t===ee.MAIN&&this.findMainServer(),t===ee.NEXT&&this.findNextServer(),this.socketIoClass.doReconnect=!0;try{this.loggerClass.init()}catch(e){console.error(e)}this.socketIoClass.initSocketConnection(),this.socketIoClass.initKeepAlive()}async disconnect(){this.socketIoClass.doReconnect=!1,await this.socketIoClass.closeAllConnections(),await this.loggerClass.stop()}clearKeepAliveInterval(){this.socketIoClass.clearKeepAliveInterval()}findMainServer(){this.servers.length?(this.mainServer=this.servers.reduce((t,e)=>e.Priority>t.Priority?e:t),this.server=this.mainServer):this.URLList.length&&(this.URL=this.URLList[0])}findNextServer(){if(this.servers.length&&this.server)if(this.server.Priority===this.mainServer.Priority){let t=this.servers.filter(e=>e.Priority!==this.mainServer.Priority&&this.alreadyAttemptedOtherServers.indexOf(e.Priority)+1===0);t.length||(this.alreadyAttemptedOtherServers=[],t=this.servers.filter(e=>e.Priority!==this.mainServer.Priority&&this.alreadyAttemptedOtherServers.indexOf(e.Priority)+1===0)),t.length&&(this.server=t.reduce((e,r)=>r.Priority>e.Priority?r:e),this.alreadyAttemptedOtherServers.push(this.server.Priority))}else this.server=this.mainServer;else if(this.URLList.length)if(this.URL===this.URLList[0]){let t=this.URLList.filter(e=>e!==this.URLList[0]&&this.alreadyAttemptedOtherServers.indexOf(e)+1===0);t.length||(this.alreadyAttemptedOtherServers=[],t=this.URLList.filter(e=>e!==this.URLList[0]&&this.alreadyAttemptedOtherServers.indexOf(e)+1===0)),t.length&&(this.URL=t[0],this.alreadyAttemptedOtherServers.push(this.URL))}else this.URL=this.URLList[0]}async init(){const t=await this.authClass.login();return t&&this.authClass.onLoginResponse(t),!0}getCurrentMonitorServer(){return this.server}}exports.CallStatusEnum=Oe;exports.CallTypeEnum=_e;exports.ConnectionStatusEnum=ne;exports.DebugOption=Z;exports.DialerTypeEnum=Ie;exports.DirectionEnum=Re;exports.DoNotCallMeStatusCodeEnum=Be;exports.EventsEnum=L;exports.ExtensionEventReasonEnum=me;exports.ExtensionHangupCauseEnum=xe;exports.LoginType=Y;exports.QueueEventReasonEnum=Ue;exports.ServerListenerEventsEnum=Se;exports.ServerParameter=ee;exports.default=nt;
|
|
19
19
|
//# sourceMappingURL=voicenter-events-sdk.cjs.js.map
|