@webex/internal-plugin-metrics 3.0.0-beta.222 → 3.0.0-beta.224

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.
Files changed (34) hide show
  1. package/dist/call-diagnostic/call-diagnostic-metrics-batcher.js +11 -3
  2. package/dist/call-diagnostic/call-diagnostic-metrics-batcher.js.map +1 -1
  3. package/dist/call-diagnostic/call-diagnostic-metrics.js +43 -5
  4. package/dist/call-diagnostic/call-diagnostic-metrics.js.map +1 -1
  5. package/dist/call-diagnostic/config.js +3 -1
  6. package/dist/call-diagnostic/config.js.map +1 -1
  7. package/dist/metrics.js +1 -1
  8. package/dist/metrics.types.js.map +1 -1
  9. package/dist/new-metrics.js +65 -0
  10. package/dist/new-metrics.js.map +1 -1
  11. package/dist/types/call-diagnostic/call-diagnostic-metrics.d.ts +32 -9
  12. package/dist/types/call-diagnostic/config.d.ts +1 -0
  13. package/dist/types/metrics.types.d.ts +2 -3
  14. package/dist/types/new-metrics.d.ts +14 -0
  15. package/package.json +9 -8
  16. package/src/call-diagnostic/call-diagnostic-metrics-batcher.ts +36 -8
  17. package/src/call-diagnostic/call-diagnostic-metrics.ts +79 -2
  18. package/src/call-diagnostic/config.ts +2 -0
  19. package/src/metrics.types.ts +6 -3
  20. package/src/new-metrics.ts +68 -0
  21. package/test/unit/spec/call-diagnostic/call-diagnostic-metrics.ts +96 -19
  22. package/test/unit/spec/new-metrics.ts +30 -0
  23. package/dist/call-diagnostic/generated-types-temp/ClientEvent.js +0 -7
  24. package/dist/call-diagnostic/generated-types-temp/ClientEvent.js.map +0 -1
  25. package/dist/call-diagnostic/generated-types-temp/Event.js +0 -7
  26. package/dist/call-diagnostic/generated-types-temp/Event.js.map +0 -1
  27. package/dist/call-diagnostic/generated-types-temp/MediaQualityEvent.js +0 -7
  28. package/dist/call-diagnostic/generated-types-temp/MediaQualityEvent.js.map +0 -1
  29. package/dist/types/call-diagnostic/generated-types-temp/ClientEvent.d.ts +0 -1112
  30. package/dist/types/call-diagnostic/generated-types-temp/Event.d.ts +0 -4851
  31. package/dist/types/call-diagnostic/generated-types-temp/MediaQualityEvent.d.ts +0 -2121
  32. package/src/call-diagnostic/generated-types-temp/ClientEvent.ts +0 -2395
  33. package/src/call-diagnostic/generated-types-temp/Event.ts +0 -7762
  34. package/src/call-diagnostic/generated-types-temp/MediaQualityEvent.ts +0 -2321
@@ -168,6 +168,74 @@ class Metrics extends WebexPlugin {
168
168
  return this.callDiagnosticMetrics.submitClientEvent({name, payload, options});
169
169
  }
170
170
 
171
+ /**
172
+ * Submit a pre-login metric to clientmetrics
173
+ * @public
174
+ * @param payload
175
+ * @param preLoginId - pre-login ID of user
176
+ * @returns
177
+ */
178
+ public postPreLoginMetric(payload: any, preLoginId: string): Promise<any> {
179
+ // @ts-ignore
180
+ return this.webex
181
+ .request({
182
+ method: 'POST',
183
+ api: 'metrics',
184
+ resource: 'clientmetrics-prelogin',
185
+ headers: {
186
+ authorization: false,
187
+ 'x-prelogin-userid': preLoginId,
188
+ },
189
+ body: payload,
190
+ })
191
+ .then((res) => {
192
+ // @ts-ignore
193
+ this.webex.logger.log(`NewMetrics: @postPreLoginMetric. Request successful:`, res);
194
+
195
+ return res;
196
+ })
197
+ .catch((err) => {
198
+ // @ts-ignore
199
+ this.logger.error(`NewMetrics: @postPreLoginMetric. Request failed:`, err);
200
+
201
+ return Promise.reject(err);
202
+ });
203
+ }
204
+
205
+ /**
206
+ * Issue request to alias a user's pre-login ID with their CI UUID
207
+ * @param {string} preLoginId
208
+ * @returns {Object} HttpResponse object
209
+ */
210
+ public clientMetricsAliasUser(preLoginId: string) {
211
+ // @ts-ignore
212
+ return this.webex
213
+ .request({
214
+ method: 'POST',
215
+ api: 'metrics',
216
+ resource: 'clientmetrics',
217
+ headers: {
218
+ 'x-prelogin-userid': preLoginId,
219
+ },
220
+ body: {},
221
+ qs: {
222
+ alias: true,
223
+ },
224
+ })
225
+ .then((res) => {
226
+ // @ts-ignore
227
+ this.webex.logger.log(`NewMetrics: @clientMetricsAliasUser. Request successful:`, res);
228
+
229
+ return res;
230
+ })
231
+ .catch((err) => {
232
+ // @ts-ignore
233
+ this.logger.error(`NewMetrics: @clientMetricsAliasUser. Request failed:`, err);
234
+
235
+ return Promise.reject(err);
236
+ });
237
+ }
238
+
171
239
  /**
172
240
  * Returns a promise that will resolve to fetch options for submitting a metric.
173
241
  *
@@ -16,7 +16,7 @@ const userAgent = `webex-js-sdk/test-webex-version client=Cantina; (os=${getOSNa
16
16
  getOSVersion().split('.')[0]
17
17
  })`;
18
18
 
19
- describe.only('internal-plugin-metrics', () => {
19
+ describe('internal-plugin-metrics', () => {
20
20
  describe('CallDiagnosticMetrics', () => {
21
21
  var now = new Date();
22
22
 
@@ -49,7 +49,9 @@ describe.only('internal-plugin-metrics', () => {
49
49
  metrics: {
50
50
  submitClientMetrics: sinon.stub(),
51
51
  },
52
- newMetrics: {},
52
+ newMetrics: {
53
+ postPreLoginMetric: sinon.stub(),
54
+ },
53
55
  device: {
54
56
  userId: 'userId',
55
57
  url: 'deviceUrl',
@@ -78,6 +80,11 @@ describe.only('internal-plugin-metrics', () => {
78
80
  isUnverifiedGuest: false,
79
81
  },
80
82
  prepareFetchOptions: sinon.stub().callsFake((opts: any) => ({...opts, foo: 'bar'})),
83
+ request: sinon.stub().resolves({body: {}}),
84
+ logger: {
85
+ log: sinon.stub(),
86
+ error: sinon.stub(),
87
+ },
81
88
  };
82
89
 
83
90
  webex.internal.newMetrics.callDiagnosticLatencies = new CallDiagnosticLatencies(
@@ -160,10 +167,10 @@ describe.only('internal-plugin-metrics', () => {
160
167
  browser: getBrowserName(),
161
168
  browserVersion: getBrowserVersion(),
162
169
  clientType: 'TEAMS_CLIENT',
163
- "clientVersion": "43.9.0.1234",
164
- "localNetworkPrefix": "1.3.4.0",
165
- "majorVersion": 43,
166
- "minorVersion": 9,
170
+ clientVersion: '43.9.0.1234',
171
+ localNetworkPrefix: '1.3.4.0',
172
+ majorVersion: 43,
173
+ minorVersion: 9,
167
174
  os: getOSNameInternal(),
168
175
  osVersion: getOSVersion(),
169
176
  subClientType: 'WEB_APP',
@@ -173,7 +180,7 @@ describe.only('internal-plugin-metrics', () => {
173
180
  networkType: 'unknown',
174
181
  userAgent,
175
182
  });
176
- })
183
+ });
177
184
  });
178
185
 
179
186
  describe('#getIdentifiers', () => {
@@ -621,6 +628,28 @@ describe.only('internal-plugin-metrics', () => {
621
628
  }
622
629
  );
623
630
  });
631
+
632
+ it('should submit client to diagnostic when no preLoginId provided', () => {
633
+ const testEvent = {name: 'client.alert.displayed', options: {meetingId: 'meetingId'}};
634
+ sinon.stub(cd, 'prepareClientEvent').returns(testEvent);
635
+ sinon.stub(cd, 'submitToCallDiagnostics');
636
+ sinon.stub(cd, 'submitToCallDiagnosticsPreLogin');
637
+ //@ts-ignore
638
+ cd.submitClientEvent(testEvent);
639
+ assert.calledWith(cd.submitToCallDiagnostics, testEvent);
640
+ assert.notCalled(cd.submitToCallDiagnosticsPreLogin);
641
+ });
642
+
643
+ it('should submit event to prelogin when preLoginId provided', () => {
644
+ const testEvent = {name: 'client.alert.displayed', options: {preLoginId: 'preLoginId'}};
645
+ sinon.stub(cd, 'prepareClientEvent').returns(testEvent);
646
+ sinon.stub(cd, 'submitToCallDiagnosticsPreLogin');
647
+ sinon.stub(cd, 'submitToCallDiagnostics');
648
+ //@ts-ignore
649
+ cd.submitClientEvent(testEvent);
650
+ assert.calledWith(cd.submitToCallDiagnosticsPreLogin, testEvent);
651
+ assert.notCalled(cd.submitToCallDiagnostics);
652
+ });
624
653
  });
625
654
 
626
655
  it('should send request to call diagnostic batcher', () => {
@@ -752,6 +781,7 @@ describe.only('internal-plugin-metrics', () => {
752
781
  );
753
782
  });
754
783
  });
784
+
755
785
  describe('#getErrorPayloadForClientErrorCode', () => {
756
786
  it('it should grab the payload for client error code correctly', () => {
757
787
  const res = cd.getErrorPayloadForClientErrorCode({
@@ -779,7 +809,7 @@ describe.only('internal-plugin-metrics', () => {
779
809
  });
780
810
 
781
811
  describe('#generateClientEventErrorPayload', () => {
782
- const defaultExpectedRes = {
812
+ const defaultExpectedRes = {
783
813
  category: 'expected',
784
814
  errorDescription: 'StartRecordingFailed',
785
815
  fatal: true,
@@ -788,7 +818,7 @@ describe.only('internal-plugin-metrics', () => {
788
818
  errorCode: 4029,
789
819
  serviceErrorCode: 2409005,
790
820
  };
791
-
821
+
792
822
  const checkNameError = (payload: any, isExpectedToBeCalled: boolean) => {
793
823
  const res = cd.generateClientEventErrorPayload(payload);
794
824
  const expectedResult = {
@@ -807,7 +837,7 @@ describe.only('internal-plugin-metrics', () => {
807
837
  } else {
808
838
  assert.notDeepEqual(res, expectedResult);
809
839
  }
810
- }
840
+ };
811
841
 
812
842
  it('should generate media event error payload if rawError has a media error name', () => {
813
843
  checkNameError({name: 'PermissionDeniedError'}, true);
@@ -820,13 +850,13 @@ describe.only('internal-plugin-metrics', () => {
820
850
  const checkCodeError = (payload: any, expetedRes: any) => {
821
851
  const res = cd.generateClientEventErrorPayload(payload);
822
852
  assert.deepEqual(res, expetedRes);
823
- }
853
+ };
824
854
  it('should generate event error payload correctly', () => {
825
- checkCodeError({body: {errorCode: 2409005}}, defaultExpectedRes)
855
+ checkCodeError({body: {errorCode: 2409005}}, defaultExpectedRes);
826
856
  });
827
857
 
828
858
  it('should generate event error payload correctly if rawError has body.code', () => {
829
- checkCodeError({body: {code: 2409005}}, defaultExpectedRes)
859
+ checkCodeError({body: {code: 2409005}}, defaultExpectedRes);
830
860
  });
831
861
 
832
862
  it('should generate event error payload correctly if rawError has body.reason.reasonCode', () => {
@@ -854,7 +884,7 @@ describe.only('internal-plugin-metrics', () => {
854
884
  } else {
855
885
  assert.notDeepEqual(res, expectedResult);
856
886
  }
857
- }
887
+ };
858
888
 
859
889
  it('should return default new locus event error payload correctly if locus error is recognized', () => {
860
890
  checkLocusError({body: {errorCode: 2400000}}, true);
@@ -881,7 +911,7 @@ describe.only('internal-plugin-metrics', () => {
881
911
  } else {
882
912
  assert.notDeepEqual(res, expectedResult);
883
913
  }
884
- }
914
+ };
885
915
 
886
916
  it('should return default meeting info lookup error payload if data.meetingInfo was found on error body', () => {
887
917
  checkMeetingInfoError({body: {data: {meetingInfo: 'something'}}}, true);
@@ -891,7 +921,6 @@ describe.only('internal-plugin-metrics', () => {
891
921
  checkMeetingInfoError({body: {url: '1234567-wbxappapiabcdefg'}}, true);
892
922
  });
893
923
 
894
-
895
924
  it('should not return default meeting info lookup error payload if body.url does not contain wbxappapi and data.meetingInfo was not found on error body', () => {
896
925
  checkMeetingInfoError({body: {data: '1234567-wbxappapiabcdefg'}}, false);
897
926
  });
@@ -929,13 +958,15 @@ describe.only('internal-plugin-metrics', () => {
929
958
  it('returns false if converged architecture is not enabled', () => {
930
959
  fakeMeeting.meetingInfo = {enableConvergedArchitecture: false};
931
960
  assert.deepEqual(cd.getIsConvergedArchitectureEnabled({meetingId: fakeMeeting.id}), false);
932
-
933
961
  });
934
962
  it('returns undefined if converged architecture is not defined', () => {
935
963
  fakeMeeting.meetingInfo = {};
936
- assert.deepEqual(cd.getIsConvergedArchitectureEnabled({meetingId: fakeMeeting.id}), undefined);
964
+ assert.deepEqual(
965
+ cd.getIsConvergedArchitectureEnabled({meetingId: fakeMeeting.id}),
966
+ undefined
967
+ );
937
968
  });
938
- })
969
+ });
939
970
 
940
971
  describe('#buildClientEventFetchRequestOptions', () => {
941
972
  it('returns expected options', async () => {
@@ -1011,5 +1042,51 @@ describe.only('internal-plugin-metrics', () => {
1011
1042
  });
1012
1043
  });
1013
1044
  });
1045
+
1046
+ describe('#submitToCallDiagnosticsPreLogin', async () => {
1047
+ it('should call webex.request with expected options', async () => {
1048
+ sinon.spy(Utils, 'prepareDiagnosticMetricItem');
1049
+ await cd.submitToCallDiagnosticsPreLogin(
1050
+ {
1051
+ //@ts-ignore
1052
+ event: {name: 'client.alert.displayed', canProceed: true},
1053
+ //@ts-ignore
1054
+ originTime: {triggered: 'now'},
1055
+ },
1056
+ 'my-id'
1057
+ );
1058
+
1059
+ assert.calledWith(Utils.prepareDiagnosticMetricItem, webex, {
1060
+ eventPayload: {
1061
+ event: {name: 'client.alert.displayed', canProceed: true},
1062
+ originTime: {triggered: 'now', sent: now.toISOString()},
1063
+ origin: {buildType: 'test', networkType: 'unknown'},
1064
+ },
1065
+ type: ['diagnostic-event'],
1066
+ });
1067
+
1068
+ assert.calledWith(
1069
+ webex.internal.newMetrics.postPreLoginMetric,
1070
+ {
1071
+ eventPayload: {
1072
+ event: {
1073
+ name: 'client.alert.displayed',
1074
+ canProceed: true,
1075
+ },
1076
+ originTime: {
1077
+ sent: now.toISOString(),
1078
+ triggered: 'now',
1079
+ },
1080
+ origin: {
1081
+ buildType: 'test',
1082
+ networkType: 'unknown',
1083
+ },
1084
+ },
1085
+ type: ['diagnostic-event'],
1086
+ },
1087
+ 'my-id'
1088
+ );
1089
+ });
1090
+ });
1014
1091
  });
1015
1092
  });
@@ -18,6 +18,7 @@ describe('internal-plugin-metrics', () => {
18
18
  get: sinon.stub(),
19
19
  },
20
20
  },
21
+ request: sinon.stub().resolves({})
21
22
  });
22
23
 
23
24
  webex.emit('ready');
@@ -26,6 +27,8 @@ describe('internal-plugin-metrics', () => {
26
27
  webex.internal.newMetrics.callDiagnosticLatencies.clearTimestamps = sinon.stub();
27
28
  webex.internal.newMetrics.callDiagnosticMetrics.submitClientEvent = sinon.stub();
28
29
  webex.internal.newMetrics.callDiagnosticMetrics.submitMQE = sinon.stub();
30
+ webex.internal.newMetrics.callDiagnosticMetrics.clientMetricsAliasUser = sinon.stub();
31
+ webex.internal.newMetrics.callDiagnosticMetrics.postPreLoginMetric = sinon.stub();
29
32
  webex.internal.newMetrics.callDiagnosticMetrics.buildClientEventFetchRequestOptions =
30
33
  sinon.stub();
31
34
  webex.setTimingsAndFetch = sinon.stub();
@@ -95,6 +98,33 @@ describe('internal-plugin-metrics', () => {
95
98
  assert.calledOnce(webex.internal.newMetrics.callDiagnosticLatencies.clearTimestamps);
96
99
  });
97
100
 
101
+ describe('#clientMetricsAliasUser', () => {
102
+ it('aliases the user correctly', () => {
103
+ webex.internal.newMetrics.clientMetricsAliasUser('my-id');
104
+ assert.calledWith(webex.request, {
105
+ method: 'POST',
106
+ api: 'metrics',
107
+ resource: 'clientmetrics',
108
+ headers: { 'x-prelogin-userid': 'my-id' },
109
+ body: {},
110
+ qs: { alias: true }
111
+ });
112
+ })
113
+ });
114
+
115
+ describe('#postPreLoginMetric', () => {
116
+ it('sends the request correctly', () => {
117
+ webex.internal.newMetrics.postPreLoginMetric({event: 'test'}, 'my-id');
118
+ assert.calledWith(webex.request, {
119
+ method: 'POST',
120
+ api: 'metrics',
121
+ resource: 'clientmetrics-prelogin',
122
+ headers: { 'x-prelogin-userid': 'my-id', authorization: false },
123
+ body: {event: 'test'},
124
+ });
125
+ })
126
+ })
127
+
98
128
  describe('#buildClientEventFetchRequestOptions', () => {
99
129
  it('builds client event fetch options successfully', () => {
100
130
  webex.internal.newMetrics.buildClientEventFetchRequestOptions({
@@ -1,7 +0,0 @@
1
- "use strict";
2
-
3
- var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
- _Object$defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- //# sourceMappingURL=ClientEvent.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":[],"sources":["ClientEvent.ts"],"sourcesContent":["/* eslint-disable */\n/**\n * This file was automatically generated by json-schema-to-typescript.\n * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,\n * and run json-schema-to-typescript to regenerate this file.\n */\n\n/**\n * Events from clients\n */\nexport interface ClientEvent {\n canProceed: boolean;\n state?: string;\n mediaType?: 'audio' | 'video' | 'share' | 'share_audio' | 'whiteboard' | 'gamestate';\n csi?: number;\n /**\n * media capability for both transmit and receive\n */\n mediaCapabilities?: {\n /**\n * explicit indication of media capabilities. true=supported\n */\n tx: {\n audio: boolean;\n video: boolean;\n share: boolean;\n share_audio: boolean;\n whiteboard: boolean;\n gamestate?: boolean;\n };\n /**\n * explicit indication of media capabilities. true=supported\n */\n rx: {\n audio: boolean;\n video: boolean;\n share: boolean;\n share_audio: boolean;\n whiteboard: boolean;\n gamestate?: boolean;\n };\n };\n mediaLines?: {\n mediaType: 'audio' | 'video' | 'share' | 'share_audio' | 'whiteboard' | 'gamestate';\n remoteIP?: string;\n localIP?: string;\n localNetworkPrefix?: string;\n localPort?: number;\n remotePort?: number;\n protocol: 'udp' | 'tcp' | 'xtls' | 'unknown';\n direction: 'sendrecv' | 'sendonly' | 'recvonly' | 'inactive';\n clusterName?: string;\n status?: 'succeeded' | 'in-progress' | 'failed';\n failureReason?: 'network' | 'transport' | 'rejected' | 'timeout' | 'notstarted' | 'succeeded';\n errorCode?: number;\n mediaLineData?: {};\n }[];\n /**\n * allows client to specify media preferences\n */\n clientMediaPreferences?: {\n preferTranscoding: boolean;\n };\n pstnAudioType?: 'dial-in' | 'dial-out';\n success?: boolean;\n isTranscoded?: boolean;\n isGatewayed?: boolean;\n isComposed?: boolean;\n /**\n * determine how the events are processed as well as how the reports are aggregated and sliced\n */\n registrationMode?: 'SIP' | 'Cloud' | 'CloudAware';\n /**\n * protocols used to help determine how the events are processed as well as how the reports are aggregated and sliced\n */\n protocol?: 'SIP' | 'H323' | 'Locus' | 'WebRTC';\n /**\n * The underlying service provider of the call.\n */\n meetingPlatform?: 'MsTeams' | 'GoogleMeet' | 'Zoom' | 'Webex';\n labels?: string[];\n webexServiceType?: 'MC' | 'EC' | 'SC' | 'TC' | 'AA' | 'RA' | 'NBR' | 'WRF' | 'HOL';\n /**\n * this defines the sub service type\n */\n webexSubServiceType?:\n | 'PMR'\n | 'Event'\n | 'Training'\n | 'ScheduleMeeting'\n | 'ScheduledMeeting'\n | 'Webinar'\n | 'others';\n ivrDialogType?:\n | 'MEDIA_ON_HOLD'\n | 'ANNOUNCEMENT'\n | 'TONE'\n | 'COLLECT_PIN'\n | 'PROMPT'\n | 'MEDIA_SERVICE_AGENT'\n | 'COLLECT';\n ivrDialogResult?:\n | 'SUCCESS'\n | 'FAILURE'\n | 'HOST_PIN_MATCH'\n | 'GUEST_PIN_MATCH'\n | 'PANELIST_PIN_MATCH'\n | 'NO_MATCH'\n | 'INVALID_PIN';\n callType?:\n | 'VIDEO_DIALIN'\n | 'VIDEO_DIALOUT'\n | 'CASCADE'\n | 'HYBRID_CASCADE'\n | 'PSTN_SIP'\n | 'PSTN_DIALIN'\n | 'PSTN_DIALOUT'\n | 'PSTN_ONLY_DIALIN'\n | 'PSTN_ONLY_DIALOUT'\n | 'H323'\n | 'H323_IP'\n | 'SIP_ENTERPRISE'\n | 'SIP_MOBILE'\n | 'SIP_NATIONAL'\n | 'SIP_INTERNATIONAL'\n | 'SIP_EMERGENCY'\n | 'SIP_OPERATOR'\n | 'SIP_SHORTCODE'\n | 'SIP_TOLLFREE'\n | 'SIP_PREMIUM'\n | 'SIP_URI'\n | 'SIP_INBOUND'\n | 'UNKNOWN'\n | 'ZTM'\n | 'SIP_MEETING';\n eventData?: {};\n derivedSipClientType?:\n | 'SIP_CE_SINGLE_SCREEN'\n | 'SIP_CE_MULTI_SCREEN'\n | 'SIP_JABBER'\n | 'SIP_TIP_SINGLE_SCREEN'\n | 'SIP_TIP_THREE_SCREEN'\n | 'SIP_PSTN'\n | 'SIP_OTHER'\n | 'SIP_WEBEX_CASCADE'\n | 'SIP_NONE';\n /**\n * this defines the major client types\n */\n derivedClientType?:\n | 'MEETING_CENTER'\n | 'EVENT_CENTER'\n | 'TRAINING_CENTER'\n | 'TEAMS_CLIENT'\n | 'TEAMS_DEVICE'\n | 'TEAMS_SHARE'\n | 'SIP'\n | 'RECORDING'\n | 'CLOUD_AWARE_SIP'\n | 'TEAMS_WXC_CLIENT'\n | 'WXC_CLIENT'\n | 'WXC_DEVICE'\n | 'WEBEX_JS_SDK'\n | 'VOICEA_CLIENT'\n | 'CISCO_SIP_GW'\n | 'WEBEX_SDK'\n | 'CPAAS_THIRD_PARTY_SDK'\n | 'WXC_THIRD_PARTY';\n /**\n * this defines the sub types of clients\n */\n derivedSubClientType?:\n | 'DESKTOP_APP'\n | 'DESKTOP_APP_VDI'\n | 'DEVICE_CURRENT'\n | 'DEVICE_LEGACY_2020'\n | 'HVDI_APP'\n | 'MOBILE_APP'\n | 'VDI_APP'\n | 'WEB_APP'\n | 'MOBILE_NETWORK'\n | 'HOLOGRAM_HEADSET_APP';\n serverRole?:\n | 'CONFERENCE'\n | 'TRANSCODER'\n | 'WHITEBOARD_INJECTOR'\n | 'MS_TEAMS_CONFERENCE'\n | 'RECORDING'\n | 'GATEWAY'\n | 'GATEWAY_CLIENT_SIDE'\n | 'UNKNOWN'\n | 'HOLOGRAM_RENDER';\n reconnect?: boolean;\n retryCount?: number;\n meetSimple?: boolean;\n /**\n * represents media quality status report such as no media or drop out\n */\n mediaStatus?: {\n mediaType?: 'audio' | 'video' | 'share' | 'share_audio' | 'whiteboard';\n mediaSuccess?: boolean;\n shareType?:\n | 'cb-normal-share'\n | 'ce-airplay-share'\n | 'ce-direct-share'\n | 'ce-gui-loopback-share'\n | 'ce-input-source-share'\n | 'ce-input-source-share-hdmi'\n | 'ce-input-source-share-usbc'\n | 'ce-jpg-share'\n | 'ce-miracast-share'\n | 'mcs-normal-share'\n | 'mcs-normal-audio-share'\n | 'mcs-hfps-share'\n | 'mcs-hfps-audio-share';\n isTransmitter?: boolean;\n audioJoinType?:\n | 'phone-call-in'\n | 'phone-call-back'\n | 'voip'\n | 'device-call-back'\n | 'never-join-audio'\n | 'tried-but-never-join';\n /**\n * indicates transport type used\n */\n transportType?: 'UDP' | 'TCP' | 'xTLS' | 'TLS';\n additionalData?: {};\n };\n shareInstanceId?: string;\n hologramStreamId?: string;\n /**\n * represents all of the properities that could cause delay during media setup process.\n */\n audioSetupDelay?: {\n floorReqSentReceived?: number;\n floorRespSentReceived?: number;\n mediaType?: 'audio' | 'video' | 'share' | 'share_audio' | 'whiteboard';\n txReqFloorGranted?: number;\n txSessionCreateConfirm?: number;\n txApeEnrollConfirm?: number;\n txUIDelay?: number;\n txScreenCaptureDelay?: number;\n txScreenCaptureDelayReasonCode?: number;\n txShareStartOverallDelay?: number;\n rx1stPacket2RenderDelay?: number;\n rxGranted2RenderDelay?: number;\n rxFailFrameNumB4Success?: number;\n e2eFirstFrameDelay?: number;\n CBSessionRespToLocusFloorGrantDelay?: number;\n CBShareReceiveToServerShareTransmitDelay?: number;\n CBShareReceiveToTPGWFirstKeyFrameDelay?: number;\n TPGWFirstKeyFrameToServerShareTransmitDelay?: number;\n MCSSessionActivateToLocusFloorGrantDelay?: number;\n ServerShareInitiateToLocusFloorGrantDelay?: number;\n LocusFloorGrantToCBSessionStartDelay?: number;\n ServerShareReceiveToTPGWFirstKeyFrameDelay?: number;\n LocusFloorGrantToTPGWFloorGrantDelay?: number;\n LocusFloorGrantToReceiverNotificationDelay?: number;\n CBShareSessionRespDelay?: number;\n LocusShareFloorGrantRespDelay?: number;\n ServerShareFloorGrantRespDelay?: number;\n joinRespRxStart?: number;\n joinRespTxStart?: number;\n maxRemoteLossRate?: number;\n media2SignalDelay?: number;\n warholDownloadTime?: number;\n contentDownloadTime?: number;\n boardCreationTime?: number;\n totalBoardServiceRespDelay?: number;\n };\n /**\n * represents all of the properities that could cause delay during media setup process.\n */\n videoSetupDelay?: {\n floorReqSentReceived?: number;\n floorRespSentReceived?: number;\n mediaType?: 'audio' | 'video' | 'share' | 'share_audio' | 'whiteboard';\n txReqFloorGranted?: number;\n txSessionCreateConfirm?: number;\n txApeEnrollConfirm?: number;\n txUIDelay?: number;\n txScreenCaptureDelay?: number;\n txScreenCaptureDelayReasonCode?: number;\n txShareStartOverallDelay?: number;\n rx1stPacket2RenderDelay?: number;\n rxGranted2RenderDelay?: number;\n rxFailFrameNumB4Success?: number;\n e2eFirstFrameDelay?: number;\n CBSessionRespToLocusFloorGrantDelay?: number;\n CBShareReceiveToServerShareTransmitDelay?: number;\n CBShareReceiveToTPGWFirstKeyFrameDelay?: number;\n TPGWFirstKeyFrameToServerShareTransmitDelay?: number;\n MCSSessionActivateToLocusFloorGrantDelay?: number;\n ServerShareInitiateToLocusFloorGrantDelay?: number;\n LocusFloorGrantToCBSessionStartDelay?: number;\n ServerShareReceiveToTPGWFirstKeyFrameDelay?: number;\n LocusFloorGrantToTPGWFloorGrantDelay?: number;\n LocusFloorGrantToReceiverNotificationDelay?: number;\n CBShareSessionRespDelay?: number;\n LocusShareFloorGrantRespDelay?: number;\n ServerShareFloorGrantRespDelay?: number;\n joinRespRxStart?: number;\n joinRespTxStart?: number;\n maxRemoteLossRate?: number;\n media2SignalDelay?: number;\n warholDownloadTime?: number;\n contentDownloadTime?: number;\n boardCreationTime?: number;\n totalBoardServiceRespDelay?: number;\n };\n /**\n * represents all of the properities that could cause delay during media setup process.\n */\n shareSetupDelay?: {\n floorReqSentReceived?: number;\n floorRespSentReceived?: number;\n mediaType?: 'audio' | 'video' | 'share' | 'share_audio' | 'whiteboard';\n txReqFloorGranted?: number;\n txSessionCreateConfirm?: number;\n txApeEnrollConfirm?: number;\n txUIDelay?: number;\n txScreenCaptureDelay?: number;\n txScreenCaptureDelayReasonCode?: number;\n txShareStartOverallDelay?: number;\n rx1stPacket2RenderDelay?: number;\n rxGranted2RenderDelay?: number;\n rxFailFrameNumB4Success?: number;\n e2eFirstFrameDelay?: number;\n CBSessionRespToLocusFloorGrantDelay?: number;\n CBShareReceiveToServerShareTransmitDelay?: number;\n CBShareReceiveToTPGWFirstKeyFrameDelay?: number;\n TPGWFirstKeyFrameToServerShareTransmitDelay?: number;\n MCSSessionActivateToLocusFloorGrantDelay?: number;\n ServerShareInitiateToLocusFloorGrantDelay?: number;\n LocusFloorGrantToCBSessionStartDelay?: number;\n ServerShareReceiveToTPGWFirstKeyFrameDelay?: number;\n LocusFloorGrantToTPGWFloorGrantDelay?: number;\n LocusFloorGrantToReceiverNotificationDelay?: number;\n CBShareSessionRespDelay?: number;\n LocusShareFloorGrantRespDelay?: number;\n ServerShareFloorGrantRespDelay?: number;\n joinRespRxStart?: number;\n joinRespTxStart?: number;\n maxRemoteLossRate?: number;\n media2SignalDelay?: number;\n warholDownloadTime?: number;\n contentDownloadTime?: number;\n boardCreationTime?: number;\n totalBoardServiceRespDelay?: number;\n };\n /**\n * represents all of the properities that could cause delay during media setup process.\n */\n shareAudioSetupDelay?: {\n floorReqSentReceived?: number;\n floorRespSentReceived?: number;\n mediaType?: 'audio' | 'video' | 'share' | 'share_audio' | 'whiteboard';\n txReqFloorGranted?: number;\n txSessionCreateConfirm?: number;\n txApeEnrollConfirm?: number;\n txUIDelay?: number;\n txScreenCaptureDelay?: number;\n txScreenCaptureDelayReasonCode?: number;\n txShareStartOverallDelay?: number;\n rx1stPacket2RenderDelay?: number;\n rxGranted2RenderDelay?: number;\n rxFailFrameNumB4Success?: number;\n e2eFirstFrameDelay?: number;\n CBSessionRespToLocusFloorGrantDelay?: number;\n CBShareReceiveToServerShareTransmitDelay?: number;\n CBShareReceiveToTPGWFirstKeyFrameDelay?: number;\n TPGWFirstKeyFrameToServerShareTransmitDelay?: number;\n MCSSessionActivateToLocusFloorGrantDelay?: number;\n ServerShareInitiateToLocusFloorGrantDelay?: number;\n LocusFloorGrantToCBSessionStartDelay?: number;\n ServerShareReceiveToTPGWFirstKeyFrameDelay?: number;\n LocusFloorGrantToTPGWFloorGrantDelay?: number;\n LocusFloorGrantToReceiverNotificationDelay?: number;\n CBShareSessionRespDelay?: number;\n LocusShareFloorGrantRespDelay?: number;\n ServerShareFloorGrantRespDelay?: number;\n joinRespRxStart?: number;\n joinRespTxStart?: number;\n maxRemoteLossRate?: number;\n media2SignalDelay?: number;\n warholDownloadTime?: number;\n contentDownloadTime?: number;\n boardCreationTime?: number;\n totalBoardServiceRespDelay?: number;\n };\n /**\n * represents all of the properities that could cause delay during media setup process.\n */\n whiteboardSetupDelay?: {\n floorReqSentReceived?: number;\n floorRespSentReceived?: number;\n mediaType?: 'audio' | 'video' | 'share' | 'share_audio' | 'whiteboard';\n txReqFloorGranted?: number;\n txSessionCreateConfirm?: number;\n txApeEnrollConfirm?: number;\n txUIDelay?: number;\n txScreenCaptureDelay?: number;\n txScreenCaptureDelayReasonCode?: number;\n txShareStartOverallDelay?: number;\n rx1stPacket2RenderDelay?: number;\n rxGranted2RenderDelay?: number;\n rxFailFrameNumB4Success?: number;\n e2eFirstFrameDelay?: number;\n CBSessionRespToLocusFloorGrantDelay?: number;\n CBShareReceiveToServerShareTransmitDelay?: number;\n CBShareReceiveToTPGWFirstKeyFrameDelay?: number;\n TPGWFirstKeyFrameToServerShareTransmitDelay?: number;\n MCSSessionActivateToLocusFloorGrantDelay?: number;\n ServerShareInitiateToLocusFloorGrantDelay?: number;\n LocusFloorGrantToCBSessionStartDelay?: number;\n ServerShareReceiveToTPGWFirstKeyFrameDelay?: number;\n LocusFloorGrantToTPGWFloorGrantDelay?: number;\n LocusFloorGrantToReceiverNotificationDelay?: number;\n CBShareSessionRespDelay?: number;\n LocusShareFloorGrantRespDelay?: number;\n ServerShareFloorGrantRespDelay?: number;\n joinRespRxStart?: number;\n joinRespTxStart?: number;\n maxRemoteLossRate?: number;\n media2SignalDelay?: number;\n warholDownloadTime?: number;\n contentDownloadTime?: number;\n boardCreationTime?: number;\n totalBoardServiceRespDelay?: number;\n };\n isFocus?: boolean;\n processingDelay?: number;\n shareType?:\n | 'cb-normal-share'\n | 'ce-airplay-share'\n | 'ce-direct-share'\n | 'ce-gui-loopback-share'\n | 'ce-input-source-share'\n | 'ce-input-source-share-hdmi'\n | 'ce-input-source-share-usbc'\n | 'ce-jpg-share'\n | 'ce-miracast-share'\n | 'mcs-normal-share'\n | 'mcs-normal-audio-share'\n | 'mcs-hfps-share'\n | 'mcs-hfps-audio-share';\n isShareBeingTakenOver?: boolean;\n floorBeneficiaryUpdated?: boolean;\n meetingJoinedTime?: string;\n meetingScheduledTime?: string;\n e2eeKeyEpoch?: number;\n e2eeDecompressRatio?: number;\n keyResponses?: {\n gotKeyTime?: number;\n useKeyTime?: number;\n cacheKeyTime?: number;\n }[];\n e2eeVersion?: 'E2EEV1' | 'E2EEV2' | 'E2EEV3';\n isConvergedArchitectureEnabled?: boolean;\n callingServiceType?: 'CUCM' | 'WEBEXCALLING' | 'BROADWORKS' | 'LOCUS';\n inLobby?: boolean;\n isVIPMeeting?: boolean;\n webexAppEntrypoint?: string;\n firstParticipant?: boolean;\n isImmersiveShare?: boolean;\n /**\n * Request/Response Time for Internal Services\n */\n registeredTimestamps?: {\n locusCreateConfluenceRequestTime?: string;\n locusCreateConfluenceResponseTime?: string;\n locusCreateVenueRequestTime?: string;\n locusCreateVenueResponseTime?: string;\n };\n skipInterstitialWindow?: boolean;\n callDurationSecs?: number;\n /**\n * Details associated with a breakout move\n */\n breakout?: {\n moveType?: 'between_breakout' | 'to_breakout' | 'to_main';\n trigger?: 'assignment_changed' | 'client_initiated' | 'session_ended' | 'session_started';\n startState?: 'joined' | 'lobby';\n endState?: 'joined' | 'lobby';\n };\n /**\n * Latency values associated with breakout session\n */\n breakoutLatency?: {\n boBreakoutMoveProcessed?: number;\n boBreakoutMoveResp?: number;\n boLocusBreakoutMoveResp?: number;\n locusBreakoutMoveResp?: number;\n orpheusConfluenceMoveReqResp?: number;\n };\n /**\n * two-way whiteboard related info\n */\n whiteboard?: {\n action?: 'open' | 'create';\n type?: 'whiteboard' | 'annotation';\n capability?: 'one_way' | 'two_way';\n granted?: 'one_way' | 'two_way';\n };\n name:\n | 'client.alert.displayed'\n | 'client.alert.removed'\n | 'client.application.validate'\n | 'client.audio.noise.removal'\n | 'client.breakout-session.join.request'\n | 'client.breakout-session.join.response'\n | 'client.breakout-session.leave'\n | 'client.breakout-session.move.request'\n | 'client.breakout-session.move.response'\n | 'client.call.aborted'\n | 'client.call.declined'\n | 'client.call.displayed'\n | 'client.call.initiated'\n | 'client.call.leave'\n | 'client.call.move-media'\n | 'client.call.remote-ended'\n | 'client.call.remote-started'\n | 'client.call.skip-locus-join'\n | 'client.conversation.request'\n | 'client.conversation.response'\n | 'client.click.pre-join'\n | 'client.crash'\n | 'client.daemon.join.begin'\n | 'client.daemon.job.done'\n | 'client.daemon.launch-meeting-process'\n | 'client.daemon.pending-on-existing-upgrade-job'\n | 'client.daemon.query-site-info'\n | 'client.daemon.upgrade-and-join'\n | 'client.daemon.wakeup-meeting-client'\n | 'client.device.resource-room.joined'\n | 'client.e2ee.join.response'\n | 'client.embedded-object-info'\n | 'client.entering-background'\n | 'client.entering-foreground'\n | 'client.exit.app'\n | 'client.gesture.recognition'\n | 'client.hologram.initiated'\n | 'client.hologram.stopped'\n | 'client.hologram.remote.initiated'\n | 'client.hologram.remote.stopped'\n | 'client.ice.end'\n | 'client.ice.start'\n | 'client.installer.start'\n | 'client.installer.end'\n | 'client.interstitial-window.launched'\n | 'client.ivr.join.request'\n | 'client.ivr.join.response'\n | 'client.ivr.leave.request'\n | 'client.ivr.leave.response'\n | 'client.ivr.notify.request'\n | 'client.ivr.notify.response'\n | 'client.lobby.entered'\n | 'client.lobby.exited'\n | 'client.locus.decline.request'\n | 'client.locus.join.request'\n | 'client.locus.join.response'\n | 'client.locus.leave.request'\n | 'client.locus.leave.response'\n | 'client.locus.media.request'\n | 'client.locus.media.response'\n | 'client.media-engine.crash'\n | 'client.media-engine.lost'\n | 'client.media-engine.local-sdp-generated'\n | 'client.media-engine.ready'\n | 'client.media-engine.remote-sdp-received'\n | 'client.media-status'\n | 'client.media.capabilities'\n | 'client.media.reachability'\n | 'client.media.reconnecting'\n | 'client.media.recovered'\n | 'client.media.render.start'\n | 'client.media.render.stop'\n | 'client.media.rx.start'\n | 'client.media.rx.stop'\n | 'client.media.share.csi.changed'\n | 'client.media.tx.start'\n | 'client.media.tx.stop'\n | 'client.meetinginfo.request'\n | 'client.meetinginfo.response'\n | 'client.meetingmanagersdk.ipc.run'\n | 'client.meeting.app-loaded'\n | 'client.meeting.breakout-session.action'\n | 'client.meeting.breakout-session.summary'\n | 'client.meeting.browser-plugin.started'\n | 'client.meeting.click.joinbutton'\n | 'client.meeting.closed'\n | 'client.meeting.disclaimer-window.accepted'\n | 'client.meeting.disclaimer-window.closed'\n | 'client.meeting.disclaimer-window.showed'\n | 'client.meeting.docshow.request'\n | 'client.meeting.docshow.response'\n | 'client.meeting.e2e.u2c.response'\n | 'client.meeting.e2e.wca.response'\n | 'client.meeting.e2e.key.response'\n | 'client.meeting.e2ee.u2c.response'\n | 'client.meeting.e2ee.wca.response'\n | 'client.meeting.e2ee.key.response'\n | 'client.meeting.gpc.download'\n | 'client.meeting.gpcparameter.request'\n | 'client.meeting.gpcparameter.response'\n | 'client.meeting.interstitial-window.closed'\n | 'client.meeting.interstitial-window.showed'\n | 'client.meeting.join.request'\n | 'client.meeting.key-information'\n | 'client.meeting.launched'\n | 'client.meeting.login-window.clicked'\n | 'client.meeting.login-window.closed'\n | 'client.meeting.login-window.showed'\n | 'client.meeting.login.response'\n | 'client.meeting.people-insights.check.response'\n | 'client.meeting.people-insights.query.response'\n | 'client.meeting.ping.request'\n | 'client.meeting.ping.response'\n | 'client.meeting.plugin-extension.started'\n | 'client.meeting.resume'\n | 'client.meeting.report-log'\n | 'client.meeting.session.connected'\n | 'client.meeting.start-webexapp'\n | 'client.meeting.start-launch'\n | 'client.meeting.summary'\n | 'client.meeting.user-action'\n | 'client.meeting.validated'\n | 'client.meeting.VDI.detect.plugin.response'\n | 'client.meeting.VDI.connect.plugin.response'\n | 'client.mercury.connection.lost'\n | 'client.mercury.connection.restored'\n | 'client.multistream.sca.rx'\n | 'client.multistream.sca.tx'\n | 'client.multistream.scr.rx'\n | 'client.multistream.scr.tx'\n | 'client.muted'\n | 'client.network.changed'\n | 'client.notification.received'\n | 'client.pin.collected'\n | 'client.pin.prompt'\n | 'client.post.meeting.hook'\n | 'client.pstnaudio.attempt.finish'\n | 'client.pstnaudio.attempt.skip'\n | 'client.pstnaudio.attempt.start'\n | 'client.roap-message.received'\n | 'client.roap-message.sent'\n | 'client.share.floor-accept.notification'\n | 'client.share.floor-grant.cancel-request'\n | 'client.share.floor-grant.notification'\n | 'client.share.floor-grant.request'\n | 'client.share.floor-granted.local'\n | 'client.share.initiated'\n | 'client.share.layout.displayed'\n | 'client.share.paused'\n | 'client.share.selected-app'\n | 'client.share.stopped'\n | 'client.started-after-shutdown'\n | 'client.started-from-crash'\n | 'client.stuntrace.failed'\n | 'client.switch.app'\n | 'client.unmuted'\n | 'client.webexapp.launched'\n | 'client.login.start'\n | 'client.login.end'\n | 'client.switch.environment'\n | 'client.warhol.downloaded'\n | 'client.whiteboard.loaded'\n | 'meeting.initiated'\n | 'meeting.joined'\n | 'page.click.pre-join'\n | 'page.meeting.browser-reset'\n | 'page.meeting.close-browser'\n | 'page.meeting.extension.started'\n | 'page.meeting.launch-thinclient'\n | 'page.meeting.loading'\n | 'page.meeting.run-plugin'\n | 'page.meeting.testing-plugin'\n | 'page.meeting.testing-plugin.finished'\n | 'page.meeting.tfs.start-download'\n | 'page.meeting.urlprotocol.detect'\n | 'page.meeting.waiting.user-action';\n /**\n * Base type for the various identifiers used to connect the dots.\n * In general, these should be populated whenever possible. Subtypes may make a particular key required.\n *\n */\n identifiers: {\n attendeeId?: string;\n breakoutGroupId?: string;\n breakoutMoveId?: string;\n breakoutSessionId?: string;\n confluenceId?: string;\n /**\n * Set of identifiers dedicated to CPaaS clients\n * In general, these should be populated whenever possible. Subtypes may make a particular key required.\n *\n */\n cpaasIdentifiers?: {\n imiTenantId: string;\n devClientId: string;\n imiServiceId: string;\n imiAppId: string;\n sessionId: string;\n sessionInstanceId: string;\n };\n csdmDeviceUrl?: string;\n destinationBreakoutSessionId?: string;\n destinationLocusSessionId?: string;\n destinationLocusUrl?: string;\n destinationVenueId?: string;\n deviceId?: string;\n ivrCallId?: string;\n ivrDialogId?: string;\n ivrId?: string;\n locusId?: string;\n locusSessionId?: string;\n locusStartTime?: string;\n locusUrl?: string;\n mediaAgentAlias?: string;\n mediaAgentGroupId?: string;\n meetClusterName?: string;\n meetingLookupUrl?: string;\n meetingOrgId?: string;\n msteamsTenantGuid?: string;\n msteamsConferenceId?: string;\n oauth2ClientId?: string;\n orgId?: string;\n roomId?: string;\n sipCallId?: string;\n sipSessionId?: {\n local?: string;\n remote?: string;\n };\n sipUri?: string;\n subConfId?: string;\n tenantId?: string;\n trackingId?: string;\n userId?: string;\n venueId?: string;\n venueUrl?: string;\n whiteboardUrl?: string;\n webexConferenceId?: number;\n webexClusterName?: string;\n webexConferenceIdStr?: string;\n webexDataCenter?: string;\n webexGuestId?: number;\n webexMeetingId?: number;\n webexNodeId?: number;\n webexSiteId?: number;\n webexSiteName?: string;\n webexUserId?: number;\n webexWebDomain?: string;\n correlationId: string;\n };\n errors?: {\n fatal: boolean;\n category: 'signaling' | 'media' | 'other' | 'expected';\n errorDescription?: string;\n errorCode?: number;\n errorCodeStr?: string;\n httpCode?: number;\n errorData?: {};\n shownToUser: boolean;\n serviceErrorCode?: number;\n name:\n | 'media-engine'\n | 'ice.failed'\n | 'locus.response'\n | 'locus.leave'\n | 'client.leave'\n | 'media-device'\n | 'media-sca'\n | 'other';\n }[];\n /**\n * media quality error report such as no media or drop out\n */\n clientMediaError?: {\n mediaType?: 'audio' | 'video' | 'share' | 'share_audio' | 'whiteboard';\n mediaFailureType?: 'noMedia' | 'mediaDrop' | 'mediaEvent';\n isDropAtStart?: boolean;\n isJMF?: boolean;\n txError?:\n | 'NO_ERROR'\n | 'DEVICE_ERROR'\n | 'LOAD_LIBRARY_ERROR'\n | 'MCS_SESSION_CONNECT_ERROR'\n | 'CB_SESSION_CREATE_ERROR'\n | 'NO_FRAME_DECODE_ERROR'\n | 'NO_PACKET_RECV_ERROR'\n | 'LOW_VOLUME_ERROR'\n | 'INITIAL_MEMORY_ERROR'\n | 'MAC_VIRTUAL_AUDIO_DRV_ERROR'\n | 'MMP_SESSION_CONNECT_ERROR'\n | 'MEDIA_PROCESS_CRASH_ERROR'\n | 'HEARTBEAT_LOST_WITH_MEDIA_PROCESS_ERROR'\n | 'MEDIA_SERVER_CONNECT_ERROR'\n | 'LOCUS_SESSION_CONNECT_ERROR'\n | 'NO_PACKET_SEND_ERROR'\n | 'NETWORK_LOST_ERROR'\n | 'MEDIA_NOT_AVAILABLE';\n rxError?:\n | 'NO_ERROR'\n | 'DEVICE_ERROR'\n | 'LOAD_LIBRARY_ERROR'\n | 'MCS_SESSION_CONNECT_ERROR'\n | 'CB_SESSION_CREATE_ERROR'\n | 'NO_FRAME_DECODE_ERROR'\n | 'NO_PACKET_RECV_ERROR'\n | 'LOW_VOLUME_ERROR'\n | 'INITIAL_MEMORY_ERROR'\n | 'MAC_VIRTUAL_AUDIO_DRV_ERROR'\n | 'MMP_SESSION_CONNECT_ERROR'\n | 'MEDIA_PROCESS_CRASH_ERROR'\n | 'HEARTBEAT_LOST_WITH_MEDIA_PROCESS_ERROR'\n | 'MEDIA_SERVER_CONNECT_ERROR'\n | 'LOCUS_SESSION_CONNECT_ERROR'\n | 'NO_PACKET_SEND_ERROR'\n | 'NETWORK_LOST_ERROR'\n | 'MEDIA_NOT_AVAILABLE';\n txDeviceErrorCode?: number;\n rxDeviceErrorCode?: number;\n sessionConnectErrorCode?: number;\n firstDropTime?: string;\n totalDropCount?: number;\n failureDuration?: number;\n txMoreError?: string;\n rxMoreError?: string;\n totalUserWhenCBStartError?: number;\n sessionConnectExtErrorCode?: number;\n sessionConnectErrorType?: 'unknown' | 'MCC_error' | 'MCS_error' | 'Tahoe_error';\n txSystemErrorCode?: number;\n rxSystemErrorCode?: number;\n errorDetails?: {};\n };\n trigger?:\n | 'bricklet'\n | 'call-history'\n | 'companion-join'\n | 'contact-profile'\n | 'dialpad'\n | 'loci-update'\n | 'media-engine-event'\n | 'meetbutton-click'\n | 'meetings-tab'\n | 'message-click'\n | 'mercury-event'\n | 'obtp'\n | 'onboarding-page'\n | 'other'\n | 'pairing'\n | 'protocol'\n | 'search'\n | 'signaling'\n | 'space-share'\n | 'timeout'\n | 'toast'\n | 'user-interaction'\n | 'wireless-share';\n leaveReason?: 'paired-leave' | 'one-to-one' | 'ended-by-locus';\n displayLocation?:\n | 'toast'\n | 'room-list'\n | 'call-pane'\n | 'call-view'\n | 'room'\n | 'meeting-list'\n | 'meeting'\n | 'personal-meeting-room'\n | 'intents'\n | 'external-link'\n | 'automation'\n | 'meeting-information'\n | 'contact-card'\n | 'control-center'\n | 'search-result'\n | 'other';\n displayType?: 'scheduled';\n dialedDomain?: string;\n isScheduled?: boolean;\n guestModeShare?: boolean;\n highFpsModeShare?: boolean;\n contentAudioShare?: boolean;\n pairingState?: 'paired' | 'observing' | 'challenging';\n pairedDevice?: {\n deviceType?: string;\n deviceId?: string;\n deviceURL?: string;\n modelNumber?: string;\n productName?: string;\n tempSipUri?: string;\n };\n /**\n * Information about the sender of the event\n */\n oldOrigin?: {\n name:\n | 'antares'\n | 'beech'\n | 'breakout'\n | 'cb'\n | 'cloudproxy'\n | 'edonus'\n | 'endpoint'\n | 'givr'\n | 'hecate'\n | 'hedge'\n | 'hesiod'\n | 'homer'\n | 'superhomer'\n | 'l2sip'\n | 'linus'\n | 'locus'\n | 'mcc'\n | 'mcs'\n | 'mercury'\n | 'mes'\n | 'mjs'\n | 'mmp'\n | 'mygdon'\n | 'orpheus'\n | 'page'\n | 'poros'\n | 'rhesos'\n | 'terminus'\n | 'tpgw'\n | 'ucc'\n | 'wdm'\n | 'webexivr';\n userAgent: string;\n buildType?: 'debug' | 'test' | 'prod' | 'tap' | 'analyzer-test';\n /**\n * Will be used as a label for client software status\n */\n upgradeChannel?: string;\n /**\n * Identifier for a particular instance of a service, such as a particular linus\n */\n instanceId?: string;\n networkType: 'wifi' | 'ethernet' | 'cellular' | 'unknown';\n localIP?: string;\n usingProxy?: boolean;\n mediaEngineSoftwareVersion?: string;\n environment?: string;\n newEnvironment?: string;\n /**\n * Details of client environment\n */\n clientInfo?: {\n os: 'windows' | 'mac' | 'linux' | 'ios' | 'android' | 'chrome' | 'uwp-arm64' | 'other';\n osVersion: string;\n localIP?: string;\n gatewayIP?: string;\n macAddress?: string;\n localNetworkPrefix?: string;\n publicNetworkPrefix?: string;\n browserLaunchMethod?:\n | 'activex'\n | 'npapi'\n | 'extension'\n | 'cwsapi'\n | 'java'\n | 'tfs'\n | 'webacd'\n | 'url-handler'\n | 'thinclient';\n clientLaunchMethod?:\n | 'url-handler'\n | 'universal-link'\n | 'voice-command'\n | 'notification'\n | 'manual'\n | 'teams-cross-launch';\n browser?: string;\n browserVersion?: string;\n /**\n * this defines the major client types\n */\n clientType?:\n | 'MEETING_CENTER'\n | 'EVENT_CENTER'\n | 'TRAINING_CENTER'\n | 'TEAMS_CLIENT'\n | 'TEAMS_DEVICE'\n | 'TEAMS_SHARE'\n | 'SIP'\n | 'RECORDING'\n | 'CLOUD_AWARE_SIP'\n | 'TEAMS_WXC_CLIENT'\n | 'WXC_CLIENT'\n | 'WXC_DEVICE'\n | 'WEBEX_JS_SDK'\n | 'VOICEA_CLIENT'\n | 'CISCO_SIP_GW'\n | 'WEBEX_SDK'\n | 'CPAAS_THIRD_PARTY_SDK'\n | 'WXC_THIRD_PARTY';\n /**\n * this defines the sub types of clients\n */\n subClientType?:\n | 'DESKTOP_APP'\n | 'DESKTOP_APP_VDI'\n | 'DEVICE_CURRENT'\n | 'DEVICE_LEGACY_2020'\n | 'HVDI_APP'\n | 'MOBILE_APP'\n | 'VDI_APP'\n | 'WEB_APP'\n | 'MOBILE_NETWORK'\n | 'HOLOGRAM_HEADSET_APP';\n clientVersion?: string;\n localClientVersion?: string;\n modelNumber?: string;\n joinFirstUpdateLater?: 'ep-enabled' | 'sp-enabled' | 'not-enabled';\n standbyUsed?: boolean;\n prefetchDocShowUsed?: boolean;\n fastJoinUsed?: boolean;\n clientDownloadSize?: number;\n clientDownloadFileCount?: number;\n nodeId?: number;\n machineInfo?: string;\n parentAppName?: string;\n parentAppInPermitList?: boolean;\n meetingSiteType?: 'train' | 'webex-11' | 'orion';\n CDNEnabled?: boolean;\n clientMajorVersion?: string;\n majorVersion?: number;\n minorVersion?: number;\n revision?: number;\n isValidClientVersion?: boolean;\n /**\n * This object defines the fields related to the CPU being used by the emitter of the event\n */\n cpuInfo?: {\n description: string;\n clockSpeedGigaHertz: number;\n numberOfCores: number;\n architecture: 'intel32' | 'intel64' | 'amd32' | 'amd64' | 'arm32' | 'arm64' | 'unknown';\n staticPerformance?: string;\n };\n shareType?:\n | 'cb-normal-share'\n | 'ce-airplay-share'\n | 'ce-direct-share'\n | 'ce-gui-loopback-share'\n | 'ce-input-source-share'\n | 'ce-input-source-share-hdmi'\n | 'ce-input-source-share-usbc'\n | 'ce-jpg-share'\n | 'ce-miracast-share'\n | 'mcs-normal-share'\n | 'mcs-normal-audio-share'\n | 'mcs-hfps-share'\n | 'mcs-hfps-audio-share';\n /**\n * Video display mode currently in use\n */\n videoDisplayMode?: 'grid-view' | 'active-speaker-view';\n videoLayoutType?:\n | 'stack'\n | 'stackWithShare'\n | 'sideBySide'\n | 'sideBySideWithShare'\n | 'grid'\n | 'floatingActive'\n | 'floatingThumbnail'\n | 'floatingGrid'\n | 'overlay'\n | 'focus'\n | 'prominent'\n | 'focusWithShare'\n | 'prominentWithShare'\n | 'equal'\n | 'equalWithShare';\n /**\n * this defines the video render type of meetings\n */\n videoRenderType?: 'wme' | 'client_d3d' | 'client_gdi';\n vdiInfo?: unknown;\n is64BitsClient?: boolean;\n webexAppVersion?: string;\n /**\n * this defines launch 32 bits client reason\n */\n launch32BitsReason?:\n | 'forcewin32'\n | 'disablewin64'\n | 'platform_win32'\n | 'platform_arm'\n | 'platform_unknown'\n | 'version_below_41.11';\n inMeetingUpdate?: boolean;\n mtaVersion?: string;\n isWarholOpening?: boolean;\n };\n isHybridMedia?: boolean;\n originData?: {};\n };\n reachabilityStatus?: 'none' | 'all-false' | 'partial-success' | 'all-success';\n recoveredBy?: 'retry' | 'new';\n joinType?: 'auto' | 'no-locus-join';\n audioJoinType?:\n | 'phone-call-in'\n | 'phone-call-back'\n | 'voip'\n | 'device-call-back'\n | 'never-join-audio';\n isVideoMuted?: boolean;\n /**\n * phrased HTTP timing\n */\n joinHttpTiming?: {\n connect?: number;\n dnsLookup?: number;\n sendRequest?: number;\n compressRequest?: number;\n receiveResponse?: number;\n extractJson?: number;\n verifyCert?: number;\n refreshToken?: number;\n };\n icePhase?: 'JOIN_MEETING_FINAL' | 'JOIN_MEETING_RETRY' | 'IN_MEETING';\n userType?: 'host' | 'attendee' | 'cohost' | 'panelist';\n updateType?: 'new-user' | 'update-user' | 'return-user';\n isRoapCallEnabled?: boolean;\n isFirstTimeUser?: boolean;\n responseCode?: number;\n /**\n * Join Meeting Time\n */\n joinTimes?: {\n totalJmt?: number;\n pageJmt?: number;\n pluginJmt?: number;\n clientJmt?: number;\n cbJmt?: number;\n clickToInterstitial?: number;\n interstitialToJoinOK?: number;\n getPCParametersTime?: number;\n getGPCParametersTime?: number;\n getDocShowTime?: number;\n guestTokenRetrievalTime?: number;\n showInterstitialTime?: number;\n clientDownloadTime?: number;\n clientDecompressTime?: number;\n GLAJmt?: number;\n pingJmt?: number;\n joinConfJmt?: number;\n announceJmt?: number;\n launchAppJmt?: number;\n networkLatency?: number;\n meetingInfoReqResp?: number;\n joinReqResp?: number;\n callInitJoinReq?: number;\n JMTDetail?: string;\n localSDPGenRemoteSDPRecv?: number;\n locusJoinReqResp?: number;\n joinReqSentReceived?: number;\n joinRespSentReceived?: number;\n locusBreakoutSessionMoveReqResp?: number;\n ICESetupTime?: number;\n callInitMediaEngineReady?: number;\n getU2CTime?: number;\n getWCATime?: number;\n gotKeyTime?: number;\n useKeyTime?: number;\n cacheKeyTime?: number;\n detectVDITime?: number;\n connectVDITime?: number;\n mmpPreConnected?: boolean;\n audioMCCJMT?: number;\n audioMCSJMT?: number;\n audioCBJMT?: number;\n audioTAJMT?: number;\n audioPstnJMT?: number;\n clientPstnDialOutJMT?: number;\n pstnDialInReferL2SIPJoinReq?: number;\n pstnDialInReferL2SIPRoapOk?: number;\n videoMCCJMT?: number;\n videoMCSJMT?: number;\n videoCBJMT?: number;\n videoJMT?: number;\n WDMRegistrationTime?: number;\n audioVOIPJMT?: number;\n audioCallbackJMT?: number;\n deviceCallbackJMT?: number;\n deviceParingJMT?: number;\n exchangeCITokenJMT?: number;\n registerWDMDeviceJMT?: number;\n interstitialToMediaOKJMT?: number;\n clickToMediaOKJMT?: number;\n stayLobbyTime?: number;\n totalMediaJMT?: number;\n loginTime?: number;\n loggedToInterstitial?: number;\n audioICESetupTime?: number;\n videoICESetupTime?: number;\n shareICESetupTime?: number;\n initializeCameraTime?: number;\n installerJmt?: number;\n getAppMetadataTime?: number;\n downloadMsiTime?: number;\n installAppTime?: number;\n downloadTime?: number;\n decompressTime?: number;\n roapOfferRespTime?: number;\n roapAnswerTime?: number;\n roapOkTime?: number;\n roapOfferReqToOkTime?: number;\n };\n /**\n * ROAP message details\n */\n roap?: {\n type?:\n | 'ANSWER'\n | 'ERROR'\n | 'OFFER'\n | 'OFFER_REQUEST'\n | 'OFFER_RESPONSE'\n | 'OK'\n | 'TURN_DISCOVERY_REQUEST'\n | 'TURN_DISCOVERY_RESPONSE';\n messageType?:\n | 'ANSWER'\n | 'ERROR'\n | 'OFFER'\n | 'OFFER_REQUEST'\n | 'OFFER_RESPONSE'\n | 'OK'\n | 'TURN_DISCOVERY_REQUEST'\n | 'TURN_DISCOVERY_RESPONSE';\n error?: string;\n duration?: number;\n };\n /**\n * metadata associated with emitter of the event. This data is included only in the first emitted for a given call and does not need to be repeated with each event.\n */\n mediaMetadata?: {\n mediaEngineSoftwareType: string;\n mediaEngineSoftwareVersion: string;\n applicationSoftwareType: string;\n applicationSoftwareVersion: string;\n hardwareType?: string;\n clientRegion?: string;\n serverRegion?: string;\n serverOrg?: string;\n serverGroup?: string;\n serverAlias?: string;\n serverDeployType?: 'private' | 'public';\n startTime: string;\n endTime?: string;\n csi?: number[];\n isCascade?: boolean;\n isHybridMedia?: boolean;\n videoMeshClusterName?: string;\n videoMeshServerName?: string;\n isTIP?: boolean;\n isMARI?: boolean;\n has264Checksum?: boolean;\n intervalPeriod?: number;\n cascadePeerRegion?: string;\n cascadePeerOrg?: string;\n cascadePeerGroup?: string;\n cascadePeerAlias?: string;\n cascadePeerServerType?:\n | 'CB'\n | 'CMS'\n | 'HESIOD'\n | 'LINUS'\n | 'MCC'\n | 'MCS'\n | 'MES'\n | 'MJS'\n | 'MRS'\n | 'MYGDONUS'\n | 'MZM'\n | 'TERMINUS'\n | 'TPGW'\n | 'TA'\n | 'HOMER'\n | 'SUPERHOMER'\n | 'U2C'\n | 'WCA'\n | 'MSE'\n | 'UNKNOWN';\n cascadePeerDeployType?: 'private' | 'public';\n };\n /**\n * Details of server environment\n */\n serverInfo?: {\n serverType:\n | 'CB'\n | 'CMS'\n | 'HESIOD'\n | 'LINUS'\n | 'MCC'\n | 'MCS'\n | 'MES'\n | 'MJS'\n | 'MRS'\n | 'MYGDONUS'\n | 'MZM'\n | 'TERMINUS'\n | 'TPGW'\n | 'TA'\n | 'HOMER'\n | 'SUPERHOMER'\n | 'U2C'\n | 'WCA'\n | 'MSE'\n | 'UNKNOWN';\n serverAddress?: string;\n };\n /**\n * Details of client connect session\n */\n videoSession?: {\n mediaSessionType?:\n | 'AUDIO_CALLBACK'\n | 'AUDIO_VOIP'\n | 'DEVICE_CALLBACK'\n | 'DEVICE_PAIRING'\n | 'VIDEO';\n isSuccess?: boolean;\n signalingServerType?:\n | 'CB'\n | 'CMS'\n | 'HESIOD'\n | 'LINUS'\n | 'MCC'\n | 'MCS'\n | 'MES'\n | 'MJS'\n | 'MRS'\n | 'MYGDONUS'\n | 'MZM'\n | 'TERMINUS'\n | 'TPGW'\n | 'TA'\n | 'HOMER'\n | 'SUPERHOMER'\n | 'U2C'\n | 'WCA'\n | 'MSE'\n | 'UNKNOWN';\n signalingServerAddress?: string;\n mediaServerType?:\n | 'CB'\n | 'CMS'\n | 'HESIOD'\n | 'LINUS'\n | 'MCC'\n | 'MCS'\n | 'MES'\n | 'MJS'\n | 'MRS'\n | 'MYGDONUS'\n | 'MZM'\n | 'TERMINUS'\n | 'TPGW'\n | 'TA'\n | 'HOMER'\n | 'SUPERHOMER'\n | 'U2C'\n | 'WCA'\n | 'MSE'\n | 'UNKNOWN';\n mediaServerAddress?: string;\n errorDescription?: string;\n errorCode?: number;\n mediaErrorType?:\n | 'NO_ERROR'\n | 'DEVICE_ERROR'\n | 'LOAD_LIBRARY_ERROR'\n | 'MCS_SESSION_CONNECT_ERROR'\n | 'CB_SESSION_CREATE_ERROR'\n | 'NO_FRAME_DECODE_ERROR'\n | 'NO_PACKET_RECV_ERROR'\n | 'LOW_VOLUME_ERROR'\n | 'INITIAL_MEMORY_ERROR'\n | 'MAC_VIRTUAL_AUDIO_DRV_ERROR'\n | 'MMP_SESSION_CONNECT_ERROR'\n | 'MEDIA_PROCESS_CRASH_ERROR'\n | 'HEARTBEAT_LOST_WITH_MEDIA_PROCESS_ERROR'\n | 'MEDIA_SERVER_CONNECT_ERROR'\n | 'LOCUS_SESSION_CONNECT_ERROR'\n | 'NO_PACKET_SEND_ERROR'\n | 'NETWORK_LOST_ERROR'\n | 'MEDIA_NOT_AVAILABLE';\n isJoinAtStart?: boolean;\n };\n /**\n * Details of client connect session\n */\n audioVOIPSession?: {\n mediaSessionType?:\n | 'AUDIO_CALLBACK'\n | 'AUDIO_VOIP'\n | 'DEVICE_CALLBACK'\n | 'DEVICE_PAIRING'\n | 'VIDEO';\n isSuccess?: boolean;\n signalingServerType?:\n | 'CB'\n | 'CMS'\n | 'HESIOD'\n | 'LINUS'\n | 'MCC'\n | 'MCS'\n | 'MES'\n | 'MJS'\n | 'MRS'\n | 'MYGDONUS'\n | 'MZM'\n | 'TERMINUS'\n | 'TPGW'\n | 'TA'\n | 'HOMER'\n | 'SUPERHOMER'\n | 'U2C'\n | 'WCA'\n | 'MSE'\n | 'UNKNOWN';\n signalingServerAddress?: string;\n mediaServerType?:\n | 'CB'\n | 'CMS'\n | 'HESIOD'\n | 'LINUS'\n | 'MCC'\n | 'MCS'\n | 'MES'\n | 'MJS'\n | 'MRS'\n | 'MYGDONUS'\n | 'MZM'\n | 'TERMINUS'\n | 'TPGW'\n | 'TA'\n | 'HOMER'\n | 'SUPERHOMER'\n | 'U2C'\n | 'WCA'\n | 'MSE'\n | 'UNKNOWN';\n mediaServerAddress?: string;\n errorDescription?: string;\n errorCode?: number;\n mediaErrorType?:\n | 'NO_ERROR'\n | 'DEVICE_ERROR'\n | 'LOAD_LIBRARY_ERROR'\n | 'MCS_SESSION_CONNECT_ERROR'\n | 'CB_SESSION_CREATE_ERROR'\n | 'NO_FRAME_DECODE_ERROR'\n | 'NO_PACKET_RECV_ERROR'\n | 'LOW_VOLUME_ERROR'\n | 'INITIAL_MEMORY_ERROR'\n | 'MAC_VIRTUAL_AUDIO_DRV_ERROR'\n | 'MMP_SESSION_CONNECT_ERROR'\n | 'MEDIA_PROCESS_CRASH_ERROR'\n | 'HEARTBEAT_LOST_WITH_MEDIA_PROCESS_ERROR'\n | 'MEDIA_SERVER_CONNECT_ERROR'\n | 'LOCUS_SESSION_CONNECT_ERROR'\n | 'NO_PACKET_SEND_ERROR'\n | 'NETWORK_LOST_ERROR'\n | 'MEDIA_NOT_AVAILABLE';\n isJoinAtStart?: boolean;\n };\n /**\n * Details of client connect session\n */\n audioCallbackSession?: {\n mediaSessionType?:\n | 'AUDIO_CALLBACK'\n | 'AUDIO_VOIP'\n | 'DEVICE_CALLBACK'\n | 'DEVICE_PAIRING'\n | 'VIDEO';\n isSuccess?: boolean;\n signalingServerType?:\n | 'CB'\n | 'CMS'\n | 'HESIOD'\n | 'LINUS'\n | 'MCC'\n | 'MCS'\n | 'MES'\n | 'MJS'\n | 'MRS'\n | 'MYGDONUS'\n | 'MZM'\n | 'TERMINUS'\n | 'TPGW'\n | 'TA'\n | 'HOMER'\n | 'SUPERHOMER'\n | 'U2C'\n | 'WCA'\n | 'MSE'\n | 'UNKNOWN';\n signalingServerAddress?: string;\n mediaServerType?:\n | 'CB'\n | 'CMS'\n | 'HESIOD'\n | 'LINUS'\n | 'MCC'\n | 'MCS'\n | 'MES'\n | 'MJS'\n | 'MRS'\n | 'MYGDONUS'\n | 'MZM'\n | 'TERMINUS'\n | 'TPGW'\n | 'TA'\n | 'HOMER'\n | 'SUPERHOMER'\n | 'U2C'\n | 'WCA'\n | 'MSE'\n | 'UNKNOWN';\n mediaServerAddress?: string;\n errorDescription?: string;\n errorCode?: number;\n mediaErrorType?:\n | 'NO_ERROR'\n | 'DEVICE_ERROR'\n | 'LOAD_LIBRARY_ERROR'\n | 'MCS_SESSION_CONNECT_ERROR'\n | 'CB_SESSION_CREATE_ERROR'\n | 'NO_FRAME_DECODE_ERROR'\n | 'NO_PACKET_RECV_ERROR'\n | 'LOW_VOLUME_ERROR'\n | 'INITIAL_MEMORY_ERROR'\n | 'MAC_VIRTUAL_AUDIO_DRV_ERROR'\n | 'MMP_SESSION_CONNECT_ERROR'\n | 'MEDIA_PROCESS_CRASH_ERROR'\n | 'HEARTBEAT_LOST_WITH_MEDIA_PROCESS_ERROR'\n | 'MEDIA_SERVER_CONNECT_ERROR'\n | 'LOCUS_SESSION_CONNECT_ERROR'\n | 'NO_PACKET_SEND_ERROR'\n | 'NETWORK_LOST_ERROR'\n | 'MEDIA_NOT_AVAILABLE';\n isJoinAtStart?: boolean;\n };\n /**\n * Details of client connect session\n */\n devicePairingSession?: {\n mediaSessionType?:\n | 'AUDIO_CALLBACK'\n | 'AUDIO_VOIP'\n | 'DEVICE_CALLBACK'\n | 'DEVICE_PAIRING'\n | 'VIDEO';\n isSuccess?: boolean;\n signalingServerType?:\n | 'CB'\n | 'CMS'\n | 'HESIOD'\n | 'LINUS'\n | 'MCC'\n | 'MCS'\n | 'MES'\n | 'MJS'\n | 'MRS'\n | 'MYGDONUS'\n | 'MZM'\n | 'TERMINUS'\n | 'TPGW'\n | 'TA'\n | 'HOMER'\n | 'SUPERHOMER'\n | 'U2C'\n | 'WCA'\n | 'MSE'\n | 'UNKNOWN';\n signalingServerAddress?: string;\n mediaServerType?:\n | 'CB'\n | 'CMS'\n | 'HESIOD'\n | 'LINUS'\n | 'MCC'\n | 'MCS'\n | 'MES'\n | 'MJS'\n | 'MRS'\n | 'MYGDONUS'\n | 'MZM'\n | 'TERMINUS'\n | 'TPGW'\n | 'TA'\n | 'HOMER'\n | 'SUPERHOMER'\n | 'U2C'\n | 'WCA'\n | 'MSE'\n | 'UNKNOWN';\n mediaServerAddress?: string;\n errorDescription?: string;\n errorCode?: number;\n mediaErrorType?:\n | 'NO_ERROR'\n | 'DEVICE_ERROR'\n | 'LOAD_LIBRARY_ERROR'\n | 'MCS_SESSION_CONNECT_ERROR'\n | 'CB_SESSION_CREATE_ERROR'\n | 'NO_FRAME_DECODE_ERROR'\n | 'NO_PACKET_RECV_ERROR'\n | 'LOW_VOLUME_ERROR'\n | 'INITIAL_MEMORY_ERROR'\n | 'MAC_VIRTUAL_AUDIO_DRV_ERROR'\n | 'MMP_SESSION_CONNECT_ERROR'\n | 'MEDIA_PROCESS_CRASH_ERROR'\n | 'HEARTBEAT_LOST_WITH_MEDIA_PROCESS_ERROR'\n | 'MEDIA_SERVER_CONNECT_ERROR'\n | 'LOCUS_SESSION_CONNECT_ERROR'\n | 'NO_PACKET_SEND_ERROR'\n | 'NETWORK_LOST_ERROR'\n | 'MEDIA_NOT_AVAILABLE';\n isJoinAtStart?: boolean;\n };\n /**\n * Details of client connect session\n */\n deviceCallbackSession?: {\n mediaSessionType?:\n | 'AUDIO_CALLBACK'\n | 'AUDIO_VOIP'\n | 'DEVICE_CALLBACK'\n | 'DEVICE_PAIRING'\n | 'VIDEO';\n isSuccess?: boolean;\n signalingServerType?:\n | 'CB'\n | 'CMS'\n | 'HESIOD'\n | 'LINUS'\n | 'MCC'\n | 'MCS'\n | 'MES'\n | 'MJS'\n | 'MRS'\n | 'MYGDONUS'\n | 'MZM'\n | 'TERMINUS'\n | 'TPGW'\n | 'TA'\n | 'HOMER'\n | 'SUPERHOMER'\n | 'U2C'\n | 'WCA'\n | 'MSE'\n | 'UNKNOWN';\n signalingServerAddress?: string;\n mediaServerType?:\n | 'CB'\n | 'CMS'\n | 'HESIOD'\n | 'LINUS'\n | 'MCC'\n | 'MCS'\n | 'MES'\n | 'MJS'\n | 'MRS'\n | 'MYGDONUS'\n | 'MZM'\n | 'TERMINUS'\n | 'TPGW'\n | 'TA'\n | 'HOMER'\n | 'SUPERHOMER'\n | 'U2C'\n | 'WCA'\n | 'MSE'\n | 'UNKNOWN';\n mediaServerAddress?: string;\n errorDescription?: string;\n errorCode?: number;\n mediaErrorType?:\n | 'NO_ERROR'\n | 'DEVICE_ERROR'\n | 'LOAD_LIBRARY_ERROR'\n | 'MCS_SESSION_CONNECT_ERROR'\n | 'CB_SESSION_CREATE_ERROR'\n | 'NO_FRAME_DECODE_ERROR'\n | 'NO_PACKET_RECV_ERROR'\n | 'LOW_VOLUME_ERROR'\n | 'INITIAL_MEMORY_ERROR'\n | 'MAC_VIRTUAL_AUDIO_DRV_ERROR'\n | 'MMP_SESSION_CONNECT_ERROR'\n | 'MEDIA_PROCESS_CRASH_ERROR'\n | 'HEARTBEAT_LOST_WITH_MEDIA_PROCESS_ERROR'\n | 'MEDIA_SERVER_CONNECT_ERROR'\n | 'LOCUS_SESSION_CONNECT_ERROR'\n | 'NO_PACKET_SEND_ERROR'\n | 'NETWORK_LOST_ERROR'\n | 'MEDIA_NOT_AVAILABLE';\n isJoinAtStart?: boolean;\n };\n /**\n * report when client crash\n */\n crashReport?: {\n /**\n * data define for background noise removal event\n */\n eventData?: {\n crashType?: 'client' | 'other' | 'thirdparty' | 'wme' | 'mta';\n processName?: string;\n moduleName?: string;\n threadInfo?: string;\n crashFrame?: string;\n crashStack?: string;\n exceptionType?: 'unset' | 'crash' | 'freeze' | 'disappear';\n lastAction?: string;\n forTrace?: boolean;\n registerInfo?: string;\n extData?: string;\n };\n };\n clientCrashCallStack?: string;\n /**\n * Details of breakout session information, sent after end of breakout session\n */\n breakoutSessionSummaryInfo?: {\n duration: number;\n subConferenceCount: number;\n totalAttendeeCount: number;\n participantCount: number;\n assignedparticipantCount: number;\n cohostCount: number;\n averageAttendeeCountPerSubConference: number;\n totalHostJoinedCount: number;\n isBoStarted: boolean;\n isBoEnabled: boolean;\n isPreAssigned: boolean;\n boStartedTimers: number;\n createType: 'pre-meeting' | 'in-meeting';\n enableType: 'pre-meeting' | 'in-meeting';\n };\n breakoutSessionAction?:\n | 'add'\n | 'assign'\n | 'ask-for-help'\n | 'breakout-session-open'\n | 'breakout-session-close'\n | 'breakout-session-mute-all'\n | 'breakout-session-unmute-all'\n | 'broadcast-open'\n | 'broadcast-send'\n | 'cancel-automatic-close'\n | 'create'\n | 'delete'\n | 'disable'\n | 'dynamic-assign'\n | 'dynamic-exchange'\n | 'end'\n | 'enable'\n | 'exchange'\n | 'join'\n | 'leave'\n | 'lock-all-sessions'\n | 'lock-this-sessions'\n | 'moveto'\n | 'mute-all'\n | 'mute-all-set'\n | 'recreate'\n | 'remove'\n | 'rename'\n | 'search'\n | 'select-all'\n | 'show-all-sessions'\n | 'start'\n | 'unmute-all'\n | 'unlock-all-sessions'\n | 'unlock-this-sessions'\n | 'allow-leave-session'\n | 'allow-join-session-later'\n | 'auto-end-sessions'\n | 'time-before-leave-session';\n clientAction?:\n | 'changeVolume'\n | 'disableHardMute'\n | 'enableHardMute'\n | 'gesture'\n | 'joinMeetingWithPairedDevice'\n | 'muteAll'\n | 'mutePairedDevice'\n | 'muteSipDevice'\n | 'reaction'\n | 'requestUnmute'\n | 'setLanguage'\n | 'unifyRaiseHand'\n | 'unmuteAll'\n | 'unmutePairedDevice'\n | 'unmuteSipDevice';\n clientActionFrom?:\n | 'actionBar'\n | 'auto'\n | 'breakoutAssignDialog'\n | 'breakoutPopupDialog'\n | 'fitMenu'\n | 'hardMuteMoreOptionsDialog'\n | 'initAction'\n | 'mainMenu'\n | 'plist'\n | 'plistContextMenu'\n | 'plistToolBar'\n | 'videoThumbnail'\n | 'muteAllAction'\n | 'reactionPopupDialog'\n | 'unmuteAllAction';\n clientActionTime?: number;\n /**\n * Details of client action\n */\n clientActionInfo?: {\n clientAction:\n | 'changeVolume'\n | 'disableHardMute'\n | 'enableHardMute'\n | 'gesture'\n | 'joinMeetingWithPairedDevice'\n | 'muteAll'\n | 'mutePairedDevice'\n | 'muteSipDevice'\n | 'reaction'\n | 'requestUnmute'\n | 'setLanguage'\n | 'unifyRaiseHand'\n | 'unmuteAll'\n | 'unmutePairedDevice'\n | 'unmuteSipDevice';\n actionFrom?:\n | 'actionBar'\n | 'auto'\n | 'breakoutAssignDialog'\n | 'breakoutPopupDialog'\n | 'fitMenu'\n | 'hardMuteMoreOptionsDialog'\n | 'initAction'\n | 'mainMenu'\n | 'plist'\n | 'plistContextMenu'\n | 'plistToolBar'\n | 'videoThumbnail'\n | 'muteAllAction'\n | 'reactionPopupDialog'\n | 'unmuteAllAction';\n actionRole?: 'host' | 'attendee' | 'presenter' | 'cohost' | 'self';\n duration?: number;\n fromValue?: string;\n toValue?: string;\n gestureType?: 'clap' | 'none' | 'raiseHand' | 'thumpUp' | 'thumbDown';\n languageAction?:\n | 'openLanguageDialog'\n | 'subscribeTransLanguage'\n | 'unsubscribeTransLanguage'\n | 'changeSpeakLanguage'\n | 'transcriptTurnOnWebexAssistantDialog'\n | 'transcriptTurnOffWebexAssistantDialog'\n | 'transcriptTurnOnWebexAssistantMenu'\n | 'transcriptTurn0ffWebexAssistantMenu'\n | 'transcriptViewHighlightPanel'\n | 'transcriptViewHighlightPanelViaCloseCaption'\n | 'transcriptViewHighlightPanelViaPanelOption'\n | 'transcriptViewHighlightPanelViaWebexAssistant'\n | 'transcriptEnableCloseCaptionDialog'\n | 'transcriptDisableCloseCaptionDialog'\n | 'transcriptDisableCloseCaptionDialogForActiveCCOpen'\n | 'transcriptDisableCloseCaptionDialogViaCCButton'\n | 'transcriptDisableCloseCaptionDialogViaCCDialog'\n | 'transcriptEnableCloseCaptionMenu'\n | 'transcriptDisableCloseCaptionMenu'\n | 'transcriptTabToCaptions'\n | 'transcriptTabToHighlights'\n | 'transcriptCreateHighlight'\n | 'transcriptDeleteHighlightInHighlight'\n | 'transcriptDeleteHighlightInCaptions'\n | 'transcriptChangeFontSize'\n | 'transcriptBackToDefaultPosition'\n | 'transcriptChangeModeToDark'\n | 'transcriptChangeModeToLight';\n fromLanguage?:\n | 'lan_af'\n | 'lan_sq'\n | 'lan_am'\n | 'lan_ar'\n | 'lan_hy'\n | 'lan_az'\n | 'lan_eu'\n | 'lan_be'\n | 'lan_bn'\n | 'lan_bs'\n | 'lan_bg'\n | 'lan_ca'\n | 'lan_ceb'\n | 'lan_zh'\n | 'lan_zh-TW'\n | 'lan_co'\n | 'lan_hr'\n | 'lan_cs'\n | 'lan_da'\n | 'lan_nl'\n | 'lan_en'\n | 'lan_en-GB'\n | 'lan_eo'\n | 'lan_et'\n | 'lan_fi'\n | 'lan_fr'\n | 'lan_fr-CA'\n | 'lan_fy'\n | 'lan_gl'\n | 'lan_ka'\n | 'lan_de'\n | 'lan_el'\n | 'lan_gu'\n | 'lan_ht'\n | 'lan_ha'\n | 'lan_haw'\n | 'lan_he'\n | 'lan_hi'\n | 'lan_hmn'\n | 'lan_hu'\n | 'lan_is'\n | 'lan_ig'\n | 'lan_id'\n | 'lan_ga'\n | 'lan_it'\n | 'lan_ja'\n | 'lan_jv'\n | 'lan_kn'\n | 'lan_kk'\n | 'lan_km'\n | 'lan_rw'\n | 'lan_ko'\n | 'lan_ku'\n | 'lan_ky'\n | 'lan_lo'\n | 'lan_la'\n | 'lan_lv'\n | 'lan_lt'\n | 'lan_lb'\n | 'lan_mk'\n | 'lan_mg'\n | 'lan_ms'\n | 'lan_ml'\n | 'lan_mt'\n | 'lan_mi'\n | 'lan_mr'\n | 'lan_mn'\n | 'lan_my'\n | 'lan_ne'\n | 'lan_no'\n | 'lan_ny'\n | 'lan_or'\n | 'lan_ps'\n | 'lan_fa'\n | 'lan_pl'\n | 'lan_pt'\n | 'lan_pa'\n | 'lan_ro'\n | 'lan_ru'\n | 'lan_sm'\n | 'lan_gd'\n | 'lan_sr'\n | 'lan_st'\n | 'lan_sn'\n | 'lan_sd'\n | 'lan_si'\n | 'lan_sk'\n | 'lan_sl'\n | 'lan_so'\n | 'lan_es'\n | 'lan_es-ES'\n | 'lan_su'\n | 'lan_sw'\n | 'lan_sv'\n | 'lan_tl'\n | 'lan_tg'\n | 'lan_ta'\n | 'lan_tt'\n | 'lan_te'\n | 'lan_th'\n | 'lan_tr'\n | 'lan_tk'\n | 'lan_uk'\n | 'lan_ur'\n | 'lan_ug'\n | 'lan_uz'\n | 'lan_vi'\n | 'lan_cy'\n | 'lan_xh'\n | 'lan_yi'\n | 'lan_yo'\n | 'lan_zu';\n toLanguage?:\n | 'lan_af'\n | 'lan_sq'\n | 'lan_am'\n | 'lan_ar'\n | 'lan_hy'\n | 'lan_az'\n | 'lan_eu'\n | 'lan_be'\n | 'lan_bn'\n | 'lan_bs'\n | 'lan_bg'\n | 'lan_ca'\n | 'lan_ceb'\n | 'lan_zh'\n | 'lan_zh-TW'\n | 'lan_co'\n | 'lan_hr'\n | 'lan_cs'\n | 'lan_da'\n | 'lan_nl'\n | 'lan_en'\n | 'lan_en-GB'\n | 'lan_eo'\n | 'lan_et'\n | 'lan_fi'\n | 'lan_fr'\n | 'lan_fr-CA'\n | 'lan_fy'\n | 'lan_gl'\n | 'lan_ka'\n | 'lan_de'\n | 'lan_el'\n | 'lan_gu'\n | 'lan_ht'\n | 'lan_ha'\n | 'lan_haw'\n | 'lan_he'\n | 'lan_hi'\n | 'lan_hmn'\n | 'lan_hu'\n | 'lan_is'\n | 'lan_ig'\n | 'lan_id'\n | 'lan_ga'\n | 'lan_it'\n | 'lan_ja'\n | 'lan_jv'\n | 'lan_kn'\n | 'lan_kk'\n | 'lan_km'\n | 'lan_rw'\n | 'lan_ko'\n | 'lan_ku'\n | 'lan_ky'\n | 'lan_lo'\n | 'lan_la'\n | 'lan_lv'\n | 'lan_lt'\n | 'lan_lb'\n | 'lan_mk'\n | 'lan_mg'\n | 'lan_ms'\n | 'lan_ml'\n | 'lan_mt'\n | 'lan_mi'\n | 'lan_mr'\n | 'lan_mn'\n | 'lan_my'\n | 'lan_ne'\n | 'lan_no'\n | 'lan_ny'\n | 'lan_or'\n | 'lan_ps'\n | 'lan_fa'\n | 'lan_pl'\n | 'lan_pt'\n | 'lan_pa'\n | 'lan_ro'\n | 'lan_ru'\n | 'lan_sm'\n | 'lan_gd'\n | 'lan_sr'\n | 'lan_st'\n | 'lan_sn'\n | 'lan_sd'\n | 'lan_si'\n | 'lan_sk'\n | 'lan_sl'\n | 'lan_so'\n | 'lan_es'\n | 'lan_es-ES'\n | 'lan_su'\n | 'lan_sw'\n | 'lan_sv'\n | 'lan_tl'\n | 'lan_tg'\n | 'lan_ta'\n | 'lan_tt'\n | 'lan_te'\n | 'lan_th'\n | 'lan_tr'\n | 'lan_tk'\n | 'lan_uk'\n | 'lan_ur'\n | 'lan_ug'\n | 'lan_uz'\n | 'lan_vi'\n | 'lan_cy'\n | 'lan_xh'\n | 'lan_yi'\n | 'lan_yo'\n | 'lan_zu';\n reactionType?:\n | 'celebrate'\n | 'clap'\n | 'haha'\n | 'love'\n | 'sad'\n | 'smile'\n | 'thumbUp'\n | 'thumbDown'\n | 'wow'\n | 'collapse'\n | 'disable'\n | 'enable'\n | 'disableGestures'\n | 'enableGestures'\n | 'expand'\n | 'openMenu';\n unifyRaiseHand?: 'lowerHand' | 'lowerAllHand' | 'raiseHand';\n };\n clientEventType?: 'normal-event' | 'user-action';\n /**\n * Audio background noise removal\n */\n audioNoiseRemoval?: {\n /**\n * background noise removal action data\n */\n actionData?: {\n bnrActionType: 'turn-on-bnr' | 'turn-off-bnr';\n };\n /**\n * background noise removal event data\n */\n eventData?: {\n bnrEventType: 'bnr-on' | 'bnr-off';\n };\n };\n /**\n * Details of client action\n */\n gestureRecognition?: {\n supportedMachine?: boolean;\n gestureType?: 'clap' | 'none' | 'raiseHand' | 'thumpUp' | 'thumbDown';\n duration?: number;\n };\n /**\n * post meeting hook report\n */\n postMeetingHook?: {\n /**\n * data define for background noise removal action\n */\n actionData?: {\n pmhActionType: 'share' | 'view-details' | 'close';\n pmhActionResult?: string;\n };\n /**\n * data define for background noise removal event\n */\n eventData?: {\n pmhEventType: 'used' | 'not-show-again';\n };\n };\n breakoutSessionJoinType?: 'any-one-can-join' | 'auto' | 'manual' | 'preassign-rest';\n breakoutSessionActionClickFrom?:\n | 'actionbar'\n | 'assign-dialog'\n | 'auto'\n | 'breakout-session-list'\n | 'contextmenu'\n | 'menu'\n | 'plist'\n | 'popup-dialog';\n broadcastSendType?:\n | 'all-sessions-all-participants'\n | 'all-sessions-all-cohost-and-presenters'\n | 'one-session-all-participants'\n | 'one-session-one-participant';\n breakoutSessionDialogOpenTime?: number;\n breakoutSessionDialogAssignTime?: number;\n /**\n * call embedded browser object result, if failed, will populate error at Error item\n */\n embeddedBrowserObject?: {\n browserType: 'IE' | 'WebView2';\n version?: string;\n callFrom?: string;\n };\n /**\n * data define for download detail data\n */\n downloadInfo?: {\n percentCompleted?: number;\n packageName?: string;\n timestamp?: string;\n clientDownloadFileCount?: number;\n clientDownloadSize?: number;\n clientDownloadTime?: number;\n clientDecompressTime?: number;\n CDNEnabled?: boolean;\n updateFlag?: 'preMeeting' | 'inMeeting' | 'postMeeting';\n epSP?: boolean;\n isEPUpdate?: boolean;\n spDifferent?: number;\n spVersionDelta?: number;\n deltaUpdate?: boolean;\n deltaListDownloadTime?: number;\n deltaPackageDownloadTime?: number;\n deltaCachePackageCopyTime?: number;\n deltaApplyTime?: number;\n deltaPackageUncompressTime?: number;\n deltaDuration?: number;\n deltaVersion?: string;\n deltaDownloadFullPackage?: boolean;\n deltaFileSize?: number;\n deltaUpdateEnabled?: boolean;\n deltaFullpackageDownloadEnabled?: boolean;\n deltaUpdateErrorType?: string;\n deltaUpdateSuccess?: string;\n deltaFullpackageDownloadVersion?: string;\n deltaFullpackageDownloadSuccess?: string;\n deltaUpdateCorrelationId?: string;\n deltaFullpackageDownloadCorrelationId?: string;\n deltaTargetVersion?: string;\n deltaLocalFullPackageVersions?: string;\n deltaUpdateFailReason?: string;\n deltaUpdateTimeStamp?: string;\n };\n isInstallWebView2?: boolean;\n loginType?:\n | 'no-login'\n | 'login-page'\n | 'reuse-ci-token'\n | 'reuse-site-token'\n | 'login-ci'\n | 'login-site'\n | 'unverified-guest';\n loginCrossSite?: boolean;\n crossBrowserLogin?: boolean;\n isMultiSiteUser?: boolean;\n /**\n * The metadata associated with the emitter of the event. This data is separate from the source metadata and must be emitted with every event.\n */\n mediaQualityMetadata?: {\n peerReflexiveIP?: string;\n maskedPeerReflexiveIP?: string;\n remoteMediaIP?: string;\n maskedRemoteMediaIP?: string;\n staticPerformanceLevel?: number;\n processAverageCPU?: number;\n processMaximumCPU?: number;\n systemAverageCPU?: number;\n systemMaximumCPU?: number;\n systemAverageGPU?: number;\n systemMaximumGPU?: number;\n /**\n * this object defines the memory related fields that are tracked in media quality events and reports\n */\n memoryUsage?: {\n processAverageMemoryUsage: number;\n processMaximumMemoryUsage: number;\n systemAverageMemoryUsage: number;\n systemMaximumMemoryUsage: number;\n processMaximumMemoryBytes: number;\n mainProcessMaximumMemoryBytes: number;\n osBitWidth: number;\n cpuBitWidth: number;\n };\n peripherals?: {\n name: 'camera' | 'microphone' | 'speaker';\n information: string;\n driver?: string;\n errorCode?: string;\n connectionType?: unknown;\n bluetoothMode?: unknown;\n }[];\n /**\n * information object for the peripheral\n */\n cameraInfo?: {\n name: 'camera' | 'microphone' | 'speaker';\n information: string;\n driver?: string;\n errorCode?: string;\n connectionType?: unknown;\n bluetoothMode?: unknown;\n };\n /**\n * information object for the peripheral\n */\n microphoneInfo?: {\n name: 'camera' | 'microphone' | 'speaker';\n information: string;\n driver?: string;\n errorCode?: string;\n connectionType?: unknown;\n bluetoothMode?: unknown;\n };\n /**\n * information object for the peripheral\n */\n speakerInfo?: {\n name: 'camera' | 'microphone' | 'speaker';\n information: string;\n driver?: string;\n errorCode?: string;\n connectionType?: unknown;\n bluetoothMode?: unknown;\n };\n /**\n * This object defines the fields related to the CPU being used by the emitter of the event\n */\n cpuInfo?: {\n description: string;\n clockSpeedGigaHertz: number;\n numberOfCores: number;\n architecture: 'intel32' | 'intel64' | 'amd32' | 'amd64' | 'arm32' | 'arm64' | 'unknown';\n staticPerformance?: string;\n };\n /**\n * Thread level cpu performance insights\n */\n cpuDataDetail?: {\n processesData?: unknown[];\n coresCpuData?: unknown[];\n coreVariance?: number;\n };\n /**\n * This object defines the fields related to the GPU being used by the emitter of the event\n */\n defaultGpuInfo?: {\n description: string;\n memoryMegaBytes: number;\n };\n otherGpuInfo?: {\n description: string;\n memoryMegaBytes: number;\n }[];\n dpcRecord?: string[];\n mediaLabels?: string[];\n screenResolution?: number;\n appWindowSize?: number;\n appWindowHeight?: number;\n appWindowWidth?: number;\n meetingUserCount?: number;\n videoUserCount?: number;\n numScreens?: number;\n configuredBitrate?: number;\n };\n sessionType?:\n | 'AD_HOC'\n | 'ADHOC_UNIFIED_SPACE_MEETING'\n | 'ANSWERED_ELSEWHERE'\n | 'BUTLER'\n | 'CFNA'\n | 'CMR_MEETING'\n | 'DPC_CONTROL'\n | 'EVENT_CENTER_MEETING'\n | 'HALF_ZTM'\n | 'JABBER'\n | 'MEDIA'\n | 'MS_TEAMS'\n | 'NO_JOINS'\n | 'SINGLE_PARTICIPANT'\n | 'SIP_CALL'\n | 'SIP_MEETING'\n | 'SPACE_MEETING'\n | 'SPACE_SHARE'\n | 'SPARK_CALL'\n | 'SPARK_MEETING'\n | 'SPARK_SIP_CALL'\n | 'SPARK_SIP_MEETING'\n | 'UNIFIED_SPACE_MEETING'\n | 'UNKNOWN'\n | 'WHITEBOARD_ONLY_SHARE'\n | 'WIRELESS_SHARE'\n | 'ZTM';\n}\n"],"mappings":""}
@@ -1,7 +0,0 @@
1
- "use strict";
2
-
3
- var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
- _Object$defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- //# sourceMappingURL=Event.js.map