@webex/internal-plugin-metrics 3.12.0 → 3.13.0
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/.repo-context.json +466 -0
- package/.sdd/manifest.json +626 -0
- package/AGENTS.md +208 -0
- package/README.md +274 -0
- package/dist/automated-user.js +19 -0
- package/dist/automated-user.js.map +1 -0
- package/dist/batcher.js +3 -0
- package/dist/batcher.js.map +1 -1
- package/dist/call-diagnostic/call-diagnostic-metrics-latencies.js +639 -66
- package/dist/call-diagnostic/call-diagnostic-metrics-latencies.js.map +1 -1
- package/dist/call-diagnostic/call-diagnostic-metrics.js +240 -103
- package/dist/call-diagnostic/call-diagnostic-metrics.js.map +1 -1
- package/dist/call-diagnostic/call-diagnostic-metrics.util.js +7 -2
- package/dist/call-diagnostic/call-diagnostic-metrics.util.js.map +1 -1
- package/dist/call-diagnostic/config.js +19 -4
- package/dist/call-diagnostic/config.js.map +1 -1
- package/dist/config.js +8 -0
- package/dist/config.js.map +1 -1
- package/dist/index.js +25 -1
- package/dist/index.js.map +1 -1
- package/dist/metrics.js +118 -5
- package/dist/metrics.js.map +1 -1
- package/dist/metrics.types.js +4 -0
- package/dist/metrics.types.js.map +1 -1
- package/dist/network-telemetry.js +610 -0
- package/dist/network-telemetry.js.map +1 -0
- package/dist/new-metrics.js +63 -17
- package/dist/new-metrics.js.map +1 -1
- package/dist/privacy-and-security-permission-enricher/constants.js +18 -0
- package/dist/privacy-and-security-permission-enricher/constants.js.map +1 -0
- package/dist/privacy-and-security-permission-enricher/index.js +143 -0
- package/dist/privacy-and-security-permission-enricher/index.js.map +1 -0
- package/dist/privacy-and-security-permission-enricher/types.js +7 -0
- package/dist/privacy-and-security-permission-enricher/types.js.map +1 -0
- package/dist/privacy-and-security-permission-enricher/utils.js +71 -0
- package/dist/privacy-and-security-permission-enricher/utils.js.map +1 -0
- package/dist/types/automated-user.d.ts +2 -0
- package/dist/types/call-diagnostic/call-diagnostic-metrics-latencies.d.ts +208 -5
- package/dist/types/call-diagnostic/call-diagnostic-metrics.d.ts +83 -17
- package/dist/types/call-diagnostic/config.d.ts +6 -0
- package/dist/types/config.d.ts +9 -0
- package/dist/types/index.d.ts +5 -3
- package/dist/types/metrics.types.d.ts +11 -5
- package/dist/types/network-telemetry.d.ts +108 -0
- package/dist/types/new-metrics.d.ts +17 -1
- package/dist/types/privacy-and-security-permission-enricher/constants.d.ts +6 -0
- package/dist/types/privacy-and-security-permission-enricher/index.d.ts +40 -0
- package/dist/types/privacy-and-security-permission-enricher/types.d.ts +14 -0
- package/dist/types/privacy-and-security-permission-enricher/utils.d.ts +5 -0
- package/dist/types/unhandled-exception-telemetry/index.d.ts +60 -0
- package/dist/types/unhandled-exception-telemetry/utils.d.ts +6 -0
- package/dist/unhandled-exception-telemetry/index.js +331 -0
- package/dist/unhandled-exception-telemetry/index.js.map +1 -0
- package/dist/unhandled-exception-telemetry/utils.js +105 -0
- package/dist/unhandled-exception-telemetry/utils.js.map +1 -0
- package/docs/adr/index.md +27 -0
- package/docs/architecture.md +437 -0
- package/docs/getting-started.md +131 -0
- package/docs/index.md +52 -0
- package/docs/specs/README.md +88 -0
- package/package.json +12 -11
- package/schemas/repo-context.schema.json +796 -0
- package/src/automated-user.ts +16 -0
- package/src/batcher.js +4 -0
- package/src/call-diagnostic/call-diagnostic-metrics-latencies.ts +801 -74
- package/src/call-diagnostic/call-diagnostic-metrics.ts +184 -42
- package/src/call-diagnostic/call-diagnostic-metrics.util.ts +7 -1
- package/src/call-diagnostic/config.ts +16 -0
- package/src/call-diagnostic/docs/README.md +535 -0
- package/src/config.js +8 -0
- package/src/docs/README.md +703 -0
- package/src/index.ts +16 -0
- package/src/metrics.js +123 -5
- package/src/metrics.types.ts +29 -6
- package/src/network-telemetry.ts +757 -0
- package/src/new-metrics.ts +56 -6
- package/src/privacy-and-security-permission-enricher/constants.ts +33 -0
- package/src/privacy-and-security-permission-enricher/docs/README.md +356 -0
- package/src/privacy-and-security-permission-enricher/index.ts +142 -0
- package/src/privacy-and-security-permission-enricher/types.ts +21 -0
- package/src/privacy-and-security-permission-enricher/utils.ts +82 -0
- package/src/rtcMetrics/docs/README.md +447 -0
- package/src/unhandled-exception-telemetry/docs/README.md +536 -0
- package/src/unhandled-exception-telemetry/index.ts +404 -0
- package/src/unhandled-exception-telemetry/utils.ts +101 -0
- package/test/unit/spec/automated-user.ts +43 -0
- package/test/unit/spec/batcher.js +43 -0
- package/test/unit/spec/call-diagnostic/call-diagnostic-metrics-batcher.ts +14 -2
- package/test/unit/spec/call-diagnostic/call-diagnostic-metrics-latencies.ts +1435 -304
- package/test/unit/spec/call-diagnostic/call-diagnostic-metrics.ts +1265 -207
- package/test/unit/spec/call-diagnostic/call-diagnostic-metrics.util.ts +27 -0
- package/test/unit/spec/metrics.js +14 -5
- package/test/unit/spec/network-telemetry.ts +610 -0
- package/test/unit/spec/new-metrics.ts +203 -50
- package/test/unit/spec/prelogin-metrics-batcher.ts +71 -36
- package/test/unit/spec/privacy-and-security-permission-enricher.ts +318 -0
- package/test/unit/spec/unhandled-exception-telemetry/utils.ts +109 -0
- package/test/unit/spec/unhandled-exception-telemetry.ts +689 -0
|
@@ -18,6 +18,7 @@ type GetIdentifiersOptions = {
|
|
|
18
18
|
preLoginId?: string;
|
|
19
19
|
globalMeetingId?: string;
|
|
20
20
|
webexConferenceIdStr?: string;
|
|
21
|
+
locusCluster?: string;
|
|
21
22
|
};
|
|
22
23
|
/**
|
|
23
24
|
* @description Util class to handle Call Analyzer Metrics
|
|
@@ -27,7 +28,7 @@ type GetIdentifiersOptions = {
|
|
|
27
28
|
export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
|
|
28
29
|
private callDiagnosticEventsBatcher;
|
|
29
30
|
private preLoginMetricsBatcher;
|
|
30
|
-
private logger;
|
|
31
|
+
private get logger();
|
|
31
32
|
private hasLoggedBrowserSerial;
|
|
32
33
|
private device;
|
|
33
34
|
private delayedClientEvents;
|
|
@@ -36,6 +37,8 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
|
|
|
36
37
|
private isMercuryConnected;
|
|
37
38
|
private eventLimitTracker;
|
|
38
39
|
private eventLimitWarningsLogged;
|
|
40
|
+
private isTelemetryOptOutManual;
|
|
41
|
+
private isTelemetryOptOutAutomatic;
|
|
39
42
|
validator: (options: {
|
|
40
43
|
type: 'mqe' | 'ce';
|
|
41
44
|
event: Event;
|
|
@@ -53,6 +56,29 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
|
|
|
53
56
|
* @returns one of 'login-ci','unverified-guest', null
|
|
54
57
|
*/
|
|
55
58
|
getCurLoginType(): "unverified-guest" | "login-ci";
|
|
59
|
+
/**
|
|
60
|
+
* Returns the user activation state reported from the browser's navigator.userActivation API
|
|
61
|
+
* @returns object with hasBeenActive and isActive booleans, or undefined if unavailable
|
|
62
|
+
*/
|
|
63
|
+
getUserActivation(): {
|
|
64
|
+
hasBeenActive: boolean;
|
|
65
|
+
isActive: boolean;
|
|
66
|
+
} | undefined;
|
|
67
|
+
/**
|
|
68
|
+
* Returns the telemetryOptOut value of the current user
|
|
69
|
+
* @returns one of 'manual', 'automatic', undefined
|
|
70
|
+
*/
|
|
71
|
+
getTelemetryOptOut(): "manual" | "automatic";
|
|
72
|
+
/**
|
|
73
|
+
* Sets the manual telemetry opt-out status for the current user
|
|
74
|
+
* @param value - boolean value indicating manual telemetry opt-out status
|
|
75
|
+
*/
|
|
76
|
+
setIsTelemetryOptOutManual(value: boolean): void;
|
|
77
|
+
/**
|
|
78
|
+
* Sets the automatic telemetry opt-out status for the current user
|
|
79
|
+
* @param value - boolean value indicating automatic telemetry opt-out status
|
|
80
|
+
*/
|
|
81
|
+
setIsTelemetryOptOutAutomatic(value: boolean): void;
|
|
56
82
|
/**
|
|
57
83
|
* Returns if the meeting has converged architecture enabled
|
|
58
84
|
* @param options.meetingId
|
|
@@ -84,6 +110,7 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
|
|
|
84
110
|
userAgent: string;
|
|
85
111
|
buildType?: "debug" | "test" | "prod" | "tap" | "analyzer-test";
|
|
86
112
|
upgradeChannel?: string;
|
|
113
|
+
upgradeSource?: string;
|
|
87
114
|
instanceId?: string;
|
|
88
115
|
networkType: "wifi" | "ethernet" | "cellular" | "unknown";
|
|
89
116
|
localIP?: string;
|
|
@@ -106,6 +133,8 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
|
|
|
106
133
|
urlProtocolLaunchMethod?: "manual" | "auto" | "extension-fallback";
|
|
107
134
|
browser?: string;
|
|
108
135
|
browserVersion?: string;
|
|
136
|
+
isSupportedBrowserFamily?: boolean;
|
|
137
|
+
isOutdatedBrowserVersion?: boolean;
|
|
109
138
|
clientType?: "MEETING_CENTER" | "EVENT_CENTER" | "TRAINING_CENTER" | "TEAMS_CLIENT" | "TEAMS_DEVICE" | "TEAMS_SHARE" | "SIP" | "RECORDING" | "CLOUD_AWARE_SIP" | "TEAMS_WXC_CLIENT" | "WXC_CLIENT" | "WXC_DEVICE" | "WEBEX_JS_SDK" | "VOICEA_CLIENT" | "CISCO_SIP_GW" | "WEBEX_SDK" | "CPAAS_THIRD_PARTY_SDK" | "WXC_THIRD_PARTY" | "WXCC" | "TEAMS_PHONE" | "WEBEX_RELAY";
|
|
110
139
|
subClientType?: "TEAMS_DEVICE" | "SIP" | "AUTOMOTIVE_APP" | "BROWSER_EXTENSION" | "DESKTOP_APP" | "DESKTOP_APP_VDI" | "DEVICE_CURRENT" | "DEVICE_LEGACY_2020" | "HOLOGRAM_HEADSET_APP" | "HVDI_APP" | "MIXED" | "MOBILE_APP" | "MOBILE_NETWORK" | "PAGE" | "VDI_APP" | "WEB_APP" | "PHONE_NOVUM" | "PHONE_ESPRESSO" | "PHONE_BUMBLEBEE" | "SIP_PSTN";
|
|
111
140
|
schedulingClientType?: "TEAMS_CLIENT" | "GOOGLE_ADDON" | "PT" | "PUBLIC_API" | "UNIFIED_PAGE" | "WEBEX_PAGE" | "GOOGLE_NOTIFICATION_CALENDAR" | "MSFT_NOTIFICATION_ADDIN" | "MSFT_NOTIFICATION_CALENDAR" | "OUTLOOK_ADDIN";
|
|
@@ -113,6 +142,10 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
|
|
|
113
142
|
clientVersionStatus?: "CURRENT" | "LEGACY" | "UNSUPPORTED";
|
|
114
143
|
localClientVersion?: string;
|
|
115
144
|
launcherVersion?: string;
|
|
145
|
+
installerVersion?: string;
|
|
146
|
+
installerMajorVersion?: number;
|
|
147
|
+
installerMinorVersion?: number;
|
|
148
|
+
installerRevision?: number;
|
|
116
149
|
modelNumber?: string;
|
|
117
150
|
joinFirstUpdateLater?: "ep-enabled" | "sp-enabled" | "not-enabled";
|
|
118
151
|
standbyUsed?: boolean;
|
|
@@ -137,11 +170,12 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
|
|
|
137
170
|
architecture: "unknown" | "intel32" | "intel64" | "amd32" | "amd64" | "arm32" | "arm64" | "armv9" | "armv8" | "armv7" | "armv6" | "x86_64" | "x86_32";
|
|
138
171
|
staticPerformance?: string;
|
|
139
172
|
clockSpeedGigaHertz?: number;
|
|
140
|
-
additionalProperties?:
|
|
173
|
+
additionalProperties?: never;
|
|
141
174
|
};
|
|
142
175
|
shareType?: "cb-normal-share" | "ce-airplay-share" | "ce-direct-share" | "ce-gui-loopback-share" | "ce-input-source-share" | "ce-input-source-share-hdmi" | "ce-input-source-share-usbc" | "ce-jpg-share" | "ce-miracast-share" | "mcs-normal-share" | "mcs-normal-audio-share" | "mcs-hfps-share" | "mcs-hfps-audio-share";
|
|
143
176
|
videoDisplayMode?: "grid-view" | "active-speaker-view";
|
|
144
|
-
videoLayoutType?: "stack" | "stackWithShare" | "sideBySide" | "sideBySideWithShare" | "grid" | "floatingActive" | "floatingThumbnail" | "floatingGrid" | "overlay" | "focus" | "prominent" | "focusWithShare" | "prominentWithShare" | "equal" | "equalWithShare" | "largeGallery";
|
|
177
|
+
videoLayoutType?: "auto" | "stack" | "stackWithShare" | "sideBySide" | "sideBySideWithShare" | "grid" | "floatingActive" | "floatingThumbnail" | "floatingGrid" | "overlay" | "focus" | "prominent" | "focusWithShare" | "prominentWithShare" | "equal" | "equalWithShare" | "largeGallery" | "autoWithShare";
|
|
178
|
+
appliedLayout?: "auto" | "stack" | "stackWithShare" | "sideBySide" | "sideBySideWithShare" | "grid" | "floatingActive" | "floatingThumbnail" | "floatingGrid" | "overlay" | "focus" | "prominent" | "focusWithShare" | "prominentWithShare" | "equal" | "equalWithShare" | "largeGallery" | "autoWithShare";
|
|
145
179
|
videoRenderType?: "wme" | "client_d3d" | "client_gdi";
|
|
146
180
|
vdiInfo?: {};
|
|
147
181
|
is64BitsClient?: boolean;
|
|
@@ -153,14 +187,31 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
|
|
|
153
187
|
vendorId?: string;
|
|
154
188
|
staticPerformanceLevel?: string;
|
|
155
189
|
staticPerformanceScore?: number;
|
|
156
|
-
|
|
190
|
+
preInstalledTime?: string;
|
|
191
|
+
preInstalledType?: "installer" | "launcher" | "app";
|
|
192
|
+
preInstalledVersion?: string;
|
|
193
|
+
additionalProperties?: never;
|
|
194
|
+
};
|
|
195
|
+
installerInfo?: {
|
|
196
|
+
packageSuffix?: string;
|
|
197
|
+
packageArch?: string;
|
|
198
|
+
launchId?: string;
|
|
199
|
+
packageCount?: number;
|
|
200
|
+
totalSize?: number;
|
|
201
|
+
additionalProperties?: never;
|
|
157
202
|
};
|
|
158
203
|
emmVendorId?: string;
|
|
159
204
|
isHybridMedia?: boolean;
|
|
160
205
|
originData?: {};
|
|
161
206
|
serviceVersion?: string;
|
|
162
|
-
additionalProperties?:
|
|
207
|
+
additionalProperties?: never;
|
|
163
208
|
};
|
|
209
|
+
/**
|
|
210
|
+
* Returns the signed-in user's CI ID derived from credentials tokens.
|
|
211
|
+
* Used as a fallback when no device is registered.
|
|
212
|
+
* @returns the userId, or undefined if it can't be determined
|
|
213
|
+
*/
|
|
214
|
+
private getUserIdFromCredentials;
|
|
164
215
|
/**
|
|
165
216
|
* Gather identifier details for call diagnostic payload.
|
|
166
217
|
* @throws Error if initialization fails.
|
|
@@ -172,6 +223,7 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
|
|
|
172
223
|
participantId?: string;
|
|
173
224
|
breakoutGroupId?: string;
|
|
174
225
|
breakoutMoveId?: string;
|
|
226
|
+
breakoutTrackingId?: string;
|
|
175
227
|
breakoutSessionId?: string;
|
|
176
228
|
browserId?: string;
|
|
177
229
|
ciExchangeTokenUrl?: string;
|
|
@@ -183,7 +235,7 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
|
|
|
183
235
|
imiAppId: string;
|
|
184
236
|
sessionId: string;
|
|
185
237
|
sessionInstanceId: string;
|
|
186
|
-
additionalProperties?:
|
|
238
|
+
additionalProperties?: never;
|
|
187
239
|
};
|
|
188
240
|
csdmDeviceUrl?: string;
|
|
189
241
|
destinationBreakoutSessionId?: string;
|
|
@@ -199,6 +251,8 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
|
|
|
199
251
|
ivrId?: string;
|
|
200
252
|
callId?: string;
|
|
201
253
|
pairCallId?: string;
|
|
254
|
+
llmWebsocketUrl?: string;
|
|
255
|
+
locusCluster?: string;
|
|
202
256
|
locusId?: string;
|
|
203
257
|
locusJoinUrl?: string;
|
|
204
258
|
locusSessionId?: string;
|
|
@@ -212,9 +266,11 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
|
|
|
212
266
|
meetingLookupUrl?: string;
|
|
213
267
|
meetingOrgId?: string;
|
|
214
268
|
metricServiceUrl?: string;
|
|
269
|
+
mercuryWebsocketUrl?: string;
|
|
215
270
|
msteamsTenantGuid?: string;
|
|
216
271
|
msteamsConferenceId?: string;
|
|
217
272
|
msteamsMeetingId?: string;
|
|
273
|
+
mtid?: string;
|
|
218
274
|
oauth2ClientId?: string;
|
|
219
275
|
orgId?: string;
|
|
220
276
|
provisionalCorrelationId?: string;
|
|
@@ -225,7 +281,7 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
|
|
|
225
281
|
sipSessionId?: {
|
|
226
282
|
local?: string;
|
|
227
283
|
remote?: string;
|
|
228
|
-
additionalProperties?:
|
|
284
|
+
additionalProperties?: never;
|
|
229
285
|
};
|
|
230
286
|
sipUri?: string;
|
|
231
287
|
subConfId?: string;
|
|
@@ -253,13 +309,14 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
|
|
|
253
309
|
idForEndpointAB?: string;
|
|
254
310
|
customerOrgId?: string;
|
|
255
311
|
correlationId: string;
|
|
256
|
-
additionalProperties?:
|
|
312
|
+
additionalProperties?: never;
|
|
257
313
|
} | {
|
|
258
314
|
aggregatedBreakoutMoveId?: string;
|
|
259
315
|
attendeeId?: string;
|
|
260
316
|
participantId?: string;
|
|
261
317
|
breakoutGroupId?: string;
|
|
262
318
|
breakoutMoveId?: string;
|
|
319
|
+
breakoutTrackingId?: string;
|
|
263
320
|
breakoutSessionId?: string;
|
|
264
321
|
browserId?: string;
|
|
265
322
|
ciExchangeTokenUrl?: string;
|
|
@@ -271,7 +328,7 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
|
|
|
271
328
|
imiAppId: string;
|
|
272
329
|
sessionId: string;
|
|
273
330
|
sessionInstanceId: string;
|
|
274
|
-
additionalProperties?:
|
|
331
|
+
additionalProperties?: never;
|
|
275
332
|
};
|
|
276
333
|
csdmDeviceUrl?: string;
|
|
277
334
|
destinationBreakoutSessionId?: string;
|
|
@@ -287,6 +344,8 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
|
|
|
287
344
|
ivrId?: string;
|
|
288
345
|
callId?: string;
|
|
289
346
|
pairCallId?: string;
|
|
347
|
+
llmWebsocketUrl?: string;
|
|
348
|
+
locusCluster?: string;
|
|
290
349
|
locusId?: string;
|
|
291
350
|
locusJoinUrl?: string;
|
|
292
351
|
locusSessionId?: string;
|
|
@@ -300,9 +359,11 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
|
|
|
300
359
|
meetingLookupUrl?: string;
|
|
301
360
|
meetingOrgId?: string;
|
|
302
361
|
metricServiceUrl?: string;
|
|
362
|
+
mercuryWebsocketUrl?: string;
|
|
303
363
|
msteamsTenantGuid?: string;
|
|
304
364
|
msteamsConferenceId?: string;
|
|
305
365
|
msteamsMeetingId?: string;
|
|
366
|
+
mtid?: string;
|
|
306
367
|
oauth2ClientId?: string;
|
|
307
368
|
orgId?: string;
|
|
308
369
|
provisionalCorrelationId?: string;
|
|
@@ -313,7 +374,7 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
|
|
|
313
374
|
sipSessionId?: {
|
|
314
375
|
local?: string;
|
|
315
376
|
remote?: string;
|
|
316
|
-
additionalProperties?:
|
|
377
|
+
additionalProperties?: never;
|
|
317
378
|
};
|
|
318
379
|
sipUri?: string;
|
|
319
380
|
subConfId?: string;
|
|
@@ -341,13 +402,14 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
|
|
|
341
402
|
idForEndpointAB?: string;
|
|
342
403
|
customerOrgId?: string;
|
|
343
404
|
correlationId: string;
|
|
344
|
-
additionalProperties?:
|
|
405
|
+
additionalProperties?: never;
|
|
345
406
|
} | {
|
|
346
407
|
aggregatedBreakoutMoveId?: string;
|
|
347
408
|
attendeeId?: string;
|
|
348
409
|
participantId?: string;
|
|
349
410
|
breakoutGroupId?: string;
|
|
350
411
|
breakoutMoveId?: string;
|
|
412
|
+
breakoutTrackingId?: string;
|
|
351
413
|
breakoutSessionId?: string;
|
|
352
414
|
browserId?: string;
|
|
353
415
|
ciExchangeTokenUrl?: string;
|
|
@@ -359,7 +421,7 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
|
|
|
359
421
|
imiAppId: string;
|
|
360
422
|
sessionId: string;
|
|
361
423
|
sessionInstanceId: string;
|
|
362
|
-
additionalProperties?:
|
|
424
|
+
additionalProperties?: never;
|
|
363
425
|
};
|
|
364
426
|
csdmDeviceUrl?: string;
|
|
365
427
|
destinationBreakoutSessionId?: string;
|
|
@@ -375,6 +437,8 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
|
|
|
375
437
|
ivrId?: string;
|
|
376
438
|
callId?: string;
|
|
377
439
|
pairCallId?: string;
|
|
440
|
+
llmWebsocketUrl?: string;
|
|
441
|
+
locusCluster?: string;
|
|
378
442
|
locusId?: string;
|
|
379
443
|
locusJoinUrl?: string;
|
|
380
444
|
locusSessionId?: string;
|
|
@@ -388,9 +452,11 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
|
|
|
388
452
|
meetingLookupUrl?: string;
|
|
389
453
|
meetingOrgId?: string;
|
|
390
454
|
metricServiceUrl?: string;
|
|
455
|
+
mercuryWebsocketUrl?: string;
|
|
391
456
|
msteamsTenantGuid?: string;
|
|
392
457
|
msteamsConferenceId?: string;
|
|
393
458
|
msteamsMeetingId?: string;
|
|
459
|
+
mtid?: string;
|
|
394
460
|
oauth2ClientId?: string;
|
|
395
461
|
orgId?: string;
|
|
396
462
|
provisionalCorrelationId?: string;
|
|
@@ -401,7 +467,7 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
|
|
|
401
467
|
sipSessionId?: {
|
|
402
468
|
local?: string;
|
|
403
469
|
remote?: string;
|
|
404
|
-
additionalProperties?:
|
|
470
|
+
additionalProperties?: never;
|
|
405
471
|
};
|
|
406
472
|
sipUri?: string;
|
|
407
473
|
subConfId?: string;
|
|
@@ -429,7 +495,7 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
|
|
|
429
495
|
idForEndpointAB?: string;
|
|
430
496
|
customerOrgId?: string;
|
|
431
497
|
correlationId: string;
|
|
432
|
-
additionalProperties?:
|
|
498
|
+
additionalProperties?: never;
|
|
433
499
|
};
|
|
434
500
|
/**
|
|
435
501
|
* Create diagnostic event, which can hold client event, feature event or MQE event data.
|
|
@@ -482,16 +548,16 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin {
|
|
|
482
548
|
* @param arg.clientErrorCode
|
|
483
549
|
* @param arg.serviceErrorCode
|
|
484
550
|
* @param arg.payloadOverrides
|
|
485
|
-
* @param arg.
|
|
551
|
+
* @param arg.httpCode
|
|
486
552
|
* @returns
|
|
487
553
|
*/
|
|
488
|
-
getErrorPayloadForClientErrorCode({ clientErrorCode, serviceErrorCode, serviceErrorName, rawErrorMessage, payloadOverrides,
|
|
554
|
+
getErrorPayloadForClientErrorCode({ clientErrorCode, serviceErrorCode, serviceErrorName, rawErrorMessage, payloadOverrides, httpCode, }: {
|
|
489
555
|
clientErrorCode: number;
|
|
490
556
|
serviceErrorCode: any;
|
|
491
557
|
serviceErrorName?: any;
|
|
492
558
|
rawErrorMessage?: string;
|
|
493
559
|
payloadOverrides?: any;
|
|
494
|
-
|
|
560
|
+
httpCode?: number;
|
|
495
561
|
}): ClientEventError;
|
|
496
562
|
/**
|
|
497
563
|
* Clear the error cache
|
|
@@ -2,6 +2,8 @@ import { ClientEventError, ClientSubServiceType } from '../metrics.types';
|
|
|
2
2
|
export declare const CALL_DIAGNOSTIC_LOG_IDENTIFIER = "call-diagnostic-events -> ";
|
|
3
3
|
export declare const CALL_FEATURE_LOG_IDENTIFIER = "call-diagnostic-events-feature -> ";
|
|
4
4
|
export declare const AUTHENTICATION_FAILED_CODE = 1010;
|
|
5
|
+
export declare const LOCUS_RATE_LIMITED_OUTGOING_CLIENT_CODE = 1002;
|
|
6
|
+
export declare const LOCUS_UNAVAILABLE_CLIENT_CODE = 1003;
|
|
5
7
|
export declare const NETWORK_ERROR = 1026;
|
|
6
8
|
export declare const NEW_LOCUS_ERROR_CLIENT_CODE = 4008;
|
|
7
9
|
export declare const MEETING_INFO_LOOKUP_ERROR_CLIENT_CODE = 4100;
|
|
@@ -102,11 +104,13 @@ export declare const ERROR_DESCRIPTIONS: {
|
|
|
102
104
|
WEBRTC_API_NOT_AVAILABLE: string;
|
|
103
105
|
WDM_RESTRICTED_REGION: string;
|
|
104
106
|
USER_NOT_ALLOWED_JOIN_WEBINAR: string;
|
|
107
|
+
INVALID_MEETING_INFO: string;
|
|
105
108
|
};
|
|
106
109
|
export declare const SERVICE_ERROR_CODES_TO_CLIENT_ERROR_CODES_MAP: {
|
|
107
110
|
58400: number;
|
|
108
111
|
99002: number;
|
|
109
112
|
99009: number;
|
|
113
|
+
99019: number;
|
|
110
114
|
58500: number;
|
|
111
115
|
400001: number;
|
|
112
116
|
403004: number;
|
|
@@ -134,6 +138,7 @@ export declare const SERVICE_ERROR_CODES_TO_CLIENT_ERROR_CODES_MAP: {
|
|
|
134
138
|
423001: number;
|
|
135
139
|
423005: number;
|
|
136
140
|
423006: number;
|
|
141
|
+
423008: number;
|
|
137
142
|
423010: number;
|
|
138
143
|
423012: number;
|
|
139
144
|
423013: number;
|
|
@@ -147,6 +152,7 @@ export declare const SERVICE_ERROR_CODES_TO_CLIENT_ERROR_CODES_MAP: {
|
|
|
147
152
|
403037: number;
|
|
148
153
|
403003: number;
|
|
149
154
|
403030: number;
|
|
155
|
+
403106: number;
|
|
150
156
|
2403001: number;
|
|
151
157
|
2403002: number;
|
|
152
158
|
2403003: number;
|
package/dist/types/config.d.ts
CHANGED
|
@@ -8,10 +8,19 @@ declare namespace _default {
|
|
|
8
8
|
}
|
|
9
9
|
export namespace metrics_1 {
|
|
10
10
|
const appType: string;
|
|
11
|
+
namespace unhandledExceptionTelemetry {
|
|
12
|
+
const enabled: boolean;
|
|
13
|
+
}
|
|
14
|
+
namespace networkTelemetry {
|
|
15
|
+
const enabled_1: boolean;
|
|
16
|
+
export { enabled_1 as enabled };
|
|
17
|
+
export const intervalMs: number;
|
|
18
|
+
}
|
|
11
19
|
const batcherWait: number;
|
|
12
20
|
const batcherMaxCalls: number;
|
|
13
21
|
const batcherMaxWait: number;
|
|
14
22
|
const batcherRetryPlateau: number;
|
|
23
|
+
const batcherRetryOnNetworkError: boolean;
|
|
15
24
|
const waitForServiceTimeout: number;
|
|
16
25
|
}
|
|
17
26
|
export { metrics_1 as metrics };
|
package/dist/types/index.d.ts
CHANGED
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
import config from './config';
|
|
5
5
|
import NewMetrics from './new-metrics';
|
|
6
6
|
import * as Utils from './utils';
|
|
7
|
-
import
|
|
7
|
+
import * as AutomatedUserUtils from './automated-user';
|
|
8
|
+
import { ClientEvent, ClientEventLeaveReason, SubmitBehavioralEvent, SubmitClientEvent, SubmitInternalEvent, SubmitOperationalEvent, SubmitBusinessEvent, SubmitMQE, PreComputedLatencies, SubmitFeatureEvent, LocusSyncLatencyEventName, PrivacyAndSecurityPermission } from './metrics.types';
|
|
8
9
|
import * as CALL_DIAGNOSTIC_CONFIG from './call-diagnostic/config';
|
|
9
10
|
import * as CallDiagnosticUtils from './call-diagnostic/call-diagnostic-metrics.util';
|
|
10
11
|
import CallDiagnosticMetrics from './call-diagnostic/call-diagnostic-metrics';
|
|
@@ -15,5 +16,6 @@ import BusinessMetrics from './business-metrics';
|
|
|
15
16
|
import RtcMetrics from './rtcMetrics';
|
|
16
17
|
import PreLoginMetrics from './prelogin-metrics';
|
|
17
18
|
export { default, getOSNameInternal } from './metrics';
|
|
18
|
-
export { config, CALL_DIAGNOSTIC_CONFIG, NewMetrics, Utils, CallDiagnosticUtils, CallDiagnosticLatencies, CallDiagnosticMetrics, BehavioralMetrics, OperationalMetrics, BusinessMetrics, RtcMetrics, PreLoginMetrics, };
|
|
19
|
-
export
|
|
19
|
+
export { config, CALL_DIAGNOSTIC_CONFIG, AutomatedUserUtils, NewMetrics, Utils, CallDiagnosticUtils, CallDiagnosticLatencies, CallDiagnosticMetrics, BehavioralMetrics, OperationalMetrics, BusinessMetrics, RtcMetrics, PreLoginMetrics, };
|
|
20
|
+
export { isAutomatedUser, isAutomatedUserAgent } from './automated-user';
|
|
21
|
+
export type { ClientEvent, ClientEventLeaveReason, SubmitBehavioralEvent, SubmitClientEvent, SubmitInternalEvent, SubmitMQE, SubmitOperationalEvent, SubmitBusinessEvent, PreComputedLatencies, SubmitFeatureEvent, LocusSyncLatencyEventName, PrivacyAndSecurityPermission, };
|
|
@@ -8,6 +8,9 @@ export type NewEnvironmentType = NonNullable<RawEvent['origin']['newEnvironment'
|
|
|
8
8
|
export type ClientLaunchMethodType = NonNullable<RawEvent['origin']['clientInfo']>['clientLaunchMethod'];
|
|
9
9
|
export type ClientUserNameInput = NonNullable<RawClientEvent['userNameInput']>;
|
|
10
10
|
export type ClientEmailInput = NonNullable<RawClientEvent['emailInput']>;
|
|
11
|
+
export type PrivacyAndSecurityPermission = NonNullable<RawClientEvent['privacyAndSecurityPermission']>;
|
|
12
|
+
export type PrivacyAndSecurityPermissionResource = keyof PrivacyAndSecurityPermission;
|
|
13
|
+
export type PrivacyAndSecurityPermissionState = PrivacyAndSecurityPermission[PrivacyAndSecurityPermissionResource];
|
|
11
14
|
export type BrowserLaunchMethodType = NonNullable<RawEvent['origin']['clientInfo']>['browserLaunchMethod'];
|
|
12
15
|
export type MetricEventProduct = 'webex' | 'wxcc_desktop' | 'wxcc_crm' | 'wxcc_sdk';
|
|
13
16
|
export type MetricEventAgent = 'user' | 'browser' | 'system' | 'sdk' | 'redux' | 'service' | 'api';
|
|
@@ -27,6 +30,7 @@ export type SubmitClientEventOptions = {
|
|
|
27
30
|
browserLaunchMethod?: BrowserLaunchMethodType;
|
|
28
31
|
webexConferenceIdStr?: string;
|
|
29
32
|
globalMeetingId?: string;
|
|
33
|
+
locusCluster?: string;
|
|
30
34
|
joinFlowVersion?: MetricEventJoinFlowVersion;
|
|
31
35
|
meetingJoinPhase?: MetricEventMeetingJoinPhase;
|
|
32
36
|
triggeredTime?: string;
|
|
@@ -41,8 +45,10 @@ export type SubmitMQEOptions = {
|
|
|
41
45
|
webexConferenceIdStr?: string;
|
|
42
46
|
globalMeetingId?: string;
|
|
43
47
|
};
|
|
48
|
+
export declare const LOCUS_SYNC_LATENCY_EVENT_NAMES: readonly ["internal.client.locus.sync.start", "internal.client.locus.hashtree.request", "internal.client.locus.hashtree.response", "internal.client.locus.sync.request", "internal.client.locus.sync.response", "internal.client.locus.sync.message.received"];
|
|
49
|
+
export type LocusSyncLatencyEventName = (typeof LOCUS_SYNC_LATENCY_EVENT_NAMES)[number];
|
|
44
50
|
export type InternalEvent = {
|
|
45
|
-
name: 'internal.client.meetinginfo.request' | 'internal.client.meetinginfo.response' | 'internal.register.device.request' | 'internal.register.device.response' | 'internal.reset.join.latencies' | 'internal.
|
|
51
|
+
name: 'internal.client.meetinginfo.request' | 'internal.client.meetinginfo.response' | 'internal.register.device.request' | 'internal.register.device.response' | 'internal.reset.join.latencies' | 'internal.host.meeting.participant.admitted' | 'internal.client.meeting.interstitial-window.showed' | 'internal.client.interstitial-window.click.joinbutton' | 'internal.client.add-media.turn-discovery.start' | 'internal.client.add-media.turn-discovery.end' | 'internal.client.share.initiated' | 'internal.client.share.stopped' | LocusSyncLatencyEventName;
|
|
46
52
|
payload?: never;
|
|
47
53
|
options?: never;
|
|
48
54
|
};
|
|
@@ -107,10 +113,10 @@ export type ClientInfo = NonNullable<RawEvent['origin']['clientInfo']>;
|
|
|
107
113
|
export type ClientType = NonNullable<RawEvent['origin']['clientInfo']>['clientType'];
|
|
108
114
|
export type SubClientType = NonNullable<RawEvent['origin']['clientInfo']>['subClientType'];
|
|
109
115
|
export type NetworkType = NonNullable<RawEvent['origin']>['networkType'];
|
|
110
|
-
export type ClientSubServiceType = ClientEvent['payload']['webexSubServiceType'];
|
|
116
|
+
export type ClientSubServiceType = NonNullable<ClientEvent['payload']>['webexSubServiceType'];
|
|
111
117
|
export type ClientEventPayload = RecursivePartial<ClientEvent['payload']>;
|
|
112
|
-
export type ClientEventLeaveReason = ClientEvent['payload']['leaveReason'];
|
|
113
|
-
export type ClientEventPayloadError = ClientEvent['payload']['errors'];
|
|
118
|
+
export type ClientEventLeaveReason = NonNullable<ClientEvent['payload']>['leaveReason'];
|
|
119
|
+
export type ClientEventPayloadError = NonNullable<ClientEvent['payload']>['errors'];
|
|
114
120
|
export type ClientFeatureEventPayload = RecursivePartial<FeatureEvent['payload']>;
|
|
115
121
|
export type MediaQualityEventAudioSetupDelayPayload = NonNullable<MediaQualityEvent['payload']>['audioSetupDelay'];
|
|
116
122
|
export type MediaQualityEventVideoSetupDelayPayload = NonNullable<MediaQualityEvent['payload']>['videoSetupDelay'];
|
|
@@ -154,7 +160,7 @@ export type BuildClientEventFetchRequestOptions = (args: {
|
|
|
154
160
|
payload?: RecursivePartial<ClientEvent['payload']>;
|
|
155
161
|
options?: SubmitClientEventOptions;
|
|
156
162
|
}) => Promise<any>;
|
|
157
|
-
export type PreComputedLatencies = 'internal.client.pageJMT' | 'internal.download.time' | 'internal.get.cluster.time' | 'internal.click.to.interstitial' | 'internal.click.to.interstitial.with.user.delay' | 'internal.refresh.captcha.time' | 'internal.exchange.ci.token.time' | 'internal.get.u2c.time' | 'internal.call.init.join.req' | 'internal.other.app.api.time' | 'internal.api.fetch.intelligence.models';
|
|
163
|
+
export type PreComputedLatencies = 'internal.client.pageJMT' | 'internal.download.time' | 'internal.get.cluster.time' | 'internal.click.to.interstitial' | 'internal.click.to.interstitial.with.user.delay' | 'internal.click.to.interstitial.for.client.jmt' | 'internal.refresh.captcha.time' | 'internal.exchange.ci.token.time' | 'internal.get.u2c.time' | 'internal.call.init.join.req' | 'internal.other.app.api.time' | 'internal.api.fetch.intelligence.models' | 'internal.client.locus.sync.random.backoff';
|
|
158
164
|
export interface IdType {
|
|
159
165
|
meetingId?: string;
|
|
160
166
|
callId?: string;
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
export declare const NETWORK_REQUEST_SUMMARY_METRIC = "JS_SDK_NETWORK_REQUEST_SUMMARY";
|
|
2
|
+
export declare const NETWORK_TELEMETRY_INTERVAL_MS: number;
|
|
3
|
+
type Headers = Record<string, unknown>;
|
|
4
|
+
type MetricsSummary = {
|
|
5
|
+
totalSendRequest: number;
|
|
6
|
+
totalFailedRequest: number;
|
|
7
|
+
totalRecvdResponse: number;
|
|
8
|
+
totalFailedResponse: number;
|
|
9
|
+
};
|
|
10
|
+
type RequestMetric = {
|
|
11
|
+
host: string;
|
|
12
|
+
endPoint: string;
|
|
13
|
+
countSendRequest: number;
|
|
14
|
+
countFailedRequest: number;
|
|
15
|
+
countRecvdResponse: number;
|
|
16
|
+
countFailedResponse: number;
|
|
17
|
+
averageNetworkDurationMs: number;
|
|
18
|
+
maxNetworkDurationP90Ms: number;
|
|
19
|
+
maxNetworkDurationP99Ms: number;
|
|
20
|
+
};
|
|
21
|
+
export type NetworkErrorMetric = {
|
|
22
|
+
host: string;
|
|
23
|
+
endPoint: string;
|
|
24
|
+
statusCode: number;
|
|
25
|
+
errorCode: string;
|
|
26
|
+
method: string;
|
|
27
|
+
errorType: string;
|
|
28
|
+
errorMessage: string;
|
|
29
|
+
trackingIds: string[];
|
|
30
|
+
countError: number;
|
|
31
|
+
};
|
|
32
|
+
export type NetworkTelemetry = {
|
|
33
|
+
metricsSummary: MetricsSummary;
|
|
34
|
+
metrics: RequestMetric[];
|
|
35
|
+
errorMetrics: NetworkErrorMetric[];
|
|
36
|
+
errorMetricsSummary: Record<string, {
|
|
37
|
+
count: number;
|
|
38
|
+
}>;
|
|
39
|
+
};
|
|
40
|
+
type ErrorDetails = {
|
|
41
|
+
code?: number | string;
|
|
42
|
+
errorCode?: number | string;
|
|
43
|
+
message?: string;
|
|
44
|
+
name?: string;
|
|
45
|
+
};
|
|
46
|
+
type RequestOptions = {
|
|
47
|
+
api?: string;
|
|
48
|
+
headers?: Headers;
|
|
49
|
+
method?: string;
|
|
50
|
+
resource?: string;
|
|
51
|
+
service?: string;
|
|
52
|
+
timeout?: number;
|
|
53
|
+
uri?: string;
|
|
54
|
+
url?: string;
|
|
55
|
+
$timings?: {
|
|
56
|
+
networkEnd?: number;
|
|
57
|
+
networkStart?: number;
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
type RequestFailure = ErrorDetails & {
|
|
61
|
+
body?: ErrorDetails | string;
|
|
62
|
+
status?: number;
|
|
63
|
+
statusCode?: number;
|
|
64
|
+
};
|
|
65
|
+
type NetworkMetricProperties = {
|
|
66
|
+
type: 'operational';
|
|
67
|
+
tags: Record<string, string>;
|
|
68
|
+
fields: MetricsSummary;
|
|
69
|
+
eventPayload: NetworkTelemetry;
|
|
70
|
+
};
|
|
71
|
+
type NetworkTelemetryCollectorOptions = {
|
|
72
|
+
intervalMs?: number;
|
|
73
|
+
onSubmissionFailure: () => void;
|
|
74
|
+
submitMetric: (name: string, properties: NetworkMetricProperties) => unknown;
|
|
75
|
+
};
|
|
76
|
+
type NetworkTelemetryCollector = {
|
|
77
|
+
recordRequest: (options?: RequestOptions) => void;
|
|
78
|
+
recordResponse: (options?: RequestOptions) => void;
|
|
79
|
+
recordFailure: (options?: RequestOptions, reason?: RequestFailure) => void;
|
|
80
|
+
flush: () => Promise<void>;
|
|
81
|
+
stop: () => Promise<void>;
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* Removes query data and redacts dynamic-looking endpoint segments.
|
|
85
|
+
* @param resource SDK resource path.
|
|
86
|
+
* @returns The normalized endpoint.
|
|
87
|
+
*/
|
|
88
|
+
export declare function getOperation(resource?: string): string;
|
|
89
|
+
/**
|
|
90
|
+
* Excludes the transports used to submit telemetry, preventing self-reporting.
|
|
91
|
+
* @param options Request options.
|
|
92
|
+
* @returns Whether the request should be tracked.
|
|
93
|
+
*/
|
|
94
|
+
export declare function shouldTrackNetworkRequest(options?: RequestOptions): boolean;
|
|
95
|
+
/**
|
|
96
|
+
* Creates the error entry produced by one failed request.
|
|
97
|
+
* @param options Request options.
|
|
98
|
+
* @param reason Request failure.
|
|
99
|
+
* @returns The normalized error metric.
|
|
100
|
+
*/
|
|
101
|
+
export declare function createNetworkErrorMetric(options?: RequestOptions, reason?: RequestFailure): NetworkErrorMetric;
|
|
102
|
+
/**
|
|
103
|
+
* Creates a network telemetry collector and starts its periodic timer.
|
|
104
|
+
* @param options Submission callbacks.
|
|
105
|
+
* @returns The network telemetry collector.
|
|
106
|
+
*/
|
|
107
|
+
export declare function createNetworkTelemetryCollector({ intervalMs, onSubmissionFailure, submitMetric, }: NetworkTelemetryCollectorOptions): NetworkTelemetryCollector;
|
|
108
|
+
export {};
|
|
@@ -4,7 +4,7 @@ import BehavioralMetrics from './behavioral-metrics';
|
|
|
4
4
|
import OperationalMetrics from './operational-metrics';
|
|
5
5
|
import BusinessMetrics from './business-metrics';
|
|
6
6
|
import PreLoginMetrics from './prelogin-metrics';
|
|
7
|
-
import { RecursivePartial, MetricEventProduct, MetricEventAgent, MetricEventVerb, ClientEvent, FeatureEvent, EventPayload, MediaQualityEvent, InternalEvent, SubmitClientEventOptions, Table, DelayedClientEvent, DelayedClientFeatureEvent } from './metrics.types';
|
|
7
|
+
import { RecursivePartial, MetricEventProduct, MetricEventAgent, MetricEventVerb, ClientEvent, FeatureEvent, EventPayload, MediaQualityEvent, InternalEvent, SubmitClientEventOptions, Table, DelayedClientEvent, DelayedClientFeatureEvent, PrivacyAndSecurityPermission } from './metrics.types';
|
|
8
8
|
import CallDiagnosticLatencies from './call-diagnostic/call-diagnostic-metrics-latencies';
|
|
9
9
|
/**
|
|
10
10
|
* Metrics plugin to centralize all types of metrics.
|
|
@@ -33,6 +33,7 @@ declare class Metrics extends WebexPlugin {
|
|
|
33
33
|
*/
|
|
34
34
|
delayedClientEventsOverrides: Partial<DelayedClientEvent['options']>;
|
|
35
35
|
delayedClientFeatureEventsOverrides: Partial<DelayedClientFeatureEvent['options']>;
|
|
36
|
+
private privacyAndSecurityPermissionEnricher;
|
|
36
37
|
/**
|
|
37
38
|
* Constructor
|
|
38
39
|
* @param args
|
|
@@ -78,6 +79,10 @@ declare class Metrics extends WebexPlugin {
|
|
|
78
79
|
* @returns true once we have the deviceId we need to submit business events
|
|
79
80
|
*/
|
|
80
81
|
isReadyToSubmitBusinessEvents(): boolean;
|
|
82
|
+
/**
|
|
83
|
+
* @returns whether the current user agent belongs to an automated user
|
|
84
|
+
*/
|
|
85
|
+
isAutomatedUser(): boolean;
|
|
81
86
|
/**
|
|
82
87
|
* Behavioral event
|
|
83
88
|
* @param args
|
|
@@ -147,6 +152,17 @@ declare class Metrics extends WebexPlugin {
|
|
|
147
152
|
payload?: RecursivePartial<ClientEvent['payload']>;
|
|
148
153
|
options?: SubmitClientEventOptions;
|
|
149
154
|
}): Promise<any>;
|
|
155
|
+
/**
|
|
156
|
+
* Stores the latest browser permission state supplied by the client.
|
|
157
|
+
* @param permission latest normalized permission snapshot
|
|
158
|
+
*/
|
|
159
|
+
setPrivacyAndSecurityPermission(permission: PrivacyAndSecurityPermission): void;
|
|
160
|
+
/**
|
|
161
|
+
* Resolves event options to the call identity used by Call Diagnostic where possible.
|
|
162
|
+
* @param options client event options
|
|
163
|
+
* @returns the permission history scope
|
|
164
|
+
*/
|
|
165
|
+
private getPermissionScope;
|
|
150
166
|
/**
|
|
151
167
|
* Issue request to alias a user's pre-login ID with their CI UUID
|
|
152
168
|
* @param {string} preLoginId
|