@webex/plugin-meetings 3.0.0-beta.162 → 3.0.0-beta.164

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 (64) hide show
  1. package/dist/breakouts/breakout.js +7 -3
  2. package/dist/breakouts/breakout.js.map +1 -1
  3. package/dist/breakouts/events.js +31 -29
  4. package/dist/breakouts/events.js.map +1 -1
  5. package/dist/breakouts/index.js +4 -2
  6. package/dist/breakouts/index.js.map +1 -1
  7. package/dist/constants.js +2 -4
  8. package/dist/constants.js.map +1 -1
  9. package/dist/interpretation/index.js +1 -1
  10. package/dist/interpretation/siLanguage.js +1 -1
  11. package/dist/locus-info/index.js +33 -17
  12. package/dist/locus-info/index.js.map +1 -1
  13. package/dist/meeting/index.js +699 -682
  14. package/dist/meeting/index.js.map +1 -1
  15. package/dist/meeting/util.js +47 -25
  16. package/dist/meeting/util.js.map +1 -1
  17. package/dist/meeting-info/index.js +48 -7
  18. package/dist/meeting-info/index.js.map +1 -1
  19. package/dist/meeting-info/meeting-info-v2.js +24 -10
  20. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  21. package/dist/meetings/index.js +12 -9
  22. package/dist/meetings/index.js.map +1 -1
  23. package/dist/metrics/index.js +1 -487
  24. package/dist/metrics/index.js.map +1 -1
  25. package/dist/reconnection-manager/index.js +27 -17
  26. package/dist/reconnection-manager/index.js.map +1 -1
  27. package/dist/roap/request.js +20 -14
  28. package/dist/roap/request.js.map +1 -1
  29. package/dist/types/breakouts/events.d.ts +7 -1
  30. package/dist/types/constants.d.ts +0 -1
  31. package/dist/types/meeting/index.d.ts +31 -133
  32. package/dist/types/meeting-info/index.d.ts +6 -1
  33. package/dist/types/meetings/index.d.ts +1 -0
  34. package/dist/types/metrics/index.d.ts +4 -128
  35. package/package.json +19 -19
  36. package/src/breakouts/breakout.ts +10 -2
  37. package/src/breakouts/events.ts +51 -32
  38. package/src/breakouts/index.ts +9 -5
  39. package/src/constants.ts +0 -2
  40. package/src/locus-info/index.ts +35 -17
  41. package/src/meeting/index.ts +474 -536
  42. package/src/meeting/util.ts +42 -19
  43. package/src/meeting-info/index.ts +54 -8
  44. package/src/meeting-info/meeting-info-v2.ts +24 -9
  45. package/src/meetings/index.ts +11 -6
  46. package/src/metrics/index.ts +1 -506
  47. package/src/reconnection-manager/index.ts +27 -17
  48. package/src/roap/request.ts +21 -9
  49. package/test/unit/spec/breakouts/breakout.ts +4 -2
  50. package/test/unit/spec/breakouts/events.ts +24 -18
  51. package/test/unit/spec/locus-info/index.js +112 -0
  52. package/test/unit/spec/meeting/index.js +178 -145
  53. package/test/unit/spec/meeting/utils.js +93 -7
  54. package/test/unit/spec/meeting-info/index.js +181 -0
  55. package/test/unit/spec/meeting-info/meetinginfov2.js +68 -68
  56. package/test/unit/spec/meetings/index.js +35 -55
  57. package/test/unit/spec/metrics/index.js +1 -148
  58. package/test/unit/spec/reconnection-manager/index.js +51 -2
  59. package/test/unit/spec/roap/index.ts +8 -2
  60. package/test/unit/spec/roap/request.ts +43 -5
  61. package/dist/metrics/config.js +0 -335
  62. package/dist/metrics/config.js.map +0 -1
  63. package/dist/types/metrics/config.d.ts +0 -195
  64. package/src/metrics/config.ts +0 -534
@@ -1,3 +1,6 @@
1
+ /*!
2
+ * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
3
+ */
1
4
  /**
2
5
  * @description Metrics handles all the call metrics events
3
6
  * @export
@@ -5,9 +8,6 @@
5
8
  */
6
9
  declare class Metrics {
7
10
  static instance: Metrics;
8
- _events: any;
9
- keys: any;
10
- meetingCollection: any;
11
11
  webex: any;
12
12
  /**
13
13
  * Create Metrics Object
@@ -19,135 +19,11 @@ declare class Metrics {
19
19
  /**
20
20
  * Initializes the Metrics singleton with a meeting Collection.
21
21
  *
22
- * @param {Object} meetingCollection meetings object
23
22
  * @param {Object} webex webex SDK object
24
23
  *
25
24
  * @returns {void}
26
25
  */
27
- initialSetup(meetingCollection: object, webex: object): void;
28
- /**
29
- * poste Meeting event metrics
30
- * @param {object} options {meetingId/meeting} as a json object
31
- * @param {Meeting} options.meeting Meeting object
32
- * @param {String} options.meetingId
33
- * @param {object} options.data
34
- * @param {object} options.event
35
- * @returns {object} null
36
- */
37
- postEvent(options: {
38
- meeting?: any;
39
- meetingId?: string;
40
- data?: object;
41
- event?: any;
42
- } | any): void;
43
- /**
44
- * Docs for Call analyzer metrics
45
- * https://sqbu-github.cisco.com/WebExSquared/call-analyzer/wiki
46
- * https://sqbu-github.cisco.com/WebExSquared/event-dictionary/blob/master/diagnostic-events.raml
47
- */
48
- initPayload(eventType: any, identifiers: any, options: any): any;
49
- /**
50
- * get the payload specific for a media quality event through call analyzer
51
- * @param {String} eventType the event name
52
- * @param {Object} identifiers contains the identifiers needed for CA
53
- * @param {String} identifiers.correlationId
54
- * @param {String} identifiers.locusUrl
55
- * @param {String} identifiers.locusId
56
- * @param {Object} options
57
- * @param {Object} options.intervalData
58
- * @param {String} options.clientType
59
- * @returns {Object}
60
- * @public
61
- * @memberof Metrics
62
- */
63
- initMediaPayload(eventType: string, identifiers: {
64
- correlationId: string;
65
- locusUrl: string;
66
- locusId: string;
67
- }, options?: {
68
- intervalData: object;
69
- clientType: string;
70
- } | any): {
71
- eventId: any;
72
- version: number;
73
- origin: {
74
- audioSetupDelay: any;
75
- videoSetupDelay: any;
76
- name: string;
77
- networkType: any;
78
- userAgent: string;
79
- clientInfo: {
80
- clientType: any;
81
- clientVersion: string;
82
- localNetworkPrefix: string;
83
- os: any;
84
- osVersion: any;
85
- subClientType: any;
86
- browser: any;
87
- browserVersion: any;
88
- };
89
- };
90
- originTime: {
91
- triggered: string;
92
- };
93
- senderCountryCode: any;
94
- event: {
95
- name: string;
96
- canProceed: boolean;
97
- identifiers: {
98
- correlationId: string;
99
- locusUrl: string;
100
- locusId: string;
101
- };
102
- intervals: any[];
103
- joinTimes: any;
104
- eventData: {
105
- webClientDomain: any;
106
- };
107
- sourceMetadata: {
108
- applicationSoftwareType: string;
109
- applicationSoftwareVersion: any;
110
- mediaEngineSoftwareType: any;
111
- mediaEngineSoftwareVersion: any;
112
- startTime: string;
113
- };
114
- };
115
- };
116
- /**
117
- * This function Parses a Locus error and returns a diagnostic event payload.
118
- * It should keep updating from:
119
- * https://sqbu-github.cisco.com/WebExSquared/spark-client-framework/blob/master/spark-client-framework/Adapters/TelephonyAdapter/TelephonyAdapter.cpp#L920
120
- *
121
- * @param {Object} err the error Object from Locus response
122
- * @param {boolean} showToUser true if a toast is shown to user
123
- * @returns {{showToUser: boolean, category: string, errorDescription: string,
124
- * errorCode: number, errorData: *, fatal: boolean, name: string}}
125
- */
126
- parseLocusError(err: any, showToUser: boolean): any;
127
- /**
128
- * Pareses webex api error.
129
- *
130
- * @param {object} err
131
- * @param {boolean} showToUser
132
- * @returns {object | null}
133
- */
134
- parseWebexApiError(err: any, showToUser: boolean): any;
135
- /**
136
- * Generates Error for the CA event
137
- *
138
- * @param {integer} errorCode
139
- * @param {boolean} shownToUser
140
- * @param {string} name
141
- * @param {any} err
142
- * @returns {any}
143
- */
144
- generateErrorPayload(errorCode: any, shownToUser: any, name: any, err: any): any;
145
- /**
146
- * Returns a formated string of the user agent.
147
- *
148
- * @returns {string} formatted user agent information
149
- */
150
- userAgentToString(): string;
26
+ initialSetup(webex: object): void;
151
27
  /**
152
28
  * Uploads given metric to the Metrics service as an Behavioral metric.
153
29
  * Metadata about the environment such as browser, OS, SDK and their versions
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webex/plugin-meetings",
3
- "version": "3.0.0-beta.162",
3
+ "version": "3.0.0-beta.164",
4
4
  "description": "",
5
5
  "license": "Cisco EULA (https://www.cisco.com/c/en/us/products/end-user-license-agreement.html)",
6
6
  "contributors": [
@@ -32,12 +32,12 @@
32
32
  "build": "yarn run -T tsc --declaration true --declarationDir ./dist/types"
33
33
  },
34
34
  "devDependencies": {
35
- "@webex/plugin-meetings": "3.0.0-beta.162",
36
- "@webex/test-helper-chai": "3.0.0-beta.162",
37
- "@webex/test-helper-mocha": "3.0.0-beta.162",
38
- "@webex/test-helper-mock-webex": "3.0.0-beta.162",
39
- "@webex/test-helper-retry": "3.0.0-beta.162",
40
- "@webex/test-helper-test-users": "3.0.0-beta.162",
35
+ "@webex/plugin-meetings": "3.0.0-beta.164",
36
+ "@webex/test-helper-chai": "3.0.0-beta.164",
37
+ "@webex/test-helper-mocha": "3.0.0-beta.164",
38
+ "@webex/test-helper-mock-webex": "3.0.0-beta.164",
39
+ "@webex/test-helper-retry": "3.0.0-beta.164",
40
+ "@webex/test-helper-test-users": "3.0.0-beta.164",
41
41
  "chai": "^4.3.4",
42
42
  "chai-as-promised": "^7.1.1",
43
43
  "jsdom-global": "3.0.2",
@@ -46,19 +46,19 @@
46
46
  "typescript": "^4.7.4"
47
47
  },
48
48
  "dependencies": {
49
- "@webex/common": "3.0.0-beta.162",
49
+ "@webex/common": "3.0.0-beta.164",
50
50
  "@webex/internal-media-core": "1.38.6",
51
- "@webex/internal-plugin-conversation": "3.0.0-beta.162",
52
- "@webex/internal-plugin-device": "3.0.0-beta.162",
53
- "@webex/internal-plugin-llm": "3.0.0-beta.162",
54
- "@webex/internal-plugin-mercury": "3.0.0-beta.162",
55
- "@webex/internal-plugin-metrics": "3.0.0-beta.162",
56
- "@webex/internal-plugin-support": "3.0.0-beta.162",
57
- "@webex/internal-plugin-user": "3.0.0-beta.162",
58
- "@webex/media-helpers": "3.0.0-beta.162",
59
- "@webex/plugin-people": "3.0.0-beta.162",
60
- "@webex/plugin-rooms": "3.0.0-beta.162",
61
- "@webex/webex-core": "3.0.0-beta.162",
51
+ "@webex/internal-plugin-conversation": "3.0.0-beta.164",
52
+ "@webex/internal-plugin-device": "3.0.0-beta.164",
53
+ "@webex/internal-plugin-llm": "3.0.0-beta.164",
54
+ "@webex/internal-plugin-mercury": "3.0.0-beta.164",
55
+ "@webex/internal-plugin-metrics": "3.0.0-beta.164",
56
+ "@webex/internal-plugin-support": "3.0.0-beta.164",
57
+ "@webex/internal-plugin-user": "3.0.0-beta.164",
58
+ "@webex/media-helpers": "3.0.0-beta.164",
59
+ "@webex/plugin-people": "3.0.0-beta.164",
60
+ "@webex/plugin-rooms": "3.0.0-beta.164",
61
+ "@webex/webex-core": "3.0.0-beta.164",
62
62
  "ampersand-collection": "^2.0.2",
63
63
  "bowser": "^2.11.0",
64
64
  "btoa": "^1.2.1",
@@ -65,7 +65,11 @@ const Breakout = WebexPlugin.extend({
65
65
  const deviceUrl = this.webex.internal.device.url;
66
66
  const {meetingId} = this.collection.parent;
67
67
  const meeting = this.webex.meetings.getMeetingByType(_ID_, meetingId);
68
- breakoutEvent.onBreakoutMoveRequest({currentSession: this, meeting, breakoutMoveId});
68
+ breakoutEvent.onBreakoutMoveRequest(
69
+ {currentSession: this, meeting, breakoutMoveId},
70
+ // @ts-ignore
71
+ this.webex.internal.newMetrics.submitClientEvent
72
+ );
69
73
  const result = await this.request({
70
74
  method: HTTP_VERBS.POST,
71
75
  uri: `${this.url}/move`,
@@ -76,7 +80,11 @@ const Breakout = WebexPlugin.extend({
76
80
  sessionId: this.sessionId,
77
81
  },
78
82
  });
79
- breakoutEvent.onBreakoutMoveResponse({currentSession: this, meeting, breakoutMoveId});
83
+ breakoutEvent.onBreakoutMoveResponse(
84
+ {currentSession: this, meeting, breakoutMoveId},
85
+ // @ts-ignore
86
+ this.webex.internal.newMetrics.submitClientEvent
87
+ );
80
88
 
81
89
  return result;
82
90
  },
@@ -1,37 +1,56 @@
1
1
  // eslint-disable-next-line import/prefer-default-export
2
- import Metrics from '../metrics';
3
- import {eventType} from '../metrics/config';
2
+ import {ClientEvent} from '@webex/internal-plugin-metrics';
4
3
 
5
- const breakoutEvent: any = {};
6
-
7
- breakoutEvent.onBreakoutMoveRequest = (eventInfo) => {
8
- breakoutEvent.postMoveCallAnalyzer(eventType.BREAKOUT_MOVE_REQUEST, eventInfo);
9
- };
10
-
11
- breakoutEvent.onBreakoutMoveResponse = (eventInfo) => {
12
- breakoutEvent.postMoveCallAnalyzer(eventType.BREAKOUT_MOVE_RESPONSE, eventInfo);
13
- };
14
-
15
- breakoutEvent.onBreakoutJoinResponse = (eventInfo) => {
16
- breakoutEvent.postMoveCallAnalyzer(eventType.BREAKOUT_JOIN_RESPONSE, eventInfo);
17
- };
18
-
19
- breakoutEvent.postMoveCallAnalyzer = (events: string, eventInfo: any) => {
20
- if (!eventInfo?.breakoutMoveId || !eventInfo?.meeting) {
21
- return;
22
- }
23
- if (!eventInfo.meeting.meetingInfo?.enableConvergedArchitecture) {
24
- return;
25
- }
26
- Metrics.postEvent({
27
- event: events,
28
- meetingId: eventInfo.meeting.id,
29
- data: {
30
- breakoutMoveId: eventInfo.breakoutMoveId,
31
- breakoutSessionId: eventInfo?.currentSession?.sessionId,
32
- breakoutGroupId: eventInfo?.currentSession?.groupId,
33
- },
34
- });
4
+ const breakoutEvent: {
5
+ onBreakoutMoveRequest: (eventInfo: any, submitClientEvent: any) => void;
6
+ onBreakoutMoveResponse: (eventInfo: any, submitClientEvent: any) => void;
7
+ onBreakoutJoinResponse: (eventInfo: any, submitClientEvent: any) => void;
8
+ postMoveCallAnalyzer: (
9
+ event: ClientEvent['name'],
10
+ eventInfo: any,
11
+ submitClientEvent: any
12
+ ) => void;
13
+ } = {
14
+ onBreakoutMoveRequest: (eventInfo, submitClientEvent) => {
15
+ breakoutEvent.postMoveCallAnalyzer(
16
+ 'client.breakout-session.move.request',
17
+ eventInfo,
18
+ submitClientEvent
19
+ );
20
+ },
21
+ onBreakoutMoveResponse: (eventInfo, submitClientEvent) => {
22
+ breakoutEvent.postMoveCallAnalyzer(
23
+ 'client.breakout-session.move.response',
24
+ eventInfo,
25
+ submitClientEvent
26
+ );
27
+ },
28
+ onBreakoutJoinResponse: (eventInfo, submitClientEvent) => {
29
+ breakoutEvent.postMoveCallAnalyzer(
30
+ 'client.breakout-session.join.response',
31
+ eventInfo,
32
+ submitClientEvent
33
+ );
34
+ },
35
+ postMoveCallAnalyzer: (event: ClientEvent['name'], eventInfo: any, submitClientEvent) => {
36
+ if (!eventInfo?.breakoutMoveId || !eventInfo?.meeting) {
37
+ return;
38
+ }
39
+ if (!eventInfo.meeting.meetingInfo?.enableConvergedArchitecture) {
40
+ return;
41
+ }
42
+ submitClientEvent({
43
+ name: event,
44
+ payload: {
45
+ identifiers: {
46
+ breakoutMoveId: eventInfo.breakoutMoveId,
47
+ breakoutSessionId: eventInfo?.currentSession?.sessionId,
48
+ breakoutGroupId: eventInfo?.currentSession?.groupId,
49
+ },
50
+ },
51
+ options: {meetingId: eventInfo.meeting.id},
52
+ });
53
+ },
35
54
  };
36
55
 
37
56
  export default breakoutEvent;
@@ -349,11 +349,15 @@ const Breakouts = WebexPlugin.extend({
349
349
  ) {
350
350
  // should report joined session changed
351
351
  const meeting = this.webex.meetings.getMeetingByType(_ID_, this.meetingId);
352
- breakoutEvent.onBreakoutJoinResponse({
353
- currentSession: this.currentBreakoutSession,
354
- meeting,
355
- breakoutMoveId: params.breakoutMoveId,
356
- });
352
+ breakoutEvent.onBreakoutJoinResponse(
353
+ {
354
+ currentSession: this.currentBreakoutSession,
355
+ meeting,
356
+ breakoutMoveId: params.breakoutMoveId,
357
+ },
358
+ // @ts-ignore
359
+ this.webex.internal.newMetrics.submitClientEvent
360
+ );
357
361
  }
358
362
  },
359
363
 
package/src/constants.ts CHANGED
@@ -1157,8 +1157,6 @@ export const MEDIA_DEVICES = {
1157
1157
  CAMERA: 'camera',
1158
1158
  };
1159
1159
 
1160
- export const METRICS_JOIN_TIMES_MAX_DURATION = 1200000;
1161
-
1162
1160
  export const PSTN_STATUS = {
1163
1161
  JOINED: 'JOINED', // we have provisioned a pstn device, which can be used to connect
1164
1162
  CONNECTED: 'CONNECTED', // user is connected to audio with pstn device
@@ -17,8 +17,6 @@ import {
17
17
  CALL_REMOVED_REASON,
18
18
  RECORDING_STATE,
19
19
  } from '../constants';
20
- import Metrics from '../metrics';
21
- import {eventType} from '../metrics/config';
22
20
  import InfoUtils from './infoUtils';
23
21
  import FullState from './fullState';
24
22
  import SelfUtils from './selfUtils';
@@ -430,10 +428,15 @@ export default class LocusInfo extends EventsScope {
430
428
  LoggerProxy.logger.warn(
431
429
  'Locus-info:index#isMeetingActive --> Call Ended, locus state is inactive.'
432
430
  );
433
- Metrics.postEvent({
434
- event: eventType.REMOTE_ENDED,
435
- meetingId: this.meetingId,
431
+
432
+ // @ts-ignore
433
+ this.webex.internal.newMetrics.submitClientEvent({
434
+ name: 'client.call.remote-ended',
435
+ options: {
436
+ meetingId: this.meetingId,
437
+ },
436
438
  });
439
+
437
440
  this.emitScoped(
438
441
  {
439
442
  file: 'locus-info',
@@ -452,9 +455,12 @@ export default class LocusInfo extends EventsScope {
452
455
  this.parsedLocus.self.state === MEETING_STATE.STATES.NOTIFIED ||
453
456
  this.parsedLocus.self.state === MEETING_STATE.STATES.JOINED)
454
457
  ) {
455
- Metrics.postEvent({
456
- event: eventType.REMOTE_ENDED,
457
- meetingId: this.meetingId,
458
+ // @ts-ignore
459
+ this.webex.internal.newMetrics.submitClientEvent({
460
+ name: 'client.call.remote-ended',
461
+ options: {
462
+ meetingId: this.meetingId,
463
+ },
458
464
  });
459
465
  this.emitScoped(
460
466
  {
@@ -476,10 +482,14 @@ export default class LocusInfo extends EventsScope {
476
482
  partner.state === MEETING_STATE.STATES.NOTIFIED ||
477
483
  partner.state === MEETING_STATE.STATES.IDLE) // Happens when user just joins and adds no Media
478
484
  ) {
479
- Metrics.postEvent({
480
- event: eventType.REMOTE_ENDED,
481
- meetingId: this.meetingId,
485
+ // @ts-ignore
486
+ this.webex.internal.newMetrics.submitClientEvent({
487
+ name: 'client.call.remote-ended',
488
+ options: {
489
+ meetingId: this.meetingId,
490
+ },
482
491
  });
492
+
483
493
  this.emitScoped(
484
494
  {
485
495
  file: 'locus-info',
@@ -502,9 +512,13 @@ export default class LocusInfo extends EventsScope {
502
512
  LoggerProxy.logger.warn(
503
513
  'Locus-info:index#isMeetingActive --> Meeting is ending due to inactive or terminating'
504
514
  );
505
- Metrics.postEvent({
506
- event: eventType.REMOTE_ENDED,
507
- meetingId: this.meetingId,
515
+
516
+ // @ts-ignore
517
+ this.webex.internal.newMetrics.submitClientEvent({
518
+ name: 'client.call.remote-ended',
519
+ options: {
520
+ meetingId: this.meetingId,
521
+ },
508
522
  });
509
523
  this.emitScoped(
510
524
  {
@@ -519,9 +533,13 @@ export default class LocusInfo extends EventsScope {
519
533
  );
520
534
  } else if (this.fullState && this.fullState.removed) {
521
535
  // user has been dropped from a meeting
522
- Metrics.postEvent({
523
- event: eventType.REMOTE_ENDED,
524
- meetingId: this.meetingId,
536
+
537
+ // @ts-ignore
538
+ this.webex.internal.newMetrics.submitClientEvent({
539
+ name: 'client.call.remote-ended',
540
+ options: {
541
+ meetingId: this.meetingId,
542
+ },
525
543
  });
526
544
  this.emitScoped(
527
545
  {