@webex/internal-plugin-metrics 3.0.0-beta.278 → 3.0.0-beta.279
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/dist/call-diagnostic/call-diagnostic-metrics.util.js +28 -1
- package/dist/call-diagnostic/call-diagnostic-metrics.util.js.map +1 -1
- package/dist/call-diagnostic/config.js +33 -4
- package/dist/call-diagnostic/config.js.map +1 -1
- package/dist/metrics.js +1 -1
- package/dist/types/call-diagnostic/call-diagnostic-metrics.util.d.ts +9 -0
- package/dist/types/call-diagnostic/config.d.ts +78 -0
- package/package.json +8 -8
- package/src/call-diagnostic/call-diagnostic-metrics.util.ts +43 -1
- package/src/call-diagnostic/config.ts +31 -3
- package/test/unit/spec/call-diagnostic/call-diagnostic-metrics.util.ts +24 -0
|
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequ
|
|
|
5
5
|
_Object$defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.userAgentToString = exports.setMetricTimings = exports.prepareDiagnosticMetricItem = exports.isUnauthorizedError = exports.isNetworkError = exports.isMeetingInfoServiceError = exports.isLocusServiceErrorCode = exports.isBrowserMediaErrorName = exports.getBuildType = exports.extractVersionMetadata = exports.clearEmptyKeysRecursively = exports.anonymizeIPAddress = void 0;
|
|
8
|
+
exports.userAgentToString = exports.setMetricTimings = exports.prepareDiagnosticMetricItem = exports.isUnauthorizedError = exports.isNetworkError = exports.isMeetingInfoServiceError = exports.isLocusServiceErrorCode = exports.isBrowserMediaErrorName = exports.getBuildType = exports.generateClientErrorCodeForIceFailure = exports.extractVersionMetadata = exports.clearEmptyKeysRecursively = exports.anonymizeIPAddress = void 0;
|
|
9
9
|
var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
|
|
10
10
|
var _isArray = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/array/is-array"));
|
|
11
11
|
var _assign = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/assign"));
|
|
@@ -306,5 +306,32 @@ var extractVersionMetadata = function extractVersionMetadata(version) {
|
|
|
306
306
|
minorVersion: (0, _parseInt2.default)(minorVersion, 10)
|
|
307
307
|
};
|
|
308
308
|
};
|
|
309
|
+
|
|
310
|
+
/**
|
|
311
|
+
* Generates client error codes for specific ice failures
|
|
312
|
+
* that happen when trying to add media in a meeting.
|
|
313
|
+
*/
|
|
309
314
|
exports.extractVersionMetadata = extractVersionMetadata;
|
|
315
|
+
var generateClientErrorCodeForIceFailure = function generateClientErrorCodeForIceFailure(_ref2) {
|
|
316
|
+
var signalingState = _ref2.signalingState,
|
|
317
|
+
iceConnectionState = _ref2.iceConnectionState,
|
|
318
|
+
turnServerUsed = _ref2.turnServerUsed;
|
|
319
|
+
var errorCode = _config.ICE_FAILURE_CLIENT_CODE; // default;
|
|
320
|
+
|
|
321
|
+
if (signalingState === 'have-local-offer') {
|
|
322
|
+
errorCode = _config.MISSING_ROAP_ANSWER_CLIENT_CODE;
|
|
323
|
+
}
|
|
324
|
+
if (signalingState === 'stable' && iceConnectionState === 'connected') {
|
|
325
|
+
errorCode = _config.DTLS_HANDSHAKE_FAILED_CLIENT_CODE;
|
|
326
|
+
}
|
|
327
|
+
if (signalingState !== 'have-local-offer' && iceConnectionState !== 'connected') {
|
|
328
|
+
if (turnServerUsed) {
|
|
329
|
+
errorCode = _config.ICE_FAILED_WITH_TURN_TLS_CLIENT_CODE;
|
|
330
|
+
} else {
|
|
331
|
+
errorCode = _config.ICE_FAILED_WITHOUT_TURN_TLS_CLIENT_CODE;
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
return errorCode;
|
|
335
|
+
};
|
|
336
|
+
exports.generateClientErrorCodeForIceFailure = generateClientErrorCodeForIceFailure;
|
|
310
337
|
//# sourceMappingURL=call-diagnostic-metrics.util.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["BrowserDetection","getOSName","getOSVersion","getBrowserName","getBrowserVersion","anonymizeIPAddress","localIp","anonymize","userAgentToString","clientName","webexVersion","userAgentOption","browserInfo","clientInfo","util","format","indexOf","toLowerCase","split","osInfo","process","env","NODE_ENV","clearEmptyKeysRecursively","obj","length","forEach","key","filter","x","isLocusServiceErrorCode","errorCode","code","charAt","isMeetingInfoServiceError","rawError","body","data","meetingInfo","url","includes","WBX_APP_API_URL","isNetworkError","WebexHttpError","NetworkOrCORSError","isUnauthorizedError","Unauthorized","isBrowserMediaErrorName","errorName","BROWSER_MEDIA_ERROR_NAME_TO_CLIENT_ERROR_CODES_MAP","getBuildType","webClientDomain","markAsTestEvent","prepareDiagnosticMetricItem","webex","item","origin","buildType","exports","eventPayload","event","eventData","networkType","eventName","name","joinTimes","audioSetupDelay","videoSetupDelay","cdl","internal","newMetrics","callDiagnosticLatencies","meetingInfoReqResp","getMeetingInfoReqResp","clickToInterstitial","getClickToInterstitial","showInterstitialTime","getShowInterstitialTime","callInitJoinReq","getCallInitJoinReq","joinReqResp","getJoinReqResp","joinReqSentReceived","getJoinRespSentReceived","pageJmt","getPageJMT","interstitialToJoinOK","getInterstitialToJoinOK","totalJmt","getTotalJMT","clientJmt","getClientJMT","ICESetupTime","getICESetupTime","audioICESetupTime","getAudioICESetupTime","videoICESetupTime","getVideoICESetupTime","shareICESetupTime","getShareICESetupTime","localSDPGenRemoteSDPRecv","getLocalSDPGenRemoteSDPRecv","totalMediaJMT","getTotalMediaJMT","interstitialToMediaOKJMT","getInterstitialToMediaOKJMT","callInitMediaEngineReady","getCallInitMediaEngineReady","stayLobbyTime","getStayLobbyTime","joinRespRxStart","getAudioJoinRespRxStart","joinRespTxStart","getAudioJoinRespTxStart","getVideoJoinRespRxStart","getVideoJoinRespTxStart","setMetricTimings","options","json","JSON","parse","now","Date","toISOString","metrics","metric","originTime","triggered","sent","extractVersionMetadata","version","majorVersion","minorVersion"],"sources":["call-diagnostic-metrics.util.ts"],"sourcesContent":["/* eslint-disable valid-jsdoc */\nimport anonymize from 'ip-anonymize';\nimport util from 'util';\n\nimport {BrowserDetection} from '@webex/common';\nimport {WebexHttpError} from '@webex/webex-core';\nimport {isEmpty, merge} from 'lodash';\nimport {\n ClientEvent,\n Event,\n MediaQualityEventAudioSetupDelayPayload,\n MediaQualityEventVideoSetupDelayPayload,\n MetricEventNames,\n} from '../metrics.types';\nimport {BROWSER_MEDIA_ERROR_NAME_TO_CLIENT_ERROR_CODES_MAP, WBX_APP_API_URL} from './config';\n\nconst {getOSName, getOSVersion, getBrowserName, getBrowserVersion} = BrowserDetection();\n\nexport const anonymizeIPAddress = (localIp) => anonymize(localIp, 28, 96);\n\n/**\n * Returns a formated string of the user agent.\n *\n * @returns {string} formatted user agent information\n */\nexport const userAgentToString = ({clientName, webexVersion}) => {\n let userAgentOption;\n let browserInfo;\n const clientInfo = util.format('client=%s', `${clientName}`);\n\n if (\n ['chrome', 'firefox', 'msie', 'msedge', 'safari'].indexOf(getBrowserName().toLowerCase()) !== -1\n ) {\n browserInfo = util.format(\n 'browser=%s',\n `${getBrowserName().toLowerCase()}/${getBrowserVersion().split('.')[0]}`\n );\n }\n const osInfo = util.format('os=%s', `${getOSName()}/${getOSVersion().split('.')[0]}`);\n\n if (browserInfo) {\n userAgentOption = `(${browserInfo}`;\n }\n if (osInfo) {\n userAgentOption = userAgentOption\n ? `${userAgentOption}; ${clientInfo}; ${osInfo}`\n : `${clientInfo}; (${osInfo}`;\n }\n if (userAgentOption) {\n userAgentOption += ')';\n\n return util.format(\n 'webex-js-sdk/%s %s',\n `${process.env.NODE_ENV}-${webexVersion}`,\n userAgentOption\n );\n }\n\n return util.format('webex-js-sdk/%s', `${process.env.NODE_ENV}-${webexVersion}`);\n};\n\n/**\n * Iterates object recursively and removes any\n * property that returns isEmpty for it's associated value\n * isEmpty = implementation from Lodash.\n *\n * It modifies the object in place (mutable)\n *\n * @param obj - input\n * @returns\n */\nexport const clearEmptyKeysRecursively = (obj: any) => {\n // Check if the object is empty\n if (Object.keys(obj).length === 0) {\n return;\n }\n\n Object.keys(obj).forEach((key) => {\n if (\n (typeof obj[key] === 'object' || typeof obj[key] === 'string' || Array.isArray(obj[key])) &&\n isEmpty(obj[key])\n ) {\n delete obj[key];\n }\n if (Array.isArray(obj[key])) {\n obj[key] = [...obj[key].filter((x) => !!x)];\n }\n if (typeof obj[key] === 'object') {\n clearEmptyKeysRecursively(obj[key]);\n }\n });\n};\n\n/**\n * Locus error codes start with 2. The next three digits are the\n * HTTP status code related to the error code (like 400, 403, 502, etc.)\n * The remaining three digits are just an increasing integer.\n * If it is 7 digits and starts with a 2, it is locus.\n *\n * @param errorCode\n * @returns {boolean}\n */\nexport const isLocusServiceErrorCode = (errorCode: string | number) => {\n const code = `${errorCode}`;\n\n if (code.length === 7 && code.charAt(0) === '2') {\n return true;\n }\n\n return false;\n};\n\n/**\n * MeetingInfo errors sometimes has body.data.meetingInfo object\n * MeetingInfo errors come with a wbxappapi url\n *\n * @param {Object} rawError\n * @returns {boolean}\n */\nexport const isMeetingInfoServiceError = (rawError: any) => {\n if (rawError.body?.data?.meetingInfo || rawError.body?.url?.includes(WBX_APP_API_URL)) {\n return true;\n }\n\n return false;\n};\n\n/**\n * Returns true if the raw error is a network related error\n *\n * @param {Object} rawError\n * @returns {boolean}\n */\nexport const isNetworkError = (rawError: any) => {\n if (rawError instanceof WebexHttpError.NetworkOrCORSError) {\n return true;\n }\n\n return false;\n};\n\n/**\n * Returns true if the error is an unauthorized error\n *\n * @param {Object} rawError\n * @returns {boolean}\n */\nexport const isUnauthorizedError = (rawError: any) => {\n if (rawError instanceof WebexHttpError.Unauthorized) {\n return true;\n }\n\n return false;\n};\n\n/**\n * MDN Media Devices getUserMedia() method returns a name if it errs\n * Documentation can be found here: https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia\n *\n * @param errorCode\n * @returns\n */\nexport const isBrowserMediaErrorName = (errorName: any) => {\n if (BROWSER_MEDIA_ERROR_NAME_TO_CLIENT_ERROR_CODES_MAP[errorName]) {\n return true;\n }\n\n return false;\n};\n\n/**\n * @param webClientDomain\n * @returns\n */\nexport const getBuildType = (\n webClientDomain,\n markAsTestEvent = false\n): Event['origin']['buildType'] => {\n // used temporary to test pre join in production without creating noise data, SPARK-468456\n if (markAsTestEvent) {\n return 'test';\n }\n\n if (\n webClientDomain?.includes('localhost') ||\n webClientDomain?.includes('127.0.0.1') ||\n process.env.NODE_ENV !== 'production'\n ) {\n return 'test';\n }\n\n return 'prod';\n};\n\n/**\n * Prepare metric item for submission.\n * @param {Object} webex sdk instance\n * @param {Object} item\n * @returns {Object} prepared item\n */\nexport const prepareDiagnosticMetricItem = (webex: any, item: any) => {\n const origin: Partial<Event['origin']> = {\n buildType: exports.getBuildType(\n item.eventPayload?.event?.eventData?.webClientDomain,\n item.eventPayload?.event?.eventData?.markAsTestEvent\n ),\n networkType: 'unknown',\n };\n\n // check event names and append latencies?\n const eventName = item.eventPayload?.event?.name as MetricEventNames;\n const joinTimes: ClientEvent['payload']['joinTimes'] = {};\n const audioSetupDelay: MediaQualityEventAudioSetupDelayPayload = {};\n const videoSetupDelay: MediaQualityEventVideoSetupDelayPayload = {};\n\n const cdl = webex.internal.newMetrics.callDiagnosticLatencies;\n\n switch (eventName) {\n case 'client.interstitial-window.launched':\n joinTimes.meetingInfoReqResp = cdl.getMeetingInfoReqResp();\n joinTimes.clickToInterstitial = cdl.getClickToInterstitial();\n break;\n\n case 'client.call.initiated':\n joinTimes.meetingInfoReqResp = cdl.getMeetingInfoReqResp();\n joinTimes.showInterstitialTime = cdl.getShowInterstitialTime();\n break;\n\n case 'client.locus.join.response':\n joinTimes.meetingInfoReqResp = cdl.getMeetingInfoReqResp();\n joinTimes.callInitJoinReq = cdl.getCallInitJoinReq();\n joinTimes.joinReqResp = cdl.getJoinReqResp();\n joinTimes.joinReqSentReceived = cdl.getJoinRespSentReceived();\n joinTimes.pageJmt = cdl.getPageJMT();\n joinTimes.clickToInterstitial = cdl.getClickToInterstitial();\n joinTimes.interstitialToJoinOK = cdl.getInterstitialToJoinOK();\n joinTimes.totalJmt = cdl.getTotalJMT();\n joinTimes.clientJmt = cdl.getClientJMT();\n break;\n\n case 'client.ice.end':\n joinTimes.ICESetupTime = cdl.getICESetupTime();\n joinTimes.audioICESetupTime = cdl.getAudioICESetupTime();\n joinTimes.videoICESetupTime = cdl.getVideoICESetupTime();\n joinTimes.shareICESetupTime = cdl.getShareICESetupTime();\n break;\n\n case 'client.media.rx.start':\n joinTimes.localSDPGenRemoteSDPRecv = cdl.getLocalSDPGenRemoteSDPRecv();\n break;\n\n case 'client.media-engine.ready':\n joinTimes.totalMediaJMT = cdl.getTotalMediaJMT();\n joinTimes.interstitialToMediaOKJMT = cdl.getInterstitialToMediaOKJMT();\n joinTimes.callInitMediaEngineReady = cdl.getCallInitMediaEngineReady();\n joinTimes.stayLobbyTime = cdl.getStayLobbyTime();\n break;\n\n case 'client.mediaquality.event':\n audioSetupDelay.joinRespRxStart = cdl.getAudioJoinRespRxStart();\n audioSetupDelay.joinRespTxStart = cdl.getAudioJoinRespTxStart();\n videoSetupDelay.joinRespRxStart = cdl.getVideoJoinRespRxStart();\n videoSetupDelay.joinRespTxStart = cdl.getVideoJoinRespTxStart();\n }\n\n if (!isEmpty(joinTimes)) {\n item.eventPayload.event = merge(item.eventPayload.event, {joinTimes});\n }\n\n if (!isEmpty(audioSetupDelay)) {\n item.eventPayload.event = merge(item.eventPayload.event, {audioSetupDelay});\n }\n\n if (!isEmpty(videoSetupDelay)) {\n item.eventPayload.event = merge(item.eventPayload.event, {videoSetupDelay});\n }\n\n item.eventPayload.origin = Object.assign(origin, item.eventPayload.origin);\n\n return item;\n};\n\n/**\n * Sets the originTime value(s) before the request/fetch.\n * This function is only useful if you are about to submit a metrics\n * request using pre-built fetch options;\n *\n * @param {any} options\n * @returns {any} the updated options object\n */\nexport const setMetricTimings = (options) => {\n if (options.body && options.json) {\n const body = JSON.parse(options.body);\n\n const now = new Date().toISOString();\n body.metrics?.forEach((metric) => {\n if (metric.eventPayload) {\n // The event will effectively be triggered and sent at the same time.\n // The existing triggered time is from when the options were built.\n metric.eventPayload.originTime = {\n triggered: now,\n sent: now,\n };\n }\n });\n options.body = JSON.stringify(body);\n }\n\n return options;\n};\n\nexport const extractVersionMetadata = (version: string) => {\n // extract major and minor version\n const [majorVersion, minorVersion] = version.split('.');\n\n return {\n majorVersion: parseInt(majorVersion, 10),\n minorVersion: parseInt(minorVersion, 10),\n };\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["BrowserDetection","getOSName","getOSVersion","getBrowserName","getBrowserVersion","anonymizeIPAddress","localIp","anonymize","userAgentToString","clientName","webexVersion","userAgentOption","browserInfo","clientInfo","util","format","indexOf","toLowerCase","split","osInfo","process","env","NODE_ENV","clearEmptyKeysRecursively","obj","length","forEach","key","filter","x","isLocusServiceErrorCode","errorCode","code","charAt","isMeetingInfoServiceError","rawError","body","data","meetingInfo","url","includes","WBX_APP_API_URL","isNetworkError","WebexHttpError","NetworkOrCORSError","isUnauthorizedError","Unauthorized","isBrowserMediaErrorName","errorName","BROWSER_MEDIA_ERROR_NAME_TO_CLIENT_ERROR_CODES_MAP","getBuildType","webClientDomain","markAsTestEvent","prepareDiagnosticMetricItem","webex","item","origin","buildType","exports","eventPayload","event","eventData","networkType","eventName","name","joinTimes","audioSetupDelay","videoSetupDelay","cdl","internal","newMetrics","callDiagnosticLatencies","meetingInfoReqResp","getMeetingInfoReqResp","clickToInterstitial","getClickToInterstitial","showInterstitialTime","getShowInterstitialTime","callInitJoinReq","getCallInitJoinReq","joinReqResp","getJoinReqResp","joinReqSentReceived","getJoinRespSentReceived","pageJmt","getPageJMT","interstitialToJoinOK","getInterstitialToJoinOK","totalJmt","getTotalJMT","clientJmt","getClientJMT","ICESetupTime","getICESetupTime","audioICESetupTime","getAudioICESetupTime","videoICESetupTime","getVideoICESetupTime","shareICESetupTime","getShareICESetupTime","localSDPGenRemoteSDPRecv","getLocalSDPGenRemoteSDPRecv","totalMediaJMT","getTotalMediaJMT","interstitialToMediaOKJMT","getInterstitialToMediaOKJMT","callInitMediaEngineReady","getCallInitMediaEngineReady","stayLobbyTime","getStayLobbyTime","joinRespRxStart","getAudioJoinRespRxStart","joinRespTxStart","getAudioJoinRespTxStart","getVideoJoinRespRxStart","getVideoJoinRespTxStart","setMetricTimings","options","json","JSON","parse","now","Date","toISOString","metrics","metric","originTime","triggered","sent","extractVersionMetadata","version","majorVersion","minorVersion","generateClientErrorCodeForIceFailure","signalingState","iceConnectionState","turnServerUsed","ICE_FAILURE_CLIENT_CODE","MISSING_ROAP_ANSWER_CLIENT_CODE","DTLS_HANDSHAKE_FAILED_CLIENT_CODE","ICE_FAILED_WITH_TURN_TLS_CLIENT_CODE","ICE_FAILED_WITHOUT_TURN_TLS_CLIENT_CODE"],"sources":["call-diagnostic-metrics.util.ts"],"sourcesContent":["/* eslint-disable valid-jsdoc */\nimport anonymize from 'ip-anonymize';\nimport util from 'util';\n\nimport {BrowserDetection} from '@webex/common';\nimport {WebexHttpError} from '@webex/webex-core';\nimport {isEmpty, merge} from 'lodash';\nimport {\n ClientEvent,\n Event,\n MediaQualityEventAudioSetupDelayPayload,\n MediaQualityEventVideoSetupDelayPayload,\n MetricEventNames,\n} from '../metrics.types';\nimport {\n BROWSER_MEDIA_ERROR_NAME_TO_CLIENT_ERROR_CODES_MAP,\n DTLS_HANDSHAKE_FAILED_CLIENT_CODE,\n ICE_FAILED_WITHOUT_TURN_TLS_CLIENT_CODE,\n ICE_FAILED_WITH_TURN_TLS_CLIENT_CODE,\n ICE_FAILURE_CLIENT_CODE,\n MISSING_ROAP_ANSWER_CLIENT_CODE,\n WBX_APP_API_URL,\n} from './config';\n\nconst {getOSName, getOSVersion, getBrowserName, getBrowserVersion} = BrowserDetection();\n\nexport const anonymizeIPAddress = (localIp) => anonymize(localIp, 28, 96);\n\n/**\n * Returns a formated string of the user agent.\n *\n * @returns {string} formatted user agent information\n */\nexport const userAgentToString = ({clientName, webexVersion}) => {\n let userAgentOption;\n let browserInfo;\n const clientInfo = util.format('client=%s', `${clientName}`);\n\n if (\n ['chrome', 'firefox', 'msie', 'msedge', 'safari'].indexOf(getBrowserName().toLowerCase()) !== -1\n ) {\n browserInfo = util.format(\n 'browser=%s',\n `${getBrowserName().toLowerCase()}/${getBrowserVersion().split('.')[0]}`\n );\n }\n const osInfo = util.format('os=%s', `${getOSName()}/${getOSVersion().split('.')[0]}`);\n\n if (browserInfo) {\n userAgentOption = `(${browserInfo}`;\n }\n if (osInfo) {\n userAgentOption = userAgentOption\n ? `${userAgentOption}; ${clientInfo}; ${osInfo}`\n : `${clientInfo}; (${osInfo}`;\n }\n if (userAgentOption) {\n userAgentOption += ')';\n\n return util.format(\n 'webex-js-sdk/%s %s',\n `${process.env.NODE_ENV}-${webexVersion}`,\n userAgentOption\n );\n }\n\n return util.format('webex-js-sdk/%s', `${process.env.NODE_ENV}-${webexVersion}`);\n};\n\n/**\n * Iterates object recursively and removes any\n * property that returns isEmpty for it's associated value\n * isEmpty = implementation from Lodash.\n *\n * It modifies the object in place (mutable)\n *\n * @param obj - input\n * @returns\n */\nexport const clearEmptyKeysRecursively = (obj: any) => {\n // Check if the object is empty\n if (Object.keys(obj).length === 0) {\n return;\n }\n\n Object.keys(obj).forEach((key) => {\n if (\n (typeof obj[key] === 'object' || typeof obj[key] === 'string' || Array.isArray(obj[key])) &&\n isEmpty(obj[key])\n ) {\n delete obj[key];\n }\n if (Array.isArray(obj[key])) {\n obj[key] = [...obj[key].filter((x) => !!x)];\n }\n if (typeof obj[key] === 'object') {\n clearEmptyKeysRecursively(obj[key]);\n }\n });\n};\n\n/**\n * Locus error codes start with 2. The next three digits are the\n * HTTP status code related to the error code (like 400, 403, 502, etc.)\n * The remaining three digits are just an increasing integer.\n * If it is 7 digits and starts with a 2, it is locus.\n *\n * @param errorCode\n * @returns {boolean}\n */\nexport const isLocusServiceErrorCode = (errorCode: string | number) => {\n const code = `${errorCode}`;\n\n if (code.length === 7 && code.charAt(0) === '2') {\n return true;\n }\n\n return false;\n};\n\n/**\n * MeetingInfo errors sometimes has body.data.meetingInfo object\n * MeetingInfo errors come with a wbxappapi url\n *\n * @param {Object} rawError\n * @returns {boolean}\n */\nexport const isMeetingInfoServiceError = (rawError: any) => {\n if (rawError.body?.data?.meetingInfo || rawError.body?.url?.includes(WBX_APP_API_URL)) {\n return true;\n }\n\n return false;\n};\n\n/**\n * Returns true if the raw error is a network related error\n *\n * @param {Object} rawError\n * @returns {boolean}\n */\nexport const isNetworkError = (rawError: any) => {\n if (rawError instanceof WebexHttpError.NetworkOrCORSError) {\n return true;\n }\n\n return false;\n};\n\n/**\n * Returns true if the error is an unauthorized error\n *\n * @param {Object} rawError\n * @returns {boolean}\n */\nexport const isUnauthorizedError = (rawError: any) => {\n if (rawError instanceof WebexHttpError.Unauthorized) {\n return true;\n }\n\n return false;\n};\n\n/**\n * MDN Media Devices getUserMedia() method returns a name if it errs\n * Documentation can be found here: https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia\n *\n * @param errorCode\n * @returns\n */\nexport const isBrowserMediaErrorName = (errorName: any) => {\n if (BROWSER_MEDIA_ERROR_NAME_TO_CLIENT_ERROR_CODES_MAP[errorName]) {\n return true;\n }\n\n return false;\n};\n\n/**\n * @param webClientDomain\n * @returns\n */\nexport const getBuildType = (\n webClientDomain,\n markAsTestEvent = false\n): Event['origin']['buildType'] => {\n // used temporary to test pre join in production without creating noise data, SPARK-468456\n if (markAsTestEvent) {\n return 'test';\n }\n\n if (\n webClientDomain?.includes('localhost') ||\n webClientDomain?.includes('127.0.0.1') ||\n process.env.NODE_ENV !== 'production'\n ) {\n return 'test';\n }\n\n return 'prod';\n};\n\n/**\n * Prepare metric item for submission.\n * @param {Object} webex sdk instance\n * @param {Object} item\n * @returns {Object} prepared item\n */\nexport const prepareDiagnosticMetricItem = (webex: any, item: any) => {\n const origin: Partial<Event['origin']> = {\n buildType: exports.getBuildType(\n item.eventPayload?.event?.eventData?.webClientDomain,\n item.eventPayload?.event?.eventData?.markAsTestEvent\n ),\n networkType: 'unknown',\n };\n\n // check event names and append latencies?\n const eventName = item.eventPayload?.event?.name as MetricEventNames;\n const joinTimes: ClientEvent['payload']['joinTimes'] = {};\n const audioSetupDelay: MediaQualityEventAudioSetupDelayPayload = {};\n const videoSetupDelay: MediaQualityEventVideoSetupDelayPayload = {};\n\n const cdl = webex.internal.newMetrics.callDiagnosticLatencies;\n\n switch (eventName) {\n case 'client.interstitial-window.launched':\n joinTimes.meetingInfoReqResp = cdl.getMeetingInfoReqResp();\n joinTimes.clickToInterstitial = cdl.getClickToInterstitial();\n break;\n\n case 'client.call.initiated':\n joinTimes.meetingInfoReqResp = cdl.getMeetingInfoReqResp();\n joinTimes.showInterstitialTime = cdl.getShowInterstitialTime();\n break;\n\n case 'client.locus.join.response':\n joinTimes.meetingInfoReqResp = cdl.getMeetingInfoReqResp();\n joinTimes.callInitJoinReq = cdl.getCallInitJoinReq();\n joinTimes.joinReqResp = cdl.getJoinReqResp();\n joinTimes.joinReqSentReceived = cdl.getJoinRespSentReceived();\n joinTimes.pageJmt = cdl.getPageJMT();\n joinTimes.clickToInterstitial = cdl.getClickToInterstitial();\n joinTimes.interstitialToJoinOK = cdl.getInterstitialToJoinOK();\n joinTimes.totalJmt = cdl.getTotalJMT();\n joinTimes.clientJmt = cdl.getClientJMT();\n break;\n\n case 'client.ice.end':\n joinTimes.ICESetupTime = cdl.getICESetupTime();\n joinTimes.audioICESetupTime = cdl.getAudioICESetupTime();\n joinTimes.videoICESetupTime = cdl.getVideoICESetupTime();\n joinTimes.shareICESetupTime = cdl.getShareICESetupTime();\n break;\n\n case 'client.media.rx.start':\n joinTimes.localSDPGenRemoteSDPRecv = cdl.getLocalSDPGenRemoteSDPRecv();\n break;\n\n case 'client.media-engine.ready':\n joinTimes.totalMediaJMT = cdl.getTotalMediaJMT();\n joinTimes.interstitialToMediaOKJMT = cdl.getInterstitialToMediaOKJMT();\n joinTimes.callInitMediaEngineReady = cdl.getCallInitMediaEngineReady();\n joinTimes.stayLobbyTime = cdl.getStayLobbyTime();\n break;\n\n case 'client.mediaquality.event':\n audioSetupDelay.joinRespRxStart = cdl.getAudioJoinRespRxStart();\n audioSetupDelay.joinRespTxStart = cdl.getAudioJoinRespTxStart();\n videoSetupDelay.joinRespRxStart = cdl.getVideoJoinRespRxStart();\n videoSetupDelay.joinRespTxStart = cdl.getVideoJoinRespTxStart();\n }\n\n if (!isEmpty(joinTimes)) {\n item.eventPayload.event = merge(item.eventPayload.event, {joinTimes});\n }\n\n if (!isEmpty(audioSetupDelay)) {\n item.eventPayload.event = merge(item.eventPayload.event, {audioSetupDelay});\n }\n\n if (!isEmpty(videoSetupDelay)) {\n item.eventPayload.event = merge(item.eventPayload.event, {videoSetupDelay});\n }\n\n item.eventPayload.origin = Object.assign(origin, item.eventPayload.origin);\n\n return item;\n};\n\n/**\n * Sets the originTime value(s) before the request/fetch.\n * This function is only useful if you are about to submit a metrics\n * request using pre-built fetch options;\n *\n * @param {any} options\n * @returns {any} the updated options object\n */\nexport const setMetricTimings = (options) => {\n if (options.body && options.json) {\n const body = JSON.parse(options.body);\n\n const now = new Date().toISOString();\n body.metrics?.forEach((metric) => {\n if (metric.eventPayload) {\n // The event will effectively be triggered and sent at the same time.\n // The existing triggered time is from when the options were built.\n metric.eventPayload.originTime = {\n triggered: now,\n sent: now,\n };\n }\n });\n options.body = JSON.stringify(body);\n }\n\n return options;\n};\n\nexport const extractVersionMetadata = (version: string) => {\n // extract major and minor version\n const [majorVersion, minorVersion] = version.split('.');\n\n return {\n majorVersion: parseInt(majorVersion, 10),\n minorVersion: parseInt(minorVersion, 10),\n };\n};\n\n/**\n * Generates client error codes for specific ice failures\n * that happen when trying to add media in a meeting.\n */\nexport const generateClientErrorCodeForIceFailure = ({\n signalingState,\n iceConnectionState,\n turnServerUsed,\n}: {\n signalingState: RTCPeerConnection['signalingState'];\n iceConnectionState: RTCPeerConnection['iceConnectionState'];\n turnServerUsed: boolean;\n}) => {\n let errorCode = ICE_FAILURE_CLIENT_CODE; // default;\n\n if (signalingState === 'have-local-offer') {\n errorCode = MISSING_ROAP_ANSWER_CLIENT_CODE;\n }\n\n if (signalingState === 'stable' && iceConnectionState === 'connected') {\n errorCode = DTLS_HANDSHAKE_FAILED_CLIENT_CODE;\n }\n\n if (signalingState !== 'have-local-offer' && iceConnectionState !== 'connected') {\n if (turnServerUsed) {\n errorCode = ICE_FAILED_WITH_TURN_TLS_CLIENT_CODE;\n } else {\n errorCode = ICE_FAILED_WITHOUT_TURN_TLS_CLIENT_CODE;\n }\n }\n\n return errorCode;\n};\n"],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequ
|
|
|
5
5
|
_Object$defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.WBX_APP_API_URL = exports.UNKNOWN_ERROR = exports.SERVICE_ERROR_CODES_TO_CLIENT_ERROR_CODES_MAP = exports.NEW_LOCUS_ERROR_CLIENT_CODE = exports.NETWORK_ERROR = exports.MEETING_INFO_LOOKUP_ERROR_CLIENT_CODE = exports.ICE_FAILURE_CLIENT_CODE = exports.CLIENT_ERROR_CODE_TO_ERROR_PAYLOAD = exports.CALL_DIAGNOSTIC_LOG_IDENTIFIER = exports.CALL_DIAGNOSTIC_EVENT_FAILED_TO_SEND = exports.BROWSER_MEDIA_ERROR_NAME_TO_CLIENT_ERROR_CODES_MAP = exports.AUTHENTICATION_FAILED_CODE = void 0;
|
|
8
|
+
exports.WBX_APP_API_URL = exports.UNKNOWN_ERROR = exports.SERVICE_ERROR_CODES_TO_CLIENT_ERROR_CODES_MAP = exports.NEW_LOCUS_ERROR_CLIENT_CODE = exports.NETWORK_ERROR = exports.MISSING_ROAP_ANSWER_CLIENT_CODE = exports.MEETING_INFO_LOOKUP_ERROR_CLIENT_CODE = exports.ICE_FAILURE_CLIENT_CODE = exports.ICE_FAILED_WITH_TURN_TLS_CLIENT_CODE = exports.ICE_FAILED_WITHOUT_TURN_TLS_CLIENT_CODE = exports.ERROR_DESCRIPTIONS = exports.DTLS_HANDSHAKE_FAILED_CLIENT_CODE = exports.CLIENT_ERROR_CODE_TO_ERROR_PAYLOAD = exports.CALL_DIAGNOSTIC_LOG_IDENTIFIER = exports.CALL_DIAGNOSTIC_EVENT_FAILED_TO_SEND = exports.BROWSER_MEDIA_ERROR_NAME_TO_CLIENT_ERROR_CODES_MAP = exports.AUTHENTICATION_FAILED_CODE = void 0;
|
|
9
9
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
10
10
|
var _BROWSER_MEDIA_ERROR_, _CLIENT_ERROR_CODE_TO;
|
|
11
11
|
/* eslint-disable import/prefer-default-export */
|
|
@@ -26,6 +26,14 @@ var UNKNOWN_ERROR = 9999; // Unexpected error that is not a meetingInfo error, l
|
|
|
26
26
|
exports.UNKNOWN_ERROR = UNKNOWN_ERROR;
|
|
27
27
|
var ICE_FAILURE_CLIENT_CODE = 2004;
|
|
28
28
|
exports.ICE_FAILURE_CLIENT_CODE = ICE_FAILURE_CLIENT_CODE;
|
|
29
|
+
var MISSING_ROAP_ANSWER_CLIENT_CODE = 2007;
|
|
30
|
+
exports.MISSING_ROAP_ANSWER_CLIENT_CODE = MISSING_ROAP_ANSWER_CLIENT_CODE;
|
|
31
|
+
var DTLS_HANDSHAKE_FAILED_CLIENT_CODE = 2008;
|
|
32
|
+
exports.DTLS_HANDSHAKE_FAILED_CLIENT_CODE = DTLS_HANDSHAKE_FAILED_CLIENT_CODE;
|
|
33
|
+
var ICE_FAILED_WITH_TURN_TLS_CLIENT_CODE = 2010;
|
|
34
|
+
exports.ICE_FAILED_WITH_TURN_TLS_CLIENT_CODE = ICE_FAILED_WITH_TURN_TLS_CLIENT_CODE;
|
|
35
|
+
var ICE_FAILED_WITHOUT_TURN_TLS_CLIENT_CODE = 2009;
|
|
36
|
+
exports.ICE_FAILED_WITHOUT_TURN_TLS_CLIENT_CODE = ICE_FAILED_WITHOUT_TURN_TLS_CLIENT_CODE;
|
|
29
37
|
var WBX_APP_API_URL = 'wbxappapi'; // MeetingInfo WebexAppApi response object normally contains a body.url that includes the string 'wbxappapi'
|
|
30
38
|
|
|
31
39
|
// Found in https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia
|
|
@@ -110,8 +118,13 @@ var ERROR_DESCRIPTIONS = {
|
|
|
110
118
|
FRAUD_DETECTION: 'FraudDetection',
|
|
111
119
|
E2EE_NOT_SUPPORTED: 'E2EENotSupported',
|
|
112
120
|
LOCUS_LOBBY_FULL_CMR: 'LocusLobbyFullCMR',
|
|
113
|
-
USER_NOT_INVITED_TO_JOIN: 'UserNotInvitedToJoin'
|
|
121
|
+
USER_NOT_INVITED_TO_JOIN: 'UserNotInvitedToJoin',
|
|
122
|
+
MISSING_ROAP_ANSWER: 'MissingRoapAnswer',
|
|
123
|
+
DTLS_HANDSHAKE_FAILED: 'DTLSHandshakeFailed',
|
|
124
|
+
ICE_FAILED_WITHOUT_TURN_TLS: 'ICEFailedWithoutTURN_TLS',
|
|
125
|
+
ICE_FAILED_WITH_TURN_TLS: 'ICEFailedWithTURN_TLS'
|
|
114
126
|
};
|
|
127
|
+
exports.ERROR_DESCRIPTIONS = ERROR_DESCRIPTIONS;
|
|
115
128
|
var SERVICE_ERROR_CODES_TO_CLIENT_ERROR_CODES_MAP = {
|
|
116
129
|
// ---- Webex API ----
|
|
117
130
|
// Taken from https://wiki.cisco.com/display/HFWEB/MeetingInfo+API and https://sqbu-github.cisco.com/WebExSquared/spark-client-framework/blob/master/spark-client-framework/Services/WebexMeetingService/WebexMeetingModel.h
|
|
@@ -337,9 +350,9 @@ var CLIENT_ERROR_CODE_TO_ERROR_PAYLOAD = (_CLIENT_ERROR_CODE_TO = {
|
|
|
337
350
|
errorDescription: ERROR_DESCRIPTIONS.MEDIA_CONNECTION_LOST,
|
|
338
351
|
category: 'signaling',
|
|
339
352
|
fatal: true
|
|
340
|
-
}), (0, _defineProperty2.default)(_CLIENT_ERROR_CODE_TO,
|
|
353
|
+
}), (0, _defineProperty2.default)(_CLIENT_ERROR_CODE_TO, ICE_FAILURE_CLIENT_CODE, {
|
|
341
354
|
errorDescription: ERROR_DESCRIPTIONS.ICE_FAILURE,
|
|
342
|
-
category: '
|
|
355
|
+
category: 'media',
|
|
343
356
|
fatal: true
|
|
344
357
|
}), (0, _defineProperty2.default)(_CLIENT_ERROR_CODE_TO, 2005, {
|
|
345
358
|
errorDescription: ERROR_DESCRIPTIONS.MEDIA_ENGINE_HANG,
|
|
@@ -349,6 +362,22 @@ var CLIENT_ERROR_CODE_TO_ERROR_PAYLOAD = (_CLIENT_ERROR_CODE_TO = {
|
|
|
349
362
|
errorDescription: ERROR_DESCRIPTIONS.ICE_SERVER_REJECTED,
|
|
350
363
|
category: 'signaling',
|
|
351
364
|
fatal: true
|
|
365
|
+
}), (0, _defineProperty2.default)(_CLIENT_ERROR_CODE_TO, MISSING_ROAP_ANSWER_CLIENT_CODE, {
|
|
366
|
+
errorDescription: ERROR_DESCRIPTIONS.MISSING_ROAP_ANSWER,
|
|
367
|
+
category: 'signaling',
|
|
368
|
+
fatal: true
|
|
369
|
+
}), (0, _defineProperty2.default)(_CLIENT_ERROR_CODE_TO, DTLS_HANDSHAKE_FAILED_CLIENT_CODE, {
|
|
370
|
+
errorDescription: ERROR_DESCRIPTIONS.DTLS_HANDSHAKE_FAILED,
|
|
371
|
+
category: 'media',
|
|
372
|
+
fatal: true
|
|
373
|
+
}), (0, _defineProperty2.default)(_CLIENT_ERROR_CODE_TO, ICE_FAILED_WITHOUT_TURN_TLS_CLIENT_CODE, {
|
|
374
|
+
errorDescription: ERROR_DESCRIPTIONS.ICE_FAILED_WITHOUT_TURN_TLS,
|
|
375
|
+
category: 'media',
|
|
376
|
+
fatal: true
|
|
377
|
+
}), (0, _defineProperty2.default)(_CLIENT_ERROR_CODE_TO, ICE_FAILED_WITH_TURN_TLS_CLIENT_CODE, {
|
|
378
|
+
errorDescription: ERROR_DESCRIPTIONS.ICE_FAILED_WITH_TURN_TLS,
|
|
379
|
+
category: 'media',
|
|
380
|
+
fatal: true
|
|
352
381
|
}), (0, _defineProperty2.default)(_CLIENT_ERROR_CODE_TO, 3001, {
|
|
353
382
|
errorDescription: ERROR_DESCRIPTIONS.CALL_FULL,
|
|
354
383
|
category: 'expected',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["CALL_DIAGNOSTIC_LOG_IDENTIFIER","AUTHENTICATION_FAILED_CODE","NETWORK_ERROR","NEW_LOCUS_ERROR_CLIENT_CODE","MEETING_INFO_LOOKUP_ERROR_CLIENT_CODE","UNKNOWN_ERROR","ICE_FAILURE_CLIENT_CODE","WBX_APP_API_URL","BROWSER_MEDIA_ERROR_NAMES","PERMISSION_DENIED_ERROR","NOT_ALLOWED_ERROR","NOT_READABLE_ERROR","ABORT_ERROR","NOT_FOUND_ERROR","OVERCONSTRAINED_ERROR","SECURITY_ERROR","TYPE_ERROR","BROWSER_MEDIA_ERROR_NAME_TO_CLIENT_ERROR_CODES_MAP","ERROR_DESCRIPTIONS","UNKNOWN_CALL_FAILURE","LOCUS_RATE_LIMITED_INCOMING","LOCUS_RATE_LIMITED_OUTGOING","LOCUS_UNAVAILABLE","LOCUS_CONFLICT","TIMEOUT","LOCUS_INVALID_SEQUENCE_HASH","AUTHENTICATION_FAILED","UPDATE_MEDIA_FAILED","FAILED_TO_CONNECT_MEDIA","MEDIA_ENGINE_LOST","MEDIA_CONNECTION_LOST","ICE_FAILURE","MEDIA_ENGINE_HANG","ICE_SERVER_REJECTED","CALL_FULL","ROOM_TOO_LARGE","GUEST_ALREADY_ADDED","LOCUS_USER_NOT_AUTHORISED","CLOUDBERRY_UNAVAILABLE","ROOM_TOO_LARGE_FREE_ACCOUNT","MEETING_INACTIVE","MEETING_LOCKED","MEETING_TERMINATING","MODERATOR_PIN_OR_GUEST_REQUIRED","MODERATOR_PIN_OR_GUEST_PIN_REQUIRED","MODERATOR_REQUIRED","USER_NOT_MEMBER_OF_ROOM","NEW_LOCUS_ERROR","NETWORK_UNAVAILABLE","MEETING_UNAVAILABLE","MEETING_ID_INVALID","MEETING_SITE_INVALID","LOCUS_INVALID_JOINTIME","LOBBY_EXPIRED","MEDIA_CONNECTION_LOST_PAIRED","PHONE_NUMBER_NOT_A_NUMBER","PHONE_NUMBER_TOO_LONG","INVALID_DIALABLE_KEY","ONE_ON_ONE_TO_SELF_NOT_ALLOWED","REMOVED_PARTICIPANT","MEETING_LINK_NOT_FOUND","PHONE_NUMBER_TOO_SHORT_AFTER_IDD","INVALID_INVITEE_ADDRESS","PMR_USER_ACCOUNT_LOCKED_OUT","GUEST_FORBIDDEN","PMR_ACCOUNT_SUSPENDED","EMPTY_PHONE_NUMBER_OR_COUNTRY_CODE","CONVERSATION_NOT_FOUND","SIP_CALLEE_BUSY","SIP_CALLEE_NOT_FOUND","START_RECORDING_FAILED","RECORDING_IN_PROGRESS_FAILED","MEETING_INFO_LOOKUP_ERROR","CALL_FULL_ADD_GUEST","REQUIRE_WEBEX_LOGIN","USER_NOT_ALLOWED_ACCESS_MEETING","USER_NEEDS_ACTIVATION","SIGN_UP_INVALID_EMAIL","NO_MEDIA_FOUND","STREAM_ERROR_NO_MEDIA","CAMERA_PERMISSION_DENIED","FRAUD_DETECTION","E2EE_NOT_SUPPORTED","LOCUS_LOBBY_FULL_CMR","USER_NOT_INVITED_TO_JOIN","SERVICE_ERROR_CODES_TO_CLIENT_ERROR_CODES_MAP","CLIENT_ERROR_CODE_TO_ERROR_PAYLOAD","errorDescription","category","fatal","name","shownToUser","CALL_DIAGNOSTIC_EVENT_FAILED_TO_SEND"],"sources":["config.ts"],"sourcesContent":["/* eslint-disable import/prefer-default-export */\n// Most client error codes are mapped based on\n// https://sqbu-github.cisco.com/WebExSquared/event-dictionary/wiki/Error-codes-for-metric-events\n\nimport {ClientEventError} from '../metrics.types';\n\nexport const CALL_DIAGNOSTIC_LOG_IDENTIFIER = 'call-diagnostic-events -> ';\n\nexport const AUTHENTICATION_FAILED_CODE = 1010;\nexport const NETWORK_ERROR = 1026;\nexport const NEW_LOCUS_ERROR_CLIENT_CODE = 4008;\nexport const MEETING_INFO_LOOKUP_ERROR_CLIENT_CODE = 4100;\nexport const UNKNOWN_ERROR = 9999; // Unexpected error that is not a meetingInfo error, locus error or browser media error.\nexport const ICE_FAILURE_CLIENT_CODE = 2004;\nexport const WBX_APP_API_URL = 'wbxappapi'; // MeetingInfo WebexAppApi response object normally contains a body.url that includes the string 'wbxappapi'\n\n// Found in https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia\nconst BROWSER_MEDIA_ERROR_NAMES = {\n PERMISSION_DENIED_ERROR: 'PermissionDeniedError',\n NOT_ALLOWED_ERROR: 'NotAllowedError',\n NOT_READABLE_ERROR: 'NotReadableError',\n ABORT_ERROR: 'AbortError',\n NOT_FOUND_ERROR: 'NotFoundError',\n OVERCONSTRAINED_ERROR: 'OverconstrainedError',\n SECURITY_ERROR: 'SecurityError',\n TYPE_ERROR: 'TypeError',\n};\n\nexport const BROWSER_MEDIA_ERROR_NAME_TO_CLIENT_ERROR_CODES_MAP = {\n [BROWSER_MEDIA_ERROR_NAMES.PERMISSION_DENIED_ERROR]: 4032, // User did not grant permission\n [BROWSER_MEDIA_ERROR_NAMES.NOT_ALLOWED_ERROR]: 4032, // User did not grant permission\n [BROWSER_MEDIA_ERROR_NAMES.NOT_READABLE_ERROR]: 2729, // Although the user granted permission to use the matching devices, a hardware error occurred at the operating system, browser, or Web page level which prevented access to the device.\n [BROWSER_MEDIA_ERROR_NAMES.ABORT_ERROR]: 2729, // Although the user and operating system both granted access to the hardware device, and no hardware issues occurred that would cause a NotReadableError DOMException, throw if some problem occurred which prevented the device from being used.\n [BROWSER_MEDIA_ERROR_NAMES.NOT_FOUND_ERROR]: 2729, // User did not grant permission\n [BROWSER_MEDIA_ERROR_NAMES.OVERCONSTRAINED_ERROR]: 2729, // Thrown if the specified constraints resulted in no candidate devices which met the criteria requested.\n [BROWSER_MEDIA_ERROR_NAMES.SECURITY_ERROR]: 2729, // Thrown if user media support is disabled on the Document on which getUserMedia() was called. The mechanism by which user media support is enabled and disabled is left up to the individual user agent.\n [BROWSER_MEDIA_ERROR_NAMES.TYPE_ERROR]: 2729, // Thrown if the list of constraints specified is empty, or has all constraints set to false. This can also happen if you try to call getUserMedia() in an insecure context, since navigator.mediaDevices is undefined in an insecure context.\n};\n\nconst ERROR_DESCRIPTIONS = {\n UNKNOWN_CALL_FAILURE: 'UnknownCallFailure',\n LOCUS_RATE_LIMITED_INCOMING: 'LocusRateLimitedIncoming',\n LOCUS_RATE_LIMITED_OUTGOING: 'LocusRateLimitedOutgoing',\n LOCUS_UNAVAILABLE: 'LocusUnavailable',\n LOCUS_CONFLICT: 'LocusConflict',\n TIMEOUT: 'Timeout',\n LOCUS_INVALID_SEQUENCE_HASH: 'LocusInvalidSequenceHash',\n AUTHENTICATION_FAILED: 'AuthenticationFailed',\n NETWORK_ERROR: 'NetworkError',\n UPDATE_MEDIA_FAILED: 'UpdateMediaFailed',\n FAILED_TO_CONNECT_MEDIA: 'FailedToConnectMedia',\n MEDIA_ENGINE_LOST: 'MediaEngineLost',\n MEDIA_CONNECTION_LOST: 'MediaConnectionLost',\n ICE_FAILURE: 'IceFailure',\n MEDIA_ENGINE_HANG: 'MediaEngineHang',\n ICE_SERVER_REJECTED: 'IceServerRejected',\n CALL_FULL: 'CallFull',\n ROOM_TOO_LARGE: 'RoomTooLarge',\n GUEST_ALREADY_ADDED: 'GuestAlreadyAdded',\n LOCUS_USER_NOT_AUTHORISED: 'LocusUserNotAuthorised',\n CLOUDBERRY_UNAVAILABLE: 'CloudberryUnavailable',\n ROOM_TOO_LARGE_FREE_ACCOUNT: 'RoomTooLarge_FreeAccount',\n MEETING_INACTIVE: 'MeetingInactive',\n MEETING_LOCKED: 'MeetingLocked',\n MEETING_TERMINATING: 'MeetingTerminating',\n MODERATOR_PIN_OR_GUEST_REQUIRED: 'Moderator_Pin_Or_Guest_Required',\n MODERATOR_PIN_OR_GUEST_PIN_REQUIRED: 'Moderator_Pin_Or_Guest_PIN_Required',\n MODERATOR_REQUIRED: 'Moderator_Required',\n USER_NOT_MEMBER_OF_ROOM: 'UserNotMemberOfRoom',\n NEW_LOCUS_ERROR: 'NewLocusError',\n NETWORK_UNAVAILABLE: 'NetworkUnavailable',\n MEETING_UNAVAILABLE: 'MeetingUnavailable',\n MEETING_ID_INVALID: 'MeetingIDInvalid',\n MEETING_SITE_INVALID: 'MeetingSiteInvalid',\n LOCUS_INVALID_JOINTIME: 'LocusInvalidJoinTime',\n LOBBY_EXPIRED: 'LobbyExpired',\n MEDIA_CONNECTION_LOST_PAIRED: 'MediaConnectionLostPaired',\n PHONE_NUMBER_NOT_A_NUMBER: 'PhoneNumberNotANumber',\n PHONE_NUMBER_TOO_LONG: 'PhoneNumberTooLong',\n INVALID_DIALABLE_KEY: 'InvalidDialableKey',\n ONE_ON_ONE_TO_SELF_NOT_ALLOWED: 'OneOnOneToSelfNotAllowed',\n REMOVED_PARTICIPANT: 'RemovedParticipant',\n MEETING_LINK_NOT_FOUND: 'MeetingLinkNotFound',\n PHONE_NUMBER_TOO_SHORT_AFTER_IDD: 'PhoneNumberTooShortAfterIdd',\n INVALID_INVITEE_ADDRESS: 'InvalidInviteeAddress',\n PMR_USER_ACCOUNT_LOCKED_OUT: 'PMRUserAccountLockedOut',\n GUEST_FORBIDDEN: 'GuestForbidden',\n PMR_ACCOUNT_SUSPENDED: 'PMRAccountSuspended',\n EMPTY_PHONE_NUMBER_OR_COUNTRY_CODE: 'EmptyPhoneNumberOrCountryCode',\n CONVERSATION_NOT_FOUND: 'ConversationNotFound',\n SIP_CALLEE_BUSY: 'SIPCalleeBusy',\n SIP_CALLEE_NOT_FOUND: 'SIPCalleeNotFound',\n START_RECORDING_FAILED: 'StartRecordingFailed',\n RECORDING_IN_PROGRESS_FAILED: 'RecordingInProgressFailed',\n MEETING_INFO_LOOKUP_ERROR: 'MeetingInfoLookupError',\n CALL_FULL_ADD_GUEST: 'CallFullAddGuest',\n REQUIRE_WEBEX_LOGIN: 'RequireWebexLogin',\n USER_NOT_ALLOWED_ACCESS_MEETING: 'UserNotAllowedAccessMeeting',\n USER_NEEDS_ACTIVATION: 'UserNeedsActivation',\n SIGN_UP_INVALID_EMAIL: 'SignUpInvalidEmail',\n UNKNOWN_ERROR: 'UnknownError',\n NO_MEDIA_FOUND: 'NoMediaFound',\n STREAM_ERROR_NO_MEDIA: 'StreamErrorNoMedia',\n CAMERA_PERMISSION_DENIED: 'CameraPermissionDenied',\n FRAUD_DETECTION: 'FraudDetection',\n E2EE_NOT_SUPPORTED: 'E2EENotSupported',\n LOCUS_LOBBY_FULL_CMR: 'LocusLobbyFullCMR',\n USER_NOT_INVITED_TO_JOIN: 'UserNotInvitedToJoin',\n};\n\nexport const SERVICE_ERROR_CODES_TO_CLIENT_ERROR_CODES_MAP = {\n // ---- Webex API ----\n // Taken from https://wiki.cisco.com/display/HFWEB/MeetingInfo+API and https://sqbu-github.cisco.com/WebExSquared/spark-client-framework/blob/master/spark-client-framework/Services/WebexMeetingService/WebexMeetingModel.h\n // Site not support the URL's domain\n 58400: 4100,\n 99002: 4100,\n // Cannot find the data. Unkown meeting.\n 99009: 4100,\n // Meeting is not allow to cross env\n 58500: 4100,\n // Input parameters contain invalit item\n 400001: 4100,\n // Empty password or token. Meeting is not allow to access since require password\n 403004: 4005,\n // Wrong password. Meeting is not allow to access since password error\n 403028: 4005,\n // Wrong or expired permission. Meeting is not allow to access since permissionToken error or expire\n 403032: 4005,\n // Meeting is required login for current user\n 403034: 4036,\n // Meeting is not allow to access since require password or hostKey\n // Empty password or host key\n 403036: 4005,\n // Meeting is not allow to access since password or hostKey error\n // Wrong password or host key\n 403038: 4005,\n // CMR Meeting Not Supported (meeting exists, but not CMR meeting)\n 403040: 4100,\n // Requires Moderator Pin or Guest Pin\n 403041: 4005,\n // Email blocked\n 403047: 4101,\n // Device not authenticated for your organization\n 403408: 4101,\n // Invalid panelist Pin\n 403043: 4005,\n // Device not registered in org. Device not authenticated.\n 403048: 4101,\n // Not allowed to join external meetings. Violate meeting join policy. Your organization settings don't allow you to join this meeting.\n 403049: 4101,\n // Invalid email. Requires sign in meeting's current site.\n 403100: 4101,\n // Enforce sign in: need login before access when policy enforce sign in. GuestForceUserSignInPolicy\n 403101: 4036,\n // Enforce sign in: sign in with your email address that is approved by your organization\n 403102: 4036,\n // Join internal Meeting: need login before access when policy enforce sign in. Guest force user sign in internal meeting policy.\n 403103: 4036,\n // Join internal Meeting: The host's organization policy doesn't allow your account to join this meeting. Try switching to another account\n 403104: 4101,\n 404001: 4101,\n // Site data not found. Unkonwn meeting. Site data not found(or null).\n 404006: 4100,\n // Invalid input with too many requests. Too many requests access, please input captcha code\n 423001: 4005,\n // Wrong password with too many requests. PasswordError too many time, please input captcha code\n 423005: 4005,\n // Wrong password or host key with too many requests\n 423006: 4005,\n // PasswordError with right captcha, please input captcha code\n 423010: 4005,\n // PasswordOrHostKeyError with right captcha, please input captcha code\n 423012: 4005,\n // Unverified or invalid input. Force show captcha. Please input captcha code\"\n 423013: 4005,\n // Too many requests access\n 429005: 4100,\n\n // ---- Locus ------\n // FREE_USER_MAX_PARTICIPANTS_EXCEEDED\n 2403001: 3007,\n // PAID_USER_MAX_PARTICIPANTS_EXCEEDED\n 2403002: 3002,\n // SERVICE_MAX_PARTICIPANTS_EXCEEDED\n 2403003: 3002,\n // LOCUS_INACTIVE\n 2403004: 4001,\n // LOCUS_FREE_USER_MAX_PARTICIPANTS_JOINED_EXCEEDED\n 2403018: 3001,\n // LOCUS_PAID_USER_MAX_PARTICIPANTS_JOINED_EXCEEDED\n 2403019: 3001,\n // LOCUS_LOCKED\n 2423003: 4002,\n // LOCUS_TERMINATING\n 2423004: 4003,\n // LOCUS_REQUIRES_MODERATOR_PIN_OR_GUEST\n 2423005: 4005,\n 2423006: 4005,\n 2423016: 4005,\n 2423017: 4005,\n 2423018: 4005,\n // LOCUS_OWNER_CONCURRENT_ACTIVE_MEETING_LIMIT_EXCEEDED\n 2423012: 12000,\n // LOCUS_LOBBY_FULL_CMR\n 2423021: 12001,\n // LOCUS_REQUIRES_MODERATOR_ROLE\n 2423007: 4006,\n // LOCUS_JOIN_RESTRICTED_USER_NOT_IN_ROOM\n 2403010: 4007,\n // LOCUS_MEETING_NOT_FOUND\n 2403014: 4011,\n // LOCUS_NOT_WEBEX_SITE\n 2403015: 4012,\n // LOCUS_INVALID_JOIN_TIME\n 2423010: 4013,\n // LOCUS_PHONE_NUMBER_NOT_A_NUMBER\n 2400008: 4016,\n // LOCUS_PHONE_NUMBER_TOO_LONG\n 2400011: 4017,\n // LOCUS_INVALID_DIALABLE_KEY\n 2400012: 4018,\n // LOCUS_ONE_ON_ONE_TO_SELF_NOT_ALLOWED\n 2403007: 4019,\n // LOCUS_REMOVED_PARTICIPANT\n 2401002: 4020,\n // LOCUS_MEETING_LINK_NOT_FOUND\n 2404002: 4021,\n // LOCUS_PHONE_NUMBER_TOO_SHORT_AFTER_IDD\n 2400009: 4022,\n // LOCUS_INVALID_INVITEE_ADDRESS\n 2400025: 4023,\n // LOCUS_PMR_USER_ACCOUNT_LOCKEDOUT\n 2423009: 4024,\n // LOCUS_RESOURCE_GUEST_FORBIDDEN\n 2403022: 4025,\n // LOCUS_PMR_SUSPENDED\n 2423008: 4026,\n // LOCUS_EMPTY_PHONE_NUMBER_OR_COUNTRY_CODE\n 2400006: 4027,\n // LOCUS_INVALID_SINCE_OR_SEQUENCE_HASH_IN_REQUEST\n 2400014: 1006,\n // LOCUS_CONVERSATION_NOT_FOUND\n 2404001: 4028,\n // LOCUS_RECORDING_CONTROL_NOT_SUPPORTED\n 2403025: 4029,\n // LOCUS_RECORDING_NOT_STARTED\n 2405001: 4029,\n // LOCUS_RECORDING_NOT_ENABLED\n 2409005: 4029,\n // E2EE_NOT_SUPPORTED\n 2409062: 12002,\n // LOCUS: ONLY_INVITED_USERS_CAN_ATTEND_THIS_MEETING\n 2423025: 12003,\n\n // ---- U2C Sign in catalog ------\n // The user exists, but hasn't completed activation. Needs to visit Atlas for more processing.\n 100002: 4102,\n // The user exists, had completed activation earlier, but requires re-activation because of change in login strategy.\n // Common example is: user signed up using an OAuth provider, but that OAuth provider was removed by org's admin. Now the user needs to re-activate using alternate login strategies: password-pin, new OAuth provider, SSO, etc.\n 100007: 4102,\n // The user does not exist\n 100001: 4103,\n // The user wasn't found, and the organization used for search is a domain-claimed organization.\n 100006: 4103,\n 100005: 4103, // Depracated because of an issue in the UCF Clients\n // If both email-hash and domain-hash are null or undefined.\n 100004: 4103,\n};\n\nexport const CLIENT_ERROR_CODE_TO_ERROR_PAYLOAD: Record<number, Partial<ClientEventError>> = {\n 1000: {\n errorDescription: ERROR_DESCRIPTIONS.UNKNOWN_CALL_FAILURE,\n category: 'signaling',\n fatal: true,\n name: 'locus.response',\n },\n 1001: {\n errorDescription: ERROR_DESCRIPTIONS.LOCUS_RATE_LIMITED_INCOMING,\n category: 'signaling',\n fatal: true,\n name: 'locus.response',\n },\n 1002: {\n errorDescription: ERROR_DESCRIPTIONS.LOCUS_RATE_LIMITED_OUTGOING,\n category: 'signaling',\n fatal: true,\n name: 'locus.response',\n },\n 1003: {\n errorDescription: ERROR_DESCRIPTIONS.LOCUS_UNAVAILABLE,\n category: 'signaling',\n fatal: true,\n name: 'locus.response',\n },\n 1004: {\n errorDescription: ERROR_DESCRIPTIONS.LOCUS_CONFLICT,\n category: 'signaling',\n fatal: true,\n name: 'locus.response',\n },\n 1005: {\n errorDescription: ERROR_DESCRIPTIONS.TIMEOUT,\n category: 'signaling',\n fatal: true,\n name: 'locus.response',\n },\n 1006: {\n errorDescription: ERROR_DESCRIPTIONS.LOCUS_INVALID_SEQUENCE_HASH,\n category: 'signaling',\n fatal: true,\n },\n 1007: {\n errorDescription: ERROR_DESCRIPTIONS.UPDATE_MEDIA_FAILED,\n category: 'signaling',\n fatal: true,\n },\n [AUTHENTICATION_FAILED_CODE]: {\n errorDescription: ERROR_DESCRIPTIONS.AUTHENTICATION_FAILED,\n category: 'network',\n fatal: true,\n },\n 1026: {\n errorDescription: ERROR_DESCRIPTIONS.NETWORK_ERROR,\n category: 'network',\n fatal: true,\n },\n 2001: {\n errorDescription: ERROR_DESCRIPTIONS.FAILED_TO_CONNECT_MEDIA,\n category: 'signaling',\n fatal: true,\n },\n 2002: {\n errorDescription: ERROR_DESCRIPTIONS.MEDIA_ENGINE_LOST,\n category: 'signaling',\n fatal: true,\n },\n 2003: {\n errorDescription: ERROR_DESCRIPTIONS.MEDIA_CONNECTION_LOST,\n category: 'signaling',\n fatal: true,\n },\n 2004: {\n errorDescription: ERROR_DESCRIPTIONS.ICE_FAILURE,\n category: 'signaling',\n fatal: true,\n },\n 2005: {\n errorDescription: ERROR_DESCRIPTIONS.MEDIA_ENGINE_HANG,\n category: 'signaling',\n fatal: true,\n },\n 2006: {\n errorDescription: ERROR_DESCRIPTIONS.ICE_SERVER_REJECTED,\n category: 'signaling',\n fatal: true,\n },\n 3001: {\n errorDescription: ERROR_DESCRIPTIONS.CALL_FULL,\n category: 'expected',\n fatal: true,\n },\n 3002: {\n errorDescription: ERROR_DESCRIPTIONS.ROOM_TOO_LARGE,\n category: 'expected',\n fatal: true,\n },\n 3004: {\n errorDescription: ERROR_DESCRIPTIONS.GUEST_ALREADY_ADDED,\n category: 'expected',\n fatal: false,\n },\n 3005: {\n errorDescription: ERROR_DESCRIPTIONS.LOCUS_USER_NOT_AUTHORISED,\n category: 'expected',\n fatal: true,\n },\n 3006: {\n errorDescription: ERROR_DESCRIPTIONS.CLOUDBERRY_UNAVAILABLE,\n category: 'expected',\n fatal: true,\n },\n 3007: {\n errorDescription: ERROR_DESCRIPTIONS.STREAM_ERROR_NO_MEDIA,\n category: 'expected',\n fatal: true,\n },\n 3013: {\n errorDescription: ERROR_DESCRIPTIONS.ROOM_TOO_LARGE_FREE_ACCOUNT,\n category: 'expected',\n fatal: false,\n },\n 4001: {\n errorDescription: ERROR_DESCRIPTIONS.MEETING_INACTIVE,\n category: 'expected',\n fatal: true,\n },\n 4002: {\n errorDescription: ERROR_DESCRIPTIONS.MEETING_LOCKED,\n category: 'expected',\n fatal: true,\n name: 'locus.response',\n },\n 4003: {\n errorDescription: ERROR_DESCRIPTIONS.MEETING_TERMINATING,\n category: 'expected',\n fatal: true,\n name: 'locus.leave',\n },\n 4004: {\n errorDescription: ERROR_DESCRIPTIONS.MODERATOR_PIN_OR_GUEST_REQUIRED,\n category: 'expected',\n fatal: false,\n },\n 4005: {\n errorDescription: ERROR_DESCRIPTIONS.MODERATOR_PIN_OR_GUEST_PIN_REQUIRED,\n category: 'expected',\n fatal: false,\n },\n 4006: {\n errorDescription: ERROR_DESCRIPTIONS.MODERATOR_REQUIRED,\n category: 'expected',\n fatal: false,\n },\n 4007: {\n errorDescription: ERROR_DESCRIPTIONS.USER_NOT_MEMBER_OF_ROOM,\n category: 'expected',\n fatal: true,\n },\n 4008: {\n errorDescription: ERROR_DESCRIPTIONS.NEW_LOCUS_ERROR,\n category: 'signaling',\n fatal: true,\n },\n 4009: {\n errorDescription: ERROR_DESCRIPTIONS.NETWORK_UNAVAILABLE,\n category: 'network',\n fatal: true,\n },\n 4010: {\n errorDescription: ERROR_DESCRIPTIONS.MEETING_UNAVAILABLE,\n category: 'expected',\n fatal: true,\n },\n 4011: {\n errorDescription: ERROR_DESCRIPTIONS.MEETING_ID_INVALID,\n category: 'expected',\n fatal: true,\n },\n 4012: {\n errorDescription: ERROR_DESCRIPTIONS.MEETING_SITE_INVALID,\n category: 'expected',\n fatal: true,\n },\n 4013: {\n errorDescription: ERROR_DESCRIPTIONS.LOCUS_INVALID_JOINTIME,\n category: 'expected',\n fatal: true,\n },\n 4014: {\n errorDescription: ERROR_DESCRIPTIONS.LOBBY_EXPIRED,\n category: 'expected',\n fatal: true,\n },\n 4015: {\n errorDescription: ERROR_DESCRIPTIONS.MEDIA_CONNECTION_LOST_PAIRED,\n category: 'expected',\n fatal: false,\n },\n 4016: {\n errorDescription: ERROR_DESCRIPTIONS.PHONE_NUMBER_NOT_A_NUMBER,\n category: 'expected',\n fatal: true,\n name: 'locus.response',\n },\n 4017: {\n errorDescription: ERROR_DESCRIPTIONS.PHONE_NUMBER_TOO_LONG,\n category: 'expected',\n fatal: true,\n name: 'locus.response',\n },\n 4018: {\n errorDescription: ERROR_DESCRIPTIONS.INVALID_DIALABLE_KEY,\n category: 'expected',\n fatal: true,\n name: 'locus.response',\n },\n 4019: {\n errorDescription: ERROR_DESCRIPTIONS.ONE_ON_ONE_TO_SELF_NOT_ALLOWED,\n category: 'expected',\n fatal: true,\n },\n 4020: {\n errorDescription: ERROR_DESCRIPTIONS.REMOVED_PARTICIPANT,\n category: 'expected',\n fatal: true,\n },\n 4021: {\n errorDescription: ERROR_DESCRIPTIONS.MEETING_LINK_NOT_FOUND,\n category: 'expected',\n fatal: true,\n },\n 4022: {\n errorDescription: ERROR_DESCRIPTIONS.PHONE_NUMBER_TOO_SHORT_AFTER_IDD,\n category: 'expected',\n fatal: true,\n },\n 4023: {\n errorDescription: ERROR_DESCRIPTIONS.INVALID_INVITEE_ADDRESS,\n category: 'expected',\n fatal: true,\n },\n 4024: {\n errorDescription: ERROR_DESCRIPTIONS.PMR_USER_ACCOUNT_LOCKED_OUT,\n category: 'expected',\n fatal: true,\n },\n 4025: {\n errorDescription: ERROR_DESCRIPTIONS.GUEST_FORBIDDEN,\n category: 'expected',\n fatal: true,\n },\n 4026: {\n errorDescription: ERROR_DESCRIPTIONS.PMR_ACCOUNT_SUSPENDED,\n category: 'expected',\n fatal: true,\n },\n 4027: {\n errorDescription: ERROR_DESCRIPTIONS.EMPTY_PHONE_NUMBER_OR_COUNTRY_CODE,\n category: 'expected',\n fatal: true,\n },\n 4028: {\n errorDescription: ERROR_DESCRIPTIONS.CONVERSATION_NOT_FOUND,\n category: 'expected',\n fatal: true,\n },\n 4029: {\n errorDescription: ERROR_DESCRIPTIONS.START_RECORDING_FAILED,\n category: 'expected',\n fatal: true,\n },\n 4030: {\n errorDescription: ERROR_DESCRIPTIONS.RECORDING_IN_PROGRESS_FAILED,\n category: 'expected',\n fatal: true,\n },\n 4032: {\n errorDescription: ERROR_DESCRIPTIONS.CAMERA_PERMISSION_DENIED,\n category: 'expected',\n fatal: true,\n },\n 4036: {\n errorDescription: ERROR_DESCRIPTIONS.REQUIRE_WEBEX_LOGIN,\n category: 'expected',\n fatal: true,\n },\n 5000: {\n errorDescription: ERROR_DESCRIPTIONS.SIP_CALLEE_BUSY,\n category: 'expected',\n fatal: true,\n },\n 5001: {\n errorDescription: ERROR_DESCRIPTIONS.SIP_CALLEE_NOT_FOUND,\n category: 'expected',\n fatal: true,\n },\n\n // Webex App API Error Codes\n 4100: {\n errorDescription: ERROR_DESCRIPTIONS.MEETING_INFO_LOOKUP_ERROR,\n category: 'signaling',\n fatal: true,\n },\n 3003: {\n errorDescription: ERROR_DESCRIPTIONS.CALL_FULL_ADD_GUEST,\n category: 'expected',\n fatal: false,\n },\n 4101: {\n errorDescription: ERROR_DESCRIPTIONS.USER_NOT_ALLOWED_ACCESS_MEETING,\n category: 'expected',\n fatal: true,\n },\n 4102: {\n errorDescription: ERROR_DESCRIPTIONS.USER_NEEDS_ACTIVATION,\n category: 'expected',\n fatal: true,\n },\n 4103: {\n errorDescription: ERROR_DESCRIPTIONS.SIGN_UP_INVALID_EMAIL,\n category: 'expected',\n fatal: true,\n },\n 2729: {\n errorDescription: ERROR_DESCRIPTIONS.NO_MEDIA_FOUND,\n category: 'expected',\n fatal: false,\n },\n 9999: {\n errorDescription: ERROR_DESCRIPTIONS.UNKNOWN_ERROR,\n category: 'other',\n fatal: true,\n },\n 12000: {\n errorDescription: ERROR_DESCRIPTIONS.FRAUD_DETECTION,\n category: 'expected',\n fatal: true,\n name: 'locus.response',\n shownToUser: true,\n },\n 12001: {\n errorDescription: ERROR_DESCRIPTIONS.LOCUS_LOBBY_FULL_CMR,\n category: 'expected',\n fatal: true,\n name: 'locus.response',\n shownToUser: true,\n },\n 12002: {\n errorDescription: ERROR_DESCRIPTIONS.E2EE_NOT_SUPPORTED,\n category: 'expected',\n fatal: true,\n name: 'locus.response',\n shownToUser: true,\n },\n 12003: {\n errorDescription: ERROR_DESCRIPTIONS.USER_NOT_INVITED_TO_JOIN,\n category: 'expected',\n fatal: true,\n },\n};\n\nexport const CALL_DIAGNOSTIC_EVENT_FAILED_TO_SEND = 'js_sdk_call_diagnostic_event_failed_to_send';\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["CALL_DIAGNOSTIC_LOG_IDENTIFIER","AUTHENTICATION_FAILED_CODE","NETWORK_ERROR","NEW_LOCUS_ERROR_CLIENT_CODE","MEETING_INFO_LOOKUP_ERROR_CLIENT_CODE","UNKNOWN_ERROR","ICE_FAILURE_CLIENT_CODE","MISSING_ROAP_ANSWER_CLIENT_CODE","DTLS_HANDSHAKE_FAILED_CLIENT_CODE","ICE_FAILED_WITH_TURN_TLS_CLIENT_CODE","ICE_FAILED_WITHOUT_TURN_TLS_CLIENT_CODE","WBX_APP_API_URL","BROWSER_MEDIA_ERROR_NAMES","PERMISSION_DENIED_ERROR","NOT_ALLOWED_ERROR","NOT_READABLE_ERROR","ABORT_ERROR","NOT_FOUND_ERROR","OVERCONSTRAINED_ERROR","SECURITY_ERROR","TYPE_ERROR","BROWSER_MEDIA_ERROR_NAME_TO_CLIENT_ERROR_CODES_MAP","ERROR_DESCRIPTIONS","UNKNOWN_CALL_FAILURE","LOCUS_RATE_LIMITED_INCOMING","LOCUS_RATE_LIMITED_OUTGOING","LOCUS_UNAVAILABLE","LOCUS_CONFLICT","TIMEOUT","LOCUS_INVALID_SEQUENCE_HASH","AUTHENTICATION_FAILED","UPDATE_MEDIA_FAILED","FAILED_TO_CONNECT_MEDIA","MEDIA_ENGINE_LOST","MEDIA_CONNECTION_LOST","ICE_FAILURE","MEDIA_ENGINE_HANG","ICE_SERVER_REJECTED","CALL_FULL","ROOM_TOO_LARGE","GUEST_ALREADY_ADDED","LOCUS_USER_NOT_AUTHORISED","CLOUDBERRY_UNAVAILABLE","ROOM_TOO_LARGE_FREE_ACCOUNT","MEETING_INACTIVE","MEETING_LOCKED","MEETING_TERMINATING","MODERATOR_PIN_OR_GUEST_REQUIRED","MODERATOR_PIN_OR_GUEST_PIN_REQUIRED","MODERATOR_REQUIRED","USER_NOT_MEMBER_OF_ROOM","NEW_LOCUS_ERROR","NETWORK_UNAVAILABLE","MEETING_UNAVAILABLE","MEETING_ID_INVALID","MEETING_SITE_INVALID","LOCUS_INVALID_JOINTIME","LOBBY_EXPIRED","MEDIA_CONNECTION_LOST_PAIRED","PHONE_NUMBER_NOT_A_NUMBER","PHONE_NUMBER_TOO_LONG","INVALID_DIALABLE_KEY","ONE_ON_ONE_TO_SELF_NOT_ALLOWED","REMOVED_PARTICIPANT","MEETING_LINK_NOT_FOUND","PHONE_NUMBER_TOO_SHORT_AFTER_IDD","INVALID_INVITEE_ADDRESS","PMR_USER_ACCOUNT_LOCKED_OUT","GUEST_FORBIDDEN","PMR_ACCOUNT_SUSPENDED","EMPTY_PHONE_NUMBER_OR_COUNTRY_CODE","CONVERSATION_NOT_FOUND","SIP_CALLEE_BUSY","SIP_CALLEE_NOT_FOUND","START_RECORDING_FAILED","RECORDING_IN_PROGRESS_FAILED","MEETING_INFO_LOOKUP_ERROR","CALL_FULL_ADD_GUEST","REQUIRE_WEBEX_LOGIN","USER_NOT_ALLOWED_ACCESS_MEETING","USER_NEEDS_ACTIVATION","SIGN_UP_INVALID_EMAIL","NO_MEDIA_FOUND","STREAM_ERROR_NO_MEDIA","CAMERA_PERMISSION_DENIED","FRAUD_DETECTION","E2EE_NOT_SUPPORTED","LOCUS_LOBBY_FULL_CMR","USER_NOT_INVITED_TO_JOIN","MISSING_ROAP_ANSWER","DTLS_HANDSHAKE_FAILED","ICE_FAILED_WITHOUT_TURN_TLS","ICE_FAILED_WITH_TURN_TLS","SERVICE_ERROR_CODES_TO_CLIENT_ERROR_CODES_MAP","CLIENT_ERROR_CODE_TO_ERROR_PAYLOAD","errorDescription","category","fatal","name","shownToUser","CALL_DIAGNOSTIC_EVENT_FAILED_TO_SEND"],"sources":["config.ts"],"sourcesContent":["/* eslint-disable import/prefer-default-export */\n// Most client error codes are mapped based on\n// https://sqbu-github.cisco.com/WebExSquared/event-dictionary/wiki/Error-codes-for-metric-events\n\nimport {ClientEventError} from '../metrics.types';\n\nexport const CALL_DIAGNOSTIC_LOG_IDENTIFIER = 'call-diagnostic-events -> ';\n\nexport const AUTHENTICATION_FAILED_CODE = 1010;\nexport const NETWORK_ERROR = 1026;\nexport const NEW_LOCUS_ERROR_CLIENT_CODE = 4008;\nexport const MEETING_INFO_LOOKUP_ERROR_CLIENT_CODE = 4100;\nexport const UNKNOWN_ERROR = 9999; // Unexpected error that is not a meetingInfo error, locus error or browser media error.\nexport const ICE_FAILURE_CLIENT_CODE = 2004;\nexport const MISSING_ROAP_ANSWER_CLIENT_CODE = 2007;\nexport const DTLS_HANDSHAKE_FAILED_CLIENT_CODE = 2008;\nexport const ICE_FAILED_WITH_TURN_TLS_CLIENT_CODE = 2010;\nexport const ICE_FAILED_WITHOUT_TURN_TLS_CLIENT_CODE = 2009;\nexport const WBX_APP_API_URL = 'wbxappapi'; // MeetingInfo WebexAppApi response object normally contains a body.url that includes the string 'wbxappapi'\n\n// Found in https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia\nconst BROWSER_MEDIA_ERROR_NAMES = {\n PERMISSION_DENIED_ERROR: 'PermissionDeniedError',\n NOT_ALLOWED_ERROR: 'NotAllowedError',\n NOT_READABLE_ERROR: 'NotReadableError',\n ABORT_ERROR: 'AbortError',\n NOT_FOUND_ERROR: 'NotFoundError',\n OVERCONSTRAINED_ERROR: 'OverconstrainedError',\n SECURITY_ERROR: 'SecurityError',\n TYPE_ERROR: 'TypeError',\n};\n\nexport const BROWSER_MEDIA_ERROR_NAME_TO_CLIENT_ERROR_CODES_MAP = {\n [BROWSER_MEDIA_ERROR_NAMES.PERMISSION_DENIED_ERROR]: 4032, // User did not grant permission\n [BROWSER_MEDIA_ERROR_NAMES.NOT_ALLOWED_ERROR]: 4032, // User did not grant permission\n [BROWSER_MEDIA_ERROR_NAMES.NOT_READABLE_ERROR]: 2729, // Although the user granted permission to use the matching devices, a hardware error occurred at the operating system, browser, or Web page level which prevented access to the device.\n [BROWSER_MEDIA_ERROR_NAMES.ABORT_ERROR]: 2729, // Although the user and operating system both granted access to the hardware device, and no hardware issues occurred that would cause a NotReadableError DOMException, throw if some problem occurred which prevented the device from being used.\n [BROWSER_MEDIA_ERROR_NAMES.NOT_FOUND_ERROR]: 2729, // User did not grant permission\n [BROWSER_MEDIA_ERROR_NAMES.OVERCONSTRAINED_ERROR]: 2729, // Thrown if the specified constraints resulted in no candidate devices which met the criteria requested.\n [BROWSER_MEDIA_ERROR_NAMES.SECURITY_ERROR]: 2729, // Thrown if user media support is disabled on the Document on which getUserMedia() was called. The mechanism by which user media support is enabled and disabled is left up to the individual user agent.\n [BROWSER_MEDIA_ERROR_NAMES.TYPE_ERROR]: 2729, // Thrown if the list of constraints specified is empty, or has all constraints set to false. This can also happen if you try to call getUserMedia() in an insecure context, since navigator.mediaDevices is undefined in an insecure context.\n};\n\nexport const ERROR_DESCRIPTIONS = {\n UNKNOWN_CALL_FAILURE: 'UnknownCallFailure',\n LOCUS_RATE_LIMITED_INCOMING: 'LocusRateLimitedIncoming',\n LOCUS_RATE_LIMITED_OUTGOING: 'LocusRateLimitedOutgoing',\n LOCUS_UNAVAILABLE: 'LocusUnavailable',\n LOCUS_CONFLICT: 'LocusConflict',\n TIMEOUT: 'Timeout',\n LOCUS_INVALID_SEQUENCE_HASH: 'LocusInvalidSequenceHash',\n AUTHENTICATION_FAILED: 'AuthenticationFailed',\n NETWORK_ERROR: 'NetworkError',\n UPDATE_MEDIA_FAILED: 'UpdateMediaFailed',\n FAILED_TO_CONNECT_MEDIA: 'FailedToConnectMedia',\n MEDIA_ENGINE_LOST: 'MediaEngineLost',\n MEDIA_CONNECTION_LOST: 'MediaConnectionLost',\n ICE_FAILURE: 'IceFailure',\n MEDIA_ENGINE_HANG: 'MediaEngineHang',\n ICE_SERVER_REJECTED: 'IceServerRejected',\n CALL_FULL: 'CallFull',\n ROOM_TOO_LARGE: 'RoomTooLarge',\n GUEST_ALREADY_ADDED: 'GuestAlreadyAdded',\n LOCUS_USER_NOT_AUTHORISED: 'LocusUserNotAuthorised',\n CLOUDBERRY_UNAVAILABLE: 'CloudberryUnavailable',\n ROOM_TOO_LARGE_FREE_ACCOUNT: 'RoomTooLarge_FreeAccount',\n MEETING_INACTIVE: 'MeetingInactive',\n MEETING_LOCKED: 'MeetingLocked',\n MEETING_TERMINATING: 'MeetingTerminating',\n MODERATOR_PIN_OR_GUEST_REQUIRED: 'Moderator_Pin_Or_Guest_Required',\n MODERATOR_PIN_OR_GUEST_PIN_REQUIRED: 'Moderator_Pin_Or_Guest_PIN_Required',\n MODERATOR_REQUIRED: 'Moderator_Required',\n USER_NOT_MEMBER_OF_ROOM: 'UserNotMemberOfRoom',\n NEW_LOCUS_ERROR: 'NewLocusError',\n NETWORK_UNAVAILABLE: 'NetworkUnavailable',\n MEETING_UNAVAILABLE: 'MeetingUnavailable',\n MEETING_ID_INVALID: 'MeetingIDInvalid',\n MEETING_SITE_INVALID: 'MeetingSiteInvalid',\n LOCUS_INVALID_JOINTIME: 'LocusInvalidJoinTime',\n LOBBY_EXPIRED: 'LobbyExpired',\n MEDIA_CONNECTION_LOST_PAIRED: 'MediaConnectionLostPaired',\n PHONE_NUMBER_NOT_A_NUMBER: 'PhoneNumberNotANumber',\n PHONE_NUMBER_TOO_LONG: 'PhoneNumberTooLong',\n INVALID_DIALABLE_KEY: 'InvalidDialableKey',\n ONE_ON_ONE_TO_SELF_NOT_ALLOWED: 'OneOnOneToSelfNotAllowed',\n REMOVED_PARTICIPANT: 'RemovedParticipant',\n MEETING_LINK_NOT_FOUND: 'MeetingLinkNotFound',\n PHONE_NUMBER_TOO_SHORT_AFTER_IDD: 'PhoneNumberTooShortAfterIdd',\n INVALID_INVITEE_ADDRESS: 'InvalidInviteeAddress',\n PMR_USER_ACCOUNT_LOCKED_OUT: 'PMRUserAccountLockedOut',\n GUEST_FORBIDDEN: 'GuestForbidden',\n PMR_ACCOUNT_SUSPENDED: 'PMRAccountSuspended',\n EMPTY_PHONE_NUMBER_OR_COUNTRY_CODE: 'EmptyPhoneNumberOrCountryCode',\n CONVERSATION_NOT_FOUND: 'ConversationNotFound',\n SIP_CALLEE_BUSY: 'SIPCalleeBusy',\n SIP_CALLEE_NOT_FOUND: 'SIPCalleeNotFound',\n START_RECORDING_FAILED: 'StartRecordingFailed',\n RECORDING_IN_PROGRESS_FAILED: 'RecordingInProgressFailed',\n MEETING_INFO_LOOKUP_ERROR: 'MeetingInfoLookupError',\n CALL_FULL_ADD_GUEST: 'CallFullAddGuest',\n REQUIRE_WEBEX_LOGIN: 'RequireWebexLogin',\n USER_NOT_ALLOWED_ACCESS_MEETING: 'UserNotAllowedAccessMeeting',\n USER_NEEDS_ACTIVATION: 'UserNeedsActivation',\n SIGN_UP_INVALID_EMAIL: 'SignUpInvalidEmail',\n UNKNOWN_ERROR: 'UnknownError',\n NO_MEDIA_FOUND: 'NoMediaFound',\n STREAM_ERROR_NO_MEDIA: 'StreamErrorNoMedia',\n CAMERA_PERMISSION_DENIED: 'CameraPermissionDenied',\n FRAUD_DETECTION: 'FraudDetection',\n E2EE_NOT_SUPPORTED: 'E2EENotSupported',\n LOCUS_LOBBY_FULL_CMR: 'LocusLobbyFullCMR',\n USER_NOT_INVITED_TO_JOIN: 'UserNotInvitedToJoin',\n MISSING_ROAP_ANSWER: 'MissingRoapAnswer',\n DTLS_HANDSHAKE_FAILED: 'DTLSHandshakeFailed',\n ICE_FAILED_WITHOUT_TURN_TLS: 'ICEFailedWithoutTURN_TLS',\n ICE_FAILED_WITH_TURN_TLS: 'ICEFailedWithTURN_TLS',\n};\n\nexport const SERVICE_ERROR_CODES_TO_CLIENT_ERROR_CODES_MAP = {\n // ---- Webex API ----\n // Taken from https://wiki.cisco.com/display/HFWEB/MeetingInfo+API and https://sqbu-github.cisco.com/WebExSquared/spark-client-framework/blob/master/spark-client-framework/Services/WebexMeetingService/WebexMeetingModel.h\n // Site not support the URL's domain\n 58400: 4100,\n 99002: 4100,\n // Cannot find the data. Unkown meeting.\n 99009: 4100,\n // Meeting is not allow to cross env\n 58500: 4100,\n // Input parameters contain invalit item\n 400001: 4100,\n // Empty password or token. Meeting is not allow to access since require password\n 403004: 4005,\n // Wrong password. Meeting is not allow to access since password error\n 403028: 4005,\n // Wrong or expired permission. Meeting is not allow to access since permissionToken error or expire\n 403032: 4005,\n // Meeting is required login for current user\n 403034: 4036,\n // Meeting is not allow to access since require password or hostKey\n // Empty password or host key\n 403036: 4005,\n // Meeting is not allow to access since password or hostKey error\n // Wrong password or host key\n 403038: 4005,\n // CMR Meeting Not Supported (meeting exists, but not CMR meeting)\n 403040: 4100,\n // Requires Moderator Pin or Guest Pin\n 403041: 4005,\n // Email blocked\n 403047: 4101,\n // Device not authenticated for your organization\n 403408: 4101,\n // Invalid panelist Pin\n 403043: 4005,\n // Device not registered in org. Device not authenticated.\n 403048: 4101,\n // Not allowed to join external meetings. Violate meeting join policy. Your organization settings don't allow you to join this meeting.\n 403049: 4101,\n // Invalid email. Requires sign in meeting's current site.\n 403100: 4101,\n // Enforce sign in: need login before access when policy enforce sign in. GuestForceUserSignInPolicy\n 403101: 4036,\n // Enforce sign in: sign in with your email address that is approved by your organization\n 403102: 4036,\n // Join internal Meeting: need login before access when policy enforce sign in. Guest force user sign in internal meeting policy.\n 403103: 4036,\n // Join internal Meeting: The host's organization policy doesn't allow your account to join this meeting. Try switching to another account\n 403104: 4101,\n 404001: 4101,\n // Site data not found. Unkonwn meeting. Site data not found(or null).\n 404006: 4100,\n // Invalid input with too many requests. Too many requests access, please input captcha code\n 423001: 4005,\n // Wrong password with too many requests. PasswordError too many time, please input captcha code\n 423005: 4005,\n // Wrong password or host key with too many requests\n 423006: 4005,\n // PasswordError with right captcha, please input captcha code\n 423010: 4005,\n // PasswordOrHostKeyError with right captcha, please input captcha code\n 423012: 4005,\n // Unverified or invalid input. Force show captcha. Please input captcha code\"\n 423013: 4005,\n // Too many requests access\n 429005: 4100,\n\n // ---- Locus ------\n // FREE_USER_MAX_PARTICIPANTS_EXCEEDED\n 2403001: 3007,\n // PAID_USER_MAX_PARTICIPANTS_EXCEEDED\n 2403002: 3002,\n // SERVICE_MAX_PARTICIPANTS_EXCEEDED\n 2403003: 3002,\n // LOCUS_INACTIVE\n 2403004: 4001,\n // LOCUS_FREE_USER_MAX_PARTICIPANTS_JOINED_EXCEEDED\n 2403018: 3001,\n // LOCUS_PAID_USER_MAX_PARTICIPANTS_JOINED_EXCEEDED\n 2403019: 3001,\n // LOCUS_LOCKED\n 2423003: 4002,\n // LOCUS_TERMINATING\n 2423004: 4003,\n // LOCUS_REQUIRES_MODERATOR_PIN_OR_GUEST\n 2423005: 4005,\n 2423006: 4005,\n 2423016: 4005,\n 2423017: 4005,\n 2423018: 4005,\n // LOCUS_OWNER_CONCURRENT_ACTIVE_MEETING_LIMIT_EXCEEDED\n 2423012: 12000,\n // LOCUS_LOBBY_FULL_CMR\n 2423021: 12001,\n // LOCUS_REQUIRES_MODERATOR_ROLE\n 2423007: 4006,\n // LOCUS_JOIN_RESTRICTED_USER_NOT_IN_ROOM\n 2403010: 4007,\n // LOCUS_MEETING_NOT_FOUND\n 2403014: 4011,\n // LOCUS_NOT_WEBEX_SITE\n 2403015: 4012,\n // LOCUS_INVALID_JOIN_TIME\n 2423010: 4013,\n // LOCUS_PHONE_NUMBER_NOT_A_NUMBER\n 2400008: 4016,\n // LOCUS_PHONE_NUMBER_TOO_LONG\n 2400011: 4017,\n // LOCUS_INVALID_DIALABLE_KEY\n 2400012: 4018,\n // LOCUS_ONE_ON_ONE_TO_SELF_NOT_ALLOWED\n 2403007: 4019,\n // LOCUS_REMOVED_PARTICIPANT\n 2401002: 4020,\n // LOCUS_MEETING_LINK_NOT_FOUND\n 2404002: 4021,\n // LOCUS_PHONE_NUMBER_TOO_SHORT_AFTER_IDD\n 2400009: 4022,\n // LOCUS_INVALID_INVITEE_ADDRESS\n 2400025: 4023,\n // LOCUS_PMR_USER_ACCOUNT_LOCKEDOUT\n 2423009: 4024,\n // LOCUS_RESOURCE_GUEST_FORBIDDEN\n 2403022: 4025,\n // LOCUS_PMR_SUSPENDED\n 2423008: 4026,\n // LOCUS_EMPTY_PHONE_NUMBER_OR_COUNTRY_CODE\n 2400006: 4027,\n // LOCUS_INVALID_SINCE_OR_SEQUENCE_HASH_IN_REQUEST\n 2400014: 1006,\n // LOCUS_CONVERSATION_NOT_FOUND\n 2404001: 4028,\n // LOCUS_RECORDING_CONTROL_NOT_SUPPORTED\n 2403025: 4029,\n // LOCUS_RECORDING_NOT_STARTED\n 2405001: 4029,\n // LOCUS_RECORDING_NOT_ENABLED\n 2409005: 4029,\n // E2EE_NOT_SUPPORTED\n 2409062: 12002,\n // LOCUS: ONLY_INVITED_USERS_CAN_ATTEND_THIS_MEETING\n 2423025: 12003,\n\n // ---- U2C Sign in catalog ------\n // The user exists, but hasn't completed activation. Needs to visit Atlas for more processing.\n 100002: 4102,\n // The user exists, had completed activation earlier, but requires re-activation because of change in login strategy.\n // Common example is: user signed up using an OAuth provider, but that OAuth provider was removed by org's admin. Now the user needs to re-activate using alternate login strategies: password-pin, new OAuth provider, SSO, etc.\n 100007: 4102,\n // The user does not exist\n 100001: 4103,\n // The user wasn't found, and the organization used for search is a domain-claimed organization.\n 100006: 4103,\n 100005: 4103, // Depracated because of an issue in the UCF Clients\n // If both email-hash and domain-hash are null or undefined.\n 100004: 4103,\n};\n\nexport const CLIENT_ERROR_CODE_TO_ERROR_PAYLOAD: Record<number, Partial<ClientEventError>> = {\n 1000: {\n errorDescription: ERROR_DESCRIPTIONS.UNKNOWN_CALL_FAILURE,\n category: 'signaling',\n fatal: true,\n name: 'locus.response',\n },\n 1001: {\n errorDescription: ERROR_DESCRIPTIONS.LOCUS_RATE_LIMITED_INCOMING,\n category: 'signaling',\n fatal: true,\n name: 'locus.response',\n },\n 1002: {\n errorDescription: ERROR_DESCRIPTIONS.LOCUS_RATE_LIMITED_OUTGOING,\n category: 'signaling',\n fatal: true,\n name: 'locus.response',\n },\n 1003: {\n errorDescription: ERROR_DESCRIPTIONS.LOCUS_UNAVAILABLE,\n category: 'signaling',\n fatal: true,\n name: 'locus.response',\n },\n 1004: {\n errorDescription: ERROR_DESCRIPTIONS.LOCUS_CONFLICT,\n category: 'signaling',\n fatal: true,\n name: 'locus.response',\n },\n 1005: {\n errorDescription: ERROR_DESCRIPTIONS.TIMEOUT,\n category: 'signaling',\n fatal: true,\n name: 'locus.response',\n },\n 1006: {\n errorDescription: ERROR_DESCRIPTIONS.LOCUS_INVALID_SEQUENCE_HASH,\n category: 'signaling',\n fatal: true,\n },\n 1007: {\n errorDescription: ERROR_DESCRIPTIONS.UPDATE_MEDIA_FAILED,\n category: 'signaling',\n fatal: true,\n },\n [AUTHENTICATION_FAILED_CODE]: {\n errorDescription: ERROR_DESCRIPTIONS.AUTHENTICATION_FAILED,\n category: 'network',\n fatal: true,\n },\n 1026: {\n errorDescription: ERROR_DESCRIPTIONS.NETWORK_ERROR,\n category: 'network',\n fatal: true,\n },\n 2001: {\n errorDescription: ERROR_DESCRIPTIONS.FAILED_TO_CONNECT_MEDIA,\n category: 'signaling',\n fatal: true,\n },\n 2002: {\n errorDescription: ERROR_DESCRIPTIONS.MEDIA_ENGINE_LOST,\n category: 'signaling',\n fatal: true,\n },\n 2003: {\n errorDescription: ERROR_DESCRIPTIONS.MEDIA_CONNECTION_LOST,\n category: 'signaling',\n fatal: true,\n },\n [ICE_FAILURE_CLIENT_CODE]: {\n errorDescription: ERROR_DESCRIPTIONS.ICE_FAILURE,\n category: 'media',\n fatal: true,\n },\n 2005: {\n errorDescription: ERROR_DESCRIPTIONS.MEDIA_ENGINE_HANG,\n category: 'signaling',\n fatal: true,\n },\n 2006: {\n errorDescription: ERROR_DESCRIPTIONS.ICE_SERVER_REJECTED,\n category: 'signaling',\n fatal: true,\n },\n [MISSING_ROAP_ANSWER_CLIENT_CODE]: {\n errorDescription: ERROR_DESCRIPTIONS.MISSING_ROAP_ANSWER,\n category: 'signaling',\n fatal: true,\n },\n [DTLS_HANDSHAKE_FAILED_CLIENT_CODE]: {\n errorDescription: ERROR_DESCRIPTIONS.DTLS_HANDSHAKE_FAILED,\n category: 'media',\n fatal: true,\n },\n [ICE_FAILED_WITHOUT_TURN_TLS_CLIENT_CODE]: {\n errorDescription: ERROR_DESCRIPTIONS.ICE_FAILED_WITHOUT_TURN_TLS,\n category: 'media',\n fatal: true,\n },\n [ICE_FAILED_WITH_TURN_TLS_CLIENT_CODE]: {\n errorDescription: ERROR_DESCRIPTIONS.ICE_FAILED_WITH_TURN_TLS,\n category: 'media',\n fatal: true,\n },\n 3001: {\n errorDescription: ERROR_DESCRIPTIONS.CALL_FULL,\n category: 'expected',\n fatal: true,\n },\n 3002: {\n errorDescription: ERROR_DESCRIPTIONS.ROOM_TOO_LARGE,\n category: 'expected',\n fatal: true,\n },\n 3004: {\n errorDescription: ERROR_DESCRIPTIONS.GUEST_ALREADY_ADDED,\n category: 'expected',\n fatal: false,\n },\n 3005: {\n errorDescription: ERROR_DESCRIPTIONS.LOCUS_USER_NOT_AUTHORISED,\n category: 'expected',\n fatal: true,\n },\n 3006: {\n errorDescription: ERROR_DESCRIPTIONS.CLOUDBERRY_UNAVAILABLE,\n category: 'expected',\n fatal: true,\n },\n 3007: {\n errorDescription: ERROR_DESCRIPTIONS.STREAM_ERROR_NO_MEDIA,\n category: 'expected',\n fatal: true,\n },\n 3013: {\n errorDescription: ERROR_DESCRIPTIONS.ROOM_TOO_LARGE_FREE_ACCOUNT,\n category: 'expected',\n fatal: false,\n },\n 4001: {\n errorDescription: ERROR_DESCRIPTIONS.MEETING_INACTIVE,\n category: 'expected',\n fatal: true,\n },\n 4002: {\n errorDescription: ERROR_DESCRIPTIONS.MEETING_LOCKED,\n category: 'expected',\n fatal: true,\n name: 'locus.response',\n },\n 4003: {\n errorDescription: ERROR_DESCRIPTIONS.MEETING_TERMINATING,\n category: 'expected',\n fatal: true,\n name: 'locus.leave',\n },\n 4004: {\n errorDescription: ERROR_DESCRIPTIONS.MODERATOR_PIN_OR_GUEST_REQUIRED,\n category: 'expected',\n fatal: false,\n },\n 4005: {\n errorDescription: ERROR_DESCRIPTIONS.MODERATOR_PIN_OR_GUEST_PIN_REQUIRED,\n category: 'expected',\n fatal: false,\n },\n 4006: {\n errorDescription: ERROR_DESCRIPTIONS.MODERATOR_REQUIRED,\n category: 'expected',\n fatal: false,\n },\n 4007: {\n errorDescription: ERROR_DESCRIPTIONS.USER_NOT_MEMBER_OF_ROOM,\n category: 'expected',\n fatal: true,\n },\n 4008: {\n errorDescription: ERROR_DESCRIPTIONS.NEW_LOCUS_ERROR,\n category: 'signaling',\n fatal: true,\n },\n 4009: {\n errorDescription: ERROR_DESCRIPTIONS.NETWORK_UNAVAILABLE,\n category: 'network',\n fatal: true,\n },\n 4010: {\n errorDescription: ERROR_DESCRIPTIONS.MEETING_UNAVAILABLE,\n category: 'expected',\n fatal: true,\n },\n 4011: {\n errorDescription: ERROR_DESCRIPTIONS.MEETING_ID_INVALID,\n category: 'expected',\n fatal: true,\n },\n 4012: {\n errorDescription: ERROR_DESCRIPTIONS.MEETING_SITE_INVALID,\n category: 'expected',\n fatal: true,\n },\n 4013: {\n errorDescription: ERROR_DESCRIPTIONS.LOCUS_INVALID_JOINTIME,\n category: 'expected',\n fatal: true,\n },\n 4014: {\n errorDescription: ERROR_DESCRIPTIONS.LOBBY_EXPIRED,\n category: 'expected',\n fatal: true,\n },\n 4015: {\n errorDescription: ERROR_DESCRIPTIONS.MEDIA_CONNECTION_LOST_PAIRED,\n category: 'expected',\n fatal: false,\n },\n 4016: {\n errorDescription: ERROR_DESCRIPTIONS.PHONE_NUMBER_NOT_A_NUMBER,\n category: 'expected',\n fatal: true,\n name: 'locus.response',\n },\n 4017: {\n errorDescription: ERROR_DESCRIPTIONS.PHONE_NUMBER_TOO_LONG,\n category: 'expected',\n fatal: true,\n name: 'locus.response',\n },\n 4018: {\n errorDescription: ERROR_DESCRIPTIONS.INVALID_DIALABLE_KEY,\n category: 'expected',\n fatal: true,\n name: 'locus.response',\n },\n 4019: {\n errorDescription: ERROR_DESCRIPTIONS.ONE_ON_ONE_TO_SELF_NOT_ALLOWED,\n category: 'expected',\n fatal: true,\n },\n 4020: {\n errorDescription: ERROR_DESCRIPTIONS.REMOVED_PARTICIPANT,\n category: 'expected',\n fatal: true,\n },\n 4021: {\n errorDescription: ERROR_DESCRIPTIONS.MEETING_LINK_NOT_FOUND,\n category: 'expected',\n fatal: true,\n },\n 4022: {\n errorDescription: ERROR_DESCRIPTIONS.PHONE_NUMBER_TOO_SHORT_AFTER_IDD,\n category: 'expected',\n fatal: true,\n },\n 4023: {\n errorDescription: ERROR_DESCRIPTIONS.INVALID_INVITEE_ADDRESS,\n category: 'expected',\n fatal: true,\n },\n 4024: {\n errorDescription: ERROR_DESCRIPTIONS.PMR_USER_ACCOUNT_LOCKED_OUT,\n category: 'expected',\n fatal: true,\n },\n 4025: {\n errorDescription: ERROR_DESCRIPTIONS.GUEST_FORBIDDEN,\n category: 'expected',\n fatal: true,\n },\n 4026: {\n errorDescription: ERROR_DESCRIPTIONS.PMR_ACCOUNT_SUSPENDED,\n category: 'expected',\n fatal: true,\n },\n 4027: {\n errorDescription: ERROR_DESCRIPTIONS.EMPTY_PHONE_NUMBER_OR_COUNTRY_CODE,\n category: 'expected',\n fatal: true,\n },\n 4028: {\n errorDescription: ERROR_DESCRIPTIONS.CONVERSATION_NOT_FOUND,\n category: 'expected',\n fatal: true,\n },\n 4029: {\n errorDescription: ERROR_DESCRIPTIONS.START_RECORDING_FAILED,\n category: 'expected',\n fatal: true,\n },\n 4030: {\n errorDescription: ERROR_DESCRIPTIONS.RECORDING_IN_PROGRESS_FAILED,\n category: 'expected',\n fatal: true,\n },\n 4032: {\n errorDescription: ERROR_DESCRIPTIONS.CAMERA_PERMISSION_DENIED,\n category: 'expected',\n fatal: true,\n },\n 4036: {\n errorDescription: ERROR_DESCRIPTIONS.REQUIRE_WEBEX_LOGIN,\n category: 'expected',\n fatal: true,\n },\n 5000: {\n errorDescription: ERROR_DESCRIPTIONS.SIP_CALLEE_BUSY,\n category: 'expected',\n fatal: true,\n },\n 5001: {\n errorDescription: ERROR_DESCRIPTIONS.SIP_CALLEE_NOT_FOUND,\n category: 'expected',\n fatal: true,\n },\n\n // Webex App API Error Codes\n 4100: {\n errorDescription: ERROR_DESCRIPTIONS.MEETING_INFO_LOOKUP_ERROR,\n category: 'signaling',\n fatal: true,\n },\n 3003: {\n errorDescription: ERROR_DESCRIPTIONS.CALL_FULL_ADD_GUEST,\n category: 'expected',\n fatal: false,\n },\n 4101: {\n errorDescription: ERROR_DESCRIPTIONS.USER_NOT_ALLOWED_ACCESS_MEETING,\n category: 'expected',\n fatal: true,\n },\n 4102: {\n errorDescription: ERROR_DESCRIPTIONS.USER_NEEDS_ACTIVATION,\n category: 'expected',\n fatal: true,\n },\n 4103: {\n errorDescription: ERROR_DESCRIPTIONS.SIGN_UP_INVALID_EMAIL,\n category: 'expected',\n fatal: true,\n },\n 2729: {\n errorDescription: ERROR_DESCRIPTIONS.NO_MEDIA_FOUND,\n category: 'expected',\n fatal: false,\n },\n 9999: {\n errorDescription: ERROR_DESCRIPTIONS.UNKNOWN_ERROR,\n category: 'other',\n fatal: true,\n },\n 12000: {\n errorDescription: ERROR_DESCRIPTIONS.FRAUD_DETECTION,\n category: 'expected',\n fatal: true,\n name: 'locus.response',\n shownToUser: true,\n },\n 12001: {\n errorDescription: ERROR_DESCRIPTIONS.LOCUS_LOBBY_FULL_CMR,\n category: 'expected',\n fatal: true,\n name: 'locus.response',\n shownToUser: true,\n },\n 12002: {\n errorDescription: ERROR_DESCRIPTIONS.E2EE_NOT_SUPPORTED,\n category: 'expected',\n fatal: true,\n name: 'locus.response',\n shownToUser: true,\n },\n 12003: {\n errorDescription: ERROR_DESCRIPTIONS.USER_NOT_INVITED_TO_JOIN,\n category: 'expected',\n fatal: true,\n },\n};\n\nexport const CALL_DIAGNOSTIC_EVENT_FAILED_TO_SEND = 'js_sdk_call_diagnostic_event_failed_to_send';\n"],"mappings":"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"}
|
package/dist/metrics.js
CHANGED
|
@@ -85,3 +85,12 @@ export declare const extractVersionMetadata: (version: string) => {
|
|
|
85
85
|
majorVersion: number;
|
|
86
86
|
minorVersion: number;
|
|
87
87
|
};
|
|
88
|
+
/**
|
|
89
|
+
* Generates client error codes for specific ice failures
|
|
90
|
+
* that happen when trying to add media in a meeting.
|
|
91
|
+
*/
|
|
92
|
+
export declare const generateClientErrorCodeForIceFailure: ({ signalingState, iceConnectionState, turnServerUsed, }: {
|
|
93
|
+
signalingState: RTCPeerConnection['signalingState'];
|
|
94
|
+
iceConnectionState: RTCPeerConnection['iceConnectionState'];
|
|
95
|
+
turnServerUsed: boolean;
|
|
96
|
+
}) => number;
|
|
@@ -6,10 +6,88 @@ export declare const NEW_LOCUS_ERROR_CLIENT_CODE = 4008;
|
|
|
6
6
|
export declare const MEETING_INFO_LOOKUP_ERROR_CLIENT_CODE = 4100;
|
|
7
7
|
export declare const UNKNOWN_ERROR = 9999;
|
|
8
8
|
export declare const ICE_FAILURE_CLIENT_CODE = 2004;
|
|
9
|
+
export declare const MISSING_ROAP_ANSWER_CLIENT_CODE = 2007;
|
|
10
|
+
export declare const DTLS_HANDSHAKE_FAILED_CLIENT_CODE = 2008;
|
|
11
|
+
export declare const ICE_FAILED_WITH_TURN_TLS_CLIENT_CODE = 2010;
|
|
12
|
+
export declare const ICE_FAILED_WITHOUT_TURN_TLS_CLIENT_CODE = 2009;
|
|
9
13
|
export declare const WBX_APP_API_URL = "wbxappapi";
|
|
10
14
|
export declare const BROWSER_MEDIA_ERROR_NAME_TO_CLIENT_ERROR_CODES_MAP: {
|
|
11
15
|
[x: string]: number;
|
|
12
16
|
};
|
|
17
|
+
export declare const ERROR_DESCRIPTIONS: {
|
|
18
|
+
UNKNOWN_CALL_FAILURE: string;
|
|
19
|
+
LOCUS_RATE_LIMITED_INCOMING: string;
|
|
20
|
+
LOCUS_RATE_LIMITED_OUTGOING: string;
|
|
21
|
+
LOCUS_UNAVAILABLE: string;
|
|
22
|
+
LOCUS_CONFLICT: string;
|
|
23
|
+
TIMEOUT: string;
|
|
24
|
+
LOCUS_INVALID_SEQUENCE_HASH: string;
|
|
25
|
+
AUTHENTICATION_FAILED: string;
|
|
26
|
+
NETWORK_ERROR: string;
|
|
27
|
+
UPDATE_MEDIA_FAILED: string;
|
|
28
|
+
FAILED_TO_CONNECT_MEDIA: string;
|
|
29
|
+
MEDIA_ENGINE_LOST: string;
|
|
30
|
+
MEDIA_CONNECTION_LOST: string;
|
|
31
|
+
ICE_FAILURE: string;
|
|
32
|
+
MEDIA_ENGINE_HANG: string;
|
|
33
|
+
ICE_SERVER_REJECTED: string;
|
|
34
|
+
CALL_FULL: string;
|
|
35
|
+
ROOM_TOO_LARGE: string;
|
|
36
|
+
GUEST_ALREADY_ADDED: string;
|
|
37
|
+
LOCUS_USER_NOT_AUTHORISED: string;
|
|
38
|
+
CLOUDBERRY_UNAVAILABLE: string;
|
|
39
|
+
ROOM_TOO_LARGE_FREE_ACCOUNT: string;
|
|
40
|
+
MEETING_INACTIVE: string;
|
|
41
|
+
MEETING_LOCKED: string;
|
|
42
|
+
MEETING_TERMINATING: string;
|
|
43
|
+
MODERATOR_PIN_OR_GUEST_REQUIRED: string;
|
|
44
|
+
MODERATOR_PIN_OR_GUEST_PIN_REQUIRED: string;
|
|
45
|
+
MODERATOR_REQUIRED: string;
|
|
46
|
+
USER_NOT_MEMBER_OF_ROOM: string;
|
|
47
|
+
NEW_LOCUS_ERROR: string;
|
|
48
|
+
NETWORK_UNAVAILABLE: string;
|
|
49
|
+
MEETING_UNAVAILABLE: string;
|
|
50
|
+
MEETING_ID_INVALID: string;
|
|
51
|
+
MEETING_SITE_INVALID: string;
|
|
52
|
+
LOCUS_INVALID_JOINTIME: string;
|
|
53
|
+
LOBBY_EXPIRED: string;
|
|
54
|
+
MEDIA_CONNECTION_LOST_PAIRED: string;
|
|
55
|
+
PHONE_NUMBER_NOT_A_NUMBER: string;
|
|
56
|
+
PHONE_NUMBER_TOO_LONG: string;
|
|
57
|
+
INVALID_DIALABLE_KEY: string;
|
|
58
|
+
ONE_ON_ONE_TO_SELF_NOT_ALLOWED: string;
|
|
59
|
+
REMOVED_PARTICIPANT: string;
|
|
60
|
+
MEETING_LINK_NOT_FOUND: string;
|
|
61
|
+
PHONE_NUMBER_TOO_SHORT_AFTER_IDD: string;
|
|
62
|
+
INVALID_INVITEE_ADDRESS: string;
|
|
63
|
+
PMR_USER_ACCOUNT_LOCKED_OUT: string;
|
|
64
|
+
GUEST_FORBIDDEN: string;
|
|
65
|
+
PMR_ACCOUNT_SUSPENDED: string;
|
|
66
|
+
EMPTY_PHONE_NUMBER_OR_COUNTRY_CODE: string;
|
|
67
|
+
CONVERSATION_NOT_FOUND: string;
|
|
68
|
+
SIP_CALLEE_BUSY: string;
|
|
69
|
+
SIP_CALLEE_NOT_FOUND: string;
|
|
70
|
+
START_RECORDING_FAILED: string;
|
|
71
|
+
RECORDING_IN_PROGRESS_FAILED: string;
|
|
72
|
+
MEETING_INFO_LOOKUP_ERROR: string;
|
|
73
|
+
CALL_FULL_ADD_GUEST: string;
|
|
74
|
+
REQUIRE_WEBEX_LOGIN: string;
|
|
75
|
+
USER_NOT_ALLOWED_ACCESS_MEETING: string;
|
|
76
|
+
USER_NEEDS_ACTIVATION: string;
|
|
77
|
+
SIGN_UP_INVALID_EMAIL: string;
|
|
78
|
+
UNKNOWN_ERROR: string;
|
|
79
|
+
NO_MEDIA_FOUND: string;
|
|
80
|
+
STREAM_ERROR_NO_MEDIA: string;
|
|
81
|
+
CAMERA_PERMISSION_DENIED: string;
|
|
82
|
+
FRAUD_DETECTION: string;
|
|
83
|
+
E2EE_NOT_SUPPORTED: string;
|
|
84
|
+
LOCUS_LOBBY_FULL_CMR: string;
|
|
85
|
+
USER_NOT_INVITED_TO_JOIN: string;
|
|
86
|
+
MISSING_ROAP_ANSWER: string;
|
|
87
|
+
DTLS_HANDSHAKE_FAILED: string;
|
|
88
|
+
ICE_FAILED_WITHOUT_TURN_TLS: string;
|
|
89
|
+
ICE_FAILED_WITH_TURN_TLS: string;
|
|
90
|
+
};
|
|
13
91
|
export declare const SERVICE_ERROR_CODES_TO_CLIENT_ERROR_CODES_MAP: {
|
|
14
92
|
58400: number;
|
|
15
93
|
99002: number;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webex/internal-plugin-metrics",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.279",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -28,13 +28,13 @@
|
|
|
28
28
|
"build": "yarn run -T tsc --declaration true --declarationDir ./dist/types"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@webex/common": "3.0.0-beta.
|
|
32
|
-
"@webex/common-timers": "3.0.0-beta.
|
|
31
|
+
"@webex/common": "3.0.0-beta.279",
|
|
32
|
+
"@webex/common-timers": "3.0.0-beta.279",
|
|
33
33
|
"@webex/event-dictionary-ts": "^1.0.1290",
|
|
34
|
-
"@webex/internal-plugin-device": "3.0.0-beta.
|
|
35
|
-
"@webex/internal-plugin-metrics": "3.0.0-beta.
|
|
36
|
-
"@webex/test-helper-chai": "3.0.0-beta.
|
|
37
|
-
"@webex/test-helper-mock-webex": "3.0.0-beta.
|
|
38
|
-
"@webex/webex-core": "3.0.0-beta.
|
|
34
|
+
"@webex/internal-plugin-device": "3.0.0-beta.279",
|
|
35
|
+
"@webex/internal-plugin-metrics": "3.0.0-beta.279",
|
|
36
|
+
"@webex/test-helper-chai": "3.0.0-beta.279",
|
|
37
|
+
"@webex/test-helper-mock-webex": "3.0.0-beta.279",
|
|
38
|
+
"@webex/webex-core": "3.0.0-beta.279"
|
|
39
39
|
}
|
|
40
40
|
}
|
|
@@ -12,7 +12,15 @@ import {
|
|
|
12
12
|
MediaQualityEventVideoSetupDelayPayload,
|
|
13
13
|
MetricEventNames,
|
|
14
14
|
} from '../metrics.types';
|
|
15
|
-
import {
|
|
15
|
+
import {
|
|
16
|
+
BROWSER_MEDIA_ERROR_NAME_TO_CLIENT_ERROR_CODES_MAP,
|
|
17
|
+
DTLS_HANDSHAKE_FAILED_CLIENT_CODE,
|
|
18
|
+
ICE_FAILED_WITHOUT_TURN_TLS_CLIENT_CODE,
|
|
19
|
+
ICE_FAILED_WITH_TURN_TLS_CLIENT_CODE,
|
|
20
|
+
ICE_FAILURE_CLIENT_CODE,
|
|
21
|
+
MISSING_ROAP_ANSWER_CLIENT_CODE,
|
|
22
|
+
WBX_APP_API_URL,
|
|
23
|
+
} from './config';
|
|
16
24
|
|
|
17
25
|
const {getOSName, getOSVersion, getBrowserName, getBrowserVersion} = BrowserDetection();
|
|
18
26
|
|
|
@@ -318,3 +326,37 @@ export const extractVersionMetadata = (version: string) => {
|
|
|
318
326
|
minorVersion: parseInt(minorVersion, 10),
|
|
319
327
|
};
|
|
320
328
|
};
|
|
329
|
+
|
|
330
|
+
/**
|
|
331
|
+
* Generates client error codes for specific ice failures
|
|
332
|
+
* that happen when trying to add media in a meeting.
|
|
333
|
+
*/
|
|
334
|
+
export const generateClientErrorCodeForIceFailure = ({
|
|
335
|
+
signalingState,
|
|
336
|
+
iceConnectionState,
|
|
337
|
+
turnServerUsed,
|
|
338
|
+
}: {
|
|
339
|
+
signalingState: RTCPeerConnection['signalingState'];
|
|
340
|
+
iceConnectionState: RTCPeerConnection['iceConnectionState'];
|
|
341
|
+
turnServerUsed: boolean;
|
|
342
|
+
}) => {
|
|
343
|
+
let errorCode = ICE_FAILURE_CLIENT_CODE; // default;
|
|
344
|
+
|
|
345
|
+
if (signalingState === 'have-local-offer') {
|
|
346
|
+
errorCode = MISSING_ROAP_ANSWER_CLIENT_CODE;
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
if (signalingState === 'stable' && iceConnectionState === 'connected') {
|
|
350
|
+
errorCode = DTLS_HANDSHAKE_FAILED_CLIENT_CODE;
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
if (signalingState !== 'have-local-offer' && iceConnectionState !== 'connected') {
|
|
354
|
+
if (turnServerUsed) {
|
|
355
|
+
errorCode = ICE_FAILED_WITH_TURN_TLS_CLIENT_CODE;
|
|
356
|
+
} else {
|
|
357
|
+
errorCode = ICE_FAILED_WITHOUT_TURN_TLS_CLIENT_CODE;
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
return errorCode;
|
|
362
|
+
};
|
|
@@ -12,6 +12,10 @@ export const NEW_LOCUS_ERROR_CLIENT_CODE = 4008;
|
|
|
12
12
|
export const MEETING_INFO_LOOKUP_ERROR_CLIENT_CODE = 4100;
|
|
13
13
|
export const UNKNOWN_ERROR = 9999; // Unexpected error that is not a meetingInfo error, locus error or browser media error.
|
|
14
14
|
export const ICE_FAILURE_CLIENT_CODE = 2004;
|
|
15
|
+
export const MISSING_ROAP_ANSWER_CLIENT_CODE = 2007;
|
|
16
|
+
export const DTLS_HANDSHAKE_FAILED_CLIENT_CODE = 2008;
|
|
17
|
+
export const ICE_FAILED_WITH_TURN_TLS_CLIENT_CODE = 2010;
|
|
18
|
+
export const ICE_FAILED_WITHOUT_TURN_TLS_CLIENT_CODE = 2009;
|
|
15
19
|
export const WBX_APP_API_URL = 'wbxappapi'; // MeetingInfo WebexAppApi response object normally contains a body.url that includes the string 'wbxappapi'
|
|
16
20
|
|
|
17
21
|
// Found in https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia
|
|
@@ -37,7 +41,7 @@ export const BROWSER_MEDIA_ERROR_NAME_TO_CLIENT_ERROR_CODES_MAP = {
|
|
|
37
41
|
[BROWSER_MEDIA_ERROR_NAMES.TYPE_ERROR]: 2729, // Thrown if the list of constraints specified is empty, or has all constraints set to false. This can also happen if you try to call getUserMedia() in an insecure context, since navigator.mediaDevices is undefined in an insecure context.
|
|
38
42
|
};
|
|
39
43
|
|
|
40
|
-
const ERROR_DESCRIPTIONS = {
|
|
44
|
+
export const ERROR_DESCRIPTIONS = {
|
|
41
45
|
UNKNOWN_CALL_FAILURE: 'UnknownCallFailure',
|
|
42
46
|
LOCUS_RATE_LIMITED_INCOMING: 'LocusRateLimitedIncoming',
|
|
43
47
|
LOCUS_RATE_LIMITED_OUTGOING: 'LocusRateLimitedOutgoing',
|
|
@@ -106,6 +110,10 @@ const ERROR_DESCRIPTIONS = {
|
|
|
106
110
|
E2EE_NOT_SUPPORTED: 'E2EENotSupported',
|
|
107
111
|
LOCUS_LOBBY_FULL_CMR: 'LocusLobbyFullCMR',
|
|
108
112
|
USER_NOT_INVITED_TO_JOIN: 'UserNotInvitedToJoin',
|
|
113
|
+
MISSING_ROAP_ANSWER: 'MissingRoapAnswer',
|
|
114
|
+
DTLS_HANDSHAKE_FAILED: 'DTLSHandshakeFailed',
|
|
115
|
+
ICE_FAILED_WITHOUT_TURN_TLS: 'ICEFailedWithoutTURN_TLS',
|
|
116
|
+
ICE_FAILED_WITH_TURN_TLS: 'ICEFailedWithTURN_TLS',
|
|
109
117
|
};
|
|
110
118
|
|
|
111
119
|
export const SERVICE_ERROR_CODES_TO_CLIENT_ERROR_CODES_MAP = {
|
|
@@ -339,9 +347,9 @@ export const CLIENT_ERROR_CODE_TO_ERROR_PAYLOAD: Record<number, Partial<ClientEv
|
|
|
339
347
|
category: 'signaling',
|
|
340
348
|
fatal: true,
|
|
341
349
|
},
|
|
342
|
-
|
|
350
|
+
[ICE_FAILURE_CLIENT_CODE]: {
|
|
343
351
|
errorDescription: ERROR_DESCRIPTIONS.ICE_FAILURE,
|
|
344
|
-
category: '
|
|
352
|
+
category: 'media',
|
|
345
353
|
fatal: true,
|
|
346
354
|
},
|
|
347
355
|
2005: {
|
|
@@ -354,6 +362,26 @@ export const CLIENT_ERROR_CODE_TO_ERROR_PAYLOAD: Record<number, Partial<ClientEv
|
|
|
354
362
|
category: 'signaling',
|
|
355
363
|
fatal: true,
|
|
356
364
|
},
|
|
365
|
+
[MISSING_ROAP_ANSWER_CLIENT_CODE]: {
|
|
366
|
+
errorDescription: ERROR_DESCRIPTIONS.MISSING_ROAP_ANSWER,
|
|
367
|
+
category: 'signaling',
|
|
368
|
+
fatal: true,
|
|
369
|
+
},
|
|
370
|
+
[DTLS_HANDSHAKE_FAILED_CLIENT_CODE]: {
|
|
371
|
+
errorDescription: ERROR_DESCRIPTIONS.DTLS_HANDSHAKE_FAILED,
|
|
372
|
+
category: 'media',
|
|
373
|
+
fatal: true,
|
|
374
|
+
},
|
|
375
|
+
[ICE_FAILED_WITHOUT_TURN_TLS_CLIENT_CODE]: {
|
|
376
|
+
errorDescription: ERROR_DESCRIPTIONS.ICE_FAILED_WITHOUT_TURN_TLS,
|
|
377
|
+
category: 'media',
|
|
378
|
+
fatal: true,
|
|
379
|
+
},
|
|
380
|
+
[ICE_FAILED_WITH_TURN_TLS_CLIENT_CODE]: {
|
|
381
|
+
errorDescription: ERROR_DESCRIPTIONS.ICE_FAILED_WITH_TURN_TLS,
|
|
382
|
+
category: 'media',
|
|
383
|
+
fatal: true,
|
|
384
|
+
},
|
|
357
385
|
3001: {
|
|
358
386
|
errorDescription: ERROR_DESCRIPTIONS.CALL_FULL,
|
|
359
387
|
category: 'expected',
|
|
@@ -4,6 +4,13 @@ import {WebexHttpError} from '@webex/webex-core';
|
|
|
4
4
|
|
|
5
5
|
import * as CallDiagnosticUtils from '../../../../src/call-diagnostic/call-diagnostic-metrics.util';
|
|
6
6
|
import CallDiagnosticLatencies from '../../../../src/call-diagnostic/call-diagnostic-metrics-latencies';
|
|
7
|
+
import {
|
|
8
|
+
DTLS_HANDSHAKE_FAILED_CLIENT_CODE,
|
|
9
|
+
ICE_FAILED_WITHOUT_TURN_TLS_CLIENT_CODE,
|
|
10
|
+
ICE_FAILED_WITH_TURN_TLS_CLIENT_CODE,
|
|
11
|
+
ICE_FAILURE_CLIENT_CODE,
|
|
12
|
+
MISSING_ROAP_ANSWER_CLIENT_CODE,
|
|
13
|
+
} from '../../../../src/call-diagnostic/config';
|
|
7
14
|
|
|
8
15
|
const {
|
|
9
16
|
clearEmptyKeysRecursively,
|
|
@@ -16,6 +23,7 @@ const {
|
|
|
16
23
|
setMetricTimings,
|
|
17
24
|
isNetworkError,
|
|
18
25
|
isUnauthorizedError,
|
|
26
|
+
generateClientErrorCodeForIceFailure
|
|
19
27
|
} = CallDiagnosticUtils;
|
|
20
28
|
|
|
21
29
|
describe('internal-plugin-metrics', () => {
|
|
@@ -538,4 +546,20 @@ describe('internal-plugin-metrics', () => {
|
|
|
538
546
|
});
|
|
539
547
|
});
|
|
540
548
|
});
|
|
549
|
+
|
|
550
|
+
describe('generateClientErrorCodeForIceFailure', () => {
|
|
551
|
+
[
|
|
552
|
+
{ signalingState: 'have-local-offer', iceConnectionState: 'connected', turnServerUsed: true, errorCode: MISSING_ROAP_ANSWER_CLIENT_CODE},
|
|
553
|
+
{ signalingState: 'stable', iceConnectionState: 'connected', turnServerUsed: true, errorCode: DTLS_HANDSHAKE_FAILED_CLIENT_CODE},
|
|
554
|
+
{ signalingState: 'stable', iceConnectionState: 'failed', turnServerUsed: true, errorCode: ICE_FAILED_WITH_TURN_TLS_CLIENT_CODE},
|
|
555
|
+
{ signalingState: 'stable', iceConnectionState: 'failed', turnServerUsed: false, errorCode: ICE_FAILED_WITHOUT_TURN_TLS_CLIENT_CODE},
|
|
556
|
+
].forEach(({signalingState, iceConnectionState, turnServerUsed, errorCode}: any) => {
|
|
557
|
+
it('returns expected result', () => {
|
|
558
|
+
assert.deepEqual(
|
|
559
|
+
generateClientErrorCodeForIceFailure({signalingState, iceConnectionState, turnServerUsed}),
|
|
560
|
+
errorCode
|
|
561
|
+
);
|
|
562
|
+
});
|
|
563
|
+
});
|
|
564
|
+
});
|
|
541
565
|
});
|