@voicenter-team/events-sdk 0.0.66 → 0.0.67

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.
@@ -1,82 +1,34 @@
1
+ import { DebouncedFuncLeading } from 'lodash';
1
2
  import { io } from 'socket.io-client';
2
- import { LoggerDataPartial } from '@voicenter-team/socketio-storage-logger';
3
- import { LoggerOptions } from '@voicenter-team/socketio-storage-logger';
4
3
  import { Socket as Socket_2 } from 'socket.io-client';
5
- import StorageLogger from '@voicenter-team/socketio-storage-logger';
6
4
 
7
5
  export declare type ActiveRoomListener = (event: number | undefined) => void
8
6
 
9
7
  export declare type addRoomListener = (value: string) => void
10
8
 
11
- declare type AllDialersStatusEvent = {
12
- dialers: Array<Dialer>;
13
- /**
14
- * 0 - Connection was establishing successfully.
15
- */
16
- errorCode?: number;
17
- /**
18
- * “Ok” - Connection was establishing successfully.
19
- */
20
- errorDesc?: string;
21
- /**
22
- * Server time at the moment of the event
23
- */
24
- serverTime: number;
25
- /**
26
- * Difference in time between server and client
27
- */
28
- serverTimeOffset: number;
29
- };
30
-
31
- export declare type AllDialersStatusEventSDK = EventTypeData<EventsEnum.ALL_DIALER_STATUS>
32
-
33
- declare type AllExtensionStatusEvent = {
34
- /**
35
- * 0 - Connection was establishing successfully.
36
- */
37
- errorCode?: number;
38
- /**
39
- * “Ok” - Connection was establishing successfully.
40
- */
41
- errorDesc?: string;
42
- extensions: Array<Extension>;
43
- /**
44
- * Server time at the moment of the event
45
- */
46
- servertime: number;
47
- /**
48
- * Difference in time between server and client
49
- */
50
- servertimeoffset: number;
51
- };
52
-
53
- declare interface AllExtensionStatusEventExtended extends Omit<AllExtensionStatusEvent, 'extensions'> {
54
- extensions: Array<ExtensionSDK>
9
+ /**
10
+ * Data structure for all dialers status event.
11
+ */
12
+ declare interface AllDialersStatusEvent extends CommonEventProperties {
13
+ // Array of Dialer objects
14
+ dialers: Dialer[]
15
+ }
16
+
17
+ /**
18
+ * Data structure for all extension status event.
19
+ */
20
+ declare interface AllExtensionStatusEvent extends CommonEventProperties {
21
+ // Array of Extension objects
22
+ extensions: Extension[]
55
23
  }
56
24
 
57
- export declare type AllExtensionStatusEventSDK = EventTypeData<EventsEnum.ALL_EXTENSION_STATUS>
58
-
59
- declare type AllUsersStatusEvent = {
60
- users: Array<User>;
61
- /**
62
- * 0 - Connection was establishing successfully.
63
- */
64
- errorCode?: number;
65
- /**
66
- * “Ok” - Connection was establishing successfully.
67
- */
68
- errorDesc?: string;
69
- /**
70
- * Server time at the moment of the event
71
- */
72
- serverTime: number;
73
- /**
74
- * Difference in time between server and client
75
- */
76
- serverTimeOffset: number;
77
- };
78
-
79
- export declare type AllUsersStatusEventSDK = EventTypeData<EventsEnum.ALL_USERS_STATUS>
25
+ /**
26
+ * Data structure for all users status event.
27
+ */
28
+ declare interface AllUsersStatusEvent extends CommonEventProperties {
29
+ // Array of User objects
30
+ users: User[]
31
+ }
80
32
 
81
33
  declare class AuthClass {
82
34
  private readonly eventsSdkClass;
@@ -84,33 +36,30 @@ declare class AuthClass {
84
36
  private delay;
85
37
  lastLoginTimestamp: number | undefined;
86
38
  token: string | undefined;
87
- private refreshToken;
88
- private tokenExpiry;
89
39
  private storageKey;
90
- login(): Promise<Partial<LoginSessionData> | undefined>;
40
+ login(options: EventsSdkOptions): Promise<void>;
91
41
  updateLastLoginTimestamp(): void;
92
42
  private checkLoginStatus;
93
43
  private userLoginFunction;
94
- onLoginResponse(loginSessionData: Partial<LoginSessionData>): void;
44
+ private onLoginResponse;
95
45
  handleTokenExpiry(): void;
96
46
  private externalLogin;
97
47
  private getSettings;
98
- private externalRefreshToken;
99
- private normalizeLoginType;
48
+ private refreshToken;
100
49
  }
101
50
 
102
51
  export declare type CallAddingProgressListener = (callId: string | undefined) => void
103
52
 
104
- export declare enum CallStatusEnum {
105
- RINGING = 'Ringing',
106
- TALKING = 'Talking',
107
- DIALING = 'Dialing',
108
- HOLD = 'Hold',
53
+ declare enum CallStatusEnum {
54
+ RINGING = "Ringing",
55
+ TALKING = "Talking",
56
+ DIALING = "Dialing",
57
+ HOLD = "Hold"
109
58
  }
110
59
 
111
- export declare enum CallTypeEnum {
112
- INCOMING = 'Incoming',
113
- OUTGOING = 'Outgoing',
60
+ declare enum CallTypeEnum {
61
+ INCOMING = "Incoming",
62
+ OUTGOING = "Outgoing"
114
63
  }
115
64
 
116
65
  export declare type changeActiveCallsListener = (event: { [key: string]: string }) => void
@@ -127,129 +76,67 @@ export declare type changeIsMutedListener = (value: boolean) => void
127
76
 
128
77
  export declare type changeMuteWhenJoinListener = (value: boolean) => void
129
78
 
130
- export declare enum ConnectionStatusEnum {
131
- CONNECTED = 'connected',
132
- DISCONNECTED = 'disconnected',
133
- TRYING_TO_CONNECT = 'tryingToConnect',
134
- }
135
-
136
- declare interface CurrentCallEnded extends CurrentCallUTCExtended {
137
- duration: number
138
- }
139
-
140
- declare interface CurrentCallUTCExtended extends ExtensionCall {
141
- callStarted_UTC: number
142
- callStarted_UTC_CLIENT: number
143
- callAnswered_UTC: number
144
- callAnswered_UTC_CLIENT: number
79
+ /**
80
+ * Base structure for all event types, containing common properties.
81
+ */
82
+ declare interface CommonEventProperties {
83
+ // Error code, 0 indicates no error
84
+ errorCode?: number
85
+ // Description of the error, "Ok" indicates successful connection
86
+ errorDesc?: string
87
+ // Server time at the moment of the event
88
+ serverTime: number
89
+ // Difference in time between server and client
90
+ serverTimeOffset: number
91
+ }
92
+
93
+ export declare interface CustomData {
94
+ DoNotCallMeStatus?: string,
95
+ DoNotCallMeStatusCode?: DoNotCallMeStatusCodeEnum,
96
+ DoNotCallMeTokenName?: string,
97
+ DoNotCallMetransactionId?: string,
98
+ IsDoNotCallMe?: string
99
+ }
100
+
101
+ export declare interface Dialer {
102
+ campaignID: number,
103
+ name: string,
104
+ typeID: number,
105
+ type: DialerType,
106
+ code: string,
107
+ calls: unknown,
108
+ statistics: unknown
145
109
  }
146
110
 
147
- declare type CustomData = {
148
- /**
149
- * Is do not call me
150
- */
151
- IsDoNotCallMe?: string;
152
- /**
153
- * Do not call me status
154
- */
155
- DoNotCallMeStatus?: string;
156
- /**
157
- * Do not call me token name
158
- */
159
- DoNotCallMeTokenName?: string;
160
- DoNotCallMeStatusCode?: DoNotCallMeStatusCodeEnum;
161
- /**
162
- * Do not call me transaction id
163
- */
164
- DoNotCallMetransactionId?: string;
165
- };
166
-
167
- export declare type CustomDataSDK = CustomData
168
-
169
- declare type Dialer = {
170
- /**
171
- * Code
172
- */
173
- code: string;
174
- /**
175
- * Name
176
- */
177
- name: string;
178
- type: DialerTypeEnum;
179
- /**
180
- * Calls
181
- */
182
- calls: string;
183
- /**
184
- * Type id
185
- */
186
- typeID: number;
187
- /**
188
- * Campaign id
189
- */
190
- campaignID: number;
191
- /**
192
- * Statistics
193
- */
194
- statistics: string;
195
- };
196
-
197
- declare type DialerEvent = {
198
- data: Dialer;
199
- /**
200
- * callerID
201
- */
202
- callerID?: string;
203
- /**
204
- * Event name (dialer)
205
- */
206
- eventName: string;
207
- /**
208
- * dialStatus
209
- */
210
- dialStatus?: string;
211
- /**
212
- * ivrUniqueId
213
- */
214
- ivrUniqueId?: string;
215
- /**
216
- * TelephonyServerTime
217
- */
218
- telephonyServerTime?: number;
219
- };
220
-
221
- export declare type DialerEventSDK = EventTypeData<EventsEnum.DIALER_EVENT>
222
-
223
- export declare type DialerSDK = Dialer
224
-
225
- export declare enum DialerTypeEnum {
226
- AUTOMATIC = 'Automatic',
227
- IVR = 'IVR',
111
+ /**
112
+ * Data structure for dialer event.
113
+ */
114
+ declare interface DialerEvent extends CommonEventProperties {
115
+ data: Dialer
116
+ eventName: EventNameEnum.DIALER
117
+ //reason: ExtensionEventReasonEnum // TODO: do research for dialer 'reason' prop
118
+ telephonyServerTime?: number
119
+ callerID?: string
120
+ ivrUniqueId?: string
121
+ dialStatus?: string
122
+ //cause?: ExtensionHangupCauseEnum // TODO: do research for dialer 'cause' prop
228
123
  }
229
124
 
230
- export declare enum DirectionEnum {
231
- INCOMINC = 'Incoming',
232
- OUTGOING = 'Outgoing',
233
- SPY = 'Spy',
234
- CLICK2CALL = 'Click2Call',
125
+ declare enum DialerType {
126
+ AUTOMATIC = "Automatic",
127
+ IVR = "IVR"
235
128
  }
236
129
 
237
- export declare enum DoNotCallMeStatusCodeEnum {
238
- RESPONSE_FROM_API_VALID = 'RESPONSE_FROM_API_VALID',
239
- RESPONSE_FROM_API_INVALID = 'RESPONSE_FROM_API_INVALID',
130
+ declare enum DirectionEnum {
131
+ INCOMING = "Incoming",
132
+ OUTGOING = "Outgoing",
133
+ SPY = "Spy",
134
+ CLICK2CALL = "Click2call"
240
135
  }
241
136
 
242
- declare type Error_2 = {
243
- };
244
-
245
- export declare type ErrorSDK = Error_2
246
-
247
- /**
248
- * This type defines a map where each key is an event name, and the value is an array of callback functions associated with that event.
249
- * This structure is used to manage event listeners for different events
250
- */
251
- export declare type EventCallbackListenersMap = {
252
- [K in EventTypeNames]: Array<EventSpecificCallback<K>>
137
+ declare enum DoNotCallMeStatusCodeEnum {
138
+ RESPONSE_FROM_API_VALID = "RESPONSE_FROM_API_VALID",
139
+ RESPONSE_FROM_API_INVALID = "RESPONSE_FROM_API_INVALID"
253
140
  }
254
141
 
255
142
  /**
@@ -257,17 +144,14 @@ export declare type EventCallbackListenersMap = {
257
144
  * Each key is an event type name, and the value is a function that takes the specific event data type as an argument.
258
145
  * This registry is used to manage and invoke event-specific callbacks.
259
146
  */
260
- export declare type EventCallbackRegistry = {
147
+ declare type EventCallbackRegistry = {
261
148
  [K in EventTypeNames]: (data: EventDataMap[K]) => void
262
149
  }
263
150
 
264
- export declare type EventData = EventDataMapExtended[EventsEnum]
265
-
266
151
  /**
267
152
  * Mapping of event names to their respective data structures.
268
- * The data structures that socket io will send us
269
153
  */
270
- export declare interface EventDataMap {
154
+ declare interface EventDataMap {
271
155
  [EventsEnum.ALL_EXTENSION_STATUS]: AllExtensionStatusEvent
272
156
  [EventsEnum.ALL_DIALER_STATUS]: AllDialersStatusEvent
273
157
  [EventsEnum.ALL_USERS_STATUS]: AllUsersStatusEvent
@@ -278,145 +162,112 @@ export declare interface EventDataMap {
278
162
  [EventsEnum.LOGIN_STATUS]: LoginStatusEvent
279
163
  [EventsEnum.KEEP_ALIVE_RESPONSE]: KeepAliveResponseEvent
280
164
  [EventsEnum.ONLINE_STATUS_EVENT]: OnlineStatusEvent
281
- [EventsEnum.EXTENSIONS_UPDATED]: ExtensionsUpdated
282
165
  }
283
166
 
284
167
  /**
285
- * Mapping of event names to their respective data structures.
286
- * The data structures that we will send to the end user, here we can modify the type of events data
168
+ * All the eventNames that can be received from the server. Exists only in EXTENSION_EVENT and QueueEvent
287
169
  */
288
- export declare interface EventDataMapExtended extends EventDataMap {
289
- [EventsEnum.EXTENSION_EVENT]: ExtensionEventExtended
290
- [EventsEnum.ALL_EXTENSION_STATUS]: AllExtensionStatusEventExtended
291
- [EventsEnum.QUEUE_EVENT]: QueueEventUTCExtended
292
- }
293
-
294
- declare class EventEmitterClass {
295
- private readonly eventsSdkClass;
296
- private listeners;
297
- private allListeners;
298
- constructor(eventsSdkClass: EventsSdkClass);
299
- on(event: unknown, callback: unknown): void;
300
- off<T extends EventTypeNames>(event: T, callback: EventSpecificCallback<T>): void;
301
- off(event: '*', callback: (data: GenericEventWrapper) => void): void;
302
- emit<T extends EventTypeNames>(event: T, data: EventTypeData<T>): void;
170
+ declare enum EventNameEnum {
171
+ EXTENSION = "extension",
172
+ QUEUE = "queue",
173
+ DIALER = "dialer"
303
174
  }
304
175
 
176
+ /**
177
+ * All events that can be received from the server.
178
+ */
305
179
  export declare enum EventsEnum {
306
- ALL_DIALER_STATUS = 'AllDialersStatus',
307
- ALL_EXTENSION_STATUS = 'AllExtensionsStatus',
308
- ALL_USERS_STATUS = 'AllUsersStatus',
309
- CONNECT = 'connect',
310
- DISCONNECT = 'disconnect',
311
- CONNECT_ERROR_EVENT = 'connect_error',
312
- EXTENSION_EVENT = 'ExtensionEvent',
313
- KEEP_ALIVE = 'keepalive',
314
- KEEP_ALIVE_RESPONSE = 'keepaliveResponse',
315
- LOGIN_STATUS = 'loginStatus',
316
- LOGIN_SUCCESS = 'loginSuccess',
317
- QUEUE_EVENT = 'QueueEvent',
318
- ONLINE_STATUS_EVENT = 'onlineStatusEvent',
319
- DIALER_EVENT = 'DialerEvent',
320
- EXTENSIONS_UPDATED = 'ExtensionsUpdated',
180
+ ALL_DIALER_STATUS = "AllDialersStatus",
181
+ ALL_EXTENSION_STATUS = "AllExtensionsStatus",
182
+ ALL_USERS_STATUS = "AllUsersStatus",
183
+ CONNECT = "connect",
184
+ DISCONNECT = "disconnect",
185
+ EXTENSION_EVENT = "ExtensionEvent",
186
+ KEEP_ALIVE = "keepalive",
187
+ KEEP_ALIVE_RESPONSE = "keepaliveResponse",
188
+ LOGIN_STATUS = "loginStatus",
189
+ LOGIN_SUCCESS = "loginSuccess",
190
+ QUEUE_EVENT = "QueueEvent",
191
+ ONLINE_STATUS_EVENT = "onlineStatusEvent",
192
+ DIALER_EVENT = "DialerEvent"
321
193
  }
322
194
 
323
195
  /**
324
196
  * This is a generic type for callback functions used in event handling.
325
197
  * It takes a generic event name and defines a callback function that receives wrapped socket event data for that specific event.
326
198
  */
327
- export declare type EventSpecificCallback<T extends EventTypeNames> = (data: WrappedSocketEvent<T>) => void
199
+ declare type EventSpecificCallback<T extends EventTypeNames> = (data: WrappedSocketEvent<T>) => void
328
200
 
329
201
  declare class EventsSdkClass {
330
- readonly options: EventsSdkOptionsMain & EventsSdkOptionsBase;
202
+ constructor(options: EventsSdkOptions);
203
+ private argumentOptions;
204
+ readonly options: EventsSdkOptions;
331
205
  servers: Server[];
332
- URLList: string[];
333
- server: Server | undefined;
334
- URL: string | undefined;
335
- socket: SocketTyped | undefined;
336
- private mainServer;
337
- private alreadyAttemptedOtherServers;
206
+ server: Server;
207
+ socket: any | undefined;
338
208
  authClass: AuthClass;
339
209
  socketIoClass: SocketIoClass;
340
- loggerClass: LoggerClass;
341
- eventEmitterClass: EventEmitterClass;
342
- constructor(options: EventsSdkOptionsClient);
210
+ reconnectOptions: ReconnectOptions;
211
+ retryConnection: DebouncedFuncLeading<(server?: ServerParameter, skipLogin?: boolean) => void>;
212
+ private listeners;
213
+ private allListeners;
343
214
  on<T extends EventTypeNames>(event: T, callback: EventSpecificCallback<T>): void;
344
215
  on(event: '*', callback: (data: GenericEventWrapper) => void): void;
345
- emit<T extends ServerEmitEventTypeNames>(event: T, ...args: Parameters<ServerEmitEventCallbackRegistry[T]>): void;
346
- connect(serverParameter: ServerParameter): void;
216
+ off<T extends EventTypeNames>(event: T, callback: EventSpecificCallback<T>): void;
217
+ off(event: '*', callback: (data: GenericEventWrapper) => void): void;
218
+ emit<T extends EventTypeNames>(event: T, data: EventTypeData<T>): void;
219
+ connect(server?: ServerParameter, skipLogin?: boolean): void;
347
220
  disconnect(): void;
348
221
  clearKeepAliveInterval(): void;
349
- private findMainServer;
350
- private findNextServer;
222
+ private findCurrentServer;
223
+ private findNextAvailableServer;
224
+ private findMaxPriorityServer;
225
+ private findMinPriorityServer;
226
+ getServerWithHighestPriority(servers: Server[]): Server;
351
227
  init(): Promise<boolean>;
352
- getCircularReplacer: () => (key: string, value: object) => object | undefined;
353
- getCurrentMonitorServer(): Server | undefined;
228
+ private getServers;
354
229
  }
355
230
  export default EventsSdkClass;
356
231
 
357
- export declare interface EventsSdkOptionsBase {
358
- loginType: LoginType;
232
+ export declare interface EventsSdkOptions {
359
233
  isNewStack?: boolean;
234
+ servers: Server[];
235
+ loginUrl: string;
236
+ fallbackServer: Server;
237
+ refreshTokenUrl: string;
238
+ refreshToken?: string;
239
+ token: string;
240
+ tokenExpiry?: Date;
241
+ loginType: LoginType;
360
242
  forceNew?: boolean;
361
- servers?: Server[];
362
- reconnectionDelay?: number;
243
+ reconnectionDelay: number;
244
+ reconnectionDelayMax?: number;
245
+ maxReconnectAttempts: number;
363
246
  timeout?: number;
364
- keepAliveTimeout?: number;
365
- protocol?: string;
247
+ keepAliveTimeout: number;
248
+ idleInterval?: number;
249
+ protocol: string;
250
+ transports?: string[];
251
+ upgrade?: boolean;
252
+ serverFetchStrategy?: string;
253
+ serverType?: number;
366
254
  useLogger?: boolean;
367
- loggerSocketConnection?: Socket_2;
255
+ loggerSocketConnection?: string;
368
256
  loggerServer?: string;
369
- loggerConfig?: LoggerOptions;
370
- loggerConnectOptions?: LoggerConnectOptions;
371
- storageLoggerInstance?: StorageLogger;
372
- }
373
-
374
- export declare type EventsSdkOptionsClient = EventsSdkOptionsUserLogin | EventsSdkOptionsTokenLogin | EventsSdkOptionsOldStack | EventsSdkOptionsNewStack;
375
-
376
- export declare type EventsSdkOptionsMain = Required<Pick<EventsSdkOptionsOldStack | EventsSdkOptionsNewStack, 'isNewStack' | 'loginUrl' | 'refreshTokenUrl' | 'forceNew' | 'protocol' | 'timeout' | 'loggerConfig' | 'keepAliveTimeout' | 'reconnectionDelay' | 'loggerServer' | 'useLogger'>> & {
377
- getSettingsUrl?: string;
378
- token?: string;
379
- email?: string;
380
- password?: string;
381
- storageLoggerInstance?: StorageLogger;
257
+ loggerConfig?: LoggerConfig;
382
258
  loggerConnectOptions?: LoggerConnectOptions;
383
- loggerSocketConnection?: Socket_2;
384
- };
385
-
386
- declare type EventsSdkOptionsNewStack = EventsSdkOptionsBase & {
387
- isNewStack: true;
388
- loginUrl?: string;
389
- refreshTokenUrl?: string;
390
- getSettingsUrl: string;
391
- };
392
-
393
- declare type EventsSdkOptionsOldStack = EventsSdkOptionsBase & {
394
- isNewStack?: false;
395
- loginUrl?: string;
396
- refreshTokenUrl?: string;
397
- };
398
-
399
- declare type EventsSdkOptionsTokenLogin = EventsSdkOptionsBase & {
400
- loginType: LoginType.TOKEN;
401
- token: string;
402
- };
403
-
404
- declare type EventsSdkOptionsUserLogin = EventsSdkOptionsBase & {
405
- loginType: LoginType.USER;
406
259
  email: string;
407
260
  password: string;
408
- };
261
+ username: string;
262
+ }
409
263
 
410
- /**
411
- * The structure of event data for a specific event type.
412
- */
413
- export declare type EventTypeData<T extends EventsEnum> = EventDataMapExtended[T]
264
+ declare type EventTypeData<T extends EventsEnum> = EventDataMap[T]
414
265
 
415
266
  /**
416
267
  * Represents the set of all possible event type names as keys from the EventDataMap.
417
268
  * This type is used to define event listeners and handlers.
418
269
  */
419
- export declare type EventTypeNames = keyof EventDataMap
270
+ declare type EventTypeNames = keyof EventDataMap
420
271
 
421
272
  /**
422
273
  * Represents Event Types in Enum
@@ -457,267 +308,96 @@ export declare enum EventTypesEnum {
457
308
  * This type represents a mapping of listener event names to their corresponding wrapped socket event data structures.
458
309
  * Each key is an event name, and the value is the wrapped socket event data for that event
459
310
  */
460
- export declare type EventWrappedSocketDataMap = {
311
+ declare type EventWrappedSocketDataMap = {
461
312
  [K in EventTypeNames]: WrappedSocketEvent<K>
462
313
  }
463
314
 
464
- declare type Extension = {
465
- calls: Array<ExtensionCall>;
466
- /**
467
- * Number
468
- */
469
- number: number;
470
- /**
471
- * User id
472
- */
473
- userID: number;
474
- summery: Summery;
475
- /**
476
- * User name
477
- */
478
- userName: string;
479
- /**
480
- * Account id
481
- */
482
- accountID: number;
483
- /**
484
- * Exten user
485
- */
486
- extenUser: string;
487
- /**
488
- * Peer status
489
- */
490
- peerStatus: string;
491
- currentCall?: ExtensionCall;
492
- /**
493
- * Online user id
494
- */
495
- onlineUserID: number;
496
- /**
497
- * Top account id
498
- */
499
- topAccountID: number;
500
- /**
501
- * Representative
502
- */
503
- representative: number;
504
- /**
505
- * Last call event epoch
506
- */
507
- lastCallEventEpoch: number;
508
- /**
509
- * Last hangup call epoch
510
- */
511
- lastHangupCallEpoch: number;
512
- /**
513
- * Representative status
514
- */
515
- representativeStatus: number;
516
- /**
517
- * Representative updated
518
- */
519
- representativeUpdated: number;
520
- /**
521
- * Last answered call event epoch
522
- */
523
- lastAnsweredCallEventEpoch: number;
524
- };
525
-
526
- declare type ExtensionCall = {
527
- /**
528
- * Ip
529
- */
530
- ip: string;
531
- /**
532
- * Did
533
- */
534
- did: string;
535
- /**
536
- * Ivr id
537
- */
538
- ivrid: string;
539
- /**
540
- * Channel
541
- */
542
- channel: string;
543
- /**
544
- * Is spyed
545
- */
546
- isSpyed?: boolean;
547
- /**
548
- * Queue id
549
- */
550
- queueID?: number;
551
- /**
552
- * Answered
553
- */
554
- answered: number;
555
- callType?: CallTypeEnum;
556
- /**
557
- * Channel 2
558
- */
559
- 'channel 2': string;
560
- direction: DirectionEnum;
561
- recording: Recording;
562
- /**
563
- * Caller name
564
- */
565
- callername: string;
566
- callstatus: CallStatusEnum;
567
- customdata: CustomData;
568
- /**
569
- * Is internal
570
- */
571
- isInternal: boolean;
572
- /**
573
- * Is opensips
574
- */
575
- isOpensips: boolean;
576
- /**
577
- * Blc server id
578
- */
579
- blcServerID: number;
580
- /**
581
- * Blc server id
582
- */
583
- blcServerId?: number;
584
- /**
585
- * Call started
586
- */
587
- callStarted: number;
588
- /**
589
- * Caller phone
590
- */
591
- callerphone: string;
592
- /**
593
- * Call answered
594
- */
595
- callAnswered: number;
596
- /**
597
- * Original caller id
598
- */
599
- originalCallerID?: string;
600
- /**
601
- * Actual dialed number
602
- */
603
- actualDialedNumber?: number;
604
- /**
605
- * Original caller name
606
- */
607
- originalCallerName?: string;
608
- /**
609
- * Outgoing caller name
610
- */
611
- outgoingcallername?: string;
612
- /**
613
- * Outgoing caller phone
614
- */
615
- outgoingcallerphone?: string;
616
- /**
617
- * Related ivr unique ids
618
- */
619
- relatedIvrUniqueIDs?: Array<string>;
620
- /**
621
- * Call duration interval
622
- */
623
- calldurationinterval: number;
624
- };
625
-
626
- export declare type ExtensionCallSDK = CurrentCallUTCExtended | CurrentCallEnded
627
-
628
- declare interface ExtensionCallsEnded extends ExtensionUTCExtended {
629
- currentCall?: CurrentCallEnded
630
- calls?: Array<CurrentCallUTCExtended>
631
- }
632
-
633
- declare interface ExtensionCallsUTCExtended extends ExtensionUTCExtended {
634
- currentCall?: CurrentCallUTCExtended
635
- calls?: Array<CurrentCallUTCExtended>
636
- }
637
-
638
- declare type ExtensionEvent = {
639
- data: Extension;
640
- cause?: ExtensionHangupCauseEnum;
641
- reason: ExtensionEventReasonEnum;
642
- /**
643
- * Caller id
644
- */
645
- callerID?: string;
646
- /**
647
- * Event name (extension)
648
- */
649
- eventName: string;
650
- /**
651
- * Dial status
652
- */
653
- dialStatus?: string;
654
- /**
655
- * Server time
656
- */
657
- servertime: number;
658
- /**
659
- * Ivr unique id
660
- */
661
- ivrUniqueId?: string;
662
- /**
663
- * Server time offset
664
- */
665
- servertimeoffset: number;
666
- /**
667
- * Telephony server time
668
- */
669
- telephonyServerTime?: number;
670
- };
671
-
672
- declare interface ExtensionEventEnded extends Omit<ExtensionEvent, 'reason' | 'data'> {
673
- reason: ExtensionEventReasonEnum.HANGUP
674
- data: ExtensionCallsEnded
675
- }
676
-
677
- declare type ExtensionEventExtended = ExtensionEventUTCExtended | ExtensionEventEnded
678
-
679
- export declare enum ExtensionEventReasonEnum {
680
- NEWCALL = 'NEWCALL',
681
- ANSWER = 'ANSWER',
682
- HOLD = 'HOLD',
683
- UNHOLD = 'UNHOLD',
684
- HANGUP = 'HANGUP',
685
- USER_STATUS_UPDATE = 'userStatusUpdate',
686
- }
687
-
688
- export declare type ExtensionEventSDK = EventTypeData<EventsEnum.EXTENSION_EVENT>
689
-
690
- declare interface ExtensionEventUTCExtended extends Omit<ExtensionEvent, 'reason' | 'data'> {
691
- reason: Exclude<ExtensionEventReasonEnum, ExtensionEventReasonEnum.HANGUP>
692
- data: ExtensionCallsUTCExtended
315
+ export declare interface Extension {
316
+ calls: ExtensionCall[],
317
+ userID: number,
318
+ userName: string,
319
+ number: number,
320
+ extenUser: string,
321
+ accountID: number,
322
+ topAccountID: number,
323
+ summery: Summery,
324
+ onlineUserID: number,
325
+ representative: number,
326
+ representativeStatus: number,
327
+ lastCallEventEpoch: number,
328
+ lastAnsweredCallEventEpoch: number,
329
+ lastHangupCallEpoch: number,
330
+ representativeUpdated: number,
331
+ peerStatus: unknown,
332
+ currentCall?: ExtensionCall,
333
+ }
334
+
335
+ export declare interface ExtensionCall {
336
+ callStarted: number,
337
+ calldurationinterval: number,
338
+ callAnswered: number,
339
+ answered: number,
340
+ callername: string,
341
+ callerphone: string,
342
+ outgoingcallername?: string,
343
+ outgoingcallerphone?: string,
344
+ callstatus: CallStatusEnum,
345
+ customdata: CustomData,
346
+ direction: DirectionEnum,
347
+ ivrid: string,
348
+ recording: Recording,
349
+ did: string,
350
+ relatedIvrUniqueIDs?: string[],
351
+ callType?: CallTypeEnum,
352
+ ip: string,
353
+ isInternal: boolean
354
+ blcServerID: number,
355
+ isOpensips: boolean,
356
+ channel: string,
357
+ channel2: string,
358
+ queueID?: number,
359
+ isSpyed?: boolean,
360
+ blcServerId?: number,
361
+ originalCallerID?: string,
362
+ originalCallerName?: string,
363
+ actualDialedNumber?: number
693
364
  }
694
365
 
695
- export declare enum ExtensionHangupCauseEnum {
696
- NORMAL_HANGUP = 'Normal hangup',
697
- USER_BUSY = 'User busy',
698
- CALL_REJECTED = 'Call Rejected',
699
- UNALLOCATED_NUMBER = 'Unallocated (unassigned) number',
700
- UNKNOWN = 'Unknown',
701
- NO_USER_RESPONDING = 'No user responding',
702
- USER_ALERTING = 'User alerting, no answer',
703
- ANSWERED_ELSEWHERE = 'Answered elsewhere',
366
+ /**
367
+ * Data structure for extension event.
368
+ */
369
+ declare interface ExtensionEvent extends CommonEventProperties {
370
+ data: Extension
371
+ eventName: EventNameEnum.EXTENSION
372
+ reason: ExtensionEventReasonEnum
373
+ telephonyServerTime?: number
374
+ callerID?: string
375
+ ivrUniqueId?: string
376
+ dialStatus?: string
377
+ cause?: ExtensionHangupCauseEnum
704
378
  }
705
379
 
706
- export declare type ExtensionSDK = ExtensionCallsUTCExtended | ExtensionCallsEnded
707
-
708
- declare type ExtensionsUpdated = string;
709
-
710
- export declare type ExtensionsUpdatedSDK = EventTypeData<EventsEnum.EXTENSIONS_UPDATED>
711
-
712
- declare interface ExtensionUTCExtended extends Extension {
713
- lastAnsweredCallEventEpoch_UTC: number
714
- lastAnsweredCallEventEpoch_UTC_CLIENT: number
715
- lastCallEventEpoch_UTC: number
716
- lastCallEventEpoch_UTC_CLIENT: number
717
- lastHangupCallEpoch_UTC: number
718
- lastHangupCallEpoch_UTC_CLIENT: number
719
- representativeUpdated_UTC: number
720
- representativeUpdated_UTC_CLIENT: number
380
+ /**
381
+ * All the reasons for the extension event, e.g. a new call is ringing or dialing from an extension.
382
+ */
383
+ declare enum ExtensionEventReasonEnum {
384
+ NEW_CALL = "NEWCALL",
385
+ ANSWER = "ANSWER",
386
+ HOLD = "HOLD",
387
+ UNHOLD = "UNHOLD",
388
+ HANGUP = "HANGUP",
389
+ USER_STATUS_UPDATE = "userStatusUpdate"
390
+ }
391
+
392
+ declare enum ExtensionHangupCauseEnum {
393
+ NORMAL_HANGUP = "Normal hangup",
394
+ USER_BUSY = "User busy",
395
+ CALL_REJECTED = "Call Rejected",
396
+ UNALLOCATED_NUMBER = "Unallocated (unassigned) number",
397
+ UNKNOWN = "Unknown",
398
+ NO_USER_RESPONDING = "No user responding",
399
+ USER_ALERTING = "User alerting, no answer",
400
+ ANSWERED_ELSEWHERE = "Answered elsewhere"
721
401
  }
722
402
 
723
403
  export declare interface ExternalLoginNewStackResponseData {
@@ -746,32 +426,14 @@ export declare interface ExternalLoginResponse<T> {
746
426
  * A generic type that represents the structure of any event data wrapped in a socket event format.
747
427
  * This type is used in the handling of all event types, providing a consistent structure for event data processing.
748
428
  */
749
- export declare type GenericEventWrapper = EventWrappedSocketDataMap[EventTypeNames]
750
-
751
- declare type KeepAliveResponseEvent = {
752
- /**
753
- * Is ok
754
- */
755
- isOk: boolean;
756
- /**
757
- * 0 - Connection was establishing successfully.
758
- */
759
- errorCode?: number;
760
- /**
761
- * “Ok” - Connection was establishing successfully.
762
- */
763
- errorDesc?: string;
764
- /**
765
- * Server time at the moment of the event
766
- */
767
- serverTime: number;
768
- /**
769
- * Difference in time between server and client
770
- */
771
- serverTimeOffset: number;
772
- };
773
-
774
- export declare type KeepAliveResponseEventSDK = EventTypeData<EventsEnum.KEEP_ALIVE_RESPONSE>
429
+ declare type GenericEventWrapper = EventWrappedSocketDataMap[EventTypeNames]
430
+
431
+ /**
432
+ * Data structure for keep alive response event.
433
+ */
434
+ declare interface KeepAliveResponseEvent extends CommonEventProperties {
435
+ isOk: boolean
436
+ }
775
437
 
776
438
  export declare type ListenerCallbackFnType<T extends ListenersKeyType> = OpenSIPSEventMap[T]
777
439
 
@@ -779,19 +441,10 @@ export declare type ListenersCallbackFnType = OpenSIPSEventMap[ListenersKeyType]
779
441
 
780
442
  export declare type ListenersKeyType = keyof OpenSIPSEventMap
781
443
 
782
- declare class LoggerClass {
783
- private readonly eventsSdkClass;
784
- constructor(eventsSdkClass: EventsSdkClass);
785
- private storageLogger;
786
- init(): void;
787
- log(data: LoggerDataPartial): void;
788
- sdkInitializedLog(): void;
789
- }
790
-
791
444
  export declare interface LoggerConfig {
792
445
  logToConsole?: boolean;
793
446
  overloadGlobalConsole?: boolean;
794
- system: string;
447
+ namespace?: string;
795
448
  socketEmitInterval?: number;
796
449
  }
797
450
 
@@ -799,9 +452,7 @@ export declare interface LoggerConnectOptions {
799
452
  reconnection?: boolean;
800
453
  reconnectionDelay?: number;
801
454
  reconnectionAttempts?: number;
802
- perMessageDeflate?: {
803
- threshold: number;
804
- };
455
+ perMessageDeflate?: boolean;
805
456
  upgrade?: boolean;
806
457
  transports?: string[];
807
458
  debug?: boolean;
@@ -810,68 +461,29 @@ export declare interface LoggerConnectOptions {
810
461
  export declare interface LoginSessionData extends Settings, ExternalLoginNewStackResponseData, Socket {}
811
462
 
812
463
  export declare interface LoginSessionPayload {
813
- token?: string,
814
- email?: string,
815
- password?: string
464
+ token: string,
465
+ email: string,
466
+ password: string
467
+ }
468
+
469
+ /**
470
+ * Data structure for login status event.
471
+ */
472
+ declare interface LoginStatusEvent extends CommonEventProperties {
473
+ // Array of Queue objects
474
+ queues: Queue[]
816
475
  }
817
476
 
818
- declare type LoginStatusEvent = {
819
- queues: Array<Queue>;
820
- /**
821
- * 0 - Connection was establishing successfully.
822
- */
823
- errorCode?: number;
824
- /**
825
- * “Ok” - Connection was establishing successfully.
826
- */
827
- errorDesc?: string;
828
- /**
829
- * Server time at the moment of the event
830
- */
831
- serverTime: number;
832
- /**
833
- * Difference in time between server and client
834
- */
835
- serverTimeOffset: number;
836
- };
837
-
838
- export declare type LoginStatusEventSDK = EventTypeData<EventsEnum.LOGIN_STATUS>
839
-
840
- declare type LoginSuccessEvent = {
841
- /**
842
- * 0 - Connection was establishing successfully.
843
- */
844
- errorCode?: number;
845
- /**
846
- * “Ok” - Connection was establishing successfully.
847
- */
848
- errorDesc?: string;
849
- /**
850
- * Server time at the moment of the event
851
- */
852
- serverTime: number;
853
- /**
854
- * Difference in time between server and client
855
- */
856
- serverTimeOffset: number;
857
- };
858
-
859
- export declare type LoginSuccessEventSDK = EventTypeData<EventsEnum.LOGIN_SUCCESS>
860
-
861
- export declare enum LoginType {
477
+ declare type LoginSuccessEvent = CommonEventProperties
478
+
479
+ declare enum LoginType {
862
480
  USER = "User",
863
481
  TOKEN = "Token"
864
482
  }
865
483
 
866
- declare type OnlineStatusEvent = {
867
- /**
868
- * which server sdk trying to connect
869
- */
870
- attemptToConnect?: string;
871
- connectionStatus: ConnectionStatusEnum;
872
- };
873
-
874
- export declare type OnlineStatusEventSDK = EventTypeData<EventsEnum.ONLINE_STATUS_EVENT>
484
+ declare interface OnlineStatusEvent {
485
+ isSocketConnected: boolean
486
+ }
875
487
 
876
488
  export declare interface OpenSIPSEventMap {
877
489
  ready: readyListener
@@ -891,141 +503,62 @@ export declare interface OpenSIPSEventMap {
891
503
  changeCallStatus: changeCallStatusListener
892
504
  }
893
505
 
894
- declare type Queue = {
895
- Calls: Array<QueueCall>;
896
- /**
897
- * User id
898
- */
899
- UserId?: number;
900
- /**
901
- * Queue id
902
- */
903
- QueueID: number;
904
- /**
905
- * Queue name
906
- */
907
- QueueName: string;
908
- /**
909
- * Answered agent
910
- */
911
- AnsweredAgent?: string;
912
- /**
913
- * Distributor id
914
- */
915
- DistributorID?: number;
916
- /**
917
- * Is distributed queue
918
- */
919
- IsDistributedQueue?: boolean;
920
- };
921
-
922
- declare type QueueCall = {
923
- /**
924
- * Ivr id
925
- */
926
- ivrid: string;
927
- /**
928
- * Caller id
929
- */
930
- CallerId: string;
931
- /**
932
- * Caller name
933
- */
934
- CallerNme: string;
935
- /**
936
- * Ivr unique id
937
- */
938
- IvrUniqueID: string;
939
- /**
940
- * Join timestamp
941
- */
942
- JoinTimeStamp: number;
943
- /**
944
- * Is distributed queue
945
- */
946
- isDistributedQueue?: boolean;
947
- /**
948
- * Call duration interval
949
- */
950
- calldurationinterval: number;
951
- };
952
-
953
- export declare interface QueueCallSDK extends QueueCall {
954
- JoinTimeStamp_UTC: number
955
- JoinTimeStamp_UTC_CLIENT: number
506
+ export declare interface Queue {
507
+ QueueID: number,
508
+ QueueName: string,
509
+ Calls: QueueCall[],
510
+ UserId?: number,
511
+ DistributorID?: number,
512
+ IsDistributedQueue?: boolean,
513
+ AnsweredAgent?: string,
956
514
  }
957
515
 
958
- declare type QueueEvent = {
959
- data: Queue;
960
- reason: QueueEventReasonEnum;
961
- /**
962
- * Event name (queue)
963
- */
964
- eventName: string;
965
- /**
966
- * Server time
967
- */
968
- servertime: number;
969
- /**
970
- * Ivr unique id
971
- */
972
- ivrUniqueId: string;
973
- /**
974
- * Server time offset
975
- */
976
- servertimeoffset: number;
977
- /**
978
- * Telephony server time
979
- */
980
- telephonyServerTime: number;
981
- };
982
-
983
- export declare enum QueueEventReasonEnum {
984
- ANSWER = 'ANSWER',
985
- ABANDONED = 'ABANDONED',
986
- EXIT = 'EXIT',
987
- JOIN = 'JOIN',
516
+ export declare interface QueueCall {
517
+ CallerID: string,
518
+ CallerName: string,
519
+ IvrUniqueID: string,
520
+ JoinTimeStamp: number,
521
+ calldurationinterval: number,
522
+ ivrid: string,
523
+ isDistributedQueue?: boolean
988
524
  }
989
525
 
990
- export declare type QueueEventSDK = EventTypeData<EventsEnum.QUEUE_EVENT>
991
-
992
- declare interface QueueEventUTCExtended extends Omit<QueueEvent, 'data'> {
993
- data: QueueSDK
526
+ /**
527
+ * Data structure for queue event.
528
+ */
529
+ declare interface QueueEvent extends CommonEventProperties {
530
+ eventName: EventNameEnum.QUEUE,
531
+ reason: QueueEventReasonEnum,
532
+ telephonyServerTime: number,
533
+ ivrUniqueId: string,
534
+ data: Queue
994
535
  }
995
536
 
996
- export declare interface QueueSDK extends Omit<Queue, 'Calls'> {
997
- Calls?: Array<QueueCallSDK>
537
+ declare enum QueueEventReasonEnum {
538
+ ANSWER = "ANSWER",
539
+ ABANDONED = "ABANDONED",
540
+ EXIT = "EXIT",
541
+ JOIN = "JOIN"
998
542
  }
999
543
 
1000
544
  export declare type readyListener = (value: boolean) => void
1001
545
 
1002
- declare type Recording = {
1003
- /**
1004
- * Is muted
1005
- */
1006
- IsMuted: number;
1007
- /**
1008
- * Options
1009
- */
1010
- Options: string;
1011
- /**
1012
- * Filename
1013
- */
1014
- Filename: string;
1015
- /**
1016
- * Approximate url
1017
- */
1018
- ApproximateURL: string;
1019
- };
1020
-
1021
- export declare type RecordingSDK = Recording
1022
-
1023
- export declare type removeRoomListener = (value: string) => void
546
+ export declare interface ReconnectOptions {
547
+ retryCount: number;
548
+ maxReconnectAttempts: number;
549
+ reconnectionDelay: number;
550
+ minReconnectionDelay: number;
551
+ maxReconnectionDelay: number;
552
+ }
1024
553
 
1025
- declare type Response_2 = {
1026
- };
554
+ export declare interface Recording {
555
+ Filename: string,
556
+ Options: string,
557
+ ApproximateURL: string,
558
+ IsMuted: number
559
+ }
1027
560
 
1028
- export declare type ResponseSDK = Response_2
561
+ export declare type removeRoomListener = (value: string) => void
1029
562
 
1030
563
  export declare type RoomDeletedListener = (roomId: number) => void
1031
564
 
@@ -1036,33 +569,10 @@ export declare interface Server {
1036
569
  Version: string;
1037
570
  }
1038
571
 
1039
- export declare type ServerEmitEventCallbackRegistry = {
1040
- [K in ServerEmitEventTypeNames]: (data: ServerEmitEventDataMap[K]) => void
1041
- }
1042
-
1043
- /**
1044
- * Mapping of event names to their respective data structures.
1045
- * The data structures that we can send to the server
1046
- */
1047
- export declare interface ServerEmitEventDataMap {
1048
- [ServerListenerEventsEnum.UPDATE_MONITORED_EXTENSIONS]: UpdateMonitoredExtensionsPayload
1049
- [ServerListenerEventsEnum.KEEP_ALIVE]: string
1050
- }
1051
-
1052
- /**
1053
- * Represents the set of all possible event type names as keys from the ServerEmitEventDataMap.
1054
- * This type is used to define event emitters and data.
1055
- */
1056
- export declare type ServerEmitEventTypeNames = keyof ServerEmitEventDataMap
1057
-
1058
- export declare enum ServerListenerEventsEnum {
1059
- UPDATE_MONITORED_EXTENSIONS = "updateMonitoredExtensions",
1060
- KEEP_ALIVE = "keepAlive"
1061
- }
1062
-
1063
572
  export declare enum ServerParameter {
1064
- MAIN = "main",
1065
- NEXT = "next"
573
+ DEFAULT = "default",
574
+ NEXT = "next",
575
+ PREVIOUS = "previous"
1066
576
  }
1067
577
 
1068
578
  export declare enum ServerTypesEnum {
@@ -1103,68 +613,37 @@ declare class SocketIoClass {
1103
613
  private connected;
1104
614
  getSocketIoFunction(Client: string): void;
1105
615
  initSocketConnection(): void;
616
+ initSocketEvents(): void;
1106
617
  clearKeepAliveInterval(): void;
1107
618
  initKeepAlive(): void;
1108
619
  closeAllConnections(): void;
1109
- initSocketEvents(): void;
1110
- private onLoginSuccessEvent;
1111
- private onQueueEvent;
1112
- private onExtensionEvent;
1113
- private onDialerEvent;
1114
- private onLoginStatusEvent;
1115
- private onAllExtensionStatus;
1116
- private onAllDialerStatus;
1117
620
  private onKeepAliveResponse;
1118
- private onExtensionsUpdatedEvent;
1119
621
  private onConnect;
1120
622
  private onDisconnect;
1121
- private onConnectError;
1122
623
  }
1123
624
 
1124
- export declare type SocketTyped = Socket_2<EventCallbackRegistry, ServerEmitEventCallbackRegistry>
625
+ export declare type SocketTyped = Socket_2<EventCallbackRegistry, Record<EventsEnum, any>>
1125
626
 
1126
- declare type Summery = {
1127
- /**
1128
- * Representative
1129
- */
1130
- representative: string;
1131
- };
1132
-
1133
- export declare type SummerySDK = Summery
627
+ export declare interface Summery {
628
+ representative: string
629
+ }
1134
630
 
1135
631
  export declare type TestEventListener = (event: { test: string }) => void
1136
632
 
1137
633
  declare type TypedSocketIo = (...args: Parameters<typeof io>) => SocketTyped;
1138
634
 
1139
- export declare interface UpdateMonitoredExtensionsPayload {
1140
- extensionsString: string
1141
- }
1142
-
1143
635
  export declare type updateRoomListener = (value: string) => void
1144
636
 
1145
- declare type User = {
1146
- /**
1147
- * User id
1148
- */
1149
- userID: number;
1150
- /**
1151
- * User name
1152
- */
1153
- userName: string;
1154
- /**
1155
- * Account id
1156
- */
1157
- accountID: number;
1158
- };
1159
-
1160
- export declare type UserSDK = User
637
+ export declare interface User {
638
+ userID: number,
639
+ userName: string,
640
+ accountID: number
1161
641
 
1162
- /**
1163
- * The structure of received socket events.
1164
- */
1165
- export declare type WrappedSocketEvent<T extends EventsEnum> = {
642
+ }
643
+
644
+ declare type WrappedSocketEvent<T extends EventsEnum> = {
1166
645
  name: T
1167
- data: EventDataMapExtended[T]
646
+ data: EventDataMap[T]
1168
647
  }
1169
648
 
1170
649
  export { }