@voicenter-team/events-sdk 0.0.115 → 0.0.117
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 +11 -11
- package/dist/voicenter-events-sdk.cjs.js.map +1 -1
- package/dist/voicenter-events-sdk.d.ts +119 -4
- package/dist/voicenter-events-sdk.es.js +97 -94
- 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 +2 -2
|
@@ -15,5 +15,5 @@ var VoicenterEventsSDK=function(z,Z,P){"use strict";var et=Object.defineProperty
|
|
|
15
15
|
`+U+ee.join(`,
|
|
16
16
|
`+U)+`
|
|
17
17
|
`+Ce+"}":"{"+ee.join(",")+"}":"{}";return D.pop(),Se}};u.stringify=function(E,O,T){var V,S,U,D;if(typeof O=="function"||typeof O=="object"&&O){if((D=d.call(O))==s)S=O;else if(D==y){U={};for(var L,F=0,G=O.length;G>F;L=O[F++],D=d.call(L),(D==v||D==p)&&(U[L]=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==v&&(V=T.length<=10?T:T.slice(0,10));return R("",(L={},L[""]=E,L),S,U,V,"",[])}}if(!o("json-parse")){var C,X,$=String.fromCharCode,J={92:"\\",34:'"',47:"/",98:"\b",116:" ",110:`
|
|
18
|
-
`,102:"\f",114:"\r"},q=function(){throw C=X=null,SyntaxError()},W=function(){for(var E,O,T,V,S,U=X,D=U.length;D>C;)switch(S=U.charCodeAt(C)){case 9:case 10:case 13:case 32:C++;break;case 123:case 125:case 91:case 93:case 58:case 44:return E=j?U.charAt(C):U[C],C++,E;case 34:for(E="@",C++;D>C;)if(S=U.charCodeAt(C),32>S)q();else if(S==92)switch(S=U.charCodeAt(++C)){case 92:case 34:case 47:case 98:case 116:case 110:case 102:case 114:E+=J[S],C++;break;case 117:for(O=++C,T=C+4;T>C;C++)S=U.charCodeAt(C),S>=48&&57>=S||S>=97&&102>=S||S>=65&&70>=S||q();E+=$("0x"+U.slice(O,C));break;default:q()}else{if(S==34)break;for(S=U.charCodeAt(C),O=C;S>=32&&S!=92&&S!=34;)S=U.charCodeAt(++C);E+=U.slice(O,C)}if(U.charCodeAt(C)==34)return C++,E;q();default:if(O=C,S==45&&(V=!0,S=U.charCodeAt(++C)),S>=48&&57>=S){for(S==48&&(S=U.charCodeAt(C+1),S>=48&&57>=S)&&q(),V=!1;D>C&&(S=U.charCodeAt(C),S>=48&&57>=S);C++);if(U.charCodeAt(C)==46){for(T=++C;D>T&&(S=U.charCodeAt(T),S>=48&&57>=S);T++);T==C&&q(),C=T}if(S=U.charCodeAt(C),S==101||S==69){for(S=U.charCodeAt(++C),(S==43||S==45)&&C++,T=C;D>T&&(S=U.charCodeAt(T),S>=48&&57>=S);T++);T==C&&q(),C=T}return+U.slice(O,C)}if(V&&q(),U.slice(C,C+4)=="true")return C+=4,!0;if(U.slice(C,C+5)=="false")return C+=5,!1;if(U.slice(C,C+4)=="null")return C+=4,null;q()}return"$"},ie=function(E){var O,T;if(E=="$"&&q(),typeof E=="string"){if((j?E.charAt(0):E[0])=="@")return E.slice(1);if(E=="["){for(O=[];E=W(),E!="]";T||(T=!0))T&&(E==","?(E=W(),E=="]"&&q()):q()),E==","&&q(),O.push(ie(E));return O}if(E=="{"){for(O={};E=W(),E!="}";T||(T=!0))T&&(E==","?(E=W(),E=="}"&&q()):q()),(E==","||typeof E!="string"||(j?E.charAt(0):E[0])!="@"||W()!=":")&&q(),O[E.slice(1)]=ie(W());return O}q()}return E},xe=function(E,O,T){var V=De(E,O,T);V===h?delete E[O]:E[O]=V},De=function(E,O,T){var V,S=E[O];if(typeof S=="object"&&S)if(d.call(S)==y)for(V=S.length;V--;)xe(S,V,T);else f(S,function(U){xe(S,U,T)});return T.call(E,O,S)};u.parse=function(E,O){var T,V;return C=0,X=""+E,T=ie(W()),W()!="$"&&q(),C=X=null,O&&d.call(O)==s?De((V={},V[""]=T,V),"",O):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 Ge=Object.assign({"./v1_3_7.js":Object.freeze(Object.defineProperty({__proto__:null,default:$e},Symbol.toStringTag,{value:"Module"}))}),ze=/v\d+_\d+_\d+/;function Je(a){return typeof a=="function"}const ue=Object.entries(Ge).reduce((a,t)=>{var o;const e=t[1].default,r=(o=t[0].match(ze))==null?void 0:o[0];return Je(e)&&r&&(a[r]=e()),a},{}),Ne=a=>{if(a in ue)return ue[a];throw new Error(`Socket version ${a} not found`)},We={...ue,getSocketVersion:Ne,makeSocketVersion:(a,...t)=>Ne(a)(...t)};var Le=(a=>(a.RINGING="Ringing",a.TALKING="Talking",a.DIALING="Dialing",a.HOLD="Hold",a))(Le||{}),_e=(a=>(a.INCOMING="Incoming",a.OUTGOING="Outgoing",a))(_e||{}),se=(a=>(a.CONNECTED="connected",a.DISCONNECTED="disconnected",a.TRYING_TO_CONNECT="tryingToConnect",a))(se||{}),Oe=(a=>(a.AUTOMATIC="Automatic",a.IVR="IVR",a))(Oe||{}),Ie=(a=>(a.INCOMINC="Incoming",a.OUTGOING="Outgoing",a.SPY="Spy",a.CLICK2CALL="Click2Call",a))(Ie||{}),Re=(a=>(a.RESPONSE_FROM_API_VALID="RESPONSE_FROM_API_VALID",a.RESPONSE_FROM_API_INVALID="RESPONSE_FROM_API_INVALID",a))(Re||{}),A=(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))(A||{}),pe=(a=>(a.NEWCALL="NEWCALL",a.ANSWER="ANSWER",a.HOLD="HOLD",a.UNHOLD="UNHOLD",a.HANGUP="HANGUP",a.USER_STATUS_UPDATE="userStatusUpdate",a))(pe||{}),Be=(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))(Be||{}),Ue=(a=>(a.ANSWER="ANSWER",a.ABANDONED="ABANDONED",a.EXIT="EXIT",a.JOIN="JOIN",a))(Ue||{});class re{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===pe.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=>({...this.mapVoicebotCall(t,e),eventsData:this.mapVoicebotEventsData(t,e)}))}}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 fe=(a=>(a.UPDATE_MONITORED_EXTENSIONS="updateMonitoredExtensions",a.KEEP_ALIVE="keepalive",a.SUBSCRIBE_VOICEBOT_CALL_UPDATES="subscribeVoicebotCallUpdates",a.UNSUBSCRIBE_VOICEBOT_CALL_UPDATES="unsubscribeVoicebotCallUpdates",a))(fe||{});class He{constructor(t){K(this,"io");K(this,"ioFunction");K(this,"lastEventTimestamp",new Date().getTime());K(this,"doReconnect",!0);K(this,"connectionState","disconnected");K(this,"keepAliveInterval");K(this,"reconnectTimeout");K(this,"networkReconnectTimeout");K(this,"reconnectionTime",Ae.reconnectionDelay);K(this,"maxReconnectionDelay",120);K(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(ne.NEXT)},500)}getSocketIoFunction(t){const e=t.split("v="),r="v".concat(e[e.length-1]).replaceAll(".","_");this.ioFunction=We.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(A.ONLINE_STATUS_EVENT,{attemptToConnect:c,connectionStatus:se.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(fe.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(),oe.clearSessionStorage()}initSocketEvents(){this.io&&(this.io.removeAllListeners(),this.io.on(A.LOGIN_SUCCESS,t=>this.onLoginSuccessEvent(t,A.LOGIN_SUCCESS)).on(A.QUEUE_EVENT,t=>this.onQueueEvent(t,A.QUEUE_EVENT)).on(A.EXTENSION_EVENT,t=>this.onExtensionEvent(t,A.EXTENSION_EVENT)).on(A.DIALER_EVENT,t=>this.onDialerEvent(t,A.DIALER_EVENT)).on(A.LOGIN_STATUS,t=>this.onLoginStatusEvent(t,A.LOGIN_STATUS)).on(A.ALL_EXTENSION_STATUS,t=>this.onAllExtensionStatus(t,A.ALL_EXTENSION_STATUS)).on(A.ALL_DIALER_STATUS,t=>this.onAllDialerStatus(t,A.ALL_DIALER_STATUS)).on(A.KEEP_ALIVE_RESPONSE,t=>this.onKeepAliveResponse(t)).on(A.EXTENSIONS_UPDATED,t=>this.onExtensionsUpdatedEvent(t,A.EXTENSIONS_UPDATED)).on(A.CONNECT,()=>this.onConnect()).on(A.DISCONNECT,t=>this.onDisconnect(t)).on(A.CONNECT_ERROR_EVENT,t=>this.onConnectError(t)).on(A.ALL_VOICEBOTS_STATUS,t=>this.onAllVoicebotsStatus(t,A.ALL_VOICEBOTS_STATUS)).on(A.VOICEBOT_EVENT,t=>this.onVoicebotEvent(t,A.VOICEBOT_EVENT)).on(A.VOICEBOT_SUBSCRIBED_TO_CALL,t=>this.onVoicebotSubscribedToCall(t,A.VOICEBOT_SUBSCRIBED_TO_CALL)).on(A.VOICEBOT_SUBSCRIBE_TO_CALL_FAILED,t=>this.onVoicebotSubscribeToCallFailed(t,A.VOICEBOT_SUBSCRIBE_TO_CALL_FAILED)).on(A.VOICEBOT_INITIAL_CALL_HISTORY,t=>this.onVoicebotInitialCallHistory(t,A.VOICEBOT_INITIAL_CALL_HISTORY)).on(A.VOICEBOT_UNSUBSCRIBED_FROM_CALL,t=>this.onVoicebotUnsubscribedFromCall(t,A.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,re.mapQueueEvent(t))}onExtensionEvent(t,e){this.updateEventTimestamp();const r=re.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=re.mapVoicebotEvent(t);this.eventsSdkClass.loggerClass.eventLog(e,t),this.eventsSdkClass.eventEmitterClass.emit(e,r)}onAllVoicebotsStatus(t,e){this.updateEventTimestamp();const r=re.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=re.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,re.mapLoginStatusEvent(t))}onAllExtensionStatus(t,e){this.updateEventTimestamp();const r=re.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(A.ONLINE_STATUS_EVENT,{connectionStatus:se.CONNECTED}),this.eventsSdkClass.loggerClass.start().then(()=>{this.eventsSdkClass.loggerClass.sdkConnectionSuccess()})}scheduleReconnect(){!this.doReconnect||this.reconnectTimeout||(this.eventsSdkClass.eventEmitterClass.emit(A.ONLINE_STATUS_EVENT,{connectionStatus:se.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(ne.NEXT)},this.reconnectionTime*1e3))}onDisconnect(t){if(this.connectionState="disconnected",this.eventsSdkClass.loggerClass.sdkDisconnect([t]),!this.doReconnect){this.eventsSdkClass.eventEmitterClass.emit(A.ONLINE_STATUS_EVENT,{connectionStatus:se.DISCONNECTED});return}this.closeAllConnections(),this.scheduleReconnect()}onConnectError(t){this.connectionState="disconnected",this.eventsSdkClass.loggerClass.sdkAttemptToConnectError(t),this.doReconnect?this.scheduleReconnect():this.eventsSdkClass.eventEmitterClass.emit(A.ONLINE_STATUS_EVENT,{connectionStatus:se.DISCONNECTED})}async destroy(){this.doReconnect=!1,this.networkCleanup.forEach(t=>t()),await this.closeAllConnections()}}class Ye{constructor(t){K(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 P({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 P.LevelEnum.INFO:this.storageLogger.log(t);break;case P.LevelEnum.DEBUG:this.storageLogger.debug(t);break;case P.LevelEnum.WARNING:this.storageLogger.warn(t);break;case P.LevelEnum.ERROR:this.storageLogger.error(t)}else t.Level===P.LevelEnum.INFO?console.log(t):t.Level===P.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:P.ActionNameEnum.WSCONNECT,isShowClient:!1,Status:"Connection established",StatusCode:200,Level:P.LevelEnum.INFO,LogType:P.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:P.ActionNameEnum.WSCONNECT,isShowClient:!1,Status:"Connection closed",StatusCode:200,Level:P.LevelEnum.INFO,LogType:P.LogTypeEnum.INFO})}sdkAttemptToConnect(t){this.log({Message:`${this.eventsSdkClass.options.loggerConfig.system} is trying to connect to WS server ${t}`,ActionName:P.ActionNameEnum.WSCONNECT,isShowClient:!1,Status:"Switching Protocols",StatusCode:101,Level:P.LevelEnum.INFO,LogType:P.LogTypeEnum.INFO})}sdkAttemptToConnectError(t){this.log({Message:`${t}`,ActionName:P.ActionNameEnum.WSCONNECT,isShowClient:!1,Status:"Connection error",StatusCode:500,Level:P.LevelEnum.ERROR,LogType:P.LogTypeEnum.ERROR})}loginError(t,e,r,o){this.log({Message:`External login request error with the login type ${t} ${t===Q.TOKEN?r:o}`,ActionName:P.ActionNameEnum.WSCONNECT,isShowClient:!1,Status:"External login error",StatusCode:e||400,Level:P.LevelEnum.ERROR,LogType:P.LogTypeEnum.ERROR})}getSettingsError(t,e){this.log({Message:`Get settings error with token ${t}, error: ${e}`,ActionName:P.ActionNameEnum.WSCONNECT,isShowClient:!1,Status:"Get settings error",StatusCode:400,Level:P.LevelEnum.ERROR,LogType:P.LogTypeEnum.ERROR})}refreshTokenError(t,e,r){this.log({Message:`Refresh token error with old refresh token ${t}, url: ${e}, error: ${r}`,ActionName:P.ActionNameEnum.WSCONNECT,isShowClient:!1,Status:"Get settings error",StatusCode:400,Level:P.LevelEnum.ERROR,LogType:P.LogTypeEnum.ERROR})}keepAliveEmit(){this.log({Message:`Keep alive event emitted with this token: ${this.eventsSdkClass.authClass.token}`,ActionName:P.ActionNameEnum.WSCONNECT,isShowClient:!1,Level:P.LevelEnum.INFO,LogType:P.LogTypeEnum.INFO})}keepAliveResponse(t){this.log({Message:`Keep alive response: ${JSON.stringify(t)}`,ActionName:P.ActionNameEnum.WSCONNECT,isShowClient:!1,Status:"Successful",StatusCode:200,Level:P.LevelEnum.INFO,LogType:P.LogTypeEnum.INFO})}eventLog(t,e){const r={[te.FULL]:[],[te.BOOTSTRAP]:[A.LOGIN_STATUS,A.LOGIN_SUCCESS,A.ALL_EXTENSION_STATUS,A.ALL_DIALER_STATUS],[te.DEBUG_EXTENSIONS]:[A.ALL_EXTENSION_STATUS,A.EXTENSION_EVENT,A.EXTENSIONS_UPDATED],[te.DEBUG_DIALER]:[A.ALL_DIALER_STATUS,A.DIALER_EVENT],[te.DEBUG_QUEUE]:[A.QUEUE_EVENT]};this.eventsSdkClass.options.debugOption&&(r[this.eventsSdkClass.options.debugOption].includes(t)||this.eventsSdkClass.options.debugOption===te.FULL)&&this.log({Message:`Event name: ${t}`,Body:{...this.getStaticData(),...e},ActionName:P.ActionNameEnum.WSCONNECT,isShowClient:!1,Status:"Successful",Level:P.LevelEnum.DEBUG,LogType:P.LogTypeEnum.INFO})}getStaticData(){return{SocketId:this.eventsSdkClass.socketIoClass&&this.eventsSdkClass.socketIoClass.io?this.eventsSdkClass.socketIoClass.io.id:""}}}class Qe{constructor(t){K(this,"listeners",{[A.ALL_EXTENSION_STATUS]:[],[A.ALL_DIALER_STATUS]:[],[A.ALL_USERS_STATUS]:[],[A.ALL_VOICEBOTS_STATUS]:[],[A.QUEUE_EVENT]:[],[A.EXTENSION_EVENT]:[],[A.DIALER_EVENT]:[],[A.LOGIN_SUCCESS]:[],[A.LOGIN_STATUS]:[],[A.KEEP_ALIVE_RESPONSE]:[],[A.ONLINE_STATUS_EVENT]:[],[A.EXTENSIONS_UPDATED]:[],[A.VOICEBOT_SUBSCRIBED_TO_CALL]:[],[A.VOICEBOT_SUBSCRIBE_TO_CALL_FAILED]:[],[A.VOICEBOT_INITIAL_CALL_HISTORY]:[],[A.VOICEBOT_UNSUBSCRIBED_FROM_CALL]:[],[A.VOICEBOT_EVENT]:[]});K(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 Ze{constructor(t){K(this,"options");K(this,"servers",[]);K(this,"URLList",[]);K(this,"server");K(this,"URL");K(this,"socket");K(this,"mainServer");K(this,"alreadyAttemptedOtherServers",[]);K(this,"authClass",new Xe(this));K(this,"socketIoClass");K(this,"loggerClass",new Ye(this));K(this,"eventEmitterClass",new Qe(this));K(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={...Ae,...t},this.socketIoClass=new He(this)}on(t,e){this.eventEmitterClass.on(t,e)}emit(t,...e){this.socketIoClass.io&&this.socketIoClass.io.emit(t,...e)}connect(t){t===ne.MAIN&&this.findMainServer(),t===ne.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}}return z.CallStatusEnum=Le,z.CallTypeEnum=_e,z.ConnectionStatusEnum=se,z.DebugOption=te,z.DialerTypeEnum=Oe,z.DirectionEnum=Ie,z.DoNotCallMeStatusCodeEnum=Re,z.EventsEnum=A,z.ExtensionEventReasonEnum=pe,z.ExtensionHangupCauseEnum=Be,z.LoginType=Q,z.QueueEventReasonEnum=Ue,z.ServerListenerEventsEnum=fe,z.ServerParameter=ne,z.default=Ze,Object.defineProperties(z,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}}),z}({},ws,StorageLogger);
|
|
18
|
+
`,102:"\f",114:"\r"},q=function(){throw C=X=null,SyntaxError()},W=function(){for(var E,O,T,V,S,U=X,D=U.length;D>C;)switch(S=U.charCodeAt(C)){case 9:case 10:case 13:case 32:C++;break;case 123:case 125:case 91:case 93:case 58:case 44:return E=j?U.charAt(C):U[C],C++,E;case 34:for(E="@",C++;D>C;)if(S=U.charCodeAt(C),32>S)q();else if(S==92)switch(S=U.charCodeAt(++C)){case 92:case 34:case 47:case 98:case 116:case 110:case 102:case 114:E+=J[S],C++;break;case 117:for(O=++C,T=C+4;T>C;C++)S=U.charCodeAt(C),S>=48&&57>=S||S>=97&&102>=S||S>=65&&70>=S||q();E+=$("0x"+U.slice(O,C));break;default:q()}else{if(S==34)break;for(S=U.charCodeAt(C),O=C;S>=32&&S!=92&&S!=34;)S=U.charCodeAt(++C);E+=U.slice(O,C)}if(U.charCodeAt(C)==34)return C++,E;q();default:if(O=C,S==45&&(V=!0,S=U.charCodeAt(++C)),S>=48&&57>=S){for(S==48&&(S=U.charCodeAt(C+1),S>=48&&57>=S)&&q(),V=!1;D>C&&(S=U.charCodeAt(C),S>=48&&57>=S);C++);if(U.charCodeAt(C)==46){for(T=++C;D>T&&(S=U.charCodeAt(T),S>=48&&57>=S);T++);T==C&&q(),C=T}if(S=U.charCodeAt(C),S==101||S==69){for(S=U.charCodeAt(++C),(S==43||S==45)&&C++,T=C;D>T&&(S=U.charCodeAt(T),S>=48&&57>=S);T++);T==C&&q(),C=T}return+U.slice(O,C)}if(V&&q(),U.slice(C,C+4)=="true")return C+=4,!0;if(U.slice(C,C+5)=="false")return C+=5,!1;if(U.slice(C,C+4)=="null")return C+=4,null;q()}return"$"},ie=function(E){var O,T;if(E=="$"&&q(),typeof E=="string"){if((j?E.charAt(0):E[0])=="@")return E.slice(1);if(E=="["){for(O=[];E=W(),E!="]";T||(T=!0))T&&(E==","?(E=W(),E=="]"&&q()):q()),E==","&&q(),O.push(ie(E));return O}if(E=="{"){for(O={};E=W(),E!="}";T||(T=!0))T&&(E==","?(E=W(),E=="}"&&q()):q()),(E==","||typeof E!="string"||(j?E.charAt(0):E[0])!="@"||W()!=":")&&q(),O[E.slice(1)]=ie(W());return O}q()}return E},xe=function(E,O,T){var V=De(E,O,T);V===h?delete E[O]:E[O]=V},De=function(E,O,T){var V,S=E[O];if(typeof S=="object"&&S)if(d.call(S)==y)for(V=S.length;V--;)xe(S,V,T);else f(S,function(U){xe(S,U,T)});return T.call(E,O,S)};u.parse=function(E,O){var T,V;return C=0,X=""+E,T=ie(W()),W()!="$"&&q(),C=X=null,O&&d.call(O)==s?De((V={},V[""]=T,V),"",O):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 Ge=Object.assign({"./v1_3_7.js":Object.freeze(Object.defineProperty({__proto__:null,default:$e},Symbol.toStringTag,{value:"Module"}))}),ze=/v\d+_\d+_\d+/;function Je(a){return typeof a=="function"}const ue=Object.entries(Ge).reduce((a,t)=>{var o;const e=t[1].default,r=(o=t[0].match(ze))==null?void 0:o[0];return Je(e)&&r&&(a[r]=e()),a},{}),Ne=a=>{if(a in ue)return ue[a];throw new Error(`Socket version ${a} not found`)},We={...ue,getSocketVersion:Ne,makeSocketVersion:(a,...t)=>Ne(a)(...t)};var Le=(a=>(a.RINGING="Ringing",a.TALKING="Talking",a.DIALING="Dialing",a.HOLD="Hold",a))(Le||{}),_e=(a=>(a.INCOMING="Incoming",a.OUTGOING="Outgoing",a))(_e||{}),se=(a=>(a.CONNECTED="connected",a.DISCONNECTED="disconnected",a.TRYING_TO_CONNECT="tryingToConnect",a))(se||{}),Oe=(a=>(a.AUTOMATIC="Automatic",a.IVR="IVR",a))(Oe||{}),Ie=(a=>(a.INCOMINC="Incoming",a.OUTGOING="Outgoing",a.SPY="Spy",a.CLICK2CALL="Click2Call",a))(Ie||{}),Re=(a=>(a.RESPONSE_FROM_API_VALID="RESPONSE_FROM_API_VALID",a.RESPONSE_FROM_API_INVALID="RESPONSE_FROM_API_INVALID",a))(Re||{}),A=(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))(A||{}),pe=(a=>(a.NEWCALL="NEWCALL",a.ANSWER="ANSWER",a.HOLD="HOLD",a.UNHOLD="UNHOLD",a.HANGUP="HANGUP",a.USER_STATUS_UPDATE="userStatusUpdate",a))(pe||{}),Be=(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))(Be||{}),Ue=(a=>(a.ANSWER="ANSWER",a.ABANDONED="ABANDONED",a.EXIT="EXIT",a.JOIN="JOIN",a))(Ue||{});class re{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===pe.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 fe=(a=>(a.UPDATE_MONITORED_EXTENSIONS="updateMonitoredExtensions",a.KEEP_ALIVE="keepalive",a.SUBSCRIBE_VOICEBOT_CALL_UPDATES="subscribeVoicebotCallUpdates",a.UNSUBSCRIBE_VOICEBOT_CALL_UPDATES="unsubscribeVoicebotCallUpdates",a))(fe||{});class He{constructor(t){K(this,"io");K(this,"ioFunction");K(this,"lastEventTimestamp",new Date().getTime());K(this,"doReconnect",!0);K(this,"connectionState","disconnected");K(this,"keepAliveInterval");K(this,"reconnectTimeout");K(this,"networkReconnectTimeout");K(this,"reconnectionTime",Ae.reconnectionDelay);K(this,"maxReconnectionDelay",120);K(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(ne.NEXT)},500)}getSocketIoFunction(t){const e=t.split("v="),r="v".concat(e[e.length-1]).replaceAll(".","_");this.ioFunction=We.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(A.ONLINE_STATUS_EVENT,{attemptToConnect:c,connectionStatus:se.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(fe.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(),oe.clearSessionStorage()}initSocketEvents(){this.io&&(this.io.removeAllListeners(),this.io.on(A.LOGIN_SUCCESS,t=>this.onLoginSuccessEvent(t,A.LOGIN_SUCCESS)).on(A.QUEUE_EVENT,t=>this.onQueueEvent(t,A.QUEUE_EVENT)).on(A.EXTENSION_EVENT,t=>this.onExtensionEvent(t,A.EXTENSION_EVENT)).on(A.DIALER_EVENT,t=>this.onDialerEvent(t,A.DIALER_EVENT)).on(A.LOGIN_STATUS,t=>this.onLoginStatusEvent(t,A.LOGIN_STATUS)).on(A.ALL_EXTENSION_STATUS,t=>this.onAllExtensionStatus(t,A.ALL_EXTENSION_STATUS)).on(A.ALL_DIALER_STATUS,t=>this.onAllDialerStatus(t,A.ALL_DIALER_STATUS)).on(A.KEEP_ALIVE_RESPONSE,t=>this.onKeepAliveResponse(t)).on(A.EXTENSIONS_UPDATED,t=>this.onExtensionsUpdatedEvent(t,A.EXTENSIONS_UPDATED)).on(A.CONNECT,()=>this.onConnect()).on(A.DISCONNECT,t=>this.onDisconnect(t)).on(A.CONNECT_ERROR_EVENT,t=>this.onConnectError(t)).on(A.ALL_VOICEBOTS_STATUS,t=>this.onAllVoicebotsStatus(t,A.ALL_VOICEBOTS_STATUS)).on(A.VOICEBOT_EVENT,t=>this.onVoicebotEvent(t,A.VOICEBOT_EVENT)).on(A.VOICEBOT_SUBSCRIBED_TO_CALL,t=>this.onVoicebotSubscribedToCall(t,A.VOICEBOT_SUBSCRIBED_TO_CALL)).on(A.VOICEBOT_SUBSCRIBE_TO_CALL_FAILED,t=>this.onVoicebotSubscribeToCallFailed(t,A.VOICEBOT_SUBSCRIBE_TO_CALL_FAILED)).on(A.VOICEBOT_INITIAL_CALL_HISTORY,t=>this.onVoicebotInitialCallHistory(t,A.VOICEBOT_INITIAL_CALL_HISTORY)).on(A.VOICEBOT_UNSUBSCRIBED_FROM_CALL,t=>this.onVoicebotUnsubscribedFromCall(t,A.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,re.mapQueueEvent(t))}onExtensionEvent(t,e){this.updateEventTimestamp();const r=re.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=re.mapVoicebotEvent(t);this.eventsSdkClass.loggerClass.eventLog(e,t),this.eventsSdkClass.eventEmitterClass.emit(e,r)}onAllVoicebotsStatus(t,e){this.updateEventTimestamp();const r=re.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=re.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,re.mapLoginStatusEvent(t))}onAllExtensionStatus(t,e){this.updateEventTimestamp();const r=re.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(A.ONLINE_STATUS_EVENT,{connectionStatus:se.CONNECTED}),this.eventsSdkClass.loggerClass.start().then(()=>{this.eventsSdkClass.loggerClass.sdkConnectionSuccess()})}scheduleReconnect(){!this.doReconnect||this.reconnectTimeout||(this.eventsSdkClass.eventEmitterClass.emit(A.ONLINE_STATUS_EVENT,{connectionStatus:se.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(ne.NEXT)},this.reconnectionTime*1e3))}onDisconnect(t){if(this.connectionState="disconnected",this.eventsSdkClass.loggerClass.sdkDisconnect([t]),!this.doReconnect){this.eventsSdkClass.eventEmitterClass.emit(A.ONLINE_STATUS_EVENT,{connectionStatus:se.DISCONNECTED});return}this.closeAllConnections(),this.scheduleReconnect()}onConnectError(t){this.connectionState="disconnected",this.eventsSdkClass.loggerClass.sdkAttemptToConnectError(t),this.doReconnect?this.scheduleReconnect():this.eventsSdkClass.eventEmitterClass.emit(A.ONLINE_STATUS_EVENT,{connectionStatus:se.DISCONNECTED})}async destroy(){this.doReconnect=!1,this.networkCleanup.forEach(t=>t()),await this.closeAllConnections()}}class Ye{constructor(t){K(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 P({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 P.LevelEnum.INFO:this.storageLogger.log(t);break;case P.LevelEnum.DEBUG:this.storageLogger.debug(t);break;case P.LevelEnum.WARNING:this.storageLogger.warn(t);break;case P.LevelEnum.ERROR:this.storageLogger.error(t)}else t.Level===P.LevelEnum.INFO?console.log(t):t.Level===P.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:P.ActionNameEnum.WSCONNECT,isShowClient:!1,Status:"Connection established",StatusCode:200,Level:P.LevelEnum.INFO,LogType:P.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:P.ActionNameEnum.WSCONNECT,isShowClient:!1,Status:"Connection closed",StatusCode:200,Level:P.LevelEnum.INFO,LogType:P.LogTypeEnum.INFO})}sdkAttemptToConnect(t){this.log({Message:`${this.eventsSdkClass.options.loggerConfig.system} is trying to connect to WS server ${t}`,ActionName:P.ActionNameEnum.WSCONNECT,isShowClient:!1,Status:"Switching Protocols",StatusCode:101,Level:P.LevelEnum.INFO,LogType:P.LogTypeEnum.INFO})}sdkAttemptToConnectError(t){this.log({Message:`${t}`,ActionName:P.ActionNameEnum.WSCONNECT,isShowClient:!1,Status:"Connection error",StatusCode:500,Level:P.LevelEnum.ERROR,LogType:P.LogTypeEnum.ERROR})}loginError(t,e,r,o){this.log({Message:`External login request error with the login type ${t} ${t===Q.TOKEN?r:o}`,ActionName:P.ActionNameEnum.WSCONNECT,isShowClient:!1,Status:"External login error",StatusCode:e||400,Level:P.LevelEnum.ERROR,LogType:P.LogTypeEnum.ERROR})}getSettingsError(t,e){this.log({Message:`Get settings error with token ${t}, error: ${e}`,ActionName:P.ActionNameEnum.WSCONNECT,isShowClient:!1,Status:"Get settings error",StatusCode:400,Level:P.LevelEnum.ERROR,LogType:P.LogTypeEnum.ERROR})}refreshTokenError(t,e,r){this.log({Message:`Refresh token error with old refresh token ${t}, url: ${e}, error: ${r}`,ActionName:P.ActionNameEnum.WSCONNECT,isShowClient:!1,Status:"Get settings error",StatusCode:400,Level:P.LevelEnum.ERROR,LogType:P.LogTypeEnum.ERROR})}keepAliveEmit(){this.log({Message:`Keep alive event emitted with this token: ${this.eventsSdkClass.authClass.token}`,ActionName:P.ActionNameEnum.WSCONNECT,isShowClient:!1,Level:P.LevelEnum.INFO,LogType:P.LogTypeEnum.INFO})}keepAliveResponse(t){this.log({Message:`Keep alive response: ${JSON.stringify(t)}`,ActionName:P.ActionNameEnum.WSCONNECT,isShowClient:!1,Status:"Successful",StatusCode:200,Level:P.LevelEnum.INFO,LogType:P.LogTypeEnum.INFO})}eventLog(t,e){const r={[te.FULL]:[],[te.BOOTSTRAP]:[A.LOGIN_STATUS,A.LOGIN_SUCCESS,A.ALL_EXTENSION_STATUS,A.ALL_DIALER_STATUS],[te.DEBUG_EXTENSIONS]:[A.ALL_EXTENSION_STATUS,A.EXTENSION_EVENT,A.EXTENSIONS_UPDATED],[te.DEBUG_DIALER]:[A.ALL_DIALER_STATUS,A.DIALER_EVENT],[te.DEBUG_QUEUE]:[A.QUEUE_EVENT]};this.eventsSdkClass.options.debugOption&&(r[this.eventsSdkClass.options.debugOption].includes(t)||this.eventsSdkClass.options.debugOption===te.FULL)&&this.log({Message:`Event name: ${t}`,Body:{...this.getStaticData(),...e},ActionName:P.ActionNameEnum.WSCONNECT,isShowClient:!1,Status:"Successful",Level:P.LevelEnum.DEBUG,LogType:P.LogTypeEnum.INFO})}getStaticData(){return{SocketId:this.eventsSdkClass.socketIoClass&&this.eventsSdkClass.socketIoClass.io?this.eventsSdkClass.socketIoClass.io.id:""}}}class Qe{constructor(t){K(this,"listeners",{[A.ALL_EXTENSION_STATUS]:[],[A.ALL_DIALER_STATUS]:[],[A.ALL_USERS_STATUS]:[],[A.ALL_VOICEBOTS_STATUS]:[],[A.QUEUE_EVENT]:[],[A.EXTENSION_EVENT]:[],[A.DIALER_EVENT]:[],[A.LOGIN_SUCCESS]:[],[A.LOGIN_STATUS]:[],[A.KEEP_ALIVE_RESPONSE]:[],[A.ONLINE_STATUS_EVENT]:[],[A.EXTENSIONS_UPDATED]:[],[A.VOICEBOT_SUBSCRIBED_TO_CALL]:[],[A.VOICEBOT_SUBSCRIBE_TO_CALL_FAILED]:[],[A.VOICEBOT_INITIAL_CALL_HISTORY]:[],[A.VOICEBOT_UNSUBSCRIBED_FROM_CALL]:[],[A.VOICEBOT_EVENT]:[]});K(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 Ze{constructor(t){K(this,"options");K(this,"servers",[]);K(this,"URLList",[]);K(this,"server");K(this,"URL");K(this,"socket");K(this,"mainServer");K(this,"alreadyAttemptedOtherServers",[]);K(this,"authClass",new Xe(this));K(this,"socketIoClass");K(this,"loggerClass",new Ye(this));K(this,"eventEmitterClass",new Qe(this));K(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={...Ae,...t},this.socketIoClass=new He(this)}on(t,e){this.eventEmitterClass.on(t,e)}emit(t,...e){this.socketIoClass.io&&this.socketIoClass.io.emit(t,...e)}connect(t){t===ne.MAIN&&this.findMainServer(),t===ne.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}}return z.CallStatusEnum=Le,z.CallTypeEnum=_e,z.ConnectionStatusEnum=se,z.DebugOption=te,z.DialerTypeEnum=Oe,z.DirectionEnum=Ie,z.DoNotCallMeStatusCodeEnum=Re,z.EventsEnum=A,z.ExtensionEventReasonEnum=pe,z.ExtensionHangupCauseEnum=Be,z.LoginType=Q,z.QueueEventReasonEnum=Ue,z.ServerListenerEventsEnum=fe,z.ServerParameter=ne,z.default=Ze,Object.defineProperties(z,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}}),z}({},ws,StorageLogger);
|
|
19
19
|
//# sourceMappingURL=voicenter-events-sdk.iife.js.map
|