@wazo/sdk 0.37.31 → 0.37.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/wazo-sdk.js +2 -2
- package/esm/__tests__/api-client.test.js +30 -0
- package/esm/__tests__/web-rtc-client.test.js +56 -5
- package/esm/api/calld.js +30 -0
- package/esm/api-client.js +30 -0
- package/esm/checker/Checker.js +56 -5
- package/esm/checker/checks/aor.js +30 -0
- package/esm/checker/checks/api.js +30 -0
- package/esm/checker/checks/index.js +56 -5
- package/esm/checker/checks/webrtc-transport.js +56 -5
- package/esm/checker/checks/webrtc.js +56 -5
- package/esm/domain/AdHocAPIConference.js +30 -0
- package/esm/domain/Features.js +30 -0
- package/esm/domain/MeetingStatus.js +29 -0
- package/esm/domain/Phone/CTIPhone.js +30 -0
- package/esm/domain/Phone/WebRTCPhone.js +2 -2
- package/esm/index.js +58 -7
- package/esm/service/CallApi.js +30 -0
- package/esm/service/getApiClient.js +30 -0
- package/esm/simple/Auth.js +58 -7
- package/esm/simple/Configuration.js +58 -7
- package/esm/simple/Directory.js +30 -0
- package/esm/simple/Phone.js +58 -7
- package/esm/simple/index.js +58 -7
- package/esm/simple/room/LocalParticipant.js +58 -7
- package/esm/simple/room/Participant.js +58 -7
- package/esm/simple/room/RemoteParticipant.js +58 -7
- package/esm/simple/room/Room.js +58 -7
- package/esm/simple/room/SipRoom.js +58 -7
- package/esm/simple/room/Stream.js +58 -7
- package/esm/simple/room/__tests__/RemoteParticipant.test.js +58 -7
- package/esm/simple/utils.js +58 -7
- package/esm/web-rtc-client.js +56 -5
- package/lib/__tests__/api-client.test.js +30 -0
- package/lib/__tests__/web-rtc-client.test.js +56 -5
- package/lib/api/calld.js +30 -0
- package/lib/api-client.js +30 -0
- package/lib/checker/Checker.js +56 -5
- package/lib/checker/checks/aor.js +30 -0
- package/lib/checker/checks/api.js +30 -0
- package/lib/checker/checks/index.js +56 -5
- package/lib/checker/checks/webrtc-transport.js +56 -5
- package/lib/checker/checks/webrtc.js +56 -5
- package/lib/domain/AdHocAPIConference.js +30 -0
- package/lib/domain/Features.js +30 -0
- package/lib/domain/MeetingStatus.js +31 -0
- package/lib/domain/Phone/CTIPhone.js +30 -0
- package/lib/domain/Phone/WebRTCPhone.js +2 -2
- package/lib/index.js +58 -7
- package/lib/service/CallApi.js +30 -0
- package/lib/service/getApiClient.js +30 -0
- package/lib/simple/Auth.js +58 -7
- package/lib/simple/Configuration.js +58 -7
- package/lib/simple/Directory.js +30 -0
- package/lib/simple/Phone.js +58 -7
- package/lib/simple/index.js +58 -7
- package/lib/simple/room/LocalParticipant.js +58 -7
- package/lib/simple/room/Participant.js +58 -7
- package/lib/simple/room/RemoteParticipant.js +58 -7
- package/lib/simple/room/Room.js +58 -7
- package/lib/simple/room/SipRoom.js +58 -7
- package/lib/simple/room/Stream.js +58 -7
- package/lib/simple/room/__tests__/RemoteParticipant.test.js +58 -7
- package/lib/simple/utils.js +58 -7
- package/lib/web-rtc-client.js +56 -5
- package/package.json +1 -1
- package/src/api/calld.js +3 -0
- package/src/domain/MeetingStatus.js +27 -0
- package/src/domain/Phone/WebRTCPhone.js +2 -2
- package/src/web-rtc-client.js +26 -5
|
@@ -4579,6 +4579,34 @@ var chatdMethods = (client , baseUrl ) => ({
|
|
|
4579
4579
|
client.get(`${baseUrl}/users/me/rooms/messages`, options),
|
|
4580
4580
|
});
|
|
4581
4581
|
|
|
4582
|
+
//
|
|
4583
|
+
|
|
4584
|
+
|
|
4585
|
+
|
|
4586
|
+
|
|
4587
|
+
|
|
4588
|
+
class MeetingStatus {
|
|
4589
|
+
|
|
4590
|
+
|
|
4591
|
+
|
|
4592
|
+
|
|
4593
|
+
constructor({
|
|
4594
|
+
full,
|
|
4595
|
+
} = {}) {
|
|
4596
|
+
this.full = full;
|
|
4597
|
+
|
|
4598
|
+
// Useful to compare instead of instanceof with minified code
|
|
4599
|
+
this.type = 'MeetingStatus';
|
|
4600
|
+
}
|
|
4601
|
+
|
|
4602
|
+
static parse(plain ) {
|
|
4603
|
+
return new MeetingStatus({
|
|
4604
|
+
full: plain.full,
|
|
4605
|
+
});
|
|
4606
|
+
}
|
|
4607
|
+
|
|
4608
|
+
}
|
|
4609
|
+
|
|
4582
4610
|
/* */
|
|
4583
4611
|
|
|
4584
4612
|
|
|
@@ -4773,6 +4801,8 @@ var calldMethods = (client , baseUrl ) => ({
|
|
|
4773
4801
|
client.put(`${baseUrl}/users/me/calls/${callId}/record/resume`, null, null,
|
|
4774
4802
|
ApiRequester.successResponseParser),
|
|
4775
4803
|
|
|
4804
|
+
guestGetMeetingStatus: (meetingUuid ) =>
|
|
4805
|
+
client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}/status`).then(MeetingStatus.parse),
|
|
4776
4806
|
});
|
|
4777
4807
|
|
|
4778
4808
|
//
|
|
@@ -5386,6 +5416,7 @@ class WebRTCClient extends Emitter {
|
|
|
5386
5416
|
|
|
5387
5417
|
|
|
5388
5418
|
|
|
5419
|
+
|
|
5389
5420
|
|
|
5390
5421
|
// sugar
|
|
5391
5422
|
|
|
@@ -5448,6 +5479,7 @@ class WebRTCClient extends Emitter {
|
|
|
5448
5479
|
this.conferences = {};
|
|
5449
5480
|
this.networkMonitoringInterval = {};
|
|
5450
5481
|
this.sessionNetworkStats = {};
|
|
5482
|
+
this.forceClosed = false;
|
|
5451
5483
|
|
|
5452
5484
|
this._boundOnHeartbeat = this._onHeartbeat.bind(this);
|
|
5453
5485
|
this.heartbeat = new Heartbeat(config.heartbeatDelay, config.heartbeatTimeout, config.maxHeartbeats);
|
|
@@ -5569,6 +5601,8 @@ class WebRTCClient extends Emitter {
|
|
|
5569
5601
|
skipRegister: this.skipRegister,
|
|
5570
5602
|
};
|
|
5571
5603
|
|
|
5604
|
+
this.forceClosed = false;
|
|
5605
|
+
|
|
5572
5606
|
if (this.skipRegister) {
|
|
5573
5607
|
logger.info('sdk webrtc skip register...', logInfo);
|
|
5574
5608
|
return Promise.resolve();
|
|
@@ -5593,7 +5627,15 @@ class WebRTCClient extends Emitter {
|
|
|
5593
5627
|
const registerOptions = this._isWeb() ? {} : { extraContactHeaderParams: ['mobility=mobile'] };
|
|
5594
5628
|
|
|
5595
5629
|
const onRegisterFailed = () => {
|
|
5596
|
-
logger.info('sdk webrtc registering failed', {
|
|
5630
|
+
logger.info('sdk webrtc registering failed', {
|
|
5631
|
+
tries,
|
|
5632
|
+
registerer: !!this.registerer,
|
|
5633
|
+
forceClosed: this.forceClosed,
|
|
5634
|
+
});
|
|
5635
|
+
if (this.forceClosed) {
|
|
5636
|
+
return;
|
|
5637
|
+
}
|
|
5638
|
+
|
|
5597
5639
|
this.connectionPromise = null;
|
|
5598
5640
|
if (this.registerer && this.registerer.waiting) {
|
|
5599
5641
|
this.registerer.waitingToggle(false);
|
|
@@ -5871,8 +5913,9 @@ class WebRTCClient extends Emitter {
|
|
|
5871
5913
|
}
|
|
5872
5914
|
}
|
|
5873
5915
|
|
|
5874
|
-
async close() {
|
|
5875
|
-
logger.info('sdk webrtc closing client', { userAgent: !!this.userAgent });
|
|
5916
|
+
async close(force = false) {
|
|
5917
|
+
logger.info('sdk webrtc closing client', { userAgent: !!this.userAgent, force });
|
|
5918
|
+
this.forceClosed = force;
|
|
5876
5919
|
this._cleanupMedia();
|
|
5877
5920
|
this.connectionPromise = null;
|
|
5878
5921
|
|
|
@@ -5891,7 +5934,7 @@ class WebRTCClient extends Emitter {
|
|
|
5891
5934
|
this.userAgent.delegate = null;
|
|
5892
5935
|
this.userAgent.stateChange.removeAllListeners();
|
|
5893
5936
|
|
|
5894
|
-
await this._disconnectTransport();
|
|
5937
|
+
await this._disconnectTransport(force);
|
|
5895
5938
|
|
|
5896
5939
|
this._cleanupRegister();
|
|
5897
5940
|
|
|
@@ -7327,7 +7370,15 @@ class WebRTCClient extends Emitter {
|
|
|
7327
7370
|
return UserAgent.makeURI(`sip:${target}@${this.config.host}`);
|
|
7328
7371
|
}
|
|
7329
7372
|
|
|
7330
|
-
async _disconnectTransport() {
|
|
7373
|
+
async _disconnectTransport(force = false) {
|
|
7374
|
+
if (force) {
|
|
7375
|
+
// Bypass sip.js state machine that prevent to close WS with the state `Connecting`
|
|
7376
|
+
this.userAgent.transport.disconnectResolve = () => {};
|
|
7377
|
+
// eslint-disable-next-line
|
|
7378
|
+
this.userAgent.transport._ws.close(1000);
|
|
7379
|
+
return;
|
|
7380
|
+
}
|
|
7381
|
+
|
|
7331
7382
|
// Check if `disconnectPromise` is not present to avoid `Disconnect promise must not be defined` errors.
|
|
7332
7383
|
if (this.userAgent && this.userAgent.transport && !this.userAgent.transport.disconnectPromise) {
|
|
7333
7384
|
try {
|
|
@@ -4579,6 +4579,34 @@ var chatdMethods = (client , baseUrl ) => ({
|
|
|
4579
4579
|
client.get(`${baseUrl}/users/me/rooms/messages`, options),
|
|
4580
4580
|
});
|
|
4581
4581
|
|
|
4582
|
+
//
|
|
4583
|
+
|
|
4584
|
+
|
|
4585
|
+
|
|
4586
|
+
|
|
4587
|
+
|
|
4588
|
+
class MeetingStatus {
|
|
4589
|
+
|
|
4590
|
+
|
|
4591
|
+
|
|
4592
|
+
|
|
4593
|
+
constructor({
|
|
4594
|
+
full,
|
|
4595
|
+
} = {}) {
|
|
4596
|
+
this.full = full;
|
|
4597
|
+
|
|
4598
|
+
// Useful to compare instead of instanceof with minified code
|
|
4599
|
+
this.type = 'MeetingStatus';
|
|
4600
|
+
}
|
|
4601
|
+
|
|
4602
|
+
static parse(plain ) {
|
|
4603
|
+
return new MeetingStatus({
|
|
4604
|
+
full: plain.full,
|
|
4605
|
+
});
|
|
4606
|
+
}
|
|
4607
|
+
|
|
4608
|
+
}
|
|
4609
|
+
|
|
4582
4610
|
/* */
|
|
4583
4611
|
|
|
4584
4612
|
|
|
@@ -4773,6 +4801,8 @@ var calldMethods = (client , baseUrl ) => ({
|
|
|
4773
4801
|
client.put(`${baseUrl}/users/me/calls/${callId}/record/resume`, null, null,
|
|
4774
4802
|
ApiRequester.successResponseParser),
|
|
4775
4803
|
|
|
4804
|
+
guestGetMeetingStatus: (meetingUuid ) =>
|
|
4805
|
+
client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}/status`).then(MeetingStatus.parse),
|
|
4776
4806
|
});
|
|
4777
4807
|
|
|
4778
4808
|
//
|
|
@@ -5386,6 +5416,7 @@ class WebRTCClient extends Emitter {
|
|
|
5386
5416
|
|
|
5387
5417
|
|
|
5388
5418
|
|
|
5419
|
+
|
|
5389
5420
|
|
|
5390
5421
|
// sugar
|
|
5391
5422
|
|
|
@@ -5448,6 +5479,7 @@ class WebRTCClient extends Emitter {
|
|
|
5448
5479
|
this.conferences = {};
|
|
5449
5480
|
this.networkMonitoringInterval = {};
|
|
5450
5481
|
this.sessionNetworkStats = {};
|
|
5482
|
+
this.forceClosed = false;
|
|
5451
5483
|
|
|
5452
5484
|
this._boundOnHeartbeat = this._onHeartbeat.bind(this);
|
|
5453
5485
|
this.heartbeat = new Heartbeat(config.heartbeatDelay, config.heartbeatTimeout, config.maxHeartbeats);
|
|
@@ -5569,6 +5601,8 @@ class WebRTCClient extends Emitter {
|
|
|
5569
5601
|
skipRegister: this.skipRegister,
|
|
5570
5602
|
};
|
|
5571
5603
|
|
|
5604
|
+
this.forceClosed = false;
|
|
5605
|
+
|
|
5572
5606
|
if (this.skipRegister) {
|
|
5573
5607
|
logger.info('sdk webrtc skip register...', logInfo);
|
|
5574
5608
|
return Promise.resolve();
|
|
@@ -5593,7 +5627,15 @@ class WebRTCClient extends Emitter {
|
|
|
5593
5627
|
const registerOptions = this._isWeb() ? {} : { extraContactHeaderParams: ['mobility=mobile'] };
|
|
5594
5628
|
|
|
5595
5629
|
const onRegisterFailed = () => {
|
|
5596
|
-
logger.info('sdk webrtc registering failed', {
|
|
5630
|
+
logger.info('sdk webrtc registering failed', {
|
|
5631
|
+
tries,
|
|
5632
|
+
registerer: !!this.registerer,
|
|
5633
|
+
forceClosed: this.forceClosed,
|
|
5634
|
+
});
|
|
5635
|
+
if (this.forceClosed) {
|
|
5636
|
+
return;
|
|
5637
|
+
}
|
|
5638
|
+
|
|
5597
5639
|
this.connectionPromise = null;
|
|
5598
5640
|
if (this.registerer && this.registerer.waiting) {
|
|
5599
5641
|
this.registerer.waitingToggle(false);
|
|
@@ -5871,8 +5913,9 @@ class WebRTCClient extends Emitter {
|
|
|
5871
5913
|
}
|
|
5872
5914
|
}
|
|
5873
5915
|
|
|
5874
|
-
async close() {
|
|
5875
|
-
logger.info('sdk webrtc closing client', { userAgent: !!this.userAgent });
|
|
5916
|
+
async close(force = false) {
|
|
5917
|
+
logger.info('sdk webrtc closing client', { userAgent: !!this.userAgent, force });
|
|
5918
|
+
this.forceClosed = force;
|
|
5876
5919
|
this._cleanupMedia();
|
|
5877
5920
|
this.connectionPromise = null;
|
|
5878
5921
|
|
|
@@ -5891,7 +5934,7 @@ class WebRTCClient extends Emitter {
|
|
|
5891
5934
|
this.userAgent.delegate = null;
|
|
5892
5935
|
this.userAgent.stateChange.removeAllListeners();
|
|
5893
5936
|
|
|
5894
|
-
await this._disconnectTransport();
|
|
5937
|
+
await this._disconnectTransport(force);
|
|
5895
5938
|
|
|
5896
5939
|
this._cleanupRegister();
|
|
5897
5940
|
|
|
@@ -7327,7 +7370,15 @@ class WebRTCClient extends Emitter {
|
|
|
7327
7370
|
return UserAgent.makeURI(`sip:${target}@${this.config.host}`);
|
|
7328
7371
|
}
|
|
7329
7372
|
|
|
7330
|
-
async _disconnectTransport() {
|
|
7373
|
+
async _disconnectTransport(force = false) {
|
|
7374
|
+
if (force) {
|
|
7375
|
+
// Bypass sip.js state machine that prevent to close WS with the state `Connecting`
|
|
7376
|
+
this.userAgent.transport.disconnectResolve = () => {};
|
|
7377
|
+
// eslint-disable-next-line
|
|
7378
|
+
this.userAgent.transport._ws.close(1000);
|
|
7379
|
+
return;
|
|
7380
|
+
}
|
|
7381
|
+
|
|
7331
7382
|
// Check if `disconnectPromise` is not present to avoid `Disconnect promise must not be defined` errors.
|
|
7332
7383
|
if (this.userAgent && this.userAgent.transport && !this.userAgent.transport.disconnectPromise) {
|
|
7333
7384
|
try {
|
|
@@ -4016,6 +4016,34 @@ var chatdMethods = (client , baseUrl ) => ({
|
|
|
4016
4016
|
client.get(`${baseUrl}/users/me/rooms/messages`, options),
|
|
4017
4017
|
});
|
|
4018
4018
|
|
|
4019
|
+
//
|
|
4020
|
+
|
|
4021
|
+
|
|
4022
|
+
|
|
4023
|
+
|
|
4024
|
+
|
|
4025
|
+
class MeetingStatus {
|
|
4026
|
+
|
|
4027
|
+
|
|
4028
|
+
|
|
4029
|
+
|
|
4030
|
+
constructor({
|
|
4031
|
+
full,
|
|
4032
|
+
} = {}) {
|
|
4033
|
+
this.full = full;
|
|
4034
|
+
|
|
4035
|
+
// Useful to compare instead of instanceof with minified code
|
|
4036
|
+
this.type = 'MeetingStatus';
|
|
4037
|
+
}
|
|
4038
|
+
|
|
4039
|
+
static parse(plain ) {
|
|
4040
|
+
return new MeetingStatus({
|
|
4041
|
+
full: plain.full,
|
|
4042
|
+
});
|
|
4043
|
+
}
|
|
4044
|
+
|
|
4045
|
+
}
|
|
4046
|
+
|
|
4019
4047
|
/* */
|
|
4020
4048
|
|
|
4021
4049
|
|
|
@@ -4210,6 +4238,8 @@ var calldMethods = (client , baseUrl ) => ({
|
|
|
4210
4238
|
client.put(`${baseUrl}/users/me/calls/${callId}/record/resume`, null, null,
|
|
4211
4239
|
ApiRequester.successResponseParser),
|
|
4212
4240
|
|
|
4241
|
+
guestGetMeetingStatus: (meetingUuid ) =>
|
|
4242
|
+
client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}/status`).then(MeetingStatus.parse),
|
|
4213
4243
|
});
|
|
4214
4244
|
|
|
4215
4245
|
//
|
package/esm/domain/Features.js
CHANGED
|
@@ -4016,6 +4016,34 @@ var chatdMethods = (client , baseUrl ) => ({
|
|
|
4016
4016
|
client.get(`${baseUrl}/users/me/rooms/messages`, options),
|
|
4017
4017
|
});
|
|
4018
4018
|
|
|
4019
|
+
//
|
|
4020
|
+
|
|
4021
|
+
|
|
4022
|
+
|
|
4023
|
+
|
|
4024
|
+
|
|
4025
|
+
class MeetingStatus {
|
|
4026
|
+
|
|
4027
|
+
|
|
4028
|
+
|
|
4029
|
+
|
|
4030
|
+
constructor({
|
|
4031
|
+
full,
|
|
4032
|
+
} = {}) {
|
|
4033
|
+
this.full = full;
|
|
4034
|
+
|
|
4035
|
+
// Useful to compare instead of instanceof with minified code
|
|
4036
|
+
this.type = 'MeetingStatus';
|
|
4037
|
+
}
|
|
4038
|
+
|
|
4039
|
+
static parse(plain ) {
|
|
4040
|
+
return new MeetingStatus({
|
|
4041
|
+
full: plain.full,
|
|
4042
|
+
});
|
|
4043
|
+
}
|
|
4044
|
+
|
|
4045
|
+
}
|
|
4046
|
+
|
|
4019
4047
|
/* */
|
|
4020
4048
|
|
|
4021
4049
|
|
|
@@ -4210,6 +4238,8 @@ var calldMethods = (client , baseUrl ) => ({
|
|
|
4210
4238
|
client.put(`${baseUrl}/users/me/calls/${callId}/record/resume`, null, null,
|
|
4211
4239
|
ApiRequester.successResponseParser),
|
|
4212
4240
|
|
|
4241
|
+
guestGetMeetingStatus: (meetingUuid ) =>
|
|
4242
|
+
client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}/status`).then(MeetingStatus.parse),
|
|
4213
4243
|
});
|
|
4214
4244
|
|
|
4215
4245
|
//
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
//
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class MeetingStatus {
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
constructor({
|
|
13
|
+
full,
|
|
14
|
+
} = {}) {
|
|
15
|
+
this.full = full;
|
|
16
|
+
|
|
17
|
+
// Useful to compare instead of instanceof with minified code
|
|
18
|
+
this.type = 'MeetingStatus';
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
static parse(plain ) {
|
|
22
|
+
return new MeetingStatus({
|
|
23
|
+
full: plain.full,
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export default MeetingStatus;
|
|
@@ -4407,6 +4407,34 @@ class IndirectTransfer {
|
|
|
4407
4407
|
}
|
|
4408
4408
|
}
|
|
4409
4409
|
|
|
4410
|
+
//
|
|
4411
|
+
|
|
4412
|
+
|
|
4413
|
+
|
|
4414
|
+
|
|
4415
|
+
|
|
4416
|
+
class MeetingStatus {
|
|
4417
|
+
|
|
4418
|
+
|
|
4419
|
+
|
|
4420
|
+
|
|
4421
|
+
constructor({
|
|
4422
|
+
full,
|
|
4423
|
+
} = {}) {
|
|
4424
|
+
this.full = full;
|
|
4425
|
+
|
|
4426
|
+
// Useful to compare instead of instanceof with minified code
|
|
4427
|
+
this.type = 'MeetingStatus';
|
|
4428
|
+
}
|
|
4429
|
+
|
|
4430
|
+
static parse(plain ) {
|
|
4431
|
+
return new MeetingStatus({
|
|
4432
|
+
full: plain.full,
|
|
4433
|
+
});
|
|
4434
|
+
}
|
|
4435
|
+
|
|
4436
|
+
}
|
|
4437
|
+
|
|
4410
4438
|
/* */
|
|
4411
4439
|
|
|
4412
4440
|
|
|
@@ -4601,6 +4629,8 @@ var calldMethods = (client , baseUrl ) => ({
|
|
|
4601
4629
|
client.put(`${baseUrl}/users/me/calls/${callId}/record/resume`, null, null,
|
|
4602
4630
|
ApiRequester.successResponseParser),
|
|
4603
4631
|
|
|
4632
|
+
guestGetMeetingStatus: (meetingUuid ) =>
|
|
4633
|
+
client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}/status`).then(MeetingStatus.parse),
|
|
4604
4634
|
});
|
|
4605
4635
|
|
|
4606
4636
|
//
|
|
@@ -2174,7 +2174,7 @@ class WebRTCPhone extends Emitter {
|
|
|
2174
2174
|
return this.client && this.client.isConference(callSession.sipCallId);
|
|
2175
2175
|
}
|
|
2176
2176
|
|
|
2177
|
-
async close() {
|
|
2177
|
+
async close(force = false) {
|
|
2178
2178
|
logger.info('WebRTC close');
|
|
2179
2179
|
|
|
2180
2180
|
try {
|
|
@@ -2186,7 +2186,7 @@ class WebRTCPhone extends Emitter {
|
|
|
2186
2186
|
logger.error('WebRTC close, unregister error', e);
|
|
2187
2187
|
}
|
|
2188
2188
|
|
|
2189
|
-
this.client.close();
|
|
2189
|
+
this.client.close(force);
|
|
2190
2190
|
this.unbind();
|
|
2191
2191
|
|
|
2192
2192
|
this.incomingSessions = [];
|
package/esm/index.js
CHANGED
|
@@ -4926,6 +4926,34 @@ var chatdMethods = (client , baseUrl ) => ({
|
|
|
4926
4926
|
client.get(`${baseUrl}/users/me/rooms/messages`, options),
|
|
4927
4927
|
});
|
|
4928
4928
|
|
|
4929
|
+
//
|
|
4930
|
+
|
|
4931
|
+
|
|
4932
|
+
|
|
4933
|
+
|
|
4934
|
+
|
|
4935
|
+
class MeetingStatus {
|
|
4936
|
+
|
|
4937
|
+
|
|
4938
|
+
|
|
4939
|
+
|
|
4940
|
+
constructor({
|
|
4941
|
+
full,
|
|
4942
|
+
} = {}) {
|
|
4943
|
+
this.full = full;
|
|
4944
|
+
|
|
4945
|
+
// Useful to compare instead of instanceof with minified code
|
|
4946
|
+
this.type = 'MeetingStatus';
|
|
4947
|
+
}
|
|
4948
|
+
|
|
4949
|
+
static parse(plain ) {
|
|
4950
|
+
return new MeetingStatus({
|
|
4951
|
+
full: plain.full,
|
|
4952
|
+
});
|
|
4953
|
+
}
|
|
4954
|
+
|
|
4955
|
+
}
|
|
4956
|
+
|
|
4929
4957
|
/* */
|
|
4930
4958
|
|
|
4931
4959
|
|
|
@@ -5120,6 +5148,8 @@ var calldMethods = (client , baseUrl ) => ({
|
|
|
5120
5148
|
client.put(`${baseUrl}/users/me/calls/${callId}/record/resume`, null, null,
|
|
5121
5149
|
ApiRequester.successResponseParser),
|
|
5122
5150
|
|
|
5151
|
+
guestGetMeetingStatus: (meetingUuid ) =>
|
|
5152
|
+
client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}/status`).then(MeetingStatus.parse),
|
|
5123
5153
|
});
|
|
5124
5154
|
|
|
5125
5155
|
//
|
|
@@ -6241,6 +6271,7 @@ class WebRTCClient extends Emitter {
|
|
|
6241
6271
|
|
|
6242
6272
|
|
|
6243
6273
|
|
|
6274
|
+
|
|
6244
6275
|
|
|
6245
6276
|
// sugar
|
|
6246
6277
|
|
|
@@ -6303,6 +6334,7 @@ class WebRTCClient extends Emitter {
|
|
|
6303
6334
|
this.conferences = {};
|
|
6304
6335
|
this.networkMonitoringInterval = {};
|
|
6305
6336
|
this.sessionNetworkStats = {};
|
|
6337
|
+
this.forceClosed = false;
|
|
6306
6338
|
|
|
6307
6339
|
this._boundOnHeartbeat = this._onHeartbeat.bind(this);
|
|
6308
6340
|
this.heartbeat = new Heartbeat(config.heartbeatDelay, config.heartbeatTimeout, config.maxHeartbeats);
|
|
@@ -6424,6 +6456,8 @@ class WebRTCClient extends Emitter {
|
|
|
6424
6456
|
skipRegister: this.skipRegister,
|
|
6425
6457
|
};
|
|
6426
6458
|
|
|
6459
|
+
this.forceClosed = false;
|
|
6460
|
+
|
|
6427
6461
|
if (this.skipRegister) {
|
|
6428
6462
|
logger$9.info('sdk webrtc skip register...', logInfo);
|
|
6429
6463
|
return Promise.resolve();
|
|
@@ -6448,7 +6482,15 @@ class WebRTCClient extends Emitter {
|
|
|
6448
6482
|
const registerOptions = this._isWeb() ? {} : { extraContactHeaderParams: ['mobility=mobile'] };
|
|
6449
6483
|
|
|
6450
6484
|
const onRegisterFailed = () => {
|
|
6451
|
-
logger$9.info('sdk webrtc registering failed', {
|
|
6485
|
+
logger$9.info('sdk webrtc registering failed', {
|
|
6486
|
+
tries,
|
|
6487
|
+
registerer: !!this.registerer,
|
|
6488
|
+
forceClosed: this.forceClosed,
|
|
6489
|
+
});
|
|
6490
|
+
if (this.forceClosed) {
|
|
6491
|
+
return;
|
|
6492
|
+
}
|
|
6493
|
+
|
|
6452
6494
|
this.connectionPromise = null;
|
|
6453
6495
|
if (this.registerer && this.registerer.waiting) {
|
|
6454
6496
|
this.registerer.waitingToggle(false);
|
|
@@ -6726,8 +6768,9 @@ class WebRTCClient extends Emitter {
|
|
|
6726
6768
|
}
|
|
6727
6769
|
}
|
|
6728
6770
|
|
|
6729
|
-
async close() {
|
|
6730
|
-
logger$9.info('sdk webrtc closing client', { userAgent: !!this.userAgent });
|
|
6771
|
+
async close(force = false) {
|
|
6772
|
+
logger$9.info('sdk webrtc closing client', { userAgent: !!this.userAgent, force });
|
|
6773
|
+
this.forceClosed = force;
|
|
6731
6774
|
this._cleanupMedia();
|
|
6732
6775
|
this.connectionPromise = null;
|
|
6733
6776
|
|
|
@@ -6746,7 +6789,7 @@ class WebRTCClient extends Emitter {
|
|
|
6746
6789
|
this.userAgent.delegate = null;
|
|
6747
6790
|
this.userAgent.stateChange.removeAllListeners();
|
|
6748
6791
|
|
|
6749
|
-
await this._disconnectTransport();
|
|
6792
|
+
await this._disconnectTransport(force);
|
|
6750
6793
|
|
|
6751
6794
|
this._cleanupRegister();
|
|
6752
6795
|
|
|
@@ -8182,7 +8225,15 @@ class WebRTCClient extends Emitter {
|
|
|
8182
8225
|
return UserAgent.makeURI(`sip:${target}@${this.config.host}`);
|
|
8183
8226
|
}
|
|
8184
8227
|
|
|
8185
|
-
async _disconnectTransport() {
|
|
8228
|
+
async _disconnectTransport(force = false) {
|
|
8229
|
+
if (force) {
|
|
8230
|
+
// Bypass sip.js state machine that prevent to close WS with the state `Connecting`
|
|
8231
|
+
this.userAgent.transport.disconnectResolve = () => {};
|
|
8232
|
+
// eslint-disable-next-line
|
|
8233
|
+
this.userAgent.transport._ws.close(1000);
|
|
8234
|
+
return;
|
|
8235
|
+
}
|
|
8236
|
+
|
|
8186
8237
|
// Check if `disconnectPromise` is not present to avoid `Disconnect promise must not be defined` errors.
|
|
8187
8238
|
if (this.userAgent && this.userAgent.transport && !this.userAgent.transport.disconnectPromise) {
|
|
8188
8239
|
try {
|
|
@@ -10490,7 +10541,7 @@ class WebRTCPhone extends Emitter {
|
|
|
10490
10541
|
return this.client && this.client.isConference(callSession.sipCallId);
|
|
10491
10542
|
}
|
|
10492
10543
|
|
|
10493
|
-
async close() {
|
|
10544
|
+
async close(force = false) {
|
|
10494
10545
|
logger$7.info('WebRTC close');
|
|
10495
10546
|
|
|
10496
10547
|
try {
|
|
@@ -10502,7 +10553,7 @@ class WebRTCPhone extends Emitter {
|
|
|
10502
10553
|
logger$7.error('WebRTC close, unregister error', e);
|
|
10503
10554
|
}
|
|
10504
10555
|
|
|
10505
|
-
this.client.close();
|
|
10556
|
+
this.client.close(force);
|
|
10506
10557
|
this.unbind();
|
|
10507
10558
|
|
|
10508
10559
|
this.incomingSessions = [];
|
package/esm/service/CallApi.js
CHANGED
|
@@ -4016,6 +4016,34 @@ class IndirectTransfer {
|
|
|
4016
4016
|
}
|
|
4017
4017
|
}
|
|
4018
4018
|
|
|
4019
|
+
//
|
|
4020
|
+
|
|
4021
|
+
|
|
4022
|
+
|
|
4023
|
+
|
|
4024
|
+
|
|
4025
|
+
class MeetingStatus {
|
|
4026
|
+
|
|
4027
|
+
|
|
4028
|
+
|
|
4029
|
+
|
|
4030
|
+
constructor({
|
|
4031
|
+
full,
|
|
4032
|
+
} = {}) {
|
|
4033
|
+
this.full = full;
|
|
4034
|
+
|
|
4035
|
+
// Useful to compare instead of instanceof with minified code
|
|
4036
|
+
this.type = 'MeetingStatus';
|
|
4037
|
+
}
|
|
4038
|
+
|
|
4039
|
+
static parse(plain ) {
|
|
4040
|
+
return new MeetingStatus({
|
|
4041
|
+
full: plain.full,
|
|
4042
|
+
});
|
|
4043
|
+
}
|
|
4044
|
+
|
|
4045
|
+
}
|
|
4046
|
+
|
|
4019
4047
|
/* */
|
|
4020
4048
|
|
|
4021
4049
|
|
|
@@ -4210,6 +4238,8 @@ var calldMethods = (client , baseUrl ) => ({
|
|
|
4210
4238
|
client.put(`${baseUrl}/users/me/calls/${callId}/record/resume`, null, null,
|
|
4211
4239
|
ApiRequester.successResponseParser),
|
|
4212
4240
|
|
|
4241
|
+
guestGetMeetingStatus: (meetingUuid ) =>
|
|
4242
|
+
client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}/status`).then(MeetingStatus.parse),
|
|
4213
4243
|
});
|
|
4214
4244
|
|
|
4215
4245
|
//
|
|
@@ -4016,6 +4016,34 @@ var chatdMethods = (client , baseUrl ) => ({
|
|
|
4016
4016
|
client.get(`${baseUrl}/users/me/rooms/messages`, options),
|
|
4017
4017
|
});
|
|
4018
4018
|
|
|
4019
|
+
//
|
|
4020
|
+
|
|
4021
|
+
|
|
4022
|
+
|
|
4023
|
+
|
|
4024
|
+
|
|
4025
|
+
class MeetingStatus {
|
|
4026
|
+
|
|
4027
|
+
|
|
4028
|
+
|
|
4029
|
+
|
|
4030
|
+
constructor({
|
|
4031
|
+
full,
|
|
4032
|
+
} = {}) {
|
|
4033
|
+
this.full = full;
|
|
4034
|
+
|
|
4035
|
+
// Useful to compare instead of instanceof with minified code
|
|
4036
|
+
this.type = 'MeetingStatus';
|
|
4037
|
+
}
|
|
4038
|
+
|
|
4039
|
+
static parse(plain ) {
|
|
4040
|
+
return new MeetingStatus({
|
|
4041
|
+
full: plain.full,
|
|
4042
|
+
});
|
|
4043
|
+
}
|
|
4044
|
+
|
|
4045
|
+
}
|
|
4046
|
+
|
|
4019
4047
|
/* */
|
|
4020
4048
|
|
|
4021
4049
|
|
|
@@ -4210,6 +4238,8 @@ var calldMethods = (client , baseUrl ) => ({
|
|
|
4210
4238
|
client.put(`${baseUrl}/users/me/calls/${callId}/record/resume`, null, null,
|
|
4211
4239
|
ApiRequester.successResponseParser),
|
|
4212
4240
|
|
|
4241
|
+
guestGetMeetingStatus: (meetingUuid ) =>
|
|
4242
|
+
client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}/status`).then(MeetingStatus.parse),
|
|
4213
4243
|
});
|
|
4214
4244
|
|
|
4215
4245
|
//
|