@webex/contact-center 3.11.0-next.3 → 3.11.0-next.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/services/config/Util.js +1 -0
- package/dist/services/config/Util.js.map +1 -1
- package/dist/services/config/types.js.map +1 -1
- package/dist/services/task/TaskManager.js +3 -3
- package/dist/services/task/TaskManager.js.map +1 -1
- package/dist/types/services/config/types.d.ts +4 -0
- package/dist/webex.js +1 -1
- package/package.json +1 -1
- package/src/services/config/Util.ts +1 -0
- package/src/services/config/types.ts +4 -0
- package/src/services/task/TaskManager.ts +6 -3
- package/test/unit/spec/services/config/index.ts +2 -0
- package/test/unit/spec/services/task/TaskManager.ts +317 -2
- package/umd/contact-center.min.js +2 -2
- package/umd/contact-center.min.js.map +1 -1
|
@@ -153,6 +153,7 @@ function parseAgentConfigs(profileData) {
|
|
|
153
153
|
siteId: userData.siteId,
|
|
154
154
|
enterpriseId: orgInfoData.tenantId,
|
|
155
155
|
tenantTimezone: orgInfoData.timezone,
|
|
156
|
+
environment: orgInfoData.environment,
|
|
156
157
|
privacyShieldVisible: tenantData.privacyShieldVisible,
|
|
157
158
|
organizationIdleCodes: [],
|
|
158
159
|
// TODO: for supervisor, getOrgFilteredIdleCodes(auxCodes, false),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_constants","require","_types","getUrlMapping","urlMappings","name","mappedUrl","find","mapping","url","getMsftConfig","agentProfileData","showUserDetailsMS","stateSynchronizationMS","getWebexConfig","showUserDetailsWebex","stateSynchronizationWebex","getDefaultAgentDN","agentDNValidation","getFilteredDialplanEntries","dialPlanData","profileDialPlans","dialPlanEntries","forEach","dailPlan","includes","id","filteredPlan","regex","regularExpression","prefix","strippedChars","push","getFilterAuxCodes","auxCodes","type","specificCodes","filteredAuxCodes","auxCode","workTypeCode","active","length","isSystem","isSystemCode","isDefault","defaultCode","getDefaultWrapUpCode","wrapUpReasonList","c","parseAgentConfigs","profileData","userData","teamData","tenantData","orgInfoData","orgSettingsData","urlMapping","tenantDataTimeout","timeoutDesktopInactivityEnabled","timeoutDesktopInactivityMins","inactivityTimeoutTimer","timeoutDesktopInactivityCustomEnabled","wrapupCodes","WRAP_UP_CODE","accessWrapUpCode","wrapUpCodes","idleCodes","IDLE_CODE","accessIdleCode","defaultWrapUpData","finalData","teams","defaultDn","defaultDialledNumber","forceDefaultDn","forceDefaultDnForAgent","regexUS","dnDefaultRegex","regexOther","dnOtherRegex","agentId","ciUserId","agentName","firstName","lastName","agentMailId","email","agentProfileID","agentProfileId","autoAnswer","dialPlan","dialPlanEnabled","dialPlanEntity","dialPlans","undefined","multimediaProfileId","skillProfileId","siteId","enterpriseId","tenantId","tenantTimezone","timezone","privacyShieldVisible","organizationIdleCodes","idleCodesAccess","wrapUpData","wrapUpProps","autoWrapup","autoWrapUp","autoWrapupInterval","autoWrapAfterSeconds","lastAgentRoute","lastAgentRouting","wrapUpCodeAccess","allowCancelAutoWrapup","allowAutoWrapUpExtension","defaultWrapupCode","isOutboundEnabledForTenant","outdialEnabled","isOutboundEnabledForAgent","isAdhocDialingEnabled","isAgentAvailableAfterOutdial","agentAvailableAfterOutdial","outDialEp","outdialEntryPointId","isCampaignManagementEnabled","campaignManagerEnabled","isEndCallEnabled","endCallEnabled","isEndConsultEnabled","endConsultEnabled","callVariablesSuppressed","agentDbId","dbId","allowConsultToQueue","consultToQueue","agentPersonalStatsEnabled","viewableStatistics","agentStats","addressBookId","outdialANIId","analyserUserId","acqueonApiUrl","acqueonConsoleUrl","isTimeoutDesktopInactivityEnabled","loginVoiceOptions","webRtcEnabled","maskSensitiveData","microsoftConfig","webexConfig","lostConnectionRecoveryTimeout","LOST_CONNECTION_RECOVERY_TIMEOUT"],"sources":["Util.ts"],"sourcesContent":["import {LOST_CONNECTION_RECOVERY_TIMEOUT} from '../core/constants';\nimport {\n AgentResponse,\n AuxCode,\n AuxCodeType,\n DesktopProfileResponse,\n DialPlanEntity,\n Entity,\n IDLE_CODE,\n OrgInfo,\n OrgSettings,\n Profile,\n Team,\n TenantData,\n URLMapping,\n WRAP_UP_CODE,\n} from './types';\n\n/**\n * Get the URL mapping for the given name\n * @param {Array<URLMapping>} urlMappings\n * @param {string} name\n * @returns {string}\n */\nconst getUrlMapping = (urlMappings: Array<URLMapping>, name: string) => {\n const mappedUrl = urlMappings.find((mapping) => mapping.name === name)?.url;\n\n return mappedUrl || '';\n};\n\n/**\n * Get the MSFT and Webex configuration\n * @param {DesktopProfileResponse} agentProfileData\n * @returns {Object}\n */\nconst getMsftConfig = (agentProfileData: DesktopProfileResponse) => {\n return {\n showUserDetailsMS: agentProfileData.showUserDetailsMS ?? false,\n stateSynchronizationMS: agentProfileData.stateSynchronizationMS ?? false,\n };\n};\n\n/**\n * Get the Webex configuration\n * @param {DesktopProfileResponse} agentProfileData\n * @returns {Object}\n */\nconst getWebexConfig = (agentProfileData: DesktopProfileResponse) => {\n return {\n showUserDetailsWebex: agentProfileData.showUserDetailsWebex ?? false,\n stateSynchronizationWebex: agentProfileData.stateSynchronizationWebex ?? false,\n };\n};\n\n/**\n * Get the default agent DN\n * @param {string} agentDNValidation\n * @returns {boolean}\n */\nconst getDefaultAgentDN = (agentDNValidation: string) => {\n return agentDNValidation === 'PROVISIONED_VALUE';\n};\n\n/**\n * Get the filtered dialplan entries\n * @param {Array<DialPlanEntity>} dialPlanData\n * @param {Array<string>} profileDialPlans\n * @returns {Array<Entity>}\n */\nconst getFilteredDialplanEntries = (dialPlanData: DialPlanEntity[], profileDialPlans: string[]) => {\n const dialPlanEntries = [];\n dialPlanData.forEach((dailPlan: DialPlanEntity) => {\n if (profileDialPlans.includes(dailPlan.id)) {\n const filteredPlan = {\n regex: dailPlan.regularExpression,\n prefix: dailPlan.prefix,\n strippedChars: dailPlan.strippedChars,\n name: dailPlan.name,\n };\n dialPlanEntries.push(filteredPlan);\n }\n });\n\n return dialPlanEntries;\n};\n\n/**\n * Get the filtered aux codes\n * @param {Array<AuxCode>} auxCodes\n * @param {AuxCodeType} type\n * @param {Array<string>} specificCodes\n * @returns {Array<Entity>}\n */\nconst getFilterAuxCodes = (\n auxCodes: Array<AuxCode>,\n type: AuxCodeType,\n specificCodes: string[]\n) => {\n const filteredAuxCodes: Array<Entity> = [];\n auxCodes.forEach((auxCode: AuxCode) => {\n if (\n auxCode.workTypeCode === type &&\n auxCode.active &&\n (specificCodes.length === 0 || specificCodes.includes(auxCode.id))\n ) {\n filteredAuxCodes.push({\n id: auxCode.id,\n name: auxCode.name,\n isSystem: auxCode.isSystemCode,\n isDefault: auxCode.defaultCode,\n });\n }\n });\n\n return filteredAuxCodes;\n};\n\n/**\n * Get the default wrapup code\n * @param {Array<Entity>} wrapUpReasonList\n * @returns {Entity}\n */\nfunction getDefaultWrapUpCode(wrapUpReasonList: Entity[]) {\n return wrapUpReasonList?.find((c: Entity) => c.isDefault);\n}\n\n/**\n * Parse the agent configurations\n * @param {Object} profileData\n * @returns {Profile}\n */\nfunction parseAgentConfigs(profileData: {\n userData: AgentResponse;\n teamData: Team[];\n tenantData: TenantData;\n orgInfoData: OrgInfo;\n auxCodes: AuxCode[];\n orgSettingsData: OrgSettings;\n agentProfileData: DesktopProfileResponse;\n dialPlanData: DialPlanEntity[];\n urlMapping: URLMapping[];\n multimediaProfileId: string;\n}): Profile {\n const {\n userData,\n teamData,\n tenantData,\n orgInfoData,\n auxCodes,\n orgSettingsData,\n agentProfileData,\n dialPlanData,\n urlMapping,\n } = profileData;\n\n const tenantDataTimeout = tenantData.timeoutDesktopInactivityEnabled\n ? tenantData.timeoutDesktopInactivityMins\n : null;\n const inactivityTimeoutTimer = agentProfileData.timeoutDesktopInactivityCustomEnabled\n ? agentProfileData.timeoutDesktopInactivityMins\n : tenantDataTimeout;\n\n const wrapupCodes = getFilterAuxCodes(\n auxCodes,\n WRAP_UP_CODE,\n agentProfileData.accessWrapUpCode === 'ALL' ? [] : agentProfileData.wrapUpCodes\n );\n\n const idleCodes = getFilterAuxCodes(\n auxCodes,\n IDLE_CODE,\n agentProfileData.accessIdleCode === 'ALL' ? [] : agentProfileData.idleCodes\n );\n\n idleCodes.push({\n id: '0',\n name: 'Available',\n isSystem: false,\n isDefault: false,\n }); // pushing available state to idle codes\n\n const defaultWrapUpData = getDefaultWrapUpCode(wrapupCodes);\n\n const finalData = {\n teams: teamData,\n defaultDn: userData.defaultDialledNumber,\n forceDefaultDn: tenantData.forceDefaultDn,\n forceDefaultDnForAgent: getDefaultAgentDN(agentProfileData.agentDNValidation),\n regexUS: tenantData.dnDefaultRegex,\n regexOther: tenantData.dnOtherRegex,\n agentId: userData.ciUserId,\n agentName: `${userData.firstName} ${userData.lastName}`,\n agentMailId: userData.email,\n agentProfileID: userData.agentProfileId,\n autoAnswer: agentProfileData.autoAnswer,\n dialPlan: agentProfileData.dialPlanEnabled\n ? {\n type: 'adhocDial',\n dialPlanEntity: getFilteredDialplanEntries(dialPlanData, agentProfileData.dialPlans),\n }\n : undefined,\n multimediaProfileId: profileData.multimediaProfileId,\n skillProfileId: userData.skillProfileId ? userData.skillProfileId : null,\n siteId: userData.siteId,\n enterpriseId: orgInfoData.tenantId,\n tenantTimezone: orgInfoData.timezone,\n privacyShieldVisible: tenantData.privacyShieldVisible,\n organizationIdleCodes: [], // TODO: for supervisor, getOrgFilteredIdleCodes(auxCodes, false),\n idleCodesAccess: agentProfileData.accessIdleCode as 'ALL' | 'SPECIFIC',\n idleCodes,\n wrapupCodes,\n wrapUpData: {\n wrapUpProps: {\n autoWrapup: agentProfileData.autoWrapUp,\n autoWrapupInterval: agentProfileData.autoWrapAfterSeconds,\n lastAgentRoute: agentProfileData.lastAgentRouting,\n wrapUpCodeAccess: agentProfileData.accessWrapUpCode,\n wrapUpReasonList: wrapupCodes,\n allowCancelAutoWrapup: agentProfileData.allowAutoWrapUpExtension,\n },\n },\n defaultWrapupCode: defaultWrapUpData?.id ?? '',\n isOutboundEnabledForTenant: tenantData.outdialEnabled,\n isOutboundEnabledForAgent: agentProfileData.outdialEnabled,\n isAdhocDialingEnabled: agentProfileData.dialPlanEnabled,\n isAgentAvailableAfterOutdial: agentProfileData.agentAvailableAfterOutdial,\n outDialEp: agentProfileData.outdialEntryPointId,\n isCampaignManagementEnabled: orgSettingsData.campaignManagerEnabled,\n isEndCallEnabled: tenantData.endCallEnabled,\n isEndConsultEnabled: tenantData.endConsultEnabled,\n callVariablesSuppressed: tenantData.callVariablesSuppressed,\n agentDbId: userData.dbId,\n allowConsultToQueue: agentProfileData.consultToQueue,\n agentPersonalStatsEnabled: agentProfileData.viewableStatistics\n ? agentProfileData.viewableStatistics.agentStats\n : false,\n addressBookId: agentProfileData.addressBookId,\n outdialANIId: agentProfileData.outdialANIId,\n analyserUserId: userData.id,\n\n urlMappings: {\n acqueonApiUrl: getUrlMapping(urlMapping, 'ACQUEON_API_URL'),\n acqueonConsoleUrl: getUrlMapping(urlMapping, 'ACQUEON_CONSOLE_URL'),\n },\n isTimeoutDesktopInactivityEnabled: tenantData.timeoutDesktopInactivityEnabled,\n timeoutDesktopInactivityMins: inactivityTimeoutTimer,\n loginVoiceOptions: agentProfileData.loginVoiceOptions ?? [],\n webRtcEnabled: orgSettingsData.webRtcEnabled,\n maskSensitiveData: orgSettingsData.maskSensitiveData\n ? orgSettingsData.maskSensitiveData\n : false,\n microsoftConfig: getMsftConfig(agentProfileData),\n webexConfig: getWebexConfig(agentProfileData),\n lostConnectionRecoveryTimeout:\n tenantData.lostConnectionRecoveryTimeout || LOST_CONNECTION_RECOVERY_TIMEOUT,\n };\n\n return finalData;\n}\n\nexport {parseAgentConfigs};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_constants","require","_types","getUrlMapping","urlMappings","name","mappedUrl","find","mapping","url","getMsftConfig","agentProfileData","showUserDetailsMS","stateSynchronizationMS","getWebexConfig","showUserDetailsWebex","stateSynchronizationWebex","getDefaultAgentDN","agentDNValidation","getFilteredDialplanEntries","dialPlanData","profileDialPlans","dialPlanEntries","forEach","dailPlan","includes","id","filteredPlan","regex","regularExpression","prefix","strippedChars","push","getFilterAuxCodes","auxCodes","type","specificCodes","filteredAuxCodes","auxCode","workTypeCode","active","length","isSystem","isSystemCode","isDefault","defaultCode","getDefaultWrapUpCode","wrapUpReasonList","c","parseAgentConfigs","profileData","userData","teamData","tenantData","orgInfoData","orgSettingsData","urlMapping","tenantDataTimeout","timeoutDesktopInactivityEnabled","timeoutDesktopInactivityMins","inactivityTimeoutTimer","timeoutDesktopInactivityCustomEnabled","wrapupCodes","WRAP_UP_CODE","accessWrapUpCode","wrapUpCodes","idleCodes","IDLE_CODE","accessIdleCode","defaultWrapUpData","finalData","teams","defaultDn","defaultDialledNumber","forceDefaultDn","forceDefaultDnForAgent","regexUS","dnDefaultRegex","regexOther","dnOtherRegex","agentId","ciUserId","agentName","firstName","lastName","agentMailId","email","agentProfileID","agentProfileId","autoAnswer","dialPlan","dialPlanEnabled","dialPlanEntity","dialPlans","undefined","multimediaProfileId","skillProfileId","siteId","enterpriseId","tenantId","tenantTimezone","timezone","environment","privacyShieldVisible","organizationIdleCodes","idleCodesAccess","wrapUpData","wrapUpProps","autoWrapup","autoWrapUp","autoWrapupInterval","autoWrapAfterSeconds","lastAgentRoute","lastAgentRouting","wrapUpCodeAccess","allowCancelAutoWrapup","allowAutoWrapUpExtension","defaultWrapupCode","isOutboundEnabledForTenant","outdialEnabled","isOutboundEnabledForAgent","isAdhocDialingEnabled","isAgentAvailableAfterOutdial","agentAvailableAfterOutdial","outDialEp","outdialEntryPointId","isCampaignManagementEnabled","campaignManagerEnabled","isEndCallEnabled","endCallEnabled","isEndConsultEnabled","endConsultEnabled","callVariablesSuppressed","agentDbId","dbId","allowConsultToQueue","consultToQueue","agentPersonalStatsEnabled","viewableStatistics","agentStats","addressBookId","outdialANIId","analyserUserId","acqueonApiUrl","acqueonConsoleUrl","isTimeoutDesktopInactivityEnabled","loginVoiceOptions","webRtcEnabled","maskSensitiveData","microsoftConfig","webexConfig","lostConnectionRecoveryTimeout","LOST_CONNECTION_RECOVERY_TIMEOUT"],"sources":["Util.ts"],"sourcesContent":["import {LOST_CONNECTION_RECOVERY_TIMEOUT} from '../core/constants';\nimport {\n AgentResponse,\n AuxCode,\n AuxCodeType,\n DesktopProfileResponse,\n DialPlanEntity,\n Entity,\n IDLE_CODE,\n OrgInfo,\n OrgSettings,\n Profile,\n Team,\n TenantData,\n URLMapping,\n WRAP_UP_CODE,\n} from './types';\n\n/**\n * Get the URL mapping for the given name\n * @param {Array<URLMapping>} urlMappings\n * @param {string} name\n * @returns {string}\n */\nconst getUrlMapping = (urlMappings: Array<URLMapping>, name: string) => {\n const mappedUrl = urlMappings.find((mapping) => mapping.name === name)?.url;\n\n return mappedUrl || '';\n};\n\n/**\n * Get the MSFT and Webex configuration\n * @param {DesktopProfileResponse} agentProfileData\n * @returns {Object}\n */\nconst getMsftConfig = (agentProfileData: DesktopProfileResponse) => {\n return {\n showUserDetailsMS: agentProfileData.showUserDetailsMS ?? false,\n stateSynchronizationMS: agentProfileData.stateSynchronizationMS ?? false,\n };\n};\n\n/**\n * Get the Webex configuration\n * @param {DesktopProfileResponse} agentProfileData\n * @returns {Object}\n */\nconst getWebexConfig = (agentProfileData: DesktopProfileResponse) => {\n return {\n showUserDetailsWebex: agentProfileData.showUserDetailsWebex ?? false,\n stateSynchronizationWebex: agentProfileData.stateSynchronizationWebex ?? false,\n };\n};\n\n/**\n * Get the default agent DN\n * @param {string} agentDNValidation\n * @returns {boolean}\n */\nconst getDefaultAgentDN = (agentDNValidation: string) => {\n return agentDNValidation === 'PROVISIONED_VALUE';\n};\n\n/**\n * Get the filtered dialplan entries\n * @param {Array<DialPlanEntity>} dialPlanData\n * @param {Array<string>} profileDialPlans\n * @returns {Array<Entity>}\n */\nconst getFilteredDialplanEntries = (dialPlanData: DialPlanEntity[], profileDialPlans: string[]) => {\n const dialPlanEntries = [];\n dialPlanData.forEach((dailPlan: DialPlanEntity) => {\n if (profileDialPlans.includes(dailPlan.id)) {\n const filteredPlan = {\n regex: dailPlan.regularExpression,\n prefix: dailPlan.prefix,\n strippedChars: dailPlan.strippedChars,\n name: dailPlan.name,\n };\n dialPlanEntries.push(filteredPlan);\n }\n });\n\n return dialPlanEntries;\n};\n\n/**\n * Get the filtered aux codes\n * @param {Array<AuxCode>} auxCodes\n * @param {AuxCodeType} type\n * @param {Array<string>} specificCodes\n * @returns {Array<Entity>}\n */\nconst getFilterAuxCodes = (\n auxCodes: Array<AuxCode>,\n type: AuxCodeType,\n specificCodes: string[]\n) => {\n const filteredAuxCodes: Array<Entity> = [];\n auxCodes.forEach((auxCode: AuxCode) => {\n if (\n auxCode.workTypeCode === type &&\n auxCode.active &&\n (specificCodes.length === 0 || specificCodes.includes(auxCode.id))\n ) {\n filteredAuxCodes.push({\n id: auxCode.id,\n name: auxCode.name,\n isSystem: auxCode.isSystemCode,\n isDefault: auxCode.defaultCode,\n });\n }\n });\n\n return filteredAuxCodes;\n};\n\n/**\n * Get the default wrapup code\n * @param {Array<Entity>} wrapUpReasonList\n * @returns {Entity}\n */\nfunction getDefaultWrapUpCode(wrapUpReasonList: Entity[]) {\n return wrapUpReasonList?.find((c: Entity) => c.isDefault);\n}\n\n/**\n * Parse the agent configurations\n * @param {Object} profileData\n * @returns {Profile}\n */\nfunction parseAgentConfigs(profileData: {\n userData: AgentResponse;\n teamData: Team[];\n tenantData: TenantData;\n orgInfoData: OrgInfo;\n auxCodes: AuxCode[];\n orgSettingsData: OrgSettings;\n agentProfileData: DesktopProfileResponse;\n dialPlanData: DialPlanEntity[];\n urlMapping: URLMapping[];\n multimediaProfileId: string;\n}): Profile {\n const {\n userData,\n teamData,\n tenantData,\n orgInfoData,\n auxCodes,\n orgSettingsData,\n agentProfileData,\n dialPlanData,\n urlMapping,\n } = profileData;\n\n const tenantDataTimeout = tenantData.timeoutDesktopInactivityEnabled\n ? tenantData.timeoutDesktopInactivityMins\n : null;\n const inactivityTimeoutTimer = agentProfileData.timeoutDesktopInactivityCustomEnabled\n ? agentProfileData.timeoutDesktopInactivityMins\n : tenantDataTimeout;\n\n const wrapupCodes = getFilterAuxCodes(\n auxCodes,\n WRAP_UP_CODE,\n agentProfileData.accessWrapUpCode === 'ALL' ? [] : agentProfileData.wrapUpCodes\n );\n\n const idleCodes = getFilterAuxCodes(\n auxCodes,\n IDLE_CODE,\n agentProfileData.accessIdleCode === 'ALL' ? [] : agentProfileData.idleCodes\n );\n\n idleCodes.push({\n id: '0',\n name: 'Available',\n isSystem: false,\n isDefault: false,\n }); // pushing available state to idle codes\n\n const defaultWrapUpData = getDefaultWrapUpCode(wrapupCodes);\n\n const finalData = {\n teams: teamData,\n defaultDn: userData.defaultDialledNumber,\n forceDefaultDn: tenantData.forceDefaultDn,\n forceDefaultDnForAgent: getDefaultAgentDN(agentProfileData.agentDNValidation),\n regexUS: tenantData.dnDefaultRegex,\n regexOther: tenantData.dnOtherRegex,\n agentId: userData.ciUserId,\n agentName: `${userData.firstName} ${userData.lastName}`,\n agentMailId: userData.email,\n agentProfileID: userData.agentProfileId,\n autoAnswer: agentProfileData.autoAnswer,\n dialPlan: agentProfileData.dialPlanEnabled\n ? {\n type: 'adhocDial',\n dialPlanEntity: getFilteredDialplanEntries(dialPlanData, agentProfileData.dialPlans),\n }\n : undefined,\n multimediaProfileId: profileData.multimediaProfileId,\n skillProfileId: userData.skillProfileId ? userData.skillProfileId : null,\n siteId: userData.siteId,\n enterpriseId: orgInfoData.tenantId,\n tenantTimezone: orgInfoData.timezone,\n environment: orgInfoData.environment,\n privacyShieldVisible: tenantData.privacyShieldVisible,\n organizationIdleCodes: [], // TODO: for supervisor, getOrgFilteredIdleCodes(auxCodes, false),\n idleCodesAccess: agentProfileData.accessIdleCode as 'ALL' | 'SPECIFIC',\n idleCodes,\n wrapupCodes,\n wrapUpData: {\n wrapUpProps: {\n autoWrapup: agentProfileData.autoWrapUp,\n autoWrapupInterval: agentProfileData.autoWrapAfterSeconds,\n lastAgentRoute: agentProfileData.lastAgentRouting,\n wrapUpCodeAccess: agentProfileData.accessWrapUpCode,\n wrapUpReasonList: wrapupCodes,\n allowCancelAutoWrapup: agentProfileData.allowAutoWrapUpExtension,\n },\n },\n defaultWrapupCode: defaultWrapUpData?.id ?? '',\n isOutboundEnabledForTenant: tenantData.outdialEnabled,\n isOutboundEnabledForAgent: agentProfileData.outdialEnabled,\n isAdhocDialingEnabled: agentProfileData.dialPlanEnabled,\n isAgentAvailableAfterOutdial: agentProfileData.agentAvailableAfterOutdial,\n outDialEp: agentProfileData.outdialEntryPointId,\n isCampaignManagementEnabled: orgSettingsData.campaignManagerEnabled,\n isEndCallEnabled: tenantData.endCallEnabled,\n isEndConsultEnabled: tenantData.endConsultEnabled,\n callVariablesSuppressed: tenantData.callVariablesSuppressed,\n agentDbId: userData.dbId,\n allowConsultToQueue: agentProfileData.consultToQueue,\n agentPersonalStatsEnabled: agentProfileData.viewableStatistics\n ? agentProfileData.viewableStatistics.agentStats\n : false,\n addressBookId: agentProfileData.addressBookId,\n outdialANIId: agentProfileData.outdialANIId,\n analyserUserId: userData.id,\n\n urlMappings: {\n acqueonApiUrl: getUrlMapping(urlMapping, 'ACQUEON_API_URL'),\n acqueonConsoleUrl: getUrlMapping(urlMapping, 'ACQUEON_CONSOLE_URL'),\n },\n isTimeoutDesktopInactivityEnabled: tenantData.timeoutDesktopInactivityEnabled,\n timeoutDesktopInactivityMins: inactivityTimeoutTimer,\n loginVoiceOptions: agentProfileData.loginVoiceOptions ?? [],\n webRtcEnabled: orgSettingsData.webRtcEnabled,\n maskSensitiveData: orgSettingsData.maskSensitiveData\n ? orgSettingsData.maskSensitiveData\n : false,\n microsoftConfig: getMsftConfig(agentProfileData),\n webexConfig: getWebexConfig(agentProfileData),\n lostConnectionRecoveryTimeout:\n tenantData.lostConnectionRecoveryTimeout || LOST_CONNECTION_RECOVERY_TIMEOUT,\n };\n\n return finalData;\n}\n\nexport {parseAgentConfigs};\n"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAiBA;AACA;AACA;AACA;AACA;AACA;AACA,MAAME,aAAa,GAAGA,CAACC,WAA8B,EAAEC,IAAY,KAAK;EACtE,MAAMC,SAAS,GAAGF,WAAW,CAACG,IAAI,CAAEC,OAAO,IAAKA,OAAO,CAACH,IAAI,KAAKA,IAAI,CAAC,EAAEI,GAAG;EAE3E,OAAOH,SAAS,IAAI,EAAE;AACxB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,MAAMI,aAAa,GAAIC,gBAAwC,IAAK;EAClE,OAAO;IACLC,iBAAiB,EAAED,gBAAgB,CAACC,iBAAiB,IAAI,KAAK;IAC9DC,sBAAsB,EAAEF,gBAAgB,CAACE,sBAAsB,IAAI;EACrE,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,MAAMC,cAAc,GAAIH,gBAAwC,IAAK;EACnE,OAAO;IACLI,oBAAoB,EAAEJ,gBAAgB,CAACI,oBAAoB,IAAI,KAAK;IACpEC,yBAAyB,EAAEL,gBAAgB,CAACK,yBAAyB,IAAI;EAC3E,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,MAAMC,iBAAiB,GAAIC,iBAAyB,IAAK;EACvD,OAAOA,iBAAiB,KAAK,mBAAmB;AAClD,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,0BAA0B,GAAGA,CAACC,YAA8B,EAAEC,gBAA0B,KAAK;EACjG,MAAMC,eAAe,GAAG,EAAE;EAC1BF,YAAY,CAACG,OAAO,CAAEC,QAAwB,IAAK;IACjD,IAAIH,gBAAgB,CAACI,QAAQ,CAACD,QAAQ,CAACE,EAAE,CAAC,EAAE;MAC1C,MAAMC,YAAY,GAAG;QACnBC,KAAK,EAAEJ,QAAQ,CAACK,iBAAiB;QACjCC,MAAM,EAAEN,QAAQ,CAACM,MAAM;QACvBC,aAAa,EAAEP,QAAQ,CAACO,aAAa;QACrC1B,IAAI,EAAEmB,QAAQ,CAACnB;MACjB,CAAC;MACDiB,eAAe,CAACU,IAAI,CAACL,YAAY,CAAC;IACpC;EACF,CAAC,CAAC;EAEF,OAAOL,eAAe;AACxB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMW,iBAAiB,GAAGA,CACxBC,QAAwB,EACxBC,IAAiB,EACjBC,aAAuB,KACpB;EACH,MAAMC,gBAA+B,GAAG,EAAE;EAC1CH,QAAQ,CAACX,OAAO,CAAEe,OAAgB,IAAK;IACrC,IACEA,OAAO,CAACC,YAAY,KAAKJ,IAAI,IAC7BG,OAAO,CAACE,MAAM,KACbJ,aAAa,CAACK,MAAM,KAAK,CAAC,IAAIL,aAAa,CAACX,QAAQ,CAACa,OAAO,CAACZ,EAAE,CAAC,CAAC,EAClE;MACAW,gBAAgB,CAACL,IAAI,CAAC;QACpBN,EAAE,EAAEY,OAAO,CAACZ,EAAE;QACdrB,IAAI,EAAEiC,OAAO,CAACjC,IAAI;QAClBqC,QAAQ,EAAEJ,OAAO,CAACK,YAAY;QAC9BC,SAAS,EAAEN,OAAO,CAACO;MACrB,CAAC,CAAC;IACJ;EACF,CAAC,CAAC;EAEF,OAAOR,gBAAgB;AACzB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,SAASS,oBAAoBA,CAACC,gBAA0B,EAAE;EACxD,OAAOA,gBAAgB,EAAExC,IAAI,CAAEyC,CAAS,IAAKA,CAAC,CAACJ,SAAS,CAAC;AAC3D;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASK,iBAAiBA,CAACC,WAW1B,EAAW;EACV,MAAM;IACJC,QAAQ;IACRC,QAAQ;IACRC,UAAU;IACVC,WAAW;IACXpB,QAAQ;IACRqB,eAAe;IACf5C,gBAAgB;IAChBS,YAAY;IACZoC;EACF,CAAC,GAAGN,WAAW;EAEf,MAAMO,iBAAiB,GAAGJ,UAAU,CAACK,+BAA+B,GAChEL,UAAU,CAACM,4BAA4B,GACvC,IAAI;EACR,MAAMC,sBAAsB,GAAGjD,gBAAgB,CAACkD,qCAAqC,GACjFlD,gBAAgB,CAACgD,4BAA4B,GAC7CF,iBAAiB;EAErB,MAAMK,WAAW,GAAG7B,iBAAiB,CACnCC,QAAQ,EACR6B,mBAAY,EACZpD,gBAAgB,CAACqD,gBAAgB,KAAK,KAAK,GAAG,EAAE,GAAGrD,gBAAgB,CAACsD,WACtE,CAAC;EAED,MAAMC,SAAS,GAAGjC,iBAAiB,CACjCC,QAAQ,EACRiC,gBAAS,EACTxD,gBAAgB,CAACyD,cAAc,KAAK,KAAK,GAAG,EAAE,GAAGzD,gBAAgB,CAACuD,SACpE,CAAC;EAEDA,SAAS,CAAClC,IAAI,CAAC;IACbN,EAAE,EAAE,GAAG;IACPrB,IAAI,EAAE,WAAW;IACjBqC,QAAQ,EAAE,KAAK;IACfE,SAAS,EAAE;EACb,CAAC,CAAC,CAAC,CAAC;;EAEJ,MAAMyB,iBAAiB,GAAGvB,oBAAoB,CAACgB,WAAW,CAAC;EAE3D,MAAMQ,SAAS,GAAG;IAChBC,KAAK,EAAEnB,QAAQ;IACfoB,SAAS,EAAErB,QAAQ,CAACsB,oBAAoB;IACxCC,cAAc,EAAErB,UAAU,CAACqB,cAAc;IACzCC,sBAAsB,EAAE1D,iBAAiB,CAACN,gBAAgB,CAACO,iBAAiB,CAAC;IAC7E0D,OAAO,EAAEvB,UAAU,CAACwB,cAAc;IAClCC,UAAU,EAAEzB,UAAU,CAAC0B,YAAY;IACnCC,OAAO,EAAE7B,QAAQ,CAAC8B,QAAQ;IAC1BC,SAAS,EAAE,GAAG/B,QAAQ,CAACgC,SAAS,IAAIhC,QAAQ,CAACiC,QAAQ,EAAE;IACvDC,WAAW,EAAElC,QAAQ,CAACmC,KAAK;IAC3BC,cAAc,EAAEpC,QAAQ,CAACqC,cAAc;IACvCC,UAAU,EAAE9E,gBAAgB,CAAC8E,UAAU;IACvCC,QAAQ,EAAE/E,gBAAgB,CAACgF,eAAe,GACtC;MACExD,IAAI,EAAE,WAAW;MACjByD,cAAc,EAAEzE,0BAA0B,CAACC,YAAY,EAAET,gBAAgB,CAACkF,SAAS;IACrF,CAAC,GACDC,SAAS;IACbC,mBAAmB,EAAE7C,WAAW,CAAC6C,mBAAmB;IACpDC,cAAc,EAAE7C,QAAQ,CAAC6C,cAAc,GAAG7C,QAAQ,CAAC6C,cAAc,GAAG,IAAI;IACxEC,MAAM,EAAE9C,QAAQ,CAAC8C,MAAM;IACvBC,YAAY,EAAE5C,WAAW,CAAC6C,QAAQ;IAClCC,cAAc,EAAE9C,WAAW,CAAC+C,QAAQ;IACpCC,WAAW,EAAEhD,WAAW,CAACgD,WAAW;IACpCC,oBAAoB,EAAElD,UAAU,CAACkD,oBAAoB;IACrDC,qBAAqB,EAAE,EAAE;IAAE;IAC3BC,eAAe,EAAE9F,gBAAgB,CAACyD,cAAoC;IACtEF,SAAS;IACTJ,WAAW;IACX4C,UAAU,EAAE;MACVC,WAAW,EAAE;QACXC,UAAU,EAAEjG,gBAAgB,CAACkG,UAAU;QACvCC,kBAAkB,EAAEnG,gBAAgB,CAACoG,oBAAoB;QACzDC,cAAc,EAAErG,gBAAgB,CAACsG,gBAAgB;QACjDC,gBAAgB,EAAEvG,gBAAgB,CAACqD,gBAAgB;QACnDjB,gBAAgB,EAAEe,WAAW;QAC7BqD,qBAAqB,EAAExG,gBAAgB,CAACyG;MAC1C;IACF,CAAC;IACDC,iBAAiB,EAAEhD,iBAAiB,EAAE3C,EAAE,IAAI,EAAE;IAC9C4F,0BAA0B,EAAEjE,UAAU,CAACkE,cAAc;IACrDC,yBAAyB,EAAE7G,gBAAgB,CAAC4G,cAAc;IAC1DE,qBAAqB,EAAE9G,gBAAgB,CAACgF,eAAe;IACvD+B,4BAA4B,EAAE/G,gBAAgB,CAACgH,0BAA0B;IACzEC,SAAS,EAAEjH,gBAAgB,CAACkH,mBAAmB;IAC/CC,2BAA2B,EAAEvE,eAAe,CAACwE,sBAAsB;IACnEC,gBAAgB,EAAE3E,UAAU,CAAC4E,cAAc;IAC3CC,mBAAmB,EAAE7E,UAAU,CAAC8E,iBAAiB;IACjDC,uBAAuB,EAAE/E,UAAU,CAAC+E,uBAAuB;IAC3DC,SAAS,EAAElF,QAAQ,CAACmF,IAAI;IACxBC,mBAAmB,EAAE5H,gBAAgB,CAAC6H,cAAc;IACpDC,yBAAyB,EAAE9H,gBAAgB,CAAC+H,kBAAkB,GAC1D/H,gBAAgB,CAAC+H,kBAAkB,CAACC,UAAU,GAC9C,KAAK;IACTC,aAAa,EAAEjI,gBAAgB,CAACiI,aAAa;IAC7CC,YAAY,EAAElI,gBAAgB,CAACkI,YAAY;IAC3CC,cAAc,EAAE3F,QAAQ,CAACzB,EAAE;IAE3BtB,WAAW,EAAE;MACX2I,aAAa,EAAE5I,aAAa,CAACqD,UAAU,EAAE,iBAAiB,CAAC;MAC3DwF,iBAAiB,EAAE7I,aAAa,CAACqD,UAAU,EAAE,qBAAqB;IACpE,CAAC;IACDyF,iCAAiC,EAAE5F,UAAU,CAACK,+BAA+B;IAC7EC,4BAA4B,EAAEC,sBAAsB;IACpDsF,iBAAiB,EAAEvI,gBAAgB,CAACuI,iBAAiB,IAAI,EAAE;IAC3DC,aAAa,EAAE5F,eAAe,CAAC4F,aAAa;IAC5CC,iBAAiB,EAAE7F,eAAe,CAAC6F,iBAAiB,GAChD7F,eAAe,CAAC6F,iBAAiB,GACjC,KAAK;IACTC,eAAe,EAAE3I,aAAa,CAACC,gBAAgB,CAAC;IAChD2I,WAAW,EAAExI,cAAc,CAACH,gBAAgB,CAAC;IAC7C4I,6BAA6B,EAC3BlG,UAAU,CAACkG,6BAA6B,IAAIC;EAChD,CAAC;EAED,OAAOlF,SAAS;AAClB","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["CC_TASK_EVENTS","exports","AGENT_CONTACT_ASSIGN_FAILED","AGENT_CONTACT_OFFER_RONA","AGENT_CONTACT_HELD","AGENT_CONTACT_HOLD_FAILED","AGENT_CONTACT_UNHELD","AGENT_CONTACT_UNHOLD_FAILED","AGENT_CONSULT_CREATED","AGENT_OFFER_CONSULT","AGENT_CONSULTING","AGENT_CONSULT_FAILED","AGENT_CTQ_FAILED","AGENT_CTQ_CANCELLED","AGENT_CTQ_CANCEL_FAILED","AGENT_CONSULT_ENDED","AGENT_CONSULT_END_FAILED","AGENT_CONSULT_CONFERENCE_ENDED","AGENT_CONSULT_CONFERENCING","AGENT_CONSULT_CONFERENCED","AGENT_CONSULT_CONFERENCE_FAILED","PARTICIPANT_JOINED_CONFERENCE","PARTICIPANT_LEFT_CONFERENCE","PARTICIPANT_LEFT_CONFERENCE_FAILED","AGENT_CONSULT_CONFERENCE_END_FAILED","AGENT_CONFERENCE_TRANSFERRED","AGENT_CONFERENCE_TRANSFER_FAILED","PARTICIPANT_POST_CALL_ACTIVITY","AGENT_BLIND_TRANSFERRED","AGENT_BLIND_TRANSFER_FAILED","AGENT_VTEAM_TRANSFERRED","AGENT_VTEAM_TRANSFER_FAILED","AGENT_CONSULT_TRANSFERRING","AGENT_CONSULT_TRANSFERRED","AGENT_CONSULT_TRANSFER_FAILED","CONTACT_RECORDING_PAUSED","CONTACT_RECORDING_PAUSE_FAILED","CONTACT_RECORDING_RESUMED","CONTACT_RECORDING_RESUME_FAILED","CONTACT_ENDED","CONTACT_MERGED","AGENT_CONTACT_END_FAILED","AGENT_WRAPUP","AGENT_WRAPPEDUP","AGENT_WRAPUP_FAILED","AGENT_OUTBOUND_FAILED","AGENT_CONTACT","AGENT_OFFER_CONTACT","AGENT_CONTACT_ASSIGNED","AGENT_CONTACT_UNASSIGNED","AGENT_INVITE_FAILED","CC_AGENT_EVENTS","WELCOME","AGENT_RELOGIN_SUCCESS","AGENT_RELOGIN_FAILED","AGENT_DN_REGISTERED","AGENT_LOGOUT","AGENT_LOGOUT_SUCCESS","AGENT_LOGOUT_FAILED","AGENT_STATION_LOGIN","AGENT_STATION_LOGIN_SUCCESS","AGENT_STATION_LOGIN_FAILED","AGENT_STATE_CHANGE","AGENT_MULTI_LOGIN","AGENT_STATE_CHANGE_SUCCESS","AGENT_STATE_CHANGE_FAILED","AGENT_BUDDY_AGENTS","AGENT_BUDDY_AGENTS_SUCCESS","AGENT_BUDDY_AGENTS_RETRIEVE_FAILED","AGENT_CONTACT_RESERVED","CC_EVENTS","IDLE_CODE","WRAP_UP_CODE"],"sources":["types.ts"],"sourcesContent":["import * as Agent from '../agent/types';\n\n/**\n * Generic type for converting a const enum object into a union type of its values\n * @internal\n */\ntype Enum<T extends Record<string, unknown>> = T[keyof T];\n\n/**\n * Events emitted on task objects\n * @enum {string}\n * @private\n * @ignore\n */\nexport const CC_TASK_EVENTS = {\n /** Event emitted when assigning contact to agent fails */\n AGENT_CONTACT_ASSIGN_FAILED: 'AgentContactAssignFailed',\n /** Event emitted when agent does not respond to contact offer */\n AGENT_CONTACT_OFFER_RONA: 'AgentOfferContactRona',\n /** Event emitted when contact is put on hold */\n AGENT_CONTACT_HELD: 'AgentContactHeld',\n /** Event emitted when putting contact on hold fails */\n AGENT_CONTACT_HOLD_FAILED: 'AgentContactHoldFailed',\n /** Event emitted when contact is taken off hold */\n AGENT_CONTACT_UNHELD: 'AgentContactUnheld',\n /** Event emitted when taking contact off hold fails */\n AGENT_CONTACT_UNHOLD_FAILED: 'AgentContactUnHoldFailed',\n /** Event emitted when consultation is created */\n AGENT_CONSULT_CREATED: 'AgentConsultCreated',\n /** Event emitted when consultation is offered */\n AGENT_OFFER_CONSULT: 'AgentOfferConsult',\n /** Event emitted when agent is consulting */\n AGENT_CONSULTING: 'AgentConsulting',\n /** Event emitted when consultation fails */\n AGENT_CONSULT_FAILED: 'AgentConsultFailed',\n /** Event emitted when consulting to queue (CTQ) fails */\n AGENT_CTQ_FAILED: 'AgentCtqFailed',\n /** Event emitted when CTQ is cancelled */\n AGENT_CTQ_CANCELLED: 'AgentCtqCancelled',\n /** Event emitted when CTQ cancellation fails */\n AGENT_CTQ_CANCEL_FAILED: 'AgentCtqCancelFailed',\n /** Event emitted when consultation ends */\n AGENT_CONSULT_ENDED: 'AgentConsultEnded',\n /** Event emitted when ending consultation fails */\n AGENT_CONSULT_END_FAILED: 'AgentConsultEndFailed',\n /** Event emitted when consultation conference ends */\n AGENT_CONSULT_CONFERENCE_ENDED: 'AgentConsultConferenceEnded',\n /** Event emitted when consultation conference is in progress */\n AGENT_CONSULT_CONFERENCING: 'AgentConsultConferencing',\n /** Event emitted when consultation conference starts */\n AGENT_CONSULT_CONFERENCED: 'AgentConsultConferenced',\n /** Event emitted when consultation conference fails */\n AGENT_CONSULT_CONFERENCE_FAILED: 'AgentConsultConferenceFailed',\n /** Event emitted when participant joins conference */\n PARTICIPANT_JOINED_CONFERENCE: 'ParticipantJoinedConference',\n /** Event emitted when participant leaves conference */\n PARTICIPANT_LEFT_CONFERENCE: 'ParticipantLeftConference',\n /** Event emitted when participant leaving conference fails */\n PARTICIPANT_LEFT_CONFERENCE_FAILED: 'ParticipantLeftConferenceFailed',\n /** Event emitted when consultation conference end fails */\n AGENT_CONSULT_CONFERENCE_END_FAILED: 'AgentConsultConferenceEndFailed',\n /** Event emitted when conference is successfully transferred */\n AGENT_CONFERENCE_TRANSFERRED: 'AgentConferenceTransferred',\n /** Event emitted when conference transfer fails */\n AGENT_CONFERENCE_TRANSFER_FAILED: 'AgentConferenceTransferFailed',\n /** Event emitted for post-call activity by participant */\n PARTICIPANT_POST_CALL_ACTIVITY: 'ParticipantPostCallActivity',\n /** Event emitted when contact is blind transferred */\n AGENT_BLIND_TRANSFERRED: 'AgentBlindTransferred',\n /** Event emitted when blind transfer fails */\n AGENT_BLIND_TRANSFER_FAILED: 'AgentBlindTransferFailed',\n /** Event emitted when contact is transferred to virtual team */\n AGENT_VTEAM_TRANSFERRED: 'AgentVteamTransferred',\n /** Event emitted when virtual team transfer fails */\n AGENT_VTEAM_TRANSFER_FAILED: 'AgentVteamTransferFailed',\n /** Event emitted when consultation transfer is in progress */\n AGENT_CONSULT_TRANSFERRING: 'AgentConsultTransferring',\n /** Event emitted when consultation transfer completes */\n AGENT_CONSULT_TRANSFERRED: 'AgentConsultTransferred',\n /** Event emitted when consultation transfer fails */\n AGENT_CONSULT_TRANSFER_FAILED: 'AgentConsultTransferFailed',\n /** Event emitted when contact recording is paused */\n CONTACT_RECORDING_PAUSED: 'ContactRecordingPaused',\n /** Event emitted when pausing contact recording fails */\n CONTACT_RECORDING_PAUSE_FAILED: 'ContactRecordingPauseFailed',\n /** Event emitted when contact recording is resumed */\n CONTACT_RECORDING_RESUMED: 'ContactRecordingResumed',\n /** Event emitted when resuming contact recording fails */\n CONTACT_RECORDING_RESUME_FAILED: 'ContactRecordingResumeFailed',\n /** Event emitted when contact ends */\n CONTACT_ENDED: 'ContactEnded',\n /** Event emitted when contact is merged */\n CONTACT_MERGED: 'ContactMerged',\n /** Event emitted when ending contact fails */\n AGENT_CONTACT_END_FAILED: 'AgentContactEndFailed',\n /** Event emitted when agent enters wrap-up state */\n AGENT_WRAPUP: 'AgentWrapup',\n /** Event emitted when agent completes wrap-up */\n AGENT_WRAPPEDUP: 'AgentWrappedUp',\n /** Event emitted when wrap-up fails */\n AGENT_WRAPUP_FAILED: 'AgentWrapupFailed',\n /** Event emitted when outbound call fails */\n AGENT_OUTBOUND_FAILED: 'AgentOutboundFailed',\n /** Event emitted for general agent contact events */\n AGENT_CONTACT: 'AgentContact',\n /** Event emitted when contact is offered to agent */\n AGENT_OFFER_CONTACT: 'AgentOfferContact',\n /** Event emitted when contact is assigned to agent */\n AGENT_CONTACT_ASSIGNED: 'AgentContactAssigned',\n /** Event emitted when contact is unassigned from agent */\n AGENT_CONTACT_UNASSIGNED: 'AgentContactUnassigned',\n /** Event emitted when inviting agent fails */\n AGENT_INVITE_FAILED: 'AgentInviteFailed',\n} as const;\n\n/**\n * Events emitted on Contact Center agent operations\n * @enum {string}\n * @private\n * @ignore\n */\nexport const CC_AGENT_EVENTS = {\n /** Welcome event when agent connects to websocket/backend */\n WELCOME: 'Welcome',\n /** Event emitted when agent re-login is successful */\n AGENT_RELOGIN_SUCCESS: 'AgentReloginSuccess',\n /** Event emitted when agent re-login fails */\n AGENT_RELOGIN_FAILED: 'AgentReloginFailed',\n /** Event emitted when agent DN registration completes */\n AGENT_DN_REGISTERED: 'AgentDNRegistered',\n /** Event emitted when agent initiates logout */\n AGENT_LOGOUT: 'Logout',\n /** Event emitted when agent logout is successful */\n AGENT_LOGOUT_SUCCESS: 'AgentLogoutSuccess',\n /** Event emitted when agent logout fails */\n AGENT_LOGOUT_FAILED: 'AgentLogoutFailed',\n /** Event emitted when agent initiates station login */\n AGENT_STATION_LOGIN: 'StationLogin',\n /** Event emitted when agent station login is successful */\n AGENT_STATION_LOGIN_SUCCESS: 'AgentStationLoginSuccess',\n /** Event emitted when agent station login fails */\n AGENT_STATION_LOGIN_FAILED: 'AgentStationLoginFailed',\n /** Event emitted when agent's state changes */\n AGENT_STATE_CHANGE: 'AgentStateChange',\n /** Event emitted when multiple logins detected for same agent */\n AGENT_MULTI_LOGIN: 'AGENT_MULTI_LOGIN',\n /** Event emitted when agent state change is successful */\n AGENT_STATE_CHANGE_SUCCESS: 'AgentStateChangeSuccess',\n /** Event emitted when agent state change fails */\n AGENT_STATE_CHANGE_FAILED: 'AgentStateChangeFailed',\n /** Event emitted when requesting buddy agents list */\n AGENT_BUDDY_AGENTS: 'BuddyAgents',\n /** Event emitted when buddy agents list is successfully retrieved */\n AGENT_BUDDY_AGENTS_SUCCESS: 'BuddyAgents',\n /** Event emitted when retrieving buddy agents list fails */\n AGENT_BUDDY_AGENTS_RETRIEVE_FAILED: 'BuddyAgentsRetrieveFailed',\n /** Event emitted when contact is reserved for agent */\n AGENT_CONTACT_RESERVED: 'AgentContactReserved',\n} as const;\n\n/**\n * Combined Contact Center events including both agent and task events\n * @enum {string}\n * @public\n */\nexport const CC_EVENTS = {\n ...CC_AGENT_EVENTS,\n ...CC_TASK_EVENTS,\n} as const;\n\n/**\n * Event data received when agent connects to the system\n * @public\n */\nexport type WelcomeEvent = {\n /** ID of the agent that connected */\n agentId: string;\n};\n\n/**\n * Response type for welcome events which can be either success or error\n * @public\n */\nexport type WelcomeResponse = WelcomeEvent | Error;\n\n/**\n * Type representing the union of all possible Contact Center events\n * @public\n */\nexport type CC_EVENTS = Enum<typeof CC_EVENTS>;\n\n/**\n * WebSocket event structure for Contact Center events\n * @public\n */\nexport type WebSocketEvent = {\n /** Type of the event */\n type: CC_EVENTS;\n /** Event payload data */\n data:\n | WelcomeEvent\n | Agent.StationLoginSuccess\n | Agent.LogoutSuccess\n | Agent.ReloginSuccess\n | Agent.StateChangeSuccess\n | Agent.BuddyAgentsSuccess;\n};\n\n/**\n * Represents the response from getUserUsingCI method.\n */\nexport type AgentResponse = {\n /**\n * ID of the agent.\n */\n id: string;\n\n /**\n * The ciUserId of the agent.\n */\n ciUserId: string;\n\n /**\n * The first name of the agent.\n */\n firstName: string;\n\n /**\n * The last name of the agent.\n */\n lastName: string;\n\n /**\n * Identifier for a Desktop Profile.\n */\n agentProfileId: string;\n\n /**\n * The email address of the agent.\n */\n email: string;\n\n /**\n * Team IDs assigned to the agent.\n */\n teamIds: string[];\n\n /**\n * Multimedia profile ID associated with the agent.\n */\n multimediaProfileId: string;\n\n /**\n * Skill profile ID of the agent.\n */\n skillProfileId: string;\n\n /**\n * Site ID of the agent.\n */\n siteId: string;\n\n /**\n * Database ID of the agent.\n */\n dbId?: string;\n\n /**\n * The default dialed number of the agent.\n */\n defaultDialledNumber?: string;\n};\n\n/**\n * Represents the response from getDesktopProfileById method.\n */\nexport type DesktopProfileResponse = {\n /**\n * Represents the voice options of an agent.\n */\n loginVoiceOptions: LoginOption[];\n\n /**\n * Wrap-up codes that the agents can select when they wrap up a contact. It can take one of these values: ALL - To make all wrap-up codes available. SPECIFIC - To make specific codes available.\n */\n accessWrapUpCode: string;\n\n /**\n * Idle codes that the agents can select in Agent Desktop. It can take one of these values: ALL - To make all idle codes available. SPECIFIC - To make specific codes available.\n */\n accessIdleCode: string;\n\n /**\n * Wrap-up codes list that the agents can select when they wrap up a contact.\n */\n wrapUpCodes: string[];\n\n /**\n * Idle codes list that the agents can select in Agent Desktop.\n */\n idleCodes: string[];\n\n /**\n * Dial plan enabled for the agent.\n */\n dialPlanEnabled: boolean;\n\n /**\n * Last agent routing enabled for the agent.\n */\n lastAgentRouting: boolean;\n\n /**\n * Auto wrap-up allowed.\n */\n autoWrapUp: boolean;\n\n /**\n * Auto answer allowed.\n */\n autoAnswer: boolean;\n\n /**\n * Auto wrap-up after seconds.\n */\n autoWrapAfterSeconds: number;\n\n /**\n * Agent available after outdial.\n */\n agentAvailableAfterOutdial: boolean;\n\n /**\n * Allow auto wrap-up extension.\n */\n allowAutoWrapUpExtension: boolean;\n\n /**\n * Outdial enabled for the agent.\n */\n outdialEnabled: boolean;\n\n /**\n * Outdial entry point ID of the agent.\n */\n outdialEntryPointId: string;\n\n /**\n * Outdial ANI ID of the agent.\n */\n outdialANIId: string;\n\n /**\n * Consult to queue allowed.\n */\n consultToQueue: boolean;\n\n /**\n * Address book ID of the agent.\n */\n addressBookId: string;\n\n /**\n * Viewable statistics of the agent.\n */\n viewableStatistics: {\n id: string;\n agentStats: boolean;\n accessQueueStats: string;\n contactServiceQueues: string[];\n loggedInTeamStats: boolean;\n accessTeamStats: string;\n teams: string[];\n };\n\n /**\n * Agent DN validation of the agent.\n */\n agentDNValidation: string;\n\n /**\n * Dial plans of the agent.\n */\n dialPlans: string[];\n\n /**\n * Timeout desktop inactivity custom enabled.\n */\n timeoutDesktopInactivityCustomEnabled: boolean;\n\n /**\n * Timeout desktop inactivity minutes.\n */\n timeoutDesktopInactivityMins: number;\n\n /**\n * Show user details in Microsoft enabled or not.\n */\n showUserDetailsMS: boolean;\n\n /**\n * State synchronization in Microsoft enabled or not.\n */\n stateSynchronizationMS: boolean;\n\n /**\n * Show user details in Webex enabled or not.\n */\n showUserDetailsWebex: boolean;\n\n /**\n * State synchronization in Webex enabled or not.\n */\n stateSynchronizationWebex: boolean;\n};\n\n/**\n * Response containing multimedia profile configuration for an agent\n * Defines capabilities across different communication channels\n * @private\n */\nexport type MultimediaProfileResponse = {\n /** Organization identifier */\n organizationId: string;\n /** Profile identifier */\n id: string;\n /** Version number of the profile */\n version: number;\n /** Profile name */\n name: string;\n /** Profile description */\n description: string;\n /** Maximum number of concurrent chat interactions */\n chat: number;\n /** Maximum number of concurrent email interactions */\n email: number;\n /** Maximum number of concurrent voice interactions */\n telephony: number;\n /** Maximum number of concurrent social media interactions */\n social: number;\n /** Whether the profile is active */\n active: boolean;\n /** Whether channel blending is enabled */\n blendingModeEnabled: boolean;\n /** Type of blending mode configuration */\n blendingMode: string;\n /** Whether this is the system default profile */\n systemDefault: boolean;\n /** Timestamp when profile was created */\n createdTime: number;\n /** Timestamp when profile was last updated */\n lastUpdatedTime: number;\n};\n\n/**\n * Response from subscription requests containing WebSocket connection details\n * @public\n */\nexport type SubscribeResponse = {\n /** HTTP status code of the response */\n statusCode: number;\n /** Response body containing connection details */\n body: {\n /** WebSocket URL for real-time updates */\n webSocketUrl?: string;\n /** Unique subscription identifier */\n subscriptionId?: string;\n };\n /** Optional status or error message */\n message: string | null;\n};\n\nexport type AuxCode = {\n /**\n * ID of the Auxiliary Code.\n */\n id: string;\n\n /**\n * Indicates whether the auxiliary code is active or not.\n */\n active: boolean;\n\n /**\n * Indicates whether this is the default code (true) or not (false).\n */\n defaultCode: boolean;\n\n /**\n * Indicates whether this is the system default code (true) or not (false).\n */\n isSystemCode: boolean;\n\n /**\n * A short description indicating the context of the code.\n */\n description: string;\n\n /**\n * Name of the Auxiliary Code.\n */\n name: string;\n\n /**\n * Indicates the work type associated with this code.\n */\n workTypeCode: string;\n};\n\nexport type ListAuxCodesResponse = {\n data: AuxCode[];\n meta: {\n page: number;\n pageSize: number;\n totalPages: number;\n totalRecords: number;\n };\n};\n\n/**\n * Configuration for a team in the contact center system\n * @private\n */\nexport type TeamList = {\n /** Unique identifier for the team */\n id: string;\n /** Team name */\n name: string;\n /** Type of team (e.g., 'AGENT_BASED') */\n teamType: string;\n /** Current status of the team */\n teamStatus: string;\n /** Whether the team is active */\n active: boolean;\n /** Site identifier where team is located */\n siteId: string;\n /** Name of the site */\n siteName: string;\n /** Optional multimedia profile ID for team */\n multiMediaProfileId?: string;\n /** List of user IDs belonging to team */\n userIds: string[];\n /** Whether queue rankings are enabled for team */\n rankQueuesForTeam: boolean;\n /** Ordered list of queue rankings */\n queueRankings: string[];\n /** Optional database identifier */\n dbId?: string;\n /** Optional desktop layout identifier */\n desktopLayoutId?: string;\n};\n\n/**\n * Response type for listing teams with pagination metadata\n * @private\n */\nexport type ListTeamsResponse = {\n /** Array of team configurations */\n data: TeamList[];\n /** Pagination metadata */\n meta: {\n /** Current page number */\n page: number;\n /** Number of items per page */\n pageSize: number;\n /** Total number of pages */\n totalPages: number;\n /** Total number of records */\n totalRecords: number;\n };\n};\n\n/**\n * Basic organization information in the contact center system\n * @private\n * @ignore\n */\nexport type OrgInfo = {\n /** Tenant identifier */\n tenantId: string;\n /** Organization timezone */\n timezone: string;\n};\n\n/**\n * Organization-wide feature settings and configurations\n * @private\n */\nexport type OrgSettings = {\n /** Whether WebRTC functionality is enabled */\n webRtcEnabled: boolean;\n /** Whether sensitive data masking is enabled */\n maskSensitiveData: boolean;\n /** Whether campaign manager features are enabled */\n campaignManagerEnabled: boolean;\n};\n\n/**\n * Contact center site configuration information\n * @private\n */\nexport type SiteInfo = {\n /** Unique site identifier */\n id: string;\n /** Site name */\n name: string;\n /** Whether site is active */\n active: boolean;\n /** Multimedia profile ID for site */\n multimediaProfileId: string;\n /** Whether this is the system default site */\n systemDefault: boolean;\n};\n\n/**\n * Tenant-level configuration data and settings\n * @private\n */\nexport type TenantData = {\n /** Desktop inactivity timeout in minutes */\n timeoutDesktopInactivityMins: number;\n /** Whether default DN is enforced */\n forceDefaultDn: boolean;\n /** Regex pattern for default DN validation */\n dnDefaultRegex: string;\n /** Regex pattern for other DN validation */\n dnOtherRegex: string;\n /** Whether privacy shield feature is visible */\n privacyShieldVisible: boolean;\n /** Whether outbound dialing is enabled */\n outdialEnabled: boolean;\n /** Whether ending calls is enabled */\n endCallEnabled: boolean;\n /** Whether ending consultations is enabled */\n endConsultEnabled: boolean;\n /** Whether call variables are suppressed */\n callVariablesSuppressed: boolean;\n /** Whether desktop inactivity timeout is enabled */\n timeoutDesktopInactivityEnabled: boolean;\n /** Lost connection recovery timeout in seconds */\n lostConnectionRecoveryTimeout: number;\n};\n\n/**\n * URL mapping configuration for external integrations\n * @public\n */\nexport type URLMapping = {\n id: string;\n name: string;\n url: string;\n links: string[]; // Assuming 'links' is an array of strings, adjust if necessary\n createdTime: number; // Assuming timestamps are represented as numbers\n lastUpdatedTime: number;\n};\n\n/**\n * Constant representing idle code\n * @public\n * @ignore\n */\nexport const IDLE_CODE = 'IDLE_CODE';\n\n/**\n * Constant representing wrap up code\n * @public\n * @ignore\n */\nexport const WRAP_UP_CODE = 'WRAP_UP_CODE';\n\n/**\n * Type representing the possible auxiliary code types\n * @public\n */\nexport type AuxCodeType = typeof IDLE_CODE | typeof WRAP_UP_CODE;\n\n/**\n * Sort order configuration for queries\n * @internal\n */\ntype SortOrder = {\n /** Property to sort by */\n property: string;\n /** Sort order direction */\n order: string;\n};\n\n/**\n * Search query configuration\n * @internal\n */\ntype SearchQuery = {\n /** Properties to search in */\n properties: string;\n /** Search value */\n value: string;\n};\n\n/**\n * Parameters for querying Contact Center resources\n * @public\n */\nexport type QueryParams = {\n /** Page number for pagination */\n pageNumber?: number;\n pageSize?: number;\n attributes?: Array<string>;\n ids?: Array<string>;\n queueType?: string;\n entryPointType?: string;\n channelType?: string;\n isActive?: boolean;\n workTypeCode?: AuxCodeType;\n names?: Array<string>;\n sortOrder?: SortOrder;\n searchQuery?: SearchQuery;\n defaultCode?: boolean;\n search?: string;\n desktopProfileFilter?: boolean;\n};\n\n/**\n * Basic entity information used throughout the system\n * @public\n */\nexport type Entity = {\n /** Whether this is a system entity */\n isSystem: boolean;\n /** Entity name */\n name: string;\n /** Unique entity identifier */\n id: string;\n /** Whether this is the default entity */\n isDefault: boolean;\n};\n\n/**\n * Dial plan entity definition containing number manipulation rules\n * @public\n */\nexport type DialPlanEntity = {\n /** Unique identifier for the dial plan */\n id: string;\n /** Regular expression pattern for matching numbers */\n regularExpression: string;\n /** Prefix to add to matched numbers */\n prefix: string;\n /** Characters to strip from matched numbers */\n strippedChars: string;\n /** Name of the dial plan */\n name: string;\n};\n\n/**\n * Complete dial plan configuration for number handling\n * @public\n */\nexport type DialPlan = {\n /** Type of dial plan (e.g., 'adhocDial') */\n type: string;\n /** List of dial plan entities with transformation rules */\n dialPlanEntity: {\n /** Regular expression pattern */\n regex: string;\n /** Number prefix */\n prefix: string;\n /** Characters to strip */\n strippedChars: string;\n /** Entity name */\n name: string;\n }[];\n};\n\n/**\n * Agent wrap-up codes configuration with pagination metadata\n * @public\n */\nexport type agentWrapUpCodes = {\n /** Array of wrap-up code entities */\n data: Entity[];\n /** Pagination and navigation metadata */\n meta: {\n /** Navigation URLs for pagination */\n links: {\n /** URL for first page */\n first: string;\n /** URL for last page */\n last: string;\n /** URL for next page */\n next: string;\n /** URL for current page */\n self: string;\n };\n /** Organization identifier */\n orgid: string;\n /** Current page number */\n page: number;\n /** Number of items per page */\n pageSize: number;\n /** Total number of pages */\n totalPages: number;\n /** Total number of records */\n totalRecords: number;\n };\n};\n\n/**\n * Default wrap-up code configuration for an agent\n * @public\n */\nexport type agentDefaultWrapupCode = {\n /** Unique identifier for the wrap-up code */\n id: string;\n /** Display name of the wrap-up code */\n name: string;\n};\n\n/**\n * Wrap-up reason configuration used to classify completed interactions\n * @public\n */\nexport type WrapUpReason = {\n /** Whether this is a system-defined reason */\n isSystem: boolean;\n /** Display name of the reason */\n name: string;\n /** Unique identifier */\n id: string;\n /** Whether this is the default reason */\n isDefault: boolean;\n};\n\n/**\n * Wrap-up configuration data containing settings and available options\n * @public\n */\nexport type WrapupData = {\n /** Wrap-up configuration properties */\n wrapUpProps: {\n /** Whether automatic wrap-up is enabled */\n autoWrapup?: boolean;\n /** Time in seconds before auto wrap-up triggers */\n autoWrapupInterval?: number;\n /** Whether last agent routing is enabled */\n lastAgentRoute?: boolean;\n /** List of available wrap-up reasons */\n wrapUpReasonList: Array<WrapUpReason>;\n /** List of available wrap-up codes */\n wrapUpCodesList?: Array<string>;\n /** Access control for idle codes ('ALL' or 'SPECIFIC') */\n idleCodesAccess?: 'ALL' | 'SPECIFIC';\n /** Associated interaction identifier */\n interactionId?: string;\n /** Whether cancelling auto wrap-up is allowed */\n allowCancelAutoWrapup?: boolean;\n };\n};\n\n/**\n * Available login options for voice channel access\n * 'AGENT_DN' - Login using agent's DN\n * 'EXTENSION' - Login using extension number\n * 'BROWSER' - Login using browser-based WebRTC\n * @public\n */\nexport type LoginOption = 'AGENT_DN' | 'EXTENSION' | 'BROWSER';\n\n/**\n * Team configuration information\n * @public\n */\nexport type Team = {\n /** Unique team identifier */\n teamId: string;\n /** Team display name */\n teamName: string;\n /** Optional desktop layout configuration identifier */\n desktopLayoutId?: string;\n};\n\n/**\n * Basic queue configuration information\n * @public\n */\nexport type Queue = {\n /** Queue identifier */\n queueId: string;\n /** Queue display name */\n queueName: string;\n};\n\n/**\n * URL mappings for external system integrations\n * @public\n */\nexport type URLMappings = {\n /** Acqueon API endpoint URL */\n acqueonApiUrl: string;\n /** Acqueon console URL */\n acqueonConsoleUrl: string;\n};\n\n/**\n * Comprehensive agent profile configuration in the contact center system\n * Contains all settings and capabilities for an agent\n * @public\n */\nexport type Profile = {\n /** Microsoft Teams integration configuration */\n microsoftConfig?: {\n /** Whether to show user details in Teams */\n showUserDetailsMS?: boolean;\n /** Whether to sync agent state with Teams */\n stateSynchronizationMS?: boolean;\n };\n /** Webex integration configuration */\n webexConfig?: {\n /** Whether to show user details in Webex */\n showUserDetailsWebex?: boolean;\n /** Whether to sync agent state with Webex */\n stateSynchronizationWebex?: boolean;\n };\n /** List of teams the agent belongs to */\n teams: Team[];\n /** Agent's default dial number */\n defaultDn: string;\n dn?: string;\n /** Whether default DN is enforced at tenant level */\n forceDefaultDn: boolean;\n /** Whether default DN is enforced for this agent */\n forceDefaultDnForAgent: boolean;\n /** Regex pattern for US phone number validation */\n regexUS: RegExp | string;\n /** Regex pattern for international phone number validation */\n regexOther: RegExp | string;\n /** Unique identifier for the agent */\n agentId: string;\n /** Display name for the agent */\n agentName: string;\n /** Email address for the agent */\n agentMailId: string;\n /** Agent's profile configuration ID */\n agentProfileID: string;\n /** Dial plan configuration for number handling */\n dialPlan: DialPlan;\n /** Multimedia profile defining channel capabilities */\n multimediaProfileId: string;\n /** Skill profile defining agent competencies */\n skillProfileId: string;\n /** Site where agent is located */\n siteId: string;\n /** Enterprise-wide identifier */\n enterpriseId: string;\n /** Whether privacy shield feature is visible */\n privacyShieldVisible: boolean;\n /** Available idle codes */\n idleCodes: Entity[];\n /** List of specific idle codes */\n idleCodesList?: Array<string>;\n /** Access control for idle codes */\n idleCodesAccess?: 'ALL' | 'SPECIFIC';\n /** Available wrap-up codes */\n wrapupCodes: Entity[];\n /** Agent-specific wrap-up codes */\n agentWrapUpCodes?: agentWrapUpCodes;\n /** Default wrap-up code for agent */\n agentDefaultWrapUpCode?: agentDefaultWrapupCode;\n /** Default wrap-up code identifier */\n defaultWrapupCode: string;\n /** Wrap-up configuration data */\n wrapUpData: WrapupData;\n /** Organization identifier */\n orgId?: string;\n /** Whether outbound is enabled at tenant level */\n isOutboundEnabledForTenant: boolean;\n /** Whether outbound is enabled for this agent */\n isOutboundEnabledForAgent: boolean;\n /** Whether ad-hoc dialing is enabled */\n isAdhocDialingEnabled: boolean;\n /** Whether agent becomes available after outdial */\n isAgentAvailableAfterOutdial: boolean;\n /** Whether campaign management is enabled */\n isCampaignManagementEnabled: boolean;\n /** Outbound entry point */\n outDialEp: string;\n /** Whether ending calls is enabled */\n isEndCallEnabled: boolean;\n /** Whether ending consultations is enabled */\n isEndConsultEnabled: boolean;\n /** Optional lifecycle manager URL */\n lcmUrl?: string;\n /** Database identifier for agent */\n agentDbId: string;\n /** Optional analyzer identifier for agent */\n agentAnalyzerId?: string;\n /** Whether consult to queue is allowed */\n allowConsultToQueue: boolean;\n /** Additional campaign manager information */\n campaignManagerAdditionalInfo?: string;\n /** Whether personal statistics are enabled */\n agentPersonalStatsEnabled: boolean;\n /** Optional address book identifier */\n addressBookId?: string;\n /** Optional outbound ANI identifier */\n outdialANIId?: string;\n /** Optional analyzer user identifier */\n analyserUserId?: string;\n /** Whether call monitoring is enabled */\n isCallMonitoringEnabled?: boolean;\n /** Whether mid-call monitoring is enabled */\n isMidCallMonitoringEnabled?: boolean;\n /** Whether barge-in functionality is enabled */\n isBargeInEnabled?: boolean;\n /** Whether managed teams feature is enabled */\n isManagedTeamsEnabled?: boolean;\n /** Whether managed queues feature is enabled */\n isManagedQueuesEnabled?: boolean;\n /** Whether sending messages is enabled */\n isSendMessageEnabled?: boolean;\n /** Whether agent state changes are enabled */\n isAgentStateChangeEnabled?: boolean;\n /** Whether signing out agents is enabled */\n isSignOutAgentsEnabled?: boolean;\n /** Integration URL mappings */\n urlMappings?: URLMappings;\n /** Whether desktop inactivity timeout is enabled */\n isTimeoutDesktopInactivityEnabled: boolean;\n /** Desktop inactivity timeout in minutes */\n timeoutDesktopInactivityMins?: number;\n /** Whether analyzer features are enabled */\n isAnalyzerEnabled?: boolean;\n /** Tenant timezone */\n tenantTimezone?: string;\n /** Available voice login options */\n loginVoiceOptions?: LoginOption[];\n /** Current login device type */\n deviceType?: LoginOption;\n /** Current team identifier */\n currentTeamId?: string;\n /** Whether WebRTC is enabled */\n webRtcEnabled: boolean;\n /** Organization-wide idle codes */\n organizationIdleCodes?: Entity[];\n /** Whether recording management is enabled */\n isRecordingManagementEnabled?: boolean;\n /** Connection recovery timeout in milliseconds */\n lostConnectionRecoveryTimeout: number;\n /** Whether sensitive data masking is enabled */\n maskSensitiveData?: boolean;\n /** Whether agent is currently logged in */\n isAgentLoggedIn?: boolean;\n /** Last auxiliary code ID used for state change */\n lastStateAuxCodeId?: string;\n /** Timestamp of last state change */\n lastStateChangeTimestamp?: number;\n /** Timestamp of last idle code change */\n lastIdleCodeChangeTimestamp?: number;\n};\n\n/**\n * Contact distribution group configuration for routing logic\n * @public\n */\nexport type CallDistributionGroup = {\n /** List of agent groups in this distribution group */\n agentGroups: {\n /** Team identifier */\n teamId: string;\n }[];\n /** Distribution order priority */\n order: number;\n /** Distribution time duration in seconds */\n duration: number;\n};\n\n/**\n * Represents a single outdial ANI (Automatic Number Identification) entry\n * @public\n */\nexport type OutdialAniEntry = {\n /** Unique identifier for the ANI entry */\n id: string;\n /** Display name for the ANI entry */\n name: string;\n /** Phone number associated with this ANI entry */\n number: string;\n /** Related links for this ANI entry */\n links: string[];\n /** Timestamp when this entry was created (Unix timestamp in milliseconds) */\n createdTime: number;\n /** Timestamp when this entry was last updated (Unix timestamp in milliseconds) */\n lastUpdatedTime: number;\n};\n\n/**\n * Response structure for outdial ANI entries API call\n * @public\n */\nexport type OutdialAniEntriesResponse = OutdialAniEntry[];\n\n/**\n * Parameters for fetching outdial ANI entries\n * @public\n */\nexport type OutdialAniParams = {\n /** Outdial ANI ID from agent profile */\n outdialANI: string;\n /** Page number for pagination (optional) */\n page?: number;\n /** Number of entries per page (optional) */\n pageSize?: number;\n /** Search string to filter entries (optional) */\n search?: string;\n /** Filter expression for advanced filtering (optional) */\n filter?: string;\n /** Comma-separated list of attributes to include in response (optional) */\n attributes?: string;\n};\n"],"mappings":"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ACA;;AAGA;AACA;AACA;AACA;;AAcA;AACA;AACA;;AA+DA;AACA;AACA;;AA6IA;AACA;AACA;AACA;AACA;;AAkCA;AACA;AACA;AACA;;AA8DA;AACA;AACA;AACA;;AA8BA;AACA;AACA;AACA;;AAiBA;AACA;AACA;AACA;AACA;;AAQA;AACA;AACA;AACA;;AAUA;AACA;AACA;AACA;;AAcA;AACA;AACA;AACA;;AA0BA;AACA;AACA;AACA;;AAUA;AACA;AACA;AACA;AACA;AACO,MAAMuE,SAAS,GAAAtE,OAAA,CAAAsE,SAAA,GAAG,WAAW;;AAEpC;AACA;AACA;AACA;AACA;AACO,MAAMC,YAAY,GAAAvE,OAAA,CAAAuE,YAAA,GAAG,cAAc;;AAE1C;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;;AAQA;AACA;AACA;AACA;;AAQA;AACA;AACA;AACA;;AAoBA;AACA;AACA;AACA;;AAYA;AACA;AACA;AACA;;AAcA;AACA;AACA;AACA;;AAiBA;AACA;AACA;AACA;;AA8BA;AACA;AACA;AACA;;AAQA;AACA;AACA;AACA;;AAYA;AACA;AACA;AACA;;AAuBA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;;AAUA;AACA;AACA;AACA;;AAQA;AACA;AACA;AACA;;AAQA;AACA;AACA;AACA;AACA;;AAyJA;AACA;AACA;AACA;;AAaA;AACA;AACA;AACA;;AAgBA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["CC_TASK_EVENTS","exports","AGENT_CONTACT_ASSIGN_FAILED","AGENT_CONTACT_OFFER_RONA","AGENT_CONTACT_HELD","AGENT_CONTACT_HOLD_FAILED","AGENT_CONTACT_UNHELD","AGENT_CONTACT_UNHOLD_FAILED","AGENT_CONSULT_CREATED","AGENT_OFFER_CONSULT","AGENT_CONSULTING","AGENT_CONSULT_FAILED","AGENT_CTQ_FAILED","AGENT_CTQ_CANCELLED","AGENT_CTQ_CANCEL_FAILED","AGENT_CONSULT_ENDED","AGENT_CONSULT_END_FAILED","AGENT_CONSULT_CONFERENCE_ENDED","AGENT_CONSULT_CONFERENCING","AGENT_CONSULT_CONFERENCED","AGENT_CONSULT_CONFERENCE_FAILED","PARTICIPANT_JOINED_CONFERENCE","PARTICIPANT_LEFT_CONFERENCE","PARTICIPANT_LEFT_CONFERENCE_FAILED","AGENT_CONSULT_CONFERENCE_END_FAILED","AGENT_CONFERENCE_TRANSFERRED","AGENT_CONFERENCE_TRANSFER_FAILED","PARTICIPANT_POST_CALL_ACTIVITY","AGENT_BLIND_TRANSFERRED","AGENT_BLIND_TRANSFER_FAILED","AGENT_VTEAM_TRANSFERRED","AGENT_VTEAM_TRANSFER_FAILED","AGENT_CONSULT_TRANSFERRING","AGENT_CONSULT_TRANSFERRED","AGENT_CONSULT_TRANSFER_FAILED","CONTACT_RECORDING_PAUSED","CONTACT_RECORDING_PAUSE_FAILED","CONTACT_RECORDING_RESUMED","CONTACT_RECORDING_RESUME_FAILED","CONTACT_ENDED","CONTACT_MERGED","AGENT_CONTACT_END_FAILED","AGENT_WRAPUP","AGENT_WRAPPEDUP","AGENT_WRAPUP_FAILED","AGENT_OUTBOUND_FAILED","AGENT_CONTACT","AGENT_OFFER_CONTACT","AGENT_CONTACT_ASSIGNED","AGENT_CONTACT_UNASSIGNED","AGENT_INVITE_FAILED","CC_AGENT_EVENTS","WELCOME","AGENT_RELOGIN_SUCCESS","AGENT_RELOGIN_FAILED","AGENT_DN_REGISTERED","AGENT_LOGOUT","AGENT_LOGOUT_SUCCESS","AGENT_LOGOUT_FAILED","AGENT_STATION_LOGIN","AGENT_STATION_LOGIN_SUCCESS","AGENT_STATION_LOGIN_FAILED","AGENT_STATE_CHANGE","AGENT_MULTI_LOGIN","AGENT_STATE_CHANGE_SUCCESS","AGENT_STATE_CHANGE_FAILED","AGENT_BUDDY_AGENTS","AGENT_BUDDY_AGENTS_SUCCESS","AGENT_BUDDY_AGENTS_RETRIEVE_FAILED","AGENT_CONTACT_RESERVED","CC_EVENTS","IDLE_CODE","WRAP_UP_CODE"],"sources":["types.ts"],"sourcesContent":["import * as Agent from '../agent/types';\n\n/**\n * Generic type for converting a const enum object into a union type of its values\n * @internal\n */\ntype Enum<T extends Record<string, unknown>> = T[keyof T];\n\n/**\n * Events emitted on task objects\n * @enum {string}\n * @private\n * @ignore\n */\nexport const CC_TASK_EVENTS = {\n /** Event emitted when assigning contact to agent fails */\n AGENT_CONTACT_ASSIGN_FAILED: 'AgentContactAssignFailed',\n /** Event emitted when agent does not respond to contact offer */\n AGENT_CONTACT_OFFER_RONA: 'AgentOfferContactRona',\n /** Event emitted when contact is put on hold */\n AGENT_CONTACT_HELD: 'AgentContactHeld',\n /** Event emitted when putting contact on hold fails */\n AGENT_CONTACT_HOLD_FAILED: 'AgentContactHoldFailed',\n /** Event emitted when contact is taken off hold */\n AGENT_CONTACT_UNHELD: 'AgentContactUnheld',\n /** Event emitted when taking contact off hold fails */\n AGENT_CONTACT_UNHOLD_FAILED: 'AgentContactUnHoldFailed',\n /** Event emitted when consultation is created */\n AGENT_CONSULT_CREATED: 'AgentConsultCreated',\n /** Event emitted when consultation is offered */\n AGENT_OFFER_CONSULT: 'AgentOfferConsult',\n /** Event emitted when agent is consulting */\n AGENT_CONSULTING: 'AgentConsulting',\n /** Event emitted when consultation fails */\n AGENT_CONSULT_FAILED: 'AgentConsultFailed',\n /** Event emitted when consulting to queue (CTQ) fails */\n AGENT_CTQ_FAILED: 'AgentCtqFailed',\n /** Event emitted when CTQ is cancelled */\n AGENT_CTQ_CANCELLED: 'AgentCtqCancelled',\n /** Event emitted when CTQ cancellation fails */\n AGENT_CTQ_CANCEL_FAILED: 'AgentCtqCancelFailed',\n /** Event emitted when consultation ends */\n AGENT_CONSULT_ENDED: 'AgentConsultEnded',\n /** Event emitted when ending consultation fails */\n AGENT_CONSULT_END_FAILED: 'AgentConsultEndFailed',\n /** Event emitted when consultation conference ends */\n AGENT_CONSULT_CONFERENCE_ENDED: 'AgentConsultConferenceEnded',\n /** Event emitted when consultation conference is in progress */\n AGENT_CONSULT_CONFERENCING: 'AgentConsultConferencing',\n /** Event emitted when consultation conference starts */\n AGENT_CONSULT_CONFERENCED: 'AgentConsultConferenced',\n /** Event emitted when consultation conference fails */\n AGENT_CONSULT_CONFERENCE_FAILED: 'AgentConsultConferenceFailed',\n /** Event emitted when participant joins conference */\n PARTICIPANT_JOINED_CONFERENCE: 'ParticipantJoinedConference',\n /** Event emitted when participant leaves conference */\n PARTICIPANT_LEFT_CONFERENCE: 'ParticipantLeftConference',\n /** Event emitted when participant leaving conference fails */\n PARTICIPANT_LEFT_CONFERENCE_FAILED: 'ParticipantLeftConferenceFailed',\n /** Event emitted when consultation conference end fails */\n AGENT_CONSULT_CONFERENCE_END_FAILED: 'AgentConsultConferenceEndFailed',\n /** Event emitted when conference is successfully transferred */\n AGENT_CONFERENCE_TRANSFERRED: 'AgentConferenceTransferred',\n /** Event emitted when conference transfer fails */\n AGENT_CONFERENCE_TRANSFER_FAILED: 'AgentConferenceTransferFailed',\n /** Event emitted for post-call activity by participant */\n PARTICIPANT_POST_CALL_ACTIVITY: 'ParticipantPostCallActivity',\n /** Event emitted when contact is blind transferred */\n AGENT_BLIND_TRANSFERRED: 'AgentBlindTransferred',\n /** Event emitted when blind transfer fails */\n AGENT_BLIND_TRANSFER_FAILED: 'AgentBlindTransferFailed',\n /** Event emitted when contact is transferred to virtual team */\n AGENT_VTEAM_TRANSFERRED: 'AgentVteamTransferred',\n /** Event emitted when virtual team transfer fails */\n AGENT_VTEAM_TRANSFER_FAILED: 'AgentVteamTransferFailed',\n /** Event emitted when consultation transfer is in progress */\n AGENT_CONSULT_TRANSFERRING: 'AgentConsultTransferring',\n /** Event emitted when consultation transfer completes */\n AGENT_CONSULT_TRANSFERRED: 'AgentConsultTransferred',\n /** Event emitted when consultation transfer fails */\n AGENT_CONSULT_TRANSFER_FAILED: 'AgentConsultTransferFailed',\n /** Event emitted when contact recording is paused */\n CONTACT_RECORDING_PAUSED: 'ContactRecordingPaused',\n /** Event emitted when pausing contact recording fails */\n CONTACT_RECORDING_PAUSE_FAILED: 'ContactRecordingPauseFailed',\n /** Event emitted when contact recording is resumed */\n CONTACT_RECORDING_RESUMED: 'ContactRecordingResumed',\n /** Event emitted when resuming contact recording fails */\n CONTACT_RECORDING_RESUME_FAILED: 'ContactRecordingResumeFailed',\n /** Event emitted when contact ends */\n CONTACT_ENDED: 'ContactEnded',\n /** Event emitted when contact is merged */\n CONTACT_MERGED: 'ContactMerged',\n /** Event emitted when ending contact fails */\n AGENT_CONTACT_END_FAILED: 'AgentContactEndFailed',\n /** Event emitted when agent enters wrap-up state */\n AGENT_WRAPUP: 'AgentWrapup',\n /** Event emitted when agent completes wrap-up */\n AGENT_WRAPPEDUP: 'AgentWrappedUp',\n /** Event emitted when wrap-up fails */\n AGENT_WRAPUP_FAILED: 'AgentWrapupFailed',\n /** Event emitted when outbound call fails */\n AGENT_OUTBOUND_FAILED: 'AgentOutboundFailed',\n /** Event emitted for general agent contact events */\n AGENT_CONTACT: 'AgentContact',\n /** Event emitted when contact is offered to agent */\n AGENT_OFFER_CONTACT: 'AgentOfferContact',\n /** Event emitted when contact is assigned to agent */\n AGENT_CONTACT_ASSIGNED: 'AgentContactAssigned',\n /** Event emitted when contact is unassigned from agent */\n AGENT_CONTACT_UNASSIGNED: 'AgentContactUnassigned',\n /** Event emitted when inviting agent fails */\n AGENT_INVITE_FAILED: 'AgentInviteFailed',\n} as const;\n\n/**\n * Events emitted on Contact Center agent operations\n * @enum {string}\n * @private\n * @ignore\n */\nexport const CC_AGENT_EVENTS = {\n /** Welcome event when agent connects to websocket/backend */\n WELCOME: 'Welcome',\n /** Event emitted when agent re-login is successful */\n AGENT_RELOGIN_SUCCESS: 'AgentReloginSuccess',\n /** Event emitted when agent re-login fails */\n AGENT_RELOGIN_FAILED: 'AgentReloginFailed',\n /** Event emitted when agent DN registration completes */\n AGENT_DN_REGISTERED: 'AgentDNRegistered',\n /** Event emitted when agent initiates logout */\n AGENT_LOGOUT: 'Logout',\n /** Event emitted when agent logout is successful */\n AGENT_LOGOUT_SUCCESS: 'AgentLogoutSuccess',\n /** Event emitted when agent logout fails */\n AGENT_LOGOUT_FAILED: 'AgentLogoutFailed',\n /** Event emitted when agent initiates station login */\n AGENT_STATION_LOGIN: 'StationLogin',\n /** Event emitted when agent station login is successful */\n AGENT_STATION_LOGIN_SUCCESS: 'AgentStationLoginSuccess',\n /** Event emitted when agent station login fails */\n AGENT_STATION_LOGIN_FAILED: 'AgentStationLoginFailed',\n /** Event emitted when agent's state changes */\n AGENT_STATE_CHANGE: 'AgentStateChange',\n /** Event emitted when multiple logins detected for same agent */\n AGENT_MULTI_LOGIN: 'AGENT_MULTI_LOGIN',\n /** Event emitted when agent state change is successful */\n AGENT_STATE_CHANGE_SUCCESS: 'AgentStateChangeSuccess',\n /** Event emitted when agent state change fails */\n AGENT_STATE_CHANGE_FAILED: 'AgentStateChangeFailed',\n /** Event emitted when requesting buddy agents list */\n AGENT_BUDDY_AGENTS: 'BuddyAgents',\n /** Event emitted when buddy agents list is successfully retrieved */\n AGENT_BUDDY_AGENTS_SUCCESS: 'BuddyAgents',\n /** Event emitted when retrieving buddy agents list fails */\n AGENT_BUDDY_AGENTS_RETRIEVE_FAILED: 'BuddyAgentsRetrieveFailed',\n /** Event emitted when contact is reserved for agent */\n AGENT_CONTACT_RESERVED: 'AgentContactReserved',\n} as const;\n\n/**\n * Combined Contact Center events including both agent and task events\n * @enum {string}\n * @public\n */\nexport const CC_EVENTS = {\n ...CC_AGENT_EVENTS,\n ...CC_TASK_EVENTS,\n} as const;\n\n/**\n * Event data received when agent connects to the system\n * @public\n */\nexport type WelcomeEvent = {\n /** ID of the agent that connected */\n agentId: string;\n};\n\n/**\n * Response type for welcome events which can be either success or error\n * @public\n */\nexport type WelcomeResponse = WelcomeEvent | Error;\n\n/**\n * Type representing the union of all possible Contact Center events\n * @public\n */\nexport type CC_EVENTS = Enum<typeof CC_EVENTS>;\n\n/**\n * WebSocket event structure for Contact Center events\n * @public\n */\nexport type WebSocketEvent = {\n /** Type of the event */\n type: CC_EVENTS;\n /** Event payload data */\n data:\n | WelcomeEvent\n | Agent.StationLoginSuccess\n | Agent.LogoutSuccess\n | Agent.ReloginSuccess\n | Agent.StateChangeSuccess\n | Agent.BuddyAgentsSuccess;\n};\n\n/**\n * Represents the response from getUserUsingCI method.\n */\nexport type AgentResponse = {\n /**\n * ID of the agent.\n */\n id: string;\n\n /**\n * The ciUserId of the agent.\n */\n ciUserId: string;\n\n /**\n * The first name of the agent.\n */\n firstName: string;\n\n /**\n * The last name of the agent.\n */\n lastName: string;\n\n /**\n * Identifier for a Desktop Profile.\n */\n agentProfileId: string;\n\n /**\n * The email address of the agent.\n */\n email: string;\n\n /**\n * Team IDs assigned to the agent.\n */\n teamIds: string[];\n\n /**\n * Multimedia profile ID associated with the agent.\n */\n multimediaProfileId: string;\n\n /**\n * Skill profile ID of the agent.\n */\n skillProfileId: string;\n\n /**\n * Site ID of the agent.\n */\n siteId: string;\n\n /**\n * Database ID of the agent.\n */\n dbId?: string;\n\n /**\n * The default dialed number of the agent.\n */\n defaultDialledNumber?: string;\n};\n\n/**\n * Represents the response from getDesktopProfileById method.\n */\nexport type DesktopProfileResponse = {\n /**\n * Represents the voice options of an agent.\n */\n loginVoiceOptions: LoginOption[];\n\n /**\n * Wrap-up codes that the agents can select when they wrap up a contact. It can take one of these values: ALL - To make all wrap-up codes available. SPECIFIC - To make specific codes available.\n */\n accessWrapUpCode: string;\n\n /**\n * Idle codes that the agents can select in Agent Desktop. It can take one of these values: ALL - To make all idle codes available. SPECIFIC - To make specific codes available.\n */\n accessIdleCode: string;\n\n /**\n * Wrap-up codes list that the agents can select when they wrap up a contact.\n */\n wrapUpCodes: string[];\n\n /**\n * Idle codes list that the agents can select in Agent Desktop.\n */\n idleCodes: string[];\n\n /**\n * Dial plan enabled for the agent.\n */\n dialPlanEnabled: boolean;\n\n /**\n * Last agent routing enabled for the agent.\n */\n lastAgentRouting: boolean;\n\n /**\n * Auto wrap-up allowed.\n */\n autoWrapUp: boolean;\n\n /**\n * Auto answer allowed.\n */\n autoAnswer: boolean;\n\n /**\n * Auto wrap-up after seconds.\n */\n autoWrapAfterSeconds: number;\n\n /**\n * Agent available after outdial.\n */\n agentAvailableAfterOutdial: boolean;\n\n /**\n * Allow auto wrap-up extension.\n */\n allowAutoWrapUpExtension: boolean;\n\n /**\n * Outdial enabled for the agent.\n */\n outdialEnabled: boolean;\n\n /**\n * Outdial entry point ID of the agent.\n */\n outdialEntryPointId: string;\n\n /**\n * Outdial ANI ID of the agent.\n */\n outdialANIId: string;\n\n /**\n * Consult to queue allowed.\n */\n consultToQueue: boolean;\n\n /**\n * Address book ID of the agent.\n */\n addressBookId: string;\n\n /**\n * Viewable statistics of the agent.\n */\n viewableStatistics: {\n id: string;\n agentStats: boolean;\n accessQueueStats: string;\n contactServiceQueues: string[];\n loggedInTeamStats: boolean;\n accessTeamStats: string;\n teams: string[];\n };\n\n /**\n * Agent DN validation of the agent.\n */\n agentDNValidation: string;\n\n /**\n * Dial plans of the agent.\n */\n dialPlans: string[];\n\n /**\n * Timeout desktop inactivity custom enabled.\n */\n timeoutDesktopInactivityCustomEnabled: boolean;\n\n /**\n * Timeout desktop inactivity minutes.\n */\n timeoutDesktopInactivityMins: number;\n\n /**\n * Show user details in Microsoft enabled or not.\n */\n showUserDetailsMS: boolean;\n\n /**\n * State synchronization in Microsoft enabled or not.\n */\n stateSynchronizationMS: boolean;\n\n /**\n * Show user details in Webex enabled or not.\n */\n showUserDetailsWebex: boolean;\n\n /**\n * State synchronization in Webex enabled or not.\n */\n stateSynchronizationWebex: boolean;\n};\n\n/**\n * Response containing multimedia profile configuration for an agent\n * Defines capabilities across different communication channels\n * @private\n */\nexport type MultimediaProfileResponse = {\n /** Organization identifier */\n organizationId: string;\n /** Profile identifier */\n id: string;\n /** Version number of the profile */\n version: number;\n /** Profile name */\n name: string;\n /** Profile description */\n description: string;\n /** Maximum number of concurrent chat interactions */\n chat: number;\n /** Maximum number of concurrent email interactions */\n email: number;\n /** Maximum number of concurrent voice interactions */\n telephony: number;\n /** Maximum number of concurrent social media interactions */\n social: number;\n /** Whether the profile is active */\n active: boolean;\n /** Whether channel blending is enabled */\n blendingModeEnabled: boolean;\n /** Type of blending mode configuration */\n blendingMode: string;\n /** Whether this is the system default profile */\n systemDefault: boolean;\n /** Timestamp when profile was created */\n createdTime: number;\n /** Timestamp when profile was last updated */\n lastUpdatedTime: number;\n};\n\n/**\n * Response from subscription requests containing WebSocket connection details\n * @public\n */\nexport type SubscribeResponse = {\n /** HTTP status code of the response */\n statusCode: number;\n /** Response body containing connection details */\n body: {\n /** WebSocket URL for real-time updates */\n webSocketUrl?: string;\n /** Unique subscription identifier */\n subscriptionId?: string;\n };\n /** Optional status or error message */\n message: string | null;\n};\n\nexport type AuxCode = {\n /**\n * ID of the Auxiliary Code.\n */\n id: string;\n\n /**\n * Indicates whether the auxiliary code is active or not.\n */\n active: boolean;\n\n /**\n * Indicates whether this is the default code (true) or not (false).\n */\n defaultCode: boolean;\n\n /**\n * Indicates whether this is the system default code (true) or not (false).\n */\n isSystemCode: boolean;\n\n /**\n * A short description indicating the context of the code.\n */\n description: string;\n\n /**\n * Name of the Auxiliary Code.\n */\n name: string;\n\n /**\n * Indicates the work type associated with this code.\n */\n workTypeCode: string;\n};\n\nexport type ListAuxCodesResponse = {\n data: AuxCode[];\n meta: {\n page: number;\n pageSize: number;\n totalPages: number;\n totalRecords: number;\n };\n};\n\n/**\n * Configuration for a team in the contact center system\n * @private\n */\nexport type TeamList = {\n /** Unique identifier for the team */\n id: string;\n /** Team name */\n name: string;\n /** Type of team (e.g., 'AGENT_BASED') */\n teamType: string;\n /** Current status of the team */\n teamStatus: string;\n /** Whether the team is active */\n active: boolean;\n /** Site identifier where team is located */\n siteId: string;\n /** Name of the site */\n siteName: string;\n /** Optional multimedia profile ID for team */\n multiMediaProfileId?: string;\n /** List of user IDs belonging to team */\n userIds: string[];\n /** Whether queue rankings are enabled for team */\n rankQueuesForTeam: boolean;\n /** Ordered list of queue rankings */\n queueRankings: string[];\n /** Optional database identifier */\n dbId?: string;\n /** Optional desktop layout identifier */\n desktopLayoutId?: string;\n};\n\n/**\n * Response type for listing teams with pagination metadata\n * @private\n */\nexport type ListTeamsResponse = {\n /** Array of team configurations */\n data: TeamList[];\n /** Pagination metadata */\n meta: {\n /** Current page number */\n page: number;\n /** Number of items per page */\n pageSize: number;\n /** Total number of pages */\n totalPages: number;\n /** Total number of records */\n totalRecords: number;\n };\n};\n\n/**\n * Basic organization information in the contact center system\n * @private\n * @ignore\n */\nexport type OrgInfo = {\n /** Tenant identifier */\n tenantId: string;\n /** Organization timezone */\n timezone: string;\n /** Current environment (e.g., 'produs1', 'intgus1') */\n environment: string;\n};\n\n/**\n * Organization-wide feature settings and configurations\n * @private\n */\nexport type OrgSettings = {\n /** Whether WebRTC functionality is enabled */\n webRtcEnabled: boolean;\n /** Whether sensitive data masking is enabled */\n maskSensitiveData: boolean;\n /** Whether campaign manager features are enabled */\n campaignManagerEnabled: boolean;\n};\n\n/**\n * Contact center site configuration information\n * @private\n */\nexport type SiteInfo = {\n /** Unique site identifier */\n id: string;\n /** Site name */\n name: string;\n /** Whether site is active */\n active: boolean;\n /** Multimedia profile ID for site */\n multimediaProfileId: string;\n /** Whether this is the system default site */\n systemDefault: boolean;\n};\n\n/**\n * Tenant-level configuration data and settings\n * @private\n */\nexport type TenantData = {\n /** Desktop inactivity timeout in minutes */\n timeoutDesktopInactivityMins: number;\n /** Whether default DN is enforced */\n forceDefaultDn: boolean;\n /** Regex pattern for default DN validation */\n dnDefaultRegex: string;\n /** Regex pattern for other DN validation */\n dnOtherRegex: string;\n /** Whether privacy shield feature is visible */\n privacyShieldVisible: boolean;\n /** Whether outbound dialing is enabled */\n outdialEnabled: boolean;\n /** Whether ending calls is enabled */\n endCallEnabled: boolean;\n /** Whether ending consultations is enabled */\n endConsultEnabled: boolean;\n /** Whether call variables are suppressed */\n callVariablesSuppressed: boolean;\n /** Whether desktop inactivity timeout is enabled */\n timeoutDesktopInactivityEnabled: boolean;\n /** Lost connection recovery timeout in seconds */\n lostConnectionRecoveryTimeout: number;\n};\n\n/**\n * URL mapping configuration for external integrations\n * @public\n */\nexport type URLMapping = {\n id: string;\n name: string;\n url: string;\n links: string[]; // Assuming 'links' is an array of strings, adjust if necessary\n createdTime: number; // Assuming timestamps are represented as numbers\n lastUpdatedTime: number;\n};\n\n/**\n * Constant representing idle code\n * @public\n * @ignore\n */\nexport const IDLE_CODE = 'IDLE_CODE';\n\n/**\n * Constant representing wrap up code\n * @public\n * @ignore\n */\nexport const WRAP_UP_CODE = 'WRAP_UP_CODE';\n\n/**\n * Type representing the possible auxiliary code types\n * @public\n */\nexport type AuxCodeType = typeof IDLE_CODE | typeof WRAP_UP_CODE;\n\n/**\n * Sort order configuration for queries\n * @internal\n */\ntype SortOrder = {\n /** Property to sort by */\n property: string;\n /** Sort order direction */\n order: string;\n};\n\n/**\n * Search query configuration\n * @internal\n */\ntype SearchQuery = {\n /** Properties to search in */\n properties: string;\n /** Search value */\n value: string;\n};\n\n/**\n * Parameters for querying Contact Center resources\n * @public\n */\nexport type QueryParams = {\n /** Page number for pagination */\n pageNumber?: number;\n pageSize?: number;\n attributes?: Array<string>;\n ids?: Array<string>;\n queueType?: string;\n entryPointType?: string;\n channelType?: string;\n isActive?: boolean;\n workTypeCode?: AuxCodeType;\n names?: Array<string>;\n sortOrder?: SortOrder;\n searchQuery?: SearchQuery;\n defaultCode?: boolean;\n search?: string;\n desktopProfileFilter?: boolean;\n};\n\n/**\n * Basic entity information used throughout the system\n * @public\n */\nexport type Entity = {\n /** Whether this is a system entity */\n isSystem: boolean;\n /** Entity name */\n name: string;\n /** Unique entity identifier */\n id: string;\n /** Whether this is the default entity */\n isDefault: boolean;\n};\n\n/**\n * Dial plan entity definition containing number manipulation rules\n * @public\n */\nexport type DialPlanEntity = {\n /** Unique identifier for the dial plan */\n id: string;\n /** Regular expression pattern for matching numbers */\n regularExpression: string;\n /** Prefix to add to matched numbers */\n prefix: string;\n /** Characters to strip from matched numbers */\n strippedChars: string;\n /** Name of the dial plan */\n name: string;\n};\n\n/**\n * Complete dial plan configuration for number handling\n * @public\n */\nexport type DialPlan = {\n /** Type of dial plan (e.g., 'adhocDial') */\n type: string;\n /** List of dial plan entities with transformation rules */\n dialPlanEntity: {\n /** Regular expression pattern */\n regex: string;\n /** Number prefix */\n prefix: string;\n /** Characters to strip */\n strippedChars: string;\n /** Entity name */\n name: string;\n }[];\n};\n\n/**\n * Agent wrap-up codes configuration with pagination metadata\n * @public\n */\nexport type agentWrapUpCodes = {\n /** Array of wrap-up code entities */\n data: Entity[];\n /** Pagination and navigation metadata */\n meta: {\n /** Navigation URLs for pagination */\n links: {\n /** URL for first page */\n first: string;\n /** URL for last page */\n last: string;\n /** URL for next page */\n next: string;\n /** URL for current page */\n self: string;\n };\n /** Organization identifier */\n orgid: string;\n /** Current page number */\n page: number;\n /** Number of items per page */\n pageSize: number;\n /** Total number of pages */\n totalPages: number;\n /** Total number of records */\n totalRecords: number;\n };\n};\n\n/**\n * Default wrap-up code configuration for an agent\n * @public\n */\nexport type agentDefaultWrapupCode = {\n /** Unique identifier for the wrap-up code */\n id: string;\n /** Display name of the wrap-up code */\n name: string;\n};\n\n/**\n * Wrap-up reason configuration used to classify completed interactions\n * @public\n */\nexport type WrapUpReason = {\n /** Whether this is a system-defined reason */\n isSystem: boolean;\n /** Display name of the reason */\n name: string;\n /** Unique identifier */\n id: string;\n /** Whether this is the default reason */\n isDefault: boolean;\n};\n\n/**\n * Wrap-up configuration data containing settings and available options\n * @public\n */\nexport type WrapupData = {\n /** Wrap-up configuration properties */\n wrapUpProps: {\n /** Whether automatic wrap-up is enabled */\n autoWrapup?: boolean;\n /** Time in seconds before auto wrap-up triggers */\n autoWrapupInterval?: number;\n /** Whether last agent routing is enabled */\n lastAgentRoute?: boolean;\n /** List of available wrap-up reasons */\n wrapUpReasonList: Array<WrapUpReason>;\n /** List of available wrap-up codes */\n wrapUpCodesList?: Array<string>;\n /** Access control for idle codes ('ALL' or 'SPECIFIC') */\n idleCodesAccess?: 'ALL' | 'SPECIFIC';\n /** Associated interaction identifier */\n interactionId?: string;\n /** Whether cancelling auto wrap-up is allowed */\n allowCancelAutoWrapup?: boolean;\n };\n};\n\n/**\n * Available login options for voice channel access\n * 'AGENT_DN' - Login using agent's DN\n * 'EXTENSION' - Login using extension number\n * 'BROWSER' - Login using browser-based WebRTC\n * @public\n */\nexport type LoginOption = 'AGENT_DN' | 'EXTENSION' | 'BROWSER';\n\n/**\n * Team configuration information\n * @public\n */\nexport type Team = {\n /** Unique team identifier */\n teamId: string;\n /** Team display name */\n teamName: string;\n /** Optional desktop layout configuration identifier */\n desktopLayoutId?: string;\n};\n\n/**\n * Basic queue configuration information\n * @public\n */\nexport type Queue = {\n /** Queue identifier */\n queueId: string;\n /** Queue display name */\n queueName: string;\n};\n\n/**\n * URL mappings for external system integrations\n * @public\n */\nexport type URLMappings = {\n /** Acqueon API endpoint URL */\n acqueonApiUrl: string;\n /** Acqueon console URL */\n acqueonConsoleUrl: string;\n};\n\n/**\n * Comprehensive agent profile configuration in the contact center system\n * Contains all settings and capabilities for an agent\n * @public\n */\nexport type Profile = {\n /** Microsoft Teams integration configuration */\n microsoftConfig?: {\n /** Whether to show user details in Teams */\n showUserDetailsMS?: boolean;\n /** Whether to sync agent state with Teams */\n stateSynchronizationMS?: boolean;\n };\n /** Webex integration configuration */\n webexConfig?: {\n /** Whether to show user details in Webex */\n showUserDetailsWebex?: boolean;\n /** Whether to sync agent state with Webex */\n stateSynchronizationWebex?: boolean;\n };\n /** List of teams the agent belongs to */\n teams: Team[];\n /** Agent's default dial number */\n defaultDn: string;\n dn?: string;\n /** Whether default DN is enforced at tenant level */\n forceDefaultDn: boolean;\n /** Whether default DN is enforced for this agent */\n forceDefaultDnForAgent: boolean;\n /** Regex pattern for US phone number validation */\n regexUS: RegExp | string;\n /** Regex pattern for international phone number validation */\n regexOther: RegExp | string;\n /** Unique identifier for the agent */\n agentId: string;\n /** Display name for the agent */\n agentName: string;\n /** Email address for the agent */\n agentMailId: string;\n /** Agent's profile configuration ID */\n agentProfileID: string;\n /** Dial plan configuration for number handling */\n dialPlan: DialPlan;\n /** Multimedia profile defining channel capabilities */\n multimediaProfileId: string;\n /** Skill profile defining agent competencies */\n skillProfileId: string;\n /** Site where agent is located */\n siteId: string;\n /** Enterprise-wide identifier */\n enterpriseId: string;\n /** Whether privacy shield feature is visible */\n privacyShieldVisible: boolean;\n /** Available idle codes */\n idleCodes: Entity[];\n /** List of specific idle codes */\n idleCodesList?: Array<string>;\n /** Access control for idle codes */\n idleCodesAccess?: 'ALL' | 'SPECIFIC';\n /** Available wrap-up codes */\n wrapupCodes: Entity[];\n /** Agent-specific wrap-up codes */\n agentWrapUpCodes?: agentWrapUpCodes;\n /** Default wrap-up code for agent */\n agentDefaultWrapUpCode?: agentDefaultWrapupCode;\n /** Default wrap-up code identifier */\n defaultWrapupCode: string;\n /** Wrap-up configuration data */\n wrapUpData: WrapupData;\n /** Organization identifier */\n orgId?: string;\n /** Whether outbound is enabled at tenant level */\n isOutboundEnabledForTenant: boolean;\n /** Whether outbound is enabled for this agent */\n isOutboundEnabledForAgent: boolean;\n /** Whether ad-hoc dialing is enabled */\n isAdhocDialingEnabled: boolean;\n /** Whether agent becomes available after outdial */\n isAgentAvailableAfterOutdial: boolean;\n /** Whether campaign management is enabled */\n isCampaignManagementEnabled: boolean;\n /** Outbound entry point */\n outDialEp: string;\n /** Whether ending calls is enabled */\n isEndCallEnabled: boolean;\n /** Whether ending consultations is enabled */\n isEndConsultEnabled: boolean;\n /** Optional lifecycle manager URL */\n lcmUrl?: string;\n /** Database identifier for agent */\n agentDbId: string;\n /** Optional analyzer identifier for agent */\n agentAnalyzerId?: string;\n /** Whether consult to queue is allowed */\n allowConsultToQueue: boolean;\n /** Additional campaign manager information */\n campaignManagerAdditionalInfo?: string;\n /** Whether personal statistics are enabled */\n agentPersonalStatsEnabled: boolean;\n /** Optional address book identifier */\n addressBookId?: string;\n /** Optional outbound ANI identifier */\n outdialANIId?: string;\n /** Optional analyzer user identifier */\n analyserUserId?: string;\n /** Whether call monitoring is enabled */\n isCallMonitoringEnabled?: boolean;\n /** Whether mid-call monitoring is enabled */\n isMidCallMonitoringEnabled?: boolean;\n /** Whether barge-in functionality is enabled */\n isBargeInEnabled?: boolean;\n /** Whether managed teams feature is enabled */\n isManagedTeamsEnabled?: boolean;\n /** Whether managed queues feature is enabled */\n isManagedQueuesEnabled?: boolean;\n /** Whether sending messages is enabled */\n isSendMessageEnabled?: boolean;\n /** Whether agent state changes are enabled */\n isAgentStateChangeEnabled?: boolean;\n /** Whether signing out agents is enabled */\n isSignOutAgentsEnabled?: boolean;\n /** Integration URL mappings */\n urlMappings?: URLMappings;\n /** Whether desktop inactivity timeout is enabled */\n isTimeoutDesktopInactivityEnabled: boolean;\n /** Desktop inactivity timeout in minutes */\n timeoutDesktopInactivityMins?: number;\n /** Whether analyzer features are enabled */\n isAnalyzerEnabled?: boolean;\n /** Tenant timezone */\n tenantTimezone?: string;\n /** Current environment (e.g., 'produs1', 'intgus1') */\n environment?: string;\n /** Available voice login options */\n loginVoiceOptions?: LoginOption[];\n /** Current login device type */\n deviceType?: LoginOption;\n /** Current team identifier */\n currentTeamId?: string;\n /** Whether WebRTC is enabled */\n webRtcEnabled: boolean;\n /** Organization-wide idle codes */\n organizationIdleCodes?: Entity[];\n /** Whether recording management is enabled */\n isRecordingManagementEnabled?: boolean;\n /** Connection recovery timeout in milliseconds */\n lostConnectionRecoveryTimeout: number;\n /** Whether sensitive data masking is enabled */\n maskSensitiveData?: boolean;\n /** Whether agent is currently logged in */\n isAgentLoggedIn?: boolean;\n /** Last auxiliary code ID used for state change */\n lastStateAuxCodeId?: string;\n /** Timestamp of last state change */\n lastStateChangeTimestamp?: number;\n /** Timestamp of last idle code change */\n lastIdleCodeChangeTimestamp?: number;\n};\n\n/**\n * Contact distribution group configuration for routing logic\n * @public\n */\nexport type CallDistributionGroup = {\n /** List of agent groups in this distribution group */\n agentGroups: {\n /** Team identifier */\n teamId: string;\n }[];\n /** Distribution order priority */\n order: number;\n /** Distribution time duration in seconds */\n duration: number;\n};\n\n/**\n * Represents a single outdial ANI (Automatic Number Identification) entry\n * @public\n */\nexport type OutdialAniEntry = {\n /** Unique identifier for the ANI entry */\n id: string;\n /** Display name for the ANI entry */\n name: string;\n /** Phone number associated with this ANI entry */\n number: string;\n /** Related links for this ANI entry */\n links: string[];\n /** Timestamp when this entry was created (Unix timestamp in milliseconds) */\n createdTime: number;\n /** Timestamp when this entry was last updated (Unix timestamp in milliseconds) */\n lastUpdatedTime: number;\n};\n\n/**\n * Response structure for outdial ANI entries API call\n * @public\n */\nexport type OutdialAniEntriesResponse = OutdialAniEntry[];\n\n/**\n * Parameters for fetching outdial ANI entries\n * @public\n */\nexport type OutdialAniParams = {\n /** Outdial ANI ID from agent profile */\n outdialANI: string;\n /** Page number for pagination (optional) */\n page?: number;\n /** Number of entries per page (optional) */\n pageSize?: number;\n /** Search string to filter entries (optional) */\n search?: string;\n /** Filter expression for advanced filtering (optional) */\n filter?: string;\n /** Comma-separated list of attributes to include in response (optional) */\n attributes?: string;\n};\n"],"mappings":"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ACA;;AAGA;AACA;AACA;AACA;;AAcA;AACA;AACA;;AA+DA;AACA;AACA;;AA6IA;AACA;AACA;AACA;AACA;;AAkCA;AACA;AACA;AACA;;AA8DA;AACA;AACA;AACA;;AA8BA;AACA;AACA;AACA;;AAiBA;AACA;AACA;AACA;AACA;;AAUA;AACA;AACA;AACA;;AAUA;AACA;AACA;AACA;;AAcA;AACA;AACA;AACA;;AA0BA;AACA;AACA;AACA;;AAUA;AACA;AACA;AACA;AACA;AACO,MAAMuE,SAAS,GAAAtE,OAAA,CAAAsE,SAAA,GAAG,WAAW;;AAEpC;AACA;AACA;AACA;AACA;AACO,MAAMC,YAAY,GAAAvE,OAAA,CAAAuE,YAAA,GAAG,cAAc;;AAE1C;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;;AAQA;AACA;AACA;AACA;;AAQA;AACA;AACA;AACA;;AAoBA;AACA;AACA;AACA;;AAYA;AACA;AACA;AACA;;AAcA;AACA;AACA;AACA;;AAiBA;AACA;AACA;AACA;;AA8BA;AACA;AACA;AACA;;AAQA;AACA;AACA;AACA;;AAYA;AACA;AACA;AACA;;AAuBA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;;AAUA;AACA;AACA;AACA;;AAQA;AACA;AACA;AACA;;AAQA;AACA;AACA;AACA;AACA;;AA2JA;AACA;AACA;AACA;;AAaA;AACA;AACA;AACA;;AAgBA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA","ignoreList":[]}
|
|
@@ -560,13 +560,13 @@ class TaskManager extends _events.default {
|
|
|
560
560
|
}
|
|
561
561
|
const isOutdial = task.data.interaction.outboundType === 'OUTDIAL';
|
|
562
562
|
const isNew = task.data.interaction.state === 'new';
|
|
563
|
-
const needsWrapUp = task.data.agentsPendingWrapUp?.
|
|
563
|
+
const needsWrapUp = task.data.agentsPendingWrapUp?.includes(this.agentId) ?? false;
|
|
564
564
|
|
|
565
565
|
// For OUTDIAL: only remove if NOT terminated (user-declined, no wrap-up follows)
|
|
566
|
-
// If terminated, keep task for wrap-up flow (CONTACT_ENDED → AGENT_WRAPUP)
|
|
567
566
|
// For non-OUTDIAL: remove if state is 'new'
|
|
568
567
|
// Always remove if secondary EpDn agent
|
|
569
|
-
if (isNew && !(isOutdial && needsWrapUp) || (0, _TaskUtils.isSecondaryEpDnAgent)(task.data.interaction)
|
|
568
|
+
if (isNew && !(isOutdial && needsWrapUp) || (0, _TaskUtils.isSecondaryEpDnAgent)(task.data.interaction) || !needsWrapUp && isOutdial // For outdial tasks, needs wrap-up is false and state is "WRAPUP". We need to just remove the task.
|
|
569
|
+
) {
|
|
570
570
|
this.removeTaskFromCollection(task);
|
|
571
571
|
}
|
|
572
572
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_events","_interopRequireDefault","require","_calling","_types","_constants","_constants2","_types2","_types3","_loggerProxy","_","_MetricsManager","_constants3","_TaskUtils","e","__esModule","default","TaskManager","EventEmitter","constructor","contact","webCallingService","webSocketManager","taskCollection","metricsManager","MetricsManager","getInstance","registerTaskListeners","registerIncomingCallEvent","setWrapupData","wrapupData","setAgentId","agentId","getAgentId","setWebRtcEnabled","webRtcEnabled","handleIncomingWebCall","call","currentTask","Object","values","find","task","data","interaction","mediaType","mapCallToTask","getCallId","interactionId","LoggerProxy","log","module","TASK_MANAGER_FILE","method","METHODS","HANDLE_INCOMING_WEB_CALL","emit","TASK_EVENTS","TASK_INCOMING","on","LINE_EVENTS","INCOMING_CALL","unregisterIncomingCallEvent","off","event","payload","JSON","parse","type","CC_TASK_EVENTS","includes","info","REGISTER_TASK_LISTENERS","CC_EVENTS","AGENT_CONTACT","shouldAutoAnswer","shouldAutoAnswerTask","loginOption","Task","wrapUpRequired","participants","isWrapUp","isConferenceInProgress","getIsConferenceInProgress","isAutoAnswering","state","TASK_HYDRATE","AGENT_CONTACT_RESERVED","shouldAutoAnswerReserved","isConsulted","LoginOption","BROWSER","MEDIA_CHANNEL","TELEPHONY","AGENT_OFFER_CONTACT","updateTaskData","TASK_OFFER_CONTACT","handleAutoAnswer","AGENT_OUTBOUND_FAILED","trackEvent","METRIC_EVENT_NAMES","TASK_OUTDIAL_FAILED","getCommonTrackingFieldForAQMResponse","taskId","reason","reasonCode","AGENT_CONTACT_ASSIGNED","TASK_ASSIGNED","AGENT_CONTACT_UNASSIGNED","TASK_END","AGENT_CONTACT_OFFER_RONA","AGENT_CONTACT_ASSIGN_FAILED","AGENT_INVITE_FAILED","eventTypeToMetricMap","metricEventName","handleTaskCleanup","TASK_REJECT","CONTACT_ENDED","agentsPendingWrapUp","CONTACT_MERGED","handleContactMerged","AGENT_CONTACT_HELD","TASK_HOLD","AGENT_CONTACT_UNHELD","TASK_RESUME","AGENT_VTEAM_TRANSFERRED","AGENT_CTQ_CANCEL_FAILED","TASK_CONSULT_QUEUE_FAILED","AGENT_CONSULT_CREATED","TASK_CONSULT_CREATED","AGENT_OFFER_CONSULT","TASK_OFFER_CONSULT","AGENT_CONSULTING","TASK_CONSULT_ACCEPTED","TASK_CONSULTING","AGENT_CONSULT_FAILED","AGENT_CONSULT_ENDED","removeTaskFromCollection","TASK_CONSULT_END","AGENT_CTQ_CANCELLED","TASK_CONSULT_QUEUE_CANCELLED","AGENT_WRAPUP","AGENT_WRAPPEDUP","cancelAutoWrapupTimer","TASK_WRAPPEDUP","CONTACT_RECORDING_PAUSED","TASK_RECORDING_PAUSED","CONTACT_RECORDING_PAUSE_FAILED","TASK_RECORDING_PAUSE_FAILED","CONTACT_RECORDING_RESUMED","TASK_RECORDING_RESUMED","CONTACT_RECORDING_RESUME_FAILED","TASK_RECORDING_RESUME_FAILED","AGENT_CONSULT_CONFERENCING","TASK_CONFERENCE_ESTABLISHING","AGENT_CONSULT_CONFERENCED","TASK_CONFERENCE_STARTED","AGENT_CONSULT_CONFERENCE_FAILED","TASK_CONFERENCE_FAILED","AGENT_CONSULT_CONFERENCE_ENDED","isPrimary","isParticipantInMainInteraction","TASK_CONFERENCE_ENDED","PARTICIPANT_JOINED_CONFERENCE","TASK_PARTICIPANT_JOINED","PARTICIPANT_LEFT_CONFERENCE","checkParticipantNotInInteraction","TASK_PARTICIPANT_LEFT","PARTICIPANT_LEFT_CONFERENCE_FAILED","TASK_PARTICIPANT_LEFT_FAILED","AGENT_CONSULT_CONFERENCE_END_FAILED","TASK_CONFERENCE_END_FAILED","AGENT_CONFERENCE_TRANSFERRED","TASK_CONFERENCE_TRANSFERRED","AGENT_CONFERENCE_TRANSFER_FAILED","TASK_CONFERENCE_TRANSFER_FAILED","PARTICIPANT_POST_CALL_ACTIVITY","TASK_POST_CALL_ACTIVITY","taskData","undefined","warn","UPDATE_TASK_DATA","error","childInteractionId","TASK_MERGED","REMOVE_TASK_FROM_COLLECTION","accept","TASK_AUTO_ANSWER_SUCCESS","isAutoAnswered","TASK_AUTO_ANSWERED","TASK_AUTO_ANSWER_FAILED","message","unregisterWebCallListeners","cleanUpCall","isOutdial","outboundType","isNew","needsWrapUp","length","isSecondaryEpDnAgent","getTask","getAllTasks","getTaskManager","taskManager","exports"],"sources":["TaskManager.ts"],"sourcesContent":["import EventEmitter from 'events';\nimport {ICall, LINE_EVENTS} from '@webex/calling';\nimport {WebSocketManager} from '../core/websocket/WebSocketManager';\nimport routingContact from './contact';\nimport WebCallingService from '../WebCallingService';\nimport {ITask, MEDIA_CHANNEL, TASK_EVENTS, TaskData, TaskId} from './types';\nimport {TASK_MANAGER_FILE} from '../../constants';\nimport {METHODS} from './constants';\nimport {CC_EVENTS, CC_TASK_EVENTS, WrapupData} from '../config/types';\nimport {LoginOption} from '../../types';\nimport LoggerProxy from '../../logger-proxy';\nimport Task from '.';\nimport MetricsManager from '../../metrics/MetricsManager';\nimport {METRIC_EVENT_NAMES} from '../../metrics/constants';\nimport {\n checkParticipantNotInInteraction,\n getIsConferenceInProgress,\n isParticipantInMainInteraction,\n isPrimary,\n isSecondaryEpDnAgent,\n shouldAutoAnswerTask,\n} from './TaskUtils';\n\n/** @internal */\nexport default class TaskManager extends EventEmitter {\n private call: ICall;\n private contact: ReturnType<typeof routingContact>;\n /**\n * Collection of tasks indexed by TaskId\n * @type {Record<TaskId, ITask>}\n * @private\n */\n private taskCollection: Record<TaskId, ITask>;\n private webCallingService: WebCallingService;\n private webSocketManager: WebSocketManager;\n private metricsManager: MetricsManager;\n private static taskManager;\n private wrapupData: WrapupData;\n private agentId: string;\n private webRtcEnabled: boolean;\n /**\n * @param contact - Routing Contact layer. Talks to AQMReq layer to convert events to promises\n * @param webCallingService - Webrtc Service Layer\n * @param webSocketManager - Websocket Manager to maintain websocket connection and keepalives\n */\n constructor(\n contact: ReturnType<typeof routingContact>,\n webCallingService: WebCallingService,\n webSocketManager: WebSocketManager\n ) {\n super();\n this.contact = contact;\n this.taskCollection = {};\n this.webCallingService = webCallingService;\n this.webSocketManager = webSocketManager;\n this.metricsManager = MetricsManager.getInstance();\n this.registerTaskListeners();\n this.registerIncomingCallEvent();\n }\n\n public setWrapupData(wrapupData: WrapupData) {\n this.wrapupData = wrapupData;\n }\n\n public setAgentId(agentId: string) {\n this.agentId = agentId;\n }\n\n /**\n * Gets the current agent ID\n * @returns {string} The agent ID set for this task manager instance\n * @public\n */\n public getAgentId(): string {\n return this.agentId;\n }\n\n public setWebRtcEnabled(webRtcEnabled: boolean) {\n this.webRtcEnabled = webRtcEnabled;\n }\n\n private handleIncomingWebCall = (call: ICall) => {\n const currentTask = Object.values(this.taskCollection).find(\n (task) => task.data.interaction.mediaType === 'telephony'\n );\n\n if (currentTask) {\n this.webCallingService.mapCallToTask(call.getCallId(), currentTask.data.interactionId);\n LoggerProxy.log(`Call mapped to task`, {\n module: TASK_MANAGER_FILE,\n method: METHODS.HANDLE_INCOMING_WEB_CALL,\n interactionId: currentTask.data.interactionId,\n });\n this.emit(TASK_EVENTS.TASK_INCOMING, currentTask);\n }\n this.call = call;\n };\n\n public registerIncomingCallEvent() {\n this.webCallingService.on(LINE_EVENTS.INCOMING_CALL, this.handleIncomingWebCall);\n }\n\n public unregisterIncomingCallEvent() {\n this.webCallingService.off(LINE_EVENTS.INCOMING_CALL, this.handleIncomingWebCall);\n }\n\n private registerTaskListeners() {\n this.webSocketManager.on('message', (event) => {\n const payload = JSON.parse(event);\n // Re-emit the task events to the task object\n let task: ITask;\n if (payload.data?.type) {\n if (Object.values(CC_TASK_EVENTS).includes(payload.data.type)) {\n task = this.taskCollection[payload.data.interactionId];\n }\n LoggerProxy.info(`Handling task event ${payload.data?.type}`, {\n module: TASK_MANAGER_FILE,\n method: METHODS.REGISTER_TASK_LISTENERS,\n interactionId: payload.data?.interactionId,\n });\n switch (payload.data.type) {\n case CC_EVENTS.AGENT_CONTACT:\n // Case1 : Task is already present in taskCollection\n if (this.taskCollection[payload.data.interactionId]) {\n LoggerProxy.log(`Got AGENT_CONTACT: Task already exists in collection`, {\n module: TASK_MANAGER_FILE,\n method: METHODS.REGISTER_TASK_LISTENERS,\n interactionId: payload.data.interactionId,\n });\n break;\n } else if (!this.taskCollection[payload.data.interactionId]) {\n // Case2 : Task is not present in taskCollection\n LoggerProxy.log(`Got AGENT_CONTACT : Creating new task in taskManager`, {\n module: TASK_MANAGER_FILE,\n method: METHODS.REGISTER_TASK_LISTENERS,\n interactionId: payload.data.interactionId,\n });\n\n // Check if auto-answer should happen for this task\n const shouldAutoAnswer = shouldAutoAnswerTask(\n payload.data,\n this.agentId,\n this.webCallingService.loginOption,\n this.webRtcEnabled\n );\n\n task = new Task(\n this.contact,\n this.webCallingService,\n {\n ...payload.data,\n wrapUpRequired:\n payload.data.interaction?.participants?.[this.agentId]?.isWrapUp || false,\n isConferenceInProgress: getIsConferenceInProgress(payload.data),\n isAutoAnswering: shouldAutoAnswer, // Set flag before emitting\n },\n this.wrapupData,\n this.agentId\n );\n this.taskCollection[payload.data.interactionId] = task;\n // Condition 1: The state is=new i.e it is a incoming task\n if (payload.data.interaction.state === 'new') {\n LoggerProxy.log(\n `Got AGENT_CONTACT for a task with state=new, sending TASK_INCOMING event`,\n {\n module: TASK_MANAGER_FILE,\n method: METHODS.REGISTER_TASK_LISTENERS,\n interactionId: payload.data.interactionId,\n }\n );\n this.emit(TASK_EVENTS.TASK_INCOMING, task);\n } else {\n // Condition 2: The state is anything else i.e the task was connected\n LoggerProxy.log(\n `Got AGENT_CONTACT for a task with state=${payload.data.interaction.state}, sending TASK_HYDRATE event`,\n {\n module: TASK_MANAGER_FILE,\n method: METHODS.REGISTER_TASK_LISTENERS,\n interactionId: payload.data.interactionId,\n }\n );\n this.emit(TASK_EVENTS.TASK_HYDRATE, task);\n }\n }\n break;\n\n case CC_EVENTS.AGENT_CONTACT_RESERVED: {\n // Check if auto-answer should happen for this task\n const shouldAutoAnswerReserved = shouldAutoAnswerTask(\n payload.data,\n this.agentId,\n this.webCallingService.loginOption,\n this.webRtcEnabled\n );\n\n task = new Task(\n this.contact,\n this.webCallingService,\n {\n ...payload.data,\n isConsulted: false,\n isAutoAnswering: shouldAutoAnswerReserved, // Set flag before emitting\n },\n this.wrapupData,\n this.agentId\n );\n this.taskCollection[payload.data.interactionId] = task;\n if (\n this.webCallingService.loginOption !== LoginOption.BROWSER ||\n task.data.interaction.mediaType !== MEDIA_CHANNEL.TELEPHONY // for digital channels\n ) {\n this.emit(TASK_EVENTS.TASK_INCOMING, task);\n } else if (this.call) {\n this.emit(TASK_EVENTS.TASK_INCOMING, task);\n }\n break;\n }\n case CC_EVENTS.AGENT_OFFER_CONTACT:\n // We don't have to emit any event here since this will be result of promise.\n task = this.updateTaskData(task, payload.data);\n LoggerProxy.log(`Agent offer contact received for task`, {\n module: TASK_MANAGER_FILE,\n method: METHODS.REGISTER_TASK_LISTENERS,\n interactionId: payload.data?.interactionId,\n });\n this.emit(TASK_EVENTS.TASK_OFFER_CONTACT, task);\n\n // Handle auto-answer for offer contact\n this.handleAutoAnswer(task);\n break;\n case CC_EVENTS.AGENT_OUTBOUND_FAILED:\n if (task) {\n task = this.updateTaskData(task, payload.data);\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_OUTDIAL_FAILED,\n {\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(payload.data),\n taskId: payload.data.interactionId,\n reason: payload.data.reasonCode || payload.data.reason,\n },\n ['behavioral', 'operational']\n );\n LoggerProxy.log(`Agent outbound failed for task`, {\n module: TASK_MANAGER_FILE,\n method: METHODS.REGISTER_TASK_LISTENERS,\n interactionId: payload.data.interactionId,\n });\n task.emit(TASK_EVENTS.TASK_OUTDIAL_FAILED, payload.data.reason ?? 'UNKNOWN_REASON');\n }\n break;\n case CC_EVENTS.AGENT_CONTACT_ASSIGNED:\n task = this.updateTaskData(task, payload.data);\n task.emit(TASK_EVENTS.TASK_ASSIGNED, task);\n break;\n case CC_EVENTS.AGENT_CONTACT_UNASSIGNED:\n task = this.updateTaskData(task, {\n ...payload.data,\n wrapUpRequired: true,\n });\n task.emit(TASK_EVENTS.TASK_END, task);\n break;\n case CC_EVENTS.AGENT_CONTACT_OFFER_RONA:\n case CC_EVENTS.AGENT_CONTACT_ASSIGN_FAILED:\n case CC_EVENTS.AGENT_INVITE_FAILED: {\n task = this.updateTaskData(task, payload.data);\n\n const eventTypeToMetricMap: Record<string, keyof typeof METRIC_EVENT_NAMES> = {\n [CC_EVENTS.AGENT_CONTACT_ASSIGN_FAILED]: 'AGENT_CONTACT_ASSIGN_FAILED',\n [CC_EVENTS.AGENT_INVITE_FAILED]: 'AGENT_INVITE_FAILED',\n };\n const metricEventName: keyof typeof METRIC_EVENT_NAMES =\n eventTypeToMetricMap[payload.data.type] || 'AGENT_RONA';\n\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES[metricEventName],\n {\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(payload.data),\n taskId: payload.data.interactionId,\n reason: payload.data.reason,\n },\n ['behavioral', 'operational']\n );\n this.handleTaskCleanup(task);\n task.emit(TASK_EVENTS.TASK_REJECT, payload.data.reason);\n break;\n }\n case CC_EVENTS.CONTACT_ENDED:\n // Update task data\n if (task) {\n task = this.updateTaskData(task, {\n ...payload.data,\n wrapUpRequired: payload.data.agentsPendingWrapUp?.includes(this.agentId) || false,\n });\n\n // Handle cleanup based on whether task should be deleted\n this.handleTaskCleanup(task);\n\n task?.emit(TASK_EVENTS.TASK_END, task);\n }\n break;\n case CC_EVENTS.CONTACT_MERGED:\n task = this.handleContactMerged(task, payload.data);\n break;\n case CC_EVENTS.AGENT_CONTACT_HELD:\n // As soon as the main interaction is held, we need to emit TASK_HOLD\n task = this.updateTaskData(task, payload.data);\n task.emit(TASK_EVENTS.TASK_HOLD, task);\n break;\n case CC_EVENTS.AGENT_CONTACT_UNHELD:\n // As soon as the main interaction is unheld, we need to emit TASK_RESUME\n task = this.updateTaskData(task, payload.data);\n task.emit(TASK_EVENTS.TASK_RESUME, task);\n break;\n case CC_EVENTS.AGENT_VTEAM_TRANSFERRED:\n task = this.updateTaskData(task, {\n ...payload.data,\n wrapUpRequired: true,\n });\n task.emit(TASK_EVENTS.TASK_END, task);\n break;\n case CC_EVENTS.AGENT_CTQ_CANCEL_FAILED:\n task = this.updateTaskData(task, payload.data);\n task.emit(TASK_EVENTS.TASK_CONSULT_QUEUE_FAILED, task);\n break;\n case CC_EVENTS.AGENT_CONSULT_CREATED:\n // Received when self agent initiates a consult\n task = this.updateTaskData(task, {\n ...payload.data,\n isConsulted: false, // This ensures that the task consult status is always reset\n });\n task.emit(TASK_EVENTS.TASK_CONSULT_CREATED, task);\n break;\n case CC_EVENTS.AGENT_OFFER_CONSULT:\n // Received when other agent sends us a consult offer\n task = this.updateTaskData(task, {\n ...payload.data,\n isConsulted: true, // This ensures that the task is marked as us being requested for a consult\n });\n task.emit(TASK_EVENTS.TASK_OFFER_CONSULT, task);\n\n // Handle auto-answer for consult offer\n this.handleAutoAnswer(task);\n break;\n case CC_EVENTS.AGENT_CONSULTING:\n // Received when agent is in an active consult state\n // TODO: Check if we can use backend consult state instead of isConsulted\n task = this.updateTaskData(task, payload.data);\n if (task.data.isConsulted) {\n // Fire only if you are the agent who received the consult request\n task.emit(TASK_EVENTS.TASK_CONSULT_ACCEPTED, task);\n } else {\n // Fire only if you are the agent who initiated the consult\n task.emit(TASK_EVENTS.TASK_CONSULTING, task);\n }\n break;\n case CC_EVENTS.AGENT_CONSULT_FAILED:\n // This can only be received by the agent who initiated the consult.\n // We need not emit any event here since this will be result of promise\n task = this.updateTaskData(task, payload.data);\n break;\n case CC_EVENTS.AGENT_CONSULT_ENDED:\n task = this.updateTaskData(task, payload.data);\n if (task.data.isConsulted) {\n // This will be the end state of the task as soon as we end the consult in case of\n // us being offered a consult\n this.removeTaskFromCollection(task);\n }\n task.emit(TASK_EVENTS.TASK_CONSULT_END, task);\n break;\n case CC_EVENTS.AGENT_CTQ_CANCELLED:\n // This event is received when the consult using queue is cancelled using API\n task = this.updateTaskData(task, payload.data);\n task.emit(TASK_EVENTS.TASK_CONSULT_QUEUE_CANCELLED, task);\n break;\n case CC_EVENTS.AGENT_WRAPUP:\n task = this.updateTaskData(task, {...payload.data, wrapUpRequired: true});\n task.emit(TASK_EVENTS.TASK_END, task);\n break;\n case CC_EVENTS.AGENT_WRAPPEDUP:\n task.cancelAutoWrapupTimer();\n this.removeTaskFromCollection(task);\n task.emit(TASK_EVENTS.TASK_WRAPPEDUP, task);\n break;\n case CC_EVENTS.CONTACT_RECORDING_PAUSED:\n task = this.updateTaskData(task, payload.data);\n task.emit(TASK_EVENTS.TASK_RECORDING_PAUSED, task);\n break;\n case CC_EVENTS.CONTACT_RECORDING_PAUSE_FAILED:\n task = this.updateTaskData(task, payload.data);\n task.emit(TASK_EVENTS.TASK_RECORDING_PAUSE_FAILED, task);\n break;\n case CC_EVENTS.CONTACT_RECORDING_RESUMED:\n task = this.updateTaskData(task, payload.data);\n task.emit(TASK_EVENTS.TASK_RECORDING_RESUMED, task);\n break;\n case CC_EVENTS.CONTACT_RECORDING_RESUME_FAILED:\n task = this.updateTaskData(task, payload.data);\n task.emit(TASK_EVENTS.TASK_RECORDING_RESUME_FAILED, task);\n break;\n case CC_EVENTS.AGENT_CONSULT_CONFERENCING:\n // Conference is being established - update task state and emit establishing event\n task = this.updateTaskData(task, payload.data);\n task.emit(TASK_EVENTS.TASK_CONFERENCE_ESTABLISHING, task);\n break;\n case CC_EVENTS.AGENT_CONSULT_CONFERENCED:\n // Conference started successfully - update task state and emit event\n task = this.updateTaskData(task, payload.data);\n task.emit(TASK_EVENTS.TASK_CONFERENCE_STARTED, task);\n break;\n case CC_EVENTS.AGENT_CONSULT_CONFERENCE_FAILED:\n // Conference failed - update task state and emit failure event\n task = this.updateTaskData(task, payload.data);\n task.emit(TASK_EVENTS.TASK_CONFERENCE_FAILED, task);\n break;\n case CC_EVENTS.AGENT_CONSULT_CONFERENCE_ENDED:\n // Conference ended - update task state and emit event\n task = this.updateTaskData(task, payload.data);\n if (\n !task ||\n isPrimary(task, this.agentId) ||\n isParticipantInMainInteraction(task, this.agentId)\n ) {\n LoggerProxy.log('Primary or main interaction participant leaving conference');\n } else {\n this.removeTaskFromCollection(task);\n }\n task.emit(TASK_EVENTS.TASK_CONFERENCE_ENDED, task);\n break;\n case CC_EVENTS.PARTICIPANT_JOINED_CONFERENCE: {\n task = this.updateTaskData(task, {\n ...payload.data,\n isConferenceInProgress: getIsConferenceInProgress(payload.data),\n });\n task.emit(TASK_EVENTS.TASK_PARTICIPANT_JOINED, task);\n break;\n }\n case CC_EVENTS.PARTICIPANT_LEFT_CONFERENCE: {\n // Conference ended - update task state and emit event\n\n task = this.updateTaskData(task, {\n ...payload.data,\n isConferenceInProgress: getIsConferenceInProgress(payload.data),\n });\n if (checkParticipantNotInInteraction(task, this.agentId)) {\n if (\n isParticipantInMainInteraction(task, this.agentId) ||\n isPrimary(task, this.agentId)\n ) {\n LoggerProxy.log('Primary or main interaction participant leaving conference');\n } else {\n this.removeTaskFromCollection(task);\n }\n }\n task.emit(TASK_EVENTS.TASK_PARTICIPANT_LEFT, task);\n break;\n }\n case CC_EVENTS.PARTICIPANT_LEFT_CONFERENCE_FAILED:\n // Conference exit failed - update task state and emit failure event\n task = this.updateTaskData(task, payload.data);\n task.emit(TASK_EVENTS.TASK_PARTICIPANT_LEFT_FAILED, task);\n break;\n case CC_EVENTS.AGENT_CONSULT_CONFERENCE_END_FAILED:\n // Conference end failed - update task state with error details and emit failure event\n task = this.updateTaskData(task, payload.data);\n task.emit(TASK_EVENTS.TASK_CONFERENCE_END_FAILED, task);\n break;\n case CC_EVENTS.AGENT_CONFERENCE_TRANSFERRED:\n // Conference was transferred - update task state and emit transfer success event\n // Note: Backend should provide hasLeft and wrapUpRequired status\n task = this.updateTaskData(task, payload.data);\n task.emit(TASK_EVENTS.TASK_CONFERENCE_TRANSFERRED, task);\n break;\n case CC_EVENTS.AGENT_CONFERENCE_TRANSFER_FAILED:\n // Conference transfer failed - update task state with error details and emit failure event\n task = this.updateTaskData(task, payload.data);\n task.emit(TASK_EVENTS.TASK_CONFERENCE_TRANSFER_FAILED, task);\n break;\n case CC_EVENTS.PARTICIPANT_POST_CALL_ACTIVITY:\n // Post-call activity for participant - update task state with activity details\n task = this.updateTaskData(task, payload.data);\n task.emit(TASK_EVENTS.TASK_POST_CALL_ACTIVITY, task);\n break;\n default:\n break;\n }\n if (task) {\n task.emit(payload.data.type, payload.data);\n }\n }\n });\n }\n\n private updateTaskData(task: ITask, taskData: TaskData): ITask {\n if (!task) {\n return undefined;\n }\n\n if (!taskData?.interactionId) {\n LoggerProxy.warn('Received task update with missing interactionId', {\n module: TASK_MANAGER_FILE,\n method: METHODS.UPDATE_TASK_DATA,\n });\n }\n\n try {\n const currentTask = task.updateTaskData(taskData);\n this.taskCollection[taskData.interactionId] = currentTask;\n\n return currentTask;\n } catch (error) {\n LoggerProxy.error(`Failed to update task`, {\n module: TASK_MANAGER_FILE,\n method: METHODS.UPDATE_TASK_DATA,\n interactionId: taskData.interactionId,\n });\n\n return task;\n }\n }\n\n /**\n * Handles CONTACT_MERGED event logic\n * @param task - The task to process\n * @param taskData - The task data from the event payload\n * @returns Updated or newly created task\n * @private\n */\n private handleContactMerged(task: ITask, taskData: TaskData): ITask {\n if (taskData.childInteractionId) {\n // remove the child task from collection\n this.removeTaskFromCollection(this.taskCollection[taskData.childInteractionId]);\n }\n\n if (this.taskCollection[taskData.interactionId]) {\n LoggerProxy.log(`Got CONTACT_MERGED: Task already exists in collection`, {\n module: TASK_MANAGER_FILE,\n method: METHODS.REGISTER_TASK_LISTENERS,\n interactionId: taskData.interactionId,\n });\n // update the task data\n task = this.updateTaskData(task, taskData);\n } else {\n // Case2 : Task is not present in taskCollection\n LoggerProxy.log(`Got CONTACT_MERGED : Creating new task in taskManager`, {\n module: TASK_MANAGER_FILE,\n method: METHODS.REGISTER_TASK_LISTENERS,\n interactionId: taskData.interactionId,\n });\n\n task = new Task(\n this.contact,\n this.webCallingService,\n {\n ...taskData,\n wrapUpRequired: taskData.interaction?.participants?.[this.agentId]?.isWrapUp || false,\n isConferenceInProgress: getIsConferenceInProgress(taskData),\n },\n this.wrapupData,\n this.agentId\n );\n this.taskCollection[taskData.interactionId] = task;\n }\n\n this.emit(TASK_EVENTS.TASK_MERGED, task);\n\n return task;\n }\n\n private removeTaskFromCollection(task: ITask) {\n if (task?.data?.interactionId) {\n delete this.taskCollection[task.data.interactionId];\n LoggerProxy.info(`Task removed from collection`, {\n module: TASK_MANAGER_FILE,\n method: METHODS.REMOVE_TASK_FROM_COLLECTION,\n interactionId: task.data.interactionId,\n });\n }\n }\n\n /**\n * Handles auto-answer logic for incoming tasks\n * Automatically accepts tasks when isAutoAnswering flag is set\n * The flag is set during task creation based on:\n * 1. WebRTC calls with auto-answer enabled in agent profile\n * 2. Agent-initiated WebRTC outdial calls\n * 3. Agent-initiated digital outbound (Email/SMS) without previous transfers\n *\n * @param task - The task to auto-answer\n * @private\n */\n private async handleAutoAnswer(task: ITask): Promise<void> {\n if (!task || !task.data || !task.data.isAutoAnswering) {\n return;\n }\n\n LoggerProxy.info(`Auto-answering task`, {\n module: TASK_MANAGER_FILE,\n method: 'handleAutoAnswer',\n interactionId: task.data.interactionId,\n });\n\n try {\n await task.accept();\n LoggerProxy.info(`Task auto-answered successfully`, {\n module: TASK_MANAGER_FILE,\n method: 'handleAutoAnswer',\n interactionId: task.data.interactionId,\n });\n\n // Track successful auto-answer\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_AUTO_ANSWER_SUCCESS,\n {\n taskId: task.data.interactionId,\n mediaType: task.data.interaction.mediaType,\n isAutoAnswered: true,\n },\n ['behavioral', 'operational']\n );\n // Emit task:autoAnswered event for widgets/UI to react\n task.emit(TASK_EVENTS.TASK_AUTO_ANSWERED, task);\n } catch (error) {\n // Reset isAutoAnswering flag on failure\n task.updateTaskData({...task.data, isAutoAnswering: false});\n LoggerProxy.error(`Failed to auto-answer task`, {\n module: TASK_MANAGER_FILE,\n method: 'handleAutoAnswer',\n interactionId: task.data.interactionId,\n error,\n });\n\n // Track auto-answer failure\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_AUTO_ANSWER_FAILED,\n {\n taskId: task.data.interactionId,\n mediaType: task.data.interaction.mediaType,\n error: error?.message || 'Unknown error',\n isAutoAnswered: false,\n },\n ['behavioral', 'operational']\n );\n }\n }\n\n /**\n * Handles cleanup of task resources including Desktop/WebRTC call cleanup and task removal\n * @param task - The task to clean up\n * @private\n */\n private handleTaskCleanup(task: ITask) {\n // Clean up Desktop/WebRTC calling resources for browser-based telephony tasks\n if (\n this.webCallingService.loginOption === LoginOption.BROWSER &&\n task.data.interaction.mediaType === 'telephony'\n ) {\n task.unregisterWebCallListeners();\n this.webCallingService.cleanUpCall();\n }\n\n const isOutdial = task.data.interaction.outboundType === 'OUTDIAL';\n const isNew = task.data.interaction.state === 'new';\n const needsWrapUp = task.data.agentsPendingWrapUp?.length > 0;\n\n // For OUTDIAL: only remove if NOT terminated (user-declined, no wrap-up follows)\n // If terminated, keep task for wrap-up flow (CONTACT_ENDED → AGENT_WRAPUP)\n // For non-OUTDIAL: remove if state is 'new'\n // Always remove if secondary EpDn agent\n if ((isNew && !(isOutdial && needsWrapUp)) || isSecondaryEpDnAgent(task.data.interaction)) {\n this.removeTaskFromCollection(task);\n }\n }\n\n /**\n * @param taskId - Unique identifier for each task\n */\n public getTask = (taskId: string) => {\n return this.taskCollection[taskId];\n };\n\n /**\n * @param taskId - Unique identifier for each task\n */\n public getAllTasks = (): Record<TaskId, ITask> => {\n return this.taskCollection;\n };\n\n /**\n * @param contact - Routing Contact layer. Talks to AQMReq layer to convert events to promises\n * @param webCallingService - Webrtc Service Layer\n * @param webSocketManager - Websocket Manager to maintain websocket connection and keepalives\n */\n public static getTaskManager = (\n contact: ReturnType<typeof routingContact>,\n webCallingService: WebCallingService,\n webSocketManager: WebSocketManager\n ): TaskManager => {\n if (!this.taskManager) {\n this.taskManager = new TaskManager(contact, webCallingService, webSocketManager);\n }\n\n return this.taskManager;\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_events","_interopRequireDefault","require","_calling","_types","_constants","_constants2","_types2","_types3","_loggerProxy","_","_MetricsManager","_constants3","_TaskUtils","e","__esModule","default","TaskManager","EventEmitter","constructor","contact","webCallingService","webSocketManager","taskCollection","metricsManager","MetricsManager","getInstance","registerTaskListeners","registerIncomingCallEvent","setWrapupData","wrapupData","setAgentId","agentId","getAgentId","setWebRtcEnabled","webRtcEnabled","handleIncomingWebCall","call","currentTask","Object","values","find","task","data","interaction","mediaType","mapCallToTask","getCallId","interactionId","LoggerProxy","log","module","TASK_MANAGER_FILE","method","METHODS","HANDLE_INCOMING_WEB_CALL","emit","TASK_EVENTS","TASK_INCOMING","on","LINE_EVENTS","INCOMING_CALL","unregisterIncomingCallEvent","off","event","payload","JSON","parse","type","CC_TASK_EVENTS","includes","info","REGISTER_TASK_LISTENERS","CC_EVENTS","AGENT_CONTACT","shouldAutoAnswer","shouldAutoAnswerTask","loginOption","Task","wrapUpRequired","participants","isWrapUp","isConferenceInProgress","getIsConferenceInProgress","isAutoAnswering","state","TASK_HYDRATE","AGENT_CONTACT_RESERVED","shouldAutoAnswerReserved","isConsulted","LoginOption","BROWSER","MEDIA_CHANNEL","TELEPHONY","AGENT_OFFER_CONTACT","updateTaskData","TASK_OFFER_CONTACT","handleAutoAnswer","AGENT_OUTBOUND_FAILED","trackEvent","METRIC_EVENT_NAMES","TASK_OUTDIAL_FAILED","getCommonTrackingFieldForAQMResponse","taskId","reason","reasonCode","AGENT_CONTACT_ASSIGNED","TASK_ASSIGNED","AGENT_CONTACT_UNASSIGNED","TASK_END","AGENT_CONTACT_OFFER_RONA","AGENT_CONTACT_ASSIGN_FAILED","AGENT_INVITE_FAILED","eventTypeToMetricMap","metricEventName","handleTaskCleanup","TASK_REJECT","CONTACT_ENDED","agentsPendingWrapUp","CONTACT_MERGED","handleContactMerged","AGENT_CONTACT_HELD","TASK_HOLD","AGENT_CONTACT_UNHELD","TASK_RESUME","AGENT_VTEAM_TRANSFERRED","AGENT_CTQ_CANCEL_FAILED","TASK_CONSULT_QUEUE_FAILED","AGENT_CONSULT_CREATED","TASK_CONSULT_CREATED","AGENT_OFFER_CONSULT","TASK_OFFER_CONSULT","AGENT_CONSULTING","TASK_CONSULT_ACCEPTED","TASK_CONSULTING","AGENT_CONSULT_FAILED","AGENT_CONSULT_ENDED","removeTaskFromCollection","TASK_CONSULT_END","AGENT_CTQ_CANCELLED","TASK_CONSULT_QUEUE_CANCELLED","AGENT_WRAPUP","AGENT_WRAPPEDUP","cancelAutoWrapupTimer","TASK_WRAPPEDUP","CONTACT_RECORDING_PAUSED","TASK_RECORDING_PAUSED","CONTACT_RECORDING_PAUSE_FAILED","TASK_RECORDING_PAUSE_FAILED","CONTACT_RECORDING_RESUMED","TASK_RECORDING_RESUMED","CONTACT_RECORDING_RESUME_FAILED","TASK_RECORDING_RESUME_FAILED","AGENT_CONSULT_CONFERENCING","TASK_CONFERENCE_ESTABLISHING","AGENT_CONSULT_CONFERENCED","TASK_CONFERENCE_STARTED","AGENT_CONSULT_CONFERENCE_FAILED","TASK_CONFERENCE_FAILED","AGENT_CONSULT_CONFERENCE_ENDED","isPrimary","isParticipantInMainInteraction","TASK_CONFERENCE_ENDED","PARTICIPANT_JOINED_CONFERENCE","TASK_PARTICIPANT_JOINED","PARTICIPANT_LEFT_CONFERENCE","checkParticipantNotInInteraction","TASK_PARTICIPANT_LEFT","PARTICIPANT_LEFT_CONFERENCE_FAILED","TASK_PARTICIPANT_LEFT_FAILED","AGENT_CONSULT_CONFERENCE_END_FAILED","TASK_CONFERENCE_END_FAILED","AGENT_CONFERENCE_TRANSFERRED","TASK_CONFERENCE_TRANSFERRED","AGENT_CONFERENCE_TRANSFER_FAILED","TASK_CONFERENCE_TRANSFER_FAILED","PARTICIPANT_POST_CALL_ACTIVITY","TASK_POST_CALL_ACTIVITY","taskData","undefined","warn","UPDATE_TASK_DATA","error","childInteractionId","TASK_MERGED","REMOVE_TASK_FROM_COLLECTION","accept","TASK_AUTO_ANSWER_SUCCESS","isAutoAnswered","TASK_AUTO_ANSWERED","TASK_AUTO_ANSWER_FAILED","message","unregisterWebCallListeners","cleanUpCall","isOutdial","outboundType","isNew","needsWrapUp","isSecondaryEpDnAgent","getTask","getAllTasks","getTaskManager","taskManager","exports"],"sources":["TaskManager.ts"],"sourcesContent":["import EventEmitter from 'events';\nimport {ICall, LINE_EVENTS} from '@webex/calling';\nimport {WebSocketManager} from '../core/websocket/WebSocketManager';\nimport routingContact from './contact';\nimport WebCallingService from '../WebCallingService';\nimport {ITask, MEDIA_CHANNEL, TASK_EVENTS, TaskData, TaskId} from './types';\nimport {TASK_MANAGER_FILE} from '../../constants';\nimport {METHODS} from './constants';\nimport {CC_EVENTS, CC_TASK_EVENTS, WrapupData} from '../config/types';\nimport {LoginOption} from '../../types';\nimport LoggerProxy from '../../logger-proxy';\nimport Task from '.';\nimport MetricsManager from '../../metrics/MetricsManager';\nimport {METRIC_EVENT_NAMES} from '../../metrics/constants';\nimport {\n checkParticipantNotInInteraction,\n getIsConferenceInProgress,\n isParticipantInMainInteraction,\n isPrimary,\n isSecondaryEpDnAgent,\n shouldAutoAnswerTask,\n} from './TaskUtils';\n\n/** @internal */\nexport default class TaskManager extends EventEmitter {\n private call: ICall;\n private contact: ReturnType<typeof routingContact>;\n /**\n * Collection of tasks indexed by TaskId\n * @type {Record<TaskId, ITask>}\n * @private\n */\n private taskCollection: Record<TaskId, ITask>;\n private webCallingService: WebCallingService;\n private webSocketManager: WebSocketManager;\n private metricsManager: MetricsManager;\n private static taskManager;\n private wrapupData: WrapupData;\n private agentId: string;\n private webRtcEnabled: boolean;\n /**\n * @param contact - Routing Contact layer. Talks to AQMReq layer to convert events to promises\n * @param webCallingService - Webrtc Service Layer\n * @param webSocketManager - Websocket Manager to maintain websocket connection and keepalives\n */\n constructor(\n contact: ReturnType<typeof routingContact>,\n webCallingService: WebCallingService,\n webSocketManager: WebSocketManager\n ) {\n super();\n this.contact = contact;\n this.taskCollection = {};\n this.webCallingService = webCallingService;\n this.webSocketManager = webSocketManager;\n this.metricsManager = MetricsManager.getInstance();\n this.registerTaskListeners();\n this.registerIncomingCallEvent();\n }\n\n public setWrapupData(wrapupData: WrapupData) {\n this.wrapupData = wrapupData;\n }\n\n public setAgentId(agentId: string) {\n this.agentId = agentId;\n }\n\n /**\n * Gets the current agent ID\n * @returns {string} The agent ID set for this task manager instance\n * @public\n */\n public getAgentId(): string {\n return this.agentId;\n }\n\n public setWebRtcEnabled(webRtcEnabled: boolean) {\n this.webRtcEnabled = webRtcEnabled;\n }\n\n private handleIncomingWebCall = (call: ICall) => {\n const currentTask = Object.values(this.taskCollection).find(\n (task) => task.data.interaction.mediaType === 'telephony'\n );\n\n if (currentTask) {\n this.webCallingService.mapCallToTask(call.getCallId(), currentTask.data.interactionId);\n LoggerProxy.log(`Call mapped to task`, {\n module: TASK_MANAGER_FILE,\n method: METHODS.HANDLE_INCOMING_WEB_CALL,\n interactionId: currentTask.data.interactionId,\n });\n this.emit(TASK_EVENTS.TASK_INCOMING, currentTask);\n }\n this.call = call;\n };\n\n public registerIncomingCallEvent() {\n this.webCallingService.on(LINE_EVENTS.INCOMING_CALL, this.handleIncomingWebCall);\n }\n\n public unregisterIncomingCallEvent() {\n this.webCallingService.off(LINE_EVENTS.INCOMING_CALL, this.handleIncomingWebCall);\n }\n\n private registerTaskListeners() {\n this.webSocketManager.on('message', (event) => {\n const payload = JSON.parse(event);\n // Re-emit the task events to the task object\n let task: ITask;\n if (payload.data?.type) {\n if (Object.values(CC_TASK_EVENTS).includes(payload.data.type)) {\n task = this.taskCollection[payload.data.interactionId];\n }\n LoggerProxy.info(`Handling task event ${payload.data?.type}`, {\n module: TASK_MANAGER_FILE,\n method: METHODS.REGISTER_TASK_LISTENERS,\n interactionId: payload.data?.interactionId,\n });\n switch (payload.data.type) {\n case CC_EVENTS.AGENT_CONTACT:\n // Case1 : Task is already present in taskCollection\n if (this.taskCollection[payload.data.interactionId]) {\n LoggerProxy.log(`Got AGENT_CONTACT: Task already exists in collection`, {\n module: TASK_MANAGER_FILE,\n method: METHODS.REGISTER_TASK_LISTENERS,\n interactionId: payload.data.interactionId,\n });\n break;\n } else if (!this.taskCollection[payload.data.interactionId]) {\n // Case2 : Task is not present in taskCollection\n LoggerProxy.log(`Got AGENT_CONTACT : Creating new task in taskManager`, {\n module: TASK_MANAGER_FILE,\n method: METHODS.REGISTER_TASK_LISTENERS,\n interactionId: payload.data.interactionId,\n });\n\n // Check if auto-answer should happen for this task\n const shouldAutoAnswer = shouldAutoAnswerTask(\n payload.data,\n this.agentId,\n this.webCallingService.loginOption,\n this.webRtcEnabled\n );\n\n task = new Task(\n this.contact,\n this.webCallingService,\n {\n ...payload.data,\n wrapUpRequired:\n payload.data.interaction?.participants?.[this.agentId]?.isWrapUp || false,\n isConferenceInProgress: getIsConferenceInProgress(payload.data),\n isAutoAnswering: shouldAutoAnswer, // Set flag before emitting\n },\n this.wrapupData,\n this.agentId\n );\n this.taskCollection[payload.data.interactionId] = task;\n // Condition 1: The state is=new i.e it is a incoming task\n if (payload.data.interaction.state === 'new') {\n LoggerProxy.log(\n `Got AGENT_CONTACT for a task with state=new, sending TASK_INCOMING event`,\n {\n module: TASK_MANAGER_FILE,\n method: METHODS.REGISTER_TASK_LISTENERS,\n interactionId: payload.data.interactionId,\n }\n );\n this.emit(TASK_EVENTS.TASK_INCOMING, task);\n } else {\n // Condition 2: The state is anything else i.e the task was connected\n LoggerProxy.log(\n `Got AGENT_CONTACT for a task with state=${payload.data.interaction.state}, sending TASK_HYDRATE event`,\n {\n module: TASK_MANAGER_FILE,\n method: METHODS.REGISTER_TASK_LISTENERS,\n interactionId: payload.data.interactionId,\n }\n );\n this.emit(TASK_EVENTS.TASK_HYDRATE, task);\n }\n }\n break;\n\n case CC_EVENTS.AGENT_CONTACT_RESERVED: {\n // Check if auto-answer should happen for this task\n const shouldAutoAnswerReserved = shouldAutoAnswerTask(\n payload.data,\n this.agentId,\n this.webCallingService.loginOption,\n this.webRtcEnabled\n );\n\n task = new Task(\n this.contact,\n this.webCallingService,\n {\n ...payload.data,\n isConsulted: false,\n isAutoAnswering: shouldAutoAnswerReserved, // Set flag before emitting\n },\n this.wrapupData,\n this.agentId\n );\n this.taskCollection[payload.data.interactionId] = task;\n if (\n this.webCallingService.loginOption !== LoginOption.BROWSER ||\n task.data.interaction.mediaType !== MEDIA_CHANNEL.TELEPHONY // for digital channels\n ) {\n this.emit(TASK_EVENTS.TASK_INCOMING, task);\n } else if (this.call) {\n this.emit(TASK_EVENTS.TASK_INCOMING, task);\n }\n break;\n }\n case CC_EVENTS.AGENT_OFFER_CONTACT:\n // We don't have to emit any event here since this will be result of promise.\n task = this.updateTaskData(task, payload.data);\n LoggerProxy.log(`Agent offer contact received for task`, {\n module: TASK_MANAGER_FILE,\n method: METHODS.REGISTER_TASK_LISTENERS,\n interactionId: payload.data?.interactionId,\n });\n this.emit(TASK_EVENTS.TASK_OFFER_CONTACT, task);\n\n // Handle auto-answer for offer contact\n this.handleAutoAnswer(task);\n break;\n case CC_EVENTS.AGENT_OUTBOUND_FAILED:\n if (task) {\n task = this.updateTaskData(task, payload.data);\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_OUTDIAL_FAILED,\n {\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(payload.data),\n taskId: payload.data.interactionId,\n reason: payload.data.reasonCode || payload.data.reason,\n },\n ['behavioral', 'operational']\n );\n LoggerProxy.log(`Agent outbound failed for task`, {\n module: TASK_MANAGER_FILE,\n method: METHODS.REGISTER_TASK_LISTENERS,\n interactionId: payload.data.interactionId,\n });\n task.emit(TASK_EVENTS.TASK_OUTDIAL_FAILED, payload.data.reason ?? 'UNKNOWN_REASON');\n }\n break;\n case CC_EVENTS.AGENT_CONTACT_ASSIGNED:\n task = this.updateTaskData(task, payload.data);\n task.emit(TASK_EVENTS.TASK_ASSIGNED, task);\n break;\n case CC_EVENTS.AGENT_CONTACT_UNASSIGNED:\n task = this.updateTaskData(task, {\n ...payload.data,\n wrapUpRequired: true,\n });\n task.emit(TASK_EVENTS.TASK_END, task);\n break;\n case CC_EVENTS.AGENT_CONTACT_OFFER_RONA:\n case CC_EVENTS.AGENT_CONTACT_ASSIGN_FAILED:\n case CC_EVENTS.AGENT_INVITE_FAILED: {\n task = this.updateTaskData(task, payload.data);\n\n const eventTypeToMetricMap: Record<string, keyof typeof METRIC_EVENT_NAMES> = {\n [CC_EVENTS.AGENT_CONTACT_ASSIGN_FAILED]: 'AGENT_CONTACT_ASSIGN_FAILED',\n [CC_EVENTS.AGENT_INVITE_FAILED]: 'AGENT_INVITE_FAILED',\n };\n const metricEventName: keyof typeof METRIC_EVENT_NAMES =\n eventTypeToMetricMap[payload.data.type] || 'AGENT_RONA';\n\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES[metricEventName],\n {\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(payload.data),\n taskId: payload.data.interactionId,\n reason: payload.data.reason,\n },\n ['behavioral', 'operational']\n );\n this.handleTaskCleanup(task);\n task.emit(TASK_EVENTS.TASK_REJECT, payload.data.reason);\n break;\n }\n case CC_EVENTS.CONTACT_ENDED:\n // Update task data\n if (task) {\n task = this.updateTaskData(task, {\n ...payload.data,\n wrapUpRequired: payload.data.agentsPendingWrapUp?.includes(this.agentId) || false,\n });\n\n // Handle cleanup based on whether task should be deleted\n this.handleTaskCleanup(task);\n\n task?.emit(TASK_EVENTS.TASK_END, task);\n }\n break;\n case CC_EVENTS.CONTACT_MERGED:\n task = this.handleContactMerged(task, payload.data);\n break;\n case CC_EVENTS.AGENT_CONTACT_HELD:\n // As soon as the main interaction is held, we need to emit TASK_HOLD\n task = this.updateTaskData(task, payload.data);\n task.emit(TASK_EVENTS.TASK_HOLD, task);\n break;\n case CC_EVENTS.AGENT_CONTACT_UNHELD:\n // As soon as the main interaction is unheld, we need to emit TASK_RESUME\n task = this.updateTaskData(task, payload.data);\n task.emit(TASK_EVENTS.TASK_RESUME, task);\n break;\n case CC_EVENTS.AGENT_VTEAM_TRANSFERRED:\n task = this.updateTaskData(task, {\n ...payload.data,\n wrapUpRequired: true,\n });\n task.emit(TASK_EVENTS.TASK_END, task);\n break;\n case CC_EVENTS.AGENT_CTQ_CANCEL_FAILED:\n task = this.updateTaskData(task, payload.data);\n task.emit(TASK_EVENTS.TASK_CONSULT_QUEUE_FAILED, task);\n break;\n case CC_EVENTS.AGENT_CONSULT_CREATED:\n // Received when self agent initiates a consult\n task = this.updateTaskData(task, {\n ...payload.data,\n isConsulted: false, // This ensures that the task consult status is always reset\n });\n task.emit(TASK_EVENTS.TASK_CONSULT_CREATED, task);\n break;\n case CC_EVENTS.AGENT_OFFER_CONSULT:\n // Received when other agent sends us a consult offer\n task = this.updateTaskData(task, {\n ...payload.data,\n isConsulted: true, // This ensures that the task is marked as us being requested for a consult\n });\n task.emit(TASK_EVENTS.TASK_OFFER_CONSULT, task);\n\n // Handle auto-answer for consult offer\n this.handleAutoAnswer(task);\n break;\n case CC_EVENTS.AGENT_CONSULTING:\n // Received when agent is in an active consult state\n // TODO: Check if we can use backend consult state instead of isConsulted\n task = this.updateTaskData(task, payload.data);\n if (task.data.isConsulted) {\n // Fire only if you are the agent who received the consult request\n task.emit(TASK_EVENTS.TASK_CONSULT_ACCEPTED, task);\n } else {\n // Fire only if you are the agent who initiated the consult\n task.emit(TASK_EVENTS.TASK_CONSULTING, task);\n }\n break;\n case CC_EVENTS.AGENT_CONSULT_FAILED:\n // This can only be received by the agent who initiated the consult.\n // We need not emit any event here since this will be result of promise\n task = this.updateTaskData(task, payload.data);\n break;\n case CC_EVENTS.AGENT_CONSULT_ENDED:\n task = this.updateTaskData(task, payload.data);\n if (task.data.isConsulted) {\n // This will be the end state of the task as soon as we end the consult in case of\n // us being offered a consult\n this.removeTaskFromCollection(task);\n }\n task.emit(TASK_EVENTS.TASK_CONSULT_END, task);\n break;\n case CC_EVENTS.AGENT_CTQ_CANCELLED:\n // This event is received when the consult using queue is cancelled using API\n task = this.updateTaskData(task, payload.data);\n task.emit(TASK_EVENTS.TASK_CONSULT_QUEUE_CANCELLED, task);\n break;\n case CC_EVENTS.AGENT_WRAPUP:\n task = this.updateTaskData(task, {...payload.data, wrapUpRequired: true});\n task.emit(TASK_EVENTS.TASK_END, task);\n break;\n case CC_EVENTS.AGENT_WRAPPEDUP:\n task.cancelAutoWrapupTimer();\n this.removeTaskFromCollection(task);\n task.emit(TASK_EVENTS.TASK_WRAPPEDUP, task);\n break;\n case CC_EVENTS.CONTACT_RECORDING_PAUSED:\n task = this.updateTaskData(task, payload.data);\n task.emit(TASK_EVENTS.TASK_RECORDING_PAUSED, task);\n break;\n case CC_EVENTS.CONTACT_RECORDING_PAUSE_FAILED:\n task = this.updateTaskData(task, payload.data);\n task.emit(TASK_EVENTS.TASK_RECORDING_PAUSE_FAILED, task);\n break;\n case CC_EVENTS.CONTACT_RECORDING_RESUMED:\n task = this.updateTaskData(task, payload.data);\n task.emit(TASK_EVENTS.TASK_RECORDING_RESUMED, task);\n break;\n case CC_EVENTS.CONTACT_RECORDING_RESUME_FAILED:\n task = this.updateTaskData(task, payload.data);\n task.emit(TASK_EVENTS.TASK_RECORDING_RESUME_FAILED, task);\n break;\n case CC_EVENTS.AGENT_CONSULT_CONFERENCING:\n // Conference is being established - update task state and emit establishing event\n task = this.updateTaskData(task, payload.data);\n task.emit(TASK_EVENTS.TASK_CONFERENCE_ESTABLISHING, task);\n break;\n case CC_EVENTS.AGENT_CONSULT_CONFERENCED:\n // Conference started successfully - update task state and emit event\n task = this.updateTaskData(task, payload.data);\n task.emit(TASK_EVENTS.TASK_CONFERENCE_STARTED, task);\n break;\n case CC_EVENTS.AGENT_CONSULT_CONFERENCE_FAILED:\n // Conference failed - update task state and emit failure event\n task = this.updateTaskData(task, payload.data);\n task.emit(TASK_EVENTS.TASK_CONFERENCE_FAILED, task);\n break;\n case CC_EVENTS.AGENT_CONSULT_CONFERENCE_ENDED:\n // Conference ended - update task state and emit event\n task = this.updateTaskData(task, payload.data);\n if (\n !task ||\n isPrimary(task, this.agentId) ||\n isParticipantInMainInteraction(task, this.agentId)\n ) {\n LoggerProxy.log('Primary or main interaction participant leaving conference');\n } else {\n this.removeTaskFromCollection(task);\n }\n task.emit(TASK_EVENTS.TASK_CONFERENCE_ENDED, task);\n break;\n case CC_EVENTS.PARTICIPANT_JOINED_CONFERENCE: {\n task = this.updateTaskData(task, {\n ...payload.data,\n isConferenceInProgress: getIsConferenceInProgress(payload.data),\n });\n task.emit(TASK_EVENTS.TASK_PARTICIPANT_JOINED, task);\n break;\n }\n case CC_EVENTS.PARTICIPANT_LEFT_CONFERENCE: {\n // Conference ended - update task state and emit event\n\n task = this.updateTaskData(task, {\n ...payload.data,\n isConferenceInProgress: getIsConferenceInProgress(payload.data),\n });\n if (checkParticipantNotInInteraction(task, this.agentId)) {\n if (\n isParticipantInMainInteraction(task, this.agentId) ||\n isPrimary(task, this.agentId)\n ) {\n LoggerProxy.log('Primary or main interaction participant leaving conference');\n } else {\n this.removeTaskFromCollection(task);\n }\n }\n task.emit(TASK_EVENTS.TASK_PARTICIPANT_LEFT, task);\n break;\n }\n case CC_EVENTS.PARTICIPANT_LEFT_CONFERENCE_FAILED:\n // Conference exit failed - update task state and emit failure event\n task = this.updateTaskData(task, payload.data);\n task.emit(TASK_EVENTS.TASK_PARTICIPANT_LEFT_FAILED, task);\n break;\n case CC_EVENTS.AGENT_CONSULT_CONFERENCE_END_FAILED:\n // Conference end failed - update task state with error details and emit failure event\n task = this.updateTaskData(task, payload.data);\n task.emit(TASK_EVENTS.TASK_CONFERENCE_END_FAILED, task);\n break;\n case CC_EVENTS.AGENT_CONFERENCE_TRANSFERRED:\n // Conference was transferred - update task state and emit transfer success event\n // Note: Backend should provide hasLeft and wrapUpRequired status\n task = this.updateTaskData(task, payload.data);\n task.emit(TASK_EVENTS.TASK_CONFERENCE_TRANSFERRED, task);\n break;\n case CC_EVENTS.AGENT_CONFERENCE_TRANSFER_FAILED:\n // Conference transfer failed - update task state with error details and emit failure event\n task = this.updateTaskData(task, payload.data);\n task.emit(TASK_EVENTS.TASK_CONFERENCE_TRANSFER_FAILED, task);\n break;\n case CC_EVENTS.PARTICIPANT_POST_CALL_ACTIVITY:\n // Post-call activity for participant - update task state with activity details\n task = this.updateTaskData(task, payload.data);\n task.emit(TASK_EVENTS.TASK_POST_CALL_ACTIVITY, task);\n break;\n default:\n break;\n }\n if (task) {\n task.emit(payload.data.type, payload.data);\n }\n }\n });\n }\n\n private updateTaskData(task: ITask, taskData: TaskData): ITask {\n if (!task) {\n return undefined;\n }\n\n if (!taskData?.interactionId) {\n LoggerProxy.warn('Received task update with missing interactionId', {\n module: TASK_MANAGER_FILE,\n method: METHODS.UPDATE_TASK_DATA,\n });\n }\n\n try {\n const currentTask = task.updateTaskData(taskData);\n this.taskCollection[taskData.interactionId] = currentTask;\n\n return currentTask;\n } catch (error) {\n LoggerProxy.error(`Failed to update task`, {\n module: TASK_MANAGER_FILE,\n method: METHODS.UPDATE_TASK_DATA,\n interactionId: taskData.interactionId,\n });\n\n return task;\n }\n }\n\n /**\n * Handles CONTACT_MERGED event logic\n * @param task - The task to process\n * @param taskData - The task data from the event payload\n * @returns Updated or newly created task\n * @private\n */\n private handleContactMerged(task: ITask, taskData: TaskData): ITask {\n if (taskData.childInteractionId) {\n // remove the child task from collection\n this.removeTaskFromCollection(this.taskCollection[taskData.childInteractionId]);\n }\n\n if (this.taskCollection[taskData.interactionId]) {\n LoggerProxy.log(`Got CONTACT_MERGED: Task already exists in collection`, {\n module: TASK_MANAGER_FILE,\n method: METHODS.REGISTER_TASK_LISTENERS,\n interactionId: taskData.interactionId,\n });\n // update the task data\n task = this.updateTaskData(task, taskData);\n } else {\n // Case2 : Task is not present in taskCollection\n LoggerProxy.log(`Got CONTACT_MERGED : Creating new task in taskManager`, {\n module: TASK_MANAGER_FILE,\n method: METHODS.REGISTER_TASK_LISTENERS,\n interactionId: taskData.interactionId,\n });\n\n task = new Task(\n this.contact,\n this.webCallingService,\n {\n ...taskData,\n wrapUpRequired: taskData.interaction?.participants?.[this.agentId]?.isWrapUp || false,\n isConferenceInProgress: getIsConferenceInProgress(taskData),\n },\n this.wrapupData,\n this.agentId\n );\n this.taskCollection[taskData.interactionId] = task;\n }\n\n this.emit(TASK_EVENTS.TASK_MERGED, task);\n\n return task;\n }\n\n private removeTaskFromCollection(task: ITask) {\n if (task?.data?.interactionId) {\n delete this.taskCollection[task.data.interactionId];\n LoggerProxy.info(`Task removed from collection`, {\n module: TASK_MANAGER_FILE,\n method: METHODS.REMOVE_TASK_FROM_COLLECTION,\n interactionId: task.data.interactionId,\n });\n }\n }\n\n /**\n * Handles auto-answer logic for incoming tasks\n * Automatically accepts tasks when isAutoAnswering flag is set\n * The flag is set during task creation based on:\n * 1. WebRTC calls with auto-answer enabled in agent profile\n * 2. Agent-initiated WebRTC outdial calls\n * 3. Agent-initiated digital outbound (Email/SMS) without previous transfers\n *\n * @param task - The task to auto-answer\n * @private\n */\n private async handleAutoAnswer(task: ITask): Promise<void> {\n if (!task || !task.data || !task.data.isAutoAnswering) {\n return;\n }\n\n LoggerProxy.info(`Auto-answering task`, {\n module: TASK_MANAGER_FILE,\n method: 'handleAutoAnswer',\n interactionId: task.data.interactionId,\n });\n\n try {\n await task.accept();\n LoggerProxy.info(`Task auto-answered successfully`, {\n module: TASK_MANAGER_FILE,\n method: 'handleAutoAnswer',\n interactionId: task.data.interactionId,\n });\n\n // Track successful auto-answer\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_AUTO_ANSWER_SUCCESS,\n {\n taskId: task.data.interactionId,\n mediaType: task.data.interaction.mediaType,\n isAutoAnswered: true,\n },\n ['behavioral', 'operational']\n );\n // Emit task:autoAnswered event for widgets/UI to react\n task.emit(TASK_EVENTS.TASK_AUTO_ANSWERED, task);\n } catch (error) {\n // Reset isAutoAnswering flag on failure\n task.updateTaskData({...task.data, isAutoAnswering: false});\n LoggerProxy.error(`Failed to auto-answer task`, {\n module: TASK_MANAGER_FILE,\n method: 'handleAutoAnswer',\n interactionId: task.data.interactionId,\n error,\n });\n\n // Track auto-answer failure\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_AUTO_ANSWER_FAILED,\n {\n taskId: task.data.interactionId,\n mediaType: task.data.interaction.mediaType,\n error: error?.message || 'Unknown error',\n isAutoAnswered: false,\n },\n ['behavioral', 'operational']\n );\n }\n }\n\n /**\n * Handles cleanup of task resources including Desktop/WebRTC call cleanup and task removal\n * @param task - The task to clean up\n * @private\n */\n private handleTaskCleanup(task: ITask) {\n // Clean up Desktop/WebRTC calling resources for browser-based telephony tasks\n if (\n this.webCallingService.loginOption === LoginOption.BROWSER &&\n task.data.interaction.mediaType === 'telephony'\n ) {\n task.unregisterWebCallListeners();\n this.webCallingService.cleanUpCall();\n }\n\n const isOutdial = task.data.interaction.outboundType === 'OUTDIAL';\n const isNew = task.data.interaction.state === 'new';\n const needsWrapUp = task.data.agentsPendingWrapUp?.includes(this.agentId) ?? false;\n\n // For OUTDIAL: only remove if NOT terminated (user-declined, no wrap-up follows)\n // For non-OUTDIAL: remove if state is 'new'\n // Always remove if secondary EpDn agent\n if (\n (isNew && !(isOutdial && needsWrapUp)) ||\n isSecondaryEpDnAgent(task.data.interaction) ||\n (!needsWrapUp && isOutdial) // For outdial tasks, needs wrap-up is false and state is \"WRAPUP\". We need to just remove the task.\n ) {\n this.removeTaskFromCollection(task);\n }\n }\n\n /**\n * @param taskId - Unique identifier for each task\n */\n public getTask = (taskId: string) => {\n return this.taskCollection[taskId];\n };\n\n /**\n * @param taskId - Unique identifier for each task\n */\n public getAllTasks = (): Record<TaskId, ITask> => {\n return this.taskCollection;\n };\n\n /**\n * @param contact - Routing Contact layer. Talks to AQMReq layer to convert events to promises\n * @param webCallingService - Webrtc Service Layer\n * @param webSocketManager - Websocket Manager to maintain websocket connection and keepalives\n */\n public static getTaskManager = (\n contact: ReturnType<typeof routingContact>,\n webCallingService: WebCallingService,\n webSocketManager: WebSocketManager\n ): TaskManager => {\n if (!this.taskManager) {\n this.taskManager = new TaskManager(contact, webCallingService, webSocketManager);\n }\n\n return this.taskManager;\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -642,6 +642,8 @@ export type OrgInfo = {
|
|
|
642
642
|
tenantId: string;
|
|
643
643
|
/** Organization timezone */
|
|
644
644
|
timezone: string;
|
|
645
|
+
/** Current environment (e.g., 'produs1', 'intgus1') */
|
|
646
|
+
environment: string;
|
|
645
647
|
};
|
|
646
648
|
/**
|
|
647
649
|
* Organization-wide feature settings and configurations
|
|
@@ -1051,6 +1053,8 @@ export type Profile = {
|
|
|
1051
1053
|
isAnalyzerEnabled?: boolean;
|
|
1052
1054
|
/** Tenant timezone */
|
|
1053
1055
|
tenantTimezone?: string;
|
|
1056
|
+
/** Current environment (e.g., 'produs1', 'intgus1') */
|
|
1057
|
+
environment?: string;
|
|
1054
1058
|
/** Available voice login options */
|
|
1055
1059
|
loginVoiceOptions?: LoginOption[];
|
|
1056
1060
|
/** Current login device type */
|