@wazo/sdk 0.46.0-rc.0 → 0.46.0-rc.1
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/index.js +127 -23
- package/dist/index.mjs +127 -23
- package/dist/types/api/auth.d.ts +2 -1
- package/dist/types/api/auth.d.ts.map +1 -1
- package/dist/types/domain/Phone/WebRTCPhone.d.ts +3 -1
- package/dist/types/domain/Phone/WebRTCPhone.d.ts.map +1 -1
- package/dist/types/domain/types.d.ts +8 -0
- package/dist/types/domain/types.d.ts.map +1 -1
- package/dist/types/service/IssueReporter.d.ts +18 -1
- package/dist/types/service/IssueReporter.d.ts.map +1 -1
- package/dist/types/simple/Phone.d.ts +3 -1
- package/dist/types/simple/Phone.d.ts.map +1 -1
- package/dist/types/simple/index.d.ts +47 -2
- package/dist/types/simple/index.d.ts.map +1 -1
- package/dist/types/web-rtc-client.d.ts +10 -1
- package/dist/types/web-rtc-client.d.ts.map +1 -1
- package/dist/wazo-sdk.js +127 -23
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -137,8 +137,10 @@ __webpack_require__.d(WebRTCPhone_namespaceObject, {
|
|
|
137
137
|
ON_CAMERA_DISABLED: ()=>ON_CAMERA_DISABLED,
|
|
138
138
|
ON_CAMERA_RESUMED: ()=>ON_CAMERA_RESUMED,
|
|
139
139
|
ON_CHAT: ()=>ON_CHAT,
|
|
140
|
-
ON_DISCONNECTED: ()=>ON_DISCONNECTED,
|
|
141
140
|
ON_EARLY_MEDIA: ()=>ON_EARLY_MEDIA,
|
|
141
|
+
ON_ICE_DISCONNECTED: ()=>ON_ICE_DISCONNECTED,
|
|
142
|
+
ON_ICE_RECONNECTED: ()=>ON_ICE_RECONNECTED,
|
|
143
|
+
ON_ICE_RECONNECTING: ()=>ON_ICE_RECONNECTING,
|
|
142
144
|
ON_MESSAGE: ()=>ON_MESSAGE,
|
|
143
145
|
ON_MESSAGE_TRACK_UPDATED: ()=>ON_MESSAGE_TRACK_UPDATED,
|
|
144
146
|
ON_NETWORK_STATS: ()=>ON_NETWORK_STATS,
|
|
@@ -301,7 +303,7 @@ const LOG_LEVELS = [
|
|
|
301
303
|
];
|
|
302
304
|
const CATEGORY_PREFIX = 'logger-category=';
|
|
303
305
|
const MAX_REMOTE_RETRY = 10;
|
|
304
|
-
|
|
306
|
+
function addLevelsTo(instance, withMethods = false) {
|
|
305
307
|
instance.TRACE = TRACE;
|
|
306
308
|
instance.DEBUG = DEBUG;
|
|
307
309
|
instance.INFO = INFO;
|
|
@@ -335,7 +337,7 @@ const addLevelsTo = (instance, withMethods = false)=>{
|
|
|
335
337
|
]);
|
|
336
338
|
}
|
|
337
339
|
return instance;
|
|
338
|
-
}
|
|
340
|
+
}
|
|
339
341
|
const safeStringify = (object)=>{
|
|
340
342
|
const result = '{"message": "Not parsable JSON"}';
|
|
341
343
|
try {
|
|
@@ -1748,6 +1750,7 @@ const auth = (client, baseUrl)=>({
|
|
|
1748
1750
|
};
|
|
1749
1751
|
return client.put(`${baseUrl}/users/${userUuid}/password`, body, null, ApiRequester.successResponseParser);
|
|
1750
1752
|
},
|
|
1753
|
+
getDeviceToken: (userUuid)=>client.get(`${baseUrl}/users/${userUuid}/external/mobile`),
|
|
1751
1754
|
sendDeviceToken: (userUuid, deviceToken, apnsVoipToken, apnsNotificationToken)=>{
|
|
1752
1755
|
const body = {
|
|
1753
1756
|
token: deviceToken
|
|
@@ -4460,7 +4463,9 @@ const ON_MESSAGE_TRACK_UPDATED = 'onTrackUpdated';
|
|
|
4460
4463
|
const ON_NETWORK_STATS = 'onNetworkStats';
|
|
4461
4464
|
const ON_CHAT = 'phone/ON_CHAT';
|
|
4462
4465
|
const ON_SIGNAL = 'phone/ON_SIGNAL';
|
|
4463
|
-
const
|
|
4466
|
+
const ON_ICE_DISCONNECTED = 'onIceDisconnected';
|
|
4467
|
+
const ON_ICE_RECONNECTING = 'onIceReconnecting';
|
|
4468
|
+
const ON_ICE_RECONNECTED = 'onIceReconnected';
|
|
4464
4469
|
const ON_EARLY_MEDIA = 'onEarlyMedia';
|
|
4465
4470
|
const MESSAGE_TYPE_CHAT = 'message/TYPE_CHAT';
|
|
4466
4471
|
const MESSAGE_TYPE_SIGNAL = 'message/TYPE_SIGNAL';
|
|
@@ -4500,7 +4505,7 @@ const WebRTCPhone_events = [
|
|
|
4500
4505
|
ON_CHAT,
|
|
4501
4506
|
ON_SIGNAL,
|
|
4502
4507
|
ON_NETWORK_STATS,
|
|
4503
|
-
|
|
4508
|
+
ON_ICE_DISCONNECTED,
|
|
4504
4509
|
ON_EARLY_MEDIA
|
|
4505
4510
|
];
|
|
4506
4511
|
const WebRTCPhone_logger = IssueReporter.loggerFor('webrtc-phone');
|
|
@@ -5520,9 +5525,17 @@ class WebRTCPhone extends Emitter {
|
|
|
5520
5525
|
WebRTCPhone_logger.info('WebRTC unregistered');
|
|
5521
5526
|
this.eventEmitter.emit(ON_UNREGISTERED);
|
|
5522
5527
|
});
|
|
5523
|
-
this.client.on(this.client.
|
|
5524
|
-
WebRTCPhone_logger.info('
|
|
5525
|
-
this.eventEmitter.emit(
|
|
5528
|
+
this.client.on(this.client.ON_ICE_DISCONNECTED, ()=>{
|
|
5529
|
+
WebRTCPhone_logger.info('ICE connection disconnected');
|
|
5530
|
+
this.eventEmitter.emit(ON_ICE_DISCONNECTED);
|
|
5531
|
+
});
|
|
5532
|
+
this.client.on(this.client.ON_ICE_RECONNECTING, ()=>{
|
|
5533
|
+
WebRTCPhone_logger.info('ICE connection reconnecting');
|
|
5534
|
+
this.eventEmitter.emit(ON_ICE_RECONNECTING);
|
|
5535
|
+
});
|
|
5536
|
+
this.client.on(this.client.ON_ICE_RECONNECTED, ()=>{
|
|
5537
|
+
WebRTCPhone_logger.info('ICE connection reconnected');
|
|
5538
|
+
this.eventEmitter.emit(ON_ICE_RECONNECTED);
|
|
5526
5539
|
});
|
|
5527
5540
|
this.client.on(this.client.ON_PROGRESS, (session)=>{
|
|
5528
5541
|
WebRTCPhone_logger.info('WebRTC progress (180)');
|
|
@@ -6137,7 +6150,8 @@ const replaceLocalIpModifier = (description)=>Promise.resolve({
|
|
|
6137
6150
|
});
|
|
6138
6151
|
const DEFAULT_ICE_TIMEOUT = 3000;
|
|
6139
6152
|
const SEND_STATS_DELAY = 5000;
|
|
6140
|
-
const MAX_ICE_RECONNECT_ATTEMPTS =
|
|
6153
|
+
const MAX_ICE_RECONNECT_ATTEMPTS = 5;
|
|
6154
|
+
const DEFAULT_ICE_RECONNECT_DELAY = 500;
|
|
6141
6155
|
const states = [
|
|
6142
6156
|
'STATUS_NULL',
|
|
6143
6157
|
'STATUS_NEW',
|
|
@@ -6164,7 +6178,9 @@ const web_rtc_client_ON_REINVITE = 'reinvite';
|
|
|
6164
6178
|
const ON_ERROR = 'onError';
|
|
6165
6179
|
const ON_SCREEN_SHARING_REINVITE = 'onScreenSharingReinvite';
|
|
6166
6180
|
const web_rtc_client_ON_NETWORK_STATS = 'onNetworkStats';
|
|
6167
|
-
const
|
|
6181
|
+
const web_rtc_client_ON_ICE_DISCONNECTED = 'onIceDisconnected';
|
|
6182
|
+
const web_rtc_client_ON_ICE_RECONNECTING = 'onIceReconnecting';
|
|
6183
|
+
const web_rtc_client_ON_ICE_RECONNECTED = 'onIceReconnected';
|
|
6168
6184
|
const web_rtc_client_events = [
|
|
6169
6185
|
REGISTERED,
|
|
6170
6186
|
UNREGISTERED,
|
|
@@ -6208,6 +6224,7 @@ class WebRTCClient extends Emitter {
|
|
|
6208
6224
|
sessionNetworkStats;
|
|
6209
6225
|
forceClosed;
|
|
6210
6226
|
iceReconnectAttempts;
|
|
6227
|
+
iceReconnectDelay;
|
|
6211
6228
|
ON_USER_AGENT;
|
|
6212
6229
|
REGISTERED;
|
|
6213
6230
|
UNREGISTERED;
|
|
@@ -6226,7 +6243,9 @@ class WebRTCClient extends Emitter {
|
|
|
6226
6243
|
ON_NETWORK_STATS;
|
|
6227
6244
|
ON_EARLY_MEDIA;
|
|
6228
6245
|
ON_PROGRESS;
|
|
6229
|
-
|
|
6246
|
+
ON_ICE_DISCONNECTED;
|
|
6247
|
+
ON_ICE_RECONNECTING;
|
|
6248
|
+
ON_ICE_RECONNECTED;
|
|
6230
6249
|
static isAPrivateIp(ip) {
|
|
6231
6250
|
const regex = /^(?:10|127|172\.(?:1[6-9]|2[0-9]|3[01])|192\.168)\..*/;
|
|
6232
6251
|
return null == regex.exec(ip);
|
|
@@ -6273,6 +6292,7 @@ class WebRTCClient extends Emitter {
|
|
|
6273
6292
|
this.sessionNetworkStats = {};
|
|
6274
6293
|
this.forceClosed = false;
|
|
6275
6294
|
this.iceReconnectAttempts = {};
|
|
6295
|
+
this.iceReconnectDelay = config.iceReconnectDelay || DEFAULT_ICE_RECONNECT_DELAY;
|
|
6276
6296
|
this._boundOnHeartbeat = this._onHeartbeat.bind(this);
|
|
6277
6297
|
this.heartbeat = new Heartbeat(config.heartbeatDelay, config.heartbeatTimeout, config.maxHeartbeats);
|
|
6278
6298
|
this.heartbeat.setSendHeartbeat(this.pingServer.bind(this));
|
|
@@ -6292,9 +6312,11 @@ class WebRTCClient extends Emitter {
|
|
|
6292
6312
|
this.ON_ERROR = ON_ERROR;
|
|
6293
6313
|
this.ON_SCREEN_SHARING_REINVITE = ON_SCREEN_SHARING_REINVITE;
|
|
6294
6314
|
this.ON_NETWORK_STATS = web_rtc_client_ON_NETWORK_STATS;
|
|
6295
|
-
this.
|
|
6315
|
+
this.ON_ICE_DISCONNECTED = web_rtc_client_ON_ICE_DISCONNECTED;
|
|
6296
6316
|
this.ON_EARLY_MEDIA = web_rtc_client_ON_EARLY_MEDIA;
|
|
6297
6317
|
this.ON_PROGRESS = web_rtc_client_ON_PROGRESS;
|
|
6318
|
+
this.ON_ICE_RECONNECTING = web_rtc_client_ON_ICE_RECONNECTING;
|
|
6319
|
+
this.ON_ICE_RECONNECTED = web_rtc_client_ON_ICE_RECONNECTED;
|
|
6298
6320
|
}
|
|
6299
6321
|
configureMedia(media) {
|
|
6300
6322
|
this.hasAudio = !!media.audio;
|
|
@@ -6448,8 +6470,15 @@ class WebRTCClient extends Emitter {
|
|
|
6448
6470
|
newState,
|
|
6449
6471
|
clientId: this.clientId
|
|
6450
6472
|
});
|
|
6451
|
-
if (newState === registerer_state_namespaceObject.RegistererState.Registered && this.registerer
|
|
6452
|
-
|
|
6473
|
+
if (newState === registerer_state_namespaceObject.RegistererState.Registered && this.registerer?.state === registerer_state_namespaceObject.RegistererState.Registered) {
|
|
6474
|
+
this.warmupIceConnectivity().catch((error)=>{
|
|
6475
|
+
web_rtc_client_logger.warn('ICE warmup after registration failed', {
|
|
6476
|
+
error: error.message,
|
|
6477
|
+
clientId: this.clientId
|
|
6478
|
+
});
|
|
6479
|
+
});
|
|
6480
|
+
this.eventEmitter.emit(REGISTERED);
|
|
6481
|
+
} else if (newState === registerer_state_namespaceObject.RegistererState.Unregistered) this.eventEmitter.emit(UNREGISTERED);
|
|
6453
6482
|
});
|
|
6454
6483
|
const options = {
|
|
6455
6484
|
requestDelegate: {
|
|
@@ -7295,6 +7324,75 @@ class WebRTCClient extends Emitter {
|
|
|
7295
7324
|
this._stopSendingStats(session);
|
|
7296
7325
|
this.stopNetworkMonitoring(session);
|
|
7297
7326
|
}
|
|
7327
|
+
async warmupIceConnectivity() {
|
|
7328
|
+
if (!this.config.iceWarmup) {
|
|
7329
|
+
web_rtc_client_logger.info('ICE warmup disabled in configuration', {
|
|
7330
|
+
clientId: this.clientId
|
|
7331
|
+
});
|
|
7332
|
+
return;
|
|
7333
|
+
}
|
|
7334
|
+
const config = {
|
|
7335
|
+
iceServers: this.uaConfigOverrides?.peerConnectionOptions?.iceServers || WebRTCClient.getIceServers(this.config.host)
|
|
7336
|
+
};
|
|
7337
|
+
web_rtc_client_logger.info('Starting ICE connectivity warmup', {
|
|
7338
|
+
clientId: this.clientId,
|
|
7339
|
+
config
|
|
7340
|
+
});
|
|
7341
|
+
try {
|
|
7342
|
+
const pc = new RTCPeerConnection(config);
|
|
7343
|
+
pc.createDataChannel('warmup');
|
|
7344
|
+
const candidates = [];
|
|
7345
|
+
pc.onicecandidate = (event)=>{
|
|
7346
|
+
if (event.candidate) {
|
|
7347
|
+
candidates.push(event.candidate);
|
|
7348
|
+
web_rtc_client_logger.debug('ICE warmup candidate gathered', {
|
|
7349
|
+
candidate: event.candidate.candidate,
|
|
7350
|
+
type: event.candidate.type
|
|
7351
|
+
});
|
|
7352
|
+
} else web_rtc_client_logger.info('ICE warmup completed', {
|
|
7353
|
+
totalCandidates: candidates.length,
|
|
7354
|
+
clientId: this.clientId
|
|
7355
|
+
});
|
|
7356
|
+
};
|
|
7357
|
+
const offer = await pc.createOffer();
|
|
7358
|
+
await pc.setLocalDescription(offer);
|
|
7359
|
+
await new Promise((resolve, reject)=>{
|
|
7360
|
+
const timeout = setTimeout(()=>{
|
|
7361
|
+
web_rtc_client_logger.warn('ICE warmup timed out', {
|
|
7362
|
+
clientId: this.clientId
|
|
7363
|
+
});
|
|
7364
|
+
resolve();
|
|
7365
|
+
}, 10000);
|
|
7366
|
+
pc.onicegatheringstatechange = ()=>{
|
|
7367
|
+
if ('complete' === pc.iceGatheringState) {
|
|
7368
|
+
clearTimeout(timeout);
|
|
7369
|
+
web_rtc_client_logger.info('ICE warmup gathering completed', {
|
|
7370
|
+
candidates: candidates.length,
|
|
7371
|
+
clientId: this.clientId
|
|
7372
|
+
});
|
|
7373
|
+
resolve();
|
|
7374
|
+
}
|
|
7375
|
+
};
|
|
7376
|
+
if (candidates.length > 0) setTimeout(()=>{
|
|
7377
|
+
clearTimeout(timeout);
|
|
7378
|
+
web_rtc_client_logger.info('ICE warmup resolved with candidates', {
|
|
7379
|
+
candidates: candidates.length,
|
|
7380
|
+
clientId: this.clientId
|
|
7381
|
+
});
|
|
7382
|
+
resolve();
|
|
7383
|
+
}, 5000);
|
|
7384
|
+
});
|
|
7385
|
+
pc.close();
|
|
7386
|
+
web_rtc_client_logger.info('ICE warmup completed successfully', {
|
|
7387
|
+
clientId: this.clientId
|
|
7388
|
+
});
|
|
7389
|
+
} catch (error) {
|
|
7390
|
+
web_rtc_client_logger.warn('ICE warmup failed', {
|
|
7391
|
+
error: error.message,
|
|
7392
|
+
clientId: this.clientId
|
|
7393
|
+
});
|
|
7394
|
+
}
|
|
7395
|
+
}
|
|
7298
7396
|
attemptReconnection() {
|
|
7299
7397
|
web_rtc_client_logger.info('attempt reconnection', {
|
|
7300
7398
|
clientId: this.clientId,
|
|
@@ -7680,24 +7778,29 @@ class WebRTCClient extends Emitter {
|
|
|
7680
7778
|
if ('disconnected' === pc.iceConnectionState) {
|
|
7681
7779
|
const attempts = this.iceReconnectAttempts[currentSessionId] || 0;
|
|
7682
7780
|
if (attempts < MAX_ICE_RECONNECT_ATTEMPTS) {
|
|
7781
|
+
this.eventEmitter.emit(web_rtc_client_ON_ICE_RECONNECTING, session);
|
|
7683
7782
|
this.iceReconnectAttempts[currentSessionId] = attempts + 1;
|
|
7684
7783
|
web_rtc_client_logger.info('ICE connection disconnected, attempting to reconnect...', {
|
|
7685
7784
|
sessionId: currentSessionId,
|
|
7686
7785
|
attempt: attempts + 1
|
|
7687
7786
|
});
|
|
7688
7787
|
const isConference = this.isConference(currentSessionId);
|
|
7689
|
-
|
|
7788
|
+
setTimeout(()=>{
|
|
7789
|
+
this.reinvite(session, null, isConference, false, true);
|
|
7790
|
+
}, this.iceReconnectDelay);
|
|
7690
7791
|
} else {
|
|
7691
7792
|
web_rtc_client_logger.warn('ICE reconnection failed after max attempts', {
|
|
7692
7793
|
sessionId: currentSessionId
|
|
7693
7794
|
});
|
|
7694
|
-
this.eventEmitter.emit(
|
|
7795
|
+
this.eventEmitter.emit(web_rtc_client_ON_ICE_DISCONNECTED, session);
|
|
7695
7796
|
}
|
|
7696
7797
|
} else if ('connected' === pc.iceConnectionState || 'completed' === pc.iceConnectionState) {
|
|
7697
|
-
if (this.iceReconnectAttempts[currentSessionId] > 0)
|
|
7698
|
-
|
|
7699
|
-
|
|
7700
|
-
|
|
7798
|
+
if (this.iceReconnectAttempts[currentSessionId] > 0) {
|
|
7799
|
+
this.eventEmitter.emit(web_rtc_client_ON_ICE_RECONNECTED, session);
|
|
7800
|
+
web_rtc_client_logger.info('ICE reconnected successfully', {
|
|
7801
|
+
sessionId: currentSessionId
|
|
7802
|
+
});
|
|
7803
|
+
}
|
|
7701
7804
|
}
|
|
7702
7805
|
};
|
|
7703
7806
|
}
|
|
@@ -7730,7 +7833,6 @@ class WebRTCClient extends Emitter {
|
|
|
7730
7833
|
sessionId,
|
|
7731
7834
|
error
|
|
7732
7835
|
});
|
|
7733
|
-
return;
|
|
7734
7836
|
}
|
|
7735
7837
|
const audioElement = this.audioElements[sessionId];
|
|
7736
7838
|
if (!audioElement) {
|
|
@@ -7770,7 +7872,7 @@ class WebRTCClient extends Emitter {
|
|
|
7770
7872
|
audioElement.srcObject = stream;
|
|
7771
7873
|
audioElement.volume = this.audioOutputVolume;
|
|
7772
7874
|
try {
|
|
7773
|
-
|
|
7875
|
+
audioElement.play();
|
|
7774
7876
|
web_rtc_client_logger.info('Audio element play() successful', {
|
|
7775
7877
|
sessionId
|
|
7776
7878
|
});
|
|
@@ -8159,7 +8261,9 @@ class Phone_Phone extends Emitter {
|
|
|
8159
8261
|
ON_NETWORK_STATS;
|
|
8160
8262
|
ON_CHAT;
|
|
8161
8263
|
ON_SIGNAL;
|
|
8162
|
-
|
|
8264
|
+
ON_ICE_DISCONNECTED;
|
|
8265
|
+
ON_ICE_RECONNECTING;
|
|
8266
|
+
ON_ICE_RECONNECTED;
|
|
8163
8267
|
ON_EARLY_MEDIA;
|
|
8164
8268
|
MESSAGE_TYPE_CHAT;
|
|
8165
8269
|
MESSAGE_TYPE_SIGNAL;
|
package/dist/index.mjs
CHANGED
|
@@ -80,8 +80,10 @@ __webpack_require__.d(WebRTCPhone_namespaceObject, {
|
|
|
80
80
|
ON_CAMERA_DISABLED: ()=>ON_CAMERA_DISABLED,
|
|
81
81
|
ON_CAMERA_RESUMED: ()=>ON_CAMERA_RESUMED,
|
|
82
82
|
ON_CHAT: ()=>ON_CHAT,
|
|
83
|
-
ON_DISCONNECTED: ()=>ON_DISCONNECTED,
|
|
84
83
|
ON_EARLY_MEDIA: ()=>ON_EARLY_MEDIA,
|
|
84
|
+
ON_ICE_DISCONNECTED: ()=>ON_ICE_DISCONNECTED,
|
|
85
|
+
ON_ICE_RECONNECTED: ()=>ON_ICE_RECONNECTED,
|
|
86
|
+
ON_ICE_RECONNECTING: ()=>ON_ICE_RECONNECTING,
|
|
85
87
|
ON_MESSAGE: ()=>ON_MESSAGE,
|
|
86
88
|
ON_MESSAGE_TRACK_UPDATED: ()=>ON_MESSAGE_TRACK_UPDATED,
|
|
87
89
|
ON_NETWORK_STATS: ()=>ON_NETWORK_STATS,
|
|
@@ -241,7 +243,7 @@ const LOG_LEVELS = [
|
|
|
241
243
|
];
|
|
242
244
|
const CATEGORY_PREFIX = 'logger-category=';
|
|
243
245
|
const MAX_REMOTE_RETRY = 10;
|
|
244
|
-
|
|
246
|
+
function addLevelsTo(instance, withMethods = false) {
|
|
245
247
|
instance.TRACE = TRACE;
|
|
246
248
|
instance.DEBUG = DEBUG;
|
|
247
249
|
instance.INFO = INFO;
|
|
@@ -275,7 +277,7 @@ const addLevelsTo = (instance, withMethods = false)=>{
|
|
|
275
277
|
]);
|
|
276
278
|
}
|
|
277
279
|
return instance;
|
|
278
|
-
}
|
|
280
|
+
}
|
|
279
281
|
const safeStringify = (object)=>{
|
|
280
282
|
const result = '{"message": "Not parsable JSON"}';
|
|
281
283
|
try {
|
|
@@ -1687,6 +1689,7 @@ const auth = (client, baseUrl)=>({
|
|
|
1687
1689
|
};
|
|
1688
1690
|
return client.put(`${baseUrl}/users/${userUuid}/password`, body, null, ApiRequester.successResponseParser);
|
|
1689
1691
|
},
|
|
1692
|
+
getDeviceToken: (userUuid)=>client.get(`${baseUrl}/users/${userUuid}/external/mobile`),
|
|
1690
1693
|
sendDeviceToken: (userUuid, deviceToken, apnsVoipToken, apnsNotificationToken)=>{
|
|
1691
1694
|
const body = {
|
|
1692
1695
|
token: deviceToken
|
|
@@ -4394,7 +4397,9 @@ const ON_MESSAGE_TRACK_UPDATED = 'onTrackUpdated';
|
|
|
4394
4397
|
const ON_NETWORK_STATS = 'onNetworkStats';
|
|
4395
4398
|
const ON_CHAT = 'phone/ON_CHAT';
|
|
4396
4399
|
const ON_SIGNAL = 'phone/ON_SIGNAL';
|
|
4397
|
-
const
|
|
4400
|
+
const ON_ICE_DISCONNECTED = 'onIceDisconnected';
|
|
4401
|
+
const ON_ICE_RECONNECTING = 'onIceReconnecting';
|
|
4402
|
+
const ON_ICE_RECONNECTED = 'onIceReconnected';
|
|
4398
4403
|
const ON_EARLY_MEDIA = 'onEarlyMedia';
|
|
4399
4404
|
const MESSAGE_TYPE_CHAT = 'message/TYPE_CHAT';
|
|
4400
4405
|
const MESSAGE_TYPE_SIGNAL = 'message/TYPE_SIGNAL';
|
|
@@ -4434,7 +4439,7 @@ const WebRTCPhone_events = [
|
|
|
4434
4439
|
ON_CHAT,
|
|
4435
4440
|
ON_SIGNAL,
|
|
4436
4441
|
ON_NETWORK_STATS,
|
|
4437
|
-
|
|
4442
|
+
ON_ICE_DISCONNECTED,
|
|
4438
4443
|
ON_EARLY_MEDIA
|
|
4439
4444
|
];
|
|
4440
4445
|
const WebRTCPhone_logger = IssueReporter.loggerFor('webrtc-phone');
|
|
@@ -5454,9 +5459,17 @@ class WebRTCPhone extends Emitter {
|
|
|
5454
5459
|
WebRTCPhone_logger.info('WebRTC unregistered');
|
|
5455
5460
|
this.eventEmitter.emit(ON_UNREGISTERED);
|
|
5456
5461
|
});
|
|
5457
|
-
this.client.on(this.client.
|
|
5458
|
-
WebRTCPhone_logger.info('
|
|
5459
|
-
this.eventEmitter.emit(
|
|
5462
|
+
this.client.on(this.client.ON_ICE_DISCONNECTED, ()=>{
|
|
5463
|
+
WebRTCPhone_logger.info('ICE connection disconnected');
|
|
5464
|
+
this.eventEmitter.emit(ON_ICE_DISCONNECTED);
|
|
5465
|
+
});
|
|
5466
|
+
this.client.on(this.client.ON_ICE_RECONNECTING, ()=>{
|
|
5467
|
+
WebRTCPhone_logger.info('ICE connection reconnecting');
|
|
5468
|
+
this.eventEmitter.emit(ON_ICE_RECONNECTING);
|
|
5469
|
+
});
|
|
5470
|
+
this.client.on(this.client.ON_ICE_RECONNECTED, ()=>{
|
|
5471
|
+
WebRTCPhone_logger.info('ICE connection reconnected');
|
|
5472
|
+
this.eventEmitter.emit(ON_ICE_RECONNECTED);
|
|
5460
5473
|
});
|
|
5461
5474
|
this.client.on(this.client.ON_PROGRESS, (session)=>{
|
|
5462
5475
|
WebRTCPhone_logger.info('WebRTC progress (180)');
|
|
@@ -6054,7 +6067,8 @@ const replaceLocalIpModifier = (description)=>Promise.resolve({
|
|
|
6054
6067
|
});
|
|
6055
6068
|
const DEFAULT_ICE_TIMEOUT = 3000;
|
|
6056
6069
|
const SEND_STATS_DELAY = 5000;
|
|
6057
|
-
const MAX_ICE_RECONNECT_ATTEMPTS =
|
|
6070
|
+
const MAX_ICE_RECONNECT_ATTEMPTS = 5;
|
|
6071
|
+
const DEFAULT_ICE_RECONNECT_DELAY = 500;
|
|
6058
6072
|
const states = [
|
|
6059
6073
|
'STATUS_NULL',
|
|
6060
6074
|
'STATUS_NEW',
|
|
@@ -6081,7 +6095,9 @@ const web_rtc_client_ON_REINVITE = 'reinvite';
|
|
|
6081
6095
|
const ON_ERROR = 'onError';
|
|
6082
6096
|
const ON_SCREEN_SHARING_REINVITE = 'onScreenSharingReinvite';
|
|
6083
6097
|
const web_rtc_client_ON_NETWORK_STATS = 'onNetworkStats';
|
|
6084
|
-
const
|
|
6098
|
+
const web_rtc_client_ON_ICE_DISCONNECTED = 'onIceDisconnected';
|
|
6099
|
+
const web_rtc_client_ON_ICE_RECONNECTING = 'onIceReconnecting';
|
|
6100
|
+
const web_rtc_client_ON_ICE_RECONNECTED = 'onIceReconnected';
|
|
6085
6101
|
const web_rtc_client_events = [
|
|
6086
6102
|
REGISTERED,
|
|
6087
6103
|
UNREGISTERED,
|
|
@@ -6125,6 +6141,7 @@ class WebRTCClient extends Emitter {
|
|
|
6125
6141
|
sessionNetworkStats;
|
|
6126
6142
|
forceClosed;
|
|
6127
6143
|
iceReconnectAttempts;
|
|
6144
|
+
iceReconnectDelay;
|
|
6128
6145
|
ON_USER_AGENT;
|
|
6129
6146
|
REGISTERED;
|
|
6130
6147
|
UNREGISTERED;
|
|
@@ -6143,7 +6160,9 @@ class WebRTCClient extends Emitter {
|
|
|
6143
6160
|
ON_NETWORK_STATS;
|
|
6144
6161
|
ON_EARLY_MEDIA;
|
|
6145
6162
|
ON_PROGRESS;
|
|
6146
|
-
|
|
6163
|
+
ON_ICE_DISCONNECTED;
|
|
6164
|
+
ON_ICE_RECONNECTING;
|
|
6165
|
+
ON_ICE_RECONNECTED;
|
|
6147
6166
|
static isAPrivateIp(ip) {
|
|
6148
6167
|
const regex = /^(?:10|127|172\.(?:1[6-9]|2[0-9]|3[01])|192\.168)\..*/;
|
|
6149
6168
|
return null == regex.exec(ip);
|
|
@@ -6190,6 +6209,7 @@ class WebRTCClient extends Emitter {
|
|
|
6190
6209
|
this.sessionNetworkStats = {};
|
|
6191
6210
|
this.forceClosed = false;
|
|
6192
6211
|
this.iceReconnectAttempts = {};
|
|
6212
|
+
this.iceReconnectDelay = config.iceReconnectDelay || DEFAULT_ICE_RECONNECT_DELAY;
|
|
6193
6213
|
this._boundOnHeartbeat = this._onHeartbeat.bind(this);
|
|
6194
6214
|
this.heartbeat = new Heartbeat(config.heartbeatDelay, config.heartbeatTimeout, config.maxHeartbeats);
|
|
6195
6215
|
this.heartbeat.setSendHeartbeat(this.pingServer.bind(this));
|
|
@@ -6209,9 +6229,11 @@ class WebRTCClient extends Emitter {
|
|
|
6209
6229
|
this.ON_ERROR = ON_ERROR;
|
|
6210
6230
|
this.ON_SCREEN_SHARING_REINVITE = ON_SCREEN_SHARING_REINVITE;
|
|
6211
6231
|
this.ON_NETWORK_STATS = web_rtc_client_ON_NETWORK_STATS;
|
|
6212
|
-
this.
|
|
6232
|
+
this.ON_ICE_DISCONNECTED = web_rtc_client_ON_ICE_DISCONNECTED;
|
|
6213
6233
|
this.ON_EARLY_MEDIA = web_rtc_client_ON_EARLY_MEDIA;
|
|
6214
6234
|
this.ON_PROGRESS = web_rtc_client_ON_PROGRESS;
|
|
6235
|
+
this.ON_ICE_RECONNECTING = web_rtc_client_ON_ICE_RECONNECTING;
|
|
6236
|
+
this.ON_ICE_RECONNECTED = web_rtc_client_ON_ICE_RECONNECTED;
|
|
6215
6237
|
}
|
|
6216
6238
|
configureMedia(media) {
|
|
6217
6239
|
this.hasAudio = !!media.audio;
|
|
@@ -6365,8 +6387,15 @@ class WebRTCClient extends Emitter {
|
|
|
6365
6387
|
newState,
|
|
6366
6388
|
clientId: this.clientId
|
|
6367
6389
|
});
|
|
6368
|
-
if (newState === __WEBPACK_EXTERNAL_MODULE_sip_js_lib_api_registerer_state_6e58ddd6__.RegistererState.Registered && this.registerer
|
|
6369
|
-
|
|
6390
|
+
if (newState === __WEBPACK_EXTERNAL_MODULE_sip_js_lib_api_registerer_state_6e58ddd6__.RegistererState.Registered && this.registerer?.state === __WEBPACK_EXTERNAL_MODULE_sip_js_lib_api_registerer_state_6e58ddd6__.RegistererState.Registered) {
|
|
6391
|
+
this.warmupIceConnectivity().catch((error)=>{
|
|
6392
|
+
web_rtc_client_logger.warn('ICE warmup after registration failed', {
|
|
6393
|
+
error: error.message,
|
|
6394
|
+
clientId: this.clientId
|
|
6395
|
+
});
|
|
6396
|
+
});
|
|
6397
|
+
this.eventEmitter.emit(REGISTERED);
|
|
6398
|
+
} else if (newState === __WEBPACK_EXTERNAL_MODULE_sip_js_lib_api_registerer_state_6e58ddd6__.RegistererState.Unregistered) this.eventEmitter.emit(UNREGISTERED);
|
|
6370
6399
|
});
|
|
6371
6400
|
const options = {
|
|
6372
6401
|
requestDelegate: {
|
|
@@ -7212,6 +7241,75 @@ class WebRTCClient extends Emitter {
|
|
|
7212
7241
|
this._stopSendingStats(session);
|
|
7213
7242
|
this.stopNetworkMonitoring(session);
|
|
7214
7243
|
}
|
|
7244
|
+
async warmupIceConnectivity() {
|
|
7245
|
+
if (!this.config.iceWarmup) {
|
|
7246
|
+
web_rtc_client_logger.info('ICE warmup disabled in configuration', {
|
|
7247
|
+
clientId: this.clientId
|
|
7248
|
+
});
|
|
7249
|
+
return;
|
|
7250
|
+
}
|
|
7251
|
+
const config = {
|
|
7252
|
+
iceServers: this.uaConfigOverrides?.peerConnectionOptions?.iceServers || WebRTCClient.getIceServers(this.config.host)
|
|
7253
|
+
};
|
|
7254
|
+
web_rtc_client_logger.info('Starting ICE connectivity warmup', {
|
|
7255
|
+
clientId: this.clientId,
|
|
7256
|
+
config
|
|
7257
|
+
});
|
|
7258
|
+
try {
|
|
7259
|
+
const pc = new RTCPeerConnection(config);
|
|
7260
|
+
pc.createDataChannel('warmup');
|
|
7261
|
+
const candidates = [];
|
|
7262
|
+
pc.onicecandidate = (event)=>{
|
|
7263
|
+
if (event.candidate) {
|
|
7264
|
+
candidates.push(event.candidate);
|
|
7265
|
+
web_rtc_client_logger.debug('ICE warmup candidate gathered', {
|
|
7266
|
+
candidate: event.candidate.candidate,
|
|
7267
|
+
type: event.candidate.type
|
|
7268
|
+
});
|
|
7269
|
+
} else web_rtc_client_logger.info('ICE warmup completed', {
|
|
7270
|
+
totalCandidates: candidates.length,
|
|
7271
|
+
clientId: this.clientId
|
|
7272
|
+
});
|
|
7273
|
+
};
|
|
7274
|
+
const offer = await pc.createOffer();
|
|
7275
|
+
await pc.setLocalDescription(offer);
|
|
7276
|
+
await new Promise((resolve, reject)=>{
|
|
7277
|
+
const timeout = setTimeout(()=>{
|
|
7278
|
+
web_rtc_client_logger.warn('ICE warmup timed out', {
|
|
7279
|
+
clientId: this.clientId
|
|
7280
|
+
});
|
|
7281
|
+
resolve();
|
|
7282
|
+
}, 10000);
|
|
7283
|
+
pc.onicegatheringstatechange = ()=>{
|
|
7284
|
+
if ('complete' === pc.iceGatheringState) {
|
|
7285
|
+
clearTimeout(timeout);
|
|
7286
|
+
web_rtc_client_logger.info('ICE warmup gathering completed', {
|
|
7287
|
+
candidates: candidates.length,
|
|
7288
|
+
clientId: this.clientId
|
|
7289
|
+
});
|
|
7290
|
+
resolve();
|
|
7291
|
+
}
|
|
7292
|
+
};
|
|
7293
|
+
if (candidates.length > 0) setTimeout(()=>{
|
|
7294
|
+
clearTimeout(timeout);
|
|
7295
|
+
web_rtc_client_logger.info('ICE warmup resolved with candidates', {
|
|
7296
|
+
candidates: candidates.length,
|
|
7297
|
+
clientId: this.clientId
|
|
7298
|
+
});
|
|
7299
|
+
resolve();
|
|
7300
|
+
}, 5000);
|
|
7301
|
+
});
|
|
7302
|
+
pc.close();
|
|
7303
|
+
web_rtc_client_logger.info('ICE warmup completed successfully', {
|
|
7304
|
+
clientId: this.clientId
|
|
7305
|
+
});
|
|
7306
|
+
} catch (error) {
|
|
7307
|
+
web_rtc_client_logger.warn('ICE warmup failed', {
|
|
7308
|
+
error: error.message,
|
|
7309
|
+
clientId: this.clientId
|
|
7310
|
+
});
|
|
7311
|
+
}
|
|
7312
|
+
}
|
|
7215
7313
|
attemptReconnection() {
|
|
7216
7314
|
web_rtc_client_logger.info('attempt reconnection', {
|
|
7217
7315
|
clientId: this.clientId,
|
|
@@ -7597,24 +7695,29 @@ class WebRTCClient extends Emitter {
|
|
|
7597
7695
|
if ('disconnected' === pc.iceConnectionState) {
|
|
7598
7696
|
const attempts = this.iceReconnectAttempts[currentSessionId] || 0;
|
|
7599
7697
|
if (attempts < MAX_ICE_RECONNECT_ATTEMPTS) {
|
|
7698
|
+
this.eventEmitter.emit(web_rtc_client_ON_ICE_RECONNECTING, session);
|
|
7600
7699
|
this.iceReconnectAttempts[currentSessionId] = attempts + 1;
|
|
7601
7700
|
web_rtc_client_logger.info('ICE connection disconnected, attempting to reconnect...', {
|
|
7602
7701
|
sessionId: currentSessionId,
|
|
7603
7702
|
attempt: attempts + 1
|
|
7604
7703
|
});
|
|
7605
7704
|
const isConference = this.isConference(currentSessionId);
|
|
7606
|
-
|
|
7705
|
+
setTimeout(()=>{
|
|
7706
|
+
this.reinvite(session, null, isConference, false, true);
|
|
7707
|
+
}, this.iceReconnectDelay);
|
|
7607
7708
|
} else {
|
|
7608
7709
|
web_rtc_client_logger.warn('ICE reconnection failed after max attempts', {
|
|
7609
7710
|
sessionId: currentSessionId
|
|
7610
7711
|
});
|
|
7611
|
-
this.eventEmitter.emit(
|
|
7712
|
+
this.eventEmitter.emit(web_rtc_client_ON_ICE_DISCONNECTED, session);
|
|
7612
7713
|
}
|
|
7613
7714
|
} else if ('connected' === pc.iceConnectionState || 'completed' === pc.iceConnectionState) {
|
|
7614
|
-
if (this.iceReconnectAttempts[currentSessionId] > 0)
|
|
7615
|
-
|
|
7616
|
-
|
|
7617
|
-
|
|
7715
|
+
if (this.iceReconnectAttempts[currentSessionId] > 0) {
|
|
7716
|
+
this.eventEmitter.emit(web_rtc_client_ON_ICE_RECONNECTED, session);
|
|
7717
|
+
web_rtc_client_logger.info('ICE reconnected successfully', {
|
|
7718
|
+
sessionId: currentSessionId
|
|
7719
|
+
});
|
|
7720
|
+
}
|
|
7618
7721
|
}
|
|
7619
7722
|
};
|
|
7620
7723
|
}
|
|
@@ -7647,7 +7750,6 @@ class WebRTCClient extends Emitter {
|
|
|
7647
7750
|
sessionId,
|
|
7648
7751
|
error
|
|
7649
7752
|
});
|
|
7650
|
-
return;
|
|
7651
7753
|
}
|
|
7652
7754
|
const audioElement = this.audioElements[sessionId];
|
|
7653
7755
|
if (!audioElement) {
|
|
@@ -7687,7 +7789,7 @@ class WebRTCClient extends Emitter {
|
|
|
7687
7789
|
audioElement.srcObject = stream;
|
|
7688
7790
|
audioElement.volume = this.audioOutputVolume;
|
|
7689
7791
|
try {
|
|
7690
|
-
|
|
7792
|
+
audioElement.play();
|
|
7691
7793
|
web_rtc_client_logger.info('Audio element play() successful', {
|
|
7692
7794
|
sessionId
|
|
7693
7795
|
});
|
|
@@ -8076,7 +8178,9 @@ class Phone_Phone extends Emitter {
|
|
|
8076
8178
|
ON_NETWORK_STATS;
|
|
8077
8179
|
ON_CHAT;
|
|
8078
8180
|
ON_SIGNAL;
|
|
8079
|
-
|
|
8181
|
+
ON_ICE_DISCONNECTED;
|
|
8182
|
+
ON_ICE_RECONNECTING;
|
|
8183
|
+
ON_ICE_RECONNECTED;
|
|
8080
8184
|
ON_EARLY_MEDIA;
|
|
8081
8185
|
MESSAGE_TYPE_CHAT;
|
|
8082
8186
|
MESSAGE_TYPE_SIGNAL;
|
package/dist/types/api/auth.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import ApiRequester from '../utils/api-requester';
|
|
2
|
-
import type { User, Tenant, Token, UUID, LogoutResponse, ListTenantsResponse, ListUsersResponse, ListGroupsResponse, ListPoliciesResponse, GetTenantResponse, GetUserResponse } from '../domain/types';
|
|
2
|
+
import type { User, Tenant, Token, UUID, LogoutResponse, ListTenantsResponse, ListUsersResponse, ListGroupsResponse, ListPoliciesResponse, GetTenantResponse, GetUserResponse, DeviceToken } from '../domain/types';
|
|
3
3
|
import Session from '../domain/Session';
|
|
4
4
|
export declare const DEFAULT_BACKEND_USER = "wazo_user";
|
|
5
5
|
export declare const BACKEND_LDAP_USER = "ldap_user";
|
|
@@ -31,6 +31,7 @@ declare const _default: (client: ApiRequester, baseUrl: string) => {
|
|
|
31
31
|
refreshToken: (refreshToken: string, backend: string, expiration: number, isMobile?: boolean, tenantId?: string, domainName?: string) => Promise<Session | null | undefined>;
|
|
32
32
|
deleteRefreshToken: (clientId: string) => Promise<boolean>;
|
|
33
33
|
updatePassword: (userUuid: UUID, oldPassword: string, newPassword: string) => Promise<boolean>;
|
|
34
|
+
getDeviceToken: (userUuid: UUID) => Promise<DeviceToken>;
|
|
34
35
|
sendDeviceToken: (userUuid: UUID, deviceToken: string, apnsVoipToken: string | null | undefined, apnsNotificationToken: string | null | undefined) => Promise<void>;
|
|
35
36
|
getPushNotificationSenderId: (userUuid: UUID) => Promise<string>;
|
|
36
37
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/api/auth.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,wBAAwB,CAAC;AAClD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/api/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,7 +46,9 @@ export declare const ON_MESSAGE_TRACK_UPDATED = "onTrackUpdated";
|
|
|
46
46
|
export declare const ON_NETWORK_STATS = "onNetworkStats";
|
|
47
47
|
export declare const ON_CHAT = "phone/ON_CHAT";
|
|
48
48
|
export declare const ON_SIGNAL = "phone/ON_SIGNAL";
|
|
49
|
-
export declare const
|
|
49
|
+
export declare const ON_ICE_DISCONNECTED = "onIceDisconnected";
|
|
50
|
+
export declare const ON_ICE_RECONNECTING = "onIceReconnecting";
|
|
51
|
+
export declare const ON_ICE_RECONNECTED = "onIceReconnected";
|
|
50
52
|
export declare const ON_EARLY_MEDIA = "onEarlyMedia";
|
|
51
53
|
export declare const MESSAGE_TYPE_CHAT = "message/TYPE_CHAT";
|
|
52
54
|
export declare const MESSAGE_TYPE_SIGNAL = "message/TYPE_SIGNAL";
|