@wazo/sdk 0.37.35 → 0.37.36
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/README.md +1 -0
- package/dist/wazo-sdk.js +2 -2
- package/esm/__tests__/api-client.test.js +7 -1
- package/esm/__tests__/web-rtc-client.test.js +7 -1
- package/esm/api/call-logd.js +1 -1
- package/esm/api/chatd.js +6 -0
- package/esm/api/confd.js +6 -0
- package/esm/api-client.js +7 -1
- package/esm/checker/Checker.js +7 -1
- package/esm/checker/checks/aor.js +7 -1
- package/esm/checker/checks/api.js +7 -1
- package/esm/checker/checks/index.js +7 -1
- package/esm/checker/checks/webrtc-transport.js +7 -1
- package/esm/checker/checks/webrtc.js +7 -1
- package/esm/domain/AdHocAPIConference.js +11 -1
- package/esm/domain/CallLog.js +1 -1
- package/esm/domain/CallSession.js +14 -0
- package/esm/domain/Features.js +7 -1
- package/esm/domain/Phone/CTIPhone.js +21 -1
- package/esm/domain/Phone/WebRTCPhone.js +42 -11
- package/esm/domain/Profile.js +6 -0
- package/esm/domain/__tests__/CallLog.test.js +5 -1
- package/esm/domain/__tests__/CallSession.test.js +14 -0
- package/esm/domain/__tests__/IndirectTransfer.test.js +14 -0
- package/esm/domain/__tests__/Profile.test.js +6 -0
- package/esm/domain/__tests__/Room.test.js +14 -0
- package/esm/domain/__tests__/Session.test.js +6 -0
- package/esm/index.js +59 -18
- package/esm/service/CallApi.js +7 -1
- package/esm/service/getApiClient.js +7 -1
- package/esm/simple/Auth.js +59 -18
- package/esm/simple/Configuration.js +59 -18
- package/esm/simple/Directory.js +7 -1
- package/esm/simple/Phone.js +59 -18
- package/esm/simple/index.js +59 -18
- package/esm/simple/room/LocalParticipant.js +59 -18
- package/esm/simple/room/Participant.js +59 -18
- package/esm/simple/room/RemoteParticipant.js +59 -18
- package/esm/simple/room/Room.js +59 -18
- package/esm/simple/room/SipRoom.js +59 -18
- package/esm/simple/room/Stream.js +59 -18
- package/esm/simple/room/__tests__/RemoteParticipant.test.js +59 -18
- package/esm/simple/utils.js +59 -18
- package/esm/web-rtc-client.js +7 -1
- package/lib/__tests__/api-client.test.js +7 -1
- package/lib/__tests__/web-rtc-client.test.js +7 -1
- package/lib/api/call-logd.js +1 -1
- package/lib/api/chatd.js +6 -0
- package/lib/api/confd.js +6 -0
- package/lib/api-client.js +7 -1
- package/lib/checker/Checker.js +7 -1
- package/lib/checker/checks/aor.js +7 -1
- package/lib/checker/checks/api.js +7 -1
- package/lib/checker/checks/index.js +7 -1
- package/lib/checker/checks/webrtc-transport.js +7 -1
- package/lib/checker/checks/webrtc.js +7 -1
- package/lib/domain/AdHocAPIConference.js +11 -1
- package/lib/domain/CallLog.js +1 -1
- package/lib/domain/CallSession.js +14 -0
- package/lib/domain/Features.js +7 -1
- package/lib/domain/Phone/CTIPhone.js +21 -1
- package/lib/domain/Phone/WebRTCPhone.js +42 -11
- package/lib/domain/Profile.js +6 -0
- package/lib/domain/__tests__/CallLog.test.js +5 -1
- package/lib/domain/__tests__/CallSession.test.js +14 -0
- package/lib/domain/__tests__/IndirectTransfer.test.js +14 -0
- package/lib/domain/__tests__/Profile.test.js +6 -0
- package/lib/domain/__tests__/Room.test.js +14 -0
- package/lib/domain/__tests__/Session.test.js +6 -0
- package/lib/index.js +59 -18
- package/lib/service/CallApi.js +7 -1
- package/lib/service/getApiClient.js +7 -1
- package/lib/simple/Auth.js +59 -18
- package/lib/simple/Configuration.js +59 -18
- package/lib/simple/Directory.js +7 -1
- package/lib/simple/Phone.js +59 -18
- package/lib/simple/index.js +59 -18
- package/lib/simple/room/LocalParticipant.js +59 -18
- package/lib/simple/room/Participant.js +59 -18
- package/lib/simple/room/RemoteParticipant.js +59 -18
- package/lib/simple/room/Room.js +59 -18
- package/lib/simple/room/SipRoom.js +59 -18
- package/lib/simple/room/Stream.js +59 -18
- package/lib/simple/room/__tests__/RemoteParticipant.test.js +59 -18
- package/lib/simple/utils.js +59 -18
- package/lib/web-rtc-client.js +7 -1
- package/package.json +1 -1
- package/src/domain/AdHocAPIConference.js +4 -0
- package/src/domain/CallLog.js +1 -1
- package/src/domain/CallSession.js +14 -0
- package/src/domain/Phone/WebRTCPhone.js +28 -11
- package/src/domain/Profile.js +6 -0
- package/src/domain/__tests__/CallLog.test.js +4 -0
- package/src/simple/Phone.js +6 -6
|
@@ -1071,6 +1071,7 @@ const LINE_STATE = {
|
|
|
1071
1071
|
|
|
1072
1072
|
|
|
1073
1073
|
|
|
1074
|
+
|
|
1074
1075
|
|
|
1075
1076
|
|
|
1076
1077
|
|
|
@@ -1107,6 +1108,7 @@ const LINE_STATE = {
|
|
|
1107
1108
|
|
|
1108
1109
|
|
|
1109
1110
|
|
|
1111
|
+
|
|
1110
1112
|
|
|
1111
1113
|
|
|
1112
1114
|
|
|
@@ -1138,6 +1140,7 @@ class Profile {
|
|
|
1138
1140
|
|
|
1139
1141
|
|
|
1140
1142
|
|
|
1143
|
+
|
|
1141
1144
|
|
|
1142
1145
|
|
|
1143
1146
|
|
|
@@ -1154,6 +1157,7 @@ class Profile {
|
|
|
1154
1157
|
lines: plain.lines.map(line => Line.parse(line)),
|
|
1155
1158
|
username: plain.username,
|
|
1156
1159
|
mobileNumber: plain.mobile_phone_number || '',
|
|
1160
|
+
ringSeconds: plain.ring_seconds,
|
|
1157
1161
|
forwards: [
|
|
1158
1162
|
ForwardOption.parse(plain.forwards.unconditional, FORWARD_KEYS.UNCONDITIONAL),
|
|
1159
1163
|
ForwardOption.parse(plain.forwards.noanswer, FORWARD_KEYS.NO_ANSWER),
|
|
@@ -1190,6 +1194,7 @@ class Profile {
|
|
|
1190
1194
|
switchboards,
|
|
1191
1195
|
agent,
|
|
1192
1196
|
status,
|
|
1197
|
+
ringSeconds,
|
|
1193
1198
|
sipLines,
|
|
1194
1199
|
callPickupTargetUsers,
|
|
1195
1200
|
onlineCallRecordEnabled,
|
|
@@ -1211,6 +1216,7 @@ class Profile {
|
|
|
1211
1216
|
this.status = status;
|
|
1212
1217
|
this.callPickupTargetUsers = callPickupTargetUsers;
|
|
1213
1218
|
this.onlineCallRecordEnabled = onlineCallRecordEnabled;
|
|
1219
|
+
this.ringSeconds = ringSeconds;
|
|
1214
1220
|
|
|
1215
1221
|
this.sipLines = sipLines || [];
|
|
1216
1222
|
}
|
|
@@ -3280,6 +3286,7 @@ var updateFrom = (instance , from ) => {
|
|
|
3280
3286
|
|
|
3281
3287
|
|
|
3282
3288
|
|
|
3289
|
+
|
|
3283
3290
|
|
|
3284
3291
|
|
|
3285
3292
|
class CallSession {
|
|
@@ -3342,6 +3349,8 @@ class CallSession {
|
|
|
3342
3349
|
|
|
3343
3350
|
|
|
3344
3351
|
|
|
3352
|
+
|
|
3353
|
+
|
|
3345
3354
|
|
|
3346
3355
|
|
|
3347
3356
|
|
|
@@ -3373,6 +3382,7 @@ class CallSession {
|
|
|
3373
3382
|
videoRemotelyDowngraded,
|
|
3374
3383
|
sipSession,
|
|
3375
3384
|
answerTime,
|
|
3385
|
+
conference,
|
|
3376
3386
|
} ) {
|
|
3377
3387
|
this.callId = callId;
|
|
3378
3388
|
this.sipCallId = sipCallId;
|
|
@@ -3401,6 +3411,7 @@ class CallSession {
|
|
|
3401
3411
|
this.videoRemotelyDowngraded = videoRemotelyDowngraded;
|
|
3402
3412
|
this.sipSession = sipSession;
|
|
3403
3413
|
this.answerTime = answerTime || this.answerTime;
|
|
3414
|
+
this.conference = conference;
|
|
3404
3415
|
|
|
3405
3416
|
// Useful to compare instead of instanceof with minified code
|
|
3406
3417
|
this.type = 'CallSession';
|
|
@@ -3458,6 +3469,10 @@ class CallSession {
|
|
|
3458
3469
|
this.screensharing = false;
|
|
3459
3470
|
}
|
|
3460
3471
|
|
|
3472
|
+
setIsConference(conference ) {
|
|
3473
|
+
this.conference = conference;
|
|
3474
|
+
}
|
|
3475
|
+
|
|
3461
3476
|
isIncoming() {
|
|
3462
3477
|
return !this.isCaller && !this.answered;
|
|
3463
3478
|
}
|
|
@@ -3534,6 +3549,10 @@ class CallSession {
|
|
|
3534
3549
|
return this.sipStatus === SessionState.Terminated;
|
|
3535
3550
|
}
|
|
3536
3551
|
|
|
3552
|
+
isConference() {
|
|
3553
|
+
return this.conference;
|
|
3554
|
+
}
|
|
3555
|
+
|
|
3537
3556
|
getElapsedTimeInSeconds() {
|
|
3538
3557
|
if (!this.startTime) {
|
|
3539
3558
|
return 0;
|
|
@@ -3625,6 +3644,7 @@ class CallSession {
|
|
|
3625
3644
|
cameraEnabled: false,
|
|
3626
3645
|
dialedExtension: call.dialedExtension,
|
|
3627
3646
|
call,
|
|
3647
|
+
conference: false, // @FIXME?
|
|
3628
3648
|
});
|
|
3629
3649
|
}
|
|
3630
3650
|
}
|
|
@@ -3720,7 +3740,7 @@ class Recording {
|
|
|
3720
3740
|
|
|
3721
3741
|
|
|
3722
3742
|
|
|
3723
|
-
|
|
3743
|
+
|
|
3724
3744
|
|
|
3725
3745
|
|
|
3726
3746
|
|
|
@@ -5920,6 +5940,10 @@ class AdHocAPIConference {
|
|
|
5920
5940
|
this.conferenceId = conferenceId || '';
|
|
5921
5941
|
this.muted = muted || false;
|
|
5922
5942
|
this.paused = paused || false;
|
|
5943
|
+
|
|
5944
|
+
if (this.host) {
|
|
5945
|
+
this.host.setIsConference(true);
|
|
5946
|
+
}
|
|
5923
5947
|
}
|
|
5924
5948
|
|
|
5925
5949
|
async start() {
|
|
@@ -9629,7 +9653,11 @@ class WebRTCPhone extends Emitter {
|
|
|
9629
9653
|
accept(callSession , cameraEnabled ) {
|
|
9630
9654
|
logger$7.info('WebRTC phone - accept call', { id: callSession ? callSession.getId() : 'n/a', cameraEnabled });
|
|
9631
9655
|
if (this.currentSipSession) {
|
|
9632
|
-
this.holdSipSession(
|
|
9656
|
+
this.holdSipSession(
|
|
9657
|
+
this.currentSipSession,
|
|
9658
|
+
this.currentCallSession,
|
|
9659
|
+
true,
|
|
9660
|
+
);
|
|
9633
9661
|
}
|
|
9634
9662
|
|
|
9635
9663
|
if (!callSession) {
|
|
@@ -9722,22 +9750,22 @@ class WebRTCPhone extends Emitter {
|
|
|
9722
9750
|
}
|
|
9723
9751
|
}
|
|
9724
9752
|
|
|
9725
|
-
hold(callSession , withEvent = true
|
|
9753
|
+
hold(callSession , withEvent = true) {
|
|
9726
9754
|
logger$7.info('WebRTC hold', { id: callSession.getId() });
|
|
9727
9755
|
|
|
9728
9756
|
const sipSession = this.findSipSession(callSession);
|
|
9729
9757
|
|
|
9730
|
-
return sipSession ? this.holdSipSession(sipSession, callSession, withEvent
|
|
9758
|
+
return sipSession ? this.holdSipSession(sipSession, callSession, withEvent) : null;
|
|
9731
9759
|
}
|
|
9732
9760
|
|
|
9733
9761
|
// @Deprecated
|
|
9734
|
-
unhold(callSession , withEvent = true
|
|
9762
|
+
unhold(callSession , withEvent = true) {
|
|
9735
9763
|
console.warn('Please note that `phone.unhold()` is being deprecated; `phone.resume()` is the preferred method');
|
|
9736
9764
|
|
|
9737
|
-
return this.resume(callSession,
|
|
9765
|
+
return this.resume(callSession, withEvent);
|
|
9738
9766
|
}
|
|
9739
9767
|
|
|
9740
|
-
resume(callSession ,
|
|
9768
|
+
resume(callSession , withEvent = true) {
|
|
9741
9769
|
logger$7.info('WebRTC resume called', { id: callSession ? callSession.getId() : null });
|
|
9742
9770
|
|
|
9743
9771
|
const sipSession = this.findSipSession(callSession);
|
|
@@ -9750,10 +9778,14 @@ class WebRTCPhone extends Emitter {
|
|
|
9750
9778
|
// Hold current session if different from the current one (we don't want 2 sessions active at the same time).
|
|
9751
9779
|
if (this.currentSipSession && this.currentSipSession.id !== sipSession.id) {
|
|
9752
9780
|
logger$7.info('WebRTC hold call after resume', { id: this.currentSipSession.id });
|
|
9753
|
-
this.holdSipSession(
|
|
9781
|
+
this.holdSipSession(
|
|
9782
|
+
this.currentSipSession,
|
|
9783
|
+
this.currentCallSession,
|
|
9784
|
+
withEvent,
|
|
9785
|
+
);
|
|
9754
9786
|
}
|
|
9755
9787
|
|
|
9756
|
-
const promise = this.unholdSipSession(sipSession, callSession, withEvent
|
|
9788
|
+
const promise = this.unholdSipSession(sipSession, callSession, withEvent);
|
|
9757
9789
|
this.currentSipSession = sipSession;
|
|
9758
9790
|
if (callSession) {
|
|
9759
9791
|
this.currentCallSession = callSession;
|
|
@@ -9766,7 +9798,6 @@ class WebRTCPhone extends Emitter {
|
|
|
9766
9798
|
sipSession ,
|
|
9767
9799
|
callSession ,
|
|
9768
9800
|
withEvent = true,
|
|
9769
|
-
isConference = false,
|
|
9770
9801
|
) {
|
|
9771
9802
|
if (!sipSession) {
|
|
9772
9803
|
return new Promise((resolve, reject) => reject(new Error('No session to hold')));
|
|
@@ -9787,6 +9818,8 @@ class WebRTCPhone extends Emitter {
|
|
|
9787
9818
|
await this.client.downgradeToAudio(sipSession);
|
|
9788
9819
|
}
|
|
9789
9820
|
|
|
9821
|
+
const isConference = !!callSession && callSession.isConference();
|
|
9822
|
+
|
|
9790
9823
|
const promise = this.client.hold(sipSession, isConference, hasVideo);
|
|
9791
9824
|
if (withEvent) {
|
|
9792
9825
|
this.eventEmitter.emit(ON_CALL_HELD, this._createCallSession(sipSession, callSession));
|
|
@@ -9799,11 +9832,13 @@ class WebRTCPhone extends Emitter {
|
|
|
9799
9832
|
sipSession ,
|
|
9800
9833
|
callSession ,
|
|
9801
9834
|
withEvent = true,
|
|
9802
|
-
isConference = false,
|
|
9803
9835
|
) {
|
|
9804
9836
|
if (!sipSession) {
|
|
9805
9837
|
return new Promise((resolve, reject) => reject(new Error('No session to unhold')));
|
|
9806
9838
|
}
|
|
9839
|
+
|
|
9840
|
+
const isConference = !!callSession && callSession.isConference();
|
|
9841
|
+
|
|
9807
9842
|
const sessionId = this.getSipSessionId(sipSession);
|
|
9808
9843
|
logger$7.info('WebRTC unhold sip session', { sessionId, isConference });
|
|
9809
9844
|
|
|
@@ -9945,7 +9980,11 @@ class WebRTCPhone extends Emitter {
|
|
|
9945
9980
|
await this.client.register();
|
|
9946
9981
|
}
|
|
9947
9982
|
if (this.currentSipSession) {
|
|
9948
|
-
this.holdSipSession(
|
|
9983
|
+
this.holdSipSession(
|
|
9984
|
+
this.currentSipSession,
|
|
9985
|
+
this.currentCallSession,
|
|
9986
|
+
true,
|
|
9987
|
+
).catch(e => {
|
|
9949
9988
|
logger$7.warn('Unable to hold current session when making another call', e);
|
|
9950
9989
|
});
|
|
9951
9990
|
}
|
|
@@ -9960,6 +9999,7 @@ class WebRTCPhone extends Emitter {
|
|
|
9960
9999
|
return Promise.resolve(null);
|
|
9961
10000
|
}
|
|
9962
10001
|
const callSession = this._createOutgoingCallSession(sipSession, cameraEnabled || false);
|
|
10002
|
+
callSession.setIsConference(conference);
|
|
9963
10003
|
callSession.creationTime = new Date();
|
|
9964
10004
|
this._updateCallSession(callSession);
|
|
9965
10005
|
|
|
@@ -10538,6 +10578,7 @@ class WebRTCPhone extends Emitter {
|
|
|
10538
10578
|
recording: fromSession ? fromSession.isRecording() : false,
|
|
10539
10579
|
recordingPaused: false, // @TODO
|
|
10540
10580
|
sipSession,
|
|
10581
|
+
conference: !!fromSession && fromSession.isConference(),
|
|
10541
10582
|
...extra,
|
|
10542
10583
|
});
|
|
10543
10584
|
|
|
@@ -10794,16 +10835,16 @@ class Phone extends Emitter {
|
|
|
10794
10835
|
}
|
|
10795
10836
|
}
|
|
10796
10837
|
|
|
10797
|
-
hold(callSession
|
|
10798
|
-
return this.phone && this.phone.hold(callSession, true
|
|
10838
|
+
hold(callSession ) {
|
|
10839
|
+
return this.phone && this.phone.hold(callSession, true);
|
|
10799
10840
|
}
|
|
10800
10841
|
|
|
10801
|
-
unhold(callSession
|
|
10802
|
-
return this.phone && this.phone.unhold(callSession, true
|
|
10842
|
+
unhold(callSession ) {
|
|
10843
|
+
return this.phone && this.phone.unhold(callSession, true);
|
|
10803
10844
|
}
|
|
10804
10845
|
|
|
10805
|
-
resume(callSession
|
|
10806
|
-
return this.phone && this.phone.resume(callSession
|
|
10846
|
+
resume(callSession ) {
|
|
10847
|
+
return this.phone && this.phone.resume(callSession);
|
|
10807
10848
|
}
|
|
10808
10849
|
|
|
10809
10850
|
reject(callSession ) {
|
package/esm/simple/room/Room.js
CHANGED
|
@@ -1071,6 +1071,7 @@ const LINE_STATE = {
|
|
|
1071
1071
|
|
|
1072
1072
|
|
|
1073
1073
|
|
|
1074
|
+
|
|
1074
1075
|
|
|
1075
1076
|
|
|
1076
1077
|
|
|
@@ -1107,6 +1108,7 @@ const LINE_STATE = {
|
|
|
1107
1108
|
|
|
1108
1109
|
|
|
1109
1110
|
|
|
1111
|
+
|
|
1110
1112
|
|
|
1111
1113
|
|
|
1112
1114
|
|
|
@@ -1138,6 +1140,7 @@ class Profile {
|
|
|
1138
1140
|
|
|
1139
1141
|
|
|
1140
1142
|
|
|
1143
|
+
|
|
1141
1144
|
|
|
1142
1145
|
|
|
1143
1146
|
|
|
@@ -1154,6 +1157,7 @@ class Profile {
|
|
|
1154
1157
|
lines: plain.lines.map(line => Line.parse(line)),
|
|
1155
1158
|
username: plain.username,
|
|
1156
1159
|
mobileNumber: plain.mobile_phone_number || '',
|
|
1160
|
+
ringSeconds: plain.ring_seconds,
|
|
1157
1161
|
forwards: [
|
|
1158
1162
|
ForwardOption.parse(plain.forwards.unconditional, FORWARD_KEYS.UNCONDITIONAL),
|
|
1159
1163
|
ForwardOption.parse(plain.forwards.noanswer, FORWARD_KEYS.NO_ANSWER),
|
|
@@ -1190,6 +1194,7 @@ class Profile {
|
|
|
1190
1194
|
switchboards,
|
|
1191
1195
|
agent,
|
|
1192
1196
|
status,
|
|
1197
|
+
ringSeconds,
|
|
1193
1198
|
sipLines,
|
|
1194
1199
|
callPickupTargetUsers,
|
|
1195
1200
|
onlineCallRecordEnabled,
|
|
@@ -1211,6 +1216,7 @@ class Profile {
|
|
|
1211
1216
|
this.status = status;
|
|
1212
1217
|
this.callPickupTargetUsers = callPickupTargetUsers;
|
|
1213
1218
|
this.onlineCallRecordEnabled = onlineCallRecordEnabled;
|
|
1219
|
+
this.ringSeconds = ringSeconds;
|
|
1214
1220
|
|
|
1215
1221
|
this.sipLines = sipLines || [];
|
|
1216
1222
|
}
|
|
@@ -3280,6 +3286,7 @@ var updateFrom = (instance , from ) => {
|
|
|
3280
3286
|
|
|
3281
3287
|
|
|
3282
3288
|
|
|
3289
|
+
|
|
3283
3290
|
|
|
3284
3291
|
|
|
3285
3292
|
class CallSession {
|
|
@@ -3342,6 +3349,8 @@ class CallSession {
|
|
|
3342
3349
|
|
|
3343
3350
|
|
|
3344
3351
|
|
|
3352
|
+
|
|
3353
|
+
|
|
3345
3354
|
|
|
3346
3355
|
|
|
3347
3356
|
|
|
@@ -3373,6 +3382,7 @@ class CallSession {
|
|
|
3373
3382
|
videoRemotelyDowngraded,
|
|
3374
3383
|
sipSession,
|
|
3375
3384
|
answerTime,
|
|
3385
|
+
conference,
|
|
3376
3386
|
} ) {
|
|
3377
3387
|
this.callId = callId;
|
|
3378
3388
|
this.sipCallId = sipCallId;
|
|
@@ -3401,6 +3411,7 @@ class CallSession {
|
|
|
3401
3411
|
this.videoRemotelyDowngraded = videoRemotelyDowngraded;
|
|
3402
3412
|
this.sipSession = sipSession;
|
|
3403
3413
|
this.answerTime = answerTime || this.answerTime;
|
|
3414
|
+
this.conference = conference;
|
|
3404
3415
|
|
|
3405
3416
|
// Useful to compare instead of instanceof with minified code
|
|
3406
3417
|
this.type = 'CallSession';
|
|
@@ -3458,6 +3469,10 @@ class CallSession {
|
|
|
3458
3469
|
this.screensharing = false;
|
|
3459
3470
|
}
|
|
3460
3471
|
|
|
3472
|
+
setIsConference(conference ) {
|
|
3473
|
+
this.conference = conference;
|
|
3474
|
+
}
|
|
3475
|
+
|
|
3461
3476
|
isIncoming() {
|
|
3462
3477
|
return !this.isCaller && !this.answered;
|
|
3463
3478
|
}
|
|
@@ -3534,6 +3549,10 @@ class CallSession {
|
|
|
3534
3549
|
return this.sipStatus === SessionState.Terminated;
|
|
3535
3550
|
}
|
|
3536
3551
|
|
|
3552
|
+
isConference() {
|
|
3553
|
+
return this.conference;
|
|
3554
|
+
}
|
|
3555
|
+
|
|
3537
3556
|
getElapsedTimeInSeconds() {
|
|
3538
3557
|
if (!this.startTime) {
|
|
3539
3558
|
return 0;
|
|
@@ -3625,6 +3644,7 @@ class CallSession {
|
|
|
3625
3644
|
cameraEnabled: false,
|
|
3626
3645
|
dialedExtension: call.dialedExtension,
|
|
3627
3646
|
call,
|
|
3647
|
+
conference: false, // @FIXME?
|
|
3628
3648
|
});
|
|
3629
3649
|
}
|
|
3630
3650
|
}
|
|
@@ -3720,7 +3740,7 @@ class Recording {
|
|
|
3720
3740
|
|
|
3721
3741
|
|
|
3722
3742
|
|
|
3723
|
-
|
|
3743
|
+
|
|
3724
3744
|
|
|
3725
3745
|
|
|
3726
3746
|
|
|
@@ -5920,6 +5940,10 @@ class AdHocAPIConference {
|
|
|
5920
5940
|
this.conferenceId = conferenceId || '';
|
|
5921
5941
|
this.muted = muted || false;
|
|
5922
5942
|
this.paused = paused || false;
|
|
5943
|
+
|
|
5944
|
+
if (this.host) {
|
|
5945
|
+
this.host.setIsConference(true);
|
|
5946
|
+
}
|
|
5923
5947
|
}
|
|
5924
5948
|
|
|
5925
5949
|
async start() {
|
|
@@ -9629,7 +9653,11 @@ class WebRTCPhone extends Emitter {
|
|
|
9629
9653
|
accept(callSession , cameraEnabled ) {
|
|
9630
9654
|
logger$7.info('WebRTC phone - accept call', { id: callSession ? callSession.getId() : 'n/a', cameraEnabled });
|
|
9631
9655
|
if (this.currentSipSession) {
|
|
9632
|
-
this.holdSipSession(
|
|
9656
|
+
this.holdSipSession(
|
|
9657
|
+
this.currentSipSession,
|
|
9658
|
+
this.currentCallSession,
|
|
9659
|
+
true,
|
|
9660
|
+
);
|
|
9633
9661
|
}
|
|
9634
9662
|
|
|
9635
9663
|
if (!callSession) {
|
|
@@ -9722,22 +9750,22 @@ class WebRTCPhone extends Emitter {
|
|
|
9722
9750
|
}
|
|
9723
9751
|
}
|
|
9724
9752
|
|
|
9725
|
-
hold(callSession , withEvent = true
|
|
9753
|
+
hold(callSession , withEvent = true) {
|
|
9726
9754
|
logger$7.info('WebRTC hold', { id: callSession.getId() });
|
|
9727
9755
|
|
|
9728
9756
|
const sipSession = this.findSipSession(callSession);
|
|
9729
9757
|
|
|
9730
|
-
return sipSession ? this.holdSipSession(sipSession, callSession, withEvent
|
|
9758
|
+
return sipSession ? this.holdSipSession(sipSession, callSession, withEvent) : null;
|
|
9731
9759
|
}
|
|
9732
9760
|
|
|
9733
9761
|
// @Deprecated
|
|
9734
|
-
unhold(callSession , withEvent = true
|
|
9762
|
+
unhold(callSession , withEvent = true) {
|
|
9735
9763
|
console.warn('Please note that `phone.unhold()` is being deprecated; `phone.resume()` is the preferred method');
|
|
9736
9764
|
|
|
9737
|
-
return this.resume(callSession,
|
|
9765
|
+
return this.resume(callSession, withEvent);
|
|
9738
9766
|
}
|
|
9739
9767
|
|
|
9740
|
-
resume(callSession ,
|
|
9768
|
+
resume(callSession , withEvent = true) {
|
|
9741
9769
|
logger$7.info('WebRTC resume called', { id: callSession ? callSession.getId() : null });
|
|
9742
9770
|
|
|
9743
9771
|
const sipSession = this.findSipSession(callSession);
|
|
@@ -9750,10 +9778,14 @@ class WebRTCPhone extends Emitter {
|
|
|
9750
9778
|
// Hold current session if different from the current one (we don't want 2 sessions active at the same time).
|
|
9751
9779
|
if (this.currentSipSession && this.currentSipSession.id !== sipSession.id) {
|
|
9752
9780
|
logger$7.info('WebRTC hold call after resume', { id: this.currentSipSession.id });
|
|
9753
|
-
this.holdSipSession(
|
|
9781
|
+
this.holdSipSession(
|
|
9782
|
+
this.currentSipSession,
|
|
9783
|
+
this.currentCallSession,
|
|
9784
|
+
withEvent,
|
|
9785
|
+
);
|
|
9754
9786
|
}
|
|
9755
9787
|
|
|
9756
|
-
const promise = this.unholdSipSession(sipSession, callSession, withEvent
|
|
9788
|
+
const promise = this.unholdSipSession(sipSession, callSession, withEvent);
|
|
9757
9789
|
this.currentSipSession = sipSession;
|
|
9758
9790
|
if (callSession) {
|
|
9759
9791
|
this.currentCallSession = callSession;
|
|
@@ -9766,7 +9798,6 @@ class WebRTCPhone extends Emitter {
|
|
|
9766
9798
|
sipSession ,
|
|
9767
9799
|
callSession ,
|
|
9768
9800
|
withEvent = true,
|
|
9769
|
-
isConference = false,
|
|
9770
9801
|
) {
|
|
9771
9802
|
if (!sipSession) {
|
|
9772
9803
|
return new Promise((resolve, reject) => reject(new Error('No session to hold')));
|
|
@@ -9787,6 +9818,8 @@ class WebRTCPhone extends Emitter {
|
|
|
9787
9818
|
await this.client.downgradeToAudio(sipSession);
|
|
9788
9819
|
}
|
|
9789
9820
|
|
|
9821
|
+
const isConference = !!callSession && callSession.isConference();
|
|
9822
|
+
|
|
9790
9823
|
const promise = this.client.hold(sipSession, isConference, hasVideo);
|
|
9791
9824
|
if (withEvent) {
|
|
9792
9825
|
this.eventEmitter.emit(ON_CALL_HELD, this._createCallSession(sipSession, callSession));
|
|
@@ -9799,11 +9832,13 @@ class WebRTCPhone extends Emitter {
|
|
|
9799
9832
|
sipSession ,
|
|
9800
9833
|
callSession ,
|
|
9801
9834
|
withEvent = true,
|
|
9802
|
-
isConference = false,
|
|
9803
9835
|
) {
|
|
9804
9836
|
if (!sipSession) {
|
|
9805
9837
|
return new Promise((resolve, reject) => reject(new Error('No session to unhold')));
|
|
9806
9838
|
}
|
|
9839
|
+
|
|
9840
|
+
const isConference = !!callSession && callSession.isConference();
|
|
9841
|
+
|
|
9807
9842
|
const sessionId = this.getSipSessionId(sipSession);
|
|
9808
9843
|
logger$7.info('WebRTC unhold sip session', { sessionId, isConference });
|
|
9809
9844
|
|
|
@@ -9945,7 +9980,11 @@ class WebRTCPhone extends Emitter {
|
|
|
9945
9980
|
await this.client.register();
|
|
9946
9981
|
}
|
|
9947
9982
|
if (this.currentSipSession) {
|
|
9948
|
-
this.holdSipSession(
|
|
9983
|
+
this.holdSipSession(
|
|
9984
|
+
this.currentSipSession,
|
|
9985
|
+
this.currentCallSession,
|
|
9986
|
+
true,
|
|
9987
|
+
).catch(e => {
|
|
9949
9988
|
logger$7.warn('Unable to hold current session when making another call', e);
|
|
9950
9989
|
});
|
|
9951
9990
|
}
|
|
@@ -9960,6 +9999,7 @@ class WebRTCPhone extends Emitter {
|
|
|
9960
9999
|
return Promise.resolve(null);
|
|
9961
10000
|
}
|
|
9962
10001
|
const callSession = this._createOutgoingCallSession(sipSession, cameraEnabled || false);
|
|
10002
|
+
callSession.setIsConference(conference);
|
|
9963
10003
|
callSession.creationTime = new Date();
|
|
9964
10004
|
this._updateCallSession(callSession);
|
|
9965
10005
|
|
|
@@ -10538,6 +10578,7 @@ class WebRTCPhone extends Emitter {
|
|
|
10538
10578
|
recording: fromSession ? fromSession.isRecording() : false,
|
|
10539
10579
|
recordingPaused: false, // @TODO
|
|
10540
10580
|
sipSession,
|
|
10581
|
+
conference: !!fromSession && fromSession.isConference(),
|
|
10541
10582
|
...extra,
|
|
10542
10583
|
});
|
|
10543
10584
|
|
|
@@ -10794,16 +10835,16 @@ class Phone extends Emitter {
|
|
|
10794
10835
|
}
|
|
10795
10836
|
}
|
|
10796
10837
|
|
|
10797
|
-
hold(callSession
|
|
10798
|
-
return this.phone && this.phone.hold(callSession, true
|
|
10838
|
+
hold(callSession ) {
|
|
10839
|
+
return this.phone && this.phone.hold(callSession, true);
|
|
10799
10840
|
}
|
|
10800
10841
|
|
|
10801
|
-
unhold(callSession
|
|
10802
|
-
return this.phone && this.phone.unhold(callSession, true
|
|
10842
|
+
unhold(callSession ) {
|
|
10843
|
+
return this.phone && this.phone.unhold(callSession, true);
|
|
10803
10844
|
}
|
|
10804
10845
|
|
|
10805
|
-
resume(callSession
|
|
10806
|
-
return this.phone && this.phone.resume(callSession
|
|
10846
|
+
resume(callSession ) {
|
|
10847
|
+
return this.phone && this.phone.resume(callSession);
|
|
10807
10848
|
}
|
|
10808
10849
|
|
|
10809
10850
|
reject(callSession ) {
|