@webex/calling 3.0.1 → 3.1.0-next.2

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 (55) hide show
  1. package/dist/CallHistory/CallHistory.js +132 -18
  2. package/dist/CallHistory/CallHistory.js.map +1 -1
  3. package/dist/CallHistory/CallHistory.test.js +214 -4
  4. package/dist/CallHistory/CallHistory.test.js.map +1 -1
  5. package/dist/CallHistory/callHistoryFixtures.js +38 -1
  6. package/dist/CallHistory/callHistoryFixtures.js.map +1 -1
  7. package/dist/CallHistory/constants.js +5 -1
  8. package/dist/CallHistory/constants.js.map +1 -1
  9. package/dist/CallHistory/types.js.map +1 -1
  10. package/dist/CallingClient/calling/call.js +80 -23
  11. package/dist/CallingClient/calling/call.js.map +1 -1
  12. package/dist/CallingClient/calling/call.test.js +482 -378
  13. package/dist/CallingClient/calling/call.test.js.map +1 -1
  14. package/dist/CallingClient/constants.js +3 -1
  15. package/dist/CallingClient/constants.js.map +1 -1
  16. package/dist/Events/types.js +2 -0
  17. package/dist/Events/types.js.map +1 -1
  18. package/dist/Metrics/index.js +30 -0
  19. package/dist/Metrics/index.js.map +1 -1
  20. package/dist/Metrics/index.test.js +52 -2
  21. package/dist/Metrics/index.test.js.map +1 -1
  22. package/dist/Metrics/types.js +2 -0
  23. package/dist/Metrics/types.js.map +1 -1
  24. package/dist/common/Utils.js.map +1 -1
  25. package/dist/module/CallHistory/CallHistory.js +51 -1
  26. package/dist/module/CallHistory/callHistoryFixtures.js +38 -1
  27. package/dist/module/CallHistory/constants.js +4 -0
  28. package/dist/module/CallingClient/calling/call.js +67 -15
  29. package/dist/module/CallingClient/constants.js +1 -0
  30. package/dist/module/Events/types.js +2 -0
  31. package/dist/module/Metrics/index.js +28 -0
  32. package/dist/module/Metrics/types.js +2 -0
  33. package/dist/types/CallHistory/CallHistory.d.ts +4 -2
  34. package/dist/types/CallHistory/CallHistory.d.ts.map +1 -1
  35. package/dist/types/CallHistory/callHistoryFixtures.d.ts +19 -1
  36. package/dist/types/CallHistory/callHistoryFixtures.d.ts.map +1 -1
  37. package/dist/types/CallHistory/constants.d.ts +4 -0
  38. package/dist/types/CallHistory/constants.d.ts.map +1 -1
  39. package/dist/types/CallHistory/types.d.ts +10 -1
  40. package/dist/types/CallHistory/types.d.ts.map +1 -1
  41. package/dist/types/CallingClient/calling/call.d.ts +6 -1
  42. package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
  43. package/dist/types/CallingClient/constants.d.ts +1 -0
  44. package/dist/types/CallingClient/constants.d.ts.map +1 -1
  45. package/dist/types/Contacts/ContactsClient.d.ts +1 -1
  46. package/dist/types/Events/types.d.ts +29 -2
  47. package/dist/types/Events/types.d.ts.map +1 -1
  48. package/dist/types/Metrics/index.d.ts.map +1 -1
  49. package/dist/types/Metrics/types.d.ts +3 -0
  50. package/dist/types/Metrics/types.d.ts.map +1 -1
  51. package/dist/types/Voicemail/UcmBackendConnector.d.ts +1 -1
  52. package/dist/types/Voicemail/WxCallBackendConnector.d.ts +1 -1
  53. package/dist/types/common/Utils.d.ts +2 -2
  54. package/dist/types/common/Utils.d.ts.map +1 -1
  55. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"names":["_internalMediaCore","require","_xstate","_uuid","_types","_Utils","_types2","_CallError","_constants","_SDKConnector","_interopRequireDefault","_impl","_types3","_types4","_Logger","_CallerId","_types5","_Metrics","_constants2","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","_Reflect$construct","arguments","apply","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","e","Call","exports","_Eventing","_inherits2","_super","activeUrl","webex","destination","direction","deviceId","lineId","deleteCb","indicator","_this","_classCallCheck2","_defineProperty2","_assertThisInitialized2","callId","correlationId","log","info","concat","file","CALL_FILE","method","setCallId","name","disconnectReason","_ref","_asyncToGenerator2","_regenerator","mark","_callee","roapMessage","wrap","_callee$","_context","prev","next","abrupt","request","uri","mobiusUrl","DEVICES_ENDPOINT_RESOURCE","CALL_ENDPOINT_RESOURCE","HTTP_METHODS","POST","service","ALLOWED_SERVICES","MOBIUS","headers","CISCO_DEVICE_URL","internal","device","url","SPARK_USER_AGENT","CALLING_USER_AGENT","body","callee","type","address","localMedia","roap","mediaId","uuid","stop","_x","callerInfo","sendCallStateMachineEvt","held","localAudioStream","localAudioTrack","outputStream","getAudioTracks","muted","enabled","newAudioStream","warn","getCorrelationId","mediaConnection","updateLocalTracks","audio","sdkConnector","SDKConnector","serviceIndicator","getWebex","setWebex","metricManager","getMetricManager","DEFAULT_LOCAL_CALL_ID","connected","mediaInactivity","earlyMedia","localRoapMessage","receivedRoapOKSeq","mediaNegotiationCompleted","seq","INITIAL_SEQ_NUMBER","callerId","createCallerId","emitObj","emit","CALL_EVENT_KEYS","CALLER_ID","remoteRoapMessage","code","DisconnectCode","NORMAL","cause","DisconnectCause","callMachine","createMachine","schema","context","events","id","initial","states","S_IDLE","on","E_RECV_CALL_SETUP","target","actions","E_SEND_CALL_SETUP","E_RECV_CALL_DISCONNECT","E_SEND_CALL_DISCONNECT","E_UNKNOWN","S_RECV_CALL_SETUP","E_SEND_CALL_ALERTING","S_SEND_CALL_SETUP","E_RECV_CALL_PROGRESS","E_RECV_CALL_CONNECT","S_RECV_CALL_PROGRESS","S_SEND_CALL_PROGRESS","E_SEND_CALL_CONNECT","S_RECV_CALL_CONNECT","E_CALL_ESTABLISHED","S_SEND_CALL_CONNECT","S_CALL_HOLD","S_CALL_RESUME","S_CALL_ESTABLISHED","E_CALL_HOLD","E_CALL_RESUME","S_RECV_CALL_DISCONNECT","E_CALL_CLEARED","S_SEND_CALL_DISCONNECT","S_UNKNOWN","S_ERROR","S_CALL_CLEARED","incomingCallSetup","event","handleIncomingCallSetup","outgoingCallSetup","handleOutgoingCallSetup","incomingCallProgress","handleIncomingCallProgress","outgoingCallAlerting","handleOutgoingCallAlerting","incomingCallConnect","handleIncomingCallConnect","outgoingCallConnect","handleOutgoingCallConnect","callEstablished","handleCallEstablished","initiateCallHold","handleCallHold","initiateCallResume","handleCallResume","incomingCallDisconnect","handleIncomingCallDisconnect","outgoingCallDisconnect","handleOutgoingCallDisconnect","unknownState","handleUnknownState","mediaMachine","S_ROAP_IDLE","E_RECV_ROAP_OFFER_REQUEST","E_RECV_ROAP_OFFER","E_SEND_ROAP_OFFER","S_RECV_ROAP_OFFER_REQUEST","E_ROAP_OK","E_ROAP_ERROR","S_RECV_ROAP_OFFER","E_SEND_ROAP_ANSWER","S_SEND_ROAP_OFFER","E_RECV_ROAP_ANSWER","S_RECV_ROAP_ANSWER","S_SEND_ROAP_ANSWER","S_ROAP_OK","E_ROAP_TEARDOWN","S_ROAP_ERROR","S_ROAP_TEARDOWN","incomingRoapOffer","handleIncomingRoapOffer","incomingRoapAnswer","handleIncomingRoapAnswer","incomingRoapOfferRequest","handleIncomingRoapOfferRequest","outgoingRoapOffer","handleOutgoingRoapOffer","outgoingRoapAnswer","handleOutgoingRoapAnswer","roapEstablished","handleRoapEstablished","roapError","handleRoapError","callStateMachine","interpret","onTransition","state","value","_stringify","submitCallMetric","METRIC_EVENT","CALL","toString","METRIC_TYPE","BEHAVIORAL","undefined","start","mediaStateMachine","_this$remoteRoapMessa","submitMediaMetric","MEDIA","sdp","_createClass2","key","isMuted","isConnected","isHeld","_handleOutgoingCallSetup","_callee2","_this2","message","response","errData","_callee2$","_context2","data","post","sent","statusCode","t0","handleCallErrors","error","CALL_ERROR","submitCallErrorMetric","ERROR_LAYER","CALL_CONTROL","interval","_x2","_handleCallHold","_callee4","_this3","_callee4$","_context4","postSSRequest","SUPPLEMENTARY_SERVICES","HOLD","supplementaryServicesTimer","setTimeout","_callee3","errorContext","callError","_callee3$","_context3","createCallError","ERROR_TYPE","TIMEOUT","HOLD_ERROR","SUPPLEMENTARY_SERVICES_TIMEOUT","_x3","_handleCallResume","_callee6","_this4","_callee6$","_context6","RESUME","_callee5","_callee5$","_context5","RESUME_ERROR","_x4","_data$callProgressDat","callProgressData","inbandMedia","startCallerIdResolution","PROGRESS","roapMessageReceived","_handleOutgoingCallAlerting","_callee7","_this5","res","_callee7$","_context7","patch","MobiusCallState","ALERTING","_x5","CONNECT","_handleOutgoingCallConnect","_callee8","_this6","_callee8$","_context8","CONNECTED","_x6","_handleIncomingCallDisconnect","_callee9","_callee9$","_context9","setDisconnectReason","delete","sessionTimer","clearInterval","close","sendMediaStateMachineEvt","DISCONNECT","_x7","_handleOutgoingCallDisconnect","_callee10","_callee10$","_context10","_x8","_this7","ESTABLISHED","setInterval","_callee11","_callee11$","_context11","postStatus","DEFAULT_SESSION_TIMER","_handleUnknownState","_callee12","eventData","_callee12$","_context12","media","_x9","getEmitterCallback","_this8","clearTimeout","_handleRoapEstablished","_callee13","_this9","_ref5","received","_callee13$","_context13","postMedia","messageType","_x10","_x11","_handleRoapError","_callee14","_this10","_callee14$","_context14","_x12","_x13","_handleOutgoingRoapOffer","_callee15","_this11","_callee15$","_context15","initiateOffer","_x14","_x15","_handleOutgoingRoapAnswer","_callee16","_this12","_callee16$","_context16","_x16","_x17","initMediaConnection","debugId","RoapMediaConnection","skipInactiveTransceivers","iceServers","sdpMunging","convertPort9to0","addContentSlides","localTracks","video","screenShareVideo","send","MEDIA_INACTIVITY","CallDirection","OUTBOUND","BUSY","_answer","_callee17","_callee17$","_context17","mediaRoapEventsListener","mediaTrackListener","outputTrackUpdateListener","answer","_x18","_dial","_callee18","_callee18$","_context18","dial","_x19","_patch","_callee19","_callee19$","_context19","CALLS_ENDPOINT_RESOURCE","PATCH","callState","_x20","_postSSRequest","_callee20","transferContext","_callee20$","_context20","SERVICES_ENDPOINT","TRANSFER","CALL_HOLD_SERVICE","HOLD_ENDPOINT","RESUME_ENDPOINT","CALL_TRANSFER_SERVICE","TRANSFER_ENDPOINT","_assign","blindTransferContext","transferType","TransferType","BLIND","transferToCallId","consultTransferContext","CONSULT","_x21","_x22","_postStatus","_callee21","_callee21$","_context21","CALL_STATUS_RESOURCE","_completeTransfer","_callee22","transferCallId","transferTarget","_this13","_context22","_errData","_callee22$","_context23","completeTransfer","transferorCallId","getCallId","TRANSFER_ACTION","TRANSFER_ERROR","t1","_x23","_x24","_x25","_getCallStats","_callee23","stats","_callee23$","_context24","getStats","getCallStats","parseMediaQualityStatistics","_postMedia","_callee24","_callee24$","_context25","MEDIA_ENDPOINT_RESOURCE","_x26","_this14","Event","ROAP_MESSAGE_TO_SEND","_ref6","_callee25","_event$roapMessage","_event$roapMessage2","mediaOk","sdpVideoPortZero","_callee25$","_context26","version","RoapScenario","OK","OFFER","ANSWER","ERROR","OFFER_RESPONSE","replace","_x27","_this15","REMOTE_TRACK_ADDED","MEDIA_CONNECTION_EVENT_KEYS","MEDIA_TYPE_AUDIO","REMOTE_MEDIA","track","_this16","LocalStreamEventNames","OutputTrackChange","_delete2","_callee26","disconnectMetrics","_callee26$","_context27","DELETE","metrics","causecode","_delete","transferMetricAction","getCallError","errorLayer","_this$remoteRoapMessa2","MEDIA_ERROR","handleMidCallEvent","eventType","MidCallEventType","CALL_INFO","callerData","CALL_STATE","MOBIUS_MIDCALL_STATE","HELD","RESUMED","fetchCallerDetails","sendDigit","tone","insertDTMF","setBroadworksCorrelationInfo","broadworksCorrelationInfo","getBroadworksCorrelationInfo","getCallRtpStats","Eventing","createCall","dest","dir"],"sources":["call.ts"],"sourcesContent":["import {\n Event,\n LocalMicrophoneStream,\n LocalStreamEventNames,\n RoapMediaConnection,\n} from '@webex/internal-media-core';\nimport {createMachine, interpret} from 'xstate';\nimport {v4 as uuid} from 'uuid';\nimport {ERROR_LAYER, ERROR_TYPE, ErrorContext} from '../../Errors/types';\nimport {handleCallErrors, parseMediaQualityStatistics} from '../../common/Utils';\nimport {\n ALLOWED_SERVICES,\n CallDetails,\n CallDirection,\n CallId,\n CorrelationId,\n DisplayInformation,\n HTTP_METHODS,\n ServiceIndicator,\n WebexRequestPayload,\n} from '../../common/types';\nimport {CallError, createCallError} from '../../Errors/catalog/CallError';\n/* eslint-disable tsdoc/syntax */\n/* eslint-disable no-param-reassign */\nimport {\n CALL_ENDPOINT_RESOURCE,\n CALL_FILE,\n CALL_HOLD_SERVICE,\n CALL_STATUS_RESOURCE,\n CALL_TRANSFER_SERVICE,\n CALLING_USER_AGENT,\n CALLS_ENDPOINT_RESOURCE,\n CISCO_DEVICE_URL,\n DEFAULT_LOCAL_CALL_ID,\n DEFAULT_SESSION_TIMER,\n DEVICES_ENDPOINT_RESOURCE,\n HOLD_ENDPOINT,\n INITIAL_SEQ_NUMBER,\n MEDIA_ENDPOINT_RESOURCE,\n RESUME_ENDPOINT,\n SPARK_USER_AGENT,\n SUPPLEMENTARY_SERVICES_TIMEOUT,\n TRANSFER_ENDPOINT,\n} from '../constants';\nimport SDKConnector from '../../SDKConnector';\nimport {Eventing} from '../../Events/impl';\nimport {\n CALL_EVENT_KEYS,\n CallerIdInfo,\n CallEvent,\n CallEventTypes,\n MEDIA_CONNECTION_EVENT_KEYS,\n MOBIUS_MIDCALL_STATE,\n RoapEvent,\n RoapMessage,\n SUPPLEMENTARY_SERVICES,\n} from '../../Events/types';\nimport {ISDKConnector, WebexSDK} from '../../SDKConnector/types';\nimport {\n CallRtpStats,\n DeleteRecordCallBack,\n DisconnectCause,\n DisconnectCode,\n DisconnectReason,\n ICall,\n MediaContext,\n MidCallCallerId,\n MidCallEvent,\n MidCallEventType,\n MobiusCallData,\n MobiusCallResponse,\n MobiusCallState,\n PatchResponse,\n RoapScenario,\n SSResponse,\n SupplementaryServiceState,\n TransferContext,\n TransferType,\n} from './types';\nimport log from '../../Logger';\nimport {ICallerId} from './CallerId/types';\nimport {createCallerId} from './CallerId';\nimport {IMetricManager, METRIC_TYPE, METRIC_EVENT, TRANSFER_ACTION} from '../../Metrics/types';\nimport {getMetricManager} from '../../Metrics';\nimport {SERVICES_ENDPOINT} from '../../common/constants';\n\n/**\n *\n */\nexport class Call extends Eventing<CallEventTypes> implements ICall {\n private sdkConnector: ISDKConnector;\n\n private webex: WebexSDK;\n\n private destination: CallDetails;\n\n private direction: CallDirection;\n\n private callId: CallId;\n\n private correlationId: CorrelationId;\n\n private deviceId: string;\n\n public lineId: string;\n\n private disconnectReason: DisconnectReason;\n\n private callStateMachine;\n\n private mediaStateMachine;\n\n private seq: number; // TODO: remove later\n\n /* TODO: Need to change the type from any to RoapMediaConnection */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public mediaConnection?: any;\n\n private earlyMedia: boolean;\n\n private connected: boolean;\n\n private mediaInactivity: boolean;\n\n private callerInfo: DisplayInformation;\n\n private localRoapMessage: RoapMessage; // Use it for new offer\n\n private mobiusUrl!: string;\n\n private remoteRoapMessage: RoapMessage | null;\n\n private deleteCb: DeleteRecordCallBack;\n\n private callerId: ICallerId;\n\n private sessionTimer?: NodeJS.Timer;\n\n /* Used to wait for final responses for supplementary services */\n private supplementaryServicesTimer?: NodeJS.Timeout;\n\n private muted: boolean;\n\n private held: boolean;\n\n private metricManager: IMetricManager;\n\n private broadworksCorrelationInfo?: string; // Used in WxCC calls\n\n private serviceIndicator: ServiceIndicator;\n\n private mediaNegotiationCompleted: boolean;\n\n private receivedRoapOKSeq: number;\n\n /**\n * Getter to check if the call is muted or not.\n *\n * @returns - Boolean.\n */\n public isMuted() {\n return this.muted;\n }\n\n /**\n * Getter to check if the call is connected or not.\n *\n * @returns - Boolean.\n */\n public isConnected() {\n return this.connected;\n }\n\n /**\n * Getter to check if the call is held or not.\n *\n * @returns - Boolean.\n */\n public isHeld() {\n return this.held;\n }\n\n /**\n * @ignore\n */\n constructor(\n activeUrl: string,\n webex: WebexSDK,\n destination: CallDetails,\n direction: CallDirection,\n deviceId: string,\n lineId: string,\n deleteCb: DeleteRecordCallBack,\n indicator: ServiceIndicator\n ) {\n super();\n this.destination = destination;\n this.direction = direction;\n this.sdkConnector = SDKConnector;\n this.deviceId = deviceId;\n this.serviceIndicator = indicator;\n this.lineId = lineId;\n\n /* istanbul ignore else */\n if (!this.sdkConnector.getWebex()) {\n SDKConnector.setWebex(webex);\n }\n this.webex = this.sdkConnector.getWebex();\n this.metricManager = getMetricManager(this.webex, this.serviceIndicator);\n this.callId = `${DEFAULT_LOCAL_CALL_ID}_${uuid()}`;\n this.correlationId = uuid();\n this.deleteCb = deleteCb;\n this.connected = false;\n this.mediaInactivity = false;\n this.held = false;\n this.earlyMedia = false;\n this.callerInfo = {} as DisplayInformation;\n this.localRoapMessage = {} as RoapMessage;\n\n this.mobiusUrl = activeUrl;\n this.receivedRoapOKSeq = 0;\n this.mediaNegotiationCompleted = false;\n\n log.info(`Webex Calling Url:- ${this.mobiusUrl}`, {\n file: CALL_FILE,\n method: 'constructor',\n });\n\n this.seq = INITIAL_SEQ_NUMBER;\n this.callerId = createCallerId(webex, (callerInfo: DisplayInformation) => {\n this.callerInfo = callerInfo;\n const emitObj = {\n correlationId: this.correlationId,\n callerId: this.callerInfo,\n };\n\n this.emit(CALL_EVENT_KEYS.CALLER_ID, emitObj);\n });\n this.remoteRoapMessage = null;\n this.disconnectReason = {code: DisconnectCode.NORMAL, cause: DisconnectCause.NORMAL};\n\n const callMachine = createMachine(\n {\n schema: {\n context: {},\n // The events this machine handles\n events: {} as CallEvent,\n },\n id: 'call-state',\n initial: 'S_IDLE',\n context: {},\n states: {\n S_IDLE: {\n on: {\n E_RECV_CALL_SETUP: {\n target: 'S_RECV_CALL_SETUP',\n actions: ['incomingCallSetup'],\n },\n E_SEND_CALL_SETUP: {\n target: 'S_SEND_CALL_SETUP',\n actions: ['outgoingCallSetup'],\n },\n E_RECV_CALL_DISCONNECT: {\n target: 'S_RECV_CALL_DISCONNECT',\n actions: ['incomingCallDisconnect'],\n },\n E_SEND_CALL_DISCONNECT: {\n target: 'S_SEND_CALL_DISCONNECT',\n actions: ['outgoingCallDisconnect'],\n },\n E_UNKNOWN: {\n target: 'S_UNKNOWN',\n actions: ['unknownState'],\n },\n },\n },\n\n /* CALL SETUP */\n S_RECV_CALL_SETUP: {\n on: {\n E_SEND_CALL_ALERTING: {\n target: 'S_SEND_CALL_PROGRESS',\n actions: ['outgoingCallAlerting'],\n },\n E_RECV_CALL_DISCONNECT: {\n target: 'S_RECV_CALL_DISCONNECT',\n actions: ['incomingCallDisconnect'],\n },\n E_SEND_CALL_DISCONNECT: {\n target: 'S_SEND_CALL_DISCONNECT',\n actions: ['outgoingCallDisconnect'],\n },\n E_UNKNOWN: {\n target: 'S_UNKNOWN',\n actions: ['unknownState'],\n },\n },\n },\n S_SEND_CALL_SETUP: {\n on: {\n E_RECV_CALL_PROGRESS: {\n target: 'S_RECV_CALL_PROGRESS',\n actions: ['incomingCallProgress'],\n },\n E_RECV_CALL_CONNECT: {\n target: 'S_RECV_CALL_CONNECT',\n actions: ['incomingCallConnect'],\n },\n E_RECV_CALL_DISCONNECT: {\n target: 'S_RECV_CALL_DISCONNECT',\n actions: ['incomingCallDisconnect'],\n },\n E_SEND_CALL_DISCONNECT: {\n target: 'S_SEND_CALL_DISCONNECT',\n actions: ['outgoingCallDisconnect'],\n },\n E_UNKNOWN: {\n target: 'S_UNKNOWN',\n actions: ['unknownState'],\n },\n },\n },\n\n /* CALL_PROGRESS */\n S_RECV_CALL_PROGRESS: {\n on: {\n E_RECV_CALL_CONNECT: {\n target: 'S_RECV_CALL_CONNECT',\n actions: ['incomingCallConnect'],\n },\n E_RECV_CALL_DISCONNECT: {\n target: 'S_RECV_CALL_DISCONNECT',\n actions: ['incomingCallDisconnect'],\n },\n E_SEND_CALL_DISCONNECT: {\n target: 'S_SEND_CALL_DISCONNECT',\n actions: ['outgoingCallDisconnect'],\n },\n // Possible to have multiple E_RECV_CALL_PROGRESS events, handler should handle it\n E_RECV_CALL_PROGRESS: {\n target: 'S_RECV_CALL_PROGRESS',\n actions: ['incomingCallProgress'],\n },\n E_UNKNOWN: {\n target: 'S_UNKNOWN',\n actions: ['unknownState'],\n },\n },\n },\n S_SEND_CALL_PROGRESS: {\n on: {\n E_SEND_CALL_CONNECT: {\n target: 'S_SEND_CALL_CONNECT',\n actions: ['outgoingCallConnect'],\n },\n E_RECV_CALL_DISCONNECT: {\n target: 'S_RECV_CALL_DISCONNECT',\n actions: ['incomingCallDisconnect'],\n },\n E_SEND_CALL_DISCONNECT: {\n target: 'S_SEND_CALL_DISCONNECT',\n actions: ['outgoingCallDisconnect'],\n },\n E_UNKNOWN: {\n target: 'S_UNKNOWN',\n actions: ['unknownState'],\n },\n },\n },\n\n /* CALL_CONNECT */\n S_RECV_CALL_CONNECT: {\n on: {\n E_CALL_ESTABLISHED: {\n target: 'S_CALL_ESTABLISHED',\n actions: ['callEstablished'],\n },\n E_RECV_CALL_DISCONNECT: {\n target: 'S_RECV_CALL_DISCONNECT',\n actions: ['incomingCallDisconnect'],\n },\n E_SEND_CALL_DISCONNECT: {\n target: 'S_SEND_CALL_DISCONNECT',\n actions: ['outgoingCallDisconnect'],\n },\n E_UNKNOWN: {\n target: 'S_UNKNOWN',\n actions: ['unknownState'],\n },\n },\n },\n S_SEND_CALL_CONNECT: {\n on: {\n E_CALL_ESTABLISHED: {\n target: 'S_CALL_ESTABLISHED',\n actions: ['callEstablished'],\n },\n E_RECV_CALL_DISCONNECT: {\n target: 'S_RECV_CALL_DISCONNECT',\n actions: ['incomingCallDisconnect'],\n },\n E_SEND_CALL_DISCONNECT: {\n target: 'S_SEND_CALL_DISCONNECT',\n actions: ['outgoingCallDisconnect'],\n },\n E_UNKNOWN: {\n target: 'S_UNKNOWN',\n actions: ['unknownState'],\n },\n },\n },\n S_CALL_HOLD: {\n on: {\n E_RECV_CALL_DISCONNECT: {\n target: 'S_RECV_CALL_DISCONNECT',\n actions: ['incomingCallDisconnect'],\n },\n E_SEND_CALL_DISCONNECT: {\n target: 'S_SEND_CALL_DISCONNECT',\n actions: ['outgoingCallDisconnect'],\n },\n E_CALL_ESTABLISHED: {\n target: 'S_CALL_ESTABLISHED',\n actions: ['callEstablished'],\n },\n E_UNKNOWN: {\n target: 'S_UNKNOWN',\n actions: ['unknownState'],\n },\n },\n },\n S_CALL_RESUME: {\n on: {\n E_RECV_CALL_DISCONNECT: {\n target: 'S_RECV_CALL_DISCONNECT',\n actions: ['incomingCallDisconnect'],\n },\n E_SEND_CALL_DISCONNECT: {\n target: 'S_SEND_CALL_DISCONNECT',\n actions: ['outgoingCallDisconnect'],\n },\n E_CALL_ESTABLISHED: {\n target: 'S_CALL_ESTABLISHED',\n actions: ['callEstablished'],\n },\n E_UNKNOWN: {\n target: 'S_UNKNOWN',\n actions: ['unknownState'],\n },\n },\n },\n /* CALL_ESTABLISHED */\n S_CALL_ESTABLISHED: {\n on: {\n E_CALL_HOLD: {\n target: 'S_CALL_HOLD',\n actions: ['initiateCallHold'],\n },\n E_CALL_RESUME: {\n target: 'S_CALL_RESUME',\n actions: ['initiateCallResume'],\n },\n E_RECV_CALL_DISCONNECT: {\n target: 'S_RECV_CALL_DISCONNECT',\n actions: ['incomingCallDisconnect'],\n },\n E_SEND_CALL_DISCONNECT: {\n target: 'S_SEND_CALL_DISCONNECT',\n actions: ['outgoingCallDisconnect'],\n },\n E_CALL_ESTABLISHED: {\n target: 'S_CALL_ESTABLISHED',\n actions: ['callEstablished'],\n },\n E_UNKNOWN: {\n target: 'S_UNKNOWN',\n actions: ['unknownState'],\n },\n },\n },\n\n /* CALL_DISCONNECT */\n S_RECV_CALL_DISCONNECT: {\n on: {\n E_CALL_CLEARED: 'S_CALL_CLEARED',\n },\n },\n S_SEND_CALL_DISCONNECT: {\n on: {\n E_CALL_CLEARED: 'S_CALL_CLEARED',\n },\n },\n\n /* UNKNOWN_EVENTS */\n S_UNKNOWN: {\n on: {\n E_CALL_CLEARED: 'S_CALL_CLEARED',\n },\n },\n\n /* ERROR_EVENTS */\n S_ERROR: {\n on: {\n E_CALL_CLEARED: 'S_CALL_CLEARED',\n },\n },\n\n /* End of our state-machine */\n S_CALL_CLEARED: {\n type: 'final',\n },\n },\n },\n {\n actions: {\n /**\n * .\n *\n * @param context\n * @param event\n */\n incomingCallSetup: (context, event: CallEvent) => this.handleIncomingCallSetup(event),\n /**\n * .\n *\n * @param context\n * @param event\n */\n outgoingCallSetup: (context, event: CallEvent) => this.handleOutgoingCallSetup(event),\n /**\n * .\n *\n * @param context\n * @param event\n */\n incomingCallProgress: (context, event: CallEvent) =>\n this.handleIncomingCallProgress(event),\n /**\n * .\n *\n * @param context\n * @param event\n */\n outgoingCallAlerting: (context, event: CallEvent) =>\n this.handleOutgoingCallAlerting(event),\n /**\n * .\n *\n * @param context\n * @param event\n */\n incomingCallConnect: (context, event: CallEvent) => this.handleIncomingCallConnect(event),\n /**\n * .\n *\n * @param context\n * @param event\n */\n outgoingCallConnect: (context, event: CallEvent) => this.handleOutgoingCallConnect(event),\n /**\n * .\n *\n * @param context\n * @param event\n */\n callEstablished: (context, event: CallEvent) => this.handleCallEstablished(event),\n /**\n * .\n *\n * @param context\n * @param event\n */\n initiateCallHold: (context, event: CallEvent) => this.handleCallHold(event),\n /**\n * .\n *\n * @param context\n * @param event\n */\n initiateCallResume: (context, event: CallEvent) => this.handleCallResume(event),\n /**\n * .\n *\n * @param context\n * @param event\n */\n incomingCallDisconnect: (context, event: CallEvent) =>\n this.handleIncomingCallDisconnect(event),\n /**\n * .\n *\n * @param context\n * @param event\n */\n outgoingCallDisconnect: (context, event: CallEvent) =>\n this.handleOutgoingCallDisconnect(event),\n /**\n * .\n *\n * @param context\n * @param event\n */\n unknownState: (context, event: CallEvent) => this.handleUnknownState(event),\n },\n }\n );\n\n const mediaMachine = createMachine(\n {\n schema: {\n // The context (extended state) of the machine\n context: {},\n // The events this machine handles\n events: {} as RoapEvent,\n },\n id: 'roap-state',\n initial: 'S_ROAP_IDLE',\n context: {},\n states: {\n S_ROAP_IDLE: {\n on: {\n E_RECV_ROAP_OFFER_REQUEST: {\n target: 'S_RECV_ROAP_OFFER_REQUEST',\n actions: ['incomingRoapOfferRequest'],\n },\n E_RECV_ROAP_OFFER: {\n target: 'S_RECV_ROAP_OFFER',\n actions: ['incomingRoapOffer'],\n },\n E_SEND_ROAP_OFFER: {\n target: 'S_SEND_ROAP_OFFER',\n actions: ['outgoingRoapOffer'],\n },\n },\n },\n S_RECV_ROAP_OFFER_REQUEST: {\n on: {\n E_SEND_ROAP_OFFER: {\n target: 'S_SEND_ROAP_OFFER',\n actions: ['outgoingRoapOffer'],\n },\n E_ROAP_OK: {\n target: 'S_ROAP_OK',\n actions: ['roapEstablished'],\n },\n E_ROAP_ERROR: {\n target: 'S_ROAP_ERROR',\n actions: ['roapError'],\n },\n },\n },\n S_RECV_ROAP_OFFER: {\n on: {\n E_SEND_ROAP_ANSWER: {\n target: 'S_SEND_ROAP_ANSWER',\n actions: ['outgoingRoapAnswer'],\n },\n E_ROAP_OK: {\n target: 'S_ROAP_OK',\n actions: ['roapEstablished'],\n },\n E_ROAP_ERROR: {\n target: 'S_ROAP_ERROR',\n actions: ['roapError'],\n },\n },\n },\n S_SEND_ROAP_OFFER: {\n on: {\n E_RECV_ROAP_ANSWER: {\n target: 'S_RECV_ROAP_ANSWER',\n actions: ['incomingRoapAnswer'],\n },\n E_SEND_ROAP_ANSWER: {\n target: 'S_SEND_ROAP_ANSWER',\n actions: ['outgoingRoapAnswer'],\n },\n E_SEND_ROAP_OFFER: {\n target: 'S_SEND_ROAP_OFFER',\n actions: ['outgoingRoapOffer'],\n },\n E_ROAP_ERROR: {\n target: 'S_ROAP_ERROR',\n actions: ['roapError'],\n },\n },\n },\n S_RECV_ROAP_ANSWER: {\n on: {\n E_ROAP_OK: {\n target: 'S_ROAP_OK',\n actions: ['roapEstablished'],\n },\n E_ROAP_ERROR: {\n target: 'S_ROAP_ERROR',\n actions: ['roapError'],\n },\n },\n },\n S_SEND_ROAP_ANSWER: {\n on: {\n E_RECV_ROAP_OFFER_REQUEST: {\n target: 'S_RECV_ROAP_OFFER_REQUEST',\n actions: ['incomingRoapOfferRequest'],\n },\n E_RECV_ROAP_OFFER: {\n target: 'S_RECV_ROAP_OFFER',\n actions: ['incomingRoapOffer'],\n },\n E_ROAP_OK: {\n target: 'S_ROAP_OK',\n actions: ['roapEstablished'],\n },\n E_SEND_ROAP_ANSWER: {\n target: 'S_SEND_ROAP_ANSWER',\n actions: ['outgoingRoapAnswer'],\n },\n E_ROAP_ERROR: {\n target: 'S_ROAP_ERROR',\n actions: ['roapError'],\n },\n },\n },\n S_ROAP_OK: {\n on: {\n E_RECV_ROAP_OFFER_REQUEST: {\n target: 'S_RECV_ROAP_OFFER_REQUEST',\n actions: ['incomingRoapOfferRequest'],\n },\n E_RECV_ROAP_OFFER: {\n target: 'S_RECV_ROAP_OFFER',\n actions: ['incomingRoapOffer'],\n },\n E_ROAP_OK: {\n target: 'S_ROAP_OK',\n actions: ['roapEstablished'],\n },\n E_SEND_ROAP_OFFER: {\n target: 'S_SEND_ROAP_OFFER',\n actions: ['outgoingRoapOffer'],\n },\n E_ROAP_ERROR: {\n target: 'S_ROAP_ERROR',\n actions: ['roapError'],\n },\n E_ROAP_TEARDOWN: {\n target: 'S_ROAP_TEARDOWN',\n },\n },\n },\n S_ROAP_ERROR: {\n on: {\n E_ROAP_TEARDOWN: {\n target: 'S_ROAP_TEARDOWN',\n },\n E_RECV_ROAP_OFFER_REQUEST: {\n target: 'S_RECV_ROAP_OFFER_REQUEST',\n actions: ['incomingRoapOfferRequest'],\n },\n E_RECV_ROAP_OFFER: {\n target: 'S_RECV_ROAP_OFFER',\n actions: ['incomingRoapOffer'],\n },\n E_RECV_ROAP_ANSWER: {\n target: 'S_RECV_ROAP_ANSWER',\n actions: ['incomingRoapAnswer'],\n },\n E_ROAP_OK: {\n target: 'S_ROAP_OK',\n actions: ['roapEstablished'],\n },\n },\n },\n S_ROAP_TEARDOWN: {\n type: 'final',\n },\n },\n },\n {\n actions: {\n /**\n * .\n *\n * @param context -.\n * @param event -.\n */\n incomingRoapOffer: (context: MediaContext, event: RoapEvent) =>\n this.handleIncomingRoapOffer(context, event),\n /**\n * .\n *\n * @param context -.\n * @param event -.\n */\n incomingRoapAnswer: (context: MediaContext, event: RoapEvent) =>\n this.handleIncomingRoapAnswer(context, event),\n /**\n * .\n *\n * @param context -.\n * @param event -.\n */\n incomingRoapOfferRequest: (context: MediaContext, event: RoapEvent) =>\n this.handleIncomingRoapOfferRequest(context, event),\n /**\n * .\n *\n * @param context -.\n * @param event -.\n */\n outgoingRoapOffer: (context: MediaContext, event: RoapEvent) =>\n this.handleOutgoingRoapOffer(context, event),\n /**\n * .\n *\n * @param context -.\n * @param event -.\n */\n outgoingRoapAnswer: (context: MediaContext, event: RoapEvent) =>\n this.handleOutgoingRoapAnswer(context, event),\n /**\n * .\n *\n * @param context -.\n * @param event -.\n */\n roapEstablished: (context: MediaContext, event: RoapEvent) =>\n this.handleRoapEstablished(context, event),\n /**\n * .\n *\n * @param context -.\n * @param event -.\n */\n roapError: (context: MediaContext, event: RoapEvent) =>\n this.handleRoapError(context, event),\n },\n }\n );\n\n this.callStateMachine = interpret(callMachine)\n .onTransition((state, event) => {\n log.log(\n `Call StateMachine:- state=${state.value}, event=${JSON.stringify(event.type)}`,\n {}\n );\n if (state.value !== 'S_UNKNOWN') {\n this.metricManager.submitCallMetric(\n METRIC_EVENT.CALL,\n state.value.toString(),\n METRIC_TYPE.BEHAVIORAL,\n this.callId,\n this.correlationId,\n undefined\n );\n }\n })\n .start();\n\n this.mediaStateMachine = interpret(mediaMachine)\n .onTransition((state, event) => {\n log.log(\n `Media StateMachine:- state=${state.value}, event=${JSON.stringify(event.type)}`,\n {}\n );\n if (state.value !== 'S_ROAP_ERROR') {\n this.metricManager.submitMediaMetric(\n METRIC_EVENT.MEDIA,\n state.value.toString(),\n METRIC_TYPE.BEHAVIORAL,\n this.callId,\n this.correlationId,\n this.localRoapMessage.sdp,\n this.remoteRoapMessage?.sdp,\n undefined\n );\n }\n })\n .start();\n this.muted = false;\n }\n\n /**\n * Handle incoming Call setups.\n *\n * @param event - Call Events.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n private handleIncomingCallSetup(event: CallEvent) {\n log.info(`handleIncomingCallSetup: ${this.getCorrelationId()} `, {\n file: CALL_FILE,\n method: this.handleIncomingCallSetup.name,\n });\n\n this.sendCallStateMachineEvt({type: 'E_SEND_CALL_ALERTING'});\n }\n\n /**\n * Handle outgoing Call setups.\n * The handler sends a Post Message to the remote with ROAP body\n * as offer. We also set the callId here based on the response received.\n *\n * @param event - Call Events.\n */\n private async handleOutgoingCallSetup(event: CallEvent) {\n log.info(`handleOutgoingCallSetup: ${this.getCorrelationId()} `, {\n file: CALL_FILE,\n method: this.handleOutgoingCallSetup.name,\n });\n\n const message = event.data as RoapMessage;\n\n try {\n const response = await this.post(message);\n\n log.log(`handleOutgoingCallSetup: Response code: ${response.statusCode}`, {\n file: CALL_FILE,\n method: this.handleOutgoingCallSetup.name,\n });\n this.setCallId(response.body.callId);\n } catch (e) {\n log.warn('Failed to setup the call', {\n file: CALL_FILE,\n method: this.handleOutgoingCallSetup.name,\n });\n const errData = e as MobiusCallResponse;\n\n handleCallErrors(\n (error: CallError) => {\n this.emit(CALL_EVENT_KEYS.CALL_ERROR, error);\n this.submitCallErrorMetric(error);\n this.sendCallStateMachineEvt({type: 'E_UNKNOWN', data: errData});\n },\n ERROR_LAYER.CALL_CONTROL,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n /* istanbul ignore next */ (interval: number) => undefined,\n this.getCorrelationId(),\n errData,\n this.handleOutgoingCallSetup.name,\n CALL_FILE\n );\n }\n }\n\n /**\n * Handle Call Hold.\n *\n * @param event - Call Events.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n private async handleCallHold(event: CallEvent) {\n log.info(`handleCallHold: ${this.getCorrelationId()} `, {\n file: CALL_FILE,\n method: this.handleCallHold.name,\n });\n\n try {\n const response = await this.postSSRequest(undefined, SUPPLEMENTARY_SERVICES.HOLD);\n\n log.log(`Response code: ${response.statusCode}`, {\n file: CALL_FILE,\n method: this.handleCallHold.name,\n });\n\n /*\n * Avoid setting http response timeout if held event is already\n * received from Mobius and forwarded towards calling client\n */\n if (this.isHeld() === false) {\n this.supplementaryServicesTimer = setTimeout(async () => {\n const errorContext = {file: CALL_FILE, method: this.handleCallHold.name};\n\n log.warn('Hold response timed out', {\n file: CALL_FILE,\n method: this.handleCallHold.name,\n });\n\n const callError = createCallError(\n 'An error occurred while placing the call on hold. Wait a moment and try again.',\n errorContext as ErrorContext,\n ERROR_TYPE.TIMEOUT,\n this.getCorrelationId(),\n ERROR_LAYER.CALL_CONTROL\n );\n\n this.emit(CALL_EVENT_KEYS.HOLD_ERROR, callError);\n this.submitCallErrorMetric(callError);\n }, SUPPLEMENTARY_SERVICES_TIMEOUT);\n }\n } catch (e) {\n log.warn('Failed to put the call on hold', {\n file: CALL_FILE,\n method: this.handleCallHold.name,\n });\n const errData = e as MobiusCallResponse;\n\n handleCallErrors(\n (error: CallError) => {\n this.emit(CALL_EVENT_KEYS.HOLD_ERROR, error);\n this.submitCallErrorMetric(error);\n this.sendCallStateMachineEvt({type: 'E_CALL_ESTABLISHED', data: errData});\n },\n ERROR_LAYER.CALL_CONTROL,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n /* istanbul ignore next */ (interval: number) => undefined,\n this.getCorrelationId(),\n errData,\n this.handleOutgoingCallSetup.name,\n CALL_FILE\n );\n }\n }\n\n /**\n * Handle Call Resume.\n *\n * @param event - Call Events.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n private async handleCallResume(event: CallEvent) {\n log.info(`handleCallResume: ${this.getCorrelationId()} `, {\n file: CALL_FILE,\n method: this.handleCallResume.name,\n });\n\n try {\n const response = await this.postSSRequest(undefined, SUPPLEMENTARY_SERVICES.RESUME);\n\n log.log(`Response code: ${response.statusCode}`, {\n file: CALL_FILE,\n method: this.handleCallResume.name,\n });\n\n /*\n * Avoid setting http response timeout if connected event is already\n * received from Mobius on resuming the call and forwarded towards calling client\n */\n if (this.isHeld() === true) {\n this.supplementaryServicesTimer = setTimeout(async () => {\n const errorContext = {file: CALL_FILE, method: this.handleCallResume.name};\n\n log.warn('Resume response timed out', {\n file: CALL_FILE,\n method: this.handleCallResume.name,\n });\n\n const callError = createCallError(\n 'An error occurred while resuming the call. Wait a moment and try again.',\n errorContext as ErrorContext,\n ERROR_TYPE.TIMEOUT,\n this.getCorrelationId(),\n ERROR_LAYER.CALL_CONTROL\n );\n\n this.emit(CALL_EVENT_KEYS.RESUME_ERROR, callError);\n this.submitCallErrorMetric(callError);\n }, SUPPLEMENTARY_SERVICES_TIMEOUT);\n }\n } catch (e) {\n log.warn('Failed to resume the call', {\n file: CALL_FILE,\n method: this.handleCallResume.name,\n });\n const errData = e as MobiusCallResponse;\n\n handleCallErrors(\n (error: CallError) => {\n this.emit(CALL_EVENT_KEYS.RESUME_ERROR, error);\n this.submitCallErrorMetric(error);\n this.sendCallStateMachineEvt({type: 'E_CALL_ESTABLISHED', data: errData});\n },\n ERROR_LAYER.CALL_CONTROL,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n /* istanbul ignore next */ (interval: number) => undefined,\n this.getCorrelationId(),\n errData,\n this.handleOutgoingCallSetup.name,\n CALL_FILE\n );\n }\n }\n\n /**\n * Handle incoming Call Progress.\n *\n * @param event - Call Events.\n */\n private handleIncomingCallProgress(event: CallEvent) {\n log.info(`handleIncomingCallProgress: ${this.getCorrelationId()} `, {\n file: CALL_FILE,\n method: this.handleIncomingCallProgress.name,\n });\n const data = event.data as MobiusCallData;\n\n if (data?.callProgressData?.inbandMedia) {\n log.log('Inband media present. Setting Early Media flag', {\n file: CALL_FILE,\n method: this.handleIncomingCallProgress.name,\n });\n this.earlyMedia = true;\n } else {\n log.log('Inband media not present.', {\n file: CALL_FILE,\n method: this.handleIncomingCallProgress.name,\n });\n }\n\n if (data?.callerId) {\n log.info('Processing Caller-Id data', {\n file: CALL_FILE,\n method: this.handleIncomingCallProgress.name,\n });\n this.startCallerIdResolution(data.callerId);\n }\n this.emit(CALL_EVENT_KEYS.PROGRESS, this.correlationId);\n }\n\n /**\n * Handle incoming Call Progress.\n *\n * @param context\n * @param event - Roap Events.\n */\n private handleIncomingRoapOfferRequest(context: MediaContext, event: RoapEvent) {\n log.info(`handleIncomingRoapOfferRequest: ${this.getCorrelationId()} `, {\n file: CALL_FILE,\n method: this.handleIncomingRoapOfferRequest.name,\n });\n const message = event.data as RoapMessage;\n\n if (!this.mediaConnection) {\n log.info('Media connection is not up, buffer the remote Offer Request for later handling', {\n file: CALL_FILE,\n method: this.handleIncomingRoapOfferRequest.name,\n });\n\n this.seq = message.seq;\n log.info(`Setting Sequence No: ${this.seq}`, {\n file: CALL_FILE,\n method: this.handleIncomingRoapOfferRequest.name,\n });\n\n this.remoteRoapMessage = message;\n } else if (this.receivedRoapOKSeq === message.seq - 2) {\n log.info('Waiting for Roap OK, buffer the remote Offer Request for later handling', {\n file: CALL_FILE,\n method: this.handleIncomingRoapOfferRequest.name,\n });\n\n this.remoteRoapMessage = message;\n } else {\n message.seq = this.seq + 1;\n this.seq = message.seq;\n this.mediaConnection.roapMessageReceived(message);\n }\n }\n\n /**\n * Handle Outgoing Call Progress.\n *\n * @param event - Call Events.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n private async handleOutgoingCallAlerting(event: CallEvent) {\n log.info(`handleOutgoingCallAlerting: ${this.getCorrelationId()} `, {\n file: CALL_FILE,\n method: this.handleOutgoingCallAlerting.name,\n });\n\n try {\n const res = await this.patch(MobiusCallState.ALERTING);\n\n log.log(`PATCH response: ${res.statusCode}`, {\n file: CALL_FILE,\n method: this.handleOutgoingCallAlerting.name,\n });\n } catch (err) {\n log.warn('Failed to signal call progression', {\n file: CALL_FILE,\n method: this.handleOutgoingCallAlerting.name,\n });\n const errData = err as MobiusCallResponse;\n\n handleCallErrors(\n (error: CallError) => {\n this.emit(CALL_EVENT_KEYS.CALL_ERROR, error);\n this.submitCallErrorMetric(error);\n this.sendCallStateMachineEvt({type: 'E_UNKNOWN', data: errData});\n },\n ERROR_LAYER.CALL_CONTROL,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n /* istanbul ignore next */ (interval: number) => undefined,\n this.getCorrelationId(),\n errData,\n this.handleOutgoingCallAlerting.name,\n CALL_FILE\n );\n }\n }\n\n /**\n * Handle incoming Call Connect.\n *\n * @param event - Call Events.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n private handleIncomingCallConnect(event: CallEvent) {\n log.info(`handleIncomingCallConnect: ${this.getCorrelationId()} `, {\n file: CALL_FILE,\n method: this.handleIncomingCallConnect.name,\n });\n this.emit(CALL_EVENT_KEYS.CONNECT, this.correlationId);\n\n /* In case of Early Media , media negotiations would have already started\n * So we can directly go to call established state */\n\n if (this.earlyMedia || this.mediaNegotiationCompleted) {\n this.mediaNegotiationCompleted = false;\n this.sendCallStateMachineEvt({type: 'E_CALL_ESTABLISHED'});\n }\n }\n\n /**\n * Handle outgoing Call Connect.\n *\n * @param event - Call Events.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n private async handleOutgoingCallConnect(event: CallEvent) {\n log.info(`handleOutgoingCallConnect: ${this.getCorrelationId()} `, {\n file: CALL_FILE,\n method: this.handleOutgoingCallConnect.name,\n });\n\n /* We should have received an Offer by now */\n if (!this.remoteRoapMessage) {\n log.warn('Offer not yet received from remote end... Exiting', {\n file: CALL_FILE,\n method: this.handleOutgoingCallConnect.name,\n });\n\n return;\n }\n\n try {\n /* Start Offer/Answer as we might have buffered the offer by now */\n this.mediaConnection.roapMessageReceived(this.remoteRoapMessage);\n\n /* send call_connect PATCH */\n const res = await this.patch(MobiusCallState.CONNECTED);\n\n log.log(`PATCH response: ${res.statusCode}`, {\n file: CALL_FILE,\n method: this.handleOutgoingCallConnect.name,\n });\n } catch (err) {\n log.warn('Failed to connect the call', {\n file: CALL_FILE,\n method: this.handleOutgoingCallConnect.name,\n });\n const errData = err as MobiusCallResponse;\n\n handleCallErrors(\n (error: CallError) => {\n this.emit(CALL_EVENT_KEYS.CALL_ERROR, error);\n this.submitCallErrorMetric(error);\n this.sendCallStateMachineEvt({type: 'E_UNKNOWN', data: errData});\n },\n ERROR_LAYER.CALL_CONTROL,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n /* istanbul ignore next */ (interval: number) => undefined,\n this.getCorrelationId(),\n errData,\n this.handleOutgoingCallConnect.name,\n CALL_FILE\n );\n }\n }\n\n /**\n * Handle incoming Call Disconnect.\n *\n * @param event - Call Events.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n private async handleIncomingCallDisconnect(event: CallEvent) {\n log.info(`handleIncomingCallDisconnect: ${this.getCorrelationId()} `, {\n file: CALL_FILE,\n method: this.handleIncomingCallDisconnect.name,\n });\n\n this.setDisconnectReason();\n\n try {\n const response = await this.delete();\n\n log.log(`handleOutgoingCallDisconnect: Response code: ${response.statusCode}`, {\n file: CALL_FILE,\n method: this.handleIncomingCallDisconnect.name,\n });\n } catch (e) {\n log.warn('Failed to delete the call', {\n file: CALL_FILE,\n method: this.handleIncomingCallDisconnect.name,\n });\n }\n\n this.deleteCb(this.correlationId);\n\n /* istanbul ignore else */\n if (this.sessionTimer) {\n clearInterval(this.sessionTimer);\n }\n\n /* istanbul ignore else */\n if (this.mediaConnection) {\n this.mediaConnection.close();\n log.info('Closing media channel', {file: CALL_FILE, method: 'handleIncomingCallDisconnect'});\n }\n\n this.sendMediaStateMachineEvt({type: 'E_ROAP_TEARDOWN'});\n this.sendCallStateMachineEvt({type: 'E_CALL_CLEARED'});\n\n this.emit(CALL_EVENT_KEYS.DISCONNECT, this.correlationId);\n }\n\n /**\n * Handle outgoing Call Disconnect.\n *\n * @param event - Call Events.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n private async handleOutgoingCallDisconnect(event: CallEvent) {\n this.setDisconnectReason();\n\n try {\n const response = await this.delete();\n\n log.log(`handleOutgoingCallDisconnect: Response code: ${response.statusCode}`, {\n file: CALL_FILE,\n method: this.handleOutgoingCallDisconnect.name,\n });\n } catch (e) {\n log.warn('Failed to delete the call', {\n file: CALL_FILE,\n method: this.handleOutgoingCallDisconnect.name,\n });\n }\n\n this.deleteCb(this.correlationId);\n\n /* istanbul ignore else */\n if (this.sessionTimer) {\n clearInterval(this.sessionTimer);\n }\n\n /* istanbul ignore else */\n if (this.mediaConnection) {\n this.mediaConnection.close();\n log.info('Closing media channel', {file: CALL_FILE, method: 'handleOutgoingCallDisconnect'});\n }\n\n this.sendMediaStateMachineEvt({type: 'E_ROAP_TEARDOWN'});\n this.sendCallStateMachineEvt({type: 'E_CALL_CLEARED'});\n }\n\n /**\n * Handle Call Established - Roap related negotiations.\n *\n * @param event - Call Events.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n private handleCallEstablished(event: CallEvent) {\n log.info(`handleCallEstablished: ${this.getCorrelationId()} `, {\n file: CALL_FILE,\n method: this.handleCallEstablished.name,\n });\n\n this.emit(CALL_EVENT_KEYS.ESTABLISHED, this.correlationId);\n\n /* Reset Early dialog parameters */\n this.earlyMedia = false;\n\n this.connected = true;\n\n /* Session timers need to be reset at all offer/answer exchanges */\n if (this.sessionTimer) {\n log.log('Resetting session timer', {\n file: CALL_FILE,\n method: 'handleCallEstablished',\n });\n clearInterval(this.sessionTimer);\n }\n\n this.sessionTimer = setInterval(async () => {\n try {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const res = await this.postStatus();\n\n log.info(`Session refresh successful`, {\n file: CALL_FILE,\n method: 'handleCallEstablished',\n });\n } catch (err: unknown) {\n const error = <WebexRequestPayload>err;\n\n /* We are clearing the timer here as all are error scenarios. Only scenario where\n * timer reset won't be required is 503 with retry after. But that case will\n * be handled automatically as Mobius will also reset timer when we post status\n * in retry-after scenario.\n */\n /* istanbul ignore next */\n if (this.sessionTimer) {\n clearInterval(this.sessionTimer);\n }\n\n handleCallErrors(\n (callError: CallError) => {\n this.emit(CALL_EVENT_KEYS.CALL_ERROR, callError);\n this.submitCallErrorMetric(callError);\n },\n ERROR_LAYER.CALL_CONTROL,\n (interval: number) => {\n setTimeout(() => {\n /* We first post the status and then recursively call the handler which\n * starts the timer again\n */\n this.postStatus();\n this.sendCallStateMachineEvt({type: 'E_CALL_ESTABLISHED'});\n }, interval * 1000);\n },\n this.getCorrelationId(),\n error,\n this.handleCallEstablished.name,\n CALL_FILE\n );\n }\n }, DEFAULT_SESSION_TIMER);\n }\n\n /**\n * Handle Unknown events.\n *\n * @param event - Call Events.\n */\n private async handleUnknownState(event: CallEvent) {\n log.info(`handleUnknownState: ${this.getCorrelationId()} `, {\n file: CALL_FILE,\n method: this.handleUnknownState.name,\n });\n\n /* We are handling errors at the source , in this state we just log and\n * clear the resources\n */\n\n const eventData = event.data as {media: boolean};\n\n if (!eventData?.media) {\n log.warn('Call failed due to signalling issue', {\n file: CALL_FILE,\n method: this.handleUnknownState.name,\n });\n }\n\n /* We need to clear the call at Mobius too. For delete failure\n * error handling is not required\n */\n\n try {\n this.setDisconnectReason();\n const response = await this.delete();\n\n log.log(`handleOutgoingCallDisconnect: Response code: ${response.statusCode}`, {\n file: CALL_FILE,\n method: this.handleUnknownState.name,\n });\n } catch (e) {\n log.warn('Failed to delete the call', {\n file: CALL_FILE,\n method: this.handleUnknownState.name,\n });\n }\n\n this.deleteCb(this.correlationId);\n\n if (this.sessionTimer) {\n clearInterval(this.sessionTimer);\n }\n\n if (this.mediaConnection) {\n this.mediaConnection.close();\n log.info('Closing media channel', {\n file: CALL_FILE,\n method: this.handleUnknownState.name,\n });\n }\n this.sendMediaStateMachineEvt({type: 'E_ROAP_TEARDOWN'});\n this.sendCallStateMachineEvt({type: 'E_CALL_CLEARED'});\n }\n\n /**\n * Returns an error emitter callback method for handleCallErrors which can be used during\n * midcall and call setup scenarios.\n * Emits Call errors for UI Client\n * Sends call error metrics\n * Handles further state machine changes.\n *\n * @param errData - Instance of CallError.\n */\n private getEmitterCallback(errData: MobiusCallResponse) {\n return (error: CallError) => {\n switch (this.callStateMachine.state.value) {\n case 'S_CALL_HOLD':\n this.emit(CALL_EVENT_KEYS.HOLD_ERROR, error);\n if (this.supplementaryServicesTimer) {\n clearTimeout(this.supplementaryServicesTimer);\n this.supplementaryServicesTimer = undefined;\n }\n this.submitCallErrorMetric(error);\n this.sendCallStateMachineEvt({type: 'E_CALL_ESTABLISHED', data: errData});\n\n return;\n case 'S_CALL_RESUME':\n this.emit(CALL_EVENT_KEYS.RESUME_ERROR, error);\n this.submitCallErrorMetric(error);\n this.sendCallStateMachineEvt({type: 'E_CALL_ESTABLISHED', data: errData});\n\n return;\n default:\n this.emit(CALL_EVENT_KEYS.CALL_ERROR, error);\n this.submitCallErrorMetric(error);\n /* Disconnect call if it's not a midcall case */\n /* istanbul ignore else */\n if (!this.connected) {\n this.sendMediaStateMachineEvt({type: 'E_ROAP_ERROR', data: errData});\n }\n }\n };\n }\n\n /**\n * Handle Roap Established events.\n *\n * For outbound MediaOk , the message will be truthy as we need to send ROAP OK .\n * For inbound MediaOK , we report it to Media-SDK and transition our state.\n * Both the cases should transition to Call Established state.\n *\n * @param context -.\n * @param event - Roap Events.\n */\n private async handleRoapEstablished(context: MediaContext, event: RoapEvent) {\n log.info(`handleRoapEstablished: ${this.getCorrelationId()} `, {\n file: CALL_FILE,\n method: 'handleRoapEstablished',\n });\n\n const {received, message} = event.data as {received: boolean; message: RoapMessage};\n\n this.receivedRoapOKSeq = message.seq;\n\n if (!received) {\n log.info('Sending Media Ok to the remote End', {\n file: CALL_FILE,\n method: 'handleRoapEstablished',\n });\n\n try {\n if (\n this.callStateMachine.state.value === 'S_RECV_CALL_PROGRESS' ||\n this.callStateMachine.state.value === 'S_SEND_CALL_SETUP'\n ) {\n log.info(\n 'Media negotiation completed before call connect. Setting media negotiation completed flag.',\n {\n file: CALL_FILE,\n method: 'handleRoapEstablished',\n }\n );\n this.mediaNegotiationCompleted = true;\n }\n message.seq = this.seq;\n const res = await this.postMedia(message);\n\n log.log(`handleRoapEstablished: Response code: ${res.statusCode}`, {\n file: CALL_FILE,\n method: 'handleRoapEstablished',\n });\n /* istanbul ignore else */\n if (!this.earlyMedia && !this.mediaNegotiationCompleted) {\n this.sendCallStateMachineEvt({type: 'E_CALL_ESTABLISHED'});\n }\n } catch (err) {\n log.warn('Failed to process MediaOk request', {\n file: CALL_FILE,\n method: 'handleRoapEstablished',\n });\n const errData = err as MobiusCallResponse;\n\n handleCallErrors(\n this.getEmitterCallback(errData),\n ERROR_LAYER.MEDIA,\n (interval: number) => {\n /* Start retry if only it is a midcall case */\n /* istanbul ignore else */\n if (this.connected) {\n setTimeout(() => {\n this.sendMediaStateMachineEvt({type: 'E_ROAP_OK', data: event.data});\n }, interval * 1000);\n }\n },\n this.getCorrelationId(),\n errData,\n this.handleRoapEstablished.name,\n CALL_FILE\n );\n }\n } else {\n log.info('Notifying internal-media-core about ROAP OK message', {\n file: CALL_FILE,\n method: 'handleRoapEstablished',\n });\n message.seq = this.seq;\n\n /* istanbul ignore else */\n if (this.mediaConnection) {\n this.mediaConnection.roapMessageReceived(message);\n }\n /* istanbul ignore else */\n if (!this.earlyMedia) {\n this.sendCallStateMachineEvt({type: 'E_CALL_ESTABLISHED'});\n }\n\n if (this.remoteRoapMessage && this.remoteRoapMessage.seq > this.seq) {\n if (this.remoteRoapMessage.messageType === 'OFFER_REQUEST') {\n this.sendMediaStateMachineEvt({\n type: 'E_RECV_ROAP_OFFER_REQUEST',\n data: this.remoteRoapMessage,\n });\n } else if (this.remoteRoapMessage.messageType === 'OFFER') {\n this.sendMediaStateMachineEvt({type: 'E_RECV_ROAP_OFFER', data: this.remoteRoapMessage});\n }\n }\n }\n }\n\n /**\n * Handle Roap Error events.\n *\n * @param context\n * @param event - Roap Events.\n */\n private async handleRoapError(context: MediaContext, event: RoapEvent) {\n log.info(`handleRoapError: ${this.getCorrelationId()}`, {\n file: CALL_FILE,\n method: this.handleRoapError.name,\n });\n\n /* if we receive ROAP_ERROR from internal-media-core , we post it to Mobius */\n\n const message = event.data as RoapMessage;\n\n /* istanbul ignore else */\n if (message) {\n try {\n const res = await this.postMedia(message);\n\n log.info(`Response code: ${res.statusCode}`, {\n file: CALL_FILE,\n method: this.handleRoapError.name,\n });\n } catch (err) {\n log.warn('Failed to communicate ROAP error to Webex Calling', {\n file: CALL_FILE,\n method: this.handleRoapError.name,\n });\n const errData = err as MobiusCallResponse;\n\n handleCallErrors(\n (error: CallError) => {\n this.emit(CALL_EVENT_KEYS.CALL_ERROR, error);\n this.submitCallErrorMetric(error);\n },\n ERROR_LAYER.MEDIA,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n /* istanbul ignore next */ (interval: number) => undefined,\n this.getCorrelationId(),\n errData,\n this.handleRoapError.name,\n CALL_FILE\n );\n }\n }\n\n /* Only disconnect calls that are not yet connected yet */\n\n if (!this.connected) {\n log.warn('Call failed due to media issue', {\n file: CALL_FILE,\n method: 'handleRoapError',\n });\n\n this.sendCallStateMachineEvt({type: 'E_UNKNOWN', data: {media: true}});\n }\n }\n\n /**\n * Handle Outgoing Roap Offer events.\n *\n * @param context\n * @param event - Roap Events.\n */\n private async handleOutgoingRoapOffer(context: MediaContext, event: RoapEvent) {\n log.info(`handleOutgoingRoapOffer: ${this.getCorrelationId()}`, {\n file: CALL_FILE,\n method: this.handleOutgoingRoapOffer.name,\n });\n\n const message = event.data as RoapMessage;\n\n if (!message?.sdp) {\n log.info('Initializing Offer...', {\n file: CALL_FILE,\n method: this.handleOutgoingRoapOffer.name,\n });\n this.mediaConnection.initiateOffer();\n\n return;\n }\n\n /* If we are here , that means we have a message to send.. */\n\n try {\n const res = await this.postMedia(message);\n\n log.log(`handleOutgoingRoapOffer: Response code: ${res.statusCode}`, {\n file: CALL_FILE,\n method: this.handleOutgoingRoapOffer.name,\n });\n } catch (err) {\n log.warn('Failed to process MediaOk request', {\n file: CALL_FILE,\n method: this.handleOutgoingRoapOffer.name,\n });\n const errData = err as MobiusCallResponse;\n\n handleCallErrors(\n this.getEmitterCallback(errData),\n ERROR_LAYER.MEDIA,\n (interval: number) => {\n /* Start retry if only it is a midcall case */\n if (this.connected) {\n setTimeout(() => {\n this.sendMediaStateMachineEvt({type: 'E_SEND_ROAP_OFFER', data: event.data});\n }, interval * 1000);\n }\n },\n this.getCorrelationId(),\n errData,\n this.handleOutgoingRoapOffer.name,\n CALL_FILE\n );\n }\n }\n\n /**\n * Handle Outgoing Roap Answer events.\n *\n * @param context\n * @param event - Roap Events.\n */\n private async handleOutgoingRoapAnswer(context: MediaContext, event: RoapEvent) {\n log.info(`handleOutgoingRoapAnswer: ${this.getCorrelationId()}`, {\n file: CALL_FILE,\n method: this.handleOutgoingRoapAnswer.name,\n });\n\n const message = event.data as RoapMessage;\n\n try {\n message.seq = this.seq;\n const res = await this.postMedia(message);\n\n log.log(`handleOutgoingRoapAnswer: Response code: ${res.statusCode}`, {\n file: CALL_FILE,\n method: this.handleOutgoingRoapAnswer.name,\n });\n } catch (err) {\n log.warn('Failed to send MediaAnswer request', {\n file: CALL_FILE,\n method: this.handleOutgoingRoapAnswer.name,\n });\n const errData = err as MobiusCallResponse;\n\n handleCallErrors(\n this.getEmitterCallback(errData),\n ERROR_LAYER.MEDIA,\n (interval: number) => {\n /* Start retry if only it is a midcall case */\n if (this.connected) {\n setTimeout(() => {\n this.sendMediaStateMachineEvt({type: 'E_SEND_ROAP_ANSWER', data: event.data});\n }, interval * 1000);\n }\n },\n this.getCorrelationId(),\n errData,\n this.handleOutgoingRoapAnswer.name,\n CALL_FILE\n );\n }\n }\n\n /**\n * Handle Incoming Roap Offer events.\n *\n * @param context\n * @param event - Roap Events.\n */\n private handleIncomingRoapOffer(context: MediaContext, event: RoapEvent) {\n log.info(`handleIncomingRoapOffer: ${this.getCorrelationId()}`, {\n file: CALL_FILE,\n method: this.handleIncomingRoapOffer.name,\n });\n\n const message = event.data as RoapMessage;\n\n this.remoteRoapMessage = message;\n if (!this.mediaConnection) {\n log.info('Media connection is not up, buffer the remote offer for later handling', {\n file: CALL_FILE,\n method: this.handleIncomingRoapOffer.name,\n });\n this.seq = message.seq;\n log.info(`Setting Sequence No: ${this.seq}`, {\n file: CALL_FILE,\n method: this.handleIncomingRoapOffer.name,\n });\n } else if (this.receivedRoapOKSeq === message.seq - 2) {\n log.info('Waiting for Roap OK, buffer the remote offer for later handling', {\n file: CALL_FILE,\n method: this.handleIncomingRoapOffer.name,\n });\n\n this.remoteRoapMessage = message;\n } else {\n log.info('Handling new offer...', {\n file: CALL_FILE,\n method: this.handleIncomingRoapOffer.name,\n });\n this.seq = message.seq;\n /* istanbul ignore else */\n if (this.mediaConnection) {\n this.mediaConnection.roapMessageReceived(message);\n }\n }\n }\n\n /**\n * Handle Incoming Roap Answer events.\n *\n * @param context\n * @param event - Roap Events.\n */\n private handleIncomingRoapAnswer(context: MediaContext, event: RoapEvent) {\n log.info(`handleIncomingRoapAnswer: ${this.getCorrelationId()}`, {\n file: CALL_FILE,\n method: this.handleIncomingRoapAnswer.name,\n });\n const message = event.data as RoapMessage;\n\n this.remoteRoapMessage = message;\n message.seq = this.seq;\n /* istanbul ignore else */\n if (this.mediaConnection) {\n this.mediaConnection.roapMessageReceived(message);\n }\n }\n\n /* istanbul ignore next */\n /**\n * Initialize Media Connection.\n *\n * @param settings -.\n * @param settings.localAudioTrack - MediaStreamTrack.\n * @param settings.debugId - String.\n */\n private initMediaConnection(localAudioTrack: MediaStreamTrack, debugId?: string) {\n const mediaConnection = new RoapMediaConnection(\n {\n skipInactiveTransceivers: true,\n iceServers: [],\n sdpMunging: {\n convertPort9to0: true,\n addContentSlides: false,\n },\n },\n {\n localTracks: {audio: localAudioTrack},\n direction: {\n audio: 'sendrecv',\n video: 'inactive',\n screenShareVideo: 'inactive',\n },\n },\n debugId || `WebexCallSDK-${this.correlationId}`\n );\n\n this.mediaConnection = mediaConnection;\n }\n\n /**\n *\n */\n public getDirection = (): CallDirection => this.direction;\n\n /**\n *\n */\n public getCallId = (): CallId => this.callId;\n\n /**\n *\n */\n public getCorrelationId = (): CorrelationId => this.correlationId;\n\n /**\n * .\n *\n * @param event -.\n */\n public sendCallStateMachineEvt(event: CallEvent) {\n this.callStateMachine.send(event);\n }\n\n /**\n * .\n *\n * @param event -.\n */\n public sendMediaStateMachineEvt(event: RoapEvent) {\n this.mediaStateMachine.send(event);\n }\n\n /**\n * @param callId -.\n */\n public setCallId = (callId: CallId) => {\n this.callId = callId;\n log.info(`Setting callId : ${this.callId} for correlationId: ${this.correlationId}`, {\n file: CALL_FILE,\n method: this.setCallId.name,\n });\n };\n\n /**\n * Sets the Disconnect reason.\n *\n */\n private setDisconnectReason() {\n if (this.mediaInactivity) {\n this.disconnectReason.code = DisconnectCode.MEDIA_INACTIVITY;\n this.disconnectReason.cause = DisconnectCause.MEDIA_INACTIVITY;\n } else if (this.connected || this.direction === CallDirection.OUTBOUND) {\n this.disconnectReason.code = DisconnectCode.NORMAL;\n this.disconnectReason.cause = DisconnectCause.NORMAL;\n } else {\n this.disconnectReason.code = DisconnectCode.BUSY;\n this.disconnectReason.cause = DisconnectCause.BUSY;\n }\n }\n\n /**\n * Gets the disconnection reason.\n *\n * @returns Reason.\n */\n public getDisconnectReason = (): DisconnectReason => {\n return this.disconnectReason;\n };\n\n /**\n * Answers the call with the provided local audio stream.\n *\n * @param localAudioStream - The local audio stream for the call.\n */\n public async answer(localAudioStream: LocalMicrophoneStream) {\n const localAudioTrack = localAudioStream.outputStream.getAudioTracks()[0];\n\n if (!localAudioTrack) {\n log.warn(`Did not find a local track while answering the call ${this.getCorrelationId()}`, {\n file: CALL_FILE,\n method: 'answer',\n });\n this.mediaInactivity = true;\n this.sendCallStateMachineEvt({type: 'E_SEND_CALL_DISCONNECT'});\n\n return;\n }\n\n localAudioTrack.enabled = true;\n\n if (!this.mediaConnection) {\n this.initMediaConnection(localAudioTrack);\n this.mediaRoapEventsListener();\n this.mediaTrackListener();\n this.outputTrackUpdateListener(localAudioStream);\n }\n\n if (this.callStateMachine.state.value === 'S_SEND_CALL_PROGRESS') {\n this.sendCallStateMachineEvt({type: 'E_SEND_CALL_CONNECT'});\n } else {\n log.warn(\n `Call cannot be answered because the state is : ${this.callStateMachine.state.value}`,\n {file: CALL_FILE, method: 'answer'}\n );\n }\n }\n\n /**\n * @param settings\n * @param settings.localAudioTrack\n */\n public async dial(localAudioStream: LocalMicrophoneStream) {\n const localAudioTrack = localAudioStream.outputStream.getAudioTracks()[0];\n if (!localAudioTrack) {\n log.warn(`Did not find a local track while dialing the call ${this.getCorrelationId()}`, {\n file: CALL_FILE,\n method: 'dial',\n });\n\n this.deleteCb(this.getCorrelationId());\n this.emit(CALL_EVENT_KEYS.DISCONNECT, this.getCorrelationId());\n\n return;\n }\n localAudioTrack.enabled = true;\n\n if (!this.mediaConnection) {\n this.initMediaConnection(localAudioTrack);\n this.mediaRoapEventsListener();\n this.mediaTrackListener();\n this.outputTrackUpdateListener(localAudioStream);\n }\n\n if (this.mediaStateMachine.state.value === 'S_ROAP_IDLE') {\n this.sendMediaStateMachineEvt({type: 'E_SEND_ROAP_OFFER'});\n } else {\n log.warn(\n `Call cannot be dialed because the state is already : ${this.mediaStateMachine.state.value}`,\n {file: CALL_FILE, method: 'dial'}\n );\n }\n }\n\n /**\n * .\n *\n * @param roapMessage\n */\n private post = async (roapMessage: RoapMessage): Promise<MobiusCallResponse> => {\n return this.webex.request({\n uri: `${this.mobiusUrl}${DEVICES_ENDPOINT_RESOURCE}/${this.deviceId}/${CALL_ENDPOINT_RESOURCE}`,\n method: HTTP_METHODS.POST,\n service: ALLOWED_SERVICES.MOBIUS,\n headers: {\n [CISCO_DEVICE_URL]: this.webex.internal.device.url,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n body: {\n device: {\n deviceId: this.deviceId,\n correlationId: this.correlationId,\n },\n callee: {\n type: this.destination.type,\n address: this.destination.address,\n },\n localMedia: {\n roap: roapMessage,\n mediaId: uuid(),\n },\n },\n });\n };\n\n /**\n * .\n *\n * @param state -.\n */\n private async patch(state: MobiusCallState): Promise<PatchResponse> {\n log.info(`Send a PATCH for ${state} to Webex Calling`, {\n file: CALL_FILE,\n method: this.patch.name,\n });\n\n return this.webex.request({\n // Sample uri: http://localhost/api/v1/calling/web/devices/{deviceid}/calls/{callid}\n\n uri: `${this.mobiusUrl}${DEVICES_ENDPOINT_RESOURCE}/${this.deviceId}/${CALLS_ENDPOINT_RESOURCE}/${this.callId}`,\n method: HTTP_METHODS.PATCH,\n service: ALLOWED_SERVICES.MOBIUS,\n headers: {\n [CISCO_DEVICE_URL]: this.webex.internal.device.url,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n body: {\n device: {\n deviceId: this.deviceId,\n correlationId: this.correlationId,\n },\n callId: this.callId,\n callState: state,\n inbandMedia: false, // setting false for now\n },\n });\n }\n\n /**\n * Sends Supplementary request to Mobius.\n *\n * @param context - Context information related to a particular supplementary service.\n * @param type - Type of Supplementary service.\n */\n public async postSSRequest(context: unknown, type: SUPPLEMENTARY_SERVICES): Promise<SSResponse> {\n const request = {\n uri: `${this.mobiusUrl}${SERVICES_ENDPOINT}`,\n method: HTTP_METHODS.POST,\n service: ALLOWED_SERVICES.MOBIUS,\n headers: {\n [CISCO_DEVICE_URL]: this.webex.internal.device.url,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n body: {\n device: {\n deviceId: this.deviceId,\n correlationId: this.correlationId,\n },\n callId: this.callId,\n },\n };\n\n switch (type) {\n case SUPPLEMENTARY_SERVICES.HOLD: {\n request.uri = `${request.uri}/${CALL_HOLD_SERVICE}/${HOLD_ENDPOINT}`;\n break;\n }\n case SUPPLEMENTARY_SERVICES.RESUME: {\n request.uri = `${request.uri}/${CALL_HOLD_SERVICE}/${RESUME_ENDPOINT}`;\n break;\n }\n case SUPPLEMENTARY_SERVICES.TRANSFER: {\n request.uri = `${request.uri}/${CALL_TRANSFER_SERVICE}/${TRANSFER_ENDPOINT}`;\n const transferContext = context as TransferContext;\n\n if (transferContext.destination) {\n Object.assign(request.body, {blindTransferContext: transferContext});\n Object.assign(request.body, {transferType: TransferType.BLIND});\n } /* istanbul ignore else */ else if (transferContext.transferToCallId) {\n Object.assign(request.body, {consultTransferContext: transferContext});\n Object.assign(request.body, {transferType: TransferType.CONSULT});\n }\n break;\n }\n default: {\n log.warn(`Unknown type for PUT request: ${type}`, {\n file: CALL_FILE,\n method: this.postSSRequest.name,\n });\n }\n }\n\n return this.webex.request(request);\n }\n\n /**\n * Sends Call status to Mobius.\n */\n public async postStatus(): Promise<WebexRequestPayload> {\n return this.webex.request({\n uri: `${this.mobiusUrl}${DEVICES_ENDPOINT_RESOURCE}/${this.deviceId}/${CALLS_ENDPOINT_RESOURCE}/${this.callId}/${CALL_STATUS_RESOURCE}`,\n method: HTTP_METHODS.POST,\n service: ALLOWED_SERVICES.MOBIUS,\n headers: {\n [CISCO_DEVICE_URL]: this.webex.internal.device.url,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n body: {\n device: {\n deviceId: this.deviceId,\n correlationId: this.correlationId,\n },\n callId: this.callId,\n },\n });\n }\n\n /**\n * This function is called when user attempts to complete transfer(Blind or Consult)\n * It checks if we have a valid transferCallId or transfer target and transfer type.\n *\n * @param transferType - Transfer type.\n * @param transferCallId - Call Id where the current call will be merged for consult transfers.\n * @param transferTarget - Destination for blind transfer.\n */\n public async completeTransfer(\n transferType: TransferType,\n transferCallId?: CallId,\n transferTarget?: string\n ) {\n if (transferType === TransferType.BLIND && transferTarget) {\n /* blind transfer */\n\n log.info(`Initiating Blind transfer with : ${transferTarget}`, {\n file: CALL_FILE,\n method: this.completeTransfer.name,\n });\n\n const context: TransferContext = {\n transferorCallId: this.getCallId(),\n destination: transferTarget,\n };\n\n try {\n await this.postSSRequest(context, SUPPLEMENTARY_SERVICES.TRANSFER);\n this.metricManager.submitCallMetric(\n METRIC_EVENT.CALL,\n TRANSFER_ACTION.BLIND,\n METRIC_TYPE.BEHAVIORAL,\n this.getCallId(),\n this.getCorrelationId(),\n undefined\n );\n } catch (e) {\n log.warn(`Blind Transfer failed for correlationId ${this.getCorrelationId()}`, {\n file: CALL_FILE,\n method: this.completeTransfer.name,\n });\n\n const errData = e as MobiusCallResponse;\n\n handleCallErrors(\n (error: CallError) => {\n this.emit(CALL_EVENT_KEYS.TRANSFER_ERROR, error);\n this.submitCallErrorMetric(error, TRANSFER_ACTION.BLIND);\n },\n ERROR_LAYER.CALL_CONTROL,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n /* istanbul ignore next */ (interval: number) => undefined,\n this.getCorrelationId(),\n errData,\n this.completeTransfer.name,\n CALL_FILE\n );\n }\n } else if (transferType === TransferType.CONSULT && transferCallId) {\n /* Consult transfer */\n\n log.info(`Initiating Consult transfer between : ${this.callId} and ${transferCallId}`, {\n file: CALL_FILE,\n method: this.completeTransfer.name,\n });\n\n const context: TransferContext = {\n transferorCallId: this.getCallId(),\n transferToCallId: transferCallId,\n };\n\n try {\n await this.postSSRequest(context, SUPPLEMENTARY_SERVICES.TRANSFER);\n this.metricManager.submitCallMetric(\n METRIC_EVENT.CALL,\n TRANSFER_ACTION.CONSULT,\n METRIC_TYPE.BEHAVIORAL,\n this.getCallId(),\n this.getCorrelationId(),\n undefined\n );\n } catch (e) {\n log.warn(`Consult Transfer failed for correlationId ${this.getCorrelationId()}`, {\n file: CALL_FILE,\n method: this.completeTransfer.name,\n });\n\n const errData = e as MobiusCallResponse;\n\n handleCallErrors(\n (error: CallError) => {\n this.emit(CALL_EVENT_KEYS.TRANSFER_ERROR, error);\n this.submitCallErrorMetric(error, TRANSFER_ACTION.CONSULT);\n },\n ERROR_LAYER.CALL_CONTROL,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n /* istanbul ignore next */ (interval: number) => undefined,\n this.getCorrelationId(),\n errData,\n this.completeTransfer.name,\n CALL_FILE\n );\n }\n } else {\n log.warn(\n `Invalid information received, transfer failed for correlationId: ${this.getCorrelationId()}`,\n {\n file: CALL_FILE,\n method: this.completeTransfer.name,\n }\n );\n }\n }\n\n /**\n *\n */\n private async getCallStats(): Promise<CallRtpStats> {\n let stats!: RTCStatsReport;\n\n try {\n stats = await this.mediaConnection.getStats();\n } catch (err) {\n log.warn('Stats collection failed, using dummy stats', {\n file: CALL_FILE,\n method: this.getCallStats.name,\n });\n }\n\n return parseMediaQualityStatistics(stats);\n }\n\n /**\n * .\n *\n * @param roapMessage -.\n */\n private async postMedia(roapMessage: RoapMessage): Promise<WebexRequestPayload> {\n log.log('Posting message to Webex Calling', {\n file: CALL_FILE,\n method: this.postMedia.name,\n });\n\n return this.webex.request({\n uri: `${this.mobiusUrl}${DEVICES_ENDPOINT_RESOURCE}/${this.deviceId}/${CALLS_ENDPOINT_RESOURCE}/${this.callId}/${MEDIA_ENDPOINT_RESOURCE}`,\n method: HTTP_METHODS.POST,\n service: ALLOWED_SERVICES.MOBIUS,\n headers: {\n [CISCO_DEVICE_URL]: this.webex.internal.device.url,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n body: {\n device: {\n deviceId: this.deviceId,\n correlationId: this.correlationId,\n },\n callId: this.callId,\n localMedia: {\n roap: roapMessage,\n mediaId: uuid(),\n },\n },\n });\n }\n\n /* istanbul ignore next */\n /**\n * Setup a listener for roap events emitted by the media sdk.\n */\n private mediaRoapEventsListener() {\n this.mediaConnection.on(\n Event.ROAP_MESSAGE_TO_SEND,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n async (event: any) => {\n log.info(\n `ROAP message to send (rcv from MEDIA-SDK) :\n \\n type: ${event.roapMessage?.messageType}, seq: ${event.roapMessage.seq} , version: ${event.roapMessage.version}`,\n {}\n );\n\n log.info(`SDP message to send : \\n ${event.roapMessage?.sdp}`, {\n file: CALL_FILE,\n method: this.mediaRoapEventsListener.name,\n });\n switch (event.roapMessage.messageType) {\n case RoapScenario.OK: {\n const mediaOk = {\n received: false,\n message: event.roapMessage,\n };\n\n this.sendMediaStateMachineEvt({type: 'E_ROAP_OK', data: mediaOk});\n break;\n }\n\n case RoapScenario.OFFER: {\n // TODO: Remove these after the Media-Core adds the fix\n const sdpVideoPortZero = event.roapMessage.sdp.replace(\n /^m=(video) (?:\\d+) /gim,\n 'm=$1 0 '\n );\n\n event.roapMessage.sdp = sdpVideoPortZero;\n this.localRoapMessage = event.roapMessage;\n this.sendCallStateMachineEvt({type: 'E_SEND_CALL_SETUP', data: event.roapMessage});\n break;\n }\n\n case RoapScenario.ANSWER:\n this.localRoapMessage = event.roapMessage;\n this.sendMediaStateMachineEvt({type: 'E_SEND_ROAP_ANSWER', data: event.roapMessage});\n break;\n\n case RoapScenario.ERROR:\n this.sendMediaStateMachineEvt({type: 'E_ROAP_ERROR', data: event.roapMessage});\n break;\n\n case RoapScenario.OFFER_RESPONSE:\n this.localRoapMessage = event.roapMessage;\n this.sendMediaStateMachineEvt({type: 'E_SEND_ROAP_OFFER', data: event.roapMessage});\n break;\n\n default:\n }\n }\n );\n }\n\n /* istanbul ignore next */\n /**\n * Setup a listener for remote track added event emitted by the media sdk.\n */\n private mediaTrackListener() {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.mediaConnection.on(Event.REMOTE_TRACK_ADDED, (e: any) => {\n if (e.type === MEDIA_CONNECTION_EVENT_KEYS.MEDIA_TYPE_AUDIO) {\n this.emit(CALL_EVENT_KEYS.REMOTE_MEDIA, e.track);\n }\n });\n }\n\n private outputTrackUpdateListener(localAudioStream: LocalMicrophoneStream) {\n localAudioStream.on(LocalStreamEventNames.OutputTrackChange, (track: MediaStreamTrack) => {\n this.mediaConnection.updateLocalTracks({audio: track});\n });\n }\n\n private async delete(): Promise<MobiusCallResponse> {\n const disconnectMetrics = await this.getCallStats();\n\n return this.webex.request({\n uri: `${this.mobiusUrl}${DEVICES_ENDPOINT_RESOURCE}/${this.deviceId}/${CALLS_ENDPOINT_RESOURCE}/${this.callId}`,\n method: HTTP_METHODS.DELETE,\n service: ALLOWED_SERVICES.MOBIUS,\n headers: {\n [CISCO_DEVICE_URL]: this.webex.internal.device.url,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n body: {\n device: {\n deviceId: this.deviceId,\n correlationId: this.correlationId,\n },\n callId: this.callId,\n metrics: disconnectMetrics,\n causecode: this.disconnectReason.code,\n cause: this.disconnectReason.cause,\n },\n });\n }\n\n /**\n * @param state - Current state of the call state machine.\n * @param error - Error object containing the message and type.\n * @param transferMetricAction - Metric action type incase of a transfer metric.\n */\n private submitCallErrorMetric(error: CallError, transferMetricAction?: TRANSFER_ACTION) {\n if (error.getCallError().errorLayer === ERROR_LAYER.CALL_CONTROL) {\n this.metricManager.submitCallMetric(\n METRIC_EVENT.CALL_ERROR,\n transferMetricAction || this.callStateMachine.state.value.toString(),\n METRIC_TYPE.BEHAVIORAL,\n this.callId,\n this.correlationId,\n error\n );\n } else {\n this.metricManager.submitMediaMetric(\n METRIC_EVENT.MEDIA_ERROR,\n this.mediaStateMachine.state.value.toString(),\n METRIC_TYPE.BEHAVIORAL,\n this.callId,\n this.correlationId,\n this.localRoapMessage.sdp,\n this.remoteRoapMessage?.sdp,\n error\n );\n }\n }\n\n /**\n * Handler for mid call events.\n *\n * @param event - Midcall Events from Mobius.\n */\n public handleMidCallEvent(event: MidCallEvent) {\n const {eventType, eventData} = event;\n\n switch (eventType) {\n case MidCallEventType.CALL_INFO: {\n log.log(`Received Midcall CallInfo Event for correlationId : ${this.correlationId}`, {\n file: CALL_FILE,\n method: 'handleMidCallEvent',\n });\n\n const callerData = eventData as MidCallCallerId;\n\n this.startCallerIdResolution(callerData.callerId);\n\n break;\n }\n\n case MidCallEventType.CALL_STATE: {\n log.log(`Received Midcall call event for correlationId : ${this.correlationId}`, {\n file: CALL_FILE,\n method: 'handleMidCallEvent',\n });\n\n const data = eventData as SupplementaryServiceState;\n\n /* Emit Events as per the state.\n * We will enter this state only when media negotiation is done\n * So, it's safe to emit events from here.\n */\n\n switch (data.callState) {\n case MOBIUS_MIDCALL_STATE.HELD: {\n log.log(`Call is successfully held : ${this.correlationId}`, {\n file: CALL_FILE,\n method: 'handleMidCallEvent',\n });\n\n this.emit(CALL_EVENT_KEYS.HELD, this.correlationId);\n\n this.held = true;\n\n if (this.supplementaryServicesTimer) {\n clearTimeout(this.supplementaryServicesTimer);\n this.supplementaryServicesTimer = undefined;\n }\n\n break;\n }\n\n case MOBIUS_MIDCALL_STATE.CONNECTED: {\n log.log(`Call is successfully resumed : ${this.correlationId}`, {\n file: CALL_FILE,\n method: 'handleMidCallEvent',\n });\n\n this.emit(CALL_EVENT_KEYS.RESUMED, this.correlationId);\n\n this.held = false;\n\n if (this.supplementaryServicesTimer) {\n clearTimeout(this.supplementaryServicesTimer);\n this.supplementaryServicesTimer = undefined;\n }\n\n break;\n }\n\n default: {\n log.warn(\n `Unknown Supplementary service state: ${data.callState} for correlationId : ${this.correlationId}`,\n {\n file: CALL_FILE,\n method: 'handleMidCallEvent',\n }\n );\n }\n }\n\n break;\n }\n\n default: {\n log.warn(`Unknown Midcall type: ${eventType} for correlationId : ${this.correlationId}`, {\n file: CALL_FILE,\n method: 'handleMidCallEvent',\n });\n }\n }\n }\n\n /**\n *\n */\n public getCallerInfo = (): DisplayInformation => this.callerInfo;\n\n /**\n *\n */\n public end = (): void => {\n this.sendCallStateMachineEvt({type: 'E_SEND_CALL_DISCONNECT'});\n };\n\n /**\n *\n */\n public doHoldResume = (): void => {\n if (this.held) {\n this.sendCallStateMachineEvt({type: 'E_CALL_RESUME'});\n } else {\n this.sendCallStateMachineEvt({type: 'E_CALL_HOLD'});\n }\n };\n\n /**\n * .\n *\n * @param callerInfo\n */\n public startCallerIdResolution(callerInfo: CallerIdInfo) {\n this.callerInfo = this.callerId.fetchCallerDetails(callerInfo);\n }\n\n /**\n * Sends digit over the established call.\n *\n * @param tone - DTMF tones.\n */\n public sendDigit(tone: string) {\n /* istanbul ignore else */\n try {\n log.info(`Sending digit : ${tone}`, {\n file: CALL_FILE,\n method: 'sendDigit',\n });\n\n this.mediaConnection.insertDTMF(tone);\n } catch (e: any) {\n log.warn(`Unable to send digit on call: ${e.message}`, {\n file: CALL_FILE,\n method: 'sendDigit',\n });\n }\n }\n\n /**\n * Mutes/Unmutes the call.\n *\n * @param localAudioTrack -.\n */\n public mute = (localAudioStream: LocalMicrophoneStream): void => {\n const localAudioTrack = localAudioStream.outputStream.getAudioTracks()[0];\n if (this.muted) {\n localAudioTrack.enabled = true;\n this.muted = false;\n } else {\n localAudioTrack.enabled = false;\n this.muted = true;\n }\n };\n\n /**\n * Change the audio stream of the call.\n *\n * @param newAudioStream - The new audio stream to be used in the call.\n */\n\n public updateMedia = (newAudioStream: LocalMicrophoneStream): void => {\n const localAudioTrack = newAudioStream.outputStream.getAudioTracks()[0];\n\n if (!localAudioTrack) {\n log.warn(\n `Did not find a local track while updating media for call ${this.getCorrelationId()}. Will not update media`,\n {\n file: CALL_FILE,\n method: 'updateMedia',\n }\n );\n\n return;\n }\n\n this.mediaConnection.updateLocalTracks({\n audio: localAudioTrack,\n });\n };\n\n /**\n * @param broadworksCorrelationInfo\n */\n setBroadworksCorrelationInfo(broadworksCorrelationInfo: string): void {\n this.broadworksCorrelationInfo = broadworksCorrelationInfo;\n }\n\n /**\n *\n */\n getBroadworksCorrelationInfo(): string | undefined {\n return this.broadworksCorrelationInfo;\n }\n\n /**\n * Get call stats for an active call.\n *\n * @returns Promise<CallRtpStats> Call Stats.\n */\n getCallRtpStats(): Promise<CallRtpStats> {\n return this.getCallStats();\n }\n}\n\n/**\n * @param activeUrl\n * @param webex -.\n * @param dest -.\n * @param dir -.\n * @param deviceId -.\n * @param lineId -.\n * @param serverCb\n * @param deleteCb\n * @param indicator - Service Indicator.\n */\nexport const createCall = (\n activeUrl: string,\n webex: WebexSDK,\n dest: CallDetails,\n dir: CallDirection,\n deviceId: string,\n lineId: string,\n deleteCb: DeleteRecordCallBack,\n indicator: ServiceIndicator\n): ICall => new Call(activeUrl, webex, dest, dir, deviceId, lineId, deleteCb, indicator);\n"],"mappings":"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"}
1
+ {"version":3,"names":["_internalMediaCore","require","_xstate","_uuid","_webMediaEffects","_types","_Utils","_types2","_CallError","_constants","_SDKConnector","_interopRequireDefault","_impl","_types3","_types4","_Logger","_CallerId","_types5","_Metrics","_constants2","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","_Reflect$construct","arguments","apply","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","e","Call","exports","_Eventing","_inherits2","_super","activeUrl","webex","destination","direction","deviceId","lineId","deleteCb","indicator","_this","_classCallCheck2","_defineProperty2","_assertThisInitialized2","callId","correlationId","log","info","concat","file","CALL_FILE","method","setCallId","name","disconnectReason","_ref","_asyncToGenerator2","_regenerator","mark","_callee","roapMessage","wrap","_callee$","_context","prev","next","abrupt","request","uri","mobiusUrl","DEVICES_ENDPOINT_RESOURCE","CALL_ENDPOINT_RESOURCE","HTTP_METHODS","POST","service","ALLOWED_SERVICES","MOBIUS","headers","CISCO_DEVICE_URL","internal","device","url","SPARK_USER_AGENT","CALLING_USER_AGENT","body","callee","type","address","localMedia","roap","mediaId","uuid","stop","_x","metricManager","submitBNRMetric","METRIC_EVENT","BNR_ENABLED","METRIC_TYPE","BEHAVIORAL","BNR_DISABLED","addedEffect","localAudioStream","effect","getEffectByKind","NOISE_REDUCTION_EFFECT","on","EffectEvent","Enabled","onEffectEnabled","Disabled","onEffectDisabled","callerInfo","sendCallStateMachineEvt","held","setUserMuted","muted","warn","getCorrelationId","newAudioStream","localAudioTrack","outputStream","getAudioTracks","mediaConnection","updateLocalTracks","audio","unregisterListeners","registerListeners","message","sdkConnector","SDKConnector","serviceIndicator","getWebex","setWebex","getMetricManager","DEFAULT_LOCAL_CALL_ID","connected","mediaInactivity","earlyMedia","localRoapMessage","receivedRoapOKSeq","mediaNegotiationCompleted","seq","INITIAL_SEQ_NUMBER","callerId","createCallerId","emitObj","emit","CALL_EVENT_KEYS","CALLER_ID","remoteRoapMessage","code","DisconnectCode","NORMAL","cause","DisconnectCause","callMachine","createMachine","schema","context","events","id","initial","states","S_IDLE","E_RECV_CALL_SETUP","target","actions","E_SEND_CALL_SETUP","E_RECV_CALL_DISCONNECT","E_SEND_CALL_DISCONNECT","E_UNKNOWN","S_RECV_CALL_SETUP","E_SEND_CALL_ALERTING","S_SEND_CALL_SETUP","E_RECV_CALL_PROGRESS","E_RECV_CALL_CONNECT","S_RECV_CALL_PROGRESS","S_SEND_CALL_PROGRESS","E_SEND_CALL_CONNECT","S_RECV_CALL_CONNECT","E_CALL_ESTABLISHED","S_SEND_CALL_CONNECT","S_CALL_HOLD","S_CALL_RESUME","S_CALL_ESTABLISHED","E_CALL_HOLD","E_CALL_RESUME","S_RECV_CALL_DISCONNECT","E_CALL_CLEARED","S_SEND_CALL_DISCONNECT","S_UNKNOWN","S_ERROR","S_CALL_CLEARED","incomingCallSetup","event","handleIncomingCallSetup","outgoingCallSetup","handleOutgoingCallSetup","incomingCallProgress","handleIncomingCallProgress","outgoingCallAlerting","handleOutgoingCallAlerting","incomingCallConnect","handleIncomingCallConnect","outgoingCallConnect","handleOutgoingCallConnect","callEstablished","handleCallEstablished","initiateCallHold","handleCallHold","initiateCallResume","handleCallResume","incomingCallDisconnect","handleIncomingCallDisconnect","outgoingCallDisconnect","handleOutgoingCallDisconnect","unknownState","handleUnknownState","mediaMachine","S_ROAP_IDLE","E_RECV_ROAP_OFFER_REQUEST","E_RECV_ROAP_OFFER","E_SEND_ROAP_OFFER","S_RECV_ROAP_OFFER_REQUEST","E_ROAP_OK","E_ROAP_ERROR","S_RECV_ROAP_OFFER","E_SEND_ROAP_ANSWER","S_SEND_ROAP_OFFER","E_RECV_ROAP_ANSWER","S_RECV_ROAP_ANSWER","S_SEND_ROAP_ANSWER","S_ROAP_OK","E_ROAP_TEARDOWN","S_ROAP_ERROR","S_ROAP_TEARDOWN","incomingRoapOffer","handleIncomingRoapOffer","incomingRoapAnswer","handleIncomingRoapAnswer","incomingRoapOfferRequest","handleIncomingRoapOfferRequest","outgoingRoapOffer","handleOutgoingRoapOffer","outgoingRoapAnswer","handleOutgoingRoapAnswer","roapEstablished","handleRoapEstablished","roapError","handleRoapError","callStateMachine","interpret","onTransition","state","value","_stringify","submitCallMetric","CALL","toString","undefined","start","mediaStateMachine","_this$remoteRoapMessa","submitMediaMetric","MEDIA","sdp","_createClass2","key","isMuted","isConnected","isHeld","_handleOutgoingCallSetup","_callee2","_this2","response","errData","_callee2$","_context2","data","post","sent","statusCode","t0","handleCallErrors","error","CALL_ERROR","submitCallErrorMetric","ERROR_LAYER","CALL_CONTROL","interval","_x2","_handleCallHold","_callee4","_this3","_callee4$","_context4","postSSRequest","SUPPLEMENTARY_SERVICES","HOLD","supplementaryServicesTimer","setTimeout","_callee3","errorContext","callError","_callee3$","_context3","createCallError","ERROR_TYPE","TIMEOUT","HOLD_ERROR","SUPPLEMENTARY_SERVICES_TIMEOUT","_x3","_handleCallResume","_callee6","_this4","_callee6$","_context6","RESUME","_callee5","_callee5$","_context5","RESUME_ERROR","_x4","_data$callProgressDat","callProgressData","inbandMedia","startCallerIdResolution","PROGRESS","roapMessageReceived","_handleOutgoingCallAlerting","_callee7","_this5","res","_callee7$","_context7","patch","MobiusCallState","ALERTING","_x5","CONNECT","_handleOutgoingCallConnect","_callee8","_this6","_callee8$","_context8","CONNECTED","_x6","_handleIncomingCallDisconnect","_callee9","_callee9$","_context9","setDisconnectReason","delete","sessionTimer","clearInterval","close","sendMediaStateMachineEvt","DISCONNECT","_x7","_handleOutgoingCallDisconnect","_callee10","_callee10$","_context10","_x8","_this7","ESTABLISHED","setInterval","_callee11","_callee11$","_context11","postStatus","DEFAULT_SESSION_TIMER","_handleUnknownState","_callee12","eventData","_callee12$","_context12","media","_x9","getEmitterCallback","_this8","clearTimeout","_handleRoapEstablished","_callee13","_this9","_ref5","received","_callee13$","_context13","postMedia","messageType","_x10","_x11","_handleRoapError","_callee14","_this10","_callee14$","_context14","_x12","_x13","_handleOutgoingRoapOffer","_callee15","_this11","_callee15$","_context15","initiateOffer","_x14","_x15","_handleOutgoingRoapAnswer","_callee16","_this12","_callee16$","_context16","_x16","_x17","initMediaConnection","debugId","RoapMediaConnection","skipInactiveTransceivers","iceServers","sdpMunging","convertPort9to0","addContentSlides","localTracks","video","screenShareVideo","send","MEDIA_INACTIVITY","CallDirection","OUTBOUND","BUSY","_answer","_callee17","_callee17$","_context17","enabled","mediaRoapEventsListener","mediaTrackListener","answer","_x18","_dial","_callee18","_callee18$","_context18","dial","_x19","_patch","_callee19","_callee19$","_context19","CALLS_ENDPOINT_RESOURCE","PATCH","callState","_x20","_postSSRequest","_callee20","transferContext","_callee20$","_context20","SERVICES_ENDPOINT","TRANSFER","CALL_HOLD_SERVICE","HOLD_ENDPOINT","RESUME_ENDPOINT","CALL_TRANSFER_SERVICE","TRANSFER_ENDPOINT","_assign","blindTransferContext","transferType","TransferType","BLIND","transferToCallId","consultTransferContext","CONSULT","_x21","_x22","_postStatus","_callee21","_callee21$","_context21","CALL_STATUS_RESOURCE","_completeTransfer","_callee22","transferCallId","transferTarget","_this13","_context22","_errData","_callee22$","_context23","completeTransfer","transferorCallId","getCallId","TRANSFER_ACTION","TRANSFER_ERROR","t1","_x23","_x24","_x25","_getCallStats","_callee23","stats","_callee23$","_context24","getStats","getCallStats","parseMediaQualityStatistics","_postMedia","_callee24","_callee24$","_context25","MEDIA_ENDPOINT_RESOURCE","_x26","_this14","Event","ROAP_MESSAGE_TO_SEND","_ref6","_callee25","_event$roapMessage","_event$roapMessage2","mediaOk","sdpVideoPortZero","_callee25$","_context26","version","RoapScenario","OK","OFFER","ANSWER","ERROR","OFFER_RESPONSE","replace","_x27","_this15","REMOTE_TRACK_ADDED","MEDIA_CONNECTION_EVENT_KEYS","MEDIA_TYPE_AUDIO","REMOTE_MEDIA","track","off","LocalStreamEventNames","EffectAdded","registerEffectListener","_this16","OutputTrackChange","audioTrack","isEnabled","_delete2","_callee26","disconnectMetrics","_callee26$","_context27","DELETE","metrics","causecode","_delete","transferMetricAction","getCallError","errorLayer","_this$remoteRoapMessa2","MEDIA_ERROR","handleMidCallEvent","eventType","MidCallEventType","CALL_INFO","callerData","CALL_STATE","MOBIUS_MIDCALL_STATE","HELD","RESUMED","fetchCallerDetails","sendDigit","tone","insertDTMF","setBroadworksCorrelationInfo","broadworksCorrelationInfo","getBroadworksCorrelationInfo","getCallRtpStats","Eventing","createCall","dest","dir"],"sources":["call.ts"],"sourcesContent":["import {\n Event,\n LocalMicrophoneStream,\n LocalStreamEventNames,\n RoapMediaConnection,\n} from '@webex/internal-media-core';\nimport {createMachine, interpret} from 'xstate';\nimport {v4 as uuid} from 'uuid';\nimport {EffectEvent, TrackEffect} from '@webex/web-media-effects';\nimport {ERROR_LAYER, ERROR_TYPE, ErrorContext} from '../../Errors/types';\nimport {handleCallErrors, parseMediaQualityStatistics} from '../../common/Utils';\nimport {\n ALLOWED_SERVICES,\n CallDetails,\n CallDirection,\n CallId,\n CorrelationId,\n DisplayInformation,\n HTTP_METHODS,\n ServiceIndicator,\n WebexRequestPayload,\n} from '../../common/types';\nimport {CallError, createCallError} from '../../Errors/catalog/CallError';\n/* eslint-disable tsdoc/syntax */\n/* eslint-disable no-param-reassign */\nimport {\n CALL_ENDPOINT_RESOURCE,\n CALL_FILE,\n CALL_HOLD_SERVICE,\n CALL_STATUS_RESOURCE,\n CALL_TRANSFER_SERVICE,\n CALLING_USER_AGENT,\n CALLS_ENDPOINT_RESOURCE,\n CISCO_DEVICE_URL,\n DEFAULT_LOCAL_CALL_ID,\n DEFAULT_SESSION_TIMER,\n DEVICES_ENDPOINT_RESOURCE,\n HOLD_ENDPOINT,\n INITIAL_SEQ_NUMBER,\n MEDIA_ENDPOINT_RESOURCE,\n NOISE_REDUCTION_EFFECT,\n RESUME_ENDPOINT,\n SPARK_USER_AGENT,\n SUPPLEMENTARY_SERVICES_TIMEOUT,\n TRANSFER_ENDPOINT,\n} from '../constants';\nimport SDKConnector from '../../SDKConnector';\nimport {Eventing} from '../../Events/impl';\nimport {\n CALL_EVENT_KEYS,\n CallerIdInfo,\n CallEvent,\n CallEventTypes,\n MEDIA_CONNECTION_EVENT_KEYS,\n MOBIUS_MIDCALL_STATE,\n RoapEvent,\n RoapMessage,\n SUPPLEMENTARY_SERVICES,\n} from '../../Events/types';\nimport {ISDKConnector, WebexSDK} from '../../SDKConnector/types';\nimport {\n CallRtpStats,\n DeleteRecordCallBack,\n DisconnectCause,\n DisconnectCode,\n DisconnectReason,\n ICall,\n MediaContext,\n MidCallCallerId,\n MidCallEvent,\n MidCallEventType,\n MobiusCallData,\n MobiusCallResponse,\n MobiusCallState,\n PatchResponse,\n RoapScenario,\n SSResponse,\n SupplementaryServiceState,\n TransferContext,\n TransferType,\n} from './types';\nimport log from '../../Logger';\nimport {ICallerId} from './CallerId/types';\nimport {createCallerId} from './CallerId';\nimport {IMetricManager, METRIC_TYPE, METRIC_EVENT, TRANSFER_ACTION} from '../../Metrics/types';\nimport {getMetricManager} from '../../Metrics';\nimport {SERVICES_ENDPOINT} from '../../common/constants';\n\n/**\n *\n */\nexport class Call extends Eventing<CallEventTypes> implements ICall {\n private sdkConnector: ISDKConnector;\n\n private webex: WebexSDK;\n\n private destination: CallDetails;\n\n private direction: CallDirection;\n\n private callId: CallId;\n\n private correlationId: CorrelationId;\n\n private deviceId: string;\n\n public lineId: string;\n\n private disconnectReason: DisconnectReason;\n\n private callStateMachine;\n\n private mediaStateMachine;\n\n private seq: number; // TODO: remove later\n\n /* TODO: Need to change the type from any to RoapMediaConnection */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public mediaConnection?: any;\n\n private earlyMedia: boolean;\n\n private connected: boolean;\n\n private mediaInactivity: boolean;\n\n private callerInfo: DisplayInformation;\n\n private localRoapMessage: RoapMessage; // Use it for new offer\n\n private mobiusUrl!: string;\n\n private remoteRoapMessage: RoapMessage | null;\n\n private deleteCb: DeleteRecordCallBack;\n\n private callerId: ICallerId;\n\n private sessionTimer?: NodeJS.Timer;\n\n /* Used to wait for final responses for supplementary services */\n private supplementaryServicesTimer?: NodeJS.Timeout;\n\n private muted: boolean;\n\n private held: boolean;\n\n private metricManager: IMetricManager;\n\n private broadworksCorrelationInfo?: string; // Used in WxCC calls\n\n private serviceIndicator: ServiceIndicator;\n\n private mediaNegotiationCompleted: boolean;\n\n private receivedRoapOKSeq: number;\n\n private localAudioStream?: LocalMicrophoneStream;\n\n /**\n * Getter to check if the call is muted or not.\n *\n * @returns - Boolean.\n */\n public isMuted() {\n return this.muted;\n }\n\n /**\n * Getter to check if the call is connected or not.\n *\n * @returns - Boolean.\n */\n public isConnected() {\n return this.connected;\n }\n\n /**\n * Getter to check if the call is held or not.\n *\n * @returns - Boolean.\n */\n public isHeld() {\n return this.held;\n }\n\n /**\n * @ignore\n */\n constructor(\n activeUrl: string,\n webex: WebexSDK,\n destination: CallDetails,\n direction: CallDirection,\n deviceId: string,\n lineId: string,\n deleteCb: DeleteRecordCallBack,\n indicator: ServiceIndicator\n ) {\n super();\n this.destination = destination;\n this.direction = direction;\n this.sdkConnector = SDKConnector;\n this.deviceId = deviceId;\n this.serviceIndicator = indicator;\n this.lineId = lineId;\n\n /* istanbul ignore else */\n if (!this.sdkConnector.getWebex()) {\n SDKConnector.setWebex(webex);\n }\n this.webex = this.sdkConnector.getWebex();\n this.metricManager = getMetricManager(this.webex, this.serviceIndicator);\n this.callId = `${DEFAULT_LOCAL_CALL_ID}_${uuid()}`;\n this.correlationId = uuid();\n this.deleteCb = deleteCb;\n this.connected = false;\n this.mediaInactivity = false;\n this.held = false;\n this.earlyMedia = false;\n this.callerInfo = {} as DisplayInformation;\n this.localRoapMessage = {} as RoapMessage;\n\n this.mobiusUrl = activeUrl;\n this.receivedRoapOKSeq = 0;\n this.mediaNegotiationCompleted = false;\n\n log.info(`Webex Calling Url:- ${this.mobiusUrl}`, {\n file: CALL_FILE,\n method: 'constructor',\n });\n\n this.seq = INITIAL_SEQ_NUMBER;\n this.callerId = createCallerId(webex, (callerInfo: DisplayInformation) => {\n this.callerInfo = callerInfo;\n const emitObj = {\n correlationId: this.correlationId,\n callerId: this.callerInfo,\n };\n\n this.emit(CALL_EVENT_KEYS.CALLER_ID, emitObj);\n });\n this.remoteRoapMessage = null;\n this.disconnectReason = {code: DisconnectCode.NORMAL, cause: DisconnectCause.NORMAL};\n\n const callMachine = createMachine(\n {\n schema: {\n context: {},\n // The events this machine handles\n events: {} as CallEvent,\n },\n id: 'call-state',\n initial: 'S_IDLE',\n context: {},\n states: {\n S_IDLE: {\n on: {\n E_RECV_CALL_SETUP: {\n target: 'S_RECV_CALL_SETUP',\n actions: ['incomingCallSetup'],\n },\n E_SEND_CALL_SETUP: {\n target: 'S_SEND_CALL_SETUP',\n actions: ['outgoingCallSetup'],\n },\n E_RECV_CALL_DISCONNECT: {\n target: 'S_RECV_CALL_DISCONNECT',\n actions: ['incomingCallDisconnect'],\n },\n E_SEND_CALL_DISCONNECT: {\n target: 'S_SEND_CALL_DISCONNECT',\n actions: ['outgoingCallDisconnect'],\n },\n E_UNKNOWN: {\n target: 'S_UNKNOWN',\n actions: ['unknownState'],\n },\n },\n },\n\n /* CALL SETUP */\n S_RECV_CALL_SETUP: {\n on: {\n E_SEND_CALL_ALERTING: {\n target: 'S_SEND_CALL_PROGRESS',\n actions: ['outgoingCallAlerting'],\n },\n E_RECV_CALL_DISCONNECT: {\n target: 'S_RECV_CALL_DISCONNECT',\n actions: ['incomingCallDisconnect'],\n },\n E_SEND_CALL_DISCONNECT: {\n target: 'S_SEND_CALL_DISCONNECT',\n actions: ['outgoingCallDisconnect'],\n },\n E_UNKNOWN: {\n target: 'S_UNKNOWN',\n actions: ['unknownState'],\n },\n },\n },\n S_SEND_CALL_SETUP: {\n on: {\n E_RECV_CALL_PROGRESS: {\n target: 'S_RECV_CALL_PROGRESS',\n actions: ['incomingCallProgress'],\n },\n E_RECV_CALL_CONNECT: {\n target: 'S_RECV_CALL_CONNECT',\n actions: ['incomingCallConnect'],\n },\n E_RECV_CALL_DISCONNECT: {\n target: 'S_RECV_CALL_DISCONNECT',\n actions: ['incomingCallDisconnect'],\n },\n E_SEND_CALL_DISCONNECT: {\n target: 'S_SEND_CALL_DISCONNECT',\n actions: ['outgoingCallDisconnect'],\n },\n E_UNKNOWN: {\n target: 'S_UNKNOWN',\n actions: ['unknownState'],\n },\n },\n },\n\n /* CALL_PROGRESS */\n S_RECV_CALL_PROGRESS: {\n on: {\n E_RECV_CALL_CONNECT: {\n target: 'S_RECV_CALL_CONNECT',\n actions: ['incomingCallConnect'],\n },\n E_RECV_CALL_DISCONNECT: {\n target: 'S_RECV_CALL_DISCONNECT',\n actions: ['incomingCallDisconnect'],\n },\n E_SEND_CALL_DISCONNECT: {\n target: 'S_SEND_CALL_DISCONNECT',\n actions: ['outgoingCallDisconnect'],\n },\n // Possible to have multiple E_RECV_CALL_PROGRESS events, handler should handle it\n E_RECV_CALL_PROGRESS: {\n target: 'S_RECV_CALL_PROGRESS',\n actions: ['incomingCallProgress'],\n },\n E_UNKNOWN: {\n target: 'S_UNKNOWN',\n actions: ['unknownState'],\n },\n },\n },\n S_SEND_CALL_PROGRESS: {\n on: {\n E_SEND_CALL_CONNECT: {\n target: 'S_SEND_CALL_CONNECT',\n actions: ['outgoingCallConnect'],\n },\n E_RECV_CALL_DISCONNECT: {\n target: 'S_RECV_CALL_DISCONNECT',\n actions: ['incomingCallDisconnect'],\n },\n E_SEND_CALL_DISCONNECT: {\n target: 'S_SEND_CALL_DISCONNECT',\n actions: ['outgoingCallDisconnect'],\n },\n E_UNKNOWN: {\n target: 'S_UNKNOWN',\n actions: ['unknownState'],\n },\n },\n },\n\n /* CALL_CONNECT */\n S_RECV_CALL_CONNECT: {\n on: {\n E_CALL_ESTABLISHED: {\n target: 'S_CALL_ESTABLISHED',\n actions: ['callEstablished'],\n },\n E_RECV_CALL_DISCONNECT: {\n target: 'S_RECV_CALL_DISCONNECT',\n actions: ['incomingCallDisconnect'],\n },\n E_SEND_CALL_DISCONNECT: {\n target: 'S_SEND_CALL_DISCONNECT',\n actions: ['outgoingCallDisconnect'],\n },\n E_UNKNOWN: {\n target: 'S_UNKNOWN',\n actions: ['unknownState'],\n },\n },\n },\n S_SEND_CALL_CONNECT: {\n on: {\n E_CALL_ESTABLISHED: {\n target: 'S_CALL_ESTABLISHED',\n actions: ['callEstablished'],\n },\n E_RECV_CALL_DISCONNECT: {\n target: 'S_RECV_CALL_DISCONNECT',\n actions: ['incomingCallDisconnect'],\n },\n E_SEND_CALL_DISCONNECT: {\n target: 'S_SEND_CALL_DISCONNECT',\n actions: ['outgoingCallDisconnect'],\n },\n E_UNKNOWN: {\n target: 'S_UNKNOWN',\n actions: ['unknownState'],\n },\n },\n },\n S_CALL_HOLD: {\n on: {\n E_RECV_CALL_DISCONNECT: {\n target: 'S_RECV_CALL_DISCONNECT',\n actions: ['incomingCallDisconnect'],\n },\n E_SEND_CALL_DISCONNECT: {\n target: 'S_SEND_CALL_DISCONNECT',\n actions: ['outgoingCallDisconnect'],\n },\n E_CALL_ESTABLISHED: {\n target: 'S_CALL_ESTABLISHED',\n actions: ['callEstablished'],\n },\n E_UNKNOWN: {\n target: 'S_UNKNOWN',\n actions: ['unknownState'],\n },\n },\n },\n S_CALL_RESUME: {\n on: {\n E_RECV_CALL_DISCONNECT: {\n target: 'S_RECV_CALL_DISCONNECT',\n actions: ['incomingCallDisconnect'],\n },\n E_SEND_CALL_DISCONNECT: {\n target: 'S_SEND_CALL_DISCONNECT',\n actions: ['outgoingCallDisconnect'],\n },\n E_CALL_ESTABLISHED: {\n target: 'S_CALL_ESTABLISHED',\n actions: ['callEstablished'],\n },\n E_UNKNOWN: {\n target: 'S_UNKNOWN',\n actions: ['unknownState'],\n },\n },\n },\n /* CALL_ESTABLISHED */\n S_CALL_ESTABLISHED: {\n on: {\n E_CALL_HOLD: {\n target: 'S_CALL_HOLD',\n actions: ['initiateCallHold'],\n },\n E_CALL_RESUME: {\n target: 'S_CALL_RESUME',\n actions: ['initiateCallResume'],\n },\n E_RECV_CALL_DISCONNECT: {\n target: 'S_RECV_CALL_DISCONNECT',\n actions: ['incomingCallDisconnect'],\n },\n E_SEND_CALL_DISCONNECT: {\n target: 'S_SEND_CALL_DISCONNECT',\n actions: ['outgoingCallDisconnect'],\n },\n E_CALL_ESTABLISHED: {\n target: 'S_CALL_ESTABLISHED',\n actions: ['callEstablished'],\n },\n E_UNKNOWN: {\n target: 'S_UNKNOWN',\n actions: ['unknownState'],\n },\n },\n },\n\n /* CALL_DISCONNECT */\n S_RECV_CALL_DISCONNECT: {\n on: {\n E_CALL_CLEARED: 'S_CALL_CLEARED',\n },\n },\n S_SEND_CALL_DISCONNECT: {\n on: {\n E_CALL_CLEARED: 'S_CALL_CLEARED',\n },\n },\n\n /* UNKNOWN_EVENTS */\n S_UNKNOWN: {\n on: {\n E_CALL_CLEARED: 'S_CALL_CLEARED',\n },\n },\n\n /* ERROR_EVENTS */\n S_ERROR: {\n on: {\n E_CALL_CLEARED: 'S_CALL_CLEARED',\n },\n },\n\n /* End of our state-machine */\n S_CALL_CLEARED: {\n type: 'final',\n },\n },\n },\n {\n actions: {\n /**\n * .\n *\n * @param context\n * @param event\n */\n incomingCallSetup: (context, event: CallEvent) => this.handleIncomingCallSetup(event),\n /**\n * .\n *\n * @param context\n * @param event\n */\n outgoingCallSetup: (context, event: CallEvent) => this.handleOutgoingCallSetup(event),\n /**\n * .\n *\n * @param context\n * @param event\n */\n incomingCallProgress: (context, event: CallEvent) =>\n this.handleIncomingCallProgress(event),\n /**\n * .\n *\n * @param context\n * @param event\n */\n outgoingCallAlerting: (context, event: CallEvent) =>\n this.handleOutgoingCallAlerting(event),\n /**\n * .\n *\n * @param context\n * @param event\n */\n incomingCallConnect: (context, event: CallEvent) => this.handleIncomingCallConnect(event),\n /**\n * .\n *\n * @param context\n * @param event\n */\n outgoingCallConnect: (context, event: CallEvent) => this.handleOutgoingCallConnect(event),\n /**\n * .\n *\n * @param context\n * @param event\n */\n callEstablished: (context, event: CallEvent) => this.handleCallEstablished(event),\n /**\n * .\n *\n * @param context\n * @param event\n */\n initiateCallHold: (context, event: CallEvent) => this.handleCallHold(event),\n /**\n * .\n *\n * @param context\n * @param event\n */\n initiateCallResume: (context, event: CallEvent) => this.handleCallResume(event),\n /**\n * .\n *\n * @param context\n * @param event\n */\n incomingCallDisconnect: (context, event: CallEvent) =>\n this.handleIncomingCallDisconnect(event),\n /**\n * .\n *\n * @param context\n * @param event\n */\n outgoingCallDisconnect: (context, event: CallEvent) =>\n this.handleOutgoingCallDisconnect(event),\n /**\n * .\n *\n * @param context\n * @param event\n */\n unknownState: (context, event: CallEvent) => this.handleUnknownState(event),\n },\n }\n );\n\n const mediaMachine = createMachine(\n {\n schema: {\n // The context (extended state) of the machine\n context: {},\n // The events this machine handles\n events: {} as RoapEvent,\n },\n id: 'roap-state',\n initial: 'S_ROAP_IDLE',\n context: {},\n states: {\n S_ROAP_IDLE: {\n on: {\n E_RECV_ROAP_OFFER_REQUEST: {\n target: 'S_RECV_ROAP_OFFER_REQUEST',\n actions: ['incomingRoapOfferRequest'],\n },\n E_RECV_ROAP_OFFER: {\n target: 'S_RECV_ROAP_OFFER',\n actions: ['incomingRoapOffer'],\n },\n E_SEND_ROAP_OFFER: {\n target: 'S_SEND_ROAP_OFFER',\n actions: ['outgoingRoapOffer'],\n },\n },\n },\n S_RECV_ROAP_OFFER_REQUEST: {\n on: {\n E_SEND_ROAP_OFFER: {\n target: 'S_SEND_ROAP_OFFER',\n actions: ['outgoingRoapOffer'],\n },\n E_ROAP_OK: {\n target: 'S_ROAP_OK',\n actions: ['roapEstablished'],\n },\n E_ROAP_ERROR: {\n target: 'S_ROAP_ERROR',\n actions: ['roapError'],\n },\n },\n },\n S_RECV_ROAP_OFFER: {\n on: {\n E_SEND_ROAP_ANSWER: {\n target: 'S_SEND_ROAP_ANSWER',\n actions: ['outgoingRoapAnswer'],\n },\n E_ROAP_OK: {\n target: 'S_ROAP_OK',\n actions: ['roapEstablished'],\n },\n E_ROAP_ERROR: {\n target: 'S_ROAP_ERROR',\n actions: ['roapError'],\n },\n },\n },\n S_SEND_ROAP_OFFER: {\n on: {\n E_RECV_ROAP_ANSWER: {\n target: 'S_RECV_ROAP_ANSWER',\n actions: ['incomingRoapAnswer'],\n },\n E_SEND_ROAP_ANSWER: {\n target: 'S_SEND_ROAP_ANSWER',\n actions: ['outgoingRoapAnswer'],\n },\n E_SEND_ROAP_OFFER: {\n target: 'S_SEND_ROAP_OFFER',\n actions: ['outgoingRoapOffer'],\n },\n E_ROAP_ERROR: {\n target: 'S_ROAP_ERROR',\n actions: ['roapError'],\n },\n },\n },\n S_RECV_ROAP_ANSWER: {\n on: {\n E_ROAP_OK: {\n target: 'S_ROAP_OK',\n actions: ['roapEstablished'],\n },\n E_ROAP_ERROR: {\n target: 'S_ROAP_ERROR',\n actions: ['roapError'],\n },\n },\n },\n S_SEND_ROAP_ANSWER: {\n on: {\n E_RECV_ROAP_OFFER_REQUEST: {\n target: 'S_RECV_ROAP_OFFER_REQUEST',\n actions: ['incomingRoapOfferRequest'],\n },\n E_RECV_ROAP_OFFER: {\n target: 'S_RECV_ROAP_OFFER',\n actions: ['incomingRoapOffer'],\n },\n E_ROAP_OK: {\n target: 'S_ROAP_OK',\n actions: ['roapEstablished'],\n },\n E_SEND_ROAP_ANSWER: {\n target: 'S_SEND_ROAP_ANSWER',\n actions: ['outgoingRoapAnswer'],\n },\n E_ROAP_ERROR: {\n target: 'S_ROAP_ERROR',\n actions: ['roapError'],\n },\n },\n },\n S_ROAP_OK: {\n on: {\n E_RECV_ROAP_OFFER_REQUEST: {\n target: 'S_RECV_ROAP_OFFER_REQUEST',\n actions: ['incomingRoapOfferRequest'],\n },\n E_RECV_ROAP_OFFER: {\n target: 'S_RECV_ROAP_OFFER',\n actions: ['incomingRoapOffer'],\n },\n E_ROAP_OK: {\n target: 'S_ROAP_OK',\n actions: ['roapEstablished'],\n },\n E_SEND_ROAP_OFFER: {\n target: 'S_SEND_ROAP_OFFER',\n actions: ['outgoingRoapOffer'],\n },\n E_ROAP_ERROR: {\n target: 'S_ROAP_ERROR',\n actions: ['roapError'],\n },\n E_ROAP_TEARDOWN: {\n target: 'S_ROAP_TEARDOWN',\n },\n },\n },\n S_ROAP_ERROR: {\n on: {\n E_ROAP_TEARDOWN: {\n target: 'S_ROAP_TEARDOWN',\n },\n E_RECV_ROAP_OFFER_REQUEST: {\n target: 'S_RECV_ROAP_OFFER_REQUEST',\n actions: ['incomingRoapOfferRequest'],\n },\n E_RECV_ROAP_OFFER: {\n target: 'S_RECV_ROAP_OFFER',\n actions: ['incomingRoapOffer'],\n },\n E_RECV_ROAP_ANSWER: {\n target: 'S_RECV_ROAP_ANSWER',\n actions: ['incomingRoapAnswer'],\n },\n E_ROAP_OK: {\n target: 'S_ROAP_OK',\n actions: ['roapEstablished'],\n },\n },\n },\n S_ROAP_TEARDOWN: {\n type: 'final',\n },\n },\n },\n {\n actions: {\n /**\n * .\n *\n * @param context -.\n * @param event -.\n */\n incomingRoapOffer: (context: MediaContext, event: RoapEvent) =>\n this.handleIncomingRoapOffer(context, event),\n /**\n * .\n *\n * @param context -.\n * @param event -.\n */\n incomingRoapAnswer: (context: MediaContext, event: RoapEvent) =>\n this.handleIncomingRoapAnswer(context, event),\n /**\n * .\n *\n * @param context -.\n * @param event -.\n */\n incomingRoapOfferRequest: (context: MediaContext, event: RoapEvent) =>\n this.handleIncomingRoapOfferRequest(context, event),\n /**\n * .\n *\n * @param context -.\n * @param event -.\n */\n outgoingRoapOffer: (context: MediaContext, event: RoapEvent) =>\n this.handleOutgoingRoapOffer(context, event),\n /**\n * .\n *\n * @param context -.\n * @param event -.\n */\n outgoingRoapAnswer: (context: MediaContext, event: RoapEvent) =>\n this.handleOutgoingRoapAnswer(context, event),\n /**\n * .\n *\n * @param context -.\n * @param event -.\n */\n roapEstablished: (context: MediaContext, event: RoapEvent) =>\n this.handleRoapEstablished(context, event),\n /**\n * .\n *\n * @param context -.\n * @param event -.\n */\n roapError: (context: MediaContext, event: RoapEvent) =>\n this.handleRoapError(context, event),\n },\n }\n );\n\n this.callStateMachine = interpret(callMachine)\n .onTransition((state, event) => {\n log.log(\n `Call StateMachine:- state=${state.value}, event=${JSON.stringify(event.type)}`,\n {}\n );\n if (state.value !== 'S_UNKNOWN') {\n this.metricManager.submitCallMetric(\n METRIC_EVENT.CALL,\n state.value.toString(),\n METRIC_TYPE.BEHAVIORAL,\n this.callId,\n this.correlationId,\n undefined\n );\n }\n })\n .start();\n\n this.mediaStateMachine = interpret(mediaMachine)\n .onTransition((state, event) => {\n log.log(\n `Media StateMachine:- state=${state.value}, event=${JSON.stringify(event.type)}`,\n {}\n );\n if (state.value !== 'S_ROAP_ERROR') {\n this.metricManager.submitMediaMetric(\n METRIC_EVENT.MEDIA,\n state.value.toString(),\n METRIC_TYPE.BEHAVIORAL,\n this.callId,\n this.correlationId,\n this.localRoapMessage.sdp,\n this.remoteRoapMessage?.sdp,\n undefined\n );\n }\n })\n .start();\n this.muted = false;\n }\n\n /**\n * Handle incoming Call setups.\n *\n * @param event - Call Events.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n private handleIncomingCallSetup(event: CallEvent) {\n log.info(`handleIncomingCallSetup: ${this.getCorrelationId()} `, {\n file: CALL_FILE,\n method: this.handleIncomingCallSetup.name,\n });\n\n this.sendCallStateMachineEvt({type: 'E_SEND_CALL_ALERTING'});\n }\n\n /**\n * Handle outgoing Call setups.\n * The handler sends a Post Message to the remote with ROAP body\n * as offer. We also set the callId here based on the response received.\n *\n * @param event - Call Events.\n */\n private async handleOutgoingCallSetup(event: CallEvent) {\n log.info(`handleOutgoingCallSetup: ${this.getCorrelationId()} `, {\n file: CALL_FILE,\n method: this.handleOutgoingCallSetup.name,\n });\n\n const message = event.data as RoapMessage;\n\n try {\n const response = await this.post(message);\n\n log.log(`handleOutgoingCallSetup: Response code: ${response.statusCode}`, {\n file: CALL_FILE,\n method: this.handleOutgoingCallSetup.name,\n });\n this.setCallId(response.body.callId);\n } catch (e) {\n log.warn('Failed to setup the call', {\n file: CALL_FILE,\n method: this.handleOutgoingCallSetup.name,\n });\n const errData = e as MobiusCallResponse;\n\n handleCallErrors(\n (error: CallError) => {\n this.emit(CALL_EVENT_KEYS.CALL_ERROR, error);\n this.submitCallErrorMetric(error);\n this.sendCallStateMachineEvt({type: 'E_UNKNOWN', data: errData});\n },\n ERROR_LAYER.CALL_CONTROL,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n /* istanbul ignore next */ (interval: number) => undefined,\n this.getCorrelationId(),\n errData,\n this.handleOutgoingCallSetup.name,\n CALL_FILE\n );\n }\n }\n\n /**\n * Handle Call Hold.\n *\n * @param event - Call Events.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n private async handleCallHold(event: CallEvent) {\n log.info(`handleCallHold: ${this.getCorrelationId()} `, {\n file: CALL_FILE,\n method: this.handleCallHold.name,\n });\n\n try {\n const response = await this.postSSRequest(undefined, SUPPLEMENTARY_SERVICES.HOLD);\n\n log.log(`Response code: ${response.statusCode}`, {\n file: CALL_FILE,\n method: this.handleCallHold.name,\n });\n\n /*\n * Avoid setting http response timeout if held event is already\n * received from Mobius and forwarded towards calling client\n */\n if (this.isHeld() === false) {\n this.supplementaryServicesTimer = setTimeout(async () => {\n const errorContext = {file: CALL_FILE, method: this.handleCallHold.name};\n\n log.warn('Hold response timed out', {\n file: CALL_FILE,\n method: this.handleCallHold.name,\n });\n\n const callError = createCallError(\n 'An error occurred while placing the call on hold. Wait a moment and try again.',\n errorContext as ErrorContext,\n ERROR_TYPE.TIMEOUT,\n this.getCorrelationId(),\n ERROR_LAYER.CALL_CONTROL\n );\n\n this.emit(CALL_EVENT_KEYS.HOLD_ERROR, callError);\n this.submitCallErrorMetric(callError);\n }, SUPPLEMENTARY_SERVICES_TIMEOUT);\n }\n } catch (e) {\n log.warn('Failed to put the call on hold', {\n file: CALL_FILE,\n method: this.handleCallHold.name,\n });\n const errData = e as MobiusCallResponse;\n\n handleCallErrors(\n (error: CallError) => {\n this.emit(CALL_EVENT_KEYS.HOLD_ERROR, error);\n this.submitCallErrorMetric(error);\n this.sendCallStateMachineEvt({type: 'E_CALL_ESTABLISHED', data: errData});\n },\n ERROR_LAYER.CALL_CONTROL,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n /* istanbul ignore next */ (interval: number) => undefined,\n this.getCorrelationId(),\n errData,\n this.handleOutgoingCallSetup.name,\n CALL_FILE\n );\n }\n }\n\n /**\n * Handle Call Resume.\n *\n * @param event - Call Events.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n private async handleCallResume(event: CallEvent) {\n log.info(`handleCallResume: ${this.getCorrelationId()} `, {\n file: CALL_FILE,\n method: this.handleCallResume.name,\n });\n\n try {\n const response = await this.postSSRequest(undefined, SUPPLEMENTARY_SERVICES.RESUME);\n\n log.log(`Response code: ${response.statusCode}`, {\n file: CALL_FILE,\n method: this.handleCallResume.name,\n });\n\n /*\n * Avoid setting http response timeout if connected event is already\n * received from Mobius on resuming the call and forwarded towards calling client\n */\n if (this.isHeld() === true) {\n this.supplementaryServicesTimer = setTimeout(async () => {\n const errorContext = {file: CALL_FILE, method: this.handleCallResume.name};\n\n log.warn('Resume response timed out', {\n file: CALL_FILE,\n method: this.handleCallResume.name,\n });\n\n const callError = createCallError(\n 'An error occurred while resuming the call. Wait a moment and try again.',\n errorContext as ErrorContext,\n ERROR_TYPE.TIMEOUT,\n this.getCorrelationId(),\n ERROR_LAYER.CALL_CONTROL\n );\n\n this.emit(CALL_EVENT_KEYS.RESUME_ERROR, callError);\n this.submitCallErrorMetric(callError);\n }, SUPPLEMENTARY_SERVICES_TIMEOUT);\n }\n } catch (e) {\n log.warn('Failed to resume the call', {\n file: CALL_FILE,\n method: this.handleCallResume.name,\n });\n const errData = e as MobiusCallResponse;\n\n handleCallErrors(\n (error: CallError) => {\n this.emit(CALL_EVENT_KEYS.RESUME_ERROR, error);\n this.submitCallErrorMetric(error);\n this.sendCallStateMachineEvt({type: 'E_CALL_ESTABLISHED', data: errData});\n },\n ERROR_LAYER.CALL_CONTROL,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n /* istanbul ignore next */ (interval: number) => undefined,\n this.getCorrelationId(),\n errData,\n this.handleOutgoingCallSetup.name,\n CALL_FILE\n );\n }\n }\n\n /**\n * Handle incoming Call Progress.\n *\n * @param event - Call Events.\n */\n private handleIncomingCallProgress(event: CallEvent) {\n log.info(`handleIncomingCallProgress: ${this.getCorrelationId()} `, {\n file: CALL_FILE,\n method: this.handleIncomingCallProgress.name,\n });\n const data = event.data as MobiusCallData;\n\n if (data?.callProgressData?.inbandMedia) {\n log.log('Inband media present. Setting Early Media flag', {\n file: CALL_FILE,\n method: this.handleIncomingCallProgress.name,\n });\n this.earlyMedia = true;\n } else {\n log.log('Inband media not present.', {\n file: CALL_FILE,\n method: this.handleIncomingCallProgress.name,\n });\n }\n\n if (data?.callerId) {\n log.info('Processing Caller-Id data', {\n file: CALL_FILE,\n method: this.handleIncomingCallProgress.name,\n });\n this.startCallerIdResolution(data.callerId);\n }\n this.emit(CALL_EVENT_KEYS.PROGRESS, this.correlationId);\n }\n\n /**\n * Handle incoming Call Progress.\n *\n * @param context\n * @param event - Roap Events.\n */\n private handleIncomingRoapOfferRequest(context: MediaContext, event: RoapEvent) {\n log.info(`handleIncomingRoapOfferRequest: ${this.getCorrelationId()} `, {\n file: CALL_FILE,\n method: this.handleIncomingRoapOfferRequest.name,\n });\n const message = event.data as RoapMessage;\n\n if (!this.mediaConnection) {\n log.info('Media connection is not up, buffer the remote Offer Request for later handling', {\n file: CALL_FILE,\n method: this.handleIncomingRoapOfferRequest.name,\n });\n\n this.seq = message.seq;\n log.info(`Setting Sequence No: ${this.seq}`, {\n file: CALL_FILE,\n method: this.handleIncomingRoapOfferRequest.name,\n });\n\n this.remoteRoapMessage = message;\n } else if (this.receivedRoapOKSeq === message.seq - 2) {\n log.info('Waiting for Roap OK, buffer the remote Offer Request for later handling', {\n file: CALL_FILE,\n method: this.handleIncomingRoapOfferRequest.name,\n });\n\n this.remoteRoapMessage = message;\n } else {\n message.seq = this.seq + 1;\n this.seq = message.seq;\n this.mediaConnection.roapMessageReceived(message);\n }\n }\n\n /**\n * Handle Outgoing Call Progress.\n *\n * @param event - Call Events.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n private async handleOutgoingCallAlerting(event: CallEvent) {\n log.info(`handleOutgoingCallAlerting: ${this.getCorrelationId()} `, {\n file: CALL_FILE,\n method: this.handleOutgoingCallAlerting.name,\n });\n\n try {\n const res = await this.patch(MobiusCallState.ALERTING);\n\n log.log(`PATCH response: ${res.statusCode}`, {\n file: CALL_FILE,\n method: this.handleOutgoingCallAlerting.name,\n });\n } catch (err) {\n log.warn('Failed to signal call progression', {\n file: CALL_FILE,\n method: this.handleOutgoingCallAlerting.name,\n });\n const errData = err as MobiusCallResponse;\n\n handleCallErrors(\n (error: CallError) => {\n this.emit(CALL_EVENT_KEYS.CALL_ERROR, error);\n this.submitCallErrorMetric(error);\n this.sendCallStateMachineEvt({type: 'E_UNKNOWN', data: errData});\n },\n ERROR_LAYER.CALL_CONTROL,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n /* istanbul ignore next */ (interval: number) => undefined,\n this.getCorrelationId(),\n errData,\n this.handleOutgoingCallAlerting.name,\n CALL_FILE\n );\n }\n }\n\n /**\n * Handle incoming Call Connect.\n *\n * @param event - Call Events.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n private handleIncomingCallConnect(event: CallEvent) {\n log.info(`handleIncomingCallConnect: ${this.getCorrelationId()} `, {\n file: CALL_FILE,\n method: this.handleIncomingCallConnect.name,\n });\n this.emit(CALL_EVENT_KEYS.CONNECT, this.correlationId);\n\n /* In case of Early Media , media negotiations would have already started\n * So we can directly go to call established state */\n\n if (this.earlyMedia || this.mediaNegotiationCompleted) {\n this.mediaNegotiationCompleted = false;\n this.sendCallStateMachineEvt({type: 'E_CALL_ESTABLISHED'});\n }\n }\n\n /**\n * Handle outgoing Call Connect.\n *\n * @param event - Call Events.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n private async handleOutgoingCallConnect(event: CallEvent) {\n log.info(`handleOutgoingCallConnect: ${this.getCorrelationId()} `, {\n file: CALL_FILE,\n method: this.handleOutgoingCallConnect.name,\n });\n\n /* We should have received an Offer by now */\n if (!this.remoteRoapMessage) {\n log.warn('Offer not yet received from remote end... Exiting', {\n file: CALL_FILE,\n method: this.handleOutgoingCallConnect.name,\n });\n\n return;\n }\n\n try {\n /* Start Offer/Answer as we might have buffered the offer by now */\n this.mediaConnection.roapMessageReceived(this.remoteRoapMessage);\n\n /* send call_connect PATCH */\n const res = await this.patch(MobiusCallState.CONNECTED);\n\n log.log(`PATCH response: ${res.statusCode}`, {\n file: CALL_FILE,\n method: this.handleOutgoingCallConnect.name,\n });\n } catch (err) {\n log.warn('Failed to connect the call', {\n file: CALL_FILE,\n method: this.handleOutgoingCallConnect.name,\n });\n const errData = err as MobiusCallResponse;\n\n handleCallErrors(\n (error: CallError) => {\n this.emit(CALL_EVENT_KEYS.CALL_ERROR, error);\n this.submitCallErrorMetric(error);\n this.sendCallStateMachineEvt({type: 'E_UNKNOWN', data: errData});\n },\n ERROR_LAYER.CALL_CONTROL,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n /* istanbul ignore next */ (interval: number) => undefined,\n this.getCorrelationId(),\n errData,\n this.handleOutgoingCallConnect.name,\n CALL_FILE\n );\n }\n }\n\n /**\n * Handle incoming Call Disconnect.\n *\n * @param event - Call Events.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n private async handleIncomingCallDisconnect(event: CallEvent) {\n log.info(`handleIncomingCallDisconnect: ${this.getCorrelationId()} `, {\n file: CALL_FILE,\n method: this.handleIncomingCallDisconnect.name,\n });\n\n this.setDisconnectReason();\n\n try {\n const response = await this.delete();\n\n log.log(`handleOutgoingCallDisconnect: Response code: ${response.statusCode}`, {\n file: CALL_FILE,\n method: this.handleIncomingCallDisconnect.name,\n });\n } catch (e) {\n log.warn('Failed to delete the call', {\n file: CALL_FILE,\n method: this.handleIncomingCallDisconnect.name,\n });\n }\n\n this.deleteCb(this.correlationId);\n\n /* Clear the stream listeners */\n this.unregisterListeners();\n\n /* istanbul ignore else */\n if (this.sessionTimer) {\n clearInterval(this.sessionTimer);\n }\n\n /* istanbul ignore else */\n if (this.mediaConnection) {\n this.mediaConnection.close();\n log.info('Closing media channel', {file: CALL_FILE, method: 'handleIncomingCallDisconnect'});\n }\n\n this.sendMediaStateMachineEvt({type: 'E_ROAP_TEARDOWN'});\n this.sendCallStateMachineEvt({type: 'E_CALL_CLEARED'});\n\n this.emit(CALL_EVENT_KEYS.DISCONNECT, this.correlationId);\n }\n\n /**\n * Handle outgoing Call Disconnect.\n *\n * @param event - Call Events.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n private async handleOutgoingCallDisconnect(event: CallEvent) {\n this.setDisconnectReason();\n\n try {\n const response = await this.delete();\n\n log.log(`handleOutgoingCallDisconnect: Response code: ${response.statusCode}`, {\n file: CALL_FILE,\n method: this.handleOutgoingCallDisconnect.name,\n });\n } catch (e) {\n log.warn('Failed to delete the call', {\n file: CALL_FILE,\n method: this.handleOutgoingCallDisconnect.name,\n });\n }\n\n this.deleteCb(this.correlationId);\n\n /* Clear the stream listeners */\n this.unregisterListeners();\n\n /* istanbul ignore else */\n if (this.sessionTimer) {\n clearInterval(this.sessionTimer);\n }\n\n /* istanbul ignore else */\n if (this.mediaConnection) {\n this.mediaConnection.close();\n log.info('Closing media channel', {file: CALL_FILE, method: 'handleOutgoingCallDisconnect'});\n }\n\n this.sendMediaStateMachineEvt({type: 'E_ROAP_TEARDOWN'});\n this.sendCallStateMachineEvt({type: 'E_CALL_CLEARED'});\n }\n\n /**\n * Handle Call Established - Roap related negotiations.\n *\n * @param event - Call Events.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n private handleCallEstablished(event: CallEvent) {\n log.info(`handleCallEstablished: ${this.getCorrelationId()} `, {\n file: CALL_FILE,\n method: this.handleCallEstablished.name,\n });\n\n this.emit(CALL_EVENT_KEYS.ESTABLISHED, this.correlationId);\n\n /* Reset Early dialog parameters */\n this.earlyMedia = false;\n\n this.connected = true;\n\n /* Session timers need to be reset at all offer/answer exchanges */\n if (this.sessionTimer) {\n log.log('Resetting session timer', {\n file: CALL_FILE,\n method: 'handleCallEstablished',\n });\n clearInterval(this.sessionTimer);\n }\n\n this.sessionTimer = setInterval(async () => {\n try {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const res = await this.postStatus();\n\n log.info(`Session refresh successful`, {\n file: CALL_FILE,\n method: 'handleCallEstablished',\n });\n } catch (err: unknown) {\n const error = <WebexRequestPayload>err;\n\n /* We are clearing the timer here as all are error scenarios. Only scenario where\n * timer reset won't be required is 503 with retry after. But that case will\n * be handled automatically as Mobius will also reset timer when we post status\n * in retry-after scenario.\n */\n /* istanbul ignore next */\n if (this.sessionTimer) {\n clearInterval(this.sessionTimer);\n }\n\n handleCallErrors(\n (callError: CallError) => {\n this.emit(CALL_EVENT_KEYS.CALL_ERROR, callError);\n this.submitCallErrorMetric(callError);\n },\n ERROR_LAYER.CALL_CONTROL,\n (interval: number) => {\n setTimeout(() => {\n /* We first post the status and then recursively call the handler which\n * starts the timer again\n */\n this.postStatus();\n this.sendCallStateMachineEvt({type: 'E_CALL_ESTABLISHED'});\n }, interval * 1000);\n },\n this.getCorrelationId(),\n error,\n this.handleCallEstablished.name,\n CALL_FILE\n );\n }\n }, DEFAULT_SESSION_TIMER);\n }\n\n /**\n * Handle Unknown events.\n *\n * @param event - Call Events.\n */\n private async handleUnknownState(event: CallEvent) {\n log.info(`handleUnknownState: ${this.getCorrelationId()} `, {\n file: CALL_FILE,\n method: this.handleUnknownState.name,\n });\n\n /* We are handling errors at the source , in this state we just log and\n * clear the resources\n */\n\n const eventData = event.data as {media: boolean};\n\n if (!eventData?.media) {\n log.warn('Call failed due to signalling issue', {\n file: CALL_FILE,\n method: this.handleUnknownState.name,\n });\n }\n\n /* We need to clear the call at Mobius too. For delete failure\n * error handling is not required\n */\n\n try {\n this.setDisconnectReason();\n const response = await this.delete();\n\n log.log(`handleOutgoingCallDisconnect: Response code: ${response.statusCode}`, {\n file: CALL_FILE,\n method: this.handleUnknownState.name,\n });\n } catch (e) {\n log.warn('Failed to delete the call', {\n file: CALL_FILE,\n method: this.handleUnknownState.name,\n });\n }\n\n this.deleteCb(this.correlationId);\n\n if (this.sessionTimer) {\n clearInterval(this.sessionTimer);\n }\n\n if (this.mediaConnection) {\n this.mediaConnection.close();\n log.info('Closing media channel', {\n file: CALL_FILE,\n method: this.handleUnknownState.name,\n });\n }\n this.sendMediaStateMachineEvt({type: 'E_ROAP_TEARDOWN'});\n this.sendCallStateMachineEvt({type: 'E_CALL_CLEARED'});\n }\n\n /**\n * Returns an error emitter callback method for handleCallErrors which can be used during\n * midcall and call setup scenarios.\n * Emits Call errors for UI Client\n * Sends call error metrics\n * Handles further state machine changes.\n *\n * @param errData - Instance of CallError.\n */\n private getEmitterCallback(errData: MobiusCallResponse) {\n return (error: CallError) => {\n switch (this.callStateMachine.state.value) {\n case 'S_CALL_HOLD':\n this.emit(CALL_EVENT_KEYS.HOLD_ERROR, error);\n if (this.supplementaryServicesTimer) {\n clearTimeout(this.supplementaryServicesTimer);\n this.supplementaryServicesTimer = undefined;\n }\n this.submitCallErrorMetric(error);\n this.sendCallStateMachineEvt({type: 'E_CALL_ESTABLISHED', data: errData});\n\n return;\n case 'S_CALL_RESUME':\n this.emit(CALL_EVENT_KEYS.RESUME_ERROR, error);\n this.submitCallErrorMetric(error);\n this.sendCallStateMachineEvt({type: 'E_CALL_ESTABLISHED', data: errData});\n\n return;\n default:\n this.emit(CALL_EVENT_KEYS.CALL_ERROR, error);\n this.submitCallErrorMetric(error);\n /* Disconnect call if it's not a midcall case */\n /* istanbul ignore else */\n if (!this.connected) {\n this.sendMediaStateMachineEvt({type: 'E_ROAP_ERROR', data: errData});\n }\n }\n };\n }\n\n /**\n * Handle Roap Established events.\n *\n * For outbound MediaOk , the message will be truthy as we need to send ROAP OK .\n * For inbound MediaOK , we report it to Media-SDK and transition our state.\n * Both the cases should transition to Call Established state.\n *\n * @param context -.\n * @param event - Roap Events.\n */\n private async handleRoapEstablished(context: MediaContext, event: RoapEvent) {\n log.info(`handleRoapEstablished: ${this.getCorrelationId()} `, {\n file: CALL_FILE,\n method: 'handleRoapEstablished',\n });\n\n const {received, message} = event.data as {received: boolean; message: RoapMessage};\n\n this.receivedRoapOKSeq = message.seq;\n\n if (!received) {\n log.info('Sending Media Ok to the remote End', {\n file: CALL_FILE,\n method: 'handleRoapEstablished',\n });\n\n try {\n if (\n this.callStateMachine.state.value === 'S_RECV_CALL_PROGRESS' ||\n this.callStateMachine.state.value === 'S_SEND_CALL_SETUP'\n ) {\n log.info(\n 'Media negotiation completed before call connect. Setting media negotiation completed flag.',\n {\n file: CALL_FILE,\n method: 'handleRoapEstablished',\n }\n );\n this.mediaNegotiationCompleted = true;\n }\n message.seq = this.seq;\n const res = await this.postMedia(message);\n\n log.log(`handleRoapEstablished: Response code: ${res.statusCode}`, {\n file: CALL_FILE,\n method: 'handleRoapEstablished',\n });\n /* istanbul ignore else */\n if (!this.earlyMedia && !this.mediaNegotiationCompleted) {\n this.sendCallStateMachineEvt({type: 'E_CALL_ESTABLISHED'});\n }\n } catch (err) {\n log.warn('Failed to process MediaOk request', {\n file: CALL_FILE,\n method: 'handleRoapEstablished',\n });\n const errData = err as MobiusCallResponse;\n\n handleCallErrors(\n this.getEmitterCallback(errData),\n ERROR_LAYER.MEDIA,\n (interval: number) => {\n /* Start retry if only it is a midcall case */\n /* istanbul ignore else */\n if (this.connected) {\n setTimeout(() => {\n this.sendMediaStateMachineEvt({type: 'E_ROAP_OK', data: event.data});\n }, interval * 1000);\n }\n },\n this.getCorrelationId(),\n errData,\n this.handleRoapEstablished.name,\n CALL_FILE\n );\n }\n } else {\n log.info('Notifying internal-media-core about ROAP OK message', {\n file: CALL_FILE,\n method: 'handleRoapEstablished',\n });\n message.seq = this.seq;\n\n /* istanbul ignore else */\n if (this.mediaConnection) {\n this.mediaConnection.roapMessageReceived(message);\n }\n /* istanbul ignore else */\n if (!this.earlyMedia) {\n this.sendCallStateMachineEvt({type: 'E_CALL_ESTABLISHED'});\n }\n\n if (this.remoteRoapMessage && this.remoteRoapMessage.seq > this.seq) {\n if (this.remoteRoapMessage.messageType === 'OFFER_REQUEST') {\n this.sendMediaStateMachineEvt({\n type: 'E_RECV_ROAP_OFFER_REQUEST',\n data: this.remoteRoapMessage,\n });\n } else if (this.remoteRoapMessage.messageType === 'OFFER') {\n this.sendMediaStateMachineEvt({type: 'E_RECV_ROAP_OFFER', data: this.remoteRoapMessage});\n }\n }\n }\n }\n\n /**\n * Handle Roap Error events.\n *\n * @param context\n * @param event - Roap Events.\n */\n private async handleRoapError(context: MediaContext, event: RoapEvent) {\n log.info(`handleRoapError: ${this.getCorrelationId()}`, {\n file: CALL_FILE,\n method: this.handleRoapError.name,\n });\n\n /* if we receive ROAP_ERROR from internal-media-core , we post it to Mobius */\n\n const message = event.data as RoapMessage;\n\n /* istanbul ignore else */\n if (message) {\n try {\n const res = await this.postMedia(message);\n\n log.info(`Response code: ${res.statusCode}`, {\n file: CALL_FILE,\n method: this.handleRoapError.name,\n });\n } catch (err) {\n log.warn('Failed to communicate ROAP error to Webex Calling', {\n file: CALL_FILE,\n method: this.handleRoapError.name,\n });\n const errData = err as MobiusCallResponse;\n\n handleCallErrors(\n (error: CallError) => {\n this.emit(CALL_EVENT_KEYS.CALL_ERROR, error);\n this.submitCallErrorMetric(error);\n },\n ERROR_LAYER.MEDIA,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n /* istanbul ignore next */ (interval: number) => undefined,\n this.getCorrelationId(),\n errData,\n this.handleRoapError.name,\n CALL_FILE\n );\n }\n }\n\n /* Only disconnect calls that are not yet connected yet */\n\n if (!this.connected) {\n log.warn('Call failed due to media issue', {\n file: CALL_FILE,\n method: 'handleRoapError',\n });\n\n this.sendCallStateMachineEvt({type: 'E_UNKNOWN', data: {media: true}});\n }\n }\n\n /**\n * Handle Outgoing Roap Offer events.\n *\n * @param context\n * @param event - Roap Events.\n */\n private async handleOutgoingRoapOffer(context: MediaContext, event: RoapEvent) {\n log.info(`handleOutgoingRoapOffer: ${this.getCorrelationId()}`, {\n file: CALL_FILE,\n method: this.handleOutgoingRoapOffer.name,\n });\n\n const message = event.data as RoapMessage;\n\n if (!message?.sdp) {\n log.info('Initializing Offer...', {\n file: CALL_FILE,\n method: this.handleOutgoingRoapOffer.name,\n });\n this.mediaConnection.initiateOffer();\n\n return;\n }\n\n /* If we are here , that means we have a message to send.. */\n\n try {\n const res = await this.postMedia(message);\n\n log.log(`handleOutgoingRoapOffer: Response code: ${res.statusCode}`, {\n file: CALL_FILE,\n method: this.handleOutgoingRoapOffer.name,\n });\n } catch (err) {\n log.warn('Failed to process MediaOk request', {\n file: CALL_FILE,\n method: this.handleOutgoingRoapOffer.name,\n });\n const errData = err as MobiusCallResponse;\n\n handleCallErrors(\n this.getEmitterCallback(errData),\n ERROR_LAYER.MEDIA,\n (interval: number) => {\n /* Start retry if only it is a midcall case */\n if (this.connected) {\n setTimeout(() => {\n this.sendMediaStateMachineEvt({type: 'E_SEND_ROAP_OFFER', data: event.data});\n }, interval * 1000);\n }\n },\n this.getCorrelationId(),\n errData,\n this.handleOutgoingRoapOffer.name,\n CALL_FILE\n );\n }\n }\n\n /**\n * Handle Outgoing Roap Answer events.\n *\n * @param context\n * @param event - Roap Events.\n */\n private async handleOutgoingRoapAnswer(context: MediaContext, event: RoapEvent) {\n log.info(`handleOutgoingRoapAnswer: ${this.getCorrelationId()}`, {\n file: CALL_FILE,\n method: this.handleOutgoingRoapAnswer.name,\n });\n\n const message = event.data as RoapMessage;\n\n try {\n message.seq = this.seq;\n const res = await this.postMedia(message);\n\n log.log(`handleOutgoingRoapAnswer: Response code: ${res.statusCode}`, {\n file: CALL_FILE,\n method: this.handleOutgoingRoapAnswer.name,\n });\n } catch (err) {\n log.warn('Failed to send MediaAnswer request', {\n file: CALL_FILE,\n method: this.handleOutgoingRoapAnswer.name,\n });\n const errData = err as MobiusCallResponse;\n\n handleCallErrors(\n this.getEmitterCallback(errData),\n ERROR_LAYER.MEDIA,\n (interval: number) => {\n /* Start retry if only it is a midcall case */\n if (this.connected) {\n setTimeout(() => {\n this.sendMediaStateMachineEvt({type: 'E_SEND_ROAP_ANSWER', data: event.data});\n }, interval * 1000);\n }\n },\n this.getCorrelationId(),\n errData,\n this.handleOutgoingRoapAnswer.name,\n CALL_FILE\n );\n }\n }\n\n /**\n * Handle Incoming Roap Offer events.\n *\n * @param context\n * @param event - Roap Events.\n */\n private handleIncomingRoapOffer(context: MediaContext, event: RoapEvent) {\n log.info(`handleIncomingRoapOffer: ${this.getCorrelationId()}`, {\n file: CALL_FILE,\n method: this.handleIncomingRoapOffer.name,\n });\n\n const message = event.data as RoapMessage;\n\n this.remoteRoapMessage = message;\n if (!this.mediaConnection) {\n log.info('Media connection is not up, buffer the remote offer for later handling', {\n file: CALL_FILE,\n method: this.handleIncomingRoapOffer.name,\n });\n this.seq = message.seq;\n log.info(`Setting Sequence No: ${this.seq}`, {\n file: CALL_FILE,\n method: this.handleIncomingRoapOffer.name,\n });\n } else if (this.receivedRoapOKSeq === message.seq - 2) {\n log.info('Waiting for Roap OK, buffer the remote offer for later handling', {\n file: CALL_FILE,\n method: this.handleIncomingRoapOffer.name,\n });\n\n this.remoteRoapMessage = message;\n } else {\n log.info('Handling new offer...', {\n file: CALL_FILE,\n method: this.handleIncomingRoapOffer.name,\n });\n this.seq = message.seq;\n /* istanbul ignore else */\n if (this.mediaConnection) {\n this.mediaConnection.roapMessageReceived(message);\n }\n }\n }\n\n /**\n * Handle Incoming Roap Answer events.\n *\n * @param context\n * @param event - Roap Events.\n */\n private handleIncomingRoapAnswer(context: MediaContext, event: RoapEvent) {\n log.info(`handleIncomingRoapAnswer: ${this.getCorrelationId()}`, {\n file: CALL_FILE,\n method: this.handleIncomingRoapAnswer.name,\n });\n const message = event.data as RoapMessage;\n\n this.remoteRoapMessage = message;\n message.seq = this.seq;\n /* istanbul ignore else */\n if (this.mediaConnection) {\n this.mediaConnection.roapMessageReceived(message);\n }\n }\n\n /* istanbul ignore next */\n /**\n * Initialize Media Connection.\n *\n * @param settings -.\n * @param settings.localAudioTrack - MediaStreamTrack.\n * @param settings.debugId - String.\n */\n private initMediaConnection(localAudioTrack: MediaStreamTrack, debugId?: string) {\n const mediaConnection = new RoapMediaConnection(\n {\n skipInactiveTransceivers: true,\n iceServers: [],\n sdpMunging: {\n convertPort9to0: true,\n addContentSlides: false,\n },\n },\n {\n localTracks: {audio: localAudioTrack},\n direction: {\n audio: 'sendrecv',\n video: 'inactive',\n screenShareVideo: 'inactive',\n },\n },\n debugId || `WebexCallSDK-${this.correlationId}`\n );\n\n this.mediaConnection = mediaConnection;\n }\n\n /**\n *\n */\n public getDirection = (): CallDirection => this.direction;\n\n /**\n *\n */\n public getCallId = (): CallId => this.callId;\n\n /**\n *\n */\n public getCorrelationId = (): CorrelationId => this.correlationId;\n\n /**\n * .\n *\n * @param event -.\n */\n public sendCallStateMachineEvt(event: CallEvent) {\n this.callStateMachine.send(event);\n }\n\n /**\n * .\n *\n * @param event -.\n */\n public sendMediaStateMachineEvt(event: RoapEvent) {\n this.mediaStateMachine.send(event);\n }\n\n /**\n * @param callId -.\n */\n public setCallId = (callId: CallId) => {\n this.callId = callId;\n log.info(`Setting callId : ${this.callId} for correlationId: ${this.correlationId}`, {\n file: CALL_FILE,\n method: this.setCallId.name,\n });\n };\n\n /**\n * Sets the Disconnect reason.\n *\n */\n private setDisconnectReason() {\n if (this.mediaInactivity) {\n this.disconnectReason.code = DisconnectCode.MEDIA_INACTIVITY;\n this.disconnectReason.cause = DisconnectCause.MEDIA_INACTIVITY;\n } else if (this.connected || this.direction === CallDirection.OUTBOUND) {\n this.disconnectReason.code = DisconnectCode.NORMAL;\n this.disconnectReason.cause = DisconnectCause.NORMAL;\n } else {\n this.disconnectReason.code = DisconnectCode.BUSY;\n this.disconnectReason.cause = DisconnectCause.BUSY;\n }\n }\n\n /**\n * Gets the disconnection reason.\n *\n * @returns Reason.\n */\n public getDisconnectReason = (): DisconnectReason => {\n return this.disconnectReason;\n };\n\n /**\n * Answers the call with the provided local audio stream.\n *\n * @param localAudioStream - The local audio stream for the call.\n */\n public async answer(localAudioStream: LocalMicrophoneStream) {\n this.localAudioStream = localAudioStream;\n const localAudioTrack = localAudioStream.outputStream.getAudioTracks()[0];\n\n if (!localAudioTrack) {\n log.warn(`Did not find a local track while answering the call ${this.getCorrelationId()}`, {\n file: CALL_FILE,\n method: 'answer',\n });\n this.mediaInactivity = true;\n this.sendCallStateMachineEvt({type: 'E_SEND_CALL_DISCONNECT'});\n\n return;\n }\n\n localAudioTrack.enabled = true;\n\n if (!this.mediaConnection) {\n this.initMediaConnection(localAudioTrack);\n this.mediaRoapEventsListener();\n this.mediaTrackListener();\n this.registerListeners(localAudioStream);\n }\n\n if (this.callStateMachine.state.value === 'S_SEND_CALL_PROGRESS') {\n this.sendCallStateMachineEvt({type: 'E_SEND_CALL_CONNECT'});\n } else {\n log.warn(\n `Call cannot be answered because the state is : ${this.callStateMachine.state.value}`,\n {file: CALL_FILE, method: 'answer'}\n );\n }\n }\n\n /**\n * @param settings\n * @param settings.localAudioTrack\n */\n public async dial(localAudioStream: LocalMicrophoneStream) {\n this.localAudioStream = localAudioStream;\n const localAudioTrack = localAudioStream.outputStream.getAudioTracks()[0];\n\n if (!localAudioTrack) {\n log.warn(`Did not find a local track while dialing the call ${this.getCorrelationId()}`, {\n file: CALL_FILE,\n method: 'dial',\n });\n\n this.deleteCb(this.getCorrelationId());\n this.emit(CALL_EVENT_KEYS.DISCONNECT, this.getCorrelationId());\n\n return;\n }\n localAudioTrack.enabled = true;\n\n if (!this.mediaConnection) {\n this.initMediaConnection(localAudioTrack);\n this.mediaRoapEventsListener();\n this.mediaTrackListener();\n this.registerListeners(localAudioStream);\n }\n\n if (this.mediaStateMachine.state.value === 'S_ROAP_IDLE') {\n this.sendMediaStateMachineEvt({type: 'E_SEND_ROAP_OFFER'});\n } else {\n log.warn(\n `Call cannot be dialed because the state is already : ${this.mediaStateMachine.state.value}`,\n {file: CALL_FILE, method: 'dial'}\n );\n }\n }\n\n /**\n * .\n *\n * @param roapMessage\n */\n private post = async (roapMessage: RoapMessage): Promise<MobiusCallResponse> => {\n return this.webex.request({\n uri: `${this.mobiusUrl}${DEVICES_ENDPOINT_RESOURCE}/${this.deviceId}/${CALL_ENDPOINT_RESOURCE}`,\n method: HTTP_METHODS.POST,\n service: ALLOWED_SERVICES.MOBIUS,\n headers: {\n [CISCO_DEVICE_URL]: this.webex.internal.device.url,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n body: {\n device: {\n deviceId: this.deviceId,\n correlationId: this.correlationId,\n },\n callee: {\n type: this.destination.type,\n address: this.destination.address,\n },\n localMedia: {\n roap: roapMessage,\n mediaId: uuid(),\n },\n },\n });\n };\n\n /**\n * .\n *\n * @param state -.\n */\n private async patch(state: MobiusCallState): Promise<PatchResponse> {\n log.info(`Send a PATCH for ${state} to Webex Calling`, {\n file: CALL_FILE,\n method: this.patch.name,\n });\n\n return this.webex.request({\n // Sample uri: http://localhost/api/v1/calling/web/devices/{deviceid}/calls/{callid}\n\n uri: `${this.mobiusUrl}${DEVICES_ENDPOINT_RESOURCE}/${this.deviceId}/${CALLS_ENDPOINT_RESOURCE}/${this.callId}`,\n method: HTTP_METHODS.PATCH,\n service: ALLOWED_SERVICES.MOBIUS,\n headers: {\n [CISCO_DEVICE_URL]: this.webex.internal.device.url,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n body: {\n device: {\n deviceId: this.deviceId,\n correlationId: this.correlationId,\n },\n callId: this.callId,\n callState: state,\n inbandMedia: false, // setting false for now\n },\n });\n }\n\n /**\n * Sends Supplementary request to Mobius.\n *\n * @param context - Context information related to a particular supplementary service.\n * @param type - Type of Supplementary service.\n */\n public async postSSRequest(context: unknown, type: SUPPLEMENTARY_SERVICES): Promise<SSResponse> {\n const request = {\n uri: `${this.mobiusUrl}${SERVICES_ENDPOINT}`,\n method: HTTP_METHODS.POST,\n service: ALLOWED_SERVICES.MOBIUS,\n headers: {\n [CISCO_DEVICE_URL]: this.webex.internal.device.url,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n body: {\n device: {\n deviceId: this.deviceId,\n correlationId: this.correlationId,\n },\n callId: this.callId,\n },\n };\n\n switch (type) {\n case SUPPLEMENTARY_SERVICES.HOLD: {\n request.uri = `${request.uri}/${CALL_HOLD_SERVICE}/${HOLD_ENDPOINT}`;\n break;\n }\n case SUPPLEMENTARY_SERVICES.RESUME: {\n request.uri = `${request.uri}/${CALL_HOLD_SERVICE}/${RESUME_ENDPOINT}`;\n break;\n }\n case SUPPLEMENTARY_SERVICES.TRANSFER: {\n request.uri = `${request.uri}/${CALL_TRANSFER_SERVICE}/${TRANSFER_ENDPOINT}`;\n const transferContext = context as TransferContext;\n\n if (transferContext.destination) {\n Object.assign(request.body, {blindTransferContext: transferContext});\n Object.assign(request.body, {transferType: TransferType.BLIND});\n } /* istanbul ignore else */ else if (transferContext.transferToCallId) {\n Object.assign(request.body, {consultTransferContext: transferContext});\n Object.assign(request.body, {transferType: TransferType.CONSULT});\n }\n break;\n }\n default: {\n log.warn(`Unknown type for PUT request: ${type}`, {\n file: CALL_FILE,\n method: this.postSSRequest.name,\n });\n }\n }\n\n return this.webex.request(request);\n }\n\n /**\n * Sends Call status to Mobius.\n */\n public async postStatus(): Promise<WebexRequestPayload> {\n return this.webex.request({\n uri: `${this.mobiusUrl}${DEVICES_ENDPOINT_RESOURCE}/${this.deviceId}/${CALLS_ENDPOINT_RESOURCE}/${this.callId}/${CALL_STATUS_RESOURCE}`,\n method: HTTP_METHODS.POST,\n service: ALLOWED_SERVICES.MOBIUS,\n headers: {\n [CISCO_DEVICE_URL]: this.webex.internal.device.url,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n body: {\n device: {\n deviceId: this.deviceId,\n correlationId: this.correlationId,\n },\n callId: this.callId,\n },\n });\n }\n\n /**\n * This function is called when user attempts to complete transfer(Blind or Consult)\n * It checks if we have a valid transferCallId or transfer target and transfer type.\n *\n * @param transferType - Transfer type.\n * @param transferCallId - Call Id where the current call will be merged for consult transfers.\n * @param transferTarget - Destination for blind transfer.\n */\n public async completeTransfer(\n transferType: TransferType,\n transferCallId?: CallId,\n transferTarget?: string\n ) {\n if (transferType === TransferType.BLIND && transferTarget) {\n /* blind transfer */\n\n log.info(`Initiating Blind transfer with : ${transferTarget}`, {\n file: CALL_FILE,\n method: this.completeTransfer.name,\n });\n\n const context: TransferContext = {\n transferorCallId: this.getCallId(),\n destination: transferTarget,\n };\n\n try {\n await this.postSSRequest(context, SUPPLEMENTARY_SERVICES.TRANSFER);\n this.metricManager.submitCallMetric(\n METRIC_EVENT.CALL,\n TRANSFER_ACTION.BLIND,\n METRIC_TYPE.BEHAVIORAL,\n this.getCallId(),\n this.getCorrelationId(),\n undefined\n );\n } catch (e) {\n log.warn(`Blind Transfer failed for correlationId ${this.getCorrelationId()}`, {\n file: CALL_FILE,\n method: this.completeTransfer.name,\n });\n\n const errData = e as MobiusCallResponse;\n\n handleCallErrors(\n (error: CallError) => {\n this.emit(CALL_EVENT_KEYS.TRANSFER_ERROR, error);\n this.submitCallErrorMetric(error, TRANSFER_ACTION.BLIND);\n },\n ERROR_LAYER.CALL_CONTROL,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n /* istanbul ignore next */ (interval: number) => undefined,\n this.getCorrelationId(),\n errData,\n this.completeTransfer.name,\n CALL_FILE\n );\n }\n } else if (transferType === TransferType.CONSULT && transferCallId) {\n /* Consult transfer */\n\n log.info(`Initiating Consult transfer between : ${this.callId} and ${transferCallId}`, {\n file: CALL_FILE,\n method: this.completeTransfer.name,\n });\n\n const context: TransferContext = {\n transferorCallId: this.getCallId(),\n transferToCallId: transferCallId,\n };\n\n try {\n await this.postSSRequest(context, SUPPLEMENTARY_SERVICES.TRANSFER);\n this.metricManager.submitCallMetric(\n METRIC_EVENT.CALL,\n TRANSFER_ACTION.CONSULT,\n METRIC_TYPE.BEHAVIORAL,\n this.getCallId(),\n this.getCorrelationId(),\n undefined\n );\n } catch (e) {\n log.warn(`Consult Transfer failed for correlationId ${this.getCorrelationId()}`, {\n file: CALL_FILE,\n method: this.completeTransfer.name,\n });\n\n const errData = e as MobiusCallResponse;\n\n handleCallErrors(\n (error: CallError) => {\n this.emit(CALL_EVENT_KEYS.TRANSFER_ERROR, error);\n this.submitCallErrorMetric(error, TRANSFER_ACTION.CONSULT);\n },\n ERROR_LAYER.CALL_CONTROL,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n /* istanbul ignore next */ (interval: number) => undefined,\n this.getCorrelationId(),\n errData,\n this.completeTransfer.name,\n CALL_FILE\n );\n }\n } else {\n log.warn(\n `Invalid information received, transfer failed for correlationId: ${this.getCorrelationId()}`,\n {\n file: CALL_FILE,\n method: this.completeTransfer.name,\n }\n );\n }\n }\n\n /**\n *\n */\n private async getCallStats(): Promise<CallRtpStats> {\n let stats!: RTCStatsReport;\n\n try {\n stats = await this.mediaConnection.getStats();\n } catch (err) {\n log.warn('Stats collection failed, using dummy stats', {\n file: CALL_FILE,\n method: this.getCallStats.name,\n });\n }\n\n return parseMediaQualityStatistics(stats);\n }\n\n /**\n * .\n *\n * @param roapMessage -.\n */\n private async postMedia(roapMessage: RoapMessage): Promise<WebexRequestPayload> {\n log.log('Posting message to Webex Calling', {\n file: CALL_FILE,\n method: this.postMedia.name,\n });\n\n return this.webex.request({\n uri: `${this.mobiusUrl}${DEVICES_ENDPOINT_RESOURCE}/${this.deviceId}/${CALLS_ENDPOINT_RESOURCE}/${this.callId}/${MEDIA_ENDPOINT_RESOURCE}`,\n method: HTTP_METHODS.POST,\n service: ALLOWED_SERVICES.MOBIUS,\n headers: {\n [CISCO_DEVICE_URL]: this.webex.internal.device.url,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n body: {\n device: {\n deviceId: this.deviceId,\n correlationId: this.correlationId,\n },\n callId: this.callId,\n localMedia: {\n roap: roapMessage,\n mediaId: uuid(),\n },\n },\n });\n }\n\n /* istanbul ignore next */\n /**\n * Setup a listener for roap events emitted by the media sdk.\n */\n private mediaRoapEventsListener() {\n this.mediaConnection.on(\n Event.ROAP_MESSAGE_TO_SEND,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n async (event: any) => {\n log.info(\n `ROAP message to send (rcv from MEDIA-SDK) :\n \\n type: ${event.roapMessage?.messageType}, seq: ${event.roapMessage.seq} , version: ${event.roapMessage.version}`,\n {}\n );\n\n log.info(`SDP message to send : \\n ${event.roapMessage?.sdp}`, {\n file: CALL_FILE,\n method: this.mediaRoapEventsListener.name,\n });\n switch (event.roapMessage.messageType) {\n case RoapScenario.OK: {\n const mediaOk = {\n received: false,\n message: event.roapMessage,\n };\n\n this.sendMediaStateMachineEvt({type: 'E_ROAP_OK', data: mediaOk});\n break;\n }\n\n case RoapScenario.OFFER: {\n // TODO: Remove these after the Media-Core adds the fix\n const sdpVideoPortZero = event.roapMessage.sdp.replace(\n /^m=(video) (?:\\d+) /gim,\n 'm=$1 0 '\n );\n\n event.roapMessage.sdp = sdpVideoPortZero;\n this.localRoapMessage = event.roapMessage;\n this.sendCallStateMachineEvt({type: 'E_SEND_CALL_SETUP', data: event.roapMessage});\n break;\n }\n\n case RoapScenario.ANSWER:\n this.localRoapMessage = event.roapMessage;\n this.sendMediaStateMachineEvt({type: 'E_SEND_ROAP_ANSWER', data: event.roapMessage});\n break;\n\n case RoapScenario.ERROR:\n this.sendMediaStateMachineEvt({type: 'E_ROAP_ERROR', data: event.roapMessage});\n break;\n\n case RoapScenario.OFFER_RESPONSE:\n this.localRoapMessage = event.roapMessage;\n this.sendMediaStateMachineEvt({type: 'E_SEND_ROAP_OFFER', data: event.roapMessage});\n break;\n\n default:\n }\n }\n );\n }\n\n /* istanbul ignore next */\n /**\n * Setup a listener for remote track added event emitted by the media sdk.\n */\n private mediaTrackListener() {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.mediaConnection.on(Event.REMOTE_TRACK_ADDED, (e: any) => {\n if (e.type === MEDIA_CONNECTION_EVENT_KEYS.MEDIA_TYPE_AUDIO) {\n this.emit(CALL_EVENT_KEYS.REMOTE_MEDIA, e.track);\n }\n });\n }\n\n private onEffectEnabled = () => {\n this.metricManager.submitBNRMetric(\n METRIC_EVENT.BNR_ENABLED,\n METRIC_TYPE.BEHAVIORAL,\n this.callId,\n this.correlationId\n );\n };\n\n private onEffectDisabled = () => {\n this.metricManager.submitBNRMetric(\n METRIC_EVENT.BNR_DISABLED,\n METRIC_TYPE.BEHAVIORAL,\n this.callId,\n this.correlationId\n );\n };\n\n private registerEffectListener = (addedEffect: TrackEffect) => {\n if (this.localAudioStream) {\n const effect = this.localAudioStream.getEffectByKind(NOISE_REDUCTION_EFFECT);\n\n if (effect === addedEffect) {\n effect.on(EffectEvent.Enabled, this.onEffectEnabled);\n effect.on(EffectEvent.Disabled, this.onEffectDisabled);\n }\n }\n };\n\n private unregisterListeners() {\n if (this.localAudioStream) {\n const effect = this.localAudioStream.getEffectByKind(NOISE_REDUCTION_EFFECT);\n\n if (effect) {\n effect.off(EffectEvent.Enabled, this.onEffectEnabled);\n effect.off(EffectEvent.Disabled, this.onEffectDisabled);\n }\n\n this.localAudioStream.off(LocalStreamEventNames.EffectAdded, this.registerEffectListener);\n }\n }\n\n private registerListeners(localAudioStream: LocalMicrophoneStream) {\n localAudioStream.on(LocalStreamEventNames.OutputTrackChange, (audioTrack: MediaStreamTrack) => {\n this.mediaConnection.updateLocalTracks({audio: audioTrack});\n });\n\n localAudioStream.on(LocalStreamEventNames.EffectAdded, this.registerEffectListener);\n\n const effect = localAudioStream.getEffectByKind(NOISE_REDUCTION_EFFECT) as any;\n\n if (effect) {\n effect.on(EffectEvent.Enabled, this.onEffectEnabled);\n effect.on(EffectEvent.Disabled, this.onEffectDisabled);\n if (effect.isEnabled) {\n this.onEffectEnabled();\n }\n }\n }\n\n private async delete(): Promise<MobiusCallResponse> {\n const disconnectMetrics = await this.getCallStats();\n\n return this.webex.request({\n uri: `${this.mobiusUrl}${DEVICES_ENDPOINT_RESOURCE}/${this.deviceId}/${CALLS_ENDPOINT_RESOURCE}/${this.callId}`,\n method: HTTP_METHODS.DELETE,\n service: ALLOWED_SERVICES.MOBIUS,\n headers: {\n [CISCO_DEVICE_URL]: this.webex.internal.device.url,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n body: {\n device: {\n deviceId: this.deviceId,\n correlationId: this.correlationId,\n },\n callId: this.callId,\n metrics: disconnectMetrics,\n causecode: this.disconnectReason.code,\n cause: this.disconnectReason.cause,\n },\n });\n }\n\n /**\n * @param state - Current state of the call state machine.\n * @param error - Error object containing the message and type.\n * @param transferMetricAction - Metric action type incase of a transfer metric.\n */\n private submitCallErrorMetric(error: CallError, transferMetricAction?: TRANSFER_ACTION) {\n if (error.getCallError().errorLayer === ERROR_LAYER.CALL_CONTROL) {\n this.metricManager.submitCallMetric(\n METRIC_EVENT.CALL_ERROR,\n transferMetricAction || this.callStateMachine.state.value.toString(),\n METRIC_TYPE.BEHAVIORAL,\n this.callId,\n this.correlationId,\n error\n );\n } else {\n this.metricManager.submitMediaMetric(\n METRIC_EVENT.MEDIA_ERROR,\n this.mediaStateMachine.state.value.toString(),\n METRIC_TYPE.BEHAVIORAL,\n this.callId,\n this.correlationId,\n this.localRoapMessage.sdp,\n this.remoteRoapMessage?.sdp,\n error\n );\n }\n }\n\n /**\n * Handler for mid call events.\n *\n * @param event - Midcall Events from Mobius.\n */\n public handleMidCallEvent(event: MidCallEvent) {\n const {eventType, eventData} = event;\n\n switch (eventType) {\n case MidCallEventType.CALL_INFO: {\n log.log(`Received Midcall CallInfo Event for correlationId : ${this.correlationId}`, {\n file: CALL_FILE,\n method: 'handleMidCallEvent',\n });\n\n const callerData = eventData as MidCallCallerId;\n\n this.startCallerIdResolution(callerData.callerId);\n\n break;\n }\n\n case MidCallEventType.CALL_STATE: {\n log.log(`Received Midcall call event for correlationId : ${this.correlationId}`, {\n file: CALL_FILE,\n method: 'handleMidCallEvent',\n });\n\n const data = eventData as SupplementaryServiceState;\n\n /* Emit Events as per the state.\n * We will enter this state only when media negotiation is done\n * So, it's safe to emit events from here.\n */\n\n switch (data.callState) {\n case MOBIUS_MIDCALL_STATE.HELD: {\n log.log(`Call is successfully held : ${this.correlationId}`, {\n file: CALL_FILE,\n method: 'handleMidCallEvent',\n });\n\n this.emit(CALL_EVENT_KEYS.HELD, this.correlationId);\n\n this.held = true;\n\n if (this.supplementaryServicesTimer) {\n clearTimeout(this.supplementaryServicesTimer);\n this.supplementaryServicesTimer = undefined;\n }\n\n break;\n }\n\n case MOBIUS_MIDCALL_STATE.CONNECTED: {\n log.log(`Call is successfully resumed : ${this.correlationId}`, {\n file: CALL_FILE,\n method: 'handleMidCallEvent',\n });\n\n this.emit(CALL_EVENT_KEYS.RESUMED, this.correlationId);\n\n this.held = false;\n\n if (this.supplementaryServicesTimer) {\n clearTimeout(this.supplementaryServicesTimer);\n this.supplementaryServicesTimer = undefined;\n }\n\n break;\n }\n\n default: {\n log.warn(\n `Unknown Supplementary service state: ${data.callState} for correlationId : ${this.correlationId}`,\n {\n file: CALL_FILE,\n method: 'handleMidCallEvent',\n }\n );\n }\n }\n\n break;\n }\n\n default: {\n log.warn(`Unknown Midcall type: ${eventType} for correlationId : ${this.correlationId}`, {\n file: CALL_FILE,\n method: 'handleMidCallEvent',\n });\n }\n }\n }\n\n /**\n *\n */\n public getCallerInfo = (): DisplayInformation => this.callerInfo;\n\n /**\n *\n */\n public end = (): void => {\n this.sendCallStateMachineEvt({type: 'E_SEND_CALL_DISCONNECT'});\n };\n\n /**\n *\n */\n public doHoldResume = (): void => {\n if (this.held) {\n this.sendCallStateMachineEvt({type: 'E_CALL_RESUME'});\n } else {\n this.sendCallStateMachineEvt({type: 'E_CALL_HOLD'});\n }\n };\n\n /**\n * .\n *\n * @param callerInfo\n */\n public startCallerIdResolution(callerInfo: CallerIdInfo) {\n this.callerInfo = this.callerId.fetchCallerDetails(callerInfo);\n }\n\n /**\n * Sends digit over the established call.\n *\n * @param tone - DTMF tones.\n */\n public sendDigit(tone: string) {\n /* istanbul ignore else */\n try {\n log.info(`Sending digit : ${tone}`, {\n file: CALL_FILE,\n method: 'sendDigit',\n });\n\n this.mediaConnection.insertDTMF(tone);\n } catch (e: any) {\n log.warn(`Unable to send digit on call: ${e.message}`, {\n file: CALL_FILE,\n method: 'sendDigit',\n });\n }\n }\n\n /**\n * Mutes/Unmutes the call.\n *\n * @param localAudioTrack -.\n */\n public mute = (localAudioStream: LocalMicrophoneStream): void => {\n if (localAudioStream) {\n localAudioStream.setUserMuted(!this.muted);\n this.muted = !this.muted;\n } else {\n log.warn(`Did not find a local stream while muting the call ${this.getCorrelationId()}.`, {\n file: CALL_FILE,\n method: 'mute',\n });\n }\n };\n\n /**\n * Change the audio stream of the call.\n *\n * @param newAudioStream - The new audio stream to be used in the call.\n */\n\n public updateMedia = (newAudioStream: LocalMicrophoneStream): void => {\n const localAudioTrack = newAudioStream.outputStream.getAudioTracks()[0];\n\n if (!localAudioTrack) {\n log.warn(\n `Did not find a local track while updating media for call ${this.getCorrelationId()}. Will not update media`,\n {\n file: CALL_FILE,\n method: 'updateMedia',\n }\n );\n\n return;\n }\n\n try {\n this.mediaConnection.updateLocalTracks({\n audio: localAudioTrack,\n });\n\n this.unregisterListeners();\n this.registerListeners(newAudioStream);\n this.localAudioStream = newAudioStream;\n } catch (e: any) {\n log.warn(`Unable to update media on call ${this.getCorrelationId()}. Error: ${e.message}`, {\n file: CALL_FILE,\n method: 'updateMedia',\n });\n }\n };\n\n /**\n * @param broadworksCorrelationInfo\n */\n setBroadworksCorrelationInfo(broadworksCorrelationInfo: string): void {\n this.broadworksCorrelationInfo = broadworksCorrelationInfo;\n }\n\n /**\n *\n */\n getBroadworksCorrelationInfo(): string | undefined {\n return this.broadworksCorrelationInfo;\n }\n\n /**\n * Get call stats for an active call.\n *\n * @returns Promise<CallRtpStats> Call Stats.\n */\n getCallRtpStats(): Promise<CallRtpStats> {\n return this.getCallStats();\n }\n}\n\n/**\n * @param activeUrl\n * @param webex -.\n * @param dest -.\n * @param dir -.\n * @param deviceId -.\n * @param lineId -.\n * @param serverCb\n * @param deleteCb\n * @param indicator - Service Indicator.\n */\nexport const createCall = (\n activeUrl: string,\n webex: WebexSDK,\n dest: CallDetails,\n dir: CallDirection,\n deviceId: string,\n lineId: string,\n deleteCb: DeleteRecordCallBack,\n indicator: ServiceIndicator\n): ICall => new Call(activeUrl, webex, dest, dir, deviceId, lineId, deleteCb, indicator);\n"],"mappings":"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"}