@webex/contact-center 3.12.0-task-refactor.2 → 3.12.0-task-refactor.4

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 (41) hide show
  1. package/dist/services/config/Util.js +1 -0
  2. package/dist/services/config/Util.js.map +1 -1
  3. package/dist/services/config/types.js.map +1 -1
  4. package/dist/services/task/TaskManager.js +8 -2
  5. package/dist/services/task/TaskManager.js.map +1 -1
  6. package/dist/services/task/state-machine/TaskStateMachine.js +45 -8
  7. package/dist/services/task/state-machine/TaskStateMachine.js.map +1 -1
  8. package/dist/services/task/state-machine/actions.js +11 -6
  9. package/dist/services/task/state-machine/actions.js.map +1 -1
  10. package/dist/services/task/state-machine/constants.js +20 -1
  11. package/dist/services/task/state-machine/constants.js.map +1 -1
  12. package/dist/services/task/state-machine/guards.js +27 -8
  13. package/dist/services/task/state-machine/guards.js.map +1 -1
  14. package/dist/services/task/state-machine/uiControlsComputer.js +38 -9
  15. package/dist/services/task/state-machine/uiControlsComputer.js.map +1 -1
  16. package/dist/services/task/types.js.map +1 -1
  17. package/dist/services/task/voice/Voice.js +7 -2
  18. package/dist/services/task/voice/Voice.js.map +1 -1
  19. package/dist/types/services/config/types.d.ts +4 -0
  20. package/dist/types/services/task/state-machine/TaskStateMachine.d.ts +44 -4
  21. package/dist/types/services/task/state-machine/constants.d.ts +13 -0
  22. package/dist/types/services/task/state-machine/guards.d.ts +6 -1
  23. package/dist/types/services/task/types.d.ts +2 -0
  24. package/dist/webex.js +1 -1
  25. package/package.json +1 -1
  26. package/src/services/config/Util.ts +1 -0
  27. package/src/services/config/types.ts +4 -0
  28. package/src/services/task/TaskManager.ts +8 -2
  29. package/src/services/task/state-machine/TaskStateMachine.ts +72 -9
  30. package/src/services/task/state-machine/actions.ts +19 -10
  31. package/src/services/task/state-machine/constants.ts +19 -0
  32. package/src/services/task/state-machine/guards.ts +34 -7
  33. package/src/services/task/state-machine/uiControlsComputer.ts +37 -11
  34. package/src/services/task/types.ts +2 -0
  35. package/src/services/task/voice/Voice.ts +12 -7
  36. package/test/unit/spec/services/config/index.ts +1 -0
  37. package/test/unit/spec/services/task/state-machine/TaskStateMachine.ts +103 -0
  38. package/test/unit/spec/services/task/state-machine/guards.ts +103 -0
  39. package/test/unit/spec/services/task/state-machine/uiControlsComputer.ts +189 -1
  40. package/umd/contact-center.min.js +2 -2
  41. package/umd/contact-center.min.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["_constants","require","_Utils","_types","_Task","_interopRequireDefault","_loggerProxy","_MetricsManager","_constants2","_stateMachine","_TaskUtils","e","__esModule","default","Voice","Task","constructor","contact","data","callOptions","wrapupData","agentId","resolvedOptions","isEndTaskEnabled","isEndConsultEnabled","voiceVariant","VOICE_VARIANT","PSTN","isRecordingEnabled","getStateMachineSnapshot","stateMachineService","getSnapshot","accept","unsupportedMethodError","METHODS","ACCEPT","decline","REJECT","hold","holdResume","resume","snapshot","snapshotState","value","mainInteractionId","interaction","interactionId","mainMediaResource","media","mediaResourceId","mediaHoldState","isHold","shouldHold","TaskState","HELD","CONNECTED","state","currentState","matches","error","Error","LoggerProxy","module","CC_FILE","method","HOLD_RESUME","initiatingEvent","TaskEvent","HOLD_INITIATED","UNHOLD_INITIATED","send","type","info","successEvt","failedEvt","METRIC_EVENT_NAMES","TASK_HOLD_SUCCESS","TASK_HOLD_FAILED","TASK_RESUME_SUCCESS","TASK_RESUME_FAILED","metricsManager","timeEvent","response","HOLD_SUCCESS","trackEvent","taskId","MetricsManager","getCommonTrackingFieldForAQMResponse","log","trackingId","unHold","UNHOLD_SUCCESS","failureEvent","HOLD_FAILED","UNHOLD_FAILED","reason","toString","detailedError","getErrorDetails","getCommonTrackingFieldForAQMResponseFailed","details","pauseRecording","recordingControlsAvailable","recordingInProgress","context","recordingActive","Boolean","TASK_PAUSE_RECORDING_SUCCESS","TASK_PAUSE_RECORDING_FAILED","result","resumeRecording","resumeRecordingPayload","recordingPaused","TASK_RESUME_RECORDING_SUCCESS","TASK_RESUME_RECORDING_FAILED","autoResumed","consult","consultPayload","canConsult","CONFERENCING","CONSULT","destination","to","destinationType","requestInteractionId","TASK_CONSULT_START_SUCCESS","TASK_CONSULT_START_FAILED","CONSULT_SUCCESS","taskData","CONSULT_FAILED","endConsult","consultEndPayload","TASK_CONSULT_END_SUCCESS","TASK_CONSULT_END_FAILED","consultEnd","transfer","payload","TRANSFER_CALL","TASK_TRANSFER_SUCCESS","TASK_TRANSFER_FAILED","normalizedDestinationType","toLowerCase","CONSULT_TRANSFER_DESTINATION_TYPE","QUEUE","consultContext","destAgent","consultDestinationAgentId","destAgentId","AGENT","consultTransfer","isConsultTransfer","err","consultConference","derivedDestAgentId","calculateDestAgentId","derivedDestType","calculateDestType","consultationData","consultDestinationType","MERGE_TO_CONFERENCE","CONSULT_CONFERENCE","paramsDataForConferenceV2","buildConsultConferenceParamData","CONFERENCE_START","TASK_CONFERENCE_START_SUCCESS","CONFERENCE_FAILED","failedParamsData","TASK_CONFERENCE_START_FAILED","exitConference","isConferencingState","isConferenceInProgressFromData","getIsConferenceInProgress","EXIT_CONFERENCE","TASK_CONFERENCE_EXIT_SUCCESS","TASK_CONFERENCE_EXIT_FAILED","EXIT_CONFERENCE_SUCCESS","EXIT_CONFERENCE_FAILED","transferConference","isValidState","CONSULTING","TRANSFER_CONFERENCE","TASK_CONFERENCE_TRANSFER_SUCCESS","TASK_CONFERENCE_TRANSFER_FAILED","conferenceTransfer","TRANSFER_CONFERENCE_SUCCESS","TRANSFER_CONFERENCE_FAILED","switchCall","consultMediaResourceId","getConsultMediaResourceId","isOnConsultLeg","consultCallHeld","targetEvent","SWITCH_TO_MAIN_CALL","SWITCH_TO_CONSULT","revertEvent","TASK_SWITCH_CALL_SUCCESS","TASK_SWITCH_CALL_FAILED","direction","getChannelSpecificActionOverrides","baseOverrides","emitTaskHold","createEmitSelfAction","TASK_EVENTS","TASK_HOLD","updateTaskData","emitTaskResume","TASK_RESUME","emitTaskRecordingStarted","TASK_RECORDING_STARTED","emitTaskRecordingPaused","TASK_RECORDING_PAUSED","emitTaskRecordingPauseFailed","TASK_RECORDING_PAUSE_FAILED","emitTaskRecordingResumed","TASK_RECORDING_RESUMED","emitTaskRecordingResumeFailed","TASK_RECORDING_RESUME_FAILED","emitTaskParticipantJoined","TASK_PARTICIPANT_JOINED","emitTaskParticipantLeft","TASK_PARTICIPANT_LEFT","emitTaskConferenceStarted","TASK_CONFERENCE_STARTED","emitTaskConferenceEnded","TASK_CONFERENCE_ENDED","emitTaskConferenceFailed","TASK_CONFERENCE_FAILED","emitTaskExitConference","TASK_EXIT_CONFERENCE","emitTaskTransferConference","TASK_TRANSFER_CONFERENCE","emitTaskSwitchCall","TASK_SWITCH_CALL","emitTaskTransferConferenceFailed","emitTaskOutdialFailed","TASK_OUTDIAL_FAILED","exports"],"sources":["Voice.ts"],"sourcesContent":["import {CC_FILE, METHODS} from '../../../constants';\nimport {\n buildConsultConferenceParamData,\n calculateDestAgentId,\n calculateDestType,\n getErrorDetails,\n} from '../../core/Utils';\nimport routingContact from '../contact';\nimport {\n ConsultPayload,\n ConsultEndPayload,\n ResumeRecordingPayload,\n TaskData,\n TaskResponse,\n IVoice,\n VoiceUIControlOptions,\n TransferPayLoad,\n ConsultTransferPayLoad,\n consultConferencePayloadData,\n CONSULT_TRANSFER_DESTINATION_TYPE,\n TASK_EVENTS,\n VOICE_VARIANT,\n} from '../types';\nimport Task from '../Task';\nimport LoggerProxy from '../../../logger-proxy';\nimport MetricsManager from '../../../metrics/MetricsManager';\nimport {METRIC_EVENT_NAMES} from '../../../metrics/constants';\nimport {TaskState, TaskEvent} from '../state-machine';\nimport {WrapupData} from '../../config/types';\nimport {getConsultMediaResourceId, getIsConferenceInProgress} from '../TaskUtils';\n\nexport default class Voice extends Task implements IVoice {\n constructor(\n contact: ReturnType<typeof routingContact>,\n data: TaskData,\n callOptions?: VoiceUIControlOptions,\n wrapupData?: WrapupData,\n agentId?: string\n ) {\n const resolvedOptions = {\n isEndTaskEnabled: callOptions?.isEndTaskEnabled ?? true,\n isEndConsultEnabled: callOptions?.isEndConsultEnabled ?? true,\n voiceVariant: callOptions?.voiceVariant ?? VOICE_VARIANT.PSTN,\n isRecordingEnabled: callOptions?.isRecordingEnabled ?? true,\n };\n\n super(\n contact,\n data,\n {\n ...resolvedOptions,\n },\n wrapupData,\n agentId\n );\n }\n\n private getStateMachineSnapshot() {\n return this.stateMachineService?.getSnapshot?.();\n }\n\n /**\n * This method is used to accept the task.\n * It is expected to be overridden by child classes.\n * @returns Promise<TaskResponse>\n * @throws Error\n */\n public async accept(): Promise<TaskResponse> {\n super.unsupportedMethodError(METHODS.ACCEPT);\n }\n\n /**\n * This method is used to decline the task.\n * It is expected to be overridden by child classes.\n * @returns Promise<TaskResponse>\n * @throws Error\n */\n public async decline(): Promise<TaskResponse> {\n super.unsupportedMethodError(METHODS.REJECT);\n }\n\n /**\n * This is used to hold the task.\n * @returns Promise<TaskResponse>\n * @throws Error\n * @example\n * ```typescript\n * task.hold().then(()=>{}).catch(()=>{})\n * ```\n * */\n public async hold(): Promise<TaskResponse> {\n return this.holdResume();\n }\n\n /**\n * This is used to resume the task.\n * @returns Promise<TaskResponse>\n * @throws Error\n * @example\n * ```typescript\n * task.resume().then(()=>{}).catch(()=>{})\n * ```\n * */\n public async resume(): Promise<TaskResponse> {\n return this.holdResume();\n }\n\n /**\n * This is used to hold or resume the task.\n * @param isHeld: boolean - true to hold the task, false to resume it\n * @returns Promise<TaskResponse>\n * @throws Error\n * @example\n * ```typescript\n * task.holdResume(isHeld: true).then(()=>{}).catch(()=>{})\n * ```\n * */\n public async holdResume(): Promise<TaskResponse> {\n /* \n Determine if the task is being held or resumed based on the media resource state\n If the media resource is not found, default to resuming the task\n */\n const snapshot = this.getStateMachineSnapshot();\n const snapshotState = snapshot?.value as TaskState | undefined;\n const mainInteractionId = this.data.interaction?.mainInteractionId || this.data.interactionId;\n const mainMediaResource =\n this.data.interaction?.media?.[mainInteractionId]?.mediaResourceId ||\n this.data.mediaResourceId;\n const mediaHoldState =\n this.data.interaction?.media?.[mainInteractionId]?.isHold ??\n this.data.interaction.media?.[mainMediaResource]?.isHold;\n let shouldHold = !(mediaHoldState ?? false);\n if (snapshotState === TaskState.HELD) {\n shouldHold = false;\n } else if (snapshotState === TaskState.CONNECTED) {\n shouldHold = true;\n }\n\n // Validate operation is allowed in current state\n const state = snapshot;\n if (state) {\n const currentState = state.value as TaskState;\n if (shouldHold) {\n if (!state.matches(TaskState.CONNECTED)) {\n const error = new Error(`Cannot hold call in current state: ${currentState}`);\n LoggerProxy.error('Hold operation not allowed', {\n module: CC_FILE,\n method: METHODS.HOLD_RESUME,\n interactionId: this.data.interactionId,\n });\n throw error;\n }\n } else if (!state.matches(TaskState.HELD)) {\n const error = new Error(`Cannot resume call in current state: ${currentState}`);\n LoggerProxy.error('Resume operation not allowed', {\n module: CC_FILE,\n method: METHODS.HOLD_RESUME,\n interactionId: this.data.interactionId,\n });\n throw error;\n }\n }\n\n // Send initiating event to transition to intermediate state\n if (this.stateMachineService) {\n const initiatingEvent = shouldHold ? TaskEvent.HOLD_INITIATED : TaskEvent.UNHOLD_INITIATED;\n this.stateMachineService.send({\n type: initiatingEvent,\n mediaResourceId: mainMediaResource,\n });\n }\n\n LoggerProxy.info(`${shouldHold ? 'Holding' : 'Resuming'} task`, {\n module: CC_FILE,\n method: METHODS.HOLD_RESUME,\n interactionId: this.data.interactionId,\n });\n const [successEvt, failedEvt] = shouldHold\n ? [METRIC_EVENT_NAMES.TASK_HOLD_SUCCESS, METRIC_EVENT_NAMES.TASK_HOLD_FAILED]\n : [METRIC_EVENT_NAMES.TASK_RESUME_SUCCESS, METRIC_EVENT_NAMES.TASK_RESUME_FAILED];\n\n this.metricsManager.timeEvent([successEvt, failedEvt]);\n\n try {\n let response: TaskResponse;\n if (shouldHold) {\n response = await this.contact.hold({\n interactionId: this.data.interactionId,\n data: {mediaResourceId: mainMediaResource},\n });\n\n // Send success event to complete the transition\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.HOLD_SUCCESS,\n mediaResourceId: mainMediaResource,\n });\n }\n\n this.metricsManager.trackEvent(\n successEvt,\n {\n taskId: this.data.interactionId,\n mediaResourceId: mainMediaResource,\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(response),\n },\n ['operational', 'behavioral']\n );\n LoggerProxy.log(`Task placed on hold successfully`, {\n module: CC_FILE,\n method: METHODS.HOLD_RESUME,\n trackingId: response.trackingId,\n interactionId: this.data.interactionId,\n });\n } else {\n response = await this.contact.unHold({\n interactionId: this.data.interactionId,\n data: {mediaResourceId: mainMediaResource},\n });\n\n // Send success event to complete the transition\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.UNHOLD_SUCCESS,\n mediaResourceId: mainMediaResource,\n });\n }\n\n this.metricsManager.trackEvent(\n successEvt,\n {\n taskId: this.data.interactionId,\n mainInteractionId,\n mediaResourceId: mainMediaResource,\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(response),\n },\n ['operational', 'behavioral']\n );\n LoggerProxy.log(`Task resumed successfully`, {\n module: CC_FILE,\n method: METHODS.HOLD_RESUME,\n trackingId: response.trackingId,\n interactionId: this.data.interactionId,\n });\n }\n\n return response;\n } catch (error) {\n const failureEvent = shouldHold ? TaskEvent.HOLD_FAILED : TaskEvent.UNHOLD_FAILED;\n this.stateMachineService.send({\n type: failureEvent,\n reason: error.toString(),\n mediaResourceId: this.data.mediaResourceId,\n });\n\n const {error: detailedError} = getErrorDetails(error, 'holdResume', CC_FILE);\n this.metricsManager.trackEvent(\n failedEvt,\n shouldHold\n ? {\n taskId: this.data.interactionId,\n mediaResourceId: this.data.mediaResourceId,\n error: error.toString(),\n ...MetricsManager.getCommonTrackingFieldForAQMResponseFailed(error.details || {}),\n }\n : {\n taskId: this.data.interactionId,\n error: error.toString(),\n ...MetricsManager.getCommonTrackingFieldForAQMResponseFailed(error.details || {}),\n },\n ['operational', 'behavioral']\n );\n throw detailedError;\n }\n }\n\n /**\n * This is used to pause the call recording\n * @returns Promise<TaskResponse>\n * @throws Error\n * @example\n * ```typescript\n * task.pauseRecording().then(()=>{}).catch(()=>{});\n * ```\n */\n public async pauseRecording(): Promise<TaskResponse> {\n // Validate recording is active\n const state = this.getStateMachineSnapshot();\n if (state) {\n const {recordingControlsAvailable, recordingInProgress} = state.context as {\n recordingControlsAvailable?: boolean;\n recordingInProgress?: boolean;\n };\n const recordingActive = Boolean(recordingControlsAvailable && recordingInProgress);\n if (!recordingActive) {\n const error = new Error('Recording is not active or already paused');\n LoggerProxy.error('Pause recording operation not allowed', {\n module: CC_FILE,\n method: 'pauseRecording',\n interactionId: this.data.interactionId,\n });\n throw error;\n }\n }\n\n try {\n LoggerProxy.info(`Pausing recording`, {\n module: CC_FILE,\n method: 'pauseRecording',\n interactionId: this.data.interactionId,\n });\n this.metricsManager.timeEvent([\n METRIC_EVENT_NAMES.TASK_PAUSE_RECORDING_SUCCESS,\n METRIC_EVENT_NAMES.TASK_PAUSE_RECORDING_FAILED,\n ]);\n const result = await this.contact.pauseRecording({interactionId: this.data.interactionId});\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_PAUSE_RECORDING_SUCCESS,\n {\n taskId: this.data.interactionId,\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(result),\n },\n ['operational', 'behavioral', 'business']\n );\n LoggerProxy.log(`Recording paused successfully`, {\n module: CC_FILE,\n method: 'pauseRecording',\n trackingId: result.trackingId,\n interactionId: this.data.interactionId,\n });\n\n return result;\n } catch (error) {\n const {error: detailedError} = getErrorDetails(error, 'pauseRecording', CC_FILE);\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_PAUSE_RECORDING_FAILED,\n {\n taskId: this.data.interactionId,\n error: error.toString(),\n ...MetricsManager.getCommonTrackingFieldForAQMResponseFailed(error.details || {}),\n },\n ['operational', 'behavioral', 'business']\n );\n throw detailedError;\n }\n }\n\n /**\n * This is used to pause the call recording\n * @param resumeRecordingPayload\n * @returns Promise<TaskResponse>\n * @throws Error\n * @example\n * ```typescript\n * task.resumeRecording(resumeRecordingPayload).then(()=>{}).catch(()=>{});\n * ```\n */\n public async resumeRecording(\n resumeRecordingPayload?: ResumeRecordingPayload\n ): Promise<TaskResponse> {\n // Validate recording is paused\n const state = this.getStateMachineSnapshot();\n if (state) {\n const {recordingControlsAvailable, recordingInProgress} = state.context as {\n recordingControlsAvailable?: boolean;\n recordingInProgress?: boolean;\n };\n const recordingPaused = Boolean(recordingControlsAvailable && !recordingInProgress);\n if (!recordingPaused) {\n const error = new Error('Recording is not paused');\n LoggerProxy.error('Resume recording operation not allowed', {\n module: CC_FILE,\n method: 'resumeRecording',\n interactionId: this.data.interactionId,\n });\n throw error;\n }\n }\n\n try {\n LoggerProxy.info(`Resuming recording`, {\n module: CC_FILE,\n method: 'resumeRecording',\n interactionId: this.data.interactionId,\n });\n this.metricsManager.timeEvent([\n METRIC_EVENT_NAMES.TASK_RESUME_RECORDING_SUCCESS,\n METRIC_EVENT_NAMES.TASK_RESUME_RECORDING_FAILED,\n ]);\n resumeRecordingPayload ??= {autoResumed: false};\n\n const result = await this.contact.resumeRecording({\n interactionId: this.data.interactionId,\n data: resumeRecordingPayload,\n });\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_RESUME_RECORDING_SUCCESS,\n {\n taskId: this.data.interactionId,\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(result),\n },\n ['operational', 'behavioral', 'business']\n );\n LoggerProxy.log(`Recording resumed successfully`, {\n module: CC_FILE,\n method: 'resumeRecording',\n trackingId: result.trackingId,\n interactionId: this.data.interactionId,\n });\n\n return result;\n } catch (error) {\n const {error: detailedError} = getErrorDetails(error, 'resumeRecording', CC_FILE);\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_RESUME_RECORDING_FAILED,\n {\n taskId: this.data.interactionId,\n error: error.toString(),\n ...MetricsManager.getCommonTrackingFieldForAQMResponseFailed(error.details || {}),\n },\n ['operational', 'behavioral', 'business']\n );\n throw detailedError;\n }\n }\n\n /**\n * This is used to consult the task\n * @param consultPayload\n * @returns Promise<TaskResponse>\n * @throws Error\n * @example\n * ```typescript\n * const consultPayload = {\n * destination: 'myBuddyAgentId',\n * destinationType: DESTINATION_TYPE.AGENT,\n * }\n * task.consult(consultPayload).then(()=>{}).catch(()=>{});\n * ```\n * */\n public async consult(consultPayload?: ConsultPayload): Promise<TaskResponse> {\n // Validate consult is allowed\n const state = this.getStateMachineSnapshot();\n const canConsult =\n state &&\n (state.matches(TaskState.CONNECTED) ||\n state.matches(TaskState.HELD) ||\n state.matches(TaskState.CONFERENCING));\n\n if (!canConsult) {\n const currentState = state?.value as TaskState;\n const error = new Error(`Cannot initiate consult in ${currentState} state`);\n LoggerProxy.error('Consult operation not allowed', {\n module: CC_FILE,\n method: 'consult',\n interactionId: this.data.interactionId,\n });\n throw error;\n }\n\n // Send initiating event to transition to CONSULT_INITIATING state\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.CONSULT,\n destination: consultPayload.to,\n destinationType: consultPayload.destinationType,\n });\n }\n\n const requestInteractionId =\n this.data.interaction?.mainInteractionId || this.data.interactionId;\n\n try {\n LoggerProxy.info(`Starting consult`, {\n module: CC_FILE,\n method: 'consult',\n interactionId: requestInteractionId,\n });\n this.metricsManager.timeEvent([\n METRIC_EVENT_NAMES.TASK_CONSULT_START_SUCCESS,\n METRIC_EVENT_NAMES.TASK_CONSULT_START_FAILED,\n ]);\n const result = await this.contact.consult({\n interactionId: requestInteractionId,\n data: consultPayload,\n });\n\n // Send success event to transition to CONSULTING state\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.CONSULT_SUCCESS,\n taskData: result.data,\n });\n }\n\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_CONSULT_START_SUCCESS,\n {\n taskId: this.data.interactionId,\n requestInteractionId,\n destination: consultPayload.to,\n destinationType: consultPayload.destinationType,\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(result),\n },\n ['operational', 'behavioral', 'business']\n );\n LoggerProxy.log(`Consult successfully initiated to ${consultPayload.to}`, {\n module: CC_FILE,\n method: 'consult',\n trackingId: result.trackingId,\n interactionId: requestInteractionId,\n });\n\n return result;\n } catch (error) {\n this.stateMachineService.send({\n type: TaskEvent.CONSULT_FAILED,\n reason: error.toString(),\n });\n\n const {error: detailedError} = getErrorDetails(error, 'consult', CC_FILE);\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_CONSULT_START_FAILED,\n {\n taskId: this.data.interactionId,\n requestInteractionId,\n destination: consultPayload.to,\n destinationType: consultPayload.destinationType,\n error: error.toString(),\n ...MetricsManager.getCommonTrackingFieldForAQMResponseFailed(error.details || {}),\n },\n ['operational', 'behavioral', 'business']\n );\n throw detailedError;\n }\n }\n\n /**\n * This is used to end the consult session on the task.\n * @param consultEndPayload - Payload indicating consult end flags and identifiers\n * @returns Promise<TaskResponse>\n * @throws Error\n * @example\n * ```typescript\n * task.endConsult({\n * isConsult: true,\n * queueId: 'myQueueId',\n * taskId: 'taskId',\n * });\n * ```\n */\n public async endConsult(consultEndPayload?: ConsultEndPayload): Promise<TaskResponse> {\n const requestInteractionId =\n this.data.interaction?.mainInteractionId || this.data.interactionId;\n\n try {\n LoggerProxy.info(`Ending consult`, {\n module: CC_FILE,\n method: 'endConsult',\n interactionId: requestInteractionId,\n });\n this.metricsManager.timeEvent([\n METRIC_EVENT_NAMES.TASK_CONSULT_END_SUCCESS,\n METRIC_EVENT_NAMES.TASK_CONSULT_END_FAILED,\n ]);\n const result = await this.contact.consultEnd({\n interactionId: requestInteractionId,\n data: consultEndPayload,\n });\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_CONSULT_END_SUCCESS,\n {\n taskId: this.data.interactionId,\n requestInteractionId,\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(result),\n },\n ['operational', 'behavioral', 'business']\n );\n LoggerProxy.log(`Consult ended successfully`, {\n module: CC_FILE,\n method: 'endConsult',\n trackingId: result.trackingId,\n interactionId: this.data.interactionId,\n });\n\n return result;\n } catch (error) {\n const {error: detailedError} = getErrorDetails(error, 'endConsult', CC_FILE);\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_CONSULT_END_FAILED,\n {\n taskId: this.data.interactionId,\n requestInteractionId,\n error: error.toString(),\n ...MetricsManager.getCommonTrackingFieldForAQMResponseFailed(error.details || {}),\n },\n ['operational', 'behavioral', 'business']\n );\n throw detailedError;\n }\n }\n\n /**\n * This is used to transfer the task.\n * @param payload - Transfer payload\n * @returns Promise<TaskResponse>\n * @throws Error\n * @example\n * ```typescript\n * task.transfer({\n * to: 'destinationId',\n * destinationType: DESTINATION_TYPE.AGENT,\n * consult: true, // Optional, if true will perform a consult transfer else blind transfer\n * });\n * ```\n */\n public async transfer(payload: TransferPayLoad): Promise<TaskResponse> {\n try {\n LoggerProxy.info(`Transferring task to ${payload.to}`, {\n module: CC_FILE,\n method: METHODS.TRANSFER_CALL,\n interactionId: this.data.interactionId,\n });\n this.metricsManager.timeEvent([\n METRIC_EVENT_NAMES.TASK_TRANSFER_SUCCESS,\n METRIC_EVENT_NAMES.TASK_TRANSFER_FAILED,\n ]);\n\n // consult transfer path\n if (this.data.interaction.state === 'consulting') {\n const normalizedDestinationType =\n payload.destinationType === 'Agent' || payload.destinationType === 'Queue'\n ? (payload.destinationType.toLowerCase() as ConsultTransferPayLoad['destinationType'])\n : payload.destinationType;\n let consultPayload: ConsultTransferPayLoad = {\n to: payload.to,\n destinationType: normalizedDestinationType,\n };\n\n if (normalizedDestinationType === CONSULT_TRANSFER_DESTINATION_TYPE.QUEUE) {\n const consultContext = this.getStateMachineSnapshot()?.context;\n const destAgent = consultContext?.consultDestinationAgentId || this.data.destAgentId;\n if (!destAgent) {\n throw new Error('No agent has accepted this queue consult yet');\n }\n consultPayload = {\n to: destAgent,\n destinationType: CONSULT_TRANSFER_DESTINATION_TYPE.AGENT,\n };\n }\n\n const result = await this.contact.consultTransfer({\n interactionId: this.data.interactionId,\n data: consultPayload,\n });\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_TRANSFER_SUCCESS,\n {\n taskId: this.data.interactionId,\n destination: consultPayload.to,\n destinationType: consultPayload.destinationType,\n isConsultTransfer: true,\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(result),\n },\n ['operational', 'behavioral', 'business']\n );\n LoggerProxy.log(`Consult transfer completed successfully to ${consultPayload.to}`, {\n module: CC_FILE,\n method: METHODS.TRANSFER_CALL,\n trackingId: result.trackingId,\n interactionId: this.data.interactionId,\n });\n\n return result;\n }\n\n // standard blind transfer\n return await super.transfer({\n to: payload.to,\n destinationType: payload.destinationType,\n });\n } catch (err) {\n const {error: detailedError} = getErrorDetails(err, METHODS.TRANSFER_CALL, CC_FILE);\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_TRANSFER_FAILED,\n {\n taskId: this.data.interactionId,\n destination: payload.to,\n destinationType: payload.destinationType,\n isConsultTransfer: this.data.interaction.state === 'consulting',\n error: err.toString(),\n ...MetricsManager.getCommonTrackingFieldForAQMResponseFailed(err.details || {}),\n },\n ['operational', 'behavioral', 'business']\n );\n throw detailedError;\n }\n }\n\n /**\n * Start a consult conference, merging main and consult calls.\n */\n public async consultConference(): Promise<TaskResponse> {\n const derivedDestAgentId =\n this.data.interaction && this.data.agentId\n ? calculateDestAgentId(this.data.interaction, this.data.agentId)\n : '';\n const derivedDestType =\n this.data.interaction && this.data.agentId\n ? calculateDestType(this.data.interaction, this.data.agentId)\n : '';\n\n const consultationData: consultConferencePayloadData = {\n agentId: this.data.agentId,\n destinationType:\n this.getStateMachineSnapshot()?.context?.consultDestinationType ||\n this.data.destinationType ||\n derivedDestType ||\n 'agent',\n destAgentId:\n this.getStateMachineSnapshot()?.context?.consultDestinationAgentId ||\n this.data.destAgentId ||\n derivedDestAgentId,\n };\n\n // Send state machine event to transition to CONF_INITIATING\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.MERGE_TO_CONFERENCE,\n });\n }\n\n try {\n if (!consultationData.destAgentId) {\n throw new Error('Unable to determine consult destination for conference');\n }\n\n LoggerProxy.info(`Initiating consult conference to ${consultationData.destAgentId}`, {\n module: CC_FILE,\n method: METHODS.CONSULT_CONFERENCE,\n interactionId: this.data.interactionId,\n });\n\n const paramsDataForConferenceV2 = buildConsultConferenceParamData(\n consultationData,\n this.data.interactionId\n );\n\n const response = await this.contact.consultConference({\n interactionId: paramsDataForConferenceV2.interactionId,\n data: paramsDataForConferenceV2.data,\n });\n\n // Send success event to transition to CONFERENCING\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.CONFERENCE_START,\n });\n }\n\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_CONFERENCE_START_SUCCESS,\n {\n taskId: this.data.interactionId,\n destination: paramsDataForConferenceV2.data.to,\n destinationType: paramsDataForConferenceV2.data.destinationType,\n agentId: paramsDataForConferenceV2.data.agentId,\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(response),\n },\n ['operational', 'behavioral', 'business']\n );\n\n LoggerProxy.log(`Consult conference started successfully`, {\n module: CC_FILE,\n method: METHODS.CONSULT_CONFERENCE,\n interactionId: this.data.interactionId,\n });\n\n return response;\n } catch (error) {\n // Send failure event to revert state\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.CONFERENCE_FAILED,\n reason: error.toString(),\n });\n }\n\n const {error: detailedError} = getErrorDetails(error, METHODS.CONSULT_CONFERENCE, CC_FILE);\n\n const failedParamsData = buildConsultConferenceParamData(\n consultationData,\n this.data.interactionId\n );\n\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_CONFERENCE_START_FAILED,\n {\n taskId: this.data.interactionId,\n destination: failedParamsData.data.to,\n destinationType: failedParamsData.data.destinationType,\n agentId: failedParamsData.data.agentId,\n error: error.toString(),\n ...MetricsManager.getCommonTrackingFieldForAQMResponseFailed(error.details || {}),\n },\n ['operational', 'behavioral', 'business']\n );\n\n LoggerProxy.error(`Failed to start consult conference`, {\n module: CC_FILE,\n method: METHODS.CONSULT_CONFERENCE,\n interactionId: this.data.interactionId,\n });\n\n throw detailedError;\n }\n }\n\n /**\n * Exit from a conference call.\n * Per conference-spec.md:\n * - Primary agent exits to wrapup\n * - Non-primary agent exits to available/connected\n * - Other participants continue the call\n *\n * @returns Promise<TaskResponse>\n * @throws Error if not in conference or exit fails\n * @example\n * ```typescript\n * task.exitConference().then(() => {}).catch(() => {});\n * ```\n */\n public async exitConference(): Promise<TaskResponse> {\n // Validate we're in conference state OR conference is in progress per task data\n // This handles cases where:\n // 1. State machine is in CONFERENCING state\n // 2. State machine is in CONNECTED but conference is active (e.g., ownership transferred)\n const state = this.getStateMachineSnapshot();\n const isConferencingState = state?.matches(TaskState.CONFERENCING);\n\n const isConferenceInProgressFromData = this.data ? getIsConferenceInProgress(this.data) : false;\n\n if (!state || (!isConferencingState && !isConferenceInProgressFromData)) {\n const currentState = state?.value as TaskState;\n const error = new Error(`Cannot exit conference in ${currentState} state`);\n LoggerProxy.error('Exit conference operation not allowed', {\n module: CC_FILE,\n method: 'exitConference',\n interactionId: this.data.interactionId,\n });\n throw error;\n }\n\n // Send state machine event\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.EXIT_CONFERENCE,\n agentId: this.data.agentId,\n });\n }\n\n const requestInteractionId =\n this.data.interaction?.mainInteractionId || this.data.interactionId;\n\n try {\n LoggerProxy.info(`Exiting conference`, {\n module: CC_FILE,\n method: 'exitConference',\n interactionId: requestInteractionId,\n });\n\n this.metricsManager.timeEvent([\n METRIC_EVENT_NAMES.TASK_CONFERENCE_EXIT_SUCCESS,\n METRIC_EVENT_NAMES.TASK_CONFERENCE_EXIT_FAILED,\n ]);\n\n const response = await this.contact.exitConference({\n interactionId: requestInteractionId,\n });\n\n // Send success event to transition state\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.EXIT_CONFERENCE_SUCCESS,\n taskData: response.data,\n });\n }\n\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_CONFERENCE_EXIT_SUCCESS,\n {\n taskId: this.data.interactionId,\n requestInteractionId,\n agentId: this.data.agentId,\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(response),\n },\n ['operational', 'behavioral', 'business']\n );\n\n LoggerProxy.log(`Successfully exited conference`, {\n module: CC_FILE,\n method: 'exitConference',\n trackingId: response.trackingId,\n interactionId: requestInteractionId,\n });\n\n return response;\n } catch (error) {\n // Send failure event\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.EXIT_CONFERENCE_FAILED,\n reason: error.toString(),\n });\n }\n\n const {error: detailedError} = getErrorDetails(error, 'exitConference', CC_FILE);\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_CONFERENCE_EXIT_FAILED,\n {\n taskId: this.data.interactionId,\n requestInteractionId,\n agentId: this.data.agentId,\n error: error.toString(),\n ...MetricsManager.getCommonTrackingFieldForAQMResponseFailed(error.details || {}),\n },\n ['operational', 'behavioral', 'business']\n );\n\n LoggerProxy.error(`Failed to exit conference`, {\n module: CC_FILE,\n method: 'exitConference',\n interactionId: requestInteractionId,\n });\n\n throw detailedError;\n }\n }\n\n /**\n * Transfer the conference to another participant.\n * Per conference-spec.md: Only primary agent can transfer conference.\n * After transfer, the transferring agent exits to wrapup.\n *\n * @returns Promise<TaskResponse>\n * @throws Error if not in conference or transfer fails\n * @example\n * ```typescript\n * task.transferConference().then(() => {}).catch(() => {});\n * ```\n */\n public async transferConference(): Promise<TaskResponse> {\n // Validate we're in conference or consulting state\n // CONSULTING is allowed because agent can transfer conference while consulting\n // (transfers ownership to the consulted agent)\n const state = this.getStateMachineSnapshot();\n const isValidState =\n state && (state.matches(TaskState.CONFERENCING) || state.matches(TaskState.CONSULTING));\n if (!isValidState) {\n const currentState = state?.value as TaskState;\n const error = new Error(`Cannot transfer conference in ${currentState} state`);\n LoggerProxy.error('Transfer conference operation not allowed', {\n module: CC_FILE,\n method: 'transferConference',\n interactionId: this.data.interactionId,\n });\n throw error;\n }\n\n // Send state machine event\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.TRANSFER_CONFERENCE,\n agentId: this.data.agentId,\n });\n }\n\n const requestInteractionId =\n this.data.interaction?.mainInteractionId || this.data.interactionId;\n\n try {\n LoggerProxy.info(`Transferring conference`, {\n module: CC_FILE,\n method: 'transferConference',\n interactionId: requestInteractionId,\n });\n\n this.metricsManager.timeEvent([\n METRIC_EVENT_NAMES.TASK_CONFERENCE_TRANSFER_SUCCESS,\n METRIC_EVENT_NAMES.TASK_CONFERENCE_TRANSFER_FAILED,\n ]);\n\n const response = await this.contact.conferenceTransfer({\n interactionId: requestInteractionId,\n });\n\n // Send success event to transition state\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.TRANSFER_CONFERENCE_SUCCESS,\n taskData: response.data,\n });\n }\n\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_CONFERENCE_TRANSFER_SUCCESS,\n {\n taskId: this.data.interactionId,\n requestInteractionId,\n agentId: this.data.agentId,\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(response),\n },\n ['operational', 'behavioral', 'business']\n );\n\n LoggerProxy.log(`Successfully transferred conference`, {\n module: CC_FILE,\n method: 'transferConference',\n trackingId: response.trackingId,\n interactionId: requestInteractionId,\n });\n\n return response;\n } catch (error) {\n // Send failure event\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.TRANSFER_CONFERENCE_FAILED,\n reason: error.toString(),\n });\n }\n\n const {error: detailedError} = getErrorDetails(error, 'transferConference', CC_FILE);\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_CONFERENCE_TRANSFER_FAILED,\n {\n taskId: this.data.interactionId,\n requestInteractionId,\n agentId: this.data.agentId,\n error: error.toString(),\n ...MetricsManager.getCommonTrackingFieldForAQMResponseFailed(error.details || {}),\n },\n ['operational', 'behavioral', 'business']\n );\n\n LoggerProxy.error(`Failed to transfer conference`, {\n module: CC_FILE,\n method: 'transferConference',\n interactionId: requestInteractionId,\n });\n\n throw detailedError;\n }\n }\n\n /**\n * Toggle between consult call and main call during consulting.\n * If on consult leg (consultCallHeld = false), switches to main call by holding consult.\n * If on main call (consultCallHeld = true), switches to consult by resuming consult.\n *\n * @returns Promise<TaskResponse>\n * @throws Error if not in CONSULTING state or no consult media resource\n * @example\n * ```typescript\n * await task.switchCall();\n * ```\n */\n public async switchCall(): Promise<TaskResponse> {\n // Validate we're in CONSULTING state\n const state = this.getStateMachineSnapshot();\n if (!state?.matches(TaskState.CONSULTING)) {\n const currentState = state?.value as TaskState;\n const error = new Error(`Cannot switch call in ${currentState} state`);\n LoggerProxy.error('Switch call operation not allowed', {\n module: CC_FILE,\n method: 'switchCall',\n interactionId: this.data.interactionId,\n });\n throw error;\n }\n\n // Validate we have a consult media resource\n const consultMediaResourceId = getConsultMediaResourceId(\n this.data.interaction,\n this.data.consultMediaResourceId,\n this.data.agentId\n );\n if (!consultMediaResourceId) {\n const error = new Error('No consult media resource available');\n LoggerProxy.error('Switch call failed - no consult media resource', {\n module: CC_FILE,\n method: 'switchCall',\n interactionId: this.data.interactionId,\n });\n throw error;\n }\n\n const context = state.context;\n const isOnConsultLeg = !context.consultCallHeld;\n\n // Determine direction and send appropriate state machine event\n const targetEvent = isOnConsultLeg\n ? TaskEvent.SWITCH_TO_MAIN_CALL\n : TaskEvent.SWITCH_TO_CONSULT;\n const revertEvent = isOnConsultLeg\n ? TaskEvent.SWITCH_TO_CONSULT\n : TaskEvent.SWITCH_TO_MAIN_CALL;\n\n if (this.stateMachineService) {\n this.stateMachineService.send({type: targetEvent});\n }\n\n this.metricsManager.timeEvent([\n METRIC_EVENT_NAMES.TASK_SWITCH_CALL_SUCCESS,\n METRIC_EVENT_NAMES.TASK_SWITCH_CALL_FAILED,\n ]);\n\n try {\n if (isOnConsultLeg) {\n const response = await this.contact.unHold({\n interactionId: this.data.interactionId,\n data: {mediaResourceId: this.data.mediaResourceId},\n });\n\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_SWITCH_CALL_SUCCESS,\n {\n taskId: this.data.interactionId,\n direction: 'toMainCall',\n mediaResourceId: consultMediaResourceId,\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(response),\n },\n ['operational', 'behavioral']\n );\n\n LoggerProxy.log(`Switched to main call successfully`, {\n module: CC_FILE,\n method: 'switchCall',\n trackingId: response.trackingId,\n interactionId: this.data.interactionId,\n });\n\n return response;\n }\n\n const response = await this.contact.hold({\n interactionId: this.data.interactionId,\n data: {mediaResourceId: this.data.mediaResourceId},\n });\n\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_SWITCH_CALL_SUCCESS,\n {\n taskId: this.data.interactionId,\n direction: 'toConsultCall',\n mediaResourceId: consultMediaResourceId,\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(response),\n },\n ['operational', 'behavioral']\n );\n\n LoggerProxy.log(`Switched to consult call successfully`, {\n module: CC_FILE,\n method: 'switchCall',\n trackingId: response.trackingId,\n interactionId: this.data.interactionId,\n });\n\n return response;\n } catch (error) {\n if (this.stateMachineService) {\n this.stateMachineService.send({type: revertEvent});\n }\n\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_SWITCH_CALL_FAILED,\n {\n taskId: this.data.interactionId,\n direction: isOnConsultLeg ? 'toMainCall' : 'toConsultCall',\n mediaResourceId: consultMediaResourceId,\n error: error.toString(),\n ...MetricsManager.getCommonTrackingFieldForAQMResponseFailed(error.details || {}),\n },\n ['operational', 'behavioral']\n );\n\n const {error: detailedError} = getErrorDetails(error, 'switchCall', CC_FILE);\n LoggerProxy.error(`Failed to switch call`, {\n module: CC_FILE,\n method: 'switchCall',\n interactionId: this.data.interactionId,\n });\n throw detailedError;\n }\n }\n\n protected override getChannelSpecificActionOverrides() {\n const baseOverrides = super.getChannelSpecificActionOverrides();\n\n return {\n ...baseOverrides,\n emitTaskHold: this.createEmitSelfAction(TASK_EVENTS.TASK_HOLD, {updateTaskData: true}),\n emitTaskResume: this.createEmitSelfAction(TASK_EVENTS.TASK_RESUME, {updateTaskData: true}),\n emitTaskRecordingStarted: this.createEmitSelfAction(TASK_EVENTS.TASK_RECORDING_STARTED, {\n updateTaskData: true,\n }),\n emitTaskRecordingPaused: this.createEmitSelfAction(TASK_EVENTS.TASK_RECORDING_PAUSED, {\n updateTaskData: true,\n }),\n emitTaskRecordingPauseFailed: this.createEmitSelfAction(\n TASK_EVENTS.TASK_RECORDING_PAUSE_FAILED,\n {updateTaskData: true}\n ),\n emitTaskRecordingResumed: this.createEmitSelfAction(TASK_EVENTS.TASK_RECORDING_RESUMED, {\n updateTaskData: true,\n }),\n emitTaskRecordingResumeFailed: this.createEmitSelfAction(\n TASK_EVENTS.TASK_RECORDING_RESUME_FAILED,\n {updateTaskData: true}\n ),\n // Conference event emitters\n emitTaskParticipantJoined: this.createEmitSelfAction(TASK_EVENTS.TASK_PARTICIPANT_JOINED, {\n updateTaskData: true,\n }),\n emitTaskParticipantLeft: this.createEmitSelfAction(TASK_EVENTS.TASK_PARTICIPANT_LEFT, {\n updateTaskData: true,\n }),\n emitTaskConferenceStarted: this.createEmitSelfAction(TASK_EVENTS.TASK_CONFERENCE_STARTED, {\n updateTaskData: true,\n }),\n emitTaskConferenceEnded: this.createEmitSelfAction(TASK_EVENTS.TASK_CONFERENCE_ENDED, {\n updateTaskData: true,\n }),\n emitTaskConferenceFailed: this.createEmitSelfAction(TASK_EVENTS.TASK_CONFERENCE_FAILED, {\n updateTaskData: true,\n }),\n emitTaskExitConference: this.createEmitSelfAction(TASK_EVENTS.TASK_EXIT_CONFERENCE, {\n updateTaskData: false,\n }),\n emitTaskTransferConference: this.createEmitSelfAction(TASK_EVENTS.TASK_TRANSFER_CONFERENCE, {\n updateTaskData: false,\n }),\n emitTaskSwitchCall: this.createEmitSelfAction(TASK_EVENTS.TASK_SWITCH_CALL, {\n updateTaskData: false,\n }),\n emitTaskTransferConferenceFailed: this.createEmitSelfAction(\n TASK_EVENTS.TASK_CONFERENCE_TRANSFER_FAILED,\n {updateTaskData: true}\n ),\n emitTaskOutdialFailed: this.createEmitSelfAction(TASK_EVENTS.TASK_OUTDIAL_FAILED, {\n updateTaskData: true,\n }),\n };\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_constants","require","_Utils","_types","_Task","_interopRequireDefault","_loggerProxy","_MetricsManager","_constants2","_stateMachine","_TaskUtils","e","__esModule","default","Voice","Task","constructor","contact","data","callOptions","wrapupData","agentId","resolvedOptions","isEndTaskEnabled","isEndConsultEnabled","voiceVariant","VOICE_VARIANT","PSTN","isRecordingEnabled","getStateMachineSnapshot","stateMachineService","getSnapshot","accept","unsupportedMethodError","METHODS","ACCEPT","decline","REJECT","hold","holdResume","resume","snapshot","snapshotState","value","mainInteractionId","interaction","interactionId","mainMediaResource","media","mediaResourceId","mediaHoldState","isHold","shouldHold","TaskState","HELD","CONNECTED","state","currentState","matches","error","Error","LoggerProxy","module","CC_FILE","method","HOLD_RESUME","initiatingEvent","TaskEvent","HOLD_INITIATED","UNHOLD_INITIATED","send","type","info","successEvt","failedEvt","METRIC_EVENT_NAMES","TASK_HOLD_SUCCESS","TASK_HOLD_FAILED","TASK_RESUME_SUCCESS","TASK_RESUME_FAILED","metricsManager","timeEvent","response","HOLD_SUCCESS","trackEvent","taskId","MetricsManager","getCommonTrackingFieldForAQMResponse","log","trackingId","unHold","UNHOLD_SUCCESS","failureEvent","HOLD_FAILED","UNHOLD_FAILED","reason","toString","detailedError","getErrorDetails","getCommonTrackingFieldForAQMResponseFailed","details","pauseRecording","recordingControlsAvailable","recordingInProgress","context","recordingActive","Boolean","TASK_PAUSE_RECORDING_SUCCESS","TASK_PAUSE_RECORDING_FAILED","result","resumeRecording","resumeRecordingPayload","recordingPaused","TASK_RESUME_RECORDING_SUCCESS","TASK_RESUME_RECORDING_FAILED","autoResumed","consult","consultPayload","canConsult","CONFERENCING","CONSULT","destination","to","destinationType","requestInteractionId","TASK_CONSULT_START_SUCCESS","TASK_CONSULT_START_FAILED","CONSULT_SUCCESS","taskData","CONSULT_FAILED","endConsult","consultEndPayload","TASK_CONSULT_END_SUCCESS","TASK_CONSULT_END_FAILED","consultEnd","transfer","payload","TRANSFER_CALL","TASK_TRANSFER_SUCCESS","TASK_TRANSFER_FAILED","normalizedDestinationType","toLowerCase","CONSULT_TRANSFER_DESTINATION_TYPE","QUEUE","consultContext","destAgent","consultDestinationAgentId","destAgentId","AGENT","consultTransfer","isConsultTransfer","err","consultConference","derivedDestAgentId","calculateDestAgentId","derivedDestType","calculateDestType","resolvedDestinationType","consultDestinationType","consultationData","MERGE_TO_CONFERENCE","CONSULT_CONFERENCE","paramsDataForConferenceV2","buildConsultConferenceParamData","CONFERENCE_START","TASK_CONFERENCE_START_SUCCESS","CONFERENCE_FAILED","failedParamsData","TASK_CONFERENCE_START_FAILED","exitConference","isConferencingState","isConferenceInProgressFromData","getIsConferenceInProgress","EXIT_CONFERENCE","TASK_CONFERENCE_EXIT_SUCCESS","TASK_CONFERENCE_EXIT_FAILED","EXIT_CONFERENCE_SUCCESS","EXIT_CONFERENCE_FAILED","transferConference","isValidState","CONSULTING","TRANSFER_CONFERENCE","TASK_CONFERENCE_TRANSFER_SUCCESS","TASK_CONFERENCE_TRANSFER_FAILED","conferenceTransfer","TRANSFER_CONFERENCE_SUCCESS","TRANSFER_CONFERENCE_FAILED","switchCall","consultMediaResourceId","getConsultMediaResourceId","isOnConsultLeg","consultCallHeld","targetEvent","SWITCH_TO_MAIN_CALL","SWITCH_TO_CONSULT","revertEvent","TASK_SWITCH_CALL_SUCCESS","TASK_SWITCH_CALL_FAILED","direction","getChannelSpecificActionOverrides","baseOverrides","emitTaskHold","createEmitSelfAction","TASK_EVENTS","TASK_HOLD","updateTaskData","emitTaskResume","TASK_RESUME","emitTaskRecordingStarted","TASK_RECORDING_STARTED","emitTaskRecordingPaused","TASK_RECORDING_PAUSED","emitTaskRecordingPauseFailed","TASK_RECORDING_PAUSE_FAILED","emitTaskRecordingResumed","TASK_RECORDING_RESUMED","emitTaskRecordingResumeFailed","TASK_RECORDING_RESUME_FAILED","emitTaskParticipantJoined","TASK_PARTICIPANT_JOINED","emitTaskParticipantLeft","TASK_PARTICIPANT_LEFT","emitTaskConferenceStarted","TASK_CONFERENCE_STARTED","emitTaskConferenceEnded","TASK_CONFERENCE_ENDED","emitTaskConferenceFailed","TASK_CONFERENCE_FAILED","emitTaskExitConference","TASK_EXIT_CONFERENCE","emitTaskTransferConference","TASK_TRANSFER_CONFERENCE","emitTaskSwitchCall","TASK_SWITCH_CALL","emitTaskTransferConferenceFailed","emitTaskOutdialFailed","TASK_OUTDIAL_FAILED","exports"],"sources":["Voice.ts"],"sourcesContent":["import {CC_FILE, METHODS} from '../../../constants';\nimport {\n buildConsultConferenceParamData,\n calculateDestAgentId,\n calculateDestType,\n getErrorDetails,\n} from '../../core/Utils';\nimport routingContact from '../contact';\nimport {\n ConsultPayload,\n ConsultEndPayload,\n ResumeRecordingPayload,\n TaskData,\n TaskResponse,\n IVoice,\n VoiceUIControlOptions,\n TransferPayLoad,\n ConsultTransferPayLoad,\n consultConferencePayloadData,\n CONSULT_TRANSFER_DESTINATION_TYPE,\n TASK_EVENTS,\n VOICE_VARIANT,\n} from '../types';\nimport Task from '../Task';\nimport LoggerProxy from '../../../logger-proxy';\nimport MetricsManager from '../../../metrics/MetricsManager';\nimport {METRIC_EVENT_NAMES} from '../../../metrics/constants';\nimport {TaskState, TaskEvent} from '../state-machine';\nimport {WrapupData} from '../../config/types';\nimport {getConsultMediaResourceId, getIsConferenceInProgress} from '../TaskUtils';\n\nexport default class Voice extends Task implements IVoice {\n constructor(\n contact: ReturnType<typeof routingContact>,\n data: TaskData,\n callOptions?: VoiceUIControlOptions,\n wrapupData?: WrapupData,\n agentId?: string\n ) {\n const resolvedOptions = {\n isEndTaskEnabled: callOptions?.isEndTaskEnabled ?? true,\n isEndConsultEnabled: callOptions?.isEndConsultEnabled ?? true,\n voiceVariant: callOptions?.voiceVariant ?? VOICE_VARIANT.PSTN,\n isRecordingEnabled: callOptions?.isRecordingEnabled ?? true,\n };\n\n super(\n contact,\n data,\n {\n ...resolvedOptions,\n },\n wrapupData,\n agentId\n );\n }\n\n private getStateMachineSnapshot() {\n return this.stateMachineService?.getSnapshot?.();\n }\n\n /**\n * This method is used to accept the task.\n * It is expected to be overridden by child classes.\n * @returns Promise<TaskResponse>\n * @throws Error\n */\n public async accept(): Promise<TaskResponse> {\n super.unsupportedMethodError(METHODS.ACCEPT);\n }\n\n /**\n * This method is used to decline the task.\n * It is expected to be overridden by child classes.\n * @returns Promise<TaskResponse>\n * @throws Error\n */\n public async decline(): Promise<TaskResponse> {\n super.unsupportedMethodError(METHODS.REJECT);\n }\n\n /**\n * This is used to hold the task.\n * @returns Promise<TaskResponse>\n * @throws Error\n * @example\n * ```typescript\n * task.hold().then(()=>{}).catch(()=>{})\n * ```\n * */\n public async hold(): Promise<TaskResponse> {\n return this.holdResume();\n }\n\n /**\n * This is used to resume the task.\n * @returns Promise<TaskResponse>\n * @throws Error\n * @example\n * ```typescript\n * task.resume().then(()=>{}).catch(()=>{})\n * ```\n * */\n public async resume(): Promise<TaskResponse> {\n return this.holdResume();\n }\n\n /**\n * This is used to hold or resume the task.\n * @param isHeld: boolean - true to hold the task, false to resume it\n * @returns Promise<TaskResponse>\n * @throws Error\n * @example\n * ```typescript\n * task.holdResume(isHeld: true).then(()=>{}).catch(()=>{})\n * ```\n * */\n public async holdResume(): Promise<TaskResponse> {\n /* \n Determine if the task is being held or resumed based on the media resource state\n If the media resource is not found, default to resuming the task\n */\n const snapshot = this.getStateMachineSnapshot();\n const snapshotState = snapshot?.value as TaskState | undefined;\n const mainInteractionId = this.data.interaction?.mainInteractionId || this.data.interactionId;\n const mainMediaResource =\n this.data.interaction?.media?.[mainInteractionId]?.mediaResourceId ||\n this.data.mediaResourceId;\n const mediaHoldState =\n this.data.interaction?.media?.[mainInteractionId]?.isHold ??\n this.data.interaction.media?.[mainMediaResource]?.isHold;\n let shouldHold = !(mediaHoldState ?? false);\n if (snapshotState === TaskState.HELD) {\n shouldHold = false;\n } else if (snapshotState === TaskState.CONNECTED) {\n shouldHold = true;\n }\n\n // Validate operation is allowed in current state\n const state = snapshot;\n if (state) {\n const currentState = state.value as TaskState;\n if (shouldHold) {\n if (!state.matches(TaskState.CONNECTED)) {\n const error = new Error(`Cannot hold call in current state: ${currentState}`);\n LoggerProxy.error('Hold operation not allowed', {\n module: CC_FILE,\n method: METHODS.HOLD_RESUME,\n interactionId: this.data.interactionId,\n });\n throw error;\n }\n } else if (!state.matches(TaskState.HELD)) {\n const error = new Error(`Cannot resume call in current state: ${currentState}`);\n LoggerProxy.error('Resume operation not allowed', {\n module: CC_FILE,\n method: METHODS.HOLD_RESUME,\n interactionId: this.data.interactionId,\n });\n throw error;\n }\n }\n\n // Send initiating event to transition to intermediate state\n if (this.stateMachineService) {\n const initiatingEvent = shouldHold ? TaskEvent.HOLD_INITIATED : TaskEvent.UNHOLD_INITIATED;\n this.stateMachineService.send({\n type: initiatingEvent,\n mediaResourceId: mainMediaResource,\n });\n }\n\n LoggerProxy.info(`${shouldHold ? 'Holding' : 'Resuming'} task`, {\n module: CC_FILE,\n method: METHODS.HOLD_RESUME,\n interactionId: this.data.interactionId,\n });\n const [successEvt, failedEvt] = shouldHold\n ? [METRIC_EVENT_NAMES.TASK_HOLD_SUCCESS, METRIC_EVENT_NAMES.TASK_HOLD_FAILED]\n : [METRIC_EVENT_NAMES.TASK_RESUME_SUCCESS, METRIC_EVENT_NAMES.TASK_RESUME_FAILED];\n\n this.metricsManager.timeEvent([successEvt, failedEvt]);\n\n try {\n let response: TaskResponse;\n if (shouldHold) {\n response = await this.contact.hold({\n interactionId: this.data.interactionId,\n data: {mediaResourceId: mainMediaResource},\n });\n\n // Send success event to complete the transition\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.HOLD_SUCCESS,\n mediaResourceId: mainMediaResource,\n });\n }\n\n this.metricsManager.trackEvent(\n successEvt,\n {\n taskId: this.data.interactionId,\n mediaResourceId: mainMediaResource,\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(response),\n },\n ['operational', 'behavioral']\n );\n LoggerProxy.log(`Task placed on hold successfully`, {\n module: CC_FILE,\n method: METHODS.HOLD_RESUME,\n trackingId: response.trackingId,\n interactionId: this.data.interactionId,\n });\n } else {\n response = await this.contact.unHold({\n interactionId: this.data.interactionId,\n data: {mediaResourceId: mainMediaResource},\n });\n\n // Send success event to complete the transition\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.UNHOLD_SUCCESS,\n mediaResourceId: mainMediaResource,\n });\n }\n\n this.metricsManager.trackEvent(\n successEvt,\n {\n taskId: this.data.interactionId,\n mainInteractionId,\n mediaResourceId: mainMediaResource,\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(response),\n },\n ['operational', 'behavioral']\n );\n LoggerProxy.log(`Task resumed successfully`, {\n module: CC_FILE,\n method: METHODS.HOLD_RESUME,\n trackingId: response.trackingId,\n interactionId: this.data.interactionId,\n });\n }\n\n return response;\n } catch (error) {\n const failureEvent = shouldHold ? TaskEvent.HOLD_FAILED : TaskEvent.UNHOLD_FAILED;\n this.stateMachineService.send({\n type: failureEvent,\n reason: error.toString(),\n mediaResourceId: this.data.mediaResourceId,\n });\n\n const {error: detailedError} = getErrorDetails(error, 'holdResume', CC_FILE);\n this.metricsManager.trackEvent(\n failedEvt,\n shouldHold\n ? {\n taskId: this.data.interactionId,\n mediaResourceId: this.data.mediaResourceId,\n error: error.toString(),\n ...MetricsManager.getCommonTrackingFieldForAQMResponseFailed(error.details || {}),\n }\n : {\n taskId: this.data.interactionId,\n error: error.toString(),\n ...MetricsManager.getCommonTrackingFieldForAQMResponseFailed(error.details || {}),\n },\n ['operational', 'behavioral']\n );\n throw detailedError;\n }\n }\n\n /**\n * This is used to pause the call recording\n * @returns Promise<TaskResponse>\n * @throws Error\n * @example\n * ```typescript\n * task.pauseRecording().then(()=>{}).catch(()=>{});\n * ```\n */\n public async pauseRecording(): Promise<TaskResponse> {\n // Validate recording is active\n const state = this.getStateMachineSnapshot();\n if (state) {\n const {recordingControlsAvailable, recordingInProgress} = state.context as {\n recordingControlsAvailable?: boolean;\n recordingInProgress?: boolean;\n };\n const recordingActive = Boolean(recordingControlsAvailable && recordingInProgress);\n if (!recordingActive) {\n const error = new Error('Recording is not active or already paused');\n LoggerProxy.error('Pause recording operation not allowed', {\n module: CC_FILE,\n method: 'pauseRecording',\n interactionId: this.data.interactionId,\n });\n throw error;\n }\n }\n\n try {\n LoggerProxy.info(`Pausing recording`, {\n module: CC_FILE,\n method: 'pauseRecording',\n interactionId: this.data.interactionId,\n });\n this.metricsManager.timeEvent([\n METRIC_EVENT_NAMES.TASK_PAUSE_RECORDING_SUCCESS,\n METRIC_EVENT_NAMES.TASK_PAUSE_RECORDING_FAILED,\n ]);\n const result = await this.contact.pauseRecording({interactionId: this.data.interactionId});\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_PAUSE_RECORDING_SUCCESS,\n {\n taskId: this.data.interactionId,\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(result),\n },\n ['operational', 'behavioral', 'business']\n );\n LoggerProxy.log(`Recording paused successfully`, {\n module: CC_FILE,\n method: 'pauseRecording',\n trackingId: result.trackingId,\n interactionId: this.data.interactionId,\n });\n\n return result;\n } catch (error) {\n const {error: detailedError} = getErrorDetails(error, 'pauseRecording', CC_FILE);\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_PAUSE_RECORDING_FAILED,\n {\n taskId: this.data.interactionId,\n error: error.toString(),\n ...MetricsManager.getCommonTrackingFieldForAQMResponseFailed(error.details || {}),\n },\n ['operational', 'behavioral', 'business']\n );\n throw detailedError;\n }\n }\n\n /**\n * This is used to pause the call recording\n * @param resumeRecordingPayload\n * @returns Promise<TaskResponse>\n * @throws Error\n * @example\n * ```typescript\n * task.resumeRecording(resumeRecordingPayload).then(()=>{}).catch(()=>{});\n * ```\n */\n public async resumeRecording(\n resumeRecordingPayload?: ResumeRecordingPayload\n ): Promise<TaskResponse> {\n // Validate recording is paused\n const state = this.getStateMachineSnapshot();\n if (state) {\n const {recordingControlsAvailable, recordingInProgress} = state.context as {\n recordingControlsAvailable?: boolean;\n recordingInProgress?: boolean;\n };\n const recordingPaused = Boolean(recordingControlsAvailable && !recordingInProgress);\n if (!recordingPaused) {\n const error = new Error('Recording is not paused');\n LoggerProxy.error('Resume recording operation not allowed', {\n module: CC_FILE,\n method: 'resumeRecording',\n interactionId: this.data.interactionId,\n });\n throw error;\n }\n }\n\n try {\n LoggerProxy.info(`Resuming recording`, {\n module: CC_FILE,\n method: 'resumeRecording',\n interactionId: this.data.interactionId,\n });\n this.metricsManager.timeEvent([\n METRIC_EVENT_NAMES.TASK_RESUME_RECORDING_SUCCESS,\n METRIC_EVENT_NAMES.TASK_RESUME_RECORDING_FAILED,\n ]);\n resumeRecordingPayload ??= {autoResumed: false};\n\n const result = await this.contact.resumeRecording({\n interactionId: this.data.interactionId,\n data: resumeRecordingPayload,\n });\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_RESUME_RECORDING_SUCCESS,\n {\n taskId: this.data.interactionId,\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(result),\n },\n ['operational', 'behavioral', 'business']\n );\n LoggerProxy.log(`Recording resumed successfully`, {\n module: CC_FILE,\n method: 'resumeRecording',\n trackingId: result.trackingId,\n interactionId: this.data.interactionId,\n });\n\n return result;\n } catch (error) {\n const {error: detailedError} = getErrorDetails(error, 'resumeRecording', CC_FILE);\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_RESUME_RECORDING_FAILED,\n {\n taskId: this.data.interactionId,\n error: error.toString(),\n ...MetricsManager.getCommonTrackingFieldForAQMResponseFailed(error.details || {}),\n },\n ['operational', 'behavioral', 'business']\n );\n throw detailedError;\n }\n }\n\n /**\n * This is used to consult the task\n * @param consultPayload\n * @returns Promise<TaskResponse>\n * @throws Error\n * @example\n * ```typescript\n * const consultPayload = {\n * destination: 'myBuddyAgentId',\n * destinationType: DESTINATION_TYPE.AGENT,\n * }\n * task.consult(consultPayload).then(()=>{}).catch(()=>{});\n * ```\n * */\n public async consult(consultPayload?: ConsultPayload): Promise<TaskResponse> {\n // Validate consult is allowed\n const state = this.getStateMachineSnapshot();\n const canConsult =\n state &&\n (state.matches(TaskState.CONNECTED) ||\n state.matches(TaskState.HELD) ||\n state.matches(TaskState.CONFERENCING));\n\n if (!canConsult) {\n const currentState = state?.value as TaskState;\n const error = new Error(`Cannot initiate consult in ${currentState} state`);\n LoggerProxy.error('Consult operation not allowed', {\n module: CC_FILE,\n method: 'consult',\n interactionId: this.data.interactionId,\n });\n throw error;\n }\n\n // Send initiating event to transition to CONSULT_INITIATING state\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.CONSULT,\n destination: consultPayload.to,\n destinationType: consultPayload.destinationType,\n });\n }\n\n const requestInteractionId =\n this.data.interaction?.mainInteractionId || this.data.interactionId;\n\n try {\n LoggerProxy.info(`Starting consult`, {\n module: CC_FILE,\n method: 'consult',\n interactionId: requestInteractionId,\n });\n this.metricsManager.timeEvent([\n METRIC_EVENT_NAMES.TASK_CONSULT_START_SUCCESS,\n METRIC_EVENT_NAMES.TASK_CONSULT_START_FAILED,\n ]);\n const result = await this.contact.consult({\n interactionId: requestInteractionId,\n data: consultPayload,\n });\n\n // Send success event to transition to CONSULTING state\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.CONSULT_SUCCESS,\n taskData: result.data,\n });\n }\n\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_CONSULT_START_SUCCESS,\n {\n taskId: this.data.interactionId,\n requestInteractionId,\n destination: consultPayload.to,\n destinationType: consultPayload.destinationType,\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(result),\n },\n ['operational', 'behavioral', 'business']\n );\n LoggerProxy.log(`Consult successfully initiated to ${consultPayload.to}`, {\n module: CC_FILE,\n method: 'consult',\n trackingId: result.trackingId,\n interactionId: requestInteractionId,\n });\n\n return result;\n } catch (error) {\n this.stateMachineService.send({\n type: TaskEvent.CONSULT_FAILED,\n reason: error.toString(),\n });\n\n const {error: detailedError} = getErrorDetails(error, 'consult', CC_FILE);\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_CONSULT_START_FAILED,\n {\n taskId: this.data.interactionId,\n requestInteractionId,\n destination: consultPayload.to,\n destinationType: consultPayload.destinationType,\n error: error.toString(),\n ...MetricsManager.getCommonTrackingFieldForAQMResponseFailed(error.details || {}),\n },\n ['operational', 'behavioral', 'business']\n );\n throw detailedError;\n }\n }\n\n /**\n * This is used to end the consult session on the task.\n * @param consultEndPayload - Payload indicating consult end flags and identifiers\n * @returns Promise<TaskResponse>\n * @throws Error\n * @example\n * ```typescript\n * task.endConsult({\n * isConsult: true,\n * queueId: 'myQueueId',\n * taskId: 'taskId',\n * });\n * ```\n */\n public async endConsult(consultEndPayload?: ConsultEndPayload): Promise<TaskResponse> {\n const requestInteractionId =\n this.data.interaction?.mainInteractionId || this.data.interactionId;\n\n try {\n LoggerProxy.info(`Ending consult`, {\n module: CC_FILE,\n method: 'endConsult',\n interactionId: requestInteractionId,\n });\n this.metricsManager.timeEvent([\n METRIC_EVENT_NAMES.TASK_CONSULT_END_SUCCESS,\n METRIC_EVENT_NAMES.TASK_CONSULT_END_FAILED,\n ]);\n const result = await this.contact.consultEnd({\n interactionId: requestInteractionId,\n data: consultEndPayload,\n });\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_CONSULT_END_SUCCESS,\n {\n taskId: this.data.interactionId,\n requestInteractionId,\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(result),\n },\n ['operational', 'behavioral', 'business']\n );\n LoggerProxy.log(`Consult ended successfully`, {\n module: CC_FILE,\n method: 'endConsult',\n trackingId: result.trackingId,\n interactionId: this.data.interactionId,\n });\n\n return result;\n } catch (error) {\n const {error: detailedError} = getErrorDetails(error, 'endConsult', CC_FILE);\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_CONSULT_END_FAILED,\n {\n taskId: this.data.interactionId,\n requestInteractionId,\n error: error.toString(),\n ...MetricsManager.getCommonTrackingFieldForAQMResponseFailed(error.details || {}),\n },\n ['operational', 'behavioral', 'business']\n );\n throw detailedError;\n }\n }\n\n /**\n * This is used to transfer the task.\n * @param payload - Transfer payload\n * @returns Promise<TaskResponse>\n * @throws Error\n * @example\n * ```typescript\n * task.transfer({\n * to: 'destinationId',\n * destinationType: DESTINATION_TYPE.AGENT,\n * consult: true, // Optional, if true will perform a consult transfer else blind transfer\n * });\n * ```\n */\n public async transfer(payload: TransferPayLoad): Promise<TaskResponse> {\n try {\n LoggerProxy.info(`Transferring task to ${payload.to}`, {\n module: CC_FILE,\n method: METHODS.TRANSFER_CALL,\n interactionId: this.data.interactionId,\n });\n this.metricsManager.timeEvent([\n METRIC_EVENT_NAMES.TASK_TRANSFER_SUCCESS,\n METRIC_EVENT_NAMES.TASK_TRANSFER_FAILED,\n ]);\n\n // consult transfer path\n if (this.data.interaction.state === 'consulting') {\n const normalizedDestinationType =\n payload.destinationType === 'Agent' || payload.destinationType === 'Queue'\n ? (payload.destinationType.toLowerCase() as ConsultTransferPayLoad['destinationType'])\n : payload.destinationType;\n let consultPayload: ConsultTransferPayLoad = {\n to: payload.to,\n destinationType: normalizedDestinationType,\n };\n\n if (normalizedDestinationType === CONSULT_TRANSFER_DESTINATION_TYPE.QUEUE) {\n const consultContext = this.getStateMachineSnapshot()?.context;\n const destAgent = consultContext?.consultDestinationAgentId || this.data.destAgentId;\n if (!destAgent) {\n throw new Error('No agent has accepted this queue consult yet');\n }\n consultPayload = {\n to: destAgent,\n destinationType: CONSULT_TRANSFER_DESTINATION_TYPE.AGENT,\n };\n }\n\n const result = await this.contact.consultTransfer({\n interactionId: this.data.interactionId,\n data: consultPayload,\n });\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_TRANSFER_SUCCESS,\n {\n taskId: this.data.interactionId,\n destination: consultPayload.to,\n destinationType: consultPayload.destinationType,\n isConsultTransfer: true,\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(result),\n },\n ['operational', 'behavioral', 'business']\n );\n LoggerProxy.log(`Consult transfer completed successfully to ${consultPayload.to}`, {\n module: CC_FILE,\n method: METHODS.TRANSFER_CALL,\n trackingId: result.trackingId,\n interactionId: this.data.interactionId,\n });\n\n return result;\n }\n\n // standard blind transfer\n return await super.transfer({\n to: payload.to,\n destinationType: payload.destinationType,\n });\n } catch (err) {\n const {error: detailedError} = getErrorDetails(err, METHODS.TRANSFER_CALL, CC_FILE);\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_TRANSFER_FAILED,\n {\n taskId: this.data.interactionId,\n destination: payload.to,\n destinationType: payload.destinationType,\n isConsultTransfer: this.data.interaction.state === 'consulting',\n error: err.toString(),\n ...MetricsManager.getCommonTrackingFieldForAQMResponseFailed(err.details || {}),\n },\n ['operational', 'behavioral', 'business']\n );\n throw detailedError;\n }\n }\n\n /**\n * Start a consult conference, merging main and consult calls.\n */\n public async consultConference(): Promise<TaskResponse> {\n const derivedDestAgentId =\n this.data.interaction && this.data.agentId\n ? calculateDestAgentId(this.data.interaction, this.data.agentId)\n : '';\n const derivedDestType =\n this.data.interaction && this.data.agentId\n ? calculateDestType(this.data.interaction, this.data.agentId)\n : '';\n\n // derivedDestType is most reliable as it inspects live interaction participants\n const resolvedDestinationType =\n derivedDestType ||\n this.getStateMachineSnapshot()?.context?.consultDestinationType ||\n this.data.destinationType ||\n 'agent';\n\n const consultationData: consultConferencePayloadData = {\n agentId: this.data.agentId,\n destinationType: resolvedDestinationType,\n // derivedDestAgentId is most reliable as it resolves epId for EP_DN\n // and agent ID for regular agents from live interaction data\n destAgentId:\n derivedDestAgentId ||\n this.getStateMachineSnapshot()?.context?.consultDestinationAgentId ||\n this.data.destAgentId,\n };\n\n // Send state machine event to transition to CONF_INITIATING\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.MERGE_TO_CONFERENCE,\n });\n }\n\n try {\n if (!consultationData.destAgentId) {\n throw new Error('Unable to determine consult destination for conference');\n }\n\n LoggerProxy.info(`Initiating consult conference to ${consultationData.destAgentId}`, {\n module: CC_FILE,\n method: METHODS.CONSULT_CONFERENCE,\n interactionId: this.data.interactionId,\n });\n\n const paramsDataForConferenceV2 = buildConsultConferenceParamData(\n consultationData,\n this.data.interactionId\n );\n\n const response = await this.contact.consultConference({\n interactionId: paramsDataForConferenceV2.interactionId,\n data: paramsDataForConferenceV2.data,\n });\n\n // Send success event to transition to CONFERENCING\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.CONFERENCE_START,\n });\n }\n\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_CONFERENCE_START_SUCCESS,\n {\n taskId: this.data.interactionId,\n destination: paramsDataForConferenceV2.data.to,\n destinationType: paramsDataForConferenceV2.data.destinationType,\n agentId: paramsDataForConferenceV2.data.agentId,\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(response),\n },\n ['operational', 'behavioral', 'business']\n );\n\n LoggerProxy.log(`Consult conference started successfully`, {\n module: CC_FILE,\n method: METHODS.CONSULT_CONFERENCE,\n interactionId: this.data.interactionId,\n });\n\n return response;\n } catch (error) {\n // Send failure event to revert state\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.CONFERENCE_FAILED,\n reason: error.toString(),\n });\n }\n\n const {error: detailedError} = getErrorDetails(error, METHODS.CONSULT_CONFERENCE, CC_FILE);\n\n const failedParamsData = buildConsultConferenceParamData(\n consultationData,\n this.data.interactionId\n );\n\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_CONFERENCE_START_FAILED,\n {\n taskId: this.data.interactionId,\n destination: failedParamsData.data.to,\n destinationType: failedParamsData.data.destinationType,\n agentId: failedParamsData.data.agentId,\n error: error.toString(),\n ...MetricsManager.getCommonTrackingFieldForAQMResponseFailed(error.details || {}),\n },\n ['operational', 'behavioral', 'business']\n );\n\n LoggerProxy.error(`Failed to start consult conference`, {\n module: CC_FILE,\n method: METHODS.CONSULT_CONFERENCE,\n interactionId: this.data.interactionId,\n });\n\n throw detailedError;\n }\n }\n\n /**\n * Exit from a conference call.\n * Per conference-spec.md:\n * - Primary agent exits to wrapup\n * - Non-primary agent exits to available/connected\n * - Other participants continue the call\n *\n * @returns Promise<TaskResponse>\n * @throws Error if not in conference or exit fails\n * @example\n * ```typescript\n * task.exitConference().then(() => {}).catch(() => {});\n * ```\n */\n public async exitConference(): Promise<TaskResponse> {\n // Validate we're in conference state OR conference is in progress per task data\n // This handles cases where:\n // 1. State machine is in CONFERENCING state\n // 2. State machine is in CONNECTED but conference is active (e.g., ownership transferred)\n const state = this.getStateMachineSnapshot();\n const isConferencingState = state?.matches(TaskState.CONFERENCING);\n\n const isConferenceInProgressFromData = this.data ? getIsConferenceInProgress(this.data) : false;\n\n if (!state || (!isConferencingState && !isConferenceInProgressFromData)) {\n const currentState = state?.value as TaskState;\n const error = new Error(`Cannot exit conference in ${currentState} state`);\n LoggerProxy.error('Exit conference operation not allowed', {\n module: CC_FILE,\n method: 'exitConference',\n interactionId: this.data.interactionId,\n });\n throw error;\n }\n\n // Send state machine event\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.EXIT_CONFERENCE,\n agentId: this.data.agentId,\n });\n }\n\n const requestInteractionId =\n this.data.interaction?.mainInteractionId || this.data.interactionId;\n\n try {\n LoggerProxy.info(`Exiting conference`, {\n module: CC_FILE,\n method: 'exitConference',\n interactionId: requestInteractionId,\n });\n\n this.metricsManager.timeEvent([\n METRIC_EVENT_NAMES.TASK_CONFERENCE_EXIT_SUCCESS,\n METRIC_EVENT_NAMES.TASK_CONFERENCE_EXIT_FAILED,\n ]);\n\n const response = await this.contact.exitConference({\n interactionId: requestInteractionId,\n });\n\n // Send success event to transition state\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.EXIT_CONFERENCE_SUCCESS,\n taskData: response.data,\n });\n }\n\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_CONFERENCE_EXIT_SUCCESS,\n {\n taskId: this.data.interactionId,\n requestInteractionId,\n agentId: this.data.agentId,\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(response),\n },\n ['operational', 'behavioral', 'business']\n );\n\n LoggerProxy.log(`Successfully exited conference`, {\n module: CC_FILE,\n method: 'exitConference',\n trackingId: response.trackingId,\n interactionId: requestInteractionId,\n });\n\n return response;\n } catch (error) {\n // Send failure event\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.EXIT_CONFERENCE_FAILED,\n reason: error.toString(),\n });\n }\n\n const {error: detailedError} = getErrorDetails(error, 'exitConference', CC_FILE);\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_CONFERENCE_EXIT_FAILED,\n {\n taskId: this.data.interactionId,\n requestInteractionId,\n agentId: this.data.agentId,\n error: error.toString(),\n ...MetricsManager.getCommonTrackingFieldForAQMResponseFailed(error.details || {}),\n },\n ['operational', 'behavioral', 'business']\n );\n\n LoggerProxy.error(`Failed to exit conference`, {\n module: CC_FILE,\n method: 'exitConference',\n interactionId: requestInteractionId,\n });\n\n throw detailedError;\n }\n }\n\n /**\n * Transfer the conference to another participant.\n * Per conference-spec.md: Only primary agent can transfer conference.\n * After transfer, the transferring agent exits to wrapup.\n *\n * @returns Promise<TaskResponse>\n * @throws Error if not in conference or transfer fails\n * @example\n * ```typescript\n * task.transferConference().then(() => {}).catch(() => {});\n * ```\n */\n public async transferConference(): Promise<TaskResponse> {\n // Validate we're in conference or consulting state\n // CONSULTING is allowed because agent can transfer conference while consulting\n // (transfers ownership to the consulted agent)\n const state = this.getStateMachineSnapshot();\n const isValidState =\n state && (state.matches(TaskState.CONFERENCING) || state.matches(TaskState.CONSULTING));\n if (!isValidState) {\n const currentState = state?.value as TaskState;\n const error = new Error(`Cannot transfer conference in ${currentState} state`);\n LoggerProxy.error('Transfer conference operation not allowed', {\n module: CC_FILE,\n method: 'transferConference',\n interactionId: this.data.interactionId,\n });\n throw error;\n }\n\n // Send state machine event\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.TRANSFER_CONFERENCE,\n agentId: this.data.agentId,\n });\n }\n\n const requestInteractionId =\n this.data.interaction?.mainInteractionId || this.data.interactionId;\n\n try {\n LoggerProxy.info(`Transferring conference`, {\n module: CC_FILE,\n method: 'transferConference',\n interactionId: requestInteractionId,\n });\n\n this.metricsManager.timeEvent([\n METRIC_EVENT_NAMES.TASK_CONFERENCE_TRANSFER_SUCCESS,\n METRIC_EVENT_NAMES.TASK_CONFERENCE_TRANSFER_FAILED,\n ]);\n\n const response = await this.contact.conferenceTransfer({\n interactionId: requestInteractionId,\n });\n\n // Send success event to transition state\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.TRANSFER_CONFERENCE_SUCCESS,\n taskData: response.data,\n });\n }\n\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_CONFERENCE_TRANSFER_SUCCESS,\n {\n taskId: this.data.interactionId,\n requestInteractionId,\n agentId: this.data.agentId,\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(response),\n },\n ['operational', 'behavioral', 'business']\n );\n\n LoggerProxy.log(`Successfully transferred conference`, {\n module: CC_FILE,\n method: 'transferConference',\n trackingId: response.trackingId,\n interactionId: requestInteractionId,\n });\n\n return response;\n } catch (error) {\n // Send failure event\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.TRANSFER_CONFERENCE_FAILED,\n reason: error.toString(),\n });\n }\n\n const {error: detailedError} = getErrorDetails(error, 'transferConference', CC_FILE);\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_CONFERENCE_TRANSFER_FAILED,\n {\n taskId: this.data.interactionId,\n requestInteractionId,\n agentId: this.data.agentId,\n error: error.toString(),\n ...MetricsManager.getCommonTrackingFieldForAQMResponseFailed(error.details || {}),\n },\n ['operational', 'behavioral', 'business']\n );\n\n LoggerProxy.error(`Failed to transfer conference`, {\n module: CC_FILE,\n method: 'transferConference',\n interactionId: requestInteractionId,\n });\n\n throw detailedError;\n }\n }\n\n /**\n * Toggle between consult call and main call during consulting.\n * If on consult leg (consultCallHeld = false), switches to main call by holding consult.\n * If on main call (consultCallHeld = true), switches to consult by resuming consult.\n *\n * @returns Promise<TaskResponse>\n * @throws Error if not in CONSULTING state or no consult media resource\n * @example\n * ```typescript\n * await task.switchCall();\n * ```\n */\n public async switchCall(): Promise<TaskResponse> {\n // Validate we're in CONSULTING state\n const state = this.getStateMachineSnapshot();\n if (!state?.matches(TaskState.CONSULTING)) {\n const currentState = state?.value as TaskState;\n const error = new Error(`Cannot switch call in ${currentState} state`);\n LoggerProxy.error('Switch call operation not allowed', {\n module: CC_FILE,\n method: 'switchCall',\n interactionId: this.data.interactionId,\n });\n throw error;\n }\n\n // Validate we have a consult media resource\n const consultMediaResourceId = getConsultMediaResourceId(\n this.data.interaction,\n this.data.consultMediaResourceId,\n this.data.agentId\n );\n if (!consultMediaResourceId) {\n const error = new Error('No consult media resource available');\n LoggerProxy.error('Switch call failed - no consult media resource', {\n module: CC_FILE,\n method: 'switchCall',\n interactionId: this.data.interactionId,\n });\n throw error;\n }\n\n const context = state.context;\n const isOnConsultLeg = !context.consultCallHeld;\n\n // Determine direction and send appropriate state machine event\n const targetEvent = isOnConsultLeg\n ? TaskEvent.SWITCH_TO_MAIN_CALL\n : TaskEvent.SWITCH_TO_CONSULT;\n const revertEvent = isOnConsultLeg\n ? TaskEvent.SWITCH_TO_CONSULT\n : TaskEvent.SWITCH_TO_MAIN_CALL;\n\n if (this.stateMachineService) {\n this.stateMachineService.send({type: targetEvent});\n }\n\n this.metricsManager.timeEvent([\n METRIC_EVENT_NAMES.TASK_SWITCH_CALL_SUCCESS,\n METRIC_EVENT_NAMES.TASK_SWITCH_CALL_FAILED,\n ]);\n\n try {\n if (isOnConsultLeg) {\n const response = await this.contact.unHold({\n interactionId: this.data.interactionId,\n data: {mediaResourceId: this.data.mediaResourceId},\n });\n\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_SWITCH_CALL_SUCCESS,\n {\n taskId: this.data.interactionId,\n direction: 'toMainCall',\n mediaResourceId: consultMediaResourceId,\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(response),\n },\n ['operational', 'behavioral']\n );\n\n LoggerProxy.log(`Switched to main call successfully`, {\n module: CC_FILE,\n method: 'switchCall',\n trackingId: response.trackingId,\n interactionId: this.data.interactionId,\n });\n\n return response;\n }\n\n const response = await this.contact.hold({\n interactionId: this.data.interactionId,\n data: {mediaResourceId: this.data.mediaResourceId},\n });\n\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_SWITCH_CALL_SUCCESS,\n {\n taskId: this.data.interactionId,\n direction: 'toConsultCall',\n mediaResourceId: consultMediaResourceId,\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(response),\n },\n ['operational', 'behavioral']\n );\n\n LoggerProxy.log(`Switched to consult call successfully`, {\n module: CC_FILE,\n method: 'switchCall',\n trackingId: response.trackingId,\n interactionId: this.data.interactionId,\n });\n\n return response;\n } catch (error) {\n if (this.stateMachineService) {\n this.stateMachineService.send({type: revertEvent});\n }\n\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_SWITCH_CALL_FAILED,\n {\n taskId: this.data.interactionId,\n direction: isOnConsultLeg ? 'toMainCall' : 'toConsultCall',\n mediaResourceId: consultMediaResourceId,\n error: error.toString(),\n ...MetricsManager.getCommonTrackingFieldForAQMResponseFailed(error.details || {}),\n },\n ['operational', 'behavioral']\n );\n\n const {error: detailedError} = getErrorDetails(error, 'switchCall', CC_FILE);\n LoggerProxy.error(`Failed to switch call`, {\n module: CC_FILE,\n method: 'switchCall',\n interactionId: this.data.interactionId,\n });\n throw detailedError;\n }\n }\n\n protected override getChannelSpecificActionOverrides() {\n const baseOverrides = super.getChannelSpecificActionOverrides();\n\n return {\n ...baseOverrides,\n emitTaskHold: this.createEmitSelfAction(TASK_EVENTS.TASK_HOLD, {updateTaskData: true}),\n emitTaskResume: this.createEmitSelfAction(TASK_EVENTS.TASK_RESUME, {updateTaskData: true}),\n emitTaskRecordingStarted: this.createEmitSelfAction(TASK_EVENTS.TASK_RECORDING_STARTED, {\n updateTaskData: true,\n }),\n emitTaskRecordingPaused: this.createEmitSelfAction(TASK_EVENTS.TASK_RECORDING_PAUSED, {\n updateTaskData: true,\n }),\n emitTaskRecordingPauseFailed: this.createEmitSelfAction(\n TASK_EVENTS.TASK_RECORDING_PAUSE_FAILED,\n {updateTaskData: true}\n ),\n emitTaskRecordingResumed: this.createEmitSelfAction(TASK_EVENTS.TASK_RECORDING_RESUMED, {\n updateTaskData: true,\n }),\n emitTaskRecordingResumeFailed: this.createEmitSelfAction(\n TASK_EVENTS.TASK_RECORDING_RESUME_FAILED,\n {updateTaskData: true}\n ),\n // Conference event emitters\n emitTaskParticipantJoined: this.createEmitSelfAction(TASK_EVENTS.TASK_PARTICIPANT_JOINED, {\n updateTaskData: true,\n }),\n emitTaskParticipantLeft: this.createEmitSelfAction(TASK_EVENTS.TASK_PARTICIPANT_LEFT, {\n updateTaskData: true,\n }),\n emitTaskConferenceStarted: this.createEmitSelfAction(TASK_EVENTS.TASK_CONFERENCE_STARTED, {\n updateTaskData: true,\n }),\n emitTaskConferenceEnded: this.createEmitSelfAction(TASK_EVENTS.TASK_CONFERENCE_ENDED, {\n updateTaskData: true,\n }),\n emitTaskConferenceFailed: this.createEmitSelfAction(TASK_EVENTS.TASK_CONFERENCE_FAILED, {\n updateTaskData: true,\n }),\n emitTaskExitConference: this.createEmitSelfAction(TASK_EVENTS.TASK_EXIT_CONFERENCE, {\n updateTaskData: false,\n }),\n emitTaskTransferConference: this.createEmitSelfAction(TASK_EVENTS.TASK_TRANSFER_CONFERENCE, {\n updateTaskData: false,\n }),\n emitTaskSwitchCall: this.createEmitSelfAction(TASK_EVENTS.TASK_SWITCH_CALL, {\n updateTaskData: false,\n }),\n emitTaskTransferConferenceFailed: this.createEmitSelfAction(\n TASK_EVENTS.TASK_CONFERENCE_TRANSFER_FAILED,\n {updateTaskData: true}\n ),\n emitTaskOutdialFailed: this.createEmitSelfAction(TASK_EVENTS.TASK_OUTDIAL_FAILED, {\n updateTaskData: true,\n }),\n };\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -742,6 +742,8 @@ export type OrgInfo = {
742
742
  tenantId: string;
743
743
  /** Organization timezone */
744
744
  timezone: string;
745
+ /** Current environment (e.g., 'produs1', 'intgus1') */
746
+ environment: string;
745
747
  };
746
748
  /**
747
749
  * Organization-wide feature settings and configurations
@@ -1194,6 +1196,8 @@ export type Profile = {
1194
1196
  isAnalyzerEnabled?: boolean;
1195
1197
  /** Tenant timezone */
1196
1198
  tenantTimezone?: string;
1199
+ /** Current environment (e.g., 'produs1', 'intgus1') */
1200
+ environment?: string;
1197
1201
  /** Available voice login options */
1198
1202
  loginVoiceOptions?: LoginOption[];
1199
1203
  /** Current login device type */
@@ -361,6 +361,17 @@ export declare function getTaskStateMachineConfig(uiControlConfig: UIControlConf
361
361
  target: TaskState;
362
362
  actions: string[];
363
363
  };
364
+ CONSULT_END: ({
365
+ guard: ({ event }: {
366
+ event: any;
367
+ }) => boolean;
368
+ target: TaskState;
369
+ actions: string[];
370
+ } | {
371
+ target: TaskState;
372
+ actions: string[];
373
+ guard?: undefined;
374
+ })[];
364
375
  };
365
376
  };
366
377
  CONFERENCING: {
@@ -377,9 +388,18 @@ export declare function getTaskStateMachineConfig(uiControlConfig: UIControlConf
377
388
  actions: string[];
378
389
  guard?: undefined;
379
390
  })[];
380
- CONSULT_END: {
391
+ CONSULT_END: ({
392
+ guard: ({ context, event }: {
393
+ context: any;
394
+ event: any;
395
+ }) => boolean;
396
+ target: TaskState;
381
397
  actions: string[];
382
- };
398
+ } | {
399
+ actions: string[];
400
+ guard?: undefined;
401
+ target?: undefined;
402
+ })[];
383
403
  HOLD_SUCCESS: {
384
404
  actions: string[];
385
405
  };
@@ -813,6 +833,17 @@ export declare function createTaskStateMachine(uiControlConfig: UIControlConfig,
813
833
  target: TaskState;
814
834
  actions: string[];
815
835
  };
836
+ CONSULT_END: ({
837
+ guard: ({ event }: {
838
+ event: any;
839
+ }) => boolean;
840
+ target: TaskState;
841
+ actions: string[];
842
+ } | {
843
+ target: TaskState;
844
+ actions: string[];
845
+ guard?: undefined;
846
+ })[];
816
847
  };
817
848
  };
818
849
  CONFERENCING: {
@@ -829,9 +860,18 @@ export declare function createTaskStateMachine(uiControlConfig: UIControlConfig,
829
860
  actions: string[];
830
861
  guard?: undefined;
831
862
  })[];
832
- CONSULT_END: {
863
+ CONSULT_END: ({
864
+ guard: ({ context, event }: {
865
+ context: any;
866
+ event: any;
867
+ }) => boolean;
868
+ target: TaskState;
833
869
  actions: string[];
834
- };
870
+ } | {
871
+ actions: string[];
872
+ guard?: undefined;
873
+ target?: undefined;
874
+ })[];
835
875
  HOLD_SUCCESS: {
836
876
  actions: string[];
837
877
  };
@@ -18,6 +18,19 @@ export type ParticipantType = (typeof PARTICIPANT_TYPE)[keyof typeof PARTICIPANT
18
18
  export declare const MEDIA_TYPE_CONSULT = "consult";
19
19
  /** Media type for main calls */
20
20
  export declare const MEDIA_TYPE_MAIN_CALL = "mainCall";
21
+ /** Backend interaction state values (from server payloads) */
22
+ export declare const INTERACTION_STATE: {
23
+ readonly CONSULTING: "consulting";
24
+ readonly POST_CALL: "post_call";
25
+ readonly CONFERENCE: "conference";
26
+ readonly CONNECTED: "connected";
27
+ readonly NEW: "new";
28
+ };
29
+ /** Backend participant consultState values */
30
+ export declare const CONSULT_STATE: {
31
+ readonly CONSULTING: "consulting";
32
+ readonly CONFERENCING: "conferencing";
33
+ };
21
34
  export declare enum TaskState {
22
35
  IDLE = "IDLE",
23
36
  OFFERED = "OFFERED",
@@ -24,6 +24,11 @@ import { TaskData } from '../types';
24
24
  export declare const getTaskDataFromEvent: (event?: TaskEventPayload) => TaskData | undefined;
25
25
  export declare const getSelfAgentId: (context: TaskContext, taskData?: TaskData) => string | undefined;
26
26
  export declare const isSelfConsultingAgent: (context: TaskContext, taskData?: TaskData) => boolean;
27
+ /**
28
+ * Detects an active consult during post_call state (customer left but agents still consulting).
29
+ * Shared by hydration guard (isInteractionConsulting) and action (deriveTaskDataUpdates).
30
+ */
31
+ export declare const hasActiveConsultInPostCall: (taskData: TaskData | undefined, selfAgentId?: string) => boolean;
27
32
  /**
28
33
  * Determines if this agent should enter WRAPPING_UP state.
29
34
  * Priority: agentsPendingWrapUp > wrapUpRequired / participant.isWrapUp > ownership > !isConsulted
@@ -36,7 +41,7 @@ export interface GuardParams {
36
41
  export type GuardFunction = (params: GuardParams) => boolean;
37
42
  export declare const guards: {
38
43
  isInteractionTerminated: ({ context, event }: GuardParams) => boolean;
39
- isInteractionConsulting: ({ event }: GuardParams) => boolean;
44
+ isInteractionConsulting: ({ event, context }: GuardParams) => boolean;
40
45
  isInteractionHeld: ({ event }: GuardParams) => boolean;
41
46
  isInteractionConnected: ({ event }: GuardParams) => boolean;
42
47
  isConferencingByParticipants: ({ event }: GuardParams) => boolean;
@@ -858,6 +858,8 @@ export type Interaction = {
858
858
  fcDesktopView?: string;
859
859
  /** Agent ID who initiated the outdial call */
860
860
  outdialAgentId?: string;
861
+ /** Indicates if the customer has left the call during an active consult */
862
+ hasCustomerLeft?: string;
861
863
  };
862
864
  /** Main interaction identifier for related interactions */
863
865
  mainInteractionId?: string;
package/dist/webex.js CHANGED
@@ -41,7 +41,7 @@ if (!global.Buffer) {
41
41
  */
42
42
  const Webex = _webexCore.default.extend({
43
43
  webex: true,
44
- version: `3.12.0-task-refactor.2`
44
+ version: `3.12.0-task-refactor.4`
45
45
  });
46
46
 
47
47
  /**
package/package.json CHANGED
@@ -83,5 +83,5 @@
83
83
  "typedoc": "^0.25.0",
84
84
  "typescript": "5.4.5"
85
85
  },
86
- "version": "3.12.0-task-refactor.2"
86
+ "version": "3.12.0-task-refactor.4"
87
87
  }
@@ -210,6 +210,7 @@ function parseAgentConfigs(profileData: {
210
210
  siteId: userData.siteId,
211
211
  enterpriseId: orgInfoData.tenantId,
212
212
  tenantTimezone: orgInfoData.timezone,
213
+ environment: orgInfoData.environment,
213
214
  privacyShieldVisible: tenantData.privacyShieldVisible,
214
215
  organizationIdleCodes: [], // TODO: for supervisor, getOrgFilteredIdleCodes(auxCodes, false),
215
216
  idleCodesAccess: agentProfileData.accessIdleCode as 'ALL' | 'SPECIFIC',
@@ -689,6 +689,8 @@ export type OrgInfo = {
689
689
  tenantId: string;
690
690
  /** Organization timezone */
691
691
  timezone: string;
692
+ /** Current environment (e.g., 'produs1', 'intgus1') */
693
+ environment: string;
692
694
  };
693
695
 
694
696
  /**
@@ -1184,6 +1186,8 @@ export type Profile = {
1184
1186
  isAnalyzerEnabled?: boolean;
1185
1187
  /** Tenant timezone */
1186
1188
  tenantTimezone?: string;
1189
+ /** Current environment (e.g., 'produs1', 'intgus1') */
1190
+ environment?: string;
1187
1191
  /** Available voice login options */
1188
1192
  loginVoiceOptions?: LoginOption[];
1189
1193
  /** Current login device type */
@@ -307,6 +307,7 @@ export default class TaskManager extends EventEmitter {
307
307
 
308
308
  // Conference events - these trigger state machine transition to CONFERENCING
309
309
  case CC_EVENTS.AGENT_CONSULT_CONFERENCED:
310
+ case CC_EVENTS.AGENT_CONSULT_CONFERENCING:
310
311
  case CC_EVENTS.PARTICIPANT_JOINED_CONFERENCE:
311
312
  return {type: TaskEvent.CONFERENCE_START, taskData: payload};
312
313
 
@@ -375,6 +376,12 @@ export default class TaskManager extends EventEmitter {
375
376
  task.sendStateMachineEvent(stateMachineEvent);
376
377
  }
377
378
 
379
+ // Emit TASK_POST_CALL_ACTIVITY for ParticipantPostCallActivity events so
380
+ // consumers (Widgets) can detect the interaction state change to post_call.
381
+ if (eventContext.eventType === CC_EVENTS.PARTICIPANT_POST_CALL_ACTIVITY) {
382
+ task.emit(TASK_EVENTS.TASK_POST_CALL_ACTIVITY, task);
383
+ }
384
+
378
385
  // Send transcript start/stop events for relevant CC events
379
386
  this.requestRealTimeTranscripts(eventContext.eventType, payload.interactionId);
380
387
  });
@@ -655,8 +662,7 @@ export default class TaskManager extends EventEmitter {
655
662
  const {payload} = context;
656
663
  let task = context.task;
657
664
 
658
- if (payload.childInteractionId) {
659
- // remove the child task from collection
665
+ if (payload.childInteractionId && this.taskCollection[payload.childInteractionId]) {
660
666
  this.removeTaskFromCollection(this.taskCollection[payload.childInteractionId]);
661
667
  }
662
668