@webex/calling 3.5.0-next.19 → 3.5.0-next.20

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.
@@ -2,8 +2,9 @@ import { MediaConnectionEventNames, LocalStreamEventNames, RoapMediaConnection,
2
2
  import { createMachine, interpret } from 'xstate';
3
3
  import { v4 as uuid } from 'uuid';
4
4
  import { EffectEvent } from '@webex/web-media-effects';
5
+ import { RtcMetrics } from '@webex/internal-plugin-metrics';
5
6
  import { ERROR_LAYER, ERROR_TYPE } from '../../Errors/types';
6
- import { handleCallErrors, parseMediaQualityStatistics } from '../../common/Utils';
7
+ import { handleCallErrors, parseMediaQualityStatistics, serviceErrorCodeHandler, } from '../../common/Utils';
7
8
  import { ALLOWED_SERVICES, CallDirection, HTTP_METHODS, } from '../../common/types';
8
9
  import { createCallError } from '../../Errors/catalog/CallError';
9
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, NOISE_REDUCTION_EFFECT, RESUME_ENDPOINT, SPARK_USER_AGENT, SUPPLEMENTARY_SERVICES_TIMEOUT, TRANSFER_ENDPOINT, } from '../constants';
@@ -49,6 +50,7 @@ export class Call extends Eventing {
49
50
  mediaNegotiationCompleted;
50
51
  receivedRoapOKSeq;
51
52
  localAudioStream;
53
+ rtcMetrics;
52
54
  isMuted() {
53
55
  return this.muted;
54
56
  }
@@ -98,6 +100,7 @@ export class Call extends Eventing {
98
100
  });
99
101
  this.remoteRoapMessage = null;
100
102
  this.disconnectReason = { code: DisconnectCode.NORMAL, cause: DisconnectCause.NORMAL };
103
+ this.rtcMetrics = new RtcMetrics(this.webex, { callId: this.callId }, this.correlationId);
101
104
  const callMachine = createMachine({
102
105
  schema: {
103
106
  context: {},
@@ -1219,6 +1222,23 @@ export class Call extends Eventing {
1219
1222
  this.mediaConnection.roapMessageReceived(message);
1220
1223
  }
1221
1224
  }
1225
+ forceSendStatsReport = async ({ callFrom }) => {
1226
+ const loggerContext = {
1227
+ file: CALL_FILE,
1228
+ method: this.forceSendStatsReport.name,
1229
+ };
1230
+ try {
1231
+ await this.mediaConnection.forceRtcMetricsSend();
1232
+ log.info(`Successfully uploaded available webrtc telemetry statistics`, loggerContext);
1233
+ log.info(`callFrom: ${callFrom}`, loggerContext);
1234
+ }
1235
+ catch (error) {
1236
+ const errorInfo = error;
1237
+ const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);
1238
+ const errorLog = new Error(`Failed to upload webrtc telemetry statistics. ${errorStatus}`);
1239
+ log.error(errorLog, loggerContext);
1240
+ }
1241
+ };
1222
1242
  initMediaConnection(localAudioTrack, debugId) {
1223
1243
  const mediaConnection = new RoapMediaConnection({
1224
1244
  skipInactiveTransceivers: true,
@@ -1236,7 +1256,7 @@ export class Call extends Eventing {
1236
1256
  video: 'inactive',
1237
1257
  screenShareVideo: 'inactive',
1238
1258
  },
1239
- }, debugId || `WebexCallSDK-${this.correlationId}`);
1259
+ }, debugId || `WebexCallSDK-${this.correlationId}`, (data) => this.rtcMetrics.addMetrics(data), () => this.rtcMetrics.closeMetrics(), () => this.rtcMetrics.sendMetricsInQueue());
1240
1260
  this.mediaConnection = mediaConnection;
1241
1261
  }
1242
1262
  getDirection = () => this.direction;
@@ -1250,6 +1270,7 @@ export class Call extends Eventing {
1250
1270
  }
1251
1271
  setCallId = (callId) => {
1252
1272
  this.callId = callId;
1273
+ this.rtcMetrics.updateCallId(callId);
1253
1274
  log.info(`Setting callId : ${this.callId} for correlationId: ${this.correlationId}`, {
1254
1275
  file: CALL_FILE,
1255
1276
  method: this.setCallId.name,
@@ -37,6 +37,7 @@ export declare class Call extends Eventing<CallEventTypes> implements ICall {
37
37
  private mediaNegotiationCompleted;
38
38
  private receivedRoapOKSeq;
39
39
  private localAudioStream?;
40
+ private rtcMetrics;
40
41
  isMuted(): boolean;
41
42
  isConnected(): boolean;
42
43
  isHeld(): boolean;
@@ -61,6 +62,7 @@ export declare class Call extends Eventing<CallEventTypes> implements ICall {
61
62
  private handleOutgoingRoapAnswer;
62
63
  private handleIncomingRoapOffer;
63
64
  private handleIncomingRoapAnswer;
65
+ private forceSendStatsReport;
64
66
  private initMediaConnection;
65
67
  getDirection: () => CallDirection;
66
68
  getCallId: () => CallId;
@@ -1 +1 @@
1
- {"version":3,"file":"call.d.ts","sourceRoot":"","sources":["../../../../src/CallingClient/calling/call.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"call.d.ts","sourceRoot":"","sources":["../../../../src/CallingClient/calling/call.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -38,7 +38,7 @@
38
38
  "dependencies": {
39
39
  "@types/platform": "1.3.4",
40
40
  "@webex/internal-media-core": "2.11.3",
41
- "@webex/media-helpers": "3.5.0-next.17",
41
+ "@webex/media-helpers": "3.5.0-next.18",
42
42
  "async-mutex": "0.4.0",
43
43
  "buffer": "6.0.3",
44
44
  "jest-html-reporters": "3.0.11",
@@ -129,5 +129,5 @@
129
129
  "staticpath": "docs",
130
130
  "noprompt": true
131
131
  },
132
- "version": "3.5.0-next.19"
132
+ "version": "3.5.0-next.20"
133
133
  }