@webex/calling 3.10.0-next.8 → 3.10.0-wxc-disconnect.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/dist/CallHistory/CallHistory.js +41 -42
  2. package/dist/CallHistory/CallHistory.js.map +1 -1
  3. package/dist/CallHistory/CallHistory.test.js +5 -120
  4. package/dist/CallHistory/CallHistory.test.js.map +1 -1
  5. package/dist/CallSettings/UcmBackendConnector.js +6 -6
  6. package/dist/CallSettings/UcmBackendConnector.js.map +1 -1
  7. package/dist/CallSettings/UcmBackendConnector.test.js +1 -2
  8. package/dist/CallSettings/UcmBackendConnector.test.js.map +1 -1
  9. package/dist/CallSettings/WxCallBackendConnector.js +43 -38
  10. package/dist/CallSettings/WxCallBackendConnector.js.map +1 -1
  11. package/dist/CallSettings/WxCallBackendConnector.test.js +1 -4
  12. package/dist/CallSettings/WxCallBackendConnector.test.js.map +1 -1
  13. package/dist/CallingClient/CallingClient.js +207 -161
  14. package/dist/CallingClient/CallingClient.js.map +1 -1
  15. package/dist/CallingClient/CallingClient.test.js +290 -152
  16. package/dist/CallingClient/CallingClient.test.js.map +1 -1
  17. package/dist/CallingClient/calling/call.js +53 -50
  18. package/dist/CallingClient/calling/call.js.map +1 -1
  19. package/dist/CallingClient/calling/call.test.js +51 -93
  20. package/dist/CallingClient/calling/call.test.js.map +1 -1
  21. package/dist/CallingClient/calling/callManager.test.js +1 -1
  22. package/dist/CallingClient/calling/callManager.test.js.map +1 -1
  23. package/dist/CallingClient/registration/register.js +4 -5
  24. package/dist/CallingClient/registration/register.js.map +1 -1
  25. package/dist/CallingClient/registration/webWorker.js +3 -3
  26. package/dist/CallingClient/registration/webWorker.js.map +1 -1
  27. package/dist/CallingClient/registration/webWorkerStr.js +1 -1
  28. package/dist/CallingClient/registration/webWorkerStr.js.map +1 -1
  29. package/dist/Contacts/ContactsClient.js +45 -39
  30. package/dist/Contacts/ContactsClient.js.map +1 -1
  31. package/dist/Contacts/ContactsClient.test.js +3 -4
  32. package/dist/Contacts/ContactsClient.test.js.map +1 -1
  33. package/dist/Events/impl/index.js +1 -1
  34. package/dist/Events/impl/index.js.map +1 -1
  35. package/dist/Logger/index.js +3 -3
  36. package/dist/Logger/index.js.map +1 -1
  37. package/dist/Logger/index.test.js +1 -1
  38. package/dist/Logger/index.test.js.map +1 -1
  39. package/dist/SDKConnector/types.js.map +1 -1
  40. package/dist/Voicemail/BroadworksBackendConnector.js +54 -47
  41. package/dist/Voicemail/BroadworksBackendConnector.js.map +1 -1
  42. package/dist/Voicemail/BroadworksBackendConnector.test.js +2 -10
  43. package/dist/Voicemail/BroadworksBackendConnector.test.js.map +1 -1
  44. package/dist/Voicemail/UcmBackendConnector.js +32 -29
  45. package/dist/Voicemail/UcmBackendConnector.js.map +1 -1
  46. package/dist/Voicemail/Voicemail.js +102 -77
  47. package/dist/Voicemail/Voicemail.js.map +1 -1
  48. package/dist/Voicemail/WxCallBackendConnector.js +59 -46
  49. package/dist/Voicemail/WxCallBackendConnector.js.map +1 -1
  50. package/dist/Voicemail/WxCallBackendConnector.test.js +18 -44
  51. package/dist/Voicemail/WxCallBackendConnector.test.js.map +1 -1
  52. package/dist/common/Utils.js +2 -2
  53. package/dist/common/Utils.js.map +1 -1
  54. package/dist/common/Utils.test.js +8 -4
  55. package/dist/common/Utils.test.js.map +1 -1
  56. package/dist/common/testUtil.js +1 -2
  57. package/dist/common/testUtil.js.map +1 -1
  58. package/dist/module/CallHistory/CallHistory.js +11 -20
  59. package/dist/module/CallSettings/UcmBackendConnector.js +2 -1
  60. package/dist/module/CallSettings/WxCallBackendConnector.js +15 -10
  61. package/dist/module/CallingClient/CallingClient.js +123 -83
  62. package/dist/module/CallingClient/calling/call.js +23 -17
  63. package/dist/module/CallingClient/registration/register.js +3 -3
  64. package/dist/module/CallingClient/registration/webWorker.js +2 -2
  65. package/dist/module/CallingClient/registration/webWorkerStr.js +2 -2
  66. package/dist/module/Contacts/ContactsClient.js +25 -19
  67. package/dist/module/Events/impl/index.js +1 -1
  68. package/dist/module/Logger/index.js +2 -2
  69. package/dist/module/Voicemail/BroadworksBackendConnector.js +18 -10
  70. package/dist/module/Voicemail/UcmBackendConnector.js +11 -7
  71. package/dist/module/Voicemail/Voicemail.js +68 -42
  72. package/dist/module/Voicemail/WxCallBackendConnector.js +28 -14
  73. package/dist/module/common/Utils.js +2 -2
  74. package/dist/module/common/testUtil.js +0 -1
  75. package/dist/types/CallHistory/CallHistory.d.ts.map +1 -1
  76. package/dist/types/CallSettings/UcmBackendConnector.d.ts.map +1 -1
  77. package/dist/types/CallSettings/WxCallBackendConnector.d.ts.map +1 -1
  78. package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
  79. package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
  80. package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
  81. package/dist/types/CallingClient/registration/webWorkerStr.d.ts +1 -1
  82. package/dist/types/CallingClient/registration/webWorkerStr.d.ts.map +1 -1
  83. package/dist/types/Contacts/ContactsClient.d.ts +0 -1
  84. package/dist/types/Contacts/ContactsClient.d.ts.map +1 -1
  85. package/dist/types/Logger/index.d.ts +2 -1
  86. package/dist/types/Logger/index.d.ts.map +1 -1
  87. package/dist/types/SDKConnector/types.d.ts +0 -10
  88. package/dist/types/SDKConnector/types.d.ts.map +1 -1
  89. package/dist/types/Voicemail/BroadworksBackendConnector.d.ts.map +1 -1
  90. package/dist/types/Voicemail/UcmBackendConnector.d.ts.map +1 -1
  91. package/dist/types/Voicemail/Voicemail.d.ts.map +1 -1
  92. package/dist/types/Voicemail/WxCallBackendConnector.d.ts.map +1 -1
  93. package/dist/types/common/Utils.d.ts.map +1 -1
  94. package/dist/types/common/testUtil.d.ts +0 -1
  95. package/dist/types/common/testUtil.d.ts.map +1 -1
  96. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"names":["platform","_interopRequireWildcard","require","_uuid","_types","_Metrics","_CallError","_types2","_types3","_Logger","_interopRequireDefault","_CallingDeviceError","_constants","_constants2","_SDKConnector","_LineError","e","t","_WeakMap","r","n","__esModule","o","i","f","__proto__","default","_typeof","has","get","set","_t","hasOwnProperty","call","_Object$defineProperty","_Object$getOwnPropertyDescriptor","ownKeys","_Object$keys2","_Object$getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_createForOfIteratorHelper","_Symbol","_Symbol$iterator","_Array$isArray","_unsupportedIterableToArray","_n","F","s","done","value","TypeError","a","u","next","return","_arrayLikeToArray","toString","slice","constructor","name","_Array$from","test","Array","filterMobiusUris","mobiusServers","defaultMobiusUrl","_mobiusServers$primar","_mobiusServers$backup","logContext","file","UTILS_FILE","method","urisArrayPrimary","urisArrayBackup","primary","uris","log","info","_iterator","_step","uri","concat","URL_ENDPOINT","err","backup","_iterator2","_step2","primaryUris","backupUris","indexOf","updateCallErrorContext","errContext","type","message","correlationId","callError","errObj","context","setCallError","updateLineErrorContext","status","lineError","setError","updateErrorContext","clientError","emitFinalFailure","emitterCb","loggerContext","createLineError","ERROR_TYPE","DEFAULT","RegistrationStatus","INACTIVE","SERVICE_UNAVAILABLE","handleRegistrationErrors","_x","_x2","_x3","_x4","_x5","_handleRegistrationErrors","_asyncToGenerator2","_regenerator","mark","_callee","retry429Cb","restoreRegCb","errorCode","finalError","caller","retryAfter","errorBody","code","errorMessage","_caller","_errorMessage","_errorMessage2","_errorMessage3","wrap","_callee$","_context","prev","Number","statusCode","warn","t0","ERROR_CODE","BAD_REQUEST","UNAUTHORIZED","DEVICE_NOT_FOUND","TOO_MANY_REQUESTS","INTERNAL_SERVER_ERROR","FORBIDDEN","abrupt","TOKEN_ERROR","NOT_FOUND","headers","SERVER_ERROR","body","FORBIDDEN_ERROR","t1","DEVICE_ERROR_CODE","DEVICE_LIMIT_EXCEEDED","DEVICE_CREATION_DISABLED","DEVICE_CREATION_FAILED","stop","handleCallingClientErrors","_x6","_x7","_x8","_handleCallingClientErrors","_callee2","_callee2$","_context2","createClientError","uploadLogs","handleCallErrors","_x9","_x0","_x1","_x10","_x11","_x12","_x13","_handleCallErrors","_callee3","errorLayer","retryCb","retryInterval","_callee3$","_context3","createCallError","CALL_ERROR_CODE","INVALID_STATUS_UPDATE","DEVICE_NOT_REGISTERED","CALL_NOT_FOUND","ERROR_PROCESSING","USER_BUSY","PARSING_ERROR","NOT_ACCEPTABLE","CALL_REJECTED","NOT_AVAILABLE","serviceErrorCodeHandler","_x14","_x15","_serviceErrorCodeHandler","_callee4","failureMessage","errorDetails","_errorDetails","_errorDetails2","_errorDetails3","_errorDetails4","_errorDetails5","_errorDetails6","_errorDetails7","_errorDetails8","_callee4$","_context4","REQUEST_TIMEOUT","NOT_IMPLEMENTED","data","error","parseMediaQualityStatistics","stats","navigator","userAgent","DUMMY_METRICS","id","inboundCodec","outboundCodec","localCandidates","candidatePairs","codecList","rxStat","txStat","vqPayload","jitterBufferDelay","jitterBufferEmittedCount","totalRoundTripTime","roundTripTimeMeasurements","selectedPair","bitRate","maxJitter","VoPktSizeMs","report","_keys","statName","TIMESTAMP","TYPE","MEDIA_ID","RTC_ICE_CANDIDATE_PAIR","LOCAL_CANDIDATE_ID","RTC_ICE_CANDIDATE","NETWORK_TYPE","INBOUND_CODEC_MATCH","OUTBOUND_CODEC_MATCH","RTC_CODEC","MIME_TYPE","REMOTE_INBOUND_RTP","TOTAL_ROUND_TRIP_TIME","ROUND_TRIP_TIME_MEASUREMENTS","INBOUND_RTP","CODEC_ID","PACKETS_RECEIVED","Pkt","BYTES_RECEIVED","Oct","PACKETS_DISCARDED","LatePkt","PACKETS_LOST","LostPkt","JITTER_BUFFER_DELAY","JITTER_BUFFER_EMITTED_COUNT","TRANSPORT","SELECTED_CANDIDATE_PAIR_ID","OUTBOUND_RTP","PACKETS_SENT","BYTES_SENT","TARGET_BIT_RATE","MEDIA_SOURCE","TOTAL_SAMPLES_DURATION","Dur","VoOneWayDelayMs","hwType","os","version","networkType","AvgJit","VoRxCodec","split","txVqPayload","VoTxCodec","rtpBitRate","byeStats","VQMetrics","RTP_RX_STAT","RTP_TX_STAT","_stringify","waitForMsecs","exports","msec","_promise","resolve","setTimeout","getCallingBackEnd","webex","entModels","internal","device","features","entitlement","models","callingBackend","callingBehavior","NATIVE_WEBEX_TEAMS_CALLING","VALUES","KEY","ENTITLEMENT_BASIC","ENTITLEMENT_STANDARD","CALLING_BACKEND","WXC","ENTITLEMENT_BROADWORKS_CONN","BWRKS","NATIVE_SIP_CALL_TO_UCM","UCM","INVALID","getXsiActionEndpoint","_x16","_x17","_x18","_getXsiActionEndpoint","_callee5","_userIdResponse$heade","userIdResponse","response","xsiEndpoint","_bwTokenResponse$head","bwTokenResponse","_response","_xsiEndpoint","xsiUrl","errorInfo","_callee5$","_context5","request","services","_serviceUrls","hydra","XSI_ACTION_ENDPOINT_ORG_URL_PARAM","HTTP_METHODS","GET","sent","trackingid","ITEMS","XSI_ACTION_ENDPOINT","wdm","DEVICES","SETTINGS","BW_XSI_URL","endsWith","BW_XSI_ENDPOINT_VERSION","BW_XSI_ENDPOINT_VERSION_WITH_SLASH","Error","getVgActionEndpoint","getSortedVoicemailList","voiceMessageList","sortOrder","SORT","DESC","sort","voiceMail","nextVoiceMail","TIME","PLACEHOLDER_KEY","ASC","scimQuery","_x19","_scimQuery","_callee6","_response$headers","sdkConnector","isProd","webexHost","scimUrl","query","_callee6$","_context6","SDKConnector","getWebex","url","includes","WEBEX_API_PROD","WEBEX_API_BTS","IDENTITY_ENDPOINT_RESOURCE","SCIM_ENDPOINT_RESOURCE","orgId","SCIM_USER_FILTER","encodeURIComponent","CISCO_DEVICE_URL","SPARK_USER_AGENT","CALLING_USER_AGENT","resolveCallerIdDisplay","_x20","_resolveCallerIdDisplay","_callee7","_resolution","resolution","displayResult","res","_scimResource$phoneNu","_scimResource$phoneNu2","_scimResource$photos","scimResource","numberObj","photo","_callee7$","_context7","totalResults","Resources","displayName","phoneNumbers","find","num","toLowerCase","photos","avatarSrc","resolveCallerIdByName","_x21","_resolveCallerIdByName","_callee8","searchDirectory","_callee8$","_context8","people","list","then","results","items","Buffer","from","pop","numObj","avatar","resolveContact","_x22","_resolveContact","_callee9","callingPartyInfo","_callee9$","_context9","userExternalId","$","storeVoicemailList","vmEncodedList","sessionStorage","setItem","fetchVoicemailList","offset","offsetLimit","moreVoicemails","requiredVoicemailList","voicemailList","JSON","parse","getItem","messages","moreVMAvailable","inferIdFromUuid","decodeType","INFER_ID_CONSTANT","isValidServiceIndicator","indicator","_values","ServiceIndicator","some","v","isValidServiceDomain","serviceData","regexp","domain","CALLING","GUEST_CALLING","validateServiceData","allowedValues","formattedValues","join","replace","modifySdpForIPv4","sdp","ipv6CLineMatches","match","hasIPv6CLine","ipv4CandidateMatch","ipv4Address","ipv4CandidateAdded","full","foundation","componentId","transport","priority","connectionAddress","port","candidateType","newFoundation","_parseInt2","_uploadLogs","_callee0","metaData","throwError","feedbackId","errorLog","_args0","_callee0$","_context0","undefined","uuid","support","submitLogs","getMetricManager","submitUploadLogsMetric","METRIC_EVENT","UPLOAD_LOGS_SUCCESS","UPLOAD_LOGS_ACTION","METRIC_TYPE","BEHAVIORAL","callId","broadworksCorrelationInfo","userId","UPLOAD_LOGS_FAILED"],"sources":["Utils.ts"],"sourcesContent":["/* eslint-disable no-fallthrough */\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable @typescript-eslint/no-shadow */\nimport * as platform from 'platform';\nimport {v4 as uuid} from 'uuid';\nimport {METRIC_EVENT, METRIC_TYPE, UPLOAD_LOGS_ACTION} from '../Metrics/types';\nimport {getMetricManager} from '../Metrics';\nimport {restoreRegistrationCallBack, retry429CallBack} from '../CallingClient/registration/types';\nimport {CallingClientErrorEmitterCallback} from '../CallingClient/types';\nimport {LogContext} from '../Logger/types';\nimport {\n CallErrorEmitterCallBack,\n CallRtpStats,\n ReceiveStatistics,\n RetryCallBack,\n TransmitStatistics,\n TransmitterVqPayload,\n VoiceQualityMetrics,\n} from '../CallingClient/calling/types';\nimport {createCallError} from '../Errors/catalog/CallError';\nimport {\n DEVICE_ERROR_CODE,\n ErrorContext,\n ERROR_CODE,\n ErrorObject,\n ERROR_TYPE,\n CallErrorObject,\n CALL_ERROR_CODE,\n ERROR_LAYER,\n LineErrorObject,\n} from '../Errors/types';\nimport {\n CALLING_BACKEND,\n CorrelationId,\n DecodeType,\n DisplayInformation,\n HTTP_METHODS,\n IDeviceInfo,\n LogsMetaData,\n MobiusServers,\n RegistrationStatus,\n SCIMListResponse,\n SORT,\n ServiceData,\n ServiceIndicator,\n UploadLogsResponse,\n WebexRequestPayload,\n} from './types';\nimport log from '../Logger';\nimport {CallError, CallingClientError} from '../Errors';\nimport {createClientError} from '../Errors/catalog/CallingDeviceError';\n\nimport {\n BYTES_RECEIVED,\n BYTES_SENT,\n CALLING_USER_AGENT,\n CISCO_DEVICE_URL,\n CODEC_ID,\n DUMMY_METRICS,\n INBOUND_CODEC_MATCH,\n INBOUND_RTP,\n JITTER_BUFFER_DELAY,\n JITTER_BUFFER_EMITTED_COUNT,\n LOCAL_CANDIDATE_ID,\n MEDIA_ID,\n MEDIA_SOURCE,\n MIME_TYPE,\n NETWORK_TYPE,\n OUTBOUND_CODEC_MATCH,\n OUTBOUND_RTP,\n PACKETS_DISCARDED,\n PACKETS_LOST,\n PACKETS_RECEIVED,\n PACKETS_SENT,\n REMOTE_INBOUND_RTP,\n ROUND_TRIP_TIME_MEASUREMENTS,\n RTC_CODEC,\n RTC_ICE_CANDIDATE,\n RTC_ICE_CANDIDATE_PAIR,\n RTP_RX_STAT,\n RTP_TX_STAT,\n SELECTED_CANDIDATE_PAIR_ID,\n SPARK_USER_AGENT,\n TARGET_BIT_RATE,\n TIMESTAMP,\n TOTAL_ROUND_TRIP_TIME,\n TOTAL_SAMPLES_DURATION,\n TRANSPORT,\n TYPE,\n URL_ENDPOINT,\n UTILS_FILE,\n} from '../CallingClient/constants';\nimport {\n DeleteCallHistoryRecordsResponse,\n JanusResponseEvent,\n UCMLinesResponse,\n UpdateMissedCallsResponse,\n} from '../CallHistory/types';\nimport {\n VoicemailResponseEvent,\n MessageInfo,\n CallingPartyInfo,\n FilteredVoicemail,\n} from '../Voicemail/types';\nimport {\n DEVICES,\n ITEMS,\n SETTINGS,\n VALUES,\n KEY,\n TIME,\n PLACEHOLDER_KEY,\n XSI_ACTION_ENDPOINT_ORG_URL_PARAM,\n XSI_ACTION_ENDPOINT,\n INFER_ID_CONSTANT,\n BW_XSI_URL,\n ENTITLEMENT_BASIC,\n ENTITLEMENT_BROADWORKS_CONN,\n ENTITLEMENT_STANDARD,\n NATIVE_WEBEX_TEAMS_CALLING,\n NATIVE_SIP_CALL_TO_UCM,\n BW_XSI_ENDPOINT_VERSION,\n IDENTITY_ENDPOINT_RESOURCE,\n SCIM_ENDPOINT_RESOURCE,\n SCIM_USER_FILTER,\n WEBEX_API_PROD,\n WEBEX_API_BTS,\n BW_XSI_ENDPOINT_VERSION_WITH_SLASH,\n} from './constants';\nimport {Model, WebexSDK} from '../SDKConnector/types';\nimport SDKConnector from '../SDKConnector';\nimport {CallSettingResponse} from '../CallSettings/types';\nimport {ContactResponse} from '../Contacts/types';\nimport {LineErrorEmitterCallback} from '../CallingClient/line/types';\nimport {LineError, createLineError} from '../Errors/catalog/LineError';\n\nexport function filterMobiusUris(mobiusServers: MobiusServers, defaultMobiusUrl: string) {\n const logContext = {\n file: UTILS_FILE,\n method: 'filterMobiusUris',\n };\n\n const urisArrayPrimary = [];\n const urisArrayBackup = [];\n\n if (mobiusServers?.primary?.uris) {\n log.info('Adding Primary uris', logContext);\n for (const uri of mobiusServers.primary.uris) {\n urisArrayPrimary.push(`${uri}${URL_ENDPOINT}`);\n }\n }\n\n if (mobiusServers?.backup?.uris) {\n log.info('Adding Backup uris', logContext);\n for (const uri of mobiusServers.backup.uris) {\n urisArrayBackup.push(`${uri}${URL_ENDPOINT}`);\n }\n }\n\n /*\n * If there are no entries in both primary and backup arrays then add the default\n * uri in primary array, otherwise in backup.\n */\n log.info('Adding Default uri', logContext);\n if (!urisArrayPrimary.length && !urisArrayBackup.length) {\n urisArrayPrimary.push(`${defaultMobiusUrl}${URL_ENDPOINT}`);\n } else {\n urisArrayBackup.push(`${defaultMobiusUrl}${URL_ENDPOINT}`);\n }\n\n const primaryUris: string[] = [];\n const backupUris: string[] = [];\n\n /* Remove duplicates from primary by keeping the order intact */\n for (let i = 0; i < urisArrayPrimary.length; i += 1) {\n if (primaryUris.indexOf(urisArrayPrimary[i]) === -1) {\n primaryUris.push(urisArrayPrimary[i]);\n }\n }\n\n /* Remove duplicates from backup by keeping the order intact */\n for (let i = 0; i < urisArrayBackup.length; i += 1) {\n if (backupUris.indexOf(urisArrayBackup[i]) === -1) {\n backupUris.push(urisArrayBackup[i]);\n }\n }\n\n return {primary: primaryUris, backup: backupUris};\n}\n\n/**\n * Updates the error context for a particular calling client instance.\n *\n * @param errContext - Error Context as generated by the caller.\n * @param type - Error type based on status code.\n * @param message - Custom message for user.\n * @param correlationId - Unique identifier for a call.\n * @param callError - Call error instance.\n */\nfunction updateCallErrorContext(\n errContext: ErrorContext,\n type: ERROR_TYPE,\n message: string,\n correlationId: CorrelationId,\n callError: CallError\n) {\n const errObj = <CallErrorObject>{};\n\n errObj.context = errContext;\n errObj.type = type;\n errObj.message = message;\n errObj.correlationId = correlationId;\n callError.setCallError(errObj);\n}\n\n/**\n * Updates the error context for a particular line instance.\n *\n * @param errContext - Error Context.\n * @param type - Error type based on status code.\n * @param message - Custom message for user.\n * @param status - Status of line.\n * @param lineError - Line error instance.\n */\nfunction updateLineErrorContext(\n errContext: ErrorContext,\n type: ERROR_TYPE,\n message: string,\n status: RegistrationStatus,\n lineError: LineError\n) {\n const errObj = <LineErrorObject>{};\n\n errObj.context = errContext;\n errObj.type = type;\n errObj.message = message;\n errObj.status = status;\n lineError.setError(errObj);\n}\n\n/**\n * Updates the error context for a particular calling client instance.\n *\n * @param errContext - Error Context as generated by the caller.\n * @param type - Error type based on status code.\n * @param message - Custom message for user.\n * @param clientError - Client Error.\n */\nfunction updateErrorContext(\n errContext: ErrorContext,\n type: ERROR_TYPE,\n message: string,\n clientError: CallingClientError\n) {\n const errObj = <ErrorObject>{};\n\n errObj.context = errContext;\n errObj.type = type;\n errObj.message = message;\n clientError.setError(errObj);\n}\n\n/**\n * Emits final failure to the client after it gives up\n * retrying registration and records error metric.\n *\n * @param line - Instance of line.\n * @param caller - Method which called this handler.\n * @param file - File name from where error got reported.\n */\nexport function emitFinalFailure(emitterCb: LineErrorEmitterCallback, loggerContext: LogContext) {\n const clientError = createLineError('', {}, ERROR_TYPE.DEFAULT, RegistrationStatus.INACTIVE);\n\n updateLineErrorContext(\n loggerContext,\n ERROR_TYPE.SERVICE_UNAVAILABLE,\n 'An unknown error occurred. Wait a moment and try again. Please contact the administrator if the problem persists.',\n RegistrationStatus.INACTIVE,\n clientError\n );\n emitterCb(clientError);\n}\n\n/**\n * Handle various Registration related Error flows here. Decide whether to emit event or retry.\n * @param err - Error body.\n * @param emitterCb - LineErrorEmitterCallback\n * @param loggerContext - Logging context that has method and file name\n * @param restoreRegCb - Callback which will try restoring resgistration in case of 403\n *\n * In emitterCb,\n * For non final error scenarios in registration flow,\n * send Unregistered event only without any error message\n * in order to have the web client update only the UI\n * state to disconnected and not show any error dialog\n * to the end user as in those scenarios a retry will\n * be scheduled to attempt registration again.\n *\n */\nexport async function handleRegistrationErrors(\n err: WebexRequestPayload,\n emitterCb: LineErrorEmitterCallback,\n loggerContext: LogContext,\n retry429Cb?: retry429CallBack,\n restoreRegCb?: restoreRegistrationCallBack\n): Promise<boolean> {\n const lineError = createLineError('', {}, ERROR_TYPE.DEFAULT, RegistrationStatus.INACTIVE);\n\n const errorCode = Number(err.statusCode);\n let finalError = false;\n log.warn(`Status code: -> ${errorCode}`, loggerContext);\n switch (errorCode) {\n case ERROR_CODE.BAD_REQUEST: {\n finalError = true;\n log.warn(`400 Bad Request`, loggerContext);\n\n updateLineErrorContext(\n loggerContext,\n ERROR_TYPE.BAD_REQUEST,\n 'Invalid input. Please verify the required parameters, sign out and then sign back in with the valid data',\n RegistrationStatus.INACTIVE,\n lineError\n );\n emitterCb(lineError, finalError);\n break;\n }\n\n case ERROR_CODE.UNAUTHORIZED: {\n // Return it to the Caller\n finalError = true;\n log.warn(`401 Unauthorized`, loggerContext);\n\n updateLineErrorContext(\n loggerContext,\n ERROR_TYPE.TOKEN_ERROR,\n 'User is unauthorized due to an expired token. Sign out, then sign back in.',\n RegistrationStatus.INACTIVE,\n lineError\n );\n\n emitterCb(lineError, finalError);\n break;\n }\n\n case ERROR_CODE.DEVICE_NOT_FOUND: {\n finalError = true;\n log.warn(`404 Device Not Found`, loggerContext);\n\n updateLineErrorContext(\n loggerContext,\n ERROR_TYPE.NOT_FOUND,\n 'Webex Calling is unable to find your device. Sign out, then sign back in',\n RegistrationStatus.INACTIVE,\n lineError\n );\n\n emitterCb(lineError, finalError);\n break;\n }\n\n case ERROR_CODE.TOO_MANY_REQUESTS: {\n log.warn(`429 Too Many Requests`, loggerContext);\n updateLineErrorContext(\n loggerContext,\n ERROR_TYPE.TOO_MANY_REQUESTS,\n 'Server is handling too many request at the time. Wait a moment and try again',\n RegistrationStatus.INACTIVE,\n lineError\n );\n const caller = loggerContext.method || 'handleErrors';\n\n if (retry429Cb && err.headers) {\n const retryAfter = Number(err.headers['retry-after']);\n retry429Cb(retryAfter, caller);\n }\n\n break;\n }\n\n case ERROR_CODE.INTERNAL_SERVER_ERROR: {\n log.warn(`500 Internal Server Error`, loggerContext);\n updateLineErrorContext(\n loggerContext,\n ERROR_TYPE.SERVER_ERROR,\n 'An unknown error occurred while placing the request. Wait a moment and try again.',\n RegistrationStatus.INACTIVE,\n lineError\n );\n\n emitterCb(lineError, finalError);\n break;\n }\n\n case ERROR_CODE.SERVICE_UNAVAILABLE: {\n log.warn(`503 Service Unavailable`, loggerContext);\n updateLineErrorContext(\n loggerContext,\n ERROR_TYPE.SERVICE_UNAVAILABLE,\n 'An error occurred on the server while processing the request. Wait a moment and try again.',\n RegistrationStatus.INACTIVE,\n lineError\n );\n\n emitterCb(lineError, finalError);\n break;\n }\n case ERROR_CODE.FORBIDDEN: {\n log.warn(`403 Forbidden`, loggerContext);\n const errorBody = <IDeviceInfo>err.body;\n\n if (!errorBody) {\n log.warn('Error response has no body, throwing default error', loggerContext);\n updateLineErrorContext(\n loggerContext,\n ERROR_TYPE.FORBIDDEN_ERROR,\n 'An unauthorized action has been received. This action has been blocked. Please contact the administrator if this persists.',\n RegistrationStatus.INACTIVE,\n lineError\n );\n\n emitterCb(lineError, finalError);\n\n return finalError;\n }\n\n const code = Number(errorBody.errorCode);\n log.warn(`Error code found : ${code}`, loggerContext);\n switch (code) {\n case DEVICE_ERROR_CODE.DEVICE_LIMIT_EXCEEDED: {\n const errorMessage = 'User device limit exceeded';\n log.warn(errorMessage, loggerContext);\n if (restoreRegCb) {\n const caller = loggerContext.method || 'handleErrors';\n await restoreRegCb(errorBody, caller);\n }\n break;\n }\n case DEVICE_ERROR_CODE.DEVICE_CREATION_DISABLED: {\n const errorMessage =\n 'User is not configured for WebRTC calling. Please contact the administrator to resolve this issue.';\n finalError = true;\n updateLineErrorContext(\n loggerContext,\n ERROR_TYPE.FORBIDDEN_ERROR,\n errorMessage,\n RegistrationStatus.INACTIVE,\n lineError\n );\n log.warn(errorMessage, loggerContext);\n emitterCb(lineError, true);\n break;\n }\n case DEVICE_ERROR_CODE.DEVICE_CREATION_FAILED: {\n const errorMessage =\n 'An unknown error occurred while provisioning the device. Wait a moment and try again.';\n updateLineErrorContext(\n loggerContext,\n ERROR_TYPE.FORBIDDEN_ERROR,\n errorMessage,\n RegistrationStatus.INACTIVE,\n lineError\n );\n log.warn(errorMessage, loggerContext);\n emitterCb(lineError, finalError);\n break;\n }\n default: {\n const errorMessage =\n 'An unknown error occurred. Wait a moment and try again. Please contact the administrator if the problem persists.';\n updateLineErrorContext(\n loggerContext,\n ERROR_TYPE.FORBIDDEN_ERROR,\n errorMessage,\n RegistrationStatus.INACTIVE,\n lineError\n );\n log.warn(errorMessage, loggerContext);\n emitterCb(lineError, finalError);\n }\n }\n break;\n }\n\n default: {\n updateLineErrorContext(\n loggerContext,\n ERROR_TYPE.DEFAULT,\n 'Unknown error',\n RegistrationStatus.INACTIVE,\n lineError\n );\n log.warn(`Unknown Error`, loggerContext);\n emitterCb(lineError, finalError);\n }\n }\n\n return finalError;\n}\n\n/**\n * Handle various Error flows related to calling client here. Decide whether to emit event or retry.\n * @param err - Error body.\n * @param emitterCb - CallingClientErrorEmitter\n * @param loggerContext - Logging context that has method and file name\n * @param restoreRegCb - Callback which will try restoring resgistration in case of 403\n */\nexport async function handleCallingClientErrors(\n err: WebexRequestPayload,\n emitterCb: CallingClientErrorEmitterCallback,\n loggerContext: LogContext\n): Promise<boolean> {\n const clientError = createClientError('', {}, ERROR_TYPE.DEFAULT, RegistrationStatus.INACTIVE);\n\n const errorCode = Number(err.statusCode);\n let finalError = false;\n log.warn(`Status code: -> ${errorCode}`, loggerContext);\n switch (errorCode) {\n case ERROR_CODE.UNAUTHORIZED: {\n finalError = true;\n log.warn(`401 Unauthorized`, loggerContext);\n updateErrorContext(\n loggerContext,\n ERROR_TYPE.TOKEN_ERROR,\n 'User is unauthorized due to an expired token.',\n clientError\n );\n\n emitterCb(clientError, finalError);\n break;\n }\n\n case ERROR_CODE.INTERNAL_SERVER_ERROR: {\n log.warn(`500 Internal Server Error`, loggerContext);\n updateErrorContext(\n loggerContext,\n ERROR_TYPE.SERVER_ERROR,\n 'An unknown error occurred while placing the request. Wait a moment and try again.',\n clientError\n );\n\n emitterCb(clientError, finalError);\n break;\n }\n\n default: {\n updateErrorContext(loggerContext, ERROR_TYPE.DEFAULT, 'Unknown error', clientError);\n log.warn(`Unknown Error`, loggerContext);\n emitterCb(clientError, finalError);\n }\n }\n await uploadLogs();\n\n return finalError;\n}\n\n/**\n * Handler for call related errors.\n *\n * @param emitterCb - Event emitter function.\n * @param errorType - Type of error experienced.\n * @param errorLayer - Call control or media layer.\n * @param retryCb - Failure retry function.\n * @param correlationId - CorrelationId of the call.\n * @param err - Error Response.\n * @param caller - Caller function.\n * @param file - File name.\n */\nexport async function handleCallErrors(\n emitterCb: CallErrorEmitterCallBack,\n errorLayer: ERROR_LAYER,\n retryCb: RetryCallBack,\n correlationId: CorrelationId,\n err: WebexRequestPayload,\n caller: string,\n file: string\n) {\n const loggerContext = {\n file,\n method: caller,\n };\n const callError = createCallError('', loggerContext, ERROR_TYPE.DEFAULT, '', errorLayer);\n\n const errorCode = Number(err.statusCode);\n\n log.warn(`Status code: ->${errorCode}`, loggerContext);\n\n switch (errorCode) {\n case ERROR_CODE.UNAUTHORIZED: {\n log.warn(`401 Unauthorized`, loggerContext);\n\n updateCallErrorContext(\n loggerContext,\n ERROR_TYPE.TOKEN_ERROR,\n 'User is unauthorized due to an expired token. Sign out, then sign back in.',\n correlationId,\n callError\n );\n\n emitterCb(callError);\n break;\n }\n\n case ERROR_CODE.FORBIDDEN:\n /* follow through as both 403 and 503 can have similar error codes */\n\n case ERROR_CODE.SERVICE_UNAVAILABLE: {\n const errorBody = <IDeviceInfo>err.body;\n\n if (!errorBody) {\n log.warn('Error response has no body, throwing default error', loggerContext);\n updateCallErrorContext(\n loggerContext,\n err.statusCode === 403 ? ERROR_TYPE.FORBIDDEN_ERROR : ERROR_TYPE.SERVICE_UNAVAILABLE,\n err.statusCode === 403\n ? 'An unauthorized action has been received. This action has been blocked. Please contact the administrator if this persists.'\n : 'An error occurred on the server while processing the request. Wait a moment and try again.',\n correlationId,\n callError\n );\n emitterCb(callError);\n\n return;\n }\n\n /* Handle retry-after cases */\n\n if (err.headers && 'retry-after' in err.headers && retryCb) {\n const retryInterval = Number(err.headers['retry-after'] as unknown);\n\n log.warn(`Retry Interval received: ${retryInterval}`, loggerContext);\n retryCb(retryInterval);\n\n return;\n }\n\n /* Handling various Error codes */\n const code = Number(errorBody.errorCode);\n\n let message!: string;\n\n switch (code) {\n case CALL_ERROR_CODE.INVALID_STATUS_UPDATE: {\n message =\n 'An invalid status update has been received for the call. Wait a moment and try again.';\n break;\n }\n case CALL_ERROR_CODE.DEVICE_NOT_REGISTERED: {\n message =\n 'The client has unregistered. Please wait for the client to register before attempting the call. If error persists, sign out, sign back in and attempt the call.';\n break;\n }\n case CALL_ERROR_CODE.CALL_NOT_FOUND: {\n message = 'Call is not found on the server. Wait a moment and try again.';\n break;\n }\n case CALL_ERROR_CODE.ERROR_PROCESSING: {\n message =\n 'An error occurred while processing the call on the server. Wait a moment and try again.';\n break;\n }\n case CALL_ERROR_CODE.USER_BUSY: {\n message = 'Called user is busy.';\n break;\n }\n case CALL_ERROR_CODE.PARSING_ERROR: {\n message =\n 'An error occurred while parsing the provided information. Wait a moment and try again.';\n break;\n }\n case CALL_ERROR_CODE.NOT_ACCEPTABLE: {\n message =\n 'An error occurred on the server while accepting the call. Wait a moment and try again. Please contact the administrator if this persists.';\n break;\n }\n case CALL_ERROR_CODE.CALL_REJECTED: {\n message =\n 'Call rejected by the server. Wait a moment and try again. Please contact the administrator if this persists.';\n break;\n }\n case CALL_ERROR_CODE.NOT_AVAILABLE: {\n message =\n 'Calling services not available. Wait a moment and try again. Please contact the administrator if this persists.';\n break;\n }\n default: {\n message = 'An unknown error occurred. Wait a moment and try again.';\n }\n }\n\n /* We just emit the errors to the app */\n\n updateCallErrorContext(\n loggerContext,\n err.statusCode === 403 ? ERROR_TYPE.FORBIDDEN_ERROR : ERROR_TYPE.SERVICE_UNAVAILABLE,\n message,\n correlationId,\n callError\n );\n\n emitterCb(callError);\n break;\n }\n\n case ERROR_CODE.DEVICE_NOT_FOUND: {\n log.warn(`404 Call Not Found`, loggerContext);\n\n updateCallErrorContext(\n loggerContext,\n ERROR_TYPE.NOT_FOUND,\n 'Call is no longer active. Wait a moment and try again.',\n correlationId,\n callError\n );\n\n emitterCb(callError);\n break;\n }\n\n case ERROR_CODE.INTERNAL_SERVER_ERROR: {\n log.warn(`500 Internal Server Error`, loggerContext);\n\n updateCallErrorContext(\n loggerContext,\n ERROR_TYPE.SERVER_ERROR,\n 'An unknown error occurred in the call. Wait a moment and try again.',\n correlationId,\n callError\n );\n\n emitterCb(callError);\n break;\n }\n\n default: {\n log.warn(`Unknown Error`, loggerContext);\n }\n }\n}\n\n/**\n *Function to return error details.\n *\n * @param errorCode - WebexRequestPayload // Error status code for failed cases.\n * @param err -.\n * @param loggerContext -.\n * @returns Error response (status code and error message).\n */\nexport async function serviceErrorCodeHandler(\n err: WebexRequestPayload,\n loggerContext: LogContext\n): Promise<\n | JanusResponseEvent\n | VoicemailResponseEvent\n | CallSettingResponse\n | ContactResponse\n | UpdateMissedCallsResponse\n | UCMLinesResponse\n | DeleteCallHistoryRecordsResponse\n> {\n const errorCode = Number(err.statusCode);\n const failureMessage = 'FAILURE';\n\n switch (errorCode) {\n case ERROR_CODE.BAD_REQUEST: {\n log.warn(`400 Bad request`, loggerContext);\n\n const errorDetails = {\n statusCode: 400,\n data: {\n error: '400 Bad request',\n },\n message: failureMessage,\n };\n\n return errorDetails;\n }\n\n case ERROR_CODE.UNAUTHORIZED: {\n log.warn(`401 User is unauthorised, possible token expiry`, loggerContext);\n const errorDetails = {\n statusCode: 401,\n data: {\n error: 'User is unauthorised, possible token expiry',\n },\n message: failureMessage,\n };\n\n return errorDetails;\n }\n\n case ERROR_CODE.FORBIDDEN: {\n log.warn(`403 User request is forbidden`, loggerContext);\n\n const errorDetails = {\n statusCode: 403,\n data: {\n error: 'User request is forbidden',\n },\n message: failureMessage,\n };\n\n return errorDetails;\n }\n\n case ERROR_CODE.DEVICE_NOT_FOUND: {\n log.warn(`404 User info not found`, loggerContext);\n\n const errorDetails = {\n statusCode: 404,\n data: {\n error: 'User info not found',\n },\n message: failureMessage,\n };\n\n return errorDetails;\n }\n\n case ERROR_CODE.REQUEST_TIMEOUT: {\n log.warn(`408 Request to the server timedout`, loggerContext);\n\n const errorDetails = {\n statusCode: 408,\n data: {\n error: 'Request to the server timedout',\n },\n message: failureMessage,\n };\n\n return errorDetails;\n }\n case ERROR_CODE.NOT_IMPLEMENTED: {\n log.warn(`501 Not Implemented error occurred`, loggerContext);\n\n const errorDetails = {\n statusCode: 501,\n data: {\n error: 'Method is not implemented at the backend',\n },\n message: failureMessage,\n };\n\n return errorDetails;\n }\n case ERROR_CODE.INTERNAL_SERVER_ERROR: {\n log.warn(`500 Internal server error occurred`, loggerContext);\n\n const errorDetails = {\n statusCode: 500,\n data: {\n error: 'Internal server error occurred',\n },\n message: failureMessage,\n };\n\n return errorDetails;\n }\n\n case ERROR_CODE.SERVICE_UNAVAILABLE: {\n log.warn(`503 Unable to establish a connection with the server`, loggerContext);\n\n const errorDetails = {\n statusCode: 503,\n data: {\n error: 'Unable to establish a connection with the server',\n },\n message: failureMessage,\n };\n\n return errorDetails;\n }\n\n default: {\n log.warn(`${errorCode || 422} Exception has occurred`, loggerContext);\n const errorDetails = {\n statusCode: errorCode || 422,\n data: {\n error: `${errorCode || 422} Exception has occurred`,\n },\n message: failureMessage,\n };\n\n return errorDetails;\n }\n }\n}\n\n/**\n * @param stats - RTC peer connection stats.\n * @returns CallRtpStats.\n */\nexport function parseMediaQualityStatistics(stats: RTCStatsReport): CallRtpStats {\n if (!stats || navigator.userAgent.indexOf('Firefox') !== -1) {\n log.info('RTCStatsReport is null, adding dummy stats', {\n file: UTILS_FILE,\n method: 'parseMediaQualityStatistics',\n });\n\n return DUMMY_METRICS as unknown as CallRtpStats;\n }\n\n try {\n let type!: string;\n let id!: string;\n let inboundCodec!: string;\n let outboundCodec!: string;\n\n const localCandidates = {};\n const candidatePairs = {};\n const codecList = {};\n\n const rxStat = {} as ReceiveStatistics;\n const txStat = {} as TransmitStatistics;\n const vqPayload = {} as VoiceQualityMetrics;\n\n let jitterBufferDelay = 0;\n let jitterBufferEmittedCount = 0;\n let totalRoundTripTime = 0;\n let roundTripTimeMeasurements = 0;\n let selectedPair = '';\n let bitRate = 0;\n\n /* Set defaults */\n vqPayload.maxJitter = 0;\n vqPayload.VoPktSizeMs = 20;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n stats.forEach((report: any) => {\n Object.keys(report).forEach((statName) => {\n if (statName !== TIMESTAMP) {\n if (!type || statName === TYPE) {\n type = report[statName] as string;\n } else if (!id || statName === MEDIA_ID) {\n id = report[statName] as string;\n } else if (id && id.indexOf(RTC_ICE_CANDIDATE_PAIR) !== -1) {\n if (statName === LOCAL_CANDIDATE_ID) {\n candidatePairs[id] = report[statName];\n }\n } else if (id && id.indexOf(RTC_ICE_CANDIDATE) !== -1) {\n if (statName === NETWORK_TYPE) {\n localCandidates[id] = report[statName];\n }\n } else if (\n id &&\n (id.indexOf(INBOUND_CODEC_MATCH) !== -1 ||\n id.indexOf(OUTBOUND_CODEC_MATCH) !== -1 ||\n id.indexOf(RTC_CODEC) !== -1)\n ) {\n if (statName === MIME_TYPE) {\n codecList[id] = report[statName];\n }\n } else if (type && type === REMOTE_INBOUND_RTP) {\n switch (statName) {\n case TOTAL_ROUND_TRIP_TIME: {\n totalRoundTripTime = report[statName];\n break;\n }\n case ROUND_TRIP_TIME_MEASUREMENTS: {\n roundTripTimeMeasurements = report[statName];\n break;\n }\n default: {\n // We don't care about the other stats\n }\n }\n } else if (type && type === INBOUND_RTP) {\n switch (statName) {\n case CODEC_ID: {\n inboundCodec = report[statName];\n break;\n }\n case PACKETS_RECEIVED: {\n rxStat.Pkt = report[statName];\n break;\n }\n case BYTES_RECEIVED: {\n rxStat.Oct = report[statName];\n break;\n }\n case PACKETS_DISCARDED: {\n rxStat.LatePkt = report[statName];\n break;\n }\n case PACKETS_LOST: {\n rxStat.LostPkt = report[statName];\n break;\n }\n case JITTER_BUFFER_DELAY: {\n jitterBufferDelay = report[statName];\n break;\n }\n case JITTER_BUFFER_EMITTED_COUNT: {\n jitterBufferEmittedCount = report[statName];\n break;\n }\n default: {\n // We don't care about the other stats\n }\n }\n } else if (type && type === TRANSPORT) {\n switch (statName) {\n case SELECTED_CANDIDATE_PAIR_ID: {\n selectedPair = report[statName];\n break;\n }\n default: {\n // We don't care about the other stats\n }\n }\n } else if (type && type === OUTBOUND_RTP) {\n switch (statName) {\n case CODEC_ID: {\n outboundCodec = report[statName];\n break;\n }\n case PACKETS_SENT: {\n txStat.Pkt = report[statName];\n break;\n }\n case BYTES_SENT: {\n txStat.Oct = report[statName];\n break;\n }\n case TARGET_BIT_RATE: {\n bitRate = report[statName];\n break;\n }\n default: {\n // We don't care about the other stats\n }\n }\n } else if (type && type === MEDIA_SOURCE) {\n switch (statName) {\n case TOTAL_SAMPLES_DURATION: {\n rxStat.Dur = report[statName];\n txStat.Dur = report[statName];\n break;\n }\n default: {\n // We don't care about the other stats\n }\n }\n }\n }\n });\n });\n\n /* One way Delay */\n if (roundTripTimeMeasurements !== 0) {\n vqPayload.VoOneWayDelayMs = totalRoundTripTime / (2 * roundTripTimeMeasurements);\n } else {\n vqPayload.VoOneWayDelayMs = 0;\n }\n /* Application type */\n vqPayload.hwType = `${platform.os}/${platform.name}-${platform.version}`;\n\n /* Network type */\n vqPayload.networkType = localCandidates[candidatePairs[selectedPair]];\n\n /* Average Jitter */\n rxStat.AvgJit = jitterBufferDelay / jitterBufferEmittedCount;\n\n /* Update codec */\n // eslint-disable-next-line prefer-destructuring\n vqPayload.VoRxCodec = codecList[inboundCodec].split('/')[1];\n\n const txVqPayload = {} as TransmitterVqPayload;\n\n // eslint-disable-next-line prefer-destructuring\n txVqPayload.VoTxCodec = codecList[outboundCodec].split('/')[1];\n txVqPayload.rtpBitRate = bitRate;\n\n const byeStats = {};\n\n rxStat.VQMetrics = vqPayload;\n txStat.VQMetrics = txVqPayload;\n\n byeStats[RTP_RX_STAT] = rxStat;\n byeStats[RTP_TX_STAT] = txStat;\n\n log.log(JSON.stringify(byeStats), {file: UTILS_FILE, method: 'parseMediaQualityStatistics'});\n\n return byeStats as CallRtpStats;\n } catch (err: unknown) {\n log.warn(`Caught error while parsing RTP stats, ${err}`, {\n file: UTILS_FILE,\n method: 'parseMediaQualityStatistics',\n });\n\n return DUMMY_METRICS as unknown as CallRtpStats;\n }\n}\n\n/**\n * To simulate delays.\n *\n * @param msec - Amount of delay.\n * @returns - Promise.\n */\nexport const waitForMsecs = (msec: number) =>\n new Promise((resolve) => {\n setTimeout(resolve, msec);\n });\n\n/**\n * Register calling backend.\n *\n * @param webex -.\n * @returns CallingBackEnd.\n */\nexport function getCallingBackEnd(webex: WebexSDK): CALLING_BACKEND {\n const entModels: Model[] = webex.internal.device.features.entitlement.models;\n let callingBackend;\n\n if (webex.internal.device.callingBehavior === NATIVE_WEBEX_TEAMS_CALLING) {\n for (let i = 0; i < entModels.length; i += 1) {\n if (\n entModels[i][VALUES][KEY] === ENTITLEMENT_BASIC ||\n entModels[i][VALUES][KEY] === ENTITLEMENT_STANDARD\n ) {\n callingBackend = CALLING_BACKEND.WXC;\n break;\n } else if (entModels[i][VALUES][KEY] === ENTITLEMENT_BROADWORKS_CONN) {\n callingBackend = CALLING_BACKEND.BWRKS;\n break;\n }\n }\n } else if (webex.internal.device.callingBehavior === NATIVE_SIP_CALL_TO_UCM) {\n callingBackend = CALLING_BACKEND.UCM;\n } else {\n callingBackend = CALLING_BACKEND.INVALID;\n }\n\n return callingBackend as CALLING_BACKEND;\n}\n\n/**\n * Register XSI endpoint based on calling backend.\n *\n * @param webex -.\n * @param loggerContext -.\n * @param callingBackend -.\n * @returns Promise.\n */\nexport async function getXsiActionEndpoint(\n webex: WebexSDK,\n loggerContext: LogContext,\n callingBackend: CALLING_BACKEND\n) {\n try {\n switch (callingBackend) {\n case CALLING_BACKEND.WXC: {\n const userIdResponse = <WebexRequestPayload>await webex.request({\n uri: `${webex.internal.services._serviceUrls.hydra}/${XSI_ACTION_ENDPOINT_ORG_URL_PARAM}`,\n method: HTTP_METHODS.GET,\n });\n\n log.log(\n `Response code: ${userIdResponse.statusCode}, Response trackingid: ${userIdResponse?.headers?.trackingid}`,\n {\n file: UTILS_FILE,\n method: 'getXsiActionEndpoint',\n }\n );\n\n const response = userIdResponse.body as WebexRequestPayload;\n\n const xsiEndpoint = response[ITEMS][0][XSI_ACTION_ENDPOINT];\n\n return xsiEndpoint;\n }\n\n case CALLING_BACKEND.BWRKS: {\n const bwTokenResponse = <WebexRequestPayload>await webex.request({\n uri: `${webex.internal.services._serviceUrls.wdm}/${DEVICES}`,\n method: HTTP_METHODS.GET,\n });\n\n log.log(\n `Response code: ${bwTokenResponse.statusCode}, Response trackingid: ${bwTokenResponse?.headers?.trackingid}`,\n {\n file: UTILS_FILE,\n method: 'getXsiActionEndpoint',\n }\n );\n\n const response = bwTokenResponse.body as WebexRequestPayload;\n\n let xsiEndpoint = response[DEVICES][0][SETTINGS][BW_XSI_URL];\n\n const xsiUrl = response[DEVICES][0][SETTINGS][BW_XSI_URL];\n\n // Check if it ends with specific version and slice accordingly\n if (xsiUrl.endsWith(BW_XSI_ENDPOINT_VERSION)) {\n xsiEndpoint = xsiUrl.slice(0, -5); // Remove 'v2.0'\n } else if (xsiUrl.endsWith(BW_XSI_ENDPOINT_VERSION_WITH_SLASH)) {\n xsiEndpoint = xsiUrl.slice(0, -6); // Remove 'v2.0/'\n }\n\n return xsiEndpoint;\n }\n\n default: {\n throw new Error('Calling backend is not identified, exiting....');\n }\n }\n } catch (err: unknown) {\n const errorInfo = err as WebexRequestPayload;\n\n serviceErrorCodeHandler(errorInfo, loggerContext);\n\n return errorInfo;\n }\n}\n\n/**\n * Get sorted VoicemailList based on sort order passed.\n *\n * @param webex - Webex object to get service urls.\n * @param callingBackend - CallingBackend will have info like UCM.\n * @returns VGEndpointUrl.\n */\nexport function getVgActionEndpoint(webex: WebexSDK, callingBackend: CALLING_BACKEND) {\n try {\n if (callingBackend && callingBackend === CALLING_BACKEND.UCM) {\n return webex.internal.services._serviceUrls['ucmgmt-gateway'];\n }\n throw new Error('Calling backend is not identified, exiting....');\n } catch (err: unknown) {\n const errorInfo = err as unknown;\n\n return errorInfo;\n }\n}\n\n/**\n * Get sorted VoiceMailList based on sort order passed.\n *\n * @param voiceMessageList - List of voicemessage.\n * @param sortOrder - Type of sort either ascending or descending.\n * @returns Sorted voicemessageList .\n */\nexport function getSortedVoicemailList(\n voiceMessageList: MessageInfo[],\n sortOrder: SORT\n): MessageInfo[] {\n /* istanbul ignore else */\n if (sortOrder === SORT.DESC) {\n voiceMessageList.sort(\n (voiceMail, nextVoiceMail) =>\n nextVoiceMail[TIME][PLACEHOLDER_KEY] - voiceMail[TIME][PLACEHOLDER_KEY]\n );\n } else if (sortOrder === SORT.ASC) {\n voiceMessageList.sort(\n (voiceMail, nextVoiceMail) =>\n voiceMail[TIME][PLACEHOLDER_KEY] - nextVoiceMail[TIME][PLACEHOLDER_KEY]\n );\n }\n\n return voiceMessageList;\n}\n\n/**\n * Handler to perform a SCIM Query.\n *\n * @param filter - A filter for the query.\n * @returns - Promise.\n */\nexport async function scimQuery(filter: string) {\n log.info(`Starting resolution for filter:- ${filter}`, {\n file: UTILS_FILE,\n method: 'scimQuery',\n });\n const sdkConnector = SDKConnector;\n const webex = sdkConnector.getWebex();\n\n const isProd = !webex.internal.device.url.includes('-int');\n const webexHost = isProd ? WEBEX_API_PROD : WEBEX_API_BTS;\n\n const scimUrl = `${webexHost}/${IDENTITY_ENDPOINT_RESOURCE}/${SCIM_ENDPOINT_RESOURCE}/${webex.internal.device.orgId}/${SCIM_USER_FILTER}`;\n const query = scimUrl + encodeURIComponent(filter);\n\n const response = await (<WebexRequestPayload>(<unknown>webex.request({\n uri: query,\n method: HTTP_METHODS.GET,\n headers: {\n [CISCO_DEVICE_URL]: webex.internal.device.url,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n })));\n\n log.log(\n `Response code: ${response.statusCode}, Response trackingid: ${response?.headers?.trackingid}`,\n {\n file: UTILS_FILE,\n method: 'scimQuery',\n }\n );\n\n return response;\n}\n\n/**\n * Resolve Caller Id display information using SCIM query.\n *\n * @param filter - CI userId.\n */\nexport async function resolveCallerIdDisplay(filter: string) {\n let resolution;\n const displayResult = {} as DisplayInformation;\n\n try {\n const response = await scimQuery(filter);\n\n resolution = response.body as SCIMListResponse;\n\n log.info(`Number of records found for this user :- ${resolution.totalResults}`, {\n file: UTILS_FILE,\n method: 'resolveCallerIdDisplay',\n });\n } catch (err) {\n const res = err as WebexRequestPayload;\n\n log.warn(`Error response: - ${res.statusCode}`, {\n file: UTILS_FILE,\n method: 'resolveCallerIdDisplay',\n });\n }\n\n if (resolution?.totalResults && resolution.totalResults > 0) {\n /* Every user has single resource from what we have discussed. May need to revisit this later\n * for shared-line use-cases.\n */\n const scimResource = resolution.Resources[0];\n\n displayResult.name = scimResource.displayName;\n\n /* Pick only the primary number OR 2nd preference Work */\n const numberObj =\n scimResource.phoneNumbers?.find((num) => num.primary) ||\n scimResource.phoneNumbers?.find((num) => num.type.toLowerCase() === 'work');\n\n if (numberObj) {\n displayResult.num = <string>numberObj.value;\n } else if (scimResource.phoneNumbers && scimResource.phoneNumbers.length > 0) {\n /* When no primary number exists OR PA-ID/From failed to populate, we take the first number */\n log.info('Failure to resolve caller information. Setting number as caller ID', {\n file: UTILS_FILE,\n method: 'resolveCallerIdDisplay',\n });\n displayResult.num = scimResource.phoneNumbers[0].value;\n }\n\n /* For Webapp, we are only picking thumbnail photo */\n const photo = scimResource.photos?.find((photo) => photo.type === 'thumbnail');\n\n displayResult.avatarSrc = photo ? photo.value : 'unknown';\n\n displayResult.id = scimResource.id;\n }\n\n return displayResult;\n}\n\n/**\n * Resolve contact info from display name, using people search API.\n *\n * @param name - Display name.\n */\nexport async function resolveCallerIdByName(name: string) {\n const displayResult = {} as DisplayInformation;\n const sdkConnector = SDKConnector;\n const webex = sdkConnector.getWebex();\n /**\n * @param query - Display name.\n */\n const searchDirectory = (query: string) => {\n return webex.people.list({\n displayName: query,\n });\n };\n\n await searchDirectory(name).then((results) => {\n log.info(`DS Result: ${results}`, {\n file: UTILS_FILE,\n method: 'resolveCallerIdByName',\n });\n if (results && results.items && results.items.length > 0) {\n const resolution = results.items[0];\n\n displayResult.name = resolution.displayName;\n\n /* id is like cisco spark://us/PEOPLE/b853bbd1-1136-4d25-938d-0c37541b1234\n * We need to extract UUID portion. */\n const id = Buffer.from(resolution.id, 'base64').toString('binary');\n\n displayResult.id = id.split('/').pop();\n\n const numObj = resolution.phoneNumbers.find((num) => num.type === 'work');\n\n if (numObj) {\n displayResult.num = numObj.value;\n } else if (resolution.phoneNumbers.length > 0) {\n displayResult.num = resolution.phoneNumbers[0].value;\n }\n displayResult.avatarSrc = resolution.avatar;\n log.info(\n `Extracted details:- name: ${displayResult.name} , number: ${displayResult.num}, photo: ${displayResult.avatarSrc}, id: ${displayResult.id}`,\n {\n file: UTILS_FILE,\n method: 'resolveCallerIdByName',\n }\n );\n }\n });\n\n return displayResult;\n}\n\n/**\n * Resolve the contact information.\n *\n * @param callingPartyInfo - Calling Party Info.\n */\nexport async function resolveContact(\n callingPartyInfo: CallingPartyInfo\n): Promise<DisplayInformation | null> {\n if (callingPartyInfo.userExternalId && callingPartyInfo.userExternalId.$) {\n /* SCIM Search */\n return resolveCallerIdDisplay(`id eq \"${callingPartyInfo.userExternalId.$}\"`);\n }\n if (callingPartyInfo.name && callingPartyInfo.name.$) {\n /* People Search */\n return resolveCallerIdByName(callingPartyInfo.name.$);\n }\n\n return null;\n}\n\n/**\n * Store encrypted voicemailList in SessionStorage.\n *\n * @param context - Context for storage.\n * @param voiceMessageList - List of voicemessage.\n */\nexport function storeVoicemailList(context: string, voiceMessageList: MessageInfo[]) {\n const vmEncodedList = Buffer.from(JSON.stringify(voiceMessageList), 'utf8').toString('base64');\n\n sessionStorage.setItem(context, vmEncodedList.toString());\n}\n\n/**\n * Fetch decrypted voicemailList from SessionStorage.\n *\n * @param context - Context for the storage.\n * @param offset - Number of voicemail records to skip.\n * @param offsetLimit - Number of voicemail list to fetch from the offset.\n * @param loggerContext - File, method name object.\n * @returns - Array containing voicemails and flag to indicate availability of more voicemails.\n */\nexport function fetchVoicemailList(\n context: string,\n offset: number,\n offsetLimit: number,\n loggerContext: LogContext\n): FilteredVoicemail {\n let moreVoicemails = false;\n let requiredVoicemailList: MessageInfo[] = [];\n\n try {\n const voicemailList = JSON.parse(\n Buffer.from(sessionStorage.getItem(context) as string, 'base64').toString('utf8')\n );\n\n log.info(`Length of voicemail list: ${voicemailList.length}`, loggerContext);\n\n if (voicemailList.length > offset + offsetLimit) {\n moreVoicemails = true;\n }\n\n requiredVoicemailList = voicemailList.slice(offset, offset + offsetLimit);\n } catch (err: unknown) {\n log.warn(`Caught exception while fetching voicemail from storage. ${err}`, loggerContext);\n const errorInfo = err as WebexRequestPayload;\n\n serviceErrorCodeHandler(errorInfo, {});\n }\n\n return {messages: requiredVoicemailList, moreVMAvailable: moreVoicemails};\n}\n\n/**\n * Converts a uuid to a hydra id without a network dip.\n *\n * @param id - ID to be encoded to base64.\n * @param decodeType - DecodeType.\n * @returns - Encoded string value.\n */\nexport function inferIdFromUuid(id: string, decodeType: DecodeType): string {\n return Buffer.from(`${INFER_ID_CONSTANT}/${decodeType}/${id}`, 'binary').toString('base64');\n}\n\n/**\n * Validates service indicator.\n *\n * @param indicator - Must match with one of the values in ServiceIndicator enum.\n * @returns True if validation is successful else false.\n */\nfunction isValidServiceIndicator(indicator: ServiceIndicator): boolean {\n return Object.values(ServiceIndicator).some((v) => v === indicator);\n}\n\n/**\n * Validates domain field in input service data object.\n * Domain value must be in valid domain format for service\n * type contactcenter.\n * But for service type calling it's allowed to be empty or\n * undefined however if it's not empty/undefined for service\n * type calling then even that will be validated to see if it\n * is in valid domain format.\n *\n * @param serviceData - .\n * @returns True if validation is successful else false.\n */\nfunction isValidServiceDomain(serviceData: ServiceData): boolean {\n const regexp = /^[a-z0-9]+([-.]{1}[a-z0-9]+)*\\.[a-z]{2,6}$/i;\n const {domain} = serviceData;\n\n if (!domain) {\n return (\n serviceData.indicator === ServiceIndicator.CALLING ||\n serviceData.indicator === ServiceIndicator.GUEST_CALLING\n );\n }\n\n return regexp.test(domain);\n}\n\n/**\n * Validates service data object(indicator & domain) and throws\n * exception with a message indicating the reason for validation\n * failure.\n *\n * @param serviceData - Input service data to be validated.\n */\nexport function validateServiceData(serviceData: ServiceData) {\n const allowedValues = Object.values(ServiceIndicator);\n const formattedValues = allowedValues.join(', ').replace(/,([^,]*)$/, ' and$1');\n\n if (!isValidServiceIndicator(serviceData.indicator)) {\n throw new Error(`Invalid service indicator, Allowed values are: ${formattedValues}`);\n }\n\n if (!isValidServiceDomain(serviceData)) {\n throw new Error('Invalid service domain.');\n }\n}\n\n/**\n * Modifies SDP to replace IPv6 \"c=\" lines with IPv4.And adds an IPv4 candidate if none exists.\n *\n * @param sdp - Session Description Protocol string.\n * @returns Modified SDP string.\n */\nexport function modifySdpForIPv4(sdp: string): string {\n try {\n // Normalize line endings to avoid issues\n sdp = sdp.replace(/\\r\\n|\\r/g, '\\n');\n\n // Ensure consistent spacing without removing intentional indentation\n sdp = sdp.replace(/^[ \\t]+/gm, '');\n\n // Check if at least one IPv6 \"c=\" line is present\n const ipv6CLineMatches = sdp.match(/c=IN IP6 [\\da-f:.]+/gi) || [];\n const hasIPv6CLine = ipv6CLineMatches.length > 0;\n\n if (hasIPv6CLine) {\n log.info('Modifying SDP for IPv4 compatibility', {\n file: UTILS_FILE,\n method: 'modifySdpForIPv4',\n });\n\n // Extract an existing IPv4 candidate's IP, if available\n const ipv4CandidateMatch = sdp.match(/a=candidate:\\d+ \\d+ \\w+ \\d+ ([\\d.]+) \\d+ typ \\w+/);\n const ipv4Address = ipv4CandidateMatch?.[1] || '192.1.1.1'; // Default fallback\n\n // Replace all IPv6 \"c=\" lines with IPv4 using the extracted IP (or default)\n sdp = sdp.replace(/c=IN IP6 [\\da-f:.]+/gi, `c=IN IP4 ${ipv4Address}`);\n\n // Ensure newline separation between candidate lines\n if (!ipv4CandidateMatch) {\n let ipv4CandidateAdded = false;\n\n sdp = sdp.replace(\n /(a=candidate:(\\d+) (\\d+) (\\w+) (\\d+) ([\\da-f:.]+) (\\d+) typ (\\w+)[^\\n]*)/g,\n (\n match: string,\n full: string,\n foundation: string,\n componentId: string,\n transport: string, // Supports both UDP and TCP\n priority: string,\n connectionAddress: string,\n port: string,\n candidateType: string\n ) => {\n if (!ipv4CandidateAdded && connectionAddress.includes(':')) {\n // Ensure it's IPv6 and only add once\n ipv4CandidateAdded = true;\n const newFoundation = (parseInt(foundation, 10) + 1).toString();\n\n return (\n `${full}\\n` +\n `a=candidate:${newFoundation} ${componentId} ${transport} ${priority} ${ipv4Address} ${port} typ ${candidateType} generation 0 network-id 1 network-cost 10`\n );\n }\n\n return match;\n }\n );\n }\n }\n\n return sdp;\n } catch (error) {\n log.warn(`Error modifying SDP for IPv4 compatibility: ${error}`, {\n file: UTILS_FILE,\n method: 'modifySdpForIPv4',\n });\n\n return sdp; // Return original SDP in case of an error\n }\n}\n\n/**\n * Uploads logs to backend.\n *\n * @param metaData - Metadata to be uploaded.\n * @param throwError - Whether to throw exception on failure (default: false).\n * @returns Promise containing upload response if successful.\n */\nexport async function uploadLogs(\n metaData: LogsMetaData = {},\n throwError = false\n): Promise<UploadLogsResponse | undefined> {\n const webex = SDKConnector.getWebex();\n // const feedbackId = crypto.randomUUID();\n const feedbackId = uuid();\n try {\n const response = await webex.internal.support.submitLogs(\n {...metaData, feedbackId},\n undefined, // we dont send logs but take from webex logger\n {type: 'diff'} // this is to take the diff logs from previous upload\n );\n log.info(`Logs uploaded successfully with feedbackId: ${feedbackId}`, {\n file: UTILS_FILE,\n method: 'uploadLogs',\n });\n\n getMetricManager().submitUploadLogsMetric(\n METRIC_EVENT.UPLOAD_LOGS_SUCCESS,\n UPLOAD_LOGS_ACTION,\n METRIC_TYPE.BEHAVIORAL,\n response?.trackingid,\n feedbackId,\n metaData?.correlationId,\n undefined,\n metaData?.callId,\n metaData?.broadworksCorrelationInfo\n );\n\n return {\n trackingid: response.trackingid,\n ...(response.url ? {url: response.url} : {}),\n ...(response.userId ? {userId: response.userId} : {}),\n ...(response.correlationId ? {correlationId: response.correlationId} : {}),\n ...(metaData?.broadworksCorrelationInfo\n ? {broadworksCorrelationInfo: metaData?.broadworksCorrelationInfo}\n : {}),\n feedbackId,\n };\n } catch (error) {\n const errorLog = new Error(`Failed to upload Logs ${JSON.stringify(error)}`);\n log.error(errorLog.message, {\n file: UTILS_FILE,\n method: 'uploadLogs',\n });\n\n getMetricManager().submitUploadLogsMetric(\n METRIC_EVENT.UPLOAD_LOGS_FAILED,\n UPLOAD_LOGS_ACTION,\n METRIC_TYPE.BEHAVIORAL,\n undefined,\n feedbackId,\n metaData?.correlationId,\n errorLog.message,\n metaData?.callId,\n metaData?.broadworksCorrelationInfo\n );\n\n if (throwError) {\n throw error;\n }\n\n return undefined;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["platform","_interopRequireWildcard","require","_uuid","_types","_Metrics","_CallError","_types2","_types3","_Logger","_interopRequireDefault","_CallingDeviceError","_constants","_constants2","_SDKConnector","_LineError","e","t","_WeakMap","r","n","__esModule","o","i","f","__proto__","default","_typeof","has","get","set","_t","hasOwnProperty","call","_Object$defineProperty","_Object$getOwnPropertyDescriptor","ownKeys","_Object$keys2","_Object$getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_createForOfIteratorHelper","_Symbol","_Symbol$iterator","_Array$isArray","_unsupportedIterableToArray","_n","F","s","done","value","TypeError","a","u","next","return","_arrayLikeToArray","toString","slice","constructor","name","_Array$from","test","Array","filterMobiusUris","mobiusServers","defaultMobiusUrl","_mobiusServers$primar","_mobiusServers$backup","logContext","file","UTILS_FILE","method","urisArrayPrimary","urisArrayBackup","primary","uris","log","info","_iterator","_step","uri","concat","URL_ENDPOINT","err","backup","_iterator2","_step2","primaryUris","backupUris","indexOf","updateCallErrorContext","errContext","type","message","correlationId","callError","errObj","context","setCallError","updateLineErrorContext","status","lineError","setError","updateErrorContext","clientError","emitFinalFailure","emitterCb","loggerContext","createLineError","ERROR_TYPE","DEFAULT","RegistrationStatus","INACTIVE","SERVICE_UNAVAILABLE","handleRegistrationErrors","_x","_x2","_x3","_x4","_x5","_handleRegistrationErrors","_asyncToGenerator2","_regenerator","mark","_callee","retry429Cb","restoreRegCb","errorCode","finalError","caller","retryAfter","errorBody","code","errorMessage","_caller","_errorMessage","_errorMessage2","_errorMessage3","wrap","_callee$","_context","prev","Number","statusCode","warn","t0","ERROR_CODE","BAD_REQUEST","UNAUTHORIZED","DEVICE_NOT_FOUND","TOO_MANY_REQUESTS","INTERNAL_SERVER_ERROR","FORBIDDEN","abrupt","TOKEN_ERROR","NOT_FOUND","headers","SERVER_ERROR","body","FORBIDDEN_ERROR","t1","DEVICE_ERROR_CODE","DEVICE_LIMIT_EXCEEDED","DEVICE_CREATION_DISABLED","DEVICE_CREATION_FAILED","stop","handleCallingClientErrors","_x6","_x7","_x8","_handleCallingClientErrors","_callee2","_callee2$","_context2","createClientError","uploadLogs","handleCallErrors","_x9","_x0","_x1","_x10","_x11","_x12","_x13","_handleCallErrors","_callee3","errorLayer","retryCb","retryInterval","_callee3$","_context3","createCallError","CALL_ERROR_CODE","INVALID_STATUS_UPDATE","DEVICE_NOT_REGISTERED","CALL_NOT_FOUND","ERROR_PROCESSING","USER_BUSY","PARSING_ERROR","NOT_ACCEPTABLE","CALL_REJECTED","NOT_AVAILABLE","serviceErrorCodeHandler","_x14","_x15","_serviceErrorCodeHandler","_callee4","failureMessage","errorDetails","_errorDetails","_errorDetails2","_errorDetails3","_errorDetails4","_errorDetails5","_errorDetails6","_errorDetails7","_errorDetails8","_callee4$","_context4","REQUEST_TIMEOUT","NOT_IMPLEMENTED","data","error","parseMediaQualityStatistics","stats","navigator","userAgent","DUMMY_METRICS","id","inboundCodec","outboundCodec","localCandidates","candidatePairs","codecList","rxStat","txStat","vqPayload","jitterBufferDelay","jitterBufferEmittedCount","totalRoundTripTime","roundTripTimeMeasurements","selectedPair","bitRate","maxJitter","VoPktSizeMs","report","_keys","statName","TIMESTAMP","TYPE","MEDIA_ID","RTC_ICE_CANDIDATE_PAIR","LOCAL_CANDIDATE_ID","RTC_ICE_CANDIDATE","NETWORK_TYPE","INBOUND_CODEC_MATCH","OUTBOUND_CODEC_MATCH","RTC_CODEC","MIME_TYPE","REMOTE_INBOUND_RTP","TOTAL_ROUND_TRIP_TIME","ROUND_TRIP_TIME_MEASUREMENTS","INBOUND_RTP","CODEC_ID","PACKETS_RECEIVED","Pkt","BYTES_RECEIVED","Oct","PACKETS_DISCARDED","LatePkt","PACKETS_LOST","LostPkt","JITTER_BUFFER_DELAY","JITTER_BUFFER_EMITTED_COUNT","TRANSPORT","SELECTED_CANDIDATE_PAIR_ID","OUTBOUND_RTP","PACKETS_SENT","BYTES_SENT","TARGET_BIT_RATE","MEDIA_SOURCE","TOTAL_SAMPLES_DURATION","Dur","VoOneWayDelayMs","hwType","os","version","networkType","AvgJit","VoRxCodec","split","txVqPayload","VoTxCodec","rtpBitRate","byeStats","VQMetrics","RTP_RX_STAT","RTP_TX_STAT","_stringify","waitForMsecs","exports","msec","_promise","resolve","setTimeout","getCallingBackEnd","webex","entModels","internal","device","features","entitlement","models","callingBackend","callingBehavior","NATIVE_WEBEX_TEAMS_CALLING","VALUES","KEY","ENTITLEMENT_BASIC","ENTITLEMENT_STANDARD","CALLING_BACKEND","WXC","ENTITLEMENT_BROADWORKS_CONN","BWRKS","NATIVE_SIP_CALL_TO_UCM","UCM","INVALID","getXsiActionEndpoint","_x16","_x17","_x18","_getXsiActionEndpoint","_callee5","_userIdResponse$heade","userIdResponse","response","xsiEndpoint","_bwTokenResponse$head","bwTokenResponse","_response","_xsiEndpoint","xsiUrl","errorInfo","_callee5$","_context5","request","services","_serviceUrls","hydra","XSI_ACTION_ENDPOINT_ORG_URL_PARAM","HTTP_METHODS","GET","sent","trackingid","ITEMS","XSI_ACTION_ENDPOINT","wdm","DEVICES","SETTINGS","BW_XSI_URL","endsWith","BW_XSI_ENDPOINT_VERSION","BW_XSI_ENDPOINT_VERSION_WITH_SLASH","Error","getVgActionEndpoint","getSortedVoicemailList","voiceMessageList","sortOrder","SORT","DESC","sort","voiceMail","nextVoiceMail","TIME","PLACEHOLDER_KEY","ASC","scimQuery","_x19","_scimQuery","_callee6","_response$headers","sdkConnector","isProd","webexHost","scimUrl","query","_callee6$","_context6","SDKConnector","getWebex","url","includes","WEBEX_API_PROD","WEBEX_API_BTS","IDENTITY_ENDPOINT_RESOURCE","SCIM_ENDPOINT_RESOURCE","orgId","SCIM_USER_FILTER","encodeURIComponent","CISCO_DEVICE_URL","SPARK_USER_AGENT","CALLING_USER_AGENT","resolveCallerIdDisplay","_x20","_resolveCallerIdDisplay","_callee7","_resolution","resolution","displayResult","res","_scimResource$phoneNu","_scimResource$phoneNu2","_scimResource$photos","scimResource","numberObj","photo","_callee7$","_context7","totalResults","Resources","displayName","phoneNumbers","find","num","toLowerCase","photos","avatarSrc","resolveCallerIdByName","_x21","_resolveCallerIdByName","_callee8","searchDirectory","_callee8$","_context8","people","list","then","results","items","Buffer","from","pop","numObj","avatar","resolveContact","_x22","_resolveContact","_callee9","callingPartyInfo","_callee9$","_context9","userExternalId","$","storeVoicemailList","vmEncodedList","sessionStorage","setItem","fetchVoicemailList","offset","offsetLimit","moreVoicemails","requiredVoicemailList","voicemailList","JSON","parse","getItem","messages","moreVMAvailable","inferIdFromUuid","decodeType","INFER_ID_CONSTANT","isValidServiceIndicator","indicator","_values","ServiceIndicator","some","v","isValidServiceDomain","serviceData","regexp","domain","CALLING","GUEST_CALLING","validateServiceData","allowedValues","formattedValues","join","replace","modifySdpForIPv4","sdp","ipv6CLineMatches","match","hasIPv6CLine","ipv4CandidateMatch","ipv4Address","ipv4CandidateAdded","full","foundation","componentId","transport","priority","connectionAddress","port","candidateType","newFoundation","_parseInt2","_uploadLogs","_callee0","metaData","throwError","feedbackId","errorLog","_args0","_callee0$","_context0","undefined","uuid","support","submitLogs","getMetricManager","submitUploadLogsMetric","METRIC_EVENT","UPLOAD_LOGS_SUCCESS","UPLOAD_LOGS_ACTION","METRIC_TYPE","BEHAVIORAL","callId","broadworksCorrelationInfo","userId","UPLOAD_LOGS_FAILED"],"sources":["Utils.ts"],"sourcesContent":["/* eslint-disable no-fallthrough */\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable @typescript-eslint/no-shadow */\nimport * as platform from 'platform';\nimport {v4 as uuid} from 'uuid';\nimport {METRIC_EVENT, METRIC_TYPE, UPLOAD_LOGS_ACTION} from '../Metrics/types';\nimport ExtendedError from '../Errors/catalog/ExtendedError';\nimport {getMetricManager} from '../Metrics';\nimport {restoreRegistrationCallBack, retry429CallBack} from '../CallingClient/registration/types';\nimport {CallingClientErrorEmitterCallback} from '../CallingClient/types';\nimport {LogContext} from '../Logger/types';\nimport {\n CallErrorEmitterCallBack,\n CallRtpStats,\n ReceiveStatistics,\n RetryCallBack,\n TransmitStatistics,\n TransmitterVqPayload,\n VoiceQualityMetrics,\n} from '../CallingClient/calling/types';\nimport {createCallError} from '../Errors/catalog/CallError';\nimport {\n DEVICE_ERROR_CODE,\n ErrorContext,\n ERROR_CODE,\n ErrorObject,\n ERROR_TYPE,\n CallErrorObject,\n CALL_ERROR_CODE,\n ERROR_LAYER,\n LineErrorObject,\n} from '../Errors/types';\nimport {\n CALLING_BACKEND,\n CorrelationId,\n DecodeType,\n DisplayInformation,\n HTTP_METHODS,\n IDeviceInfo,\n LogsMetaData,\n MobiusServers,\n RegistrationStatus,\n SCIMListResponse,\n SORT,\n ServiceData,\n ServiceIndicator,\n UploadLogsResponse,\n WebexRequestPayload,\n} from './types';\nimport log from '../Logger';\nimport {CallError, CallingClientError} from '../Errors';\nimport {createClientError} from '../Errors/catalog/CallingDeviceError';\n\nimport {\n BYTES_RECEIVED,\n BYTES_SENT,\n CALLING_USER_AGENT,\n CISCO_DEVICE_URL,\n CODEC_ID,\n DUMMY_METRICS,\n INBOUND_CODEC_MATCH,\n INBOUND_RTP,\n JITTER_BUFFER_DELAY,\n JITTER_BUFFER_EMITTED_COUNT,\n LOCAL_CANDIDATE_ID,\n MEDIA_ID,\n MEDIA_SOURCE,\n MIME_TYPE,\n NETWORK_TYPE,\n OUTBOUND_CODEC_MATCH,\n OUTBOUND_RTP,\n PACKETS_DISCARDED,\n PACKETS_LOST,\n PACKETS_RECEIVED,\n PACKETS_SENT,\n REMOTE_INBOUND_RTP,\n ROUND_TRIP_TIME_MEASUREMENTS,\n RTC_CODEC,\n RTC_ICE_CANDIDATE,\n RTC_ICE_CANDIDATE_PAIR,\n RTP_RX_STAT,\n RTP_TX_STAT,\n SELECTED_CANDIDATE_PAIR_ID,\n SPARK_USER_AGENT,\n TARGET_BIT_RATE,\n TIMESTAMP,\n TOTAL_ROUND_TRIP_TIME,\n TOTAL_SAMPLES_DURATION,\n TRANSPORT,\n TYPE,\n URL_ENDPOINT,\n UTILS_FILE,\n} from '../CallingClient/constants';\nimport {\n DeleteCallHistoryRecordsResponse,\n JanusResponseEvent,\n UCMLinesResponse,\n UpdateMissedCallsResponse,\n} from '../CallHistory/types';\nimport {\n VoicemailResponseEvent,\n MessageInfo,\n CallingPartyInfo,\n FilteredVoicemail,\n} from '../Voicemail/types';\nimport {\n DEVICES,\n ITEMS,\n SETTINGS,\n VALUES,\n KEY,\n TIME,\n PLACEHOLDER_KEY,\n XSI_ACTION_ENDPOINT_ORG_URL_PARAM,\n XSI_ACTION_ENDPOINT,\n INFER_ID_CONSTANT,\n BW_XSI_URL,\n ENTITLEMENT_BASIC,\n ENTITLEMENT_BROADWORKS_CONN,\n ENTITLEMENT_STANDARD,\n NATIVE_WEBEX_TEAMS_CALLING,\n NATIVE_SIP_CALL_TO_UCM,\n BW_XSI_ENDPOINT_VERSION,\n IDENTITY_ENDPOINT_RESOURCE,\n SCIM_ENDPOINT_RESOURCE,\n SCIM_USER_FILTER,\n WEBEX_API_PROD,\n WEBEX_API_BTS,\n BW_XSI_ENDPOINT_VERSION_WITH_SLASH,\n} from './constants';\nimport {Model, WebexSDK} from '../SDKConnector/types';\nimport SDKConnector from '../SDKConnector';\nimport {CallSettingResponse} from '../CallSettings/types';\nimport {ContactResponse} from '../Contacts/types';\nimport {LineErrorEmitterCallback} from '../CallingClient/line/types';\nimport {LineError, createLineError} from '../Errors/catalog/LineError';\n\nexport function filterMobiusUris(mobiusServers: MobiusServers, defaultMobiusUrl: string) {\n const logContext = {\n file: UTILS_FILE,\n method: 'filterMobiusUris',\n };\n\n const urisArrayPrimary = [];\n const urisArrayBackup = [];\n\n if (mobiusServers?.primary?.uris) {\n log.info('Adding Primary uris', logContext);\n for (const uri of mobiusServers.primary.uris) {\n urisArrayPrimary.push(`${uri}${URL_ENDPOINT}`);\n }\n }\n\n if (mobiusServers?.backup?.uris) {\n log.info('Adding Backup uris', logContext);\n for (const uri of mobiusServers.backup.uris) {\n urisArrayBackup.push(`${uri}${URL_ENDPOINT}`);\n }\n }\n\n /*\n * If there are no entries in both primary and backup arrays then add the default\n * uri in primary array, otherwise in backup.\n */\n log.info('Adding Default uri', logContext);\n if (!urisArrayPrimary.length && !urisArrayBackup.length) {\n urisArrayPrimary.push(`${defaultMobiusUrl}${URL_ENDPOINT}`);\n } else {\n urisArrayBackup.push(`${defaultMobiusUrl}${URL_ENDPOINT}`);\n }\n\n const primaryUris: string[] = [];\n const backupUris: string[] = [];\n\n /* Remove duplicates from primary by keeping the order intact */\n for (let i = 0; i < urisArrayPrimary.length; i += 1) {\n if (primaryUris.indexOf(urisArrayPrimary[i]) === -1) {\n primaryUris.push(urisArrayPrimary[i]);\n }\n }\n\n /* Remove duplicates from backup by keeping the order intact */\n for (let i = 0; i < urisArrayBackup.length; i += 1) {\n if (backupUris.indexOf(urisArrayBackup[i]) === -1) {\n backupUris.push(urisArrayBackup[i]);\n }\n }\n\n return {primary: primaryUris, backup: backupUris};\n}\n\n/**\n * Updates the error context for a particular calling client instance.\n *\n * @param errContext - Error Context as generated by the caller.\n * @param type - Error type based on status code.\n * @param message - Custom message for user.\n * @param correlationId - Unique identifier for a call.\n * @param callError - Call error instance.\n */\nfunction updateCallErrorContext(\n errContext: ErrorContext,\n type: ERROR_TYPE,\n message: string,\n correlationId: CorrelationId,\n callError: CallError\n) {\n const errObj = <CallErrorObject>{};\n\n errObj.context = errContext;\n errObj.type = type;\n errObj.message = message;\n errObj.correlationId = correlationId;\n callError.setCallError(errObj);\n}\n\n/**\n * Updates the error context for a particular line instance.\n *\n * @param errContext - Error Context.\n * @param type - Error type based on status code.\n * @param message - Custom message for user.\n * @param status - Status of line.\n * @param lineError - Line error instance.\n */\nfunction updateLineErrorContext(\n errContext: ErrorContext,\n type: ERROR_TYPE,\n message: string,\n status: RegistrationStatus,\n lineError: LineError\n) {\n const errObj = <LineErrorObject>{};\n\n errObj.context = errContext;\n errObj.type = type;\n errObj.message = message;\n errObj.status = status;\n lineError.setError(errObj);\n}\n\n/**\n * Updates the error context for a particular calling client instance.\n *\n * @param errContext - Error Context as generated by the caller.\n * @param type - Error type based on status code.\n * @param message - Custom message for user.\n * @param clientError - Client Error.\n */\nfunction updateErrorContext(\n errContext: ErrorContext,\n type: ERROR_TYPE,\n message: string,\n clientError: CallingClientError\n) {\n const errObj = <ErrorObject>{};\n\n errObj.context = errContext;\n errObj.type = type;\n errObj.message = message;\n clientError.setError(errObj);\n}\n\n/**\n * Emits final failure to the client after it gives up\n * retrying registration and records error metric.\n *\n * @param line - Instance of line.\n * @param caller - Method which called this handler.\n * @param file - File name from where error got reported.\n */\nexport function emitFinalFailure(emitterCb: LineErrorEmitterCallback, loggerContext: LogContext) {\n const clientError = createLineError('', {}, ERROR_TYPE.DEFAULT, RegistrationStatus.INACTIVE);\n\n updateLineErrorContext(\n loggerContext,\n ERROR_TYPE.SERVICE_UNAVAILABLE,\n 'An unknown error occurred. Wait a moment and try again. Please contact the administrator if the problem persists.',\n RegistrationStatus.INACTIVE,\n clientError\n );\n emitterCb(clientError);\n}\n\n/**\n * Handle various Registration related Error flows here. Decide whether to emit event or retry.\n * @param err - Error body.\n * @param emitterCb - LineErrorEmitterCallback\n * @param loggerContext - Logging context that has method and file name\n * @param restoreRegCb - Callback which will try restoring resgistration in case of 403\n *\n * In emitterCb,\n * For non final error scenarios in registration flow,\n * send Unregistered event only without any error message\n * in order to have the web client update only the UI\n * state to disconnected and not show any error dialog\n * to the end user as in those scenarios a retry will\n * be scheduled to attempt registration again.\n *\n */\nexport async function handleRegistrationErrors(\n err: WebexRequestPayload,\n emitterCb: LineErrorEmitterCallback,\n loggerContext: LogContext,\n retry429Cb?: retry429CallBack,\n restoreRegCb?: restoreRegistrationCallBack\n): Promise<boolean> {\n const lineError = createLineError('', {}, ERROR_TYPE.DEFAULT, RegistrationStatus.INACTIVE);\n\n const errorCode = Number(err.statusCode);\n let finalError = false;\n log.warn(`Status code: -> ${errorCode}`, loggerContext);\n switch (errorCode) {\n case ERROR_CODE.BAD_REQUEST: {\n finalError = true;\n log.warn(`400 Bad Request`, loggerContext);\n\n updateLineErrorContext(\n loggerContext,\n ERROR_TYPE.BAD_REQUEST,\n 'Invalid input. Please verify the required parameters, sign out and then sign back in with the valid data',\n RegistrationStatus.INACTIVE,\n lineError\n );\n emitterCb(lineError, finalError);\n break;\n }\n\n case ERROR_CODE.UNAUTHORIZED: {\n // Return it to the Caller\n finalError = true;\n log.warn(`401 Unauthorized`, loggerContext);\n\n updateLineErrorContext(\n loggerContext,\n ERROR_TYPE.TOKEN_ERROR,\n 'User is unauthorized due to an expired token. Sign out, then sign back in.',\n RegistrationStatus.INACTIVE,\n lineError\n );\n\n emitterCb(lineError, finalError);\n break;\n }\n\n case ERROR_CODE.DEVICE_NOT_FOUND: {\n finalError = true;\n log.warn(`404 Device Not Found`, loggerContext);\n\n updateLineErrorContext(\n loggerContext,\n ERROR_TYPE.NOT_FOUND,\n 'Webex Calling is unable to find your device. Sign out, then sign back in',\n RegistrationStatus.INACTIVE,\n lineError\n );\n\n emitterCb(lineError, finalError);\n break;\n }\n\n case ERROR_CODE.TOO_MANY_REQUESTS: {\n log.warn(`429 Too Many Requests`, loggerContext);\n updateLineErrorContext(\n loggerContext,\n ERROR_TYPE.TOO_MANY_REQUESTS,\n 'Server is handling too many request at the time. Wait a moment and try again',\n RegistrationStatus.INACTIVE,\n lineError\n );\n const caller = loggerContext.method || 'handleErrors';\n\n if (retry429Cb && err.headers) {\n const retryAfter = Number(err.headers['retry-after']);\n retry429Cb(retryAfter, caller);\n }\n\n break;\n }\n\n case ERROR_CODE.INTERNAL_SERVER_ERROR: {\n log.warn(`500 Internal Server Error`, loggerContext);\n updateLineErrorContext(\n loggerContext,\n ERROR_TYPE.SERVER_ERROR,\n 'An unknown error occurred while placing the request. Wait a moment and try again.',\n RegistrationStatus.INACTIVE,\n lineError\n );\n\n emitterCb(lineError, finalError);\n break;\n }\n\n case ERROR_CODE.SERVICE_UNAVAILABLE: {\n log.warn(`503 Service Unavailable`, loggerContext);\n updateLineErrorContext(\n loggerContext,\n ERROR_TYPE.SERVICE_UNAVAILABLE,\n 'An error occurred on the server while processing the request. Wait a moment and try again.',\n RegistrationStatus.INACTIVE,\n lineError\n );\n\n emitterCb(lineError, finalError);\n break;\n }\n case ERROR_CODE.FORBIDDEN: {\n log.warn(`403 Forbidden`, loggerContext);\n const errorBody = <IDeviceInfo>err.body;\n\n if (!errorBody) {\n log.warn('Error response has no body, throwing default error', loggerContext);\n updateLineErrorContext(\n loggerContext,\n ERROR_TYPE.FORBIDDEN_ERROR,\n 'An unauthorized action has been received. This action has been blocked. Please contact the administrator if this persists.',\n RegistrationStatus.INACTIVE,\n lineError\n );\n\n emitterCb(lineError, finalError);\n\n return finalError;\n }\n\n const code = Number(errorBody.errorCode);\n log.warn(`Error code found : ${code}`, loggerContext);\n switch (code) {\n case DEVICE_ERROR_CODE.DEVICE_LIMIT_EXCEEDED: {\n const errorMessage = 'User device limit exceeded';\n log.warn(errorMessage, loggerContext);\n if (restoreRegCb) {\n const caller = loggerContext.method || 'handleErrors';\n await restoreRegCb(errorBody, caller);\n }\n break;\n }\n case DEVICE_ERROR_CODE.DEVICE_CREATION_DISABLED: {\n const errorMessage =\n 'User is not configured for WebRTC calling. Please contact the administrator to resolve this issue.';\n finalError = true;\n updateLineErrorContext(\n loggerContext,\n ERROR_TYPE.FORBIDDEN_ERROR,\n errorMessage,\n RegistrationStatus.INACTIVE,\n lineError\n );\n log.warn(errorMessage, loggerContext);\n emitterCb(lineError, true);\n break;\n }\n case DEVICE_ERROR_CODE.DEVICE_CREATION_FAILED: {\n const errorMessage =\n 'An unknown error occurred while provisioning the device. Wait a moment and try again.';\n updateLineErrorContext(\n loggerContext,\n ERROR_TYPE.FORBIDDEN_ERROR,\n errorMessage,\n RegistrationStatus.INACTIVE,\n lineError\n );\n log.warn(errorMessage, loggerContext);\n emitterCb(lineError, finalError);\n break;\n }\n default: {\n const errorMessage =\n 'An unknown error occurred. Wait a moment and try again. Please contact the administrator if the problem persists.';\n updateLineErrorContext(\n loggerContext,\n ERROR_TYPE.FORBIDDEN_ERROR,\n errorMessage,\n RegistrationStatus.INACTIVE,\n lineError\n );\n log.warn(errorMessage, loggerContext);\n emitterCb(lineError, finalError);\n }\n }\n break;\n }\n\n default: {\n updateLineErrorContext(\n loggerContext,\n ERROR_TYPE.DEFAULT,\n 'Unknown error',\n RegistrationStatus.INACTIVE,\n lineError\n );\n log.warn(`Unknown Error`, loggerContext);\n emitterCb(lineError, finalError);\n }\n }\n\n return finalError;\n}\n\n/**\n * Handle various Error flows related to calling client here. Decide whether to emit event or retry.\n * @param err - Error body.\n * @param emitterCb - CallingClientErrorEmitter\n * @param loggerContext - Logging context that has method and file name\n * @param restoreRegCb - Callback which will try restoring resgistration in case of 403\n */\nexport async function handleCallingClientErrors(\n err: WebexRequestPayload,\n emitterCb: CallingClientErrorEmitterCallback,\n loggerContext: LogContext\n): Promise<boolean> {\n const clientError = createClientError('', {}, ERROR_TYPE.DEFAULT, RegistrationStatus.INACTIVE);\n\n const errorCode = Number(err.statusCode);\n let finalError = false;\n log.warn(`Status code: -> ${errorCode}`, loggerContext);\n switch (errorCode) {\n case ERROR_CODE.UNAUTHORIZED: {\n finalError = true;\n log.warn(`401 Unauthorized`, loggerContext);\n updateErrorContext(\n loggerContext,\n ERROR_TYPE.TOKEN_ERROR,\n 'User is unauthorized due to an expired token.',\n clientError\n );\n\n emitterCb(clientError, finalError);\n break;\n }\n\n case ERROR_CODE.INTERNAL_SERVER_ERROR: {\n log.warn(`500 Internal Server Error`, loggerContext);\n updateErrorContext(\n loggerContext,\n ERROR_TYPE.SERVER_ERROR,\n 'An unknown error occurred while placing the request. Wait a moment and try again.',\n clientError\n );\n\n emitterCb(clientError, finalError);\n break;\n }\n\n default: {\n updateErrorContext(loggerContext, ERROR_TYPE.DEFAULT, 'Unknown error', clientError);\n log.warn(`Unknown Error`, loggerContext);\n emitterCb(clientError, finalError);\n }\n }\n await uploadLogs();\n\n return finalError;\n}\n\n/**\n * Handler for call related errors.\n *\n * @param emitterCb - Event emitter function.\n * @param errorType - Type of error experienced.\n * @param errorLayer - Call control or media layer.\n * @param retryCb - Failure retry function.\n * @param correlationId - CorrelationId of the call.\n * @param err - Error Response.\n * @param caller - Caller function.\n * @param file - File name.\n */\nexport async function handleCallErrors(\n emitterCb: CallErrorEmitterCallBack,\n errorLayer: ERROR_LAYER,\n retryCb: RetryCallBack,\n correlationId: CorrelationId,\n err: WebexRequestPayload,\n caller: string,\n file: string\n) {\n const loggerContext = {\n file,\n method: caller,\n };\n const callError = createCallError('', loggerContext, ERROR_TYPE.DEFAULT, '', errorLayer);\n\n const errorCode = Number(err.statusCode);\n\n log.warn(`Status code: ->${errorCode}`, loggerContext);\n\n switch (errorCode) {\n case ERROR_CODE.UNAUTHORIZED: {\n log.warn(`401 Unauthorized`, loggerContext);\n\n updateCallErrorContext(\n loggerContext,\n ERROR_TYPE.TOKEN_ERROR,\n 'User is unauthorized due to an expired token. Sign out, then sign back in.',\n correlationId,\n callError\n );\n\n emitterCb(callError);\n break;\n }\n\n case ERROR_CODE.FORBIDDEN:\n /* follow through as both 403 and 503 can have similar error codes */\n\n case ERROR_CODE.SERVICE_UNAVAILABLE: {\n const errorBody = <IDeviceInfo>err.body;\n\n if (!errorBody) {\n log.warn('Error response has no body, throwing default error', loggerContext);\n updateCallErrorContext(\n loggerContext,\n err.statusCode === 403 ? ERROR_TYPE.FORBIDDEN_ERROR : ERROR_TYPE.SERVICE_UNAVAILABLE,\n err.statusCode === 403\n ? 'An unauthorized action has been received. This action has been blocked. Please contact the administrator if this persists.'\n : 'An error occurred on the server while processing the request. Wait a moment and try again.',\n correlationId,\n callError\n );\n emitterCb(callError);\n\n return;\n }\n\n /* Handle retry-after cases */\n\n if (err.headers && 'retry-after' in err.headers && retryCb) {\n const retryInterval = Number(err.headers['retry-after'] as unknown);\n\n log.warn(`Retry Interval received: ${retryInterval}`, loggerContext);\n retryCb(retryInterval);\n\n return;\n }\n\n /* Handling various Error codes */\n const code = Number(errorBody.errorCode);\n\n let message!: string;\n\n switch (code) {\n case CALL_ERROR_CODE.INVALID_STATUS_UPDATE: {\n message =\n 'An invalid status update has been received for the call. Wait a moment and try again.';\n break;\n }\n case CALL_ERROR_CODE.DEVICE_NOT_REGISTERED: {\n message =\n 'The client has unregistered. Please wait for the client to register before attempting the call. If error persists, sign out, sign back in and attempt the call.';\n break;\n }\n case CALL_ERROR_CODE.CALL_NOT_FOUND: {\n message = 'Call is not found on the server. Wait a moment and try again.';\n break;\n }\n case CALL_ERROR_CODE.ERROR_PROCESSING: {\n message =\n 'An error occurred while processing the call on the server. Wait a moment and try again.';\n break;\n }\n case CALL_ERROR_CODE.USER_BUSY: {\n message = 'Called user is busy.';\n break;\n }\n case CALL_ERROR_CODE.PARSING_ERROR: {\n message =\n 'An error occurred while parsing the provided information. Wait a moment and try again.';\n break;\n }\n case CALL_ERROR_CODE.NOT_ACCEPTABLE: {\n message =\n 'An error occurred on the server while accepting the call. Wait a moment and try again. Please contact the administrator if this persists.';\n break;\n }\n case CALL_ERROR_CODE.CALL_REJECTED: {\n message =\n 'Call rejected by the server. Wait a moment and try again. Please contact the administrator if this persists.';\n break;\n }\n case CALL_ERROR_CODE.NOT_AVAILABLE: {\n message =\n 'Calling services not available. Wait a moment and try again. Please contact the administrator if this persists.';\n break;\n }\n default: {\n message = 'An unknown error occurred. Wait a moment and try again.';\n }\n }\n\n /* We just emit the errors to the app */\n\n updateCallErrorContext(\n loggerContext,\n err.statusCode === 403 ? ERROR_TYPE.FORBIDDEN_ERROR : ERROR_TYPE.SERVICE_UNAVAILABLE,\n message,\n correlationId,\n callError\n );\n\n emitterCb(callError);\n break;\n }\n\n case ERROR_CODE.DEVICE_NOT_FOUND: {\n log.warn(`404 Call Not Found`, loggerContext);\n\n updateCallErrorContext(\n loggerContext,\n ERROR_TYPE.NOT_FOUND,\n 'Call is no longer active. Wait a moment and try again.',\n correlationId,\n callError\n );\n\n emitterCb(callError);\n break;\n }\n\n case ERROR_CODE.INTERNAL_SERVER_ERROR: {\n log.warn(`500 Internal Server Error`, loggerContext);\n\n updateCallErrorContext(\n loggerContext,\n ERROR_TYPE.SERVER_ERROR,\n 'An unknown error occurred in the call. Wait a moment and try again.',\n correlationId,\n callError\n );\n\n emitterCb(callError);\n break;\n }\n\n default: {\n log.warn(`Unknown Error`, loggerContext);\n }\n }\n}\n\n/**\n *Function to return error details.\n *\n * @param errorCode - WebexRequestPayload // Error status code for failed cases.\n * @param err -.\n * @param loggerContext -.\n * @returns Error response (status code and error message).\n */\nexport async function serviceErrorCodeHandler(\n err: WebexRequestPayload,\n loggerContext: LogContext\n): Promise<\n | JanusResponseEvent\n | VoicemailResponseEvent\n | CallSettingResponse\n | ContactResponse\n | UpdateMissedCallsResponse\n | UCMLinesResponse\n | DeleteCallHistoryRecordsResponse\n> {\n const errorCode = Number(err.statusCode);\n const failureMessage = 'FAILURE';\n\n switch (errorCode) {\n case ERROR_CODE.BAD_REQUEST: {\n log.warn(`400 Bad request`, loggerContext);\n\n const errorDetails = {\n statusCode: 400,\n data: {\n error: '400 Bad request',\n },\n message: failureMessage,\n };\n\n return errorDetails;\n }\n\n case ERROR_CODE.UNAUTHORIZED: {\n log.warn(`401 User is unauthorised, possible token expiry`, loggerContext);\n const errorDetails = {\n statusCode: 401,\n data: {\n error: 'User is unauthorised, possible token expiry',\n },\n message: failureMessage,\n };\n\n return errorDetails;\n }\n\n case ERROR_CODE.FORBIDDEN: {\n log.warn(`403 User request is forbidden`, loggerContext);\n\n const errorDetails = {\n statusCode: 403,\n data: {\n error: 'User request is forbidden',\n },\n message: failureMessage,\n };\n\n return errorDetails;\n }\n\n case ERROR_CODE.DEVICE_NOT_FOUND: {\n log.warn(`404 User info not found`, loggerContext);\n\n const errorDetails = {\n statusCode: 404,\n data: {\n error: 'User info not found',\n },\n message: failureMessage,\n };\n\n return errorDetails;\n }\n\n case ERROR_CODE.REQUEST_TIMEOUT: {\n log.warn(`408 Request to the server timedout`, loggerContext);\n\n const errorDetails = {\n statusCode: 408,\n data: {\n error: 'Request to the server timedout',\n },\n message: failureMessage,\n };\n\n return errorDetails;\n }\n case ERROR_CODE.NOT_IMPLEMENTED: {\n log.warn(`501 Not Implemented error occurred`, loggerContext);\n\n const errorDetails = {\n statusCode: 501,\n data: {\n error: 'Method is not implemented at the backend',\n },\n message: failureMessage,\n };\n\n return errorDetails;\n }\n case ERROR_CODE.INTERNAL_SERVER_ERROR: {\n log.warn(`500 Internal server error occurred`, loggerContext);\n\n const errorDetails = {\n statusCode: 500,\n data: {\n error: 'Internal server error occurred',\n },\n message: failureMessage,\n };\n\n return errorDetails;\n }\n\n case ERROR_CODE.SERVICE_UNAVAILABLE: {\n log.warn(`503 Unable to establish a connection with the server`, loggerContext);\n\n const errorDetails = {\n statusCode: 503,\n data: {\n error: 'Unable to establish a connection with the server',\n },\n message: failureMessage,\n };\n\n return errorDetails;\n }\n\n default: {\n log.warn(`${errorCode || 422} Exception has occurred`, loggerContext);\n const errorDetails = {\n statusCode: errorCode || 422,\n data: {\n error: `${errorCode || 422} Exception has occurred`,\n },\n message: failureMessage,\n };\n\n return errorDetails;\n }\n }\n}\n\n/**\n * @param stats - RTC peer connection stats.\n * @returns CallRtpStats.\n */\nexport function parseMediaQualityStatistics(stats: RTCStatsReport): CallRtpStats {\n if (!stats || navigator.userAgent.indexOf('Firefox') !== -1) {\n log.info('RTCStatsReport is null, adding dummy stats', {\n file: UTILS_FILE,\n method: 'parseMediaQualityStatistics',\n });\n\n return DUMMY_METRICS as unknown as CallRtpStats;\n }\n\n try {\n let type!: string;\n let id!: string;\n let inboundCodec!: string;\n let outboundCodec!: string;\n\n const localCandidates = {};\n const candidatePairs = {};\n const codecList = {};\n\n const rxStat = {} as ReceiveStatistics;\n const txStat = {} as TransmitStatistics;\n const vqPayload = {} as VoiceQualityMetrics;\n\n let jitterBufferDelay = 0;\n let jitterBufferEmittedCount = 0;\n let totalRoundTripTime = 0;\n let roundTripTimeMeasurements = 0;\n let selectedPair = '';\n let bitRate = 0;\n\n /* Set defaults */\n vqPayload.maxJitter = 0;\n vqPayload.VoPktSizeMs = 20;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n stats.forEach((report: any) => {\n Object.keys(report).forEach((statName) => {\n if (statName !== TIMESTAMP) {\n if (!type || statName === TYPE) {\n type = report[statName] as string;\n } else if (!id || statName === MEDIA_ID) {\n id = report[statName] as string;\n } else if (id && id.indexOf(RTC_ICE_CANDIDATE_PAIR) !== -1) {\n if (statName === LOCAL_CANDIDATE_ID) {\n candidatePairs[id] = report[statName];\n }\n } else if (id && id.indexOf(RTC_ICE_CANDIDATE) !== -1) {\n if (statName === NETWORK_TYPE) {\n localCandidates[id] = report[statName];\n }\n } else if (\n id &&\n (id.indexOf(INBOUND_CODEC_MATCH) !== -1 ||\n id.indexOf(OUTBOUND_CODEC_MATCH) !== -1 ||\n id.indexOf(RTC_CODEC) !== -1)\n ) {\n if (statName === MIME_TYPE) {\n codecList[id] = report[statName];\n }\n } else if (type && type === REMOTE_INBOUND_RTP) {\n switch (statName) {\n case TOTAL_ROUND_TRIP_TIME: {\n totalRoundTripTime = report[statName];\n break;\n }\n case ROUND_TRIP_TIME_MEASUREMENTS: {\n roundTripTimeMeasurements = report[statName];\n break;\n }\n default: {\n // We don't care about the other stats\n }\n }\n } else if (type && type === INBOUND_RTP) {\n switch (statName) {\n case CODEC_ID: {\n inboundCodec = report[statName];\n break;\n }\n case PACKETS_RECEIVED: {\n rxStat.Pkt = report[statName];\n break;\n }\n case BYTES_RECEIVED: {\n rxStat.Oct = report[statName];\n break;\n }\n case PACKETS_DISCARDED: {\n rxStat.LatePkt = report[statName];\n break;\n }\n case PACKETS_LOST: {\n rxStat.LostPkt = report[statName];\n break;\n }\n case JITTER_BUFFER_DELAY: {\n jitterBufferDelay = report[statName];\n break;\n }\n case JITTER_BUFFER_EMITTED_COUNT: {\n jitterBufferEmittedCount = report[statName];\n break;\n }\n default: {\n // We don't care about the other stats\n }\n }\n } else if (type && type === TRANSPORT) {\n switch (statName) {\n case SELECTED_CANDIDATE_PAIR_ID: {\n selectedPair = report[statName];\n break;\n }\n default: {\n // We don't care about the other stats\n }\n }\n } else if (type && type === OUTBOUND_RTP) {\n switch (statName) {\n case CODEC_ID: {\n outboundCodec = report[statName];\n break;\n }\n case PACKETS_SENT: {\n txStat.Pkt = report[statName];\n break;\n }\n case BYTES_SENT: {\n txStat.Oct = report[statName];\n break;\n }\n case TARGET_BIT_RATE: {\n bitRate = report[statName];\n break;\n }\n default: {\n // We don't care about the other stats\n }\n }\n } else if (type && type === MEDIA_SOURCE) {\n switch (statName) {\n case TOTAL_SAMPLES_DURATION: {\n rxStat.Dur = report[statName];\n txStat.Dur = report[statName];\n break;\n }\n default: {\n // We don't care about the other stats\n }\n }\n }\n }\n });\n });\n\n /* One way Delay */\n if (roundTripTimeMeasurements !== 0) {\n vqPayload.VoOneWayDelayMs = totalRoundTripTime / (2 * roundTripTimeMeasurements);\n } else {\n vqPayload.VoOneWayDelayMs = 0;\n }\n /* Application type */\n vqPayload.hwType = `${platform.os}/${platform.name}-${platform.version}`;\n\n /* Network type */\n vqPayload.networkType = localCandidates[candidatePairs[selectedPair]];\n\n /* Average Jitter */\n rxStat.AvgJit = jitterBufferDelay / jitterBufferEmittedCount;\n\n /* Update codec */\n // eslint-disable-next-line prefer-destructuring\n vqPayload.VoRxCodec = codecList[inboundCodec].split('/')[1];\n\n const txVqPayload = {} as TransmitterVqPayload;\n\n // eslint-disable-next-line prefer-destructuring\n txVqPayload.VoTxCodec = codecList[outboundCodec].split('/')[1];\n txVqPayload.rtpBitRate = bitRate;\n\n const byeStats = {};\n\n rxStat.VQMetrics = vqPayload;\n txStat.VQMetrics = txVqPayload;\n\n byeStats[RTP_RX_STAT] = rxStat;\n byeStats[RTP_TX_STAT] = txStat;\n\n log.log(JSON.stringify(byeStats), {file: UTILS_FILE, method: 'parseMediaQualityStatistics'});\n\n return byeStats as CallRtpStats;\n } catch (err: unknown) {\n log.warn(`Caught error while parsing RTP stats, ${err}`, {\n file: UTILS_FILE,\n method: 'parseMediaQualityStatistics',\n });\n\n return DUMMY_METRICS as unknown as CallRtpStats;\n }\n}\n\n/**\n * To simulate delays.\n *\n * @param msec - Amount of delay.\n * @returns - Promise.\n */\nexport const waitForMsecs = (msec: number) =>\n new Promise((resolve) => {\n setTimeout(resolve, msec);\n });\n\n/**\n * Register calling backend.\n *\n * @param webex -.\n * @returns CallingBackEnd.\n */\nexport function getCallingBackEnd(webex: WebexSDK): CALLING_BACKEND {\n const entModels: Model[] = webex.internal.device.features.entitlement.models;\n let callingBackend;\n\n if (webex.internal.device.callingBehavior === NATIVE_WEBEX_TEAMS_CALLING) {\n for (let i = 0; i < entModels.length; i += 1) {\n if (\n entModels[i][VALUES][KEY] === ENTITLEMENT_BASIC ||\n entModels[i][VALUES][KEY] === ENTITLEMENT_STANDARD\n ) {\n callingBackend = CALLING_BACKEND.WXC;\n break;\n } else if (entModels[i][VALUES][KEY] === ENTITLEMENT_BROADWORKS_CONN) {\n callingBackend = CALLING_BACKEND.BWRKS;\n break;\n }\n }\n } else if (webex.internal.device.callingBehavior === NATIVE_SIP_CALL_TO_UCM) {\n callingBackend = CALLING_BACKEND.UCM;\n } else {\n callingBackend = CALLING_BACKEND.INVALID;\n }\n\n return callingBackend as CALLING_BACKEND;\n}\n\n/**\n * Register XSI endpoint based on calling backend.\n *\n * @param webex -.\n * @param loggerContext -.\n * @param callingBackend -.\n * @returns Promise.\n */\nexport async function getXsiActionEndpoint(\n webex: WebexSDK,\n loggerContext: LogContext,\n callingBackend: CALLING_BACKEND\n) {\n try {\n switch (callingBackend) {\n case CALLING_BACKEND.WXC: {\n const userIdResponse = <WebexRequestPayload>await webex.request({\n uri: `${webex.internal.services._serviceUrls.hydra}/${XSI_ACTION_ENDPOINT_ORG_URL_PARAM}`,\n method: HTTP_METHODS.GET,\n });\n\n log.log(\n `Response code: ${userIdResponse.statusCode}, Response trackingid: ${userIdResponse?.headers?.trackingid}`,\n {\n file: UTILS_FILE,\n method: 'getXsiActionEndpoint',\n }\n );\n\n const response = userIdResponse.body as WebexRequestPayload;\n\n const xsiEndpoint = response[ITEMS][0][XSI_ACTION_ENDPOINT];\n\n return xsiEndpoint;\n }\n\n case CALLING_BACKEND.BWRKS: {\n const bwTokenResponse = <WebexRequestPayload>await webex.request({\n uri: `${webex.internal.services._serviceUrls.wdm}/${DEVICES}`,\n method: HTTP_METHODS.GET,\n });\n\n log.log(\n `Response code: ${bwTokenResponse.statusCode}, Response trackingid: ${bwTokenResponse?.headers?.trackingid}`,\n {\n file: UTILS_FILE,\n method: 'getXsiActionEndpoint',\n }\n );\n\n const response = bwTokenResponse.body as WebexRequestPayload;\n\n let xsiEndpoint = response[DEVICES][0][SETTINGS][BW_XSI_URL];\n\n const xsiUrl = response[DEVICES][0][SETTINGS][BW_XSI_URL];\n\n // Check if it ends with specific version and slice accordingly\n if (xsiUrl.endsWith(BW_XSI_ENDPOINT_VERSION)) {\n xsiEndpoint = xsiUrl.slice(0, -5); // Remove 'v2.0'\n } else if (xsiUrl.endsWith(BW_XSI_ENDPOINT_VERSION_WITH_SLASH)) {\n xsiEndpoint = xsiUrl.slice(0, -6); // Remove 'v2.0/'\n }\n\n return xsiEndpoint;\n }\n\n default: {\n throw new Error('Calling backend is not identified, exiting....');\n }\n }\n } catch (err: unknown) {\n const errorInfo = err as WebexRequestPayload;\n\n serviceErrorCodeHandler(errorInfo, loggerContext);\n\n return errorInfo;\n }\n}\n\n/**\n * Get sorted VoicemailList based on sort order passed.\n *\n * @param webex - Webex object to get service urls.\n * @param callingBackend - CallingBackend will have info like UCM.\n * @returns VGEndpointUrl.\n */\nexport function getVgActionEndpoint(webex: WebexSDK, callingBackend: CALLING_BACKEND) {\n try {\n if (callingBackend && callingBackend === CALLING_BACKEND.UCM) {\n return webex.internal.services._serviceUrls['ucmgmt-gateway'];\n }\n throw new Error('Calling backend is not identified, exiting....');\n } catch (err: unknown) {\n const errorInfo = err as unknown;\n\n return errorInfo;\n }\n}\n\n/**\n * Get sorted VoiceMailList based on sort order passed.\n *\n * @param voiceMessageList - List of voicemessage.\n * @param sortOrder - Type of sort either ascending or descending.\n * @returns Sorted voicemessageList .\n */\nexport function getSortedVoicemailList(\n voiceMessageList: MessageInfo[],\n sortOrder: SORT\n): MessageInfo[] {\n /* istanbul ignore else */\n if (sortOrder === SORT.DESC) {\n voiceMessageList.sort(\n (voiceMail, nextVoiceMail) =>\n nextVoiceMail[TIME][PLACEHOLDER_KEY] - voiceMail[TIME][PLACEHOLDER_KEY]\n );\n } else if (sortOrder === SORT.ASC) {\n voiceMessageList.sort(\n (voiceMail, nextVoiceMail) =>\n voiceMail[TIME][PLACEHOLDER_KEY] - nextVoiceMail[TIME][PLACEHOLDER_KEY]\n );\n }\n\n return voiceMessageList;\n}\n\n/**\n * Handler to perform a SCIM Query.\n *\n * @param filter - A filter for the query.\n * @returns - Promise.\n */\nexport async function scimQuery(filter: string) {\n log.info(`Starting resolution for filter:- ${filter}`, {\n file: UTILS_FILE,\n method: 'scimQuery',\n });\n const sdkConnector = SDKConnector;\n const webex = sdkConnector.getWebex();\n\n const isProd = !webex.internal.device.url.includes('-int');\n const webexHost = isProd ? WEBEX_API_PROD : WEBEX_API_BTS;\n\n const scimUrl = `${webexHost}/${IDENTITY_ENDPOINT_RESOURCE}/${SCIM_ENDPOINT_RESOURCE}/${webex.internal.device.orgId}/${SCIM_USER_FILTER}`;\n const query = scimUrl + encodeURIComponent(filter);\n\n const response = await (<WebexRequestPayload>(<unknown>webex.request({\n uri: query,\n method: HTTP_METHODS.GET,\n headers: {\n [CISCO_DEVICE_URL]: webex.internal.device.url,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n })));\n\n log.log(\n `Response code: ${response.statusCode}, Response trackingid: ${response?.headers?.trackingid}`,\n {\n file: UTILS_FILE,\n method: 'scimQuery',\n }\n );\n\n return response;\n}\n\n/**\n * Resolve Caller Id display information using SCIM query.\n *\n * @param filter - CI userId.\n */\nexport async function resolveCallerIdDisplay(filter: string) {\n let resolution;\n const displayResult = {} as DisplayInformation;\n\n try {\n const response = await scimQuery(filter);\n\n resolution = response.body as SCIMListResponse;\n\n log.info(`Number of records found for this user :- ${resolution.totalResults}`, {\n file: UTILS_FILE,\n method: 'resolveCallerIdDisplay',\n });\n } catch (err) {\n const res = err as WebexRequestPayload;\n\n log.warn(`Error response: - ${res.statusCode}`, {\n file: UTILS_FILE,\n method: 'resolveCallerIdDisplay',\n });\n }\n\n if (resolution?.totalResults && resolution.totalResults > 0) {\n /* Every user has single resource from what we have discussed. May need to revisit this later\n * for shared-line use-cases.\n */\n const scimResource = resolution.Resources[0];\n\n displayResult.name = scimResource.displayName;\n\n /* Pick only the primary number OR 2nd preference Work */\n const numberObj =\n scimResource.phoneNumbers?.find((num) => num.primary) ||\n scimResource.phoneNumbers?.find((num) => num.type.toLowerCase() === 'work');\n\n if (numberObj) {\n displayResult.num = <string>numberObj.value;\n } else if (scimResource.phoneNumbers && scimResource.phoneNumbers.length > 0) {\n /* When no primary number exists OR PA-ID/From failed to populate, we take the first number */\n log.info('Failure to resolve caller information. Setting number as caller ID', {\n file: UTILS_FILE,\n method: 'resolveCallerIdDisplay',\n });\n displayResult.num = scimResource.phoneNumbers[0].value;\n }\n\n /* For Webapp, we are only picking thumbnail photo */\n const photo = scimResource.photos?.find((photo) => photo.type === 'thumbnail');\n\n displayResult.avatarSrc = photo ? photo.value : 'unknown';\n\n displayResult.id = scimResource.id;\n }\n\n return displayResult;\n}\n\n/**\n * Resolve contact info from display name, using people search API.\n *\n * @param name - Display name.\n */\nexport async function resolveCallerIdByName(name: string) {\n const displayResult = {} as DisplayInformation;\n const sdkConnector = SDKConnector;\n const webex = sdkConnector.getWebex();\n /**\n * @param query - Display name.\n */\n const searchDirectory = (query: string) => {\n return webex.people.list({\n displayName: query,\n });\n };\n\n await searchDirectory(name).then((results) => {\n log.info(`DS Result: ${results}`, {\n file: UTILS_FILE,\n method: 'resolveCallerIdByName',\n });\n if (results && results.items && results.items.length > 0) {\n const resolution = results.items[0];\n\n displayResult.name = resolution.displayName;\n\n /* id is like cisco spark://us/PEOPLE/b853bbd1-1136-4d25-938d-0c37541b1234\n * We need to extract UUID portion. */\n const id = Buffer.from(resolution.id, 'base64').toString('binary');\n\n displayResult.id = id.split('/').pop();\n\n const numObj = resolution.phoneNumbers.find((num) => num.type === 'work');\n\n if (numObj) {\n displayResult.num = numObj.value;\n } else if (resolution.phoneNumbers.length > 0) {\n displayResult.num = resolution.phoneNumbers[0].value;\n }\n displayResult.avatarSrc = resolution.avatar;\n log.info(\n `Extracted details:- name: ${displayResult.name} , number: ${displayResult.num}, photo: ${displayResult.avatarSrc}, id: ${displayResult.id}`,\n {\n file: UTILS_FILE,\n method: 'resolveCallerIdByName',\n }\n );\n }\n });\n\n return displayResult;\n}\n\n/**\n * Resolve the contact information.\n *\n * @param callingPartyInfo - Calling Party Info.\n */\nexport async function resolveContact(\n callingPartyInfo: CallingPartyInfo\n): Promise<DisplayInformation | null> {\n if (callingPartyInfo.userExternalId && callingPartyInfo.userExternalId.$) {\n /* SCIM Search */\n return resolveCallerIdDisplay(`id eq \"${callingPartyInfo.userExternalId.$}\"`);\n }\n if (callingPartyInfo.name && callingPartyInfo.name.$) {\n /* People Search */\n return resolveCallerIdByName(callingPartyInfo.name.$);\n }\n\n return null;\n}\n\n/**\n * Store encrypted voicemailList in SessionStorage.\n *\n * @param context - Context for storage.\n * @param voiceMessageList - List of voicemessage.\n */\nexport function storeVoicemailList(context: string, voiceMessageList: MessageInfo[]) {\n const vmEncodedList = Buffer.from(JSON.stringify(voiceMessageList), 'utf8').toString('base64');\n\n sessionStorage.setItem(context, vmEncodedList.toString());\n}\n\n/**\n * Fetch decrypted voicemailList from SessionStorage.\n *\n * @param context - Context for the storage.\n * @param offset - Number of voicemail records to skip.\n * @param offsetLimit - Number of voicemail list to fetch from the offset.\n * @param loggerContext - File, method name object.\n * @returns - Array containing voicemails and flag to indicate availability of more voicemails.\n */\nexport function fetchVoicemailList(\n context: string,\n offset: number,\n offsetLimit: number,\n loggerContext: LogContext\n): FilteredVoicemail {\n let moreVoicemails = false;\n let requiredVoicemailList: MessageInfo[] = [];\n\n try {\n const voicemailList = JSON.parse(\n Buffer.from(sessionStorage.getItem(context) as string, 'base64').toString('utf8')\n );\n\n log.info(`Length of voicemail list: ${voicemailList.length}`, loggerContext);\n\n if (voicemailList.length > offset + offsetLimit) {\n moreVoicemails = true;\n }\n\n requiredVoicemailList = voicemailList.slice(offset, offset + offsetLimit);\n } catch (err: unknown) {\n log.warn(`Caught exception while fetching voicemail from storage. ${err}`, loggerContext);\n const errorInfo = err as WebexRequestPayload;\n\n serviceErrorCodeHandler(errorInfo, {});\n }\n\n return {messages: requiredVoicemailList, moreVMAvailable: moreVoicemails};\n}\n\n/**\n * Converts a uuid to a hydra id without a network dip.\n *\n * @param id - ID to be encoded to base64.\n * @param decodeType - DecodeType.\n * @returns - Encoded string value.\n */\nexport function inferIdFromUuid(id: string, decodeType: DecodeType): string {\n return Buffer.from(`${INFER_ID_CONSTANT}/${decodeType}/${id}`, 'binary').toString('base64');\n}\n\n/**\n * Validates service indicator.\n *\n * @param indicator - Must match with one of the values in ServiceIndicator enum.\n * @returns True if validation is successful else false.\n */\nfunction isValidServiceIndicator(indicator: ServiceIndicator): boolean {\n return Object.values(ServiceIndicator).some((v) => v === indicator);\n}\n\n/**\n * Validates domain field in input service data object.\n * Domain value must be in valid domain format for service\n * type contactcenter.\n * But for service type calling it's allowed to be empty or\n * undefined however if it's not empty/undefined for service\n * type calling then even that will be validated to see if it\n * is in valid domain format.\n *\n * @param serviceData - .\n * @returns True if validation is successful else false.\n */\nfunction isValidServiceDomain(serviceData: ServiceData): boolean {\n const regexp = /^[a-z0-9]+([-.]{1}[a-z0-9]+)*\\.[a-z]{2,6}$/i;\n const {domain} = serviceData;\n\n if (!domain) {\n return (\n serviceData.indicator === ServiceIndicator.CALLING ||\n serviceData.indicator === ServiceIndicator.GUEST_CALLING\n );\n }\n\n return regexp.test(domain);\n}\n\n/**\n * Validates service data object(indicator & domain) and throws\n * exception with a message indicating the reason for validation\n * failure.\n *\n * @param serviceData - Input service data to be validated.\n */\nexport function validateServiceData(serviceData: ServiceData) {\n const allowedValues = Object.values(ServiceIndicator);\n const formattedValues = allowedValues.join(', ').replace(/,([^,]*)$/, ' and$1');\n\n if (!isValidServiceIndicator(serviceData.indicator)) {\n throw new Error(`Invalid service indicator, Allowed values are: ${formattedValues}`);\n }\n\n if (!isValidServiceDomain(serviceData)) {\n throw new Error('Invalid service domain.');\n }\n}\n\n/**\n * Modifies SDP to replace IPv6 \"c=\" lines with IPv4.And adds an IPv4 candidate if none exists.\n *\n * @param sdp - Session Description Protocol string.\n * @returns Modified SDP string.\n */\nexport function modifySdpForIPv4(sdp: string): string {\n try {\n // Normalize line endings to avoid issues\n sdp = sdp.replace(/\\r\\n|\\r/g, '\\n');\n\n // Ensure consistent spacing without removing intentional indentation\n sdp = sdp.replace(/^[ \\t]+/gm, '');\n\n // Check if at least one IPv6 \"c=\" line is present\n const ipv6CLineMatches = sdp.match(/c=IN IP6 [\\da-f:.]+/gi) || [];\n const hasIPv6CLine = ipv6CLineMatches.length > 0;\n\n if (hasIPv6CLine) {\n log.info('Modifying SDP for IPv4 compatibility', {\n file: UTILS_FILE,\n method: 'modifySdpForIPv4',\n });\n\n // Extract an existing IPv4 candidate's IP, if available\n const ipv4CandidateMatch = sdp.match(/a=candidate:\\d+ \\d+ \\w+ \\d+ ([\\d.]+) \\d+ typ \\w+/);\n const ipv4Address = ipv4CandidateMatch?.[1] || '192.1.1.1'; // Default fallback\n\n // Replace all IPv6 \"c=\" lines with IPv4 using the extracted IP (or default)\n sdp = sdp.replace(/c=IN IP6 [\\da-f:.]+/gi, `c=IN IP4 ${ipv4Address}`);\n\n // Ensure newline separation between candidate lines\n if (!ipv4CandidateMatch) {\n let ipv4CandidateAdded = false;\n\n sdp = sdp.replace(\n /(a=candidate:(\\d+) (\\d+) (\\w+) (\\d+) ([\\da-f:.]+) (\\d+) typ (\\w+)[^\\n]*)/g,\n (\n match: string,\n full: string,\n foundation: string,\n componentId: string,\n transport: string, // Supports both UDP and TCP\n priority: string,\n connectionAddress: string,\n port: string,\n candidateType: string\n ) => {\n if (!ipv4CandidateAdded && connectionAddress.includes(':')) {\n // Ensure it's IPv6 and only add once\n ipv4CandidateAdded = true;\n const newFoundation = (parseInt(foundation, 10) + 1).toString();\n\n return (\n `${full}\\n` +\n `a=candidate:${newFoundation} ${componentId} ${transport} ${priority} ${ipv4Address} ${port} typ ${candidateType} generation 0 network-id 1 network-cost 10`\n );\n }\n\n return match;\n }\n );\n }\n }\n\n return sdp;\n } catch (error) {\n log.warn(`Error modifying SDP for IPv4 compatibility: ${error}`, {\n file: UTILS_FILE,\n method: 'modifySdpForIPv4',\n });\n\n return sdp; // Return original SDP in case of an error\n }\n}\n\n/**\n * Uploads logs to backend.\n *\n * @param metaData - Metadata to be uploaded.\n * @param throwError - Whether to throw exception on failure (default: false).\n * @returns Promise containing upload response if successful.\n */\nexport async function uploadLogs(\n metaData: LogsMetaData = {},\n throwError = false\n): Promise<UploadLogsResponse | undefined> {\n const webex = SDKConnector.getWebex();\n // const feedbackId = crypto.randomUUID();\n const feedbackId = uuid();\n try {\n const response = await webex.internal.support.submitLogs(\n {...metaData, feedbackId},\n undefined, // we dont send logs but take from webex logger\n {type: 'diff'} // this is to take the diff logs from previous upload\n );\n log.info(`Logs uploaded successfully with feedbackId: ${feedbackId}`, {\n file: UTILS_FILE,\n method: 'uploadLogs',\n });\n\n getMetricManager().submitUploadLogsMetric(\n METRIC_EVENT.UPLOAD_LOGS_SUCCESS,\n UPLOAD_LOGS_ACTION,\n METRIC_TYPE.BEHAVIORAL,\n response?.trackingid,\n feedbackId,\n metaData?.correlationId,\n undefined,\n metaData?.callId,\n metaData?.broadworksCorrelationInfo\n );\n\n return {\n trackingid: response.trackingid,\n ...(response.url ? {url: response.url} : {}),\n ...(response.userId ? {userId: response.userId} : {}),\n ...(response.correlationId ? {correlationId: response.correlationId} : {}),\n ...(metaData?.broadworksCorrelationInfo\n ? {broadworksCorrelationInfo: metaData?.broadworksCorrelationInfo}\n : {}),\n feedbackId,\n };\n } catch (error) {\n const errorLog = new Error(`Failed to upload Logs ${error}`) as ExtendedError;\n log.error(errorLog, {\n file: UTILS_FILE,\n method: 'uploadLogs',\n });\n\n getMetricManager().submitUploadLogsMetric(\n METRIC_EVENT.UPLOAD_LOGS_FAILED,\n UPLOAD_LOGS_ACTION,\n METRIC_TYPE.BEHAVIORAL,\n undefined,\n feedbackId,\n metaData?.correlationId,\n errorLog.message,\n metaData?.callId,\n metaData?.broadworksCorrelationInfo\n );\n\n if (throwError) {\n throw error;\n }\n\n return undefined;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1661,7 +1661,9 @@ describe('uploadLogs', function () {
1661
1661
  _context15.prev = 10;
1662
1662
  _context15.t0 = _context15["catch"](4);
1663
1663
  expect(_context15.t0).toBe(mockError);
1664
- expect(logSpy).toHaveBeenCalledWith("Failed to upload Logs ".concat((0, _stringify.default)(_context15.t0)), {
1664
+ expect(logSpy).toHaveBeenCalledWith(expect.objectContaining({
1665
+ message: expect.stringContaining('Failed to upload Logs')
1666
+ }), {
1665
1667
  file: _constants.UTILS_FILE,
1666
1668
  method: 'uploadLogs'
1667
1669
  });
@@ -1675,7 +1677,7 @@ describe('uploadLogs', function () {
1675
1677
  tracking_id: undefined,
1676
1678
  feedback_id: 'mocked-uuid-12345',
1677
1679
  call_id: undefined,
1678
- error: "Failed to upload Logs ".concat((0, _stringify.default)(_context15.t0))
1680
+ error: 'Failed to upload Logs Error: Upload failed'
1679
1681
  },
1680
1682
  tags: {
1681
1683
  action: 'upload_logs',
@@ -1707,7 +1709,9 @@ describe('uploadLogs', function () {
1707
1709
  case 6:
1708
1710
  result = _context16.sent;
1709
1711
  expect(result).toBeUndefined();
1710
- expect(logSpy).toHaveBeenCalledWith("Failed to upload Logs ".concat((0, _stringify.default)(mockError)), {
1712
+ expect(logSpy).toHaveBeenCalledWith(expect.objectContaining({
1713
+ message: expect.stringContaining('Failed to upload Logs')
1714
+ }), {
1711
1715
  file: _constants.UTILS_FILE,
1712
1716
  method: 'uploadLogs'
1713
1717
  });
@@ -1721,7 +1725,7 @@ describe('uploadLogs', function () {
1721
1725
  tracking_id: undefined,
1722
1726
  feedback_id: 'mocked-uuid-12345',
1723
1727
  call_id: undefined,
1724
- error: "Failed to upload Logs ".concat((0, _stringify.default)(mockError))
1728
+ error: 'Failed to upload Logs Error: Upload failed'
1725
1729
  },
1726
1730
  tags: {
1727
1731
  action: 'upload_logs',