@webex/calling 3.10.0-next.1 → 3.10.0-next.11
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/CallHistory/CallHistory.js +26 -20
- package/dist/CallHistory/CallHistory.js.map +1 -1
- package/dist/CallHistory/CallHistory.test.js +109 -0
- package/dist/CallHistory/CallHistory.test.js.map +1 -1
- package/dist/CallSettings/WxCallBackendConnector.js +2 -1
- package/dist/CallSettings/WxCallBackendConnector.js.map +1 -1
- package/dist/CallingClient/CallingClient.js +160 -205
- package/dist/CallingClient/CallingClient.js.map +1 -1
- package/dist/CallingClient/CallingClient.test.js +152 -290
- package/dist/CallingClient/CallingClient.test.js.map +1 -1
- package/dist/CallingClient/calling/call.js +61 -43
- package/dist/CallingClient/calling/call.js.map +1 -1
- package/dist/CallingClient/calling/call.test.js +594 -361
- package/dist/CallingClient/calling/call.test.js.map +1 -1
- package/dist/CallingClient/constants.js +3 -1
- package/dist/CallingClient/constants.js.map +1 -1
- package/dist/Contacts/ContactsClient.js +8 -5
- package/dist/Contacts/ContactsClient.js.map +1 -1
- package/dist/Events/impl/index.js +1 -2
- package/dist/Events/impl/index.js.map +1 -1
- package/dist/SDKConnector/types.js.map +1 -1
- package/dist/Voicemail/BroadworksBackendConnector.js +14 -12
- package/dist/Voicemail/BroadworksBackendConnector.js.map +1 -1
- package/dist/Voicemail/UcmBackendConnector.js +2 -1
- package/dist/Voicemail/UcmBackendConnector.js.map +1 -1
- package/dist/common/Utils.js +68 -39
- package/dist/common/Utils.js.map +1 -1
- package/dist/common/Utils.test.js +392 -143
- package/dist/common/Utils.test.js.map +1 -1
- package/dist/common/testUtil.js +2 -1
- package/dist/common/testUtil.js.map +1 -1
- package/dist/module/CallHistory/CallHistory.js +7 -3
- package/dist/module/CallSettings/WxCallBackendConnector.js +3 -1
- package/dist/module/CallingClient/CallingClient.js +83 -121
- package/dist/module/CallingClient/calling/call.js +35 -23
- package/dist/module/CallingClient/constants.js +1 -0
- package/dist/module/Contacts/ContactsClient.js +9 -5
- package/dist/module/Events/impl/index.js +1 -2
- package/dist/module/Voicemail/BroadworksBackendConnector.js +3 -1
- package/dist/module/Voicemail/UcmBackendConnector.js +2 -1
- package/dist/module/common/Utils.js +27 -3
- package/dist/module/common/testUtil.js +1 -0
- package/dist/types/CallHistory/CallHistory.d.ts.map +1 -1
- package/dist/types/CallSettings/WxCallBackendConnector.d.ts.map +1 -1
- package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/call.d.ts +2 -0
- package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
- package/dist/types/CallingClient/constants.d.ts +1 -0
- package/dist/types/CallingClient/constants.d.ts.map +1 -1
- package/dist/types/Contacts/ContactsClient.d.ts +1 -0
- package/dist/types/Contacts/ContactsClient.d.ts.map +1 -1
- package/dist/types/Events/impl/index.d.ts.map +1 -1
- package/dist/types/SDKConnector/types.d.ts +10 -0
- package/dist/types/SDKConnector/types.d.ts.map +1 -1
- package/dist/types/Voicemail/BroadworksBackendConnector.d.ts.map +1 -1
- package/dist/types/Voicemail/UcmBackendConnector.d.ts.map +1 -1
- package/dist/types/common/Utils.d.ts +1 -1
- package/dist/types/common/Utils.d.ts.map +1 -1
- package/dist/types/common/testUtil.d.ts +1 -0
- package/dist/types/common/testUtil.d.ts.map +1 -1
- package/package.json +4 -4
|
@@ -9,7 +9,7 @@ import { MOBIUS_EVENT_KEYS, SessionType, CALLING_CLIENT_EVENT_KEYS, } from '../E
|
|
|
9
9
|
import { ServiceIndicator, ALLOWED_SERVICES, HTTP_METHODS, RegistrationStatus, } from '../common/types';
|
|
10
10
|
import log from '../Logger';
|
|
11
11
|
import { getCallManager } from './calling/callManager';
|
|
12
|
-
import { CALLING_CLIENT_FILE, CALLS_CLEARED_HANDLER_UTIL, CALLING_USER_AGENT, CISCO_DEVICE_URL, DISCOVERY_URL, GET_MOBIUS_SERVERS_UTIL,
|
|
12
|
+
import { CALLING_CLIENT_FILE, CALLS_CLEARED_HANDLER_UTIL, CALLING_USER_AGENT, CISCO_DEVICE_URL, DISCOVERY_URL, GET_MOBIUS_SERVERS_UTIL, SPARK_USER_AGENT, URL_ENDPOINT, API_V1, METHODS, NETWORK_FLAP_TIMEOUT, } from './constants';
|
|
13
13
|
import Line from './line';
|
|
14
14
|
import { METRIC_EVENT, REG_ACTION, METRIC_TYPE, CONNECTION_ACTION, MOBIUS_SERVER_ACTION, } from '../Metrics/types';
|
|
15
15
|
import { getMetricManager } from '../Metrics';
|
|
@@ -65,28 +65,7 @@ export class CallingClient extends Eventing {
|
|
|
65
65
|
this.mediaEngine.setLogger(adaptedLogger);
|
|
66
66
|
this.primaryMobiusUris = [];
|
|
67
67
|
this.backupMobiusUris = [];
|
|
68
|
-
|
|
69
|
-
try {
|
|
70
|
-
mobiusServiceHost = new URL(this.webex.internal.services._serviceUrls.mobius).host;
|
|
71
|
-
}
|
|
72
|
-
catch (error) {
|
|
73
|
-
log.warn(`Failed to parse mobius service URL`, {
|
|
74
|
-
file: CALLING_CLIENT_FILE,
|
|
75
|
-
method: this.constructor.name,
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
if (this.webex.internal.services._hostCatalog) {
|
|
79
|
-
this.mobiusClusters =
|
|
80
|
-
(mobiusServiceHost && this.webex.internal.services._hostCatalog[mobiusServiceHost]) ||
|
|
81
|
-
this.webex.internal.services._hostCatalog[MOBIUS_US_PROD] ||
|
|
82
|
-
this.webex.internal.services._hostCatalog[MOBIUS_EU_PROD] ||
|
|
83
|
-
this.webex.internal.services._hostCatalog[MOBIUS_US_INT] ||
|
|
84
|
-
this.webex.internal.services._hostCatalog[MOBIUS_EU_INT];
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
const mobiusObject = this.webex.internal.services._services.find((item) => item.serviceName === 'mobius');
|
|
88
|
-
this.mobiusClusters = [mobiusObject.serviceUrls[0].baseUrl];
|
|
89
|
-
}
|
|
68
|
+
this.mobiusClusters = this.webex.internal.services.getMobiusClusters();
|
|
90
69
|
this.mobiusHost = '';
|
|
91
70
|
this.registerSessionsListener();
|
|
92
71
|
this.registerCallsClearedListener();
|
|
@@ -237,67 +216,38 @@ export class CallingClient extends Eventing {
|
|
|
237
216
|
method: METHODS.GET_CLIENT_REGION_INFO,
|
|
238
217
|
});
|
|
239
218
|
const regionInfo = {};
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
method: METHODS.GET_CLIENT_REGION_INFO,
|
|
273
|
-
});
|
|
274
|
-
const clientRegionInfo = response.body;
|
|
275
|
-
regionInfo.clientRegion = clientRegionInfo?.clientRegion
|
|
276
|
-
? clientRegionInfo.clientRegion
|
|
277
|
-
: '';
|
|
278
|
-
regionInfo.countryCode = clientRegionInfo?.countryCode ? clientRegionInfo.countryCode : '';
|
|
279
|
-
log.log(`Successfully fetched Client region info: ${regionInfo.clientRegion}, countryCode: ${regionInfo.countryCode}, and response trackingid: ${response?.headers?.trackingid}`, {
|
|
280
|
-
file: CALLING_CLIENT_FILE,
|
|
281
|
-
method: METHODS.GET_CLIENT_REGION_INFO,
|
|
282
|
-
});
|
|
283
|
-
this.metricManager.submitRegionInfoMetric(METRIC_EVENT.MOBIUS_DISCOVERY, MOBIUS_SERVER_ACTION.REGION_INFO, METRIC_TYPE.BEHAVIORAL, this.mobiusHost, clientRegionInfo.clientRegion, clientRegionInfo.countryCode, response?.headers?.trackingid ?? '');
|
|
284
|
-
break;
|
|
285
|
-
}
|
|
286
|
-
catch (err) {
|
|
287
|
-
log.error(`Failed to get client region info: ${JSON.stringify(err)}`, {
|
|
288
|
-
method: METHODS.GET_CLIENT_REGION_INFO,
|
|
289
|
-
file: CALLING_CLIENT_FILE,
|
|
290
|
-
});
|
|
291
|
-
abort = await handleCallingClientErrors(err, (clientError) => {
|
|
292
|
-
this.metricManager.submitRegistrationMetric(METRIC_EVENT.REGISTRATION_ERROR, REG_ACTION.REGISTER, METRIC_TYPE.BEHAVIORAL, GET_MOBIUS_SERVERS_UTIL, 'UNKNOWN', err.headers?.trackingId ?? '', undefined, clientError);
|
|
293
|
-
this.emit(CALLING_CLIENT_EVENT_KEYS.ERROR, clientError);
|
|
294
|
-
}, { method: GET_MOBIUS_SERVERS_UTIL, file: CALLING_CLIENT_FILE });
|
|
295
|
-
regionInfo.clientRegion = '';
|
|
296
|
-
regionInfo.countryCode = '';
|
|
297
|
-
if (abort) {
|
|
298
|
-
await uploadLogs();
|
|
299
|
-
return regionInfo;
|
|
300
|
-
}
|
|
219
|
+
try {
|
|
220
|
+
const response = await this.webex.request({
|
|
221
|
+
uri: `${DISCOVERY_URL}`,
|
|
222
|
+
method: HTTP_METHODS.GET,
|
|
223
|
+
addAuthHeader: false,
|
|
224
|
+
headers: {
|
|
225
|
+
[SPARK_USER_AGENT]: null,
|
|
226
|
+
},
|
|
227
|
+
});
|
|
228
|
+
const clientRegionInfo = response.body;
|
|
229
|
+
regionInfo.clientRegion = clientRegionInfo?.clientRegion || '';
|
|
230
|
+
regionInfo.countryCode = clientRegionInfo?.countryCode || '';
|
|
231
|
+
log.log(`Successfully fetched Client region info: ${regionInfo.clientRegion}, countryCode: ${regionInfo.countryCode}, and response trackingid: ${response?.headers?.trackingid}`, {
|
|
232
|
+
file: CALLING_CLIENT_FILE,
|
|
233
|
+
method: METHODS.GET_CLIENT_REGION_INFO,
|
|
234
|
+
});
|
|
235
|
+
this.metricManager.submitRegionInfoMetric(METRIC_EVENT.MOBIUS_DISCOVERY, MOBIUS_SERVER_ACTION.REGION_INFO, METRIC_TYPE.BEHAVIORAL, this.mobiusHost, clientRegionInfo.clientRegion, clientRegionInfo.countryCode, response?.headers?.trackingid ?? '');
|
|
236
|
+
}
|
|
237
|
+
catch (err) {
|
|
238
|
+
log.error(`Failed to get client region info: ${JSON.stringify(err)}`, {
|
|
239
|
+
method: METHODS.GET_CLIENT_REGION_INFO,
|
|
240
|
+
file: CALLING_CLIENT_FILE,
|
|
241
|
+
});
|
|
242
|
+
abort = await handleCallingClientErrors(err, (clientError) => {
|
|
243
|
+
this.metricManager.submitRegistrationMetric(METRIC_EVENT.REGISTRATION_ERROR, REG_ACTION.REGISTER, METRIC_TYPE.BEHAVIORAL, GET_MOBIUS_SERVERS_UTIL, 'UNKNOWN', err.headers?.trackingId ?? '', undefined, clientError);
|
|
244
|
+
this.emit(CALLING_CLIENT_EVENT_KEYS.ERROR, clientError);
|
|
245
|
+
}, { method: GET_MOBIUS_SERVERS_UTIL, file: CALLING_CLIENT_FILE });
|
|
246
|
+
regionInfo.clientRegion = '';
|
|
247
|
+
regionInfo.countryCode = '';
|
|
248
|
+
if (abort) {
|
|
249
|
+
await uploadLogs();
|
|
250
|
+
return regionInfo;
|
|
301
251
|
}
|
|
302
252
|
}
|
|
303
253
|
return regionInfo;
|
|
@@ -317,7 +267,9 @@ export class CallingClient extends Eventing {
|
|
|
317
267
|
});
|
|
318
268
|
clientRegion = this.sdkConfig?.discovery?.region;
|
|
319
269
|
countryCode = this.sdkConfig?.discovery?.country;
|
|
320
|
-
this.mobiusHost =
|
|
270
|
+
this.mobiusHost =
|
|
271
|
+
this.webex.internal.services._serviceUrls?.mobius ||
|
|
272
|
+
this.webex.internal.services.get(this.webex.internal.services._activeServices.mobius);
|
|
321
273
|
}
|
|
322
274
|
else {
|
|
323
275
|
log.log('Updating region and country through Region discovery', {
|
|
@@ -333,43 +285,53 @@ export class CallingClient extends Eventing {
|
|
|
333
285
|
file: CALLING_CLIENT_FILE,
|
|
334
286
|
method: GET_MOBIUS_SERVERS_UTIL,
|
|
335
287
|
});
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
288
|
+
for (const mobius of this.mobiusClusters) {
|
|
289
|
+
if (mobius.host) {
|
|
290
|
+
this.mobiusHost = `https://${mobius.host}${API_V1}`;
|
|
291
|
+
}
|
|
292
|
+
else {
|
|
293
|
+
this.mobiusHost = mobius;
|
|
294
|
+
}
|
|
295
|
+
try {
|
|
296
|
+
const response = await this.webex.request({
|
|
297
|
+
uri: `${this.mobiusHost}${URL_ENDPOINT}?regionCode=${clientRegion}&countryCode=${countryCode}`,
|
|
298
|
+
method: HTTP_METHODS.GET,
|
|
299
|
+
headers: {
|
|
300
|
+
[CISCO_DEVICE_URL]: this.webex.internal.device.url,
|
|
301
|
+
[SPARK_USER_AGENT]: CALLING_USER_AGENT,
|
|
302
|
+
},
|
|
303
|
+
service: ALLOWED_SERVICES.MOBIUS,
|
|
304
|
+
});
|
|
305
|
+
log.log(`Mobius Server found for the region. Response trackingId: ${response?.headers?.trackingid}`, {
|
|
306
|
+
file: CALLING_CLIENT_FILE,
|
|
307
|
+
method: GET_MOBIUS_SERVERS_UTIL,
|
|
308
|
+
});
|
|
309
|
+
const mobiusServers = response.body;
|
|
310
|
+
this.metricManager.submitMobiusServersMetric(METRIC_EVENT.MOBIUS_DISCOVERY, MOBIUS_SERVER_ACTION.MOBIUS_SERVERS, METRIC_TYPE.BEHAVIORAL, mobiusServers, response?.headers?.trackingid ?? '');
|
|
311
|
+
const mobiusUris = filterMobiusUris(mobiusServers, this.mobiusHost);
|
|
312
|
+
this.primaryMobiusUris = mobiusUris.primary;
|
|
313
|
+
this.backupMobiusUris = mobiusUris.backup;
|
|
314
|
+
log.log(`Final list of Mobius Servers, primary: ${mobiusUris.primary} and backup: ${mobiusUris.backup}`, {
|
|
315
|
+
file: CALLING_CLIENT_FILE,
|
|
316
|
+
method: GET_MOBIUS_SERVERS_UTIL,
|
|
317
|
+
});
|
|
318
|
+
break;
|
|
319
|
+
}
|
|
320
|
+
catch (err) {
|
|
321
|
+
log.error(`Failed to get Mobius servers: ${JSON.stringify(err)}`, {
|
|
322
|
+
method: METHODS.GET_MOBIUS_SERVERS,
|
|
323
|
+
file: CALLING_CLIENT_FILE,
|
|
324
|
+
});
|
|
325
|
+
const abort = await handleCallingClientErrors(err, (clientError) => {
|
|
326
|
+
this.metricManager.submitRegistrationMetric(METRIC_EVENT.REGISTRATION_ERROR, REG_ACTION.REGISTER, METRIC_TYPE.BEHAVIORAL, GET_MOBIUS_SERVERS_UTIL, 'UNKNOWN', err.headers?.trackingId ?? '', undefined, clientError);
|
|
327
|
+
this.emit(CALLING_CLIENT_EVENT_KEYS.ERROR, clientError);
|
|
328
|
+
}, { method: GET_MOBIUS_SERVERS_UTIL, file: CALLING_CLIENT_FILE });
|
|
329
|
+
if (abort) {
|
|
330
|
+
useDefault = true;
|
|
331
|
+
await uploadLogs();
|
|
332
|
+
break;
|
|
333
|
+
}
|
|
371
334
|
}
|
|
372
|
-
useDefault = true;
|
|
373
335
|
}
|
|
374
336
|
}
|
|
375
337
|
else {
|
|
@@ -7,7 +7,7 @@ import { ERROR_LAYER, ERROR_TYPE } from '../../Errors/types';
|
|
|
7
7
|
import { handleCallErrors, modifySdpForIPv4, parseMediaQualityStatistics, serviceErrorCodeHandler, uploadLogs, } from '../../common/Utils';
|
|
8
8
|
import { ALLOWED_SERVICES, CallDirection, HTTP_METHODS, } from '../../common/types';
|
|
9
9
|
import { createCallError } from '../../Errors/catalog/CallError';
|
|
10
|
-
import { CALL_ENDPOINT_RESOURCE, CALL_FILE, CALL_HOLD_SERVICE, CALL_STATUS_RESOURCE, CALL_TRANSFER_SERVICE, CALLING_USER_AGENT, CALLS_ENDPOINT_RESOURCE, CISCO_DEVICE_URL, DEFAULT_LOCAL_CALL_ID, DEFAULT_SESSION_TIMER, DEVICES_ENDPOINT_RESOURCE, HOLD_ENDPOINT, ICE_CANDIDATES_TIMEOUT, INITIAL_SEQ_NUMBER, MEDIA_ENDPOINT_RESOURCE, METHODS, NOISE_REDUCTION_EFFECT, RESUME_ENDPOINT, SPARK_USER_AGENT, SUPPLEMENTARY_SERVICES_TIMEOUT, TRANSFER_ENDPOINT, } from '../constants';
|
|
10
|
+
import { CALL_ENDPOINT_RESOURCE, CALL_FILE, CALL_HOLD_SERVICE, CALL_STATUS_RESOURCE, CALL_TRANSFER_SERVICE, CALLING_USER_AGENT, CALLS_ENDPOINT_RESOURCE, CISCO_DEVICE_URL, DEFAULT_LOCAL_CALL_ID, DEFAULT_SESSION_TIMER, DEVICES_ENDPOINT_RESOURCE, HOLD_ENDPOINT, ICE_CANDIDATES_TIMEOUT, INITIAL_SEQ_NUMBER, MAX_CALL_KEEPALIVE_RETRY_COUNT, MEDIA_ENDPOINT_RESOURCE, METHODS, NOISE_REDUCTION_EFFECT, RESUME_ENDPOINT, SPARK_USER_AGENT, SUPPLEMENTARY_SERVICES_TIMEOUT, TRANSFER_ENDPOINT, } from '../constants';
|
|
11
11
|
import SDKConnector from '../../SDKConnector';
|
|
12
12
|
import { Eventing } from '../../Events/impl';
|
|
13
13
|
import { CALL_EVENT_KEYS, MEDIA_CONNECTION_EVENT_KEYS, MOBIUS_MIDCALL_STATE, SUPPLEMENTARY_SERVICES, } from '../../Events/types';
|
|
@@ -51,6 +51,8 @@ export class Call extends Eventing {
|
|
|
51
51
|
receivedRoapOKSeq;
|
|
52
52
|
localAudioStream;
|
|
53
53
|
rtcMetrics;
|
|
54
|
+
callKeepaliveRetryCount = 0;
|
|
55
|
+
callKeepaliveInterval;
|
|
54
56
|
isMuted() {
|
|
55
57
|
return this.muted;
|
|
56
58
|
}
|
|
@@ -881,20 +883,21 @@ export class Call extends Eventing {
|
|
|
881
883
|
async handleIncomingCallDisconnect(event) {
|
|
882
884
|
log.info(`${METHOD_START_MESSAGE} with: ${this.getCorrelationId()}`, {
|
|
883
885
|
file: CALL_FILE,
|
|
884
|
-
method: METHODS.
|
|
886
|
+
method: METHODS.HANDLE_INCOMING_CALL_DISCONNECT,
|
|
885
887
|
});
|
|
888
|
+
this.emit(CALL_EVENT_KEYS.DISCONNECT, this.correlationId);
|
|
886
889
|
this.setDisconnectReason();
|
|
887
890
|
try {
|
|
888
891
|
const response = await this.delete();
|
|
889
892
|
log.log(`Response code: ${response.statusCode}`, {
|
|
890
893
|
file: CALL_FILE,
|
|
891
|
-
method: METHODS.
|
|
894
|
+
method: METHODS.HANDLE_INCOMING_CALL_DISCONNECT,
|
|
892
895
|
});
|
|
893
896
|
}
|
|
894
897
|
catch (e) {
|
|
895
898
|
log.warn(`Failed to delete the call: ${JSON.stringify(e)}`, {
|
|
896
899
|
file: CALL_FILE,
|
|
897
|
-
method: METHODS.
|
|
900
|
+
method: METHODS.HANDLE_INCOMING_CALL_DISCONNECT,
|
|
898
901
|
});
|
|
899
902
|
uploadLogs({
|
|
900
903
|
correlationId: this.correlationId,
|
|
@@ -916,7 +919,6 @@ export class Call extends Eventing {
|
|
|
916
919
|
}
|
|
917
920
|
this.sendMediaStateMachineEvt({ type: 'E_ROAP_TEARDOWN' });
|
|
918
921
|
this.sendCallStateMachineEvt({ type: 'E_CALL_CLEARED' });
|
|
919
|
-
this.emit(CALL_EVENT_KEYS.DISCONNECT, this.correlationId);
|
|
920
922
|
}
|
|
921
923
|
async handleOutgoingCallDisconnect(event) {
|
|
922
924
|
log.info(`${METHOD_START_MESSAGE} with: ${this.getCorrelationId()}`, {
|
|
@@ -962,49 +964,59 @@ export class Call extends Eventing {
|
|
|
962
964
|
this.sendCallStateMachineEvt({ type: 'E_CALL_CLEARED' });
|
|
963
965
|
}
|
|
964
966
|
handleCallEstablished(event) {
|
|
965
|
-
|
|
967
|
+
const loggerContext = {
|
|
966
968
|
file: CALL_FILE,
|
|
967
969
|
method: METHODS.HANDLE_CALL_ESTABLISHED,
|
|
968
|
-
}
|
|
970
|
+
};
|
|
971
|
+
log.info(`${METHOD_START_MESSAGE} with: ${this.getCorrelationId()}`, loggerContext);
|
|
969
972
|
this.emit(CALL_EVENT_KEYS.ESTABLISHED, this.correlationId);
|
|
970
973
|
this.earlyMedia = false;
|
|
971
974
|
this.connected = true;
|
|
972
975
|
if (this.sessionTimer) {
|
|
973
|
-
log.log('Resetting session timer',
|
|
974
|
-
file: CALL_FILE,
|
|
975
|
-
method: METHODS.HANDLE_CALL_ESTABLISHED,
|
|
976
|
-
});
|
|
976
|
+
log.log('Resetting session timer', loggerContext);
|
|
977
977
|
clearInterval(this.sessionTimer);
|
|
978
978
|
}
|
|
979
979
|
this.sessionTimer = setInterval(async () => {
|
|
980
980
|
try {
|
|
981
981
|
const res = await this.postStatus();
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
});
|
|
982
|
+
this.callKeepaliveRetryCount = 0;
|
|
983
|
+
this.callKeepaliveInterval = undefined;
|
|
984
|
+
log.info(`Session refresh successful`, loggerContext);
|
|
986
985
|
}
|
|
987
986
|
catch (err) {
|
|
988
987
|
const error = err;
|
|
989
988
|
if (this.sessionTimer) {
|
|
990
989
|
clearInterval(this.sessionTimer);
|
|
991
990
|
}
|
|
992
|
-
handleCallErrors((callError) => {
|
|
991
|
+
const abort = await handleCallErrors((callError) => {
|
|
993
992
|
this.emit(CALL_EVENT_KEYS.CALL_ERROR, callError);
|
|
994
993
|
this.submitCallErrorMetric(callError);
|
|
995
994
|
}, ERROR_LAYER.CALL_CONTROL, (interval) => {
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
995
|
+
this.callKeepaliveRetryCount += 1;
|
|
996
|
+
this.callKeepaliveInterval = interval * 1000;
|
|
997
|
+
if (this.callKeepaliveRetryCount === MAX_CALL_KEEPALIVE_RETRY_COUNT) {
|
|
998
|
+
this.callKeepaliveRetryCount = 0;
|
|
999
|
+
clearInterval(this.sessionTimer);
|
|
1000
|
+
this.sessionTimer = undefined;
|
|
1001
|
+
this.callKeepaliveInterval = undefined;
|
|
1002
|
+
log.warn(`Max call keepalive retry attempts reached for call: ${this.getCorrelationId()}`, loggerContext);
|
|
1003
|
+
return;
|
|
1004
|
+
}
|
|
1005
|
+
this.sendCallStateMachineEvt({ type: 'E_CALL_ESTABLISHED' });
|
|
1006
|
+
}, this.getCorrelationId(), error, 'handleCallEstablished', CALL_FILE);
|
|
1007
|
+
if (abort) {
|
|
1008
|
+
this.sendCallStateMachineEvt({ type: 'E_SEND_CALL_DISCONNECT' });
|
|
1009
|
+
this.emit(CALL_EVENT_KEYS.DISCONNECT, this.getCorrelationId());
|
|
1010
|
+
this.callKeepaliveRetryCount = 0;
|
|
1011
|
+
this.callKeepaliveInterval = undefined;
|
|
1012
|
+
}
|
|
1001
1013
|
await uploadLogs({
|
|
1002
1014
|
correlationId: this.correlationId,
|
|
1003
1015
|
callId: this.callId,
|
|
1004
1016
|
broadworksCorrelationInfo: this.broadworksCorrelationInfo,
|
|
1005
1017
|
});
|
|
1006
1018
|
}
|
|
1007
|
-
}, DEFAULT_SESSION_TIMER);
|
|
1019
|
+
}, this.callKeepaliveInterval || DEFAULT_SESSION_TIMER);
|
|
1008
1020
|
}
|
|
1009
1021
|
async handleUnknownState(event) {
|
|
1010
1022
|
log.info(`${METHOD_START_MESSAGE} with: ${this.getCorrelationId()}`, {
|
|
@@ -1159,7 +1171,7 @@ export class Call extends Eventing {
|
|
|
1159
1171
|
method: METHODS.HANDLE_ROAP_ERROR,
|
|
1160
1172
|
});
|
|
1161
1173
|
const message = event.data;
|
|
1162
|
-
if (message) {
|
|
1174
|
+
if (message && message.messageType === 'ERROR') {
|
|
1163
1175
|
try {
|
|
1164
1176
|
const res = await this.postMedia(message);
|
|
1165
1177
|
log.info(`Response code: ${res.statusCode}`, {
|
|
@@ -12,6 +12,7 @@ export const DEFAULT_LOCAL_CALL_ID = 'DefaultLocalId';
|
|
|
12
12
|
export const DEFAULT_REHOMING_INTERVAL_MAX = 120;
|
|
13
13
|
export const DEFAULT_REHOMING_INTERVAL_MIN = 60;
|
|
14
14
|
export const DEFAULT_SESSION_TIMER = 1000 * 60 * 10;
|
|
15
|
+
export const MAX_CALL_KEEPALIVE_RETRY_COUNT = 4;
|
|
15
16
|
export const DEVICES_ENDPOINT_RESOURCE = 'devices';
|
|
16
17
|
export const DISCOVERY_URL = 'https://ds.ciscospark.com/v1/region';
|
|
17
18
|
export const DUMMY_METRICS = {
|
|
@@ -12,6 +12,7 @@ export class ContactsClient {
|
|
|
12
12
|
groups;
|
|
13
13
|
contacts;
|
|
14
14
|
defaultGroupId;
|
|
15
|
+
contactsServiceUrl;
|
|
15
16
|
constructor(webex, logger) {
|
|
16
17
|
this.sdkConnector = SDKConnector;
|
|
17
18
|
if (!this.sdkConnector.getWebex()) {
|
|
@@ -22,6 +23,9 @@ export class ContactsClient {
|
|
|
22
23
|
this.groups = undefined;
|
|
23
24
|
this.contacts = undefined;
|
|
24
25
|
this.defaultGroupId = '';
|
|
26
|
+
this.contactsServiceUrl =
|
|
27
|
+
this.webex.internal.services._serviceUrls?.contactsService ||
|
|
28
|
+
this.webex.internal.services.get(this.webex.internal.services._activeServices.contactsService);
|
|
25
29
|
log.setLogger(logger.level, CONTACTS_CLIENT);
|
|
26
30
|
}
|
|
27
31
|
async decryptContactDetail(encryptionKeyUrl, contactDetails) {
|
|
@@ -195,7 +199,7 @@ export class ContactsClient {
|
|
|
195
199
|
const cloudContactsMap = {};
|
|
196
200
|
try {
|
|
197
201
|
const response = await this.webex.request({
|
|
198
|
-
uri: `${this.
|
|
202
|
+
uri: `${this.contactsServiceUrl}/${ENCRYPT_FILTER}/${USERS}/${CONTACT_FILTER}`,
|
|
199
203
|
method: HTTP_METHODS.GET,
|
|
200
204
|
});
|
|
201
205
|
log.log(`Response code: ${response.statusCode} and Response trackingId: ${response?.headers?.trackingid}`, loggerContext);
|
|
@@ -372,7 +376,7 @@ export class ContactsClient {
|
|
|
372
376
|
};
|
|
373
377
|
try {
|
|
374
378
|
const response = await this.webex.request({
|
|
375
|
-
uri: `${this.
|
|
379
|
+
uri: `${this.contactsServiceUrl}/${ENCRYPT_FILTER}/${USERS}/${GROUP_FILTER}`,
|
|
376
380
|
method: HTTP_METHODS.POST,
|
|
377
381
|
body: groupInfo,
|
|
378
382
|
});
|
|
@@ -407,7 +411,7 @@ export class ContactsClient {
|
|
|
407
411
|
try {
|
|
408
412
|
log.info(`Deleting contact group: ${groupId}`, loggerContext);
|
|
409
413
|
const response = await this.webex.request({
|
|
410
|
-
uri: `${this.
|
|
414
|
+
uri: `${this.contactsServiceUrl}/${ENCRYPT_FILTER}/${USERS}/${GROUP_FILTER}/${groupId}`,
|
|
411
415
|
method: HTTP_METHODS.DELETE,
|
|
412
416
|
});
|
|
413
417
|
log.log(`Response trackingId: ${response?.headers?.trackingid}`, loggerContext);
|
|
@@ -481,7 +485,7 @@ export class ContactsClient {
|
|
|
481
485
|
}
|
|
482
486
|
}
|
|
483
487
|
const response = await this.webex.request({
|
|
484
|
-
uri: `${this.
|
|
488
|
+
uri: `${this.contactsServiceUrl}/${ENCRYPT_FILTER}/${USERS}/${CONTACT_FILTER}`,
|
|
485
489
|
method: HTTP_METHODS.POST,
|
|
486
490
|
body: requestBody,
|
|
487
491
|
});
|
|
@@ -526,7 +530,7 @@ export class ContactsClient {
|
|
|
526
530
|
try {
|
|
527
531
|
log.info(`Deleting contact : ${contactId}`, loggerContext);
|
|
528
532
|
const response = await this.webex.request({
|
|
529
|
-
uri: `${this.
|
|
533
|
+
uri: `${this.contactsServiceUrl}/${ENCRYPT_FILTER}/${USERS}/${CONTACT_FILTER}/${contactId}`,
|
|
530
534
|
method: HTTP_METHODS.DELETE,
|
|
531
535
|
});
|
|
532
536
|
const contactResponse = {
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import EventEmitter from 'events';
|
|
2
|
-
import { stringify } from 'flatted';
|
|
3
2
|
import Logger from '../../Logger';
|
|
4
3
|
import { LOG_PREFIX } from '../../Logger/types';
|
|
5
4
|
export class Eventing extends EventEmitter {
|
|
6
5
|
emit(event, ...args) {
|
|
7
6
|
const timestamp = new Date().toUTCString();
|
|
8
|
-
Logger.info(`${timestamp} ${LOG_PREFIX.EVENT}: ${event.toString()} - event emitted with parameters -> ${
|
|
7
|
+
Logger.info(`${timestamp} ${LOG_PREFIX.EVENT}: ${event.toString()} - event emitted with parameters -> ${args}`, {
|
|
9
8
|
file: 'Events/impl/index.ts',
|
|
10
9
|
method: 'emit',
|
|
11
10
|
});
|
|
@@ -67,9 +67,11 @@ export class BroadworksBackendConnector {
|
|
|
67
67
|
method: METHODS.GET_BW_TOKEN,
|
|
68
68
|
};
|
|
69
69
|
log.info(METHOD_START_MESSAGE, loggerContext);
|
|
70
|
+
const broadworksIdpProxyUrl = this.webex.internal.services._serviceUrls?.broadworksIdpProxy ||
|
|
71
|
+
this.webex.internal.services.get(this.webex.internal.services._activeServices.broadworksIdpProxy);
|
|
70
72
|
try {
|
|
71
73
|
const bwTokenResponse = await this.webex.request({
|
|
72
|
-
uri: `${
|
|
74
|
+
uri: `${broadworksIdpProxyUrl}${BW_TOKEN_FETCH_ENDPOINT}`,
|
|
73
75
|
method: HTTP_METHODS.GET,
|
|
74
76
|
});
|
|
75
77
|
const response = bwTokenResponse.body;
|
|
@@ -140,7 +140,8 @@ export class UcmBackendConnector {
|
|
|
140
140
|
log.info(`${METHOD_START_MESSAGE} with Message ID: ${messageId}`, loggerContext);
|
|
141
141
|
return new Promise((resolve, reject) => {
|
|
142
142
|
const voicemailContentUrl = `${this.vgVoiceMessageURI}${VOICEMAILS}/${messageId}/${CONTENT}`;
|
|
143
|
-
const mercuryApi =
|
|
143
|
+
const mercuryApi = this.webex.internal.services._serviceUrls?.mercuryApi ||
|
|
144
|
+
this.webex.internal.services.get(this.webex.internal.services._activeServices.mercuryApi);
|
|
144
145
|
this.returnUcmPromise(voicemailContentUrl, mercuryApi)
|
|
145
146
|
.then((response) => {
|
|
146
147
|
if (response.statusCode === 200) {
|
|
@@ -7,7 +7,7 @@ import { DEVICE_ERROR_CODE, ERROR_CODE, ERROR_TYPE, CALL_ERROR_CODE, } from '../
|
|
|
7
7
|
import { CALLING_BACKEND, HTTP_METHODS, RegistrationStatus, SORT, ServiceIndicator, } from './types';
|
|
8
8
|
import log from '../Logger';
|
|
9
9
|
import { createClientError } from '../Errors/catalog/CallingDeviceError';
|
|
10
|
-
import { BYTES_RECEIVED, BYTES_SENT, CALLING_USER_AGENT, CISCO_DEVICE_URL, CODEC_ID, DUMMY_METRICS, INBOUND_CODEC_MATCH, INBOUND_RTP, JITTER_BUFFER_DELAY, JITTER_BUFFER_EMITTED_COUNT, LOCAL_CANDIDATE_ID, MEDIA_ID, MEDIA_SOURCE, MIME_TYPE, NETWORK_TYPE, OUTBOUND_CODEC_MATCH, OUTBOUND_RTP, PACKETS_DISCARDED, PACKETS_LOST, PACKETS_RECEIVED, PACKETS_SENT, REMOTE_INBOUND_RTP, ROUND_TRIP_TIME_MEASUREMENTS, RTC_CODEC, RTC_ICE_CANDIDATE, RTC_ICE_CANDIDATE_PAIR, RTP_RX_STAT, RTP_TX_STAT, SELECTED_CANDIDATE_PAIR_ID, SPARK_USER_AGENT, TARGET_BIT_RATE, TIMESTAMP, TOTAL_ROUND_TRIP_TIME, TOTAL_SAMPLES_DURATION, TRANSPORT, TYPE, URL_ENDPOINT, UTILS_FILE, } from '../CallingClient/constants';
|
|
10
|
+
import { BYTES_RECEIVED, BYTES_SENT, CALLING_USER_AGENT, CISCO_DEVICE_URL, CODEC_ID, DUMMY_METRICS, INBOUND_CODEC_MATCH, INBOUND_RTP, JITTER_BUFFER_DELAY, JITTER_BUFFER_EMITTED_COUNT, LOCAL_CANDIDATE_ID, MEDIA_ID, MEDIA_SOURCE, MIME_TYPE, NETWORK_TYPE, OUTBOUND_CODEC_MATCH, OUTBOUND_RTP, PACKETS_DISCARDED, PACKETS_LOST, PACKETS_RECEIVED, PACKETS_SENT, REMOTE_INBOUND_RTP, ROUND_TRIP_TIME_MEASUREMENTS, RTC_CODEC, RTC_ICE_CANDIDATE, RTC_ICE_CANDIDATE_PAIR, RTP_RX_STAT, RTP_TX_STAT, SELECTED_CANDIDATE_PAIR_ID, SPARK_USER_AGENT, TARGET_BIT_RATE, TIMESTAMP, TOTAL_ROUND_TRIP_TIME, TOTAL_SAMPLES_DURATION, TRANSPORT, TYPE, URL_ENDPOINT, UTILS_FILE, METHODS, DEFAULT_KEEPALIVE_INTERVAL, } from '../CallingClient/constants';
|
|
11
11
|
import { DEVICES, ITEMS, SETTINGS, VALUES, KEY, TIME, PLACEHOLDER_KEY, XSI_ACTION_ENDPOINT_ORG_URL_PARAM, XSI_ACTION_ENDPOINT, INFER_ID_CONSTANT, BW_XSI_URL, ENTITLEMENT_BASIC, ENTITLEMENT_BROADWORKS_CONN, ENTITLEMENT_STANDARD, NATIVE_WEBEX_TEAMS_CALLING, NATIVE_SIP_CALL_TO_UCM, BW_XSI_ENDPOINT_VERSION, IDENTITY_ENDPOINT_RESOURCE, SCIM_ENDPOINT_RESOURCE, SCIM_USER_FILTER, WEBEX_API_PROD, WEBEX_API_BTS, BW_XSI_ENDPOINT_VERSION_WITH_SLASH, } from './constants';
|
|
12
12
|
import SDKConnector from '../SDKConnector';
|
|
13
13
|
import { createLineError } from '../Errors/catalog/LineError';
|
|
@@ -210,6 +210,7 @@ export async function handleCallingClientErrors(err, emitterCb, loggerContext) {
|
|
|
210
210
|
return finalError;
|
|
211
211
|
}
|
|
212
212
|
export async function handleCallErrors(emitterCb, errorLayer, retryCb, correlationId, err, caller, file) {
|
|
213
|
+
let abort = false;
|
|
213
214
|
const loggerContext = {
|
|
214
215
|
file,
|
|
215
216
|
method: caller,
|
|
@@ -217,14 +218,24 @@ export async function handleCallErrors(emitterCb, errorLayer, retryCb, correlati
|
|
|
217
218
|
const callError = createCallError('', loggerContext, ERROR_TYPE.DEFAULT, '', errorLayer);
|
|
218
219
|
const errorCode = Number(err.statusCode);
|
|
219
220
|
log.warn(`Status code: ->${errorCode}`, loggerContext);
|
|
221
|
+
const isKeepalive = caller === METHODS.HANDLE_CALL_ESTABLISHED;
|
|
220
222
|
switch (errorCode) {
|
|
221
223
|
case ERROR_CODE.UNAUTHORIZED: {
|
|
222
224
|
log.warn(`401 Unauthorized`, loggerContext);
|
|
223
225
|
updateCallErrorContext(loggerContext, ERROR_TYPE.TOKEN_ERROR, 'User is unauthorized due to an expired token. Sign out, then sign back in.', correlationId, callError);
|
|
224
226
|
emitterCb(callError);
|
|
227
|
+
if (isKeepalive) {
|
|
228
|
+
abort = true;
|
|
229
|
+
}
|
|
225
230
|
break;
|
|
226
231
|
}
|
|
227
232
|
case ERROR_CODE.FORBIDDEN:
|
|
233
|
+
if (isKeepalive) {
|
|
234
|
+
abort = true;
|
|
235
|
+
updateCallErrorContext(loggerContext, ERROR_TYPE.FORBIDDEN_ERROR, 'An unauthorized action has been received. This action has been blocked. Please contact the administrator if this persists.', correlationId, callError);
|
|
236
|
+
emitterCb(callError);
|
|
237
|
+
break;
|
|
238
|
+
}
|
|
228
239
|
case ERROR_CODE.SERVICE_UNAVAILABLE: {
|
|
229
240
|
const errorBody = err.body;
|
|
230
241
|
if (!errorBody) {
|
|
@@ -233,13 +244,16 @@ export async function handleCallErrors(emitterCb, errorLayer, retryCb, correlati
|
|
|
233
244
|
? 'An unauthorized action has been received. This action has been blocked. Please contact the administrator if this persists.'
|
|
234
245
|
: 'An error occurred on the server while processing the request. Wait a moment and try again.', correlationId, callError);
|
|
235
246
|
emitterCb(callError);
|
|
236
|
-
return;
|
|
247
|
+
return abort;
|
|
237
248
|
}
|
|
238
249
|
if (err.headers && 'retry-after' in err.headers && retryCb) {
|
|
239
250
|
const retryInterval = Number(err.headers['retry-after']);
|
|
240
251
|
log.warn(`Retry Interval received: ${retryInterval}`, loggerContext);
|
|
241
252
|
retryCb(retryInterval);
|
|
242
|
-
return;
|
|
253
|
+
return abort;
|
|
254
|
+
}
|
|
255
|
+
if (isKeepalive) {
|
|
256
|
+
retryCb(DEFAULT_KEEPALIVE_INTERVAL);
|
|
243
257
|
}
|
|
244
258
|
const code = Number(errorBody.errorCode);
|
|
245
259
|
let message;
|
|
@@ -299,18 +313,28 @@ export async function handleCallErrors(emitterCb, errorLayer, retryCb, correlati
|
|
|
299
313
|
log.warn(`404 Call Not Found`, loggerContext);
|
|
300
314
|
updateCallErrorContext(loggerContext, ERROR_TYPE.NOT_FOUND, 'Call is no longer active. Wait a moment and try again.', correlationId, callError);
|
|
301
315
|
emitterCb(callError);
|
|
316
|
+
if (isKeepalive) {
|
|
317
|
+
abort = true;
|
|
318
|
+
}
|
|
302
319
|
break;
|
|
303
320
|
}
|
|
304
321
|
case ERROR_CODE.INTERNAL_SERVER_ERROR: {
|
|
305
322
|
log.warn(`500 Internal Server Error`, loggerContext);
|
|
306
323
|
updateCallErrorContext(loggerContext, ERROR_TYPE.SERVER_ERROR, 'An unknown error occurred in the call. Wait a moment and try again.', correlationId, callError);
|
|
307
324
|
emitterCb(callError);
|
|
325
|
+
if (isKeepalive && retryCb) {
|
|
326
|
+
const retryInterval = err.headers && 'retry-after' in err.headers
|
|
327
|
+
? Number(err.headers['retry-after'])
|
|
328
|
+
: DEFAULT_KEEPALIVE_INTERVAL;
|
|
329
|
+
retryCb(retryInterval);
|
|
330
|
+
}
|
|
308
331
|
break;
|
|
309
332
|
}
|
|
310
333
|
default: {
|
|
311
334
|
log.warn(`Unknown Error`, loggerContext);
|
|
312
335
|
}
|
|
313
336
|
}
|
|
337
|
+
return abort;
|
|
314
338
|
}
|
|
315
339
|
export async function serviceErrorCodeHandler(err, loggerContext) {
|
|
316
340
|
const errorCode = Number(err.statusCode);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CallHistory.d.ts","sourceRoot":"","sources":["../../../src/CallHistory/CallHistory.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,QAAQ,EAAC,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAIL,IAAI,EACJ,OAAO,EAER,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,yBAAyB,EAEzB,gCAAgC,EACjC,MAAM,SAAS,CAAC;AAoCjB,OAAO,EAEL,qBAAqB,EACrB,gBAAgB,EAGhB,gBAAgB,EAChB,sBAAsB,EAGtB,uBAAuB,EACxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AAWxC,qBAAa,WAAY,SAAQ,QAAQ,CAAC,qBAAqB,CAAE,YAAW,YAAY;IACtF,OAAO,CAAC,YAAY,CAAgB;IAEpC,OAAO,CAAC,KAAK,CAAW;IAExB,OAAO,CAAC,QAAQ,CAAM;IAEtB,OAAO,CAAC,QAAQ,CAAM;IAEtB,OAAO,CAAC,aAAa,CAGnB;IAEF,OAAO,CAAC,YAAY,CAA4B;gBAKpC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe;
|
|
1
|
+
{"version":3,"file":"CallHistory.d.ts","sourceRoot":"","sources":["../../../src/CallHistory/CallHistory.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,QAAQ,EAAC,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAIL,IAAI,EACJ,OAAO,EAER,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,yBAAyB,EAEzB,gCAAgC,EACjC,MAAM,SAAS,CAAC;AAoCjB,OAAO,EAEL,qBAAqB,EACrB,gBAAgB,EAGhB,gBAAgB,EAChB,sBAAsB,EAGtB,uBAAuB,EACxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AAWxC,qBAAa,WAAY,SAAQ,QAAQ,CAAC,qBAAqB,CAAE,YAAW,YAAY;IACtF,OAAO,CAAC,YAAY,CAAgB;IAEpC,OAAO,CAAC,KAAK,CAAW;IAExB,OAAO,CAAC,QAAQ,CAAM;IAEtB,OAAO,CAAC,QAAQ,CAAM;IAEtB,OAAO,CAAC,aAAa,CAGnB;IAEF,OAAO,CAAC,YAAY,CAA4B;gBAKpC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe;IAqBvC,kBAAkB,CAC7B,IAAI,GAAE,MAAuB,EAC7B,KAAK,GAAE,MAAc,EACrB,IAAI,GAAE,IAAmB,EACzB,MAAM,GAAE,OAAyB,GAChC,OAAO,CAAC,kBAAkB,CAAC;IA6HjB,iBAAiB,CAC5B,iBAAiB,EAAE,gBAAgB,EAAE,GACpC,OAAO,CAAC,yBAAyB,CAAC;YAqEvB,iBAAiB;IAiDlB,wBAAwB,CACnC,gBAAgB,EAAE,gBAAgB,EAAE,GACnC,OAAO,CAAC,gCAAgC,CAAC;IA2F5C,mBAAmB,WAAkB,gBAAgB,mBAInD;IAEF,2BAA2B,WAAkB,sBAAsB,mBAOjE;IAEF,+BAA+B,WAAkB,uBAAuB,mBAOtE;IAKF,OAAO,CAAC,wBAAwB;CAkBjC;AAOD,eAAO,MAAM,uBAAuB,UAAW,QAAQ,UAAU,eAAe,KAAG,YACnD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WxCallBackendConnector.d.ts","sourceRoot":"","sources":["../../../src/CallSettings/WxCallBackendConnector.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,QAAQ,EAAC,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EACL,eAAe,EAEf,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,uBAAuB,EAExB,MAAM,SAAS,CAAC;AAiCjB,qBAAa,sBAAuB,YAAW,uBAAuB;IACpE,OAAO,CAAC,YAAY,CAAgB;IAEpC,OAAO,CAAC,KAAK,CAAW;IAExB,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO,CAAC,QAAQ,CAAS;IAEzB,OAAO,CAAC,KAAK,CAAS;IAEtB,OAAO,CAAC,WAAW,CAAU;IAE7B,OAAO,CAAC,aAAa,CAAS;IAE9B,OAAO,CAAC,SAAS,CAAe;gBAEpB,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe;
|
|
1
|
+
{"version":3,"file":"WxCallBackendConnector.d.ts","sourceRoot":"","sources":["../../../src/CallSettings/WxCallBackendConnector.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,QAAQ,EAAC,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EACL,eAAe,EAEf,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,uBAAuB,EAExB,MAAM,SAAS,CAAC;AAiCjB,qBAAa,sBAAuB,YAAW,uBAAuB;IACpE,OAAO,CAAC,YAAY,CAAgB;IAEpC,OAAO,CAAC,KAAK,CAAW;IAExB,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO,CAAC,QAAQ,CAAS;IAEzB,OAAO,CAAC,KAAK,CAAS;IAEtB,OAAO,CAAC,WAAW,CAAU;IAE7B,OAAO,CAAC,aAAa,CAAS;IAE9B,OAAO,CAAC,SAAS,CAAe;gBAEpB,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe;IAsBvC,qBAAqB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAsErD,sBAAsB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IA6CtD,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAkDtE,qBAAqB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IA0CrD,qBAAqB,CAChC,qBAAqB,EAAE,kBAAkB,GACxC,OAAO,CAAC,mBAAmB,CAAC;IA0ClB,mBAAmB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IA0CnD,mBAAmB,CAC9B,gBAAgB,EAAE,gBAAgB,GACjC,OAAO,CAAC,mBAAmB,CAAC;IA4ClB,2BAA2B,IAAI,OAAO,CAAC,mBAAmB,CAAC;CAuEzE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CallingClient.d.ts","sourceRoot":"","sources":["../../../src/CallingClient/CallingClient.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,4BAA4B,CAAC;AASpD,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAEvC,OAAO,EAAmB,aAAa,EAAe,QAAQ,EAAC,MAAM,uBAAuB,CAAC;AAC7F,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AACxC,OAAO,EACL,uBAAuB,EAKxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,
|
|
1
|
+
{"version":3,"file":"CallingClient.d.ts","sourceRoot":"","sources":["../../../src/CallingClient/CallingClient.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,4BAA4B,CAAC;AASpD,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAEvC,OAAO,EAAmB,aAAa,EAAe,QAAQ,EAAC,MAAM,uBAAuB,CAAC;AAC7F,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AACxC,OAAO,EACL,uBAAuB,EAKxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAQL,kBAAkB,EACnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAC,cAAc,EAAE,mBAAmB,EAAC,MAAM,SAAS,CAAC;AAC5D,OAAO,EAAC,KAAK,EAAe,MAAM,iBAAiB,CAAC;AAiBpD,OAAO,EAAC,KAAK,EAAC,MAAM,cAAc,CAAC;AAuBnC,qBAAa,aAAc,SAAQ,QAAQ,CAAC,uBAAuB,CAAE,YAAW,cAAc;IAC5F,OAAO,CAAC,YAAY,CAAgB;IAEpC,OAAO,CAAC,KAAK,CAAW;IAExB,OAAO,CAAC,KAAK,CAAQ;IAErB,OAAO,CAAC,WAAW,CAAe;IAElC,OAAO,CAAC,aAAa,CAAiB;IAEtC,OAAO,CAAC,SAAS,CAAC,CAAsB;IAExC,OAAO,CAAC,iBAAiB,CAAW;IAEpC,OAAO,CAAC,gBAAgB,CAAW;IAEnC,OAAO,CAAC,cAAc,CAAgB;IAEtC,OAAO,CAAC,UAAU,CAAS;IAEpB,WAAW,EAAE,OAAO,KAAK,CAAC;IAEjC,OAAO,CAAC,QAAQ,CAA6B;IAE7C,OAAO,CAAC,aAAa,CAAS;IAE9B,OAAO,CAAC,oBAAoB,CAAM;IAElC,OAAO,CAAC,kBAAkB,CAAM;IAEhC,OAAO,CAAC,oBAAoB,CAAM;IAElC,OAAO,CAAC,kBAAkB,CAAM;gBAKpB,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,mBAAmB;IA6D5C,IAAI;YAoCH,wBAAwB;YA2BxB,eAAe;IAwB7B,OAAO,CAAC,oBAAoB,CAY1B;IAGF,OAAO,CAAC,mBAAmB,CAMzB;IAEF,OAAO,CAAC,oBAAoB,CAa1B;IAEF,OAAO,CAAC,mBAAmB,CA6CzB;IAEF,OAAO,CAAC,0BAA0B;YAmBpB,mBAAmB;YAkFnB,gBAAgB;IAiK9B,OAAO,CAAC,4BAA4B;IAgBpC,OAAO,CAAC,mBAAmB,CAoBzB;IAMK,eAAe,IAAI,MAAM;IAQzB,eAAe,IAAI,aAAa;IAIvC,OAAO,CAAC,wBAAwB;YAgClB,UAAU;IAuBjB,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;IAOjC,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;IAiBzC,gBAAgB,IAAI,KAAK,GAAG,SAAS;IAuB/B,UAAU,IAAI,OAAO,CAAC,kBAAkB,CAAC;CAQvD;AAOD,eAAO,MAAM,YAAY,UAChB,QAAQ,WACN,mBAAmB,KAC3B,QAAQ,cAAc,CAKxB,CAAC"}
|
|
@@ -38,6 +38,8 @@ export declare class Call extends Eventing<CallEventTypes> implements ICall {
|
|
|
38
38
|
private receivedRoapOKSeq;
|
|
39
39
|
private localAudioStream?;
|
|
40
40
|
private rtcMetrics;
|
|
41
|
+
private callKeepaliveRetryCount;
|
|
42
|
+
private callKeepaliveInterval?;
|
|
41
43
|
isMuted(): boolean;
|
|
42
44
|
isConnected(): boolean;
|
|
43
45
|
isHeld(): boolean;
|