@voicenter-team/opensips-js 1.0.15 → 1.0.16
Sign up to get free protection for your applications and to get access to all the features.
- package/build/index.d.ts +4 -0
- package/build/index.js +64 -24
- package/package.json +1 -1
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(
|
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 =
|
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 =
|
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 =
|
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
|
-
|
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
|
}
|
@@ -359,7 +364,7 @@ class OpenSIPSJS extends UA_1.default {
|
|
359
364
|
if (Object.keys(this.getActiveCalls).length === 0) {
|
360
365
|
return;
|
361
366
|
}
|
362
|
-
const callsInCurrentRoom = Object.values(
|
367
|
+
const callsInCurrentRoom = Object.values(this.state.extendedCalls).filter(call => call.roomId === this.currentActiveRoomId);
|
363
368
|
if (callsInCurrentRoom.length === 1) {
|
364
369
|
Object.values(callsInCurrentRoom).forEach(call => {
|
365
370
|
const processedStream = (0, audio_helper_1.processAudioVolume)(stream, this.microphoneInputLevel);
|
@@ -384,7 +389,7 @@ class OpenSIPSJS extends UA_1.default {
|
|
384
389
|
return;
|
385
390
|
}
|
386
391
|
this.selectedOutputDevice = dId;
|
387
|
-
const activeCallList = Object.values(
|
392
|
+
const activeCallList = Object.values(this.state.extendedCalls);
|
388
393
|
if (activeCallList.length === 0) {
|
389
394
|
return;
|
390
395
|
}
|
@@ -412,7 +417,7 @@ class OpenSIPSJS extends UA_1.default {
|
|
412
417
|
if (roomId === undefined) {
|
413
418
|
return;
|
414
419
|
}
|
415
|
-
if (Object.values(
|
420
|
+
if (Object.values(this.state.extendedCalls).filter(call => call.roomId === roomId).length === 0) {
|
416
421
|
this.removeRoom(roomId);
|
417
422
|
if (this.currentActiveRoomId === roomId) {
|
418
423
|
this.currentActiveRoomId = undefined;
|
@@ -437,7 +442,7 @@ class OpenSIPSJS extends UA_1.default {
|
|
437
442
|
if (roomId === undefined) {
|
438
443
|
return;
|
439
444
|
}
|
440
|
-
const callsInRoom = Object.values(
|
445
|
+
const callsInRoom = Object.values(this.state.extendedCalls).filter(call => call.roomId === roomId);
|
441
446
|
// Let`s take care on the audio output first and check if passed room is our selected room
|
442
447
|
if (this.currentActiveRoomId === roomId) {
|
443
448
|
callsInRoom.forEach(call => {
|
@@ -550,7 +555,7 @@ class OpenSIPSJS extends UA_1.default {
|
|
550
555
|
}
|
551
556
|
}
|
552
557
|
muteCaller(callId, value) {
|
553
|
-
const call =
|
558
|
+
const call = this.state.extendedCalls[callId];
|
554
559
|
if (call && call.connection.getReceivers().length) {
|
555
560
|
call.localMuted = value;
|
556
561
|
call.connection.getReceivers().forEach((receiver) => {
|
@@ -561,7 +566,7 @@ class OpenSIPSJS extends UA_1.default {
|
|
561
566
|
}
|
562
567
|
}
|
563
568
|
callTerminate(callId) {
|
564
|
-
const call =
|
569
|
+
const call = this.state.extendedCalls[callId];
|
565
570
|
if (call._status !== 8) {
|
566
571
|
call.terminate();
|
567
572
|
}
|
@@ -570,7 +575,7 @@ class OpenSIPSJS extends UA_1.default {
|
|
570
575
|
if (target.toString().length === 0) {
|
571
576
|
return console.error('Target must be passed');
|
572
577
|
}
|
573
|
-
const call =
|
578
|
+
const call = this.state.extendedCalls[callId];
|
574
579
|
if (!call._is_confirmed && !call._is_canceled) {
|
575
580
|
call.refer(`sip:${target}@${this.sipDomain}`);
|
576
581
|
return;
|
@@ -580,7 +585,7 @@ class OpenSIPSJS extends UA_1.default {
|
|
580
585
|
this.updateCall(call);
|
581
586
|
}
|
582
587
|
callMerge(roomId) {
|
583
|
-
const callsInRoom = Object.values(
|
588
|
+
const callsInRoom = Object.values(this.state.extendedCalls).filter((call) => call.roomId === roomId);
|
584
589
|
if (callsInRoom.length !== 2)
|
585
590
|
return;
|
586
591
|
const firstCall = callsInRoom[0];
|
@@ -708,12 +713,15 @@ class OpenSIPSJS extends UA_1.default {
|
|
708
713
|
_removeCall(value) {
|
709
714
|
const stateActiveCallsCopy = Object.assign({}, this.state.activeCalls);
|
710
715
|
delete stateActiveCallsCopy[value];
|
711
|
-
delete activeCalls[value]
|
716
|
+
// delete activeCalls[value]
|
712
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);
|
713
721
|
this.emit('changeActiveCalls', this.state.activeCalls);
|
714
722
|
}
|
715
723
|
_activeCallListRemove(call) {
|
716
|
-
const callRoomIdToConfigure =
|
724
|
+
const callRoomIdToConfigure = this.state.extendedCalls[call._id].roomId;
|
717
725
|
this._removeCall(call._id);
|
718
726
|
this.roomReconfigure(callRoomIdToConfigure);
|
719
727
|
}
|
@@ -733,7 +741,7 @@ class OpenSIPSJS extends UA_1.default {
|
|
733
741
|
this._stopCallTimer(session.id);
|
734
742
|
this._removeCallStatus(session.id);
|
735
743
|
this._removeCallMetrics(session.id);
|
736
|
-
if (!Object.keys(
|
744
|
+
if (!Object.keys(this.state.extendedCalls).length) {
|
737
745
|
this.isMuted = false;
|
738
746
|
}
|
739
747
|
});
|
@@ -752,7 +760,7 @@ class OpenSIPSJS extends UA_1.default {
|
|
752
760
|
this._stopCallTimer(session.id);
|
753
761
|
this._removeCallStatus(session.id);
|
754
762
|
this._removeCallMetrics(session.id);
|
755
|
-
if (!Object.keys(
|
763
|
+
if (!Object.keys(this.state.extendedCalls).length) {
|
756
764
|
this.isMuted = false;
|
757
765
|
}
|
758
766
|
});
|
@@ -769,14 +777,46 @@ class OpenSIPSJS extends UA_1.default {
|
|
769
777
|
this.setCurrentActiveRoomId(roomId);
|
770
778
|
}
|
771
779
|
}
|
772
|
-
setInitialized() {
|
773
|
-
this.initialized =
|
774
|
-
this.emit('ready',
|
780
|
+
setInitialized(value) {
|
781
|
+
this.initialized = value;
|
782
|
+
this.emit('ready', value);
|
775
783
|
}
|
776
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
|
+
});
|
777
817
|
this.on(this.newRTCSessionEventName, this.newRTCSessionCallback.bind(this));
|
778
818
|
super.start();
|
779
|
-
this.setInitialized()
|
819
|
+
//this.setInitialized()
|
780
820
|
//this.setDefaultMediaDevices()
|
781
821
|
this.setMediaDevices(true);
|
782
822
|
return this;
|
@@ -864,8 +904,8 @@ class OpenSIPSJS extends UA_1.default {
|
|
864
904
|
}
|
865
905
|
callChangeRoom({ callId, roomId }) {
|
866
906
|
return __awaiter(this, void 0, void 0, function* () {
|
867
|
-
const oldRoomId =
|
868
|
-
|
907
|
+
const oldRoomId = this.state.extendedCalls[callId].roomId;
|
908
|
+
this.state.extendedCalls[callId].roomId = roomId;
|
869
909
|
yield this.setCurrentActiveRoomId(roomId);
|
870
910
|
return Promise.all([
|
871
911
|
this.roomReconfigure(oldRoomId),
|