Skip to content

Commit ea3c708

Browse files
committed
feat(internal-plugin-metrics): add business_metrics_wxcc_desktop
1 parent d5445fe commit ea3c708

File tree

3 files changed

+70
-1
lines changed

3 files changed

+70
-1
lines changed

packages/@webex/internal-plugin-metrics/src/business-metrics.ts

+28
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,32 @@ export default class BusinessMetrics extends GenericMetrics {
6262
return this.submitEvent({kind: 'buisness-events:business_metrics -> ', name, event});
6363
}
6464

65+
/**
66+
* Submit a buisness metric to our metrics endpoint, going to the business_metrics_wxcc_desktop table
67+
* all event payload keys are converted into a hex string value
68+
* @param {string} name of the metric
69+
* @param {EventPayload} payload payload of the metric
70+
* @returns {Promise<any>}
71+
*/
72+
private submitWxccDesktopEvent({name, payload}: {name: string; payload: EventPayload}) {
73+
const event = {
74+
type: ['business'],
75+
eventPayload: {
76+
key: name,
77+
client_timestamp: new Date().toISOString(),
78+
appType: 'WxCC Desktop',
79+
indexHint: 'wxccdesktop',
80+
value: {
81+
...this.getContext(),
82+
...this.getBrowserDetails(),
83+
...payload,
84+
},
85+
},
86+
};
87+
88+
return this.submitEvent({kind: 'buisness-events:business_metrics -> ', name, event});
89+
}
90+
6591
/**
6692
* Submit a buisness metric to our metrics endpoint, going to the default business_ucf table
6793
* all event payload keys are converted into a hex string value
@@ -112,6 +138,8 @@ export default class BusinessMetrics extends GenericMetrics {
112138
return this.submitCallEndEvent({payload});
113139
case 'business_metrics':
114140
return this.submitBusinessMetricsEvent({name, payload});
141+
case 'business_metrics_wxcc_desktop':
142+
return this.submitWxccDesktopEvent({name, payload});
115143
case 'business_ucf':
116144
return this.submitDefaultEvent({name, payload});
117145
case 'default':

packages/@webex/internal-plugin-metrics/src/metrics.types.ts

+6-1
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,12 @@ export interface DeviceContext {
169169

170170
export type MetricType = 'behavioral' | 'operational' | 'business';
171171

172-
export type Table = 'wbxapp_callend_metrics' | 'business_metrics' | 'business_ucf' | 'default';
172+
export type Table =
173+
| 'wbxapp_callend_metrics'
174+
| 'business_metrics'
175+
| 'business_ucf'
176+
| 'business_metrics_wxcc_desktop'
177+
| 'default';
173178

174179
type InternalEventPayload = string | number | boolean;
175180
export type EventPayload = Record<string, InternalEventPayload>;

packages/@webex/internal-plugin-metrics/test/unit/spec/business/business-metrics.ts

+36
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,42 @@ describe('internal-plugin-metrics', () => {
181181
assert.isString(requestCalls[0].eventPayload.client_timestamp)
182182
assert.equal(requestCalls[0].eventPayload.client_timestamp, now.toISOString())
183183
});
184+
185+
it('should send correctly shaped business event with table: business_metrics_wxcc_desktop', () => {
186+
const requestCalls = [];
187+
const request = function(arg) { requestCalls.push(arg) }
188+
189+
businessMetrics.clientMetricsBatcher.request = request;
190+
191+
assert.equal(requestCalls.length, 0)
192+
businessMetrics.submitBusinessEvent({ name: "foobar", payload: {bar:"gee"}, table: 'business_metrics_wxcc_desktop' })
193+
assert.equal(requestCalls.length, 1)
194+
assert.deepEqual(requestCalls[0], {
195+
eventPayload: {
196+
key: 'foobar',
197+
appType: 'WxCC Desktop',
198+
indexHint: 'wxccdesktop',
199+
client_timestamp: requestCalls[0].eventPayload.client_timestamp, // This is to bypass time check, which is checked below.
200+
value: {
201+
bar: "gee",
202+
browser: getBrowserName(),
203+
browserHeight: window.innerHeight,
204+
browserVersion: getBrowserVersion(),
205+
browserWidth: window.innerWidth,
206+
domain: window.location.hostname,
207+
inIframe: false,
208+
locale: window.navigator.language,
209+
os: getOSNameInternal(),
210+
app: {version: 'webex-version'},
211+
device: {id: 'deviceId'},
212+
locale: 'language',
213+
}
214+
},
215+
type: ['business'],
216+
});
217+
assert.isString(requestCalls[0].eventPayload.client_timestamp)
218+
assert.equal(requestCalls[0].eventPayload.client_timestamp, now.toISOString())
219+
});
184220
});
185221
})
186222
});

0 commit comments

Comments
 (0)