@voicenter-team/opensips-js 1.0.14 → 1.0.16

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/build/index.d.ts CHANGED
@@ -12,6 +12,9 @@ export interface InnerState {
12
12
  activeCalls: {
13
13
  [key: string]: ICall;
14
14
  };
15
+ extendedCalls: {
16
+ [key: string]: ICall;
17
+ };
15
18
  activeRooms: {
16
19
  [key: number]: IRoom;
17
20
  };
@@ -45,6 +48,7 @@ declare class OpenSIPSJS extends UA {
45
48
  private readonly options;
46
49
  private readonly newRTCSessionEventName;
47
50
  private readonly activeCalls;
51
+ private readonly extendedCalls;
48
52
  private _currentActiveRoomId;
49
53
  private _callAddingInProgress;
50
54
  private state;
package/build/index.js CHANGED
@@ -26,7 +26,6 @@ const STORAGE_KEYS = {
26
26
  SELECTED_INPUT_DEVICE: 'selectedInputDevice',
27
27
  SELECTED_OUTPUT_DEVICE: 'selectedOutputDevice'
28
28
  };
29
- const activeCalls = {};
30
29
  class OpenSIPSJS extends UA_1.default {
31
30
  constructor(options) {
32
31
  const configuration = Object.assign(Object.assign({}, options.configuration), { sockets: options.socketInterfaces.map(sock => new jssip_1.default.WebSocketInterface(sock)) });
@@ -34,10 +33,12 @@ class OpenSIPSJS extends UA_1.default {
34
33
  this.initialized = false;
35
34
  this.newRTCSessionEventName = 'newRTCSession';
36
35
  this.activeCalls = {};
36
+ this.extendedCalls = {};
37
37
  this.state = {
38
38
  isMuted: false,
39
39
  isAutoAnswer: false,
40
40
  activeCalls: {},
41
+ extendedCalls: {},
41
42
  availableMediaDevices: [],
42
43
  selectedMediaDevices: {
43
44
  input: 'default',
@@ -115,7 +116,7 @@ class OpenSIPSJS extends UA_1.default {
115
116
  }
116
117
  set speakerVolume(value) {
117
118
  this.state.speakerVolume = value;
118
- Object.values(activeCalls).forEach((call) => {
119
+ Object.values(this.state.extendedCalls).forEach((call) => {
119
120
  if (call.audioTag) {
120
121
  call.audioTag.volume = value;
121
122
  }
@@ -248,7 +249,7 @@ class OpenSIPSJS extends UA_1.default {
248
249
  if (!validation_regex.test(value)) {
249
250
  throw new Error('Not allowed character in DTMF input');
250
251
  }
251
- const call = activeCalls[callId];
252
+ const call = this.state.extendedCalls[callId];
252
253
  call.sendDTMF(value);
253
254
  }
254
255
  doMute(value) {
@@ -260,7 +261,7 @@ class OpenSIPSJS extends UA_1.default {
260
261
  return super.sendMessage(`sip:${target}@${this.sipDomain}`, body, options);
261
262
  }
262
263
  doCallHold({ callId, toHold, automatic }) {
263
- const call = activeCalls[callId];
264
+ const call = this.state.extendedCalls[callId];
264
265
  call._automaticHold = automatic !== null && automatic !== void 0 ? automatic : false;
265
266
  if (toHold) {
266
267
  call.hold();
@@ -276,7 +277,7 @@ class OpenSIPSJS extends UA_1.default {
276
277
  }).forEach(call => this.callTerminate(call._id));
277
278
  }
278
279
  callAnswer(callId) {
279
- const call = activeCalls[callId];
280
+ const call = this.state.extendedCalls[callId];
280
281
  this._cancelAllOutgoingUnanswered();
281
282
  call.answer(this.sipOptions);
282
283
  this.updateCall(call);
@@ -305,7 +306,11 @@ class OpenSIPSJS extends UA_1.default {
305
306
  }
306
307
  _addCall(value, emitEvent = true) {
307
308
  this.state.activeCalls = Object.assign(Object.assign({}, this.state.activeCalls), { [value._id]: (0, audio_helper_1.simplifyCallObject)(value) });
308
- activeCalls[value._id] = value;
309
+ /*this.state.extendedCalls = {
310
+ ...this.state.extendedCalls,
311
+ [value._id]: value
312
+ }*/
313
+ this.state.extendedCalls[value._id] = value;
309
314
  if (emitEvent) {
310
315
  this.emit('changeActiveCalls', this.state.activeCalls);
311
316
  }
@@ -316,6 +321,7 @@ class OpenSIPSJS extends UA_1.default {
316
321
  isTransferring: false,
317
322
  isMerging: false
318
323
  } });
324
+ this.emit('changeCallStatus', this.state.callStatus);
319
325
  }
320
326
  _updateCallStatus(value) {
321
327
  const prevStatus = Object.assign({}, this.state.callStatus[value.callId]);
@@ -330,11 +336,13 @@ class OpenSIPSJS extends UA_1.default {
330
336
  newStatus.isMerging = value.isMerging;
331
337
  }
332
338
  this.state.callStatus = Object.assign(Object.assign({}, this.state.callStatus), { [value.callId]: Object.assign({}, newStatus) });
339
+ this.emit('changeCallStatus', this.state.callStatus);
333
340
  }
334
341
  _removeCallStatus(callId) {
335
342
  const callStatusCopy = Object.assign({}, this.state.callStatus);
336
343
  delete callStatusCopy[callId];
337
344
  this.state.callStatus = Object.assign({}, callStatusCopy);
345
+ this.emit('changeCallStatus', this.state.callStatus);
338
346
  }
339
347
  _addRoom(value) {
340
348
  this.state.activeRooms = Object.assign(Object.assign({}, this.state.activeRooms), { [value.roomId]: value });
@@ -356,7 +364,7 @@ class OpenSIPSJS extends UA_1.default {
356
364
  if (Object.keys(this.getActiveCalls).length === 0) {
357
365
  return;
358
366
  }
359
- const callsInCurrentRoom = Object.values(activeCalls).filter(call => call.roomId === this.currentActiveRoomId);
367
+ const callsInCurrentRoom = Object.values(this.state.extendedCalls).filter(call => call.roomId === this.currentActiveRoomId);
360
368
  if (callsInCurrentRoom.length === 1) {
361
369
  Object.values(callsInCurrentRoom).forEach(call => {
362
370
  const processedStream = (0, audio_helper_1.processAudioVolume)(stream, this.microphoneInputLevel);
@@ -381,7 +389,7 @@ class OpenSIPSJS extends UA_1.default {
381
389
  return;
382
390
  }
383
391
  this.selectedOutputDevice = dId;
384
- const activeCallList = Object.values(activeCalls);
392
+ const activeCallList = Object.values(this.state.extendedCalls);
385
393
  if (activeCallList.length === 0) {
386
394
  return;
387
395
  }
@@ -409,7 +417,7 @@ class OpenSIPSJS extends UA_1.default {
409
417
  if (roomId === undefined) {
410
418
  return;
411
419
  }
412
- if (Object.values(activeCalls).filter(call => call.roomId === roomId).length === 0) {
420
+ if (Object.values(this.state.extendedCalls).filter(call => call.roomId === roomId).length === 0) {
413
421
  this.removeRoom(roomId);
414
422
  if (this.currentActiveRoomId === roomId) {
415
423
  this.currentActiveRoomId = undefined;
@@ -434,7 +442,7 @@ class OpenSIPSJS extends UA_1.default {
434
442
  if (roomId === undefined) {
435
443
  return;
436
444
  }
437
- const callsInRoom = Object.values(activeCalls).filter(call => call.roomId === roomId);
445
+ const callsInRoom = Object.values(this.state.extendedCalls).filter(call => call.roomId === roomId);
438
446
  // Let`s take care on the audio output first and check if passed room is our selected room
439
447
  if (this.currentActiveRoomId === roomId) {
440
448
  callsInRoom.forEach(call => {
@@ -547,7 +555,7 @@ class OpenSIPSJS extends UA_1.default {
547
555
  }
548
556
  }
549
557
  muteCaller(callId, value) {
550
- const call = activeCalls[callId];
558
+ const call = this.state.extendedCalls[callId];
551
559
  if (call && call.connection.getReceivers().length) {
552
560
  call.localMuted = value;
553
561
  call.connection.getReceivers().forEach((receiver) => {
@@ -558,7 +566,7 @@ class OpenSIPSJS extends UA_1.default {
558
566
  }
559
567
  }
560
568
  callTerminate(callId) {
561
- const call = activeCalls[callId];
569
+ const call = this.state.extendedCalls[callId];
562
570
  if (call._status !== 8) {
563
571
  call.terminate();
564
572
  }
@@ -567,10 +575,8 @@ class OpenSIPSJS extends UA_1.default {
567
575
  if (target.toString().length === 0) {
568
576
  return console.error('Target must be passed');
569
577
  }
570
- const call = activeCalls[callId];
571
- console.log('callTransfer', call);
578
+ const call = this.state.extendedCalls[callId];
572
579
  if (!call._is_confirmed && !call._is_canceled) {
573
- console.log('refer', `sip:${target}@${this.sipDomain}`);
574
580
  call.refer(`sip:${target}@${this.sipDomain}`);
575
581
  return;
576
582
  }
@@ -579,7 +585,7 @@ class OpenSIPSJS extends UA_1.default {
579
585
  this.updateCall(call);
580
586
  }
581
587
  callMerge(roomId) {
582
- const callsInRoom = Object.values(activeCalls).filter((call) => call.roomId === roomId);
588
+ const callsInRoom = Object.values(this.state.extendedCalls).filter((call) => call.roomId === roomId);
583
589
  if (callsInRoom.length !== 2)
584
590
  return;
585
591
  const firstCall = callsInRoom[0];
@@ -707,12 +713,15 @@ class OpenSIPSJS extends UA_1.default {
707
713
  _removeCall(value) {
708
714
  const stateActiveCallsCopy = Object.assign({}, this.state.activeCalls);
709
715
  delete stateActiveCallsCopy[value];
710
- delete activeCalls[value];
716
+ // delete activeCalls[value]
711
717
  this.state.activeCalls = Object.assign({}, stateActiveCallsCopy);
718
+ const stateExtendedCallsCopy = Object.assign({}, this.state.extendedCalls);
719
+ delete stateExtendedCallsCopy[value];
720
+ this.state.extendedCalls = Object.assign({}, stateExtendedCallsCopy);
712
721
  this.emit('changeActiveCalls', this.state.activeCalls);
713
722
  }
714
723
  _activeCallListRemove(call) {
715
- const callRoomIdToConfigure = activeCalls[call._id].roomId;
724
+ const callRoomIdToConfigure = this.state.extendedCalls[call._id].roomId;
716
725
  this._removeCall(call._id);
717
726
  this.roomReconfigure(callRoomIdToConfigure);
718
727
  }
@@ -732,7 +741,7 @@ class OpenSIPSJS extends UA_1.default {
732
741
  this._stopCallTimer(session.id);
733
742
  this._removeCallStatus(session.id);
734
743
  this._removeCallMetrics(session.id);
735
- if (!Object.keys(activeCalls).length) {
744
+ if (!Object.keys(this.state.extendedCalls).length) {
736
745
  this.isMuted = false;
737
746
  }
738
747
  });
@@ -751,7 +760,7 @@ class OpenSIPSJS extends UA_1.default {
751
760
  this._stopCallTimer(session.id);
752
761
  this._removeCallStatus(session.id);
753
762
  this._removeCallMetrics(session.id);
754
- if (!Object.keys(activeCalls).length) {
763
+ if (!Object.keys(this.state.extendedCalls).length) {
755
764
  this.isMuted = false;
756
765
  }
757
766
  });
@@ -768,14 +777,46 @@ class OpenSIPSJS extends UA_1.default {
768
777
  this.setCurrentActiveRoomId(roomId);
769
778
  }
770
779
  }
771
- setInitialized() {
772
- this.initialized = true;
773
- this.emit('ready', true);
780
+ setInitialized(value) {
781
+ this.initialized = value;
782
+ this.emit('ready', value);
774
783
  }
775
784
  start() {
785
+ this.on('connecting', (res) => {
786
+ console.log('ON connecting', res);
787
+ });
788
+ this.on('connected', (res) => {
789
+ console.log('ON connected', res);
790
+ });
791
+ this.on('disconnected', (res) => {
792
+ console.log('ON disconnected', res);
793
+ });
794
+ this.on('registered', (res) => {
795
+ this.setInitialized(true);
796
+ console.log('ON registered', res);
797
+ });
798
+ this.on('unregistered', (res) => {
799
+ this.setInitialized(false);
800
+ console.log('ON unregistered', res);
801
+ });
802
+ this.on('registrationFailed', (res) => {
803
+ console.log('ON registrationFailed', res);
804
+ });
805
+ this.on('registrationExpiring', (res) => {
806
+ console.log('ON registrationExpiring', res);
807
+ });
808
+ this.on('newMessage', (res) => {
809
+ console.log('ON newMessage', res);
810
+ });
811
+ this.on('sipEvent', (res) => {
812
+ console.log('ON sipEvent', res);
813
+ });
814
+ this.on('newOptions', (res) => {
815
+ console.log('ON newOptions', res);
816
+ });
776
817
  this.on(this.newRTCSessionEventName, this.newRTCSessionCallback.bind(this));
777
818
  super.start();
778
- this.setInitialized();
819
+ //this.setInitialized()
779
820
  //this.setDefaultMediaDevices()
780
821
  this.setMediaDevices(true);
781
822
  return this;
@@ -863,8 +904,8 @@ class OpenSIPSJS extends UA_1.default {
863
904
  }
864
905
  callChangeRoom({ callId, roomId }) {
865
906
  return __awaiter(this, void 0, void 0, function* () {
866
- const oldRoomId = activeCalls[callId].roomId;
867
- activeCalls[callId].roomId = roomId;
907
+ const oldRoomId = this.state.extendedCalls[callId].roomId;
908
+ this.state.extendedCalls[callId].roomId = roomId;
868
909
  yield this.setCurrentActiveRoomId(roomId);
869
910
  return Promise.all([
870
911
  this.roomReconfigure(oldRoomId),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@voicenter-team/opensips-js",
3
- "version": "1.0.14",
3
+ "version": "1.0.16",
4
4
  "description": "The JS package for opensips",
5
5
  "default": "src/index.ts",
6
6
  "main": "build/index.js",
@@ -1,4 +1,4 @@
1
- import { ICall, RoomChangeEmitType } from '@/types/rtc'
1
+ import { ICall, RoomChangeEmitType, ICallStatus } from '@/types/rtc'
2
2
  import { UAEventMap } from 'jssip/lib/UA'
3
3
 
4
4
  export type readyListener = (value: boolean) => void
@@ -17,6 +17,7 @@ export type changeOriginalStreamListener = (value: MediaStream) => void
17
17
  export type addRoomListener = (value: RoomChangeEmitType) => void
18
18
  export type updateRoomListener = (value: RoomChangeEmitType) => void
19
19
  export type removeRoomListener = (value: RoomChangeEmitType) => void
20
+ export type changeCallStatusListener = (event: { [key: string]: ICallStatus }) => void
20
21
 
21
22
  export interface OpenSIPSEventMap extends UAEventMap {
22
23
  ready: readyListener
@@ -35,6 +36,7 @@ export interface OpenSIPSEventMap extends UAEventMap {
35
36
  addRoom: addRoomListener
36
37
  updateRoom: updateRoomListener
37
38
  removeRoom: removeRoomListener
39
+ changeCallStatus: changeCallStatusListener
38
40
  }
39
41
 
40
42
  export type ListenersKeyType = keyof OpenSIPSEventMap