@webex/contact-center 3.10.0-next.2 → 3.10.0-next.21
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/cc.js +13 -1
- package/dist/cc.js.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/constants.js.map +1 -1
- package/dist/index.js +17 -1
- package/dist/index.js.map +1 -1
- package/dist/logger-proxy.js.map +1 -1
- package/dist/metrics/MetricsManager.js +2 -1
- package/dist/metrics/MetricsManager.js.map +1 -1
- package/dist/metrics/behavioral-events.js +12 -0
- package/dist/metrics/behavioral-events.js.map +1 -1
- package/dist/metrics/constants.js +4 -0
- package/dist/metrics/constants.js.map +1 -1
- package/dist/services/AddressBook.js +2 -3
- package/dist/services/AddressBook.js.map +1 -1
- package/dist/services/EntryPoint.js +2 -3
- package/dist/services/EntryPoint.js.map +1 -1
- package/dist/services/Queue.js +2 -3
- package/dist/services/Queue.js.map +1 -1
- package/dist/services/WebCallingService.js +1 -1
- package/dist/services/WebCallingService.js.map +1 -1
- package/dist/services/agent/index.js +1 -2
- package/dist/services/agent/index.js.map +1 -1
- package/dist/services/agent/types.js +10 -0
- package/dist/services/agent/types.js.map +1 -1
- package/dist/services/config/Util.js.map +1 -1
- package/dist/services/config/constants.js.map +1 -1
- package/dist/services/config/index.js +1 -1
- package/dist/services/config/index.js.map +1 -1
- package/dist/services/config/types.js +2 -2
- package/dist/services/config/types.js.map +1 -1
- package/dist/services/constants.js.map +1 -1
- package/dist/services/core/Err.js.map +1 -1
- package/dist/services/core/GlobalTypes.js.map +1 -1
- package/dist/services/core/Utils.js +92 -74
- package/dist/services/core/Utils.js.map +1 -1
- package/dist/services/core/WebexRequest.js +1 -2
- package/dist/services/core/WebexRequest.js.map +1 -1
- package/dist/services/core/aqm-reqs.js +2 -3
- package/dist/services/core/aqm-reqs.js.map +1 -1
- package/dist/services/core/constants.js +17 -1
- package/dist/services/core/constants.js.map +1 -1
- package/dist/services/core/types.js.map +1 -1
- package/dist/services/core/websocket/WebSocketManager.js +1 -2
- package/dist/services/core/websocket/WebSocketManager.js.map +1 -1
- package/dist/services/core/websocket/connection-service.js +1 -1
- package/dist/services/core/websocket/connection-service.js.map +1 -1
- package/dist/services/core/websocket/keepalive.worker.js.map +1 -1
- package/dist/services/core/websocket/types.js.map +1 -1
- package/dist/services/index.js +1 -1
- package/dist/services/index.js.map +1 -1
- package/dist/services/task/AutoWrapup.js +1 -1
- package/dist/services/task/AutoWrapup.js.map +1 -1
- package/dist/services/task/TaskManager.js +177 -56
- package/dist/services/task/TaskManager.js.map +1 -1
- package/dist/services/task/TaskUtils.js +122 -5
- package/dist/services/task/TaskUtils.js.map +1 -1
- package/dist/services/task/constants.js +3 -1
- package/dist/services/task/constants.js.map +1 -1
- package/dist/services/task/contact.js +0 -2
- package/dist/services/task/contact.js.map +1 -1
- package/dist/services/task/dialer.js.map +1 -1
- package/dist/services/task/index.js +46 -40
- package/dist/services/task/index.js.map +1 -1
- package/dist/services/task/types.js +377 -4
- package/dist/services/task/types.js.map +1 -1
- package/dist/types/cc.d.ts +6 -0
- package/dist/types/index.d.ts +1 -1
- package/dist/types/metrics/constants.d.ts +4 -0
- package/dist/types/services/config/types.d.ts +4 -4
- package/dist/types/services/core/Utils.d.ts +32 -17
- package/dist/types/services/core/constants.d.ts +14 -0
- package/dist/types/services/task/TaskUtils.d.ts +59 -3
- package/dist/types/services/task/constants.d.ts +2 -0
- package/dist/types/services/task/types.d.ts +57 -13
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -1
- package/dist/utils/PageCache.js +1 -1
- package/dist/utils/PageCache.js.map +1 -1
- package/dist/webex-config.js.map +1 -1
- package/dist/webex.js +2 -2
- package/dist/webex.js.map +1 -1
- package/package.json +8 -8
- package/src/cc.ts +12 -0
- package/src/index.ts +1 -0
- package/src/metrics/behavioral-events.ts +12 -0
- package/src/metrics/constants.ts +4 -0
- package/src/services/config/types.ts +2 -2
- package/src/services/core/Utils.ts +101 -85
- package/src/services/core/constants.ts +16 -0
- package/src/services/task/TaskManager.ts +204 -36
- package/src/services/task/TaskUtils.ts +145 -5
- package/src/services/task/constants.ts +2 -0
- package/src/services/task/index.ts +50 -63
- package/src/services/task/types.ts +60 -13
- package/test/unit/spec/cc.ts +1 -0
- package/test/unit/spec/metrics/behavioral-events.ts +14 -0
- package/test/unit/spec/services/core/Utils.ts +262 -31
- package/test/unit/spec/services/task/TaskManager.ts +748 -5
- package/test/unit/spec/services/task/TaskUtils.ts +311 -9
- package/test/unit/spec/services/task/index.ts +323 -68
- package/umd/contact-center.min.js +2 -2
- package/umd/contact-center.min.js.map +1 -1
|
@@ -3,7 +3,10 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.isPrimary = exports.isParticipantInMainInteraction = exports.getIsConferenceInProgress = exports.checkParticipantNotInInteraction = void 0;
|
|
6
|
+
exports.shouldAutoAnswerTask = exports.isWebRTCCall = exports.isSecondaryEpDnAgent = exports.isSecondaryAgent = exports.isPrimary = exports.isParticipantInMainInteraction = exports.isDigitalOutbound = exports.isAutoAnswerEnabled = exports.hasAgentInitiatedOutdial = exports.getIsConferenceInProgress = exports.checkParticipantNotInInteraction = void 0;
|
|
7
|
+
var _types = require("./types");
|
|
8
|
+
var _constants = require("../../constants");
|
|
9
|
+
var _types2 = require("../../types");
|
|
7
10
|
/* eslint-disable import/prefer-default-export */
|
|
8
11
|
|
|
9
12
|
/**
|
|
@@ -53,14 +56,14 @@ const checkParticipantNotInInteraction = (task, agentId) => {
|
|
|
53
56
|
|
|
54
57
|
/**
|
|
55
58
|
* Determines if a conference is currently in progress based on the number of active agent participants
|
|
56
|
-
* @param
|
|
59
|
+
* @param TaskData - The payLoad data to check for conference status
|
|
57
60
|
* @returns true if there are 2 or more active agent participants in the main call, false otherwise
|
|
58
61
|
*/
|
|
59
62
|
exports.checkParticipantNotInInteraction = checkParticipantNotInInteraction;
|
|
60
|
-
const getIsConferenceInProgress =
|
|
61
|
-
const mediaMainCall =
|
|
63
|
+
const getIsConferenceInProgress = data => {
|
|
64
|
+
const mediaMainCall = data.interaction.media?.[data?.interactionId];
|
|
62
65
|
const participantsInMainCall = new Set(mediaMainCall?.participants);
|
|
63
|
-
const participants =
|
|
66
|
+
const participants = data.interaction.participants;
|
|
64
67
|
const agentParticipants = new Set();
|
|
65
68
|
if (participantsInMainCall.size > 0) {
|
|
66
69
|
participantsInMainCall.forEach(participantId => {
|
|
@@ -72,5 +75,119 @@ const getIsConferenceInProgress = task => {
|
|
|
72
75
|
}
|
|
73
76
|
return agentParticipants.size >= 2;
|
|
74
77
|
};
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Checks if the current agent is a secondary agent in a consultation scenario.
|
|
81
|
+
* Secondary agents are those who were consulted (not the original call owner).
|
|
82
|
+
* @param task - The task object containing interaction details
|
|
83
|
+
* @returns true if this is a secondary agent (consulted party), false otherwise
|
|
84
|
+
*/
|
|
75
85
|
exports.getIsConferenceInProgress = getIsConferenceInProgress;
|
|
86
|
+
const isSecondaryAgent = interaction => {
|
|
87
|
+
if (!interaction.callProcessingDetails) {
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
return interaction.callProcessingDetails.relationshipType === 'consult' && !!interaction.callProcessingDetails.parentInteractionId && interaction.callProcessingDetails.parentInteractionId !== interaction.interactionId;
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Checks if the current agent is a secondary EP-DN (Entry Point Dial Number) agent.
|
|
95
|
+
* This is specifically for telephony consultations to external numbers/entry points.
|
|
96
|
+
* @param task - The task object containing interaction details
|
|
97
|
+
* @returns true if this is a secondary EP-DN agent in telephony consultation, false otherwise
|
|
98
|
+
*/
|
|
99
|
+
exports.isSecondaryAgent = isSecondaryAgent;
|
|
100
|
+
const isSecondaryEpDnAgent = interaction => {
|
|
101
|
+
if (!interaction) {
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
104
|
+
return interaction.mediaType === 'telephony' && isSecondaryAgent(interaction);
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Checks if auto-answer is enabled for the agent participant
|
|
109
|
+
* @param interaction - The interaction object
|
|
110
|
+
* @param agentId - Current agent ID
|
|
111
|
+
* @returns true if auto-answer is enabled, false otherwise
|
|
112
|
+
*/
|
|
113
|
+
exports.isSecondaryEpDnAgent = isSecondaryEpDnAgent;
|
|
114
|
+
const isAutoAnswerEnabled = (interaction, agentId) => {
|
|
115
|
+
return interaction.participants?.[agentId]?.autoAnswerEnabled === true;
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Checks if the interaction is a WebRTC call eligible for auto-answer
|
|
120
|
+
* @param interaction - The interaction object
|
|
121
|
+
* @param loginOption - The agent's login option (BROWSER, AGENT_DN, etc.)
|
|
122
|
+
* @param webRtcEnabled - Whether WebRTC is enabled for the agent
|
|
123
|
+
* @returns true if this is a WebRTC call, false otherwise
|
|
124
|
+
*/
|
|
125
|
+
exports.isAutoAnswerEnabled = isAutoAnswerEnabled;
|
|
126
|
+
const isWebRTCCall = (interaction, loginOption, webRtcEnabled) => {
|
|
127
|
+
return webRtcEnabled && loginOption === _types2.LoginOption.BROWSER && interaction.mediaType === _constants.OUTDIAL_MEDIA_TYPE;
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Checks if the interaction is a digital outbound (Email/SMS)
|
|
132
|
+
* @param interaction - The interaction object
|
|
133
|
+
* @returns true if this is a digital outbound, false otherwise
|
|
134
|
+
*/
|
|
135
|
+
exports.isWebRTCCall = isWebRTCCall;
|
|
136
|
+
const isDigitalOutbound = interaction => {
|
|
137
|
+
return interaction.contactDirection?.type === _constants.OUTDIAL_DIRECTION && interaction.outboundType === _constants.OUTBOUND_TYPE && (interaction.mediaChannel === _types.MEDIA_CHANNEL.EMAIL || interaction.mediaChannel === _types.MEDIA_CHANNEL.SMS);
|
|
138
|
+
};
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Checks if the outdial was initiated by the current agent
|
|
142
|
+
* @param interaction - The interaction object
|
|
143
|
+
* @param agentId - Current agent ID
|
|
144
|
+
* @returns true if agent initiated the outdial, false otherwise
|
|
145
|
+
*/
|
|
146
|
+
exports.isDigitalOutbound = isDigitalOutbound;
|
|
147
|
+
const hasAgentInitiatedOutdial = (interaction, agentId) => {
|
|
148
|
+
return interaction.contactDirection?.type === _constants.OUTDIAL_DIRECTION && interaction.outboundType === _constants.OUTBOUND_TYPE && interaction.callProcessingDetails?.outdialAgentId === agentId && interaction.owner === agentId && !interaction.callProcessingDetails?.BLIND_TRANSFER_IN_PROGRESS;
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Determines if a task should be auto-answered based on interaction data
|
|
153
|
+
* Auto-answer logic handles:
|
|
154
|
+
* 1. WebRTC calls with auto-answer enabled in agent profile
|
|
155
|
+
* 2. Agent-initiated WebRTC outdial calls
|
|
156
|
+
* 3. Agent-initiated digital outbound (Email/SMS) without previous transfers
|
|
157
|
+
*
|
|
158
|
+
* @param taskData - The task data
|
|
159
|
+
* @param agentId - Current agent ID
|
|
160
|
+
* @param loginOption - Agent's login option
|
|
161
|
+
* @param webRtcEnabled - Whether WebRTC is enabled for the agent
|
|
162
|
+
* @returns true if task should be auto-answered, false otherwise
|
|
163
|
+
*/
|
|
164
|
+
exports.hasAgentInitiatedOutdial = hasAgentInitiatedOutdial;
|
|
165
|
+
const shouldAutoAnswerTask = (taskData, agentId, loginOption, webRtcEnabled) => {
|
|
166
|
+
const {
|
|
167
|
+
interaction
|
|
168
|
+
} = taskData;
|
|
169
|
+
if (!interaction || !agentId) {
|
|
170
|
+
return false;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
// Check if auto-answer is enabled for this agent
|
|
174
|
+
const autoAnswerEnabled = isAutoAnswerEnabled(interaction, agentId);
|
|
175
|
+
|
|
176
|
+
// Check if this is an agent-initiated outdial
|
|
177
|
+
const agentInitiatedOutdial = hasAgentInitiatedOutdial(interaction, agentId);
|
|
178
|
+
|
|
179
|
+
// WebRTC telephony calls
|
|
180
|
+
if (isWebRTCCall(interaction, loginOption, webRtcEnabled)) {
|
|
181
|
+
return autoAnswerEnabled || agentInitiatedOutdial;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
// Digital outbound (Email/SMS)
|
|
185
|
+
if (isDigitalOutbound(interaction) && agentInitiatedOutdial) {
|
|
186
|
+
// Don't auto-answer if task has been transferred (has previous vteams)
|
|
187
|
+
const hasPreviousVteams = interaction.previousVTeams && interaction.previousVTeams.length > 0;
|
|
188
|
+
return !hasPreviousVteams;
|
|
189
|
+
}
|
|
190
|
+
return false;
|
|
191
|
+
};
|
|
192
|
+
exports.shouldAutoAnswerTask = shouldAutoAnswerTask;
|
|
76
193
|
//# sourceMappingURL=TaskUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["isPrimary","task","agentId","data","interaction","owner","exports","isParticipantInMainInteraction","media","Object","values","some","mediaObj","mType","participants","includes","checkParticipantNotInInteraction","hasLeft","getIsConferenceInProgress","mediaMainCall","interactionId","participantsInMainCall","Set","agentParticipants","size","forEach","participantId","participant","pType","add"],"sources":["TaskUtils.ts"],"sourcesContent":["/* eslint-disable import/prefer-default-export */\nimport {ITask} from './types';\n\n/**\n * Determines if the given agent is the primary agent (owner) of the task\n * @param task - The task to check\n * @param agentId - The agent ID to check for primary status\n * @returns true if the agent is the primary agent, false otherwise\n */\nexport const isPrimary = (task: ITask, agentId: string): boolean => {\n if (!task.data?.interaction?.owner) {\n // Fall back to checking data.agentId when owner is not set\n return task.data.agentId === agentId;\n }\n\n return task.data.interaction.owner === agentId;\n};\n\n/**\n * Checks if the given agent is a participant in the main interaction (mainCall)\n * @param task - The task to check\n * @param agentId - The agent ID to check for participation\n * @returns true if the agent is a participant in the main interaction, false otherwise\n */\nexport const isParticipantInMainInteraction = (task: ITask, agentId: string): boolean => {\n if (!task?.data?.interaction?.media) {\n return false;\n }\n\n return Object.values(task.data.interaction.media).some(\n (mediaObj) =>\n mediaObj && mediaObj.mType === 'mainCall' && mediaObj.participants?.includes(agentId)\n );\n};\n\n/**\n * Checks if the given agent is not in the interaction or has left the interaction\n * @param task - The task to check\n * @param agentId - The agent ID to check\n * @returns true if the agent is not in the interaction or has left, false otherwise\n */\nexport const checkParticipantNotInInteraction = (task: ITask, agentId: string): boolean => {\n if (!task?.data?.interaction?.participants) {\n return true;\n }\n const {data} = task;\n\n return (\n !(agentId in data.interaction.participants) ||\n (agentId in data.interaction.participants && data.interaction.participants[agentId].hasLeft)\n );\n};\n\n/**\n * Determines if a conference is currently in progress based on the number of active agent participants\n * @param task - The task to check for conference status\n * @returns true if there are 2 or more active agent participants in the main call, false otherwise\n */\nexport const getIsConferenceInProgress = (task: ITask): boolean => {\n const mediaMainCall = task?.data?.interaction?.media?.[task?.data?.interactionId];\n const participantsInMainCall = new Set(mediaMainCall?.participants);\n const participants = task?.data?.interaction?.participants;\n\n const agentParticipants = new Set();\n if (participantsInMainCall.size > 0) {\n participantsInMainCall.forEach((participantId: string) => {\n const participant = participants?.[participantId];\n if (\n participant &&\n participant.pType !== 'Customer' &&\n participant.pType !== 'Supervisor' &&\n !participant.hasLeft &&\n participant.pType !== 'VVA'\n ) {\n agentParticipants.add(participantId);\n }\n });\n }\n\n return agentParticipants.size >= 2;\n};\n"],"mappings":";;;;;;AAAA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,SAAS,GAAGA,CAACC,IAAW,EAAEC,OAAe,KAAc;EAClE,IAAI,CAACD,IAAI,CAACE,IAAI,EAAEC,WAAW,EAAEC,KAAK,EAAE;IAClC;IACA,OAAOJ,IAAI,CAACE,IAAI,CAACD,OAAO,KAAKA,OAAO;EACtC;EAEA,OAAOD,IAAI,CAACE,IAAI,CAACC,WAAW,CAACC,KAAK,KAAKH,OAAO;AAChD,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AALAI,OAAA,CAAAN,SAAA,GAAAA,SAAA;AAMO,MAAMO,8BAA8B,GAAGA,CAACN,IAAW,EAAEC,OAAe,KAAc;EACvF,IAAI,CAACD,IAAI,EAAEE,IAAI,EAAEC,WAAW,EAAEI,KAAK,EAAE;IACnC,OAAO,KAAK;EACd;EAEA,OAAOC,MAAM,CAACC,MAAM,CAACT,IAAI,CAACE,IAAI,CAACC,WAAW,CAACI,KAAK,CAAC,CAACG,IAAI,CACnDC,QAAQ,IACPA,QAAQ,IAAIA,QAAQ,CAACC,KAAK,KAAK,UAAU,IAAID,QAAQ,CAACE,YAAY,EAAEC,QAAQ,CAACb,OAAO,CACxF,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AALAI,OAAA,CAAAC,8BAAA,GAAAA,8BAAA;AAMO,MAAMS,gCAAgC,GAAGA,CAACf,IAAW,EAAEC,OAAe,KAAc;EACzF,IAAI,CAACD,IAAI,EAAEE,IAAI,EAAEC,WAAW,EAAEU,YAAY,EAAE;IAC1C,OAAO,IAAI;EACb;EACA,MAAM;IAACX;EAAI,CAAC,GAAGF,IAAI;EAEnB,OACE,EAAEC,OAAO,IAAIC,IAAI,CAACC,WAAW,CAACU,YAAY,CAAC,IAC1CZ,OAAO,IAAIC,IAAI,CAACC,WAAW,CAACU,YAAY,IAAIX,IAAI,CAACC,WAAW,CAACU,YAAY,CAACZ,OAAO,CAAC,CAACe,OAAQ;AAEhG,CAAC;;AAED;AACA;AACA;AACA;AACA;AAJAX,OAAA,CAAAU,gCAAA,GAAAA,gCAAA;AAKO,MAAME,yBAAyB,GAAIjB,IAAW,IAAc;EACjE,MAAMkB,aAAa,GAAGlB,IAAI,EAAEE,IAAI,EAAEC,WAAW,EAAEI,KAAK,GAAGP,IAAI,EAAEE,IAAI,EAAEiB,aAAa,CAAC;EACjF,MAAMC,sBAAsB,GAAG,IAAIC,GAAG,CAACH,aAAa,EAAEL,YAAY,CAAC;EACnE,MAAMA,YAAY,GAAGb,IAAI,EAAEE,IAAI,EAAEC,WAAW,EAAEU,YAAY;EAE1D,MAAMS,iBAAiB,GAAG,IAAID,GAAG,CAAC,CAAC;EACnC,IAAID,sBAAsB,CAACG,IAAI,GAAG,CAAC,EAAE;IACnCH,sBAAsB,CAACI,OAAO,CAAEC,aAAqB,IAAK;MACxD,MAAMC,WAAW,GAAGb,YAAY,GAAGY,aAAa,CAAC;MACjD,IACEC,WAAW,IACXA,WAAW,CAACC,KAAK,KAAK,UAAU,IAChCD,WAAW,CAACC,KAAK,KAAK,YAAY,IAClC,CAACD,WAAW,CAACV,OAAO,IACpBU,WAAW,CAACC,KAAK,KAAK,KAAK,EAC3B;QACAL,iBAAiB,CAACM,GAAG,CAACH,aAAa,CAAC;MACtC;IACF,CAAC,CAAC;EACJ;EAEA,OAAOH,iBAAiB,CAACC,IAAI,IAAI,CAAC;AACpC,CAAC;AAAClB,OAAA,CAAAY,yBAAA,GAAAA,yBAAA"}
|
|
1
|
+
{"version":3,"names":["_types","require","_constants","_types2","isPrimary","task","agentId","data","interaction","owner","exports","isParticipantInMainInteraction","media","Object","values","some","mediaObj","mType","participants","includes","checkParticipantNotInInteraction","hasLeft","getIsConferenceInProgress","mediaMainCall","interactionId","participantsInMainCall","Set","agentParticipants","size","forEach","participantId","participant","pType","add","isSecondaryAgent","callProcessingDetails","relationshipType","parentInteractionId","isSecondaryEpDnAgent","mediaType","isAutoAnswerEnabled","autoAnswerEnabled","isWebRTCCall","loginOption","webRtcEnabled","LoginOption","BROWSER","OUTDIAL_MEDIA_TYPE","isDigitalOutbound","contactDirection","type","OUTDIAL_DIRECTION","outboundType","OUTBOUND_TYPE","mediaChannel","MEDIA_CHANNEL","EMAIL","SMS","hasAgentInitiatedOutdial","outdialAgentId","BLIND_TRANSFER_IN_PROGRESS","shouldAutoAnswerTask","taskData","agentInitiatedOutdial","hasPreviousVteams","previousVTeams","length"],"sources":["TaskUtils.ts"],"sourcesContent":["/* eslint-disable import/prefer-default-export */\nimport {Interaction, ITask, TaskData, MEDIA_CHANNEL} from './types';\nimport {OUTDIAL_DIRECTION, OUTDIAL_MEDIA_TYPE, OUTBOUND_TYPE} from '../../constants';\nimport {LoginOption} from '../../types';\n\n/**\n * Determines if the given agent is the primary agent (owner) of the task\n * @param task - The task to check\n * @param agentId - The agent ID to check for primary status\n * @returns true if the agent is the primary agent, false otherwise\n */\nexport const isPrimary = (task: ITask, agentId: string): boolean => {\n if (!task.data?.interaction?.owner) {\n // Fall back to checking data.agentId when owner is not set\n return task.data.agentId === agentId;\n }\n\n return task.data.interaction.owner === agentId;\n};\n\n/**\n * Checks if the given agent is a participant in the main interaction (mainCall)\n * @param task - The task to check\n * @param agentId - The agent ID to check for participation\n * @returns true if the agent is a participant in the main interaction, false otherwise\n */\nexport const isParticipantInMainInteraction = (task: ITask, agentId: string): boolean => {\n if (!task?.data?.interaction?.media) {\n return false;\n }\n\n return Object.values(task.data.interaction.media).some(\n (mediaObj) =>\n mediaObj && mediaObj.mType === 'mainCall' && mediaObj.participants?.includes(agentId)\n );\n};\n\n/**\n * Checks if the given agent is not in the interaction or has left the interaction\n * @param task - The task to check\n * @param agentId - The agent ID to check\n * @returns true if the agent is not in the interaction or has left, false otherwise\n */\nexport const checkParticipantNotInInteraction = (task: ITask, agentId: string): boolean => {\n if (!task?.data?.interaction?.participants) {\n return true;\n }\n const {data} = task;\n\n return (\n !(agentId in data.interaction.participants) ||\n (agentId in data.interaction.participants && data.interaction.participants[agentId].hasLeft)\n );\n};\n\n/**\n * Determines if a conference is currently in progress based on the number of active agent participants\n * @param TaskData - The payLoad data to check for conference status\n * @returns true if there are 2 or more active agent participants in the main call, false otherwise\n */\nexport const getIsConferenceInProgress = (data: TaskData): boolean => {\n const mediaMainCall = data.interaction.media?.[data?.interactionId];\n const participantsInMainCall = new Set(mediaMainCall?.participants);\n const participants = data.interaction.participants;\n\n const agentParticipants = new Set();\n if (participantsInMainCall.size > 0) {\n participantsInMainCall.forEach((participantId: string) => {\n const participant = participants?.[participantId];\n if (\n participant &&\n participant.pType !== 'Customer' &&\n participant.pType !== 'Supervisor' &&\n !participant.hasLeft &&\n participant.pType !== 'VVA'\n ) {\n agentParticipants.add(participantId);\n }\n });\n }\n\n return agentParticipants.size >= 2;\n};\n\n/**\n * Checks if the current agent is a secondary agent in a consultation scenario.\n * Secondary agents are those who were consulted (not the original call owner).\n * @param task - The task object containing interaction details\n * @returns true if this is a secondary agent (consulted party), false otherwise\n */\nexport const isSecondaryAgent = (interaction: Interaction): boolean => {\n if (!interaction.callProcessingDetails) {\n return false;\n }\n\n return (\n interaction.callProcessingDetails.relationshipType === 'consult' &&\n !!interaction.callProcessingDetails.parentInteractionId &&\n interaction.callProcessingDetails.parentInteractionId !== interaction.interactionId\n );\n};\n\n/**\n * Checks if the current agent is a secondary EP-DN (Entry Point Dial Number) agent.\n * This is specifically for telephony consultations to external numbers/entry points.\n * @param task - The task object containing interaction details\n * @returns true if this is a secondary EP-DN agent in telephony consultation, false otherwise\n */\nexport const isSecondaryEpDnAgent = (interaction: Interaction): boolean => {\n if (!interaction) {\n return false;\n }\n\n return interaction.mediaType === 'telephony' && isSecondaryAgent(interaction);\n};\n\n/**\n * Checks if auto-answer is enabled for the agent participant\n * @param interaction - The interaction object\n * @param agentId - Current agent ID\n * @returns true if auto-answer is enabled, false otherwise\n */\nexport const isAutoAnswerEnabled = (interaction: Interaction, agentId: string): boolean => {\n return interaction.participants?.[agentId]?.autoAnswerEnabled === true;\n};\n\n/**\n * Checks if the interaction is a WebRTC call eligible for auto-answer\n * @param interaction - The interaction object\n * @param loginOption - The agent's login option (BROWSER, AGENT_DN, etc.)\n * @param webRtcEnabled - Whether WebRTC is enabled for the agent\n * @returns true if this is a WebRTC call, false otherwise\n */\nexport const isWebRTCCall = (\n interaction: Interaction,\n loginOption: string,\n webRtcEnabled: boolean\n): boolean => {\n return (\n webRtcEnabled &&\n loginOption === LoginOption.BROWSER &&\n interaction.mediaType === OUTDIAL_MEDIA_TYPE\n );\n};\n\n/**\n * Checks if the interaction is a digital outbound (Email/SMS)\n * @param interaction - The interaction object\n * @returns true if this is a digital outbound, false otherwise\n */\nexport const isDigitalOutbound = (interaction: Interaction): boolean => {\n return (\n interaction.contactDirection?.type === OUTDIAL_DIRECTION &&\n interaction.outboundType === OUTBOUND_TYPE &&\n (interaction.mediaChannel === MEDIA_CHANNEL.EMAIL ||\n interaction.mediaChannel === MEDIA_CHANNEL.SMS)\n );\n};\n\n/**\n * Checks if the outdial was initiated by the current agent\n * @param interaction - The interaction object\n * @param agentId - Current agent ID\n * @returns true if agent initiated the outdial, false otherwise\n */\nexport const hasAgentInitiatedOutdial = (interaction: Interaction, agentId: string): boolean => {\n return (\n interaction.contactDirection?.type === OUTDIAL_DIRECTION &&\n interaction.outboundType === OUTBOUND_TYPE &&\n interaction.callProcessingDetails?.outdialAgentId === agentId &&\n interaction.owner === agentId &&\n !interaction.callProcessingDetails?.BLIND_TRANSFER_IN_PROGRESS\n );\n};\n\n/**\n * Determines if a task should be auto-answered based on interaction data\n * Auto-answer logic handles:\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 taskData - The task data\n * @param agentId - Current agent ID\n * @param loginOption - Agent's login option\n * @param webRtcEnabled - Whether WebRTC is enabled for the agent\n * @returns true if task should be auto-answered, false otherwise\n */\nexport const shouldAutoAnswerTask = (\n taskData: TaskData,\n agentId: string,\n loginOption: string,\n webRtcEnabled: boolean\n): boolean => {\n const {interaction} = taskData;\n\n if (!interaction || !agentId) {\n return false;\n }\n\n // Check if auto-answer is enabled for this agent\n const autoAnswerEnabled = isAutoAnswerEnabled(interaction, agentId);\n\n // Check if this is an agent-initiated outdial\n const agentInitiatedOutdial = hasAgentInitiatedOutdial(interaction, agentId);\n\n // WebRTC telephony calls\n if (isWebRTCCall(interaction, loginOption, webRtcEnabled)) {\n return autoAnswerEnabled || agentInitiatedOutdial;\n }\n\n // Digital outbound (Email/SMS)\n if (isDigitalOutbound(interaction) && agentInitiatedOutdial) {\n // Don't auto-answer if task has been transferred (has previous vteams)\n const hasPreviousVteams = interaction.previousVTeams && interaction.previousVTeams.length > 0;\n\n return !hasPreviousVteams;\n }\n\n return false;\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -39,7 +39,9 @@ const PRESERVED_TASK_DATA_FIELDS = exports.PRESERVED_TASK_DATA_FIELDS = {
|
|
|
39
39
|
/** Indicates if wrap-up is required for this task */
|
|
40
40
|
WRAP_UP_REQUIRED: 'wrapUpRequired',
|
|
41
41
|
/** Indicates if a conference is currently in progress (2+ active agents) */
|
|
42
|
-
IS_CONFERENCE_IN_PROGRESS: 'isConferenceInProgress'
|
|
42
|
+
IS_CONFERENCE_IN_PROGRESS: 'isConferenceInProgress',
|
|
43
|
+
/** Indicates if auto-answer is in progress for this task */
|
|
44
|
+
IS_AUTO_ANSWERING: 'isAutoAnswering'
|
|
43
45
|
};
|
|
44
46
|
|
|
45
47
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["TASK_MESSAGE_TYPE","exports","TASK_API","HOLD","UNHOLD","CONSULT","CONSULT_ACCEPT","CONSULT_END","TRANSFER","CONSULT_TRANSFER","PAUSE","RESUME","WRAPUP","END","CONSULT_CONFERENCE","CONFERENCE_EXIT","CONFERENCE_TRANSFER","TASK_MANAGER_FILE","TASK_FILE","PRESERVED_TASK_DATA_FIELDS","IS_CONSULTED","WRAP_UP_REQUIRED","IS_CONFERENCE_IN_PROGRESS","KEYS_TO_NOT_DELETE","Object","values","METHODS","ACCEPT","TOGGLE_MUTE","DECLINE","PAUSE_RECORDING","RESUME_RECORDING","END_CONSULT","EXIT_CONFERENCE","TRANSFER_CONFERENCE","UPDATE_TASK_DATA","RECONCILE_DATA","HANDLE_INCOMING_WEB_CALL","REGISTER_TASK_LISTENERS","REMOVE_TASK_FROM_COLLECTION","HANDLE_TASK_CLEANUP","GET_TASK","GET_ALL_TASKS","GET_TASK_MANAGER","SETUP_AUTO_WRAPUP_TIMER","CANCEL_AUTO_WRAPUP_TIMER"],"sources":["constants.ts"],"sourcesContent":["/**\n * Constants for Task Service\n * @module @webex/contact-center/services/task/constants\n * @ignore\n */\n\nexport const TASK_MESSAGE_TYPE = 'RoutingMessage';\nexport const TASK_API = '/v1/tasks/';\nexport const HOLD = '/hold';\nexport const UNHOLD = '/unhold';\nexport const CONSULT = '/consult';\nexport const CONSULT_ACCEPT = '/consult/accept';\nexport const CONSULT_END = '/consult/end';\nexport const TRANSFER = '/transfer';\nexport const CONSULT_TRANSFER = '/consult/transfer';\nexport const PAUSE = '/record/pause';\nexport const RESUME = '/record/resume';\nexport const WRAPUP = '/wrapup';\nexport const END = '/end';\nexport const CONSULT_CONFERENCE = '/consult/conference';\nexport const CONFERENCE_EXIT = '/conference/exit';\nexport const CONFERENCE_TRANSFER = '/conference/transfer';\nexport const TASK_MANAGER_FILE = 'taskManager';\nexport const TASK_FILE = 'task';\n\n/**\n * Task data field names that should be preserved during reconciliation\n * These fields are retained even if not present in new data during updates\n */\nexport const PRESERVED_TASK_DATA_FIELDS = {\n /** Indicates if the task is in consultation state */\n IS_CONSULTED: 'isConsulted',\n /** Indicates if wrap-up is required for this task */\n WRAP_UP_REQUIRED: 'wrapUpRequired',\n /** Indicates if a conference is currently in progress (2+ active agents) */\n IS_CONFERENCE_IN_PROGRESS: 'isConferenceInProgress',\n};\n\n/**\n * Array of task data field names that should not be deleted during reconciliation\n * Used by reconcileData method to preserve important task state fields\n */\nexport const KEYS_TO_NOT_DELETE: string[] = Object.values(PRESERVED_TASK_DATA_FIELDS);\n\n// METHOD NAMES\nexport const METHODS = {\n // Task class methods\n ACCEPT: 'accept',\n TOGGLE_MUTE: 'toggleMute',\n DECLINE: 'decline',\n HOLD: 'hold',\n RESUME: 'resume',\n END: 'end',\n WRAPUP: 'wrapup',\n PAUSE_RECORDING: 'pauseRecording',\n RESUME_RECORDING: 'resumeRecording',\n CONSULT: 'consult',\n END_CONSULT: 'endConsult',\n TRANSFER: 'transfer',\n CONSULT_TRANSFER: 'consultTransfer',\n CONSULT_CONFERENCE: 'consultConference',\n EXIT_CONFERENCE: 'exitConference',\n TRANSFER_CONFERENCE: 'transferConference',\n UPDATE_TASK_DATA: 'updateTaskData',\n RECONCILE_DATA: 'reconcileData',\n\n // TaskManager class methods\n HANDLE_INCOMING_WEB_CALL: 'handleIncomingWebCall',\n REGISTER_TASK_LISTENERS: 'registerTaskListeners',\n REMOVE_TASK_FROM_COLLECTION: 'removeTaskFromCollection',\n HANDLE_TASK_CLEANUP: 'handleTaskCleanup',\n GET_TASK: 'getTask',\n GET_ALL_TASKS: 'getAllTasks',\n GET_TASK_MANAGER: 'getTaskManager',\n SETUP_AUTO_WRAPUP_TIMER: 'setupAutoWrapupTimer',\n CANCEL_AUTO_WRAPUP_TIMER: 'cancelAutoWrapupTimer',\n};\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;;AAEO,MAAMA,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,GAAG,gBAAgB;AAC1C,MAAME,QAAQ,GAAAD,OAAA,CAAAC,QAAA,GAAG,YAAY;AAC7B,MAAMC,IAAI,GAAAF,OAAA,CAAAE,IAAA,GAAG,OAAO;AACpB,MAAMC,MAAM,GAAAH,OAAA,CAAAG,MAAA,GAAG,SAAS;AACxB,MAAMC,OAAO,GAAAJ,OAAA,CAAAI,OAAA,GAAG,UAAU;AAC1B,MAAMC,cAAc,GAAAL,OAAA,CAAAK,cAAA,GAAG,iBAAiB;AACxC,MAAMC,WAAW,GAAAN,OAAA,CAAAM,WAAA,GAAG,cAAc;AAClC,MAAMC,QAAQ,GAAAP,OAAA,CAAAO,QAAA,GAAG,WAAW;AAC5B,MAAMC,gBAAgB,GAAAR,OAAA,CAAAQ,gBAAA,GAAG,mBAAmB;AAC5C,MAAMC,KAAK,GAAAT,OAAA,CAAAS,KAAA,GAAG,eAAe;AAC7B,MAAMC,MAAM,GAAAV,OAAA,CAAAU,MAAA,GAAG,gBAAgB;AAC/B,MAAMC,MAAM,GAAAX,OAAA,CAAAW,MAAA,GAAG,SAAS;AACxB,MAAMC,GAAG,GAAAZ,OAAA,CAAAY,GAAA,GAAG,MAAM;AAClB,MAAMC,kBAAkB,GAAAb,OAAA,CAAAa,kBAAA,GAAG,qBAAqB;AAChD,MAAMC,eAAe,GAAAd,OAAA,CAAAc,eAAA,GAAG,kBAAkB;AAC1C,MAAMC,mBAAmB,GAAAf,OAAA,CAAAe,mBAAA,GAAG,sBAAsB;AAClD,MAAMC,iBAAiB,GAAAhB,OAAA,CAAAgB,iBAAA,GAAG,aAAa;AACvC,MAAMC,SAAS,GAAAjB,OAAA,CAAAiB,SAAA,GAAG,MAAM;;AAE/B;AACA;AACA;AACA;AACO,MAAMC,0BAA0B,GAAAlB,OAAA,CAAAkB,0BAAA,GAAG;EACxC;EACAC,YAAY,EAAE,aAAa;EAC3B;EACAC,gBAAgB,EAAE,gBAAgB;EAClC;EACAC,yBAAyB,EAAE;
|
|
1
|
+
{"version":3,"names":["TASK_MESSAGE_TYPE","exports","TASK_API","HOLD","UNHOLD","CONSULT","CONSULT_ACCEPT","CONSULT_END","TRANSFER","CONSULT_TRANSFER","PAUSE","RESUME","WRAPUP","END","CONSULT_CONFERENCE","CONFERENCE_EXIT","CONFERENCE_TRANSFER","TASK_MANAGER_FILE","TASK_FILE","PRESERVED_TASK_DATA_FIELDS","IS_CONSULTED","WRAP_UP_REQUIRED","IS_CONFERENCE_IN_PROGRESS","IS_AUTO_ANSWERING","KEYS_TO_NOT_DELETE","Object","values","METHODS","ACCEPT","TOGGLE_MUTE","DECLINE","PAUSE_RECORDING","RESUME_RECORDING","END_CONSULT","EXIT_CONFERENCE","TRANSFER_CONFERENCE","UPDATE_TASK_DATA","RECONCILE_DATA","HANDLE_INCOMING_WEB_CALL","REGISTER_TASK_LISTENERS","REMOVE_TASK_FROM_COLLECTION","HANDLE_TASK_CLEANUP","GET_TASK","GET_ALL_TASKS","GET_TASK_MANAGER","SETUP_AUTO_WRAPUP_TIMER","CANCEL_AUTO_WRAPUP_TIMER"],"sources":["constants.ts"],"sourcesContent":["/**\n * Constants for Task Service\n * @module @webex/contact-center/services/task/constants\n * @ignore\n */\n\nexport const TASK_MESSAGE_TYPE = 'RoutingMessage';\nexport const TASK_API = '/v1/tasks/';\nexport const HOLD = '/hold';\nexport const UNHOLD = '/unhold';\nexport const CONSULT = '/consult';\nexport const CONSULT_ACCEPT = '/consult/accept';\nexport const CONSULT_END = '/consult/end';\nexport const TRANSFER = '/transfer';\nexport const CONSULT_TRANSFER = '/consult/transfer';\nexport const PAUSE = '/record/pause';\nexport const RESUME = '/record/resume';\nexport const WRAPUP = '/wrapup';\nexport const END = '/end';\nexport const CONSULT_CONFERENCE = '/consult/conference';\nexport const CONFERENCE_EXIT = '/conference/exit';\nexport const CONFERENCE_TRANSFER = '/conference/transfer';\nexport const TASK_MANAGER_FILE = 'taskManager';\nexport const TASK_FILE = 'task';\n\n/**\n * Task data field names that should be preserved during reconciliation\n * These fields are retained even if not present in new data during updates\n */\nexport const PRESERVED_TASK_DATA_FIELDS = {\n /** Indicates if the task is in consultation state */\n IS_CONSULTED: 'isConsulted',\n /** Indicates if wrap-up is required for this task */\n WRAP_UP_REQUIRED: 'wrapUpRequired',\n /** Indicates if a conference is currently in progress (2+ active agents) */\n IS_CONFERENCE_IN_PROGRESS: 'isConferenceInProgress',\n /** Indicates if auto-answer is in progress for this task */\n IS_AUTO_ANSWERING: 'isAutoAnswering',\n};\n\n/**\n * Array of task data field names that should not be deleted during reconciliation\n * Used by reconcileData method to preserve important task state fields\n */\nexport const KEYS_TO_NOT_DELETE: string[] = Object.values(PRESERVED_TASK_DATA_FIELDS);\n\n// METHOD NAMES\nexport const METHODS = {\n // Task class methods\n ACCEPT: 'accept',\n TOGGLE_MUTE: 'toggleMute',\n DECLINE: 'decline',\n HOLD: 'hold',\n RESUME: 'resume',\n END: 'end',\n WRAPUP: 'wrapup',\n PAUSE_RECORDING: 'pauseRecording',\n RESUME_RECORDING: 'resumeRecording',\n CONSULT: 'consult',\n END_CONSULT: 'endConsult',\n TRANSFER: 'transfer',\n CONSULT_TRANSFER: 'consultTransfer',\n CONSULT_CONFERENCE: 'consultConference',\n EXIT_CONFERENCE: 'exitConference',\n TRANSFER_CONFERENCE: 'transferConference',\n UPDATE_TASK_DATA: 'updateTaskData',\n RECONCILE_DATA: 'reconcileData',\n\n // TaskManager class methods\n HANDLE_INCOMING_WEB_CALL: 'handleIncomingWebCall',\n REGISTER_TASK_LISTENERS: 'registerTaskListeners',\n REMOVE_TASK_FROM_COLLECTION: 'removeTaskFromCollection',\n HANDLE_TASK_CLEANUP: 'handleTaskCleanup',\n GET_TASK: 'getTask',\n GET_ALL_TASKS: 'getAllTasks',\n GET_TASK_MANAGER: 'getTaskManager',\n SETUP_AUTO_WRAPUP_TIMER: 'setupAutoWrapupTimer',\n CANCEL_AUTO_WRAPUP_TIMER: 'cancelAutoWrapupTimer',\n};\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;;AAEO,MAAMA,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,GAAG,gBAAgB;AAC1C,MAAME,QAAQ,GAAAD,OAAA,CAAAC,QAAA,GAAG,YAAY;AAC7B,MAAMC,IAAI,GAAAF,OAAA,CAAAE,IAAA,GAAG,OAAO;AACpB,MAAMC,MAAM,GAAAH,OAAA,CAAAG,MAAA,GAAG,SAAS;AACxB,MAAMC,OAAO,GAAAJ,OAAA,CAAAI,OAAA,GAAG,UAAU;AAC1B,MAAMC,cAAc,GAAAL,OAAA,CAAAK,cAAA,GAAG,iBAAiB;AACxC,MAAMC,WAAW,GAAAN,OAAA,CAAAM,WAAA,GAAG,cAAc;AAClC,MAAMC,QAAQ,GAAAP,OAAA,CAAAO,QAAA,GAAG,WAAW;AAC5B,MAAMC,gBAAgB,GAAAR,OAAA,CAAAQ,gBAAA,GAAG,mBAAmB;AAC5C,MAAMC,KAAK,GAAAT,OAAA,CAAAS,KAAA,GAAG,eAAe;AAC7B,MAAMC,MAAM,GAAAV,OAAA,CAAAU,MAAA,GAAG,gBAAgB;AAC/B,MAAMC,MAAM,GAAAX,OAAA,CAAAW,MAAA,GAAG,SAAS;AACxB,MAAMC,GAAG,GAAAZ,OAAA,CAAAY,GAAA,GAAG,MAAM;AAClB,MAAMC,kBAAkB,GAAAb,OAAA,CAAAa,kBAAA,GAAG,qBAAqB;AAChD,MAAMC,eAAe,GAAAd,OAAA,CAAAc,eAAA,GAAG,kBAAkB;AAC1C,MAAMC,mBAAmB,GAAAf,OAAA,CAAAe,mBAAA,GAAG,sBAAsB;AAClD,MAAMC,iBAAiB,GAAAhB,OAAA,CAAAgB,iBAAA,GAAG,aAAa;AACvC,MAAMC,SAAS,GAAAjB,OAAA,CAAAiB,SAAA,GAAG,MAAM;;AAE/B;AACA;AACA;AACA;AACO,MAAMC,0BAA0B,GAAAlB,OAAA,CAAAkB,0BAAA,GAAG;EACxC;EACAC,YAAY,EAAE,aAAa;EAC3B;EACAC,gBAAgB,EAAE,gBAAgB;EAClC;EACAC,yBAAyB,EAAE,wBAAwB;EACnD;EACAC,iBAAiB,EAAE;AACrB,CAAC;;AAED;AACA;AACA;AACA;AACO,MAAMC,kBAA4B,GAAAvB,OAAA,CAAAuB,kBAAA,GAAGC,MAAM,CAACC,MAAM,CAACP,0BAA0B,CAAC;;AAErF;AACO,MAAMQ,OAAO,GAAA1B,OAAA,CAAA0B,OAAA,GAAG;EACrB;EACAC,MAAM,EAAE,QAAQ;EAChBC,WAAW,EAAE,YAAY;EACzBC,OAAO,EAAE,SAAS;EAClB3B,IAAI,EAAE,MAAM;EACZQ,MAAM,EAAE,QAAQ;EAChBE,GAAG,EAAE,KAAK;EACVD,MAAM,EAAE,QAAQ;EAChBmB,eAAe,EAAE,gBAAgB;EACjCC,gBAAgB,EAAE,iBAAiB;EACnC3B,OAAO,EAAE,SAAS;EAClB4B,WAAW,EAAE,YAAY;EACzBzB,QAAQ,EAAE,UAAU;EACpBC,gBAAgB,EAAE,iBAAiB;EACnCK,kBAAkB,EAAE,mBAAmB;EACvCoB,eAAe,EAAE,gBAAgB;EACjCC,mBAAmB,EAAE,oBAAoB;EACzCC,gBAAgB,EAAE,gBAAgB;EAClCC,cAAc,EAAE,eAAe;EAE/B;EACAC,wBAAwB,EAAE,uBAAuB;EACjDC,uBAAuB,EAAE,uBAAuB;EAChDC,2BAA2B,EAAE,0BAA0B;EACvDC,mBAAmB,EAAE,mBAAmB;EACxCC,QAAQ,EAAE,SAAS;EACnBC,aAAa,EAAE,aAAa;EAC5BC,gBAAgB,EAAE,gBAAgB;EAClCC,uBAAuB,EAAE,sBAAsB;EAC/CC,wBAAwB,EAAE;AAC5B,CAAC","ignoreList":[]}
|
|
@@ -475,7 +475,6 @@ function routingContact(aqm) {
|
|
|
475
475
|
interactionId: p.interactionId
|
|
476
476
|
} // any of the two events can be received for API success event
|
|
477
477
|
},
|
|
478
|
-
|
|
479
478
|
msg: {}
|
|
480
479
|
},
|
|
481
480
|
notifFail: {
|
|
@@ -513,7 +512,6 @@ function routingContact(aqm) {
|
|
|
513
512
|
type: _types.CC_EVENTS.PARTICIPANT_LEFT_CONFERENCE_FAILED
|
|
514
513
|
} // to be finalized
|
|
515
514
|
},
|
|
516
|
-
|
|
517
515
|
errId: 'Service.aqm.task.consultConference'
|
|
518
516
|
}
|
|
519
517
|
})),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_types","require","_Utils","_constants","_constants2","_constants3","_types2","routingContact","aqm","accept","req","p","url","TASK_API","interactionId","host","WCC_API_GATEWAY","data","err","notifSuccess","bind","type","TASK_MESSAGE_TYPE","CC_EVENTS","AGENT_CONTACT_ASSIGNED","msg","notifFail","AGENT_CONTACT_ASSIGN_FAILED","errId","hold","HOLD","AGENT_CONTACT_HELD","AGENT_CONTACT_HOLD_FAILED","unHold","UNHOLD","AGENT_CONTACT_UNHELD","AGENT_CONTACT_UNHOLD_FAILED","pauseRecording","PAUSE","CONTACT_RECORDING_PAUSED","CONTACT_RECORDING_PAUSE_FAILED","resumeRecording","RESUME","CONTACT_RECORDING_RESUMED","CONTACT_RECORDING_RESUME_FAILED","consult","CONSULT","timeout","destinationType","DESTINATION_TYPE","QUEUE","TIMEOUT_REQ","AGENT_CONSULT_CREATED","AGENT_CTQ_FAILED","AGENT_CONSULT_FAILED","notifCancel","consultEnd","isConsult","isSecondaryEpDnAgent","queueId","CONSULT_END","AGENT_CTQ_CANCELLED","CONTACT_ENDED","AGENT_CONSULT_ENDED","AGENT_CONSULT_CONFERENCE_ENDED","AGENT_CTQ_CANCEL_FAILED","AGENT_CONSULT_END_FAILED","consultAccept","CONSULT_ACCEPT","AGENT_CONSULTING","blindTransfer","TRANSFER","AGENT_BLIND_TRANSFERRED","AGENT_BLIND_TRANSFER_FAILED","vteamTransfer","AGENT_VTEAM_TRANSFERRED","AGENT_VTEAM_TRANSFER_FAILED","consultTransfer","CONSULT_TRANSFER","AGENT_CONSULT_TRANSFERRED","AGENT_CONSULT_TRANSFERRING","AGENT_CONSULT_TRANSFER_FAILED","end","END","AGENT_WRAPUP","AGENT_CONTACT_END_FAILED","wrapup","WRAPUP","AGENT_WRAPPEDUP","AGENT_WRAPUP_FAILED","cancelTask","cancelCtq","consultConference","CONSULT_CONFERENCE","AGENT_CONSULT_CONFERENCED","AGENT_CONSULT_CONFERENCING","AGENT_CONSULT_CONFERENCE_FAILED","exitConference","CONFERENCE_EXIT","PARTICIPANT_LEFT_CONFERENCE","PARTICIPANT_LEFT_CONFERENCE_FAILED","conferenceTransfer","CONFERENCE_TRANSFER","AGENT_CONFERENCE_TRANSFER_FAILED"],"sources":["contact.ts"],"sourcesContent":["import {CC_EVENTS} from '../config/types';\nimport {createErrDetailsObject as err} from '../core/Utils';\nimport {WCC_API_GATEWAY} from '../constants';\nimport AqmReqs from '../core/aqm-reqs';\nimport {TIMEOUT_REQ} from '../core/constants';\nimport {\n CONSULT,\n CONSULT_ACCEPT,\n CONSULT_END,\n CONSULT_TRANSFER,\n END,\n HOLD,\n PAUSE,\n RESUME,\n TASK_API,\n TASK_MESSAGE_TYPE,\n TRANSFER,\n UNHOLD,\n WRAPUP,\n CONSULT_CONFERENCE,\n CONFERENCE_EXIT,\n CONFERENCE_TRANSFER,\n} from './constants';\nimport * as Contact from './types';\nimport {DESTINATION_TYPE} from './types';\n\nexport default function routingContact(aqm: AqmReqs) {\n return {\n /*\n * Accept incoming task\n */\n accept: aqm.req((p: {interactionId: string}) => ({\n url: `${TASK_API}${p.interactionId}/accept`,\n host: WCC_API_GATEWAY,\n data: {},\n err,\n notifSuccess: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.AGENT_CONTACT_ASSIGNED, interactionId: p.interactionId},\n },\n msg: {} as Contact.AgentContact,\n },\n notifFail: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.AGENT_CONTACT_ASSIGN_FAILED, interactionId: p.interactionId},\n },\n errId: 'Service.aqm.task.accept',\n },\n })),\n\n /*\n * Hold task\n */\n hold: aqm.req((p: {interactionId: string; data: Contact.HoldResumePayload}) => ({\n url: `${TASK_API}${p.interactionId}${HOLD}`,\n data: p.data,\n host: WCC_API_GATEWAY,\n err,\n notifSuccess: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.AGENT_CONTACT_HELD, interactionId: p.interactionId},\n },\n msg: {} as Contact.AgentContact,\n },\n notifFail: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.AGENT_CONTACT_HOLD_FAILED},\n },\n errId: 'Service.aqm.task.hold',\n },\n })),\n\n /*\n * Unhold task\n */\n unHold: aqm.req((p: {interactionId: string; data: Contact.HoldResumePayload}) => ({\n url: `${TASK_API}${p.interactionId}${UNHOLD}`,\n data: p.data,\n host: WCC_API_GATEWAY,\n err,\n notifSuccess: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.AGENT_CONTACT_UNHELD, interactionId: p.interactionId},\n },\n msg: {} as Contact.AgentContact,\n },\n notifFail: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.AGENT_CONTACT_UNHOLD_FAILED},\n },\n errId: 'Service.aqm.task.unHold',\n },\n })),\n\n /*\n * Pause Recording\n */\n pauseRecording: aqm.req((p: {interactionId: string}) => ({\n url: `${TASK_API}${p.interactionId}${PAUSE}`,\n data: {},\n host: WCC_API_GATEWAY,\n err,\n notifSuccess: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.CONTACT_RECORDING_PAUSED, interactionId: p.interactionId},\n },\n msg: {} as Contact.AgentContact,\n },\n notifFail: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.CONTACT_RECORDING_PAUSE_FAILED},\n },\n errId: 'Service.aqm.task.pauseRecording',\n },\n })),\n\n /*\n * Resume Recording\n */\n resumeRecording: aqm.req(\n (p: {interactionId: string; data: Contact.ResumeRecordingPayload}) => ({\n url: `${TASK_API}${p.interactionId}${RESUME}`,\n data: p.data,\n host: WCC_API_GATEWAY,\n err,\n notifSuccess: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.CONTACT_RECORDING_RESUMED, interactionId: p.interactionId},\n },\n msg: {} as Contact.AgentContact,\n },\n notifFail: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.CONTACT_RECORDING_RESUME_FAILED},\n },\n errId: 'Service.aqm.task.resumeRecording',\n },\n })\n ),\n\n /*\n * Consult contact\n */\n consult: aqm.req((p: {interactionId: string; data: Contact.ConsultPayload}) => ({\n url: `${TASK_API}${p.interactionId}${CONSULT}`,\n data: p.data,\n timeout:\n p.data && p.data.destinationType === DESTINATION_TYPE.QUEUE ? 'disabled' : TIMEOUT_REQ,\n host: WCC_API_GATEWAY,\n err,\n notifSuccess: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.AGENT_CONSULT_CREATED, interactionId: p.interactionId},\n },\n msg: {} as Contact.AgentContact,\n },\n notifFail: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {\n type:\n p.data && p.data.destinationType === DESTINATION_TYPE.QUEUE\n ? CC_EVENTS.AGENT_CTQ_FAILED\n : CC_EVENTS.AGENT_CONSULT_FAILED,\n },\n },\n errId: 'Service.aqm.task.consult',\n },\n notifCancel: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: 'AgentCtqCancelled', interactionId: p.interactionId},\n },\n msg: {} as Contact.AgentContact,\n },\n })),\n\n /*\n * Consult End\n */\n consultEnd: aqm.req((p: {interactionId: string; data: Contact.ConsultEndPayload}) => {\n // Setting false value for optional attribute\n const {isConsult, isSecondaryEpDnAgent = false, queueId} = p.data;\n\n return {\n url: `${TASK_API}${p.interactionId}${CONSULT_END}`,\n host: WCC_API_GATEWAY,\n data: queueId\n ? {\n queueId,\n }\n : {},\n err,\n notifSuccess: {\n bind: {\n type: 'RoutingMessage',\n data: {\n type: (() => {\n if (queueId) return CC_EVENTS.AGENT_CTQ_CANCELLED;\n if (isSecondaryEpDnAgent) return CC_EVENTS.CONTACT_ENDED;\n if (isConsult) return CC_EVENTS.AGENT_CONSULT_ENDED;\n\n return CC_EVENTS.AGENT_CONSULT_CONFERENCE_ENDED;\n })(),\n interactionId: p.interactionId,\n },\n },\n msg: {} as Contact.AgentContact,\n },\n notifFail: {\n bind: {\n type: 'RoutingMessage',\n data: {\n type: p.data.queueId\n ? CC_EVENTS.AGENT_CTQ_CANCEL_FAILED\n : CC_EVENTS.AGENT_CONSULT_END_FAILED,\n },\n },\n errId: p.data.queueId ? 'Service.aqm.task.cancelCtq' : 'Service.aqm.task.consultEnd',\n },\n };\n }),\n\n /*\n * Consult Accept contact\n */\n consultAccept: aqm.req((p: {interactionId: string}) => ({\n url: `${TASK_API}${p.interactionId}${CONSULT_ACCEPT}`,\n data: {},\n host: WCC_API_GATEWAY,\n err,\n notifSuccess: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.AGENT_CONSULTING, interactionId: p.interactionId},\n },\n msg: {} as Contact.AgentContact,\n },\n notifFail: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.AGENT_CONTACT_ASSIGN_FAILED},\n },\n errId: 'Service.aqm.task.consultAccept',\n },\n })),\n\n /*\n * BlindTransfer contact\n */\n blindTransfer: aqm.req((p: {interactionId: string; data: Contact.TransferPayLoad}) => ({\n url: `${TASK_API}${p.interactionId}${TRANSFER}`,\n data: p.data,\n host: WCC_API_GATEWAY,\n err,\n notifSuccess: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.AGENT_BLIND_TRANSFERRED, interactionId: p.interactionId},\n },\n msg: {} as Contact.AgentContact,\n },\n notifFail: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.AGENT_BLIND_TRANSFER_FAILED},\n },\n errId: 'Service.aqm.task.AgentBlindTransferFailedEvent',\n },\n })),\n\n /*\n * VteamTransfer contact\n */\n vteamTransfer: aqm.req((p: {interactionId: string; data: Contact.TransferPayLoad}) => ({\n url: `${TASK_API}${p.interactionId}${TRANSFER}`,\n data: p.data,\n host: WCC_API_GATEWAY,\n err,\n notifSuccess: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.AGENT_VTEAM_TRANSFERRED, interactionId: p.interactionId},\n },\n msg: {} as Contact.AgentContact,\n },\n notifFail: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.AGENT_VTEAM_TRANSFER_FAILED},\n },\n errId: 'Service.aqm.task.AgentVteamTransferFailed',\n },\n })),\n\n /*\n * Consult Transfer contact\n */\n consultTransfer: aqm.req(\n (p: {interactionId: string; data: Contact.ConsultTransferPayLoad}) => ({\n url: `${TASK_API}${p.interactionId}${CONSULT_TRANSFER}`,\n data: p.data,\n host: WCC_API_GATEWAY,\n err,\n notifSuccess: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {\n type: [CC_EVENTS.AGENT_CONSULT_TRANSFERRED, CC_EVENTS.AGENT_CONSULT_TRANSFERRING],\n interactionId: p.interactionId,\n },\n },\n msg: {} as Contact.AgentContact,\n },\n notifFail: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.AGENT_CONSULT_TRANSFER_FAILED},\n },\n errId: 'Service.aqm.task.AgentConsultTransferFailed',\n },\n })\n ),\n\n /*\n * End contact\n */\n end: aqm.req((p: {interactionId: string}) => ({\n url: `${TASK_API}${p.interactionId}${END}`,\n data: {},\n host: WCC_API_GATEWAY,\n err,\n notifSuccess: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.AGENT_WRAPUP, interactionId: p.interactionId},\n },\n msg: {} as Contact.AgentContact,\n },\n notifFail: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.AGENT_CONTACT_END_FAILED},\n },\n errId: 'Service.aqm.task.end',\n },\n })),\n\n /*\n * Wrapup contact\n */\n wrapup: aqm.req((p: {interactionId: string; data: Contact.WrapupPayLoad}) => ({\n url: `${TASK_API}${p.interactionId}${WRAPUP}`,\n data: p.data,\n host: WCC_API_GATEWAY,\n err,\n notifSuccess: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.AGENT_WRAPPEDUP, interactionId: p.interactionId},\n },\n msg: {} as Contact.AgentContact,\n },\n notifFail: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.AGENT_WRAPUP_FAILED},\n },\n errId: 'Service.aqm.task.wrapup',\n },\n })),\n\n /*\n * Cancel popover\n */\n cancelTask: aqm.req((p: {interactionId: string}) => ({\n url: `${TASK_API}${p.interactionId}${END}`,\n data: {},\n host: WCC_API_GATEWAY,\n err,\n notifSuccess: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.CONTACT_ENDED, interactionId: p.interactionId},\n },\n msg: {} as Contact.AgentContact,\n },\n notifFail: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.AGENT_CONTACT_END_FAILED},\n },\n errId: 'Service.aqm.task.end',\n },\n })),\n\n /*\n * Cancel Ctq request\n */\n cancelCtq: aqm.req((p: {interactionId: string; data: Contact.cancelCtq}) => ({\n url: `${TASK_API}${p.interactionId}/cancelCtq`,\n data: p.data,\n host: WCC_API_GATEWAY,\n err,\n notifSuccess: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: 'AgentCtqCancelled', interactionId: p.interactionId},\n },\n msg: {} as Contact.AgentContact,\n },\n notifFail: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: 'AgentCtqCancelFailed'},\n },\n errId: 'Service.aqm.task.cancelCtq',\n },\n })),\n\n /*\n * Start consult conference\n */\n consultConference: aqm.req(\n (p: {interactionId: string; data: Contact.ConsultConferenceData}) => ({\n url: `${TASK_API}${p.interactionId}${CONSULT_CONFERENCE}`,\n data: p.data,\n host: WCC_API_GATEWAY,\n err,\n notifSuccess: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {\n type: [CC_EVENTS.AGENT_CONSULT_CONFERENCED, CC_EVENTS.AGENT_CONSULT_CONFERENCING],\n interactionId: p.interactionId,\n }, // any of the two events can be received for API success event\n },\n msg: {} as Contact.AgentContact,\n },\n notifFail: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.AGENT_CONSULT_CONFERENCE_FAILED},\n },\n errId: 'Service.aqm.task.consultConference',\n },\n })\n ),\n\n /*\n * Exit conference\n */\n exitConference: aqm.req((p: {interactionId: string}) => ({\n url: `${TASK_API}${p.interactionId}${CONFERENCE_EXIT}`,\n data: {},\n host: WCC_API_GATEWAY,\n err,\n notifSuccess: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.PARTICIPANT_LEFT_CONFERENCE, interactionId: p.interactionId},\n },\n msg: {} as Contact.AgentContact,\n },\n notifFail: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.PARTICIPANT_LEFT_CONFERENCE_FAILED}, // to be finalized\n },\n errId: 'Service.aqm.task.consultConference',\n },\n })),\n\n /*\n * Transfer conference\n */\n conferenceTransfer: aqm.req((p: {interactionId: string}) => ({\n url: `${TASK_API}${p.interactionId}${CONFERENCE_TRANSFER}`,\n data: {},\n host: WCC_API_GATEWAY,\n err,\n notifSuccess: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.PARTICIPANT_LEFT_CONFERENCE, interactionId: p.interactionId},\n },\n msg: {} as Contact.AgentContact,\n },\n notifFail: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.AGENT_CONFERENCE_TRANSFER_FAILED},\n },\n errId: 'Service.aqm.task.consultConference',\n },\n })),\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_types","require","_Utils","_constants","_constants2","_constants3","_types2","routingContact","aqm","accept","req","p","url","TASK_API","interactionId","host","WCC_API_GATEWAY","data","err","notifSuccess","bind","type","TASK_MESSAGE_TYPE","CC_EVENTS","AGENT_CONTACT_ASSIGNED","msg","notifFail","AGENT_CONTACT_ASSIGN_FAILED","errId","hold","HOLD","AGENT_CONTACT_HELD","AGENT_CONTACT_HOLD_FAILED","unHold","UNHOLD","AGENT_CONTACT_UNHELD","AGENT_CONTACT_UNHOLD_FAILED","pauseRecording","PAUSE","CONTACT_RECORDING_PAUSED","CONTACT_RECORDING_PAUSE_FAILED","resumeRecording","RESUME","CONTACT_RECORDING_RESUMED","CONTACT_RECORDING_RESUME_FAILED","consult","CONSULT","timeout","destinationType","DESTINATION_TYPE","QUEUE","TIMEOUT_REQ","AGENT_CONSULT_CREATED","AGENT_CTQ_FAILED","AGENT_CONSULT_FAILED","notifCancel","consultEnd","isConsult","isSecondaryEpDnAgent","queueId","CONSULT_END","AGENT_CTQ_CANCELLED","CONTACT_ENDED","AGENT_CONSULT_ENDED","AGENT_CONSULT_CONFERENCE_ENDED","AGENT_CTQ_CANCEL_FAILED","AGENT_CONSULT_END_FAILED","consultAccept","CONSULT_ACCEPT","AGENT_CONSULTING","blindTransfer","TRANSFER","AGENT_BLIND_TRANSFERRED","AGENT_BLIND_TRANSFER_FAILED","vteamTransfer","AGENT_VTEAM_TRANSFERRED","AGENT_VTEAM_TRANSFER_FAILED","consultTransfer","CONSULT_TRANSFER","AGENT_CONSULT_TRANSFERRED","AGENT_CONSULT_TRANSFERRING","AGENT_CONSULT_TRANSFER_FAILED","end","END","AGENT_WRAPUP","AGENT_CONTACT_END_FAILED","wrapup","WRAPUP","AGENT_WRAPPEDUP","AGENT_WRAPUP_FAILED","cancelTask","cancelCtq","consultConference","CONSULT_CONFERENCE","AGENT_CONSULT_CONFERENCED","AGENT_CONSULT_CONFERENCING","AGENT_CONSULT_CONFERENCE_FAILED","exitConference","CONFERENCE_EXIT","PARTICIPANT_LEFT_CONFERENCE","PARTICIPANT_LEFT_CONFERENCE_FAILED","conferenceTransfer","CONFERENCE_TRANSFER","AGENT_CONFERENCE_TRANSFER_FAILED"],"sources":["contact.ts"],"sourcesContent":["import {CC_EVENTS} from '../config/types';\nimport {createErrDetailsObject as err} from '../core/Utils';\nimport {WCC_API_GATEWAY} from '../constants';\nimport AqmReqs from '../core/aqm-reqs';\nimport {TIMEOUT_REQ} from '../core/constants';\nimport {\n CONSULT,\n CONSULT_ACCEPT,\n CONSULT_END,\n CONSULT_TRANSFER,\n END,\n HOLD,\n PAUSE,\n RESUME,\n TASK_API,\n TASK_MESSAGE_TYPE,\n TRANSFER,\n UNHOLD,\n WRAPUP,\n CONSULT_CONFERENCE,\n CONFERENCE_EXIT,\n CONFERENCE_TRANSFER,\n} from './constants';\nimport * as Contact from './types';\nimport {DESTINATION_TYPE} from './types';\n\nexport default function routingContact(aqm: AqmReqs) {\n return {\n /*\n * Accept incoming task\n */\n accept: aqm.req((p: {interactionId: string}) => ({\n url: `${TASK_API}${p.interactionId}/accept`,\n host: WCC_API_GATEWAY,\n data: {},\n err,\n notifSuccess: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.AGENT_CONTACT_ASSIGNED, interactionId: p.interactionId},\n },\n msg: {} as Contact.AgentContact,\n },\n notifFail: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.AGENT_CONTACT_ASSIGN_FAILED, interactionId: p.interactionId},\n },\n errId: 'Service.aqm.task.accept',\n },\n })),\n\n /*\n * Hold task\n */\n hold: aqm.req((p: {interactionId: string; data: Contact.HoldResumePayload}) => ({\n url: `${TASK_API}${p.interactionId}${HOLD}`,\n data: p.data,\n host: WCC_API_GATEWAY,\n err,\n notifSuccess: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.AGENT_CONTACT_HELD, interactionId: p.interactionId},\n },\n msg: {} as Contact.AgentContact,\n },\n notifFail: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.AGENT_CONTACT_HOLD_FAILED},\n },\n errId: 'Service.aqm.task.hold',\n },\n })),\n\n /*\n * Unhold task\n */\n unHold: aqm.req((p: {interactionId: string; data: Contact.HoldResumePayload}) => ({\n url: `${TASK_API}${p.interactionId}${UNHOLD}`,\n data: p.data,\n host: WCC_API_GATEWAY,\n err,\n notifSuccess: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.AGENT_CONTACT_UNHELD, interactionId: p.interactionId},\n },\n msg: {} as Contact.AgentContact,\n },\n notifFail: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.AGENT_CONTACT_UNHOLD_FAILED},\n },\n errId: 'Service.aqm.task.unHold',\n },\n })),\n\n /*\n * Pause Recording\n */\n pauseRecording: aqm.req((p: {interactionId: string}) => ({\n url: `${TASK_API}${p.interactionId}${PAUSE}`,\n data: {},\n host: WCC_API_GATEWAY,\n err,\n notifSuccess: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.CONTACT_RECORDING_PAUSED, interactionId: p.interactionId},\n },\n msg: {} as Contact.AgentContact,\n },\n notifFail: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.CONTACT_RECORDING_PAUSE_FAILED},\n },\n errId: 'Service.aqm.task.pauseRecording',\n },\n })),\n\n /*\n * Resume Recording\n */\n resumeRecording: aqm.req(\n (p: {interactionId: string; data: Contact.ResumeRecordingPayload}) => ({\n url: `${TASK_API}${p.interactionId}${RESUME}`,\n data: p.data,\n host: WCC_API_GATEWAY,\n err,\n notifSuccess: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.CONTACT_RECORDING_RESUMED, interactionId: p.interactionId},\n },\n msg: {} as Contact.AgentContact,\n },\n notifFail: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.CONTACT_RECORDING_RESUME_FAILED},\n },\n errId: 'Service.aqm.task.resumeRecording',\n },\n })\n ),\n\n /*\n * Consult contact\n */\n consult: aqm.req((p: {interactionId: string; data: Contact.ConsultPayload}) => ({\n url: `${TASK_API}${p.interactionId}${CONSULT}`,\n data: p.data,\n timeout:\n p.data && p.data.destinationType === DESTINATION_TYPE.QUEUE ? 'disabled' : TIMEOUT_REQ,\n host: WCC_API_GATEWAY,\n err,\n notifSuccess: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.AGENT_CONSULT_CREATED, interactionId: p.interactionId},\n },\n msg: {} as Contact.AgentContact,\n },\n notifFail: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {\n type:\n p.data && p.data.destinationType === DESTINATION_TYPE.QUEUE\n ? CC_EVENTS.AGENT_CTQ_FAILED\n : CC_EVENTS.AGENT_CONSULT_FAILED,\n },\n },\n errId: 'Service.aqm.task.consult',\n },\n notifCancel: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: 'AgentCtqCancelled', interactionId: p.interactionId},\n },\n msg: {} as Contact.AgentContact,\n },\n })),\n\n /*\n * Consult End\n */\n consultEnd: aqm.req((p: {interactionId: string; data: Contact.ConsultEndPayload}) => {\n // Setting false value for optional attribute\n const {isConsult, isSecondaryEpDnAgent = false, queueId} = p.data;\n\n return {\n url: `${TASK_API}${p.interactionId}${CONSULT_END}`,\n host: WCC_API_GATEWAY,\n data: queueId\n ? {\n queueId,\n }\n : {},\n err,\n notifSuccess: {\n bind: {\n type: 'RoutingMessage',\n data: {\n type: (() => {\n if (queueId) return CC_EVENTS.AGENT_CTQ_CANCELLED;\n if (isSecondaryEpDnAgent) return CC_EVENTS.CONTACT_ENDED;\n if (isConsult) return CC_EVENTS.AGENT_CONSULT_ENDED;\n\n return CC_EVENTS.AGENT_CONSULT_CONFERENCE_ENDED;\n })(),\n interactionId: p.interactionId,\n },\n },\n msg: {} as Contact.AgentContact,\n },\n notifFail: {\n bind: {\n type: 'RoutingMessage',\n data: {\n type: p.data.queueId\n ? CC_EVENTS.AGENT_CTQ_CANCEL_FAILED\n : CC_EVENTS.AGENT_CONSULT_END_FAILED,\n },\n },\n errId: p.data.queueId ? 'Service.aqm.task.cancelCtq' : 'Service.aqm.task.consultEnd',\n },\n };\n }),\n\n /*\n * Consult Accept contact\n */\n consultAccept: aqm.req((p: {interactionId: string}) => ({\n url: `${TASK_API}${p.interactionId}${CONSULT_ACCEPT}`,\n data: {},\n host: WCC_API_GATEWAY,\n err,\n notifSuccess: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.AGENT_CONSULTING, interactionId: p.interactionId},\n },\n msg: {} as Contact.AgentContact,\n },\n notifFail: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.AGENT_CONTACT_ASSIGN_FAILED},\n },\n errId: 'Service.aqm.task.consultAccept',\n },\n })),\n\n /*\n * BlindTransfer contact\n */\n blindTransfer: aqm.req((p: {interactionId: string; data: Contact.TransferPayLoad}) => ({\n url: `${TASK_API}${p.interactionId}${TRANSFER}`,\n data: p.data,\n host: WCC_API_GATEWAY,\n err,\n notifSuccess: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.AGENT_BLIND_TRANSFERRED, interactionId: p.interactionId},\n },\n msg: {} as Contact.AgentContact,\n },\n notifFail: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.AGENT_BLIND_TRANSFER_FAILED},\n },\n errId: 'Service.aqm.task.AgentBlindTransferFailedEvent',\n },\n })),\n\n /*\n * VteamTransfer contact\n */\n vteamTransfer: aqm.req((p: {interactionId: string; data: Contact.TransferPayLoad}) => ({\n url: `${TASK_API}${p.interactionId}${TRANSFER}`,\n data: p.data,\n host: WCC_API_GATEWAY,\n err,\n notifSuccess: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.AGENT_VTEAM_TRANSFERRED, interactionId: p.interactionId},\n },\n msg: {} as Contact.AgentContact,\n },\n notifFail: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.AGENT_VTEAM_TRANSFER_FAILED},\n },\n errId: 'Service.aqm.task.AgentVteamTransferFailed',\n },\n })),\n\n /*\n * Consult Transfer contact\n */\n consultTransfer: aqm.req(\n (p: {interactionId: string; data: Contact.ConsultTransferPayLoad}) => ({\n url: `${TASK_API}${p.interactionId}${CONSULT_TRANSFER}`,\n data: p.data,\n host: WCC_API_GATEWAY,\n err,\n notifSuccess: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {\n type: [CC_EVENTS.AGENT_CONSULT_TRANSFERRED, CC_EVENTS.AGENT_CONSULT_TRANSFERRING],\n interactionId: p.interactionId,\n },\n },\n msg: {} as Contact.AgentContact,\n },\n notifFail: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.AGENT_CONSULT_TRANSFER_FAILED},\n },\n errId: 'Service.aqm.task.AgentConsultTransferFailed',\n },\n })\n ),\n\n /*\n * End contact\n */\n end: aqm.req((p: {interactionId: string}) => ({\n url: `${TASK_API}${p.interactionId}${END}`,\n data: {},\n host: WCC_API_GATEWAY,\n err,\n notifSuccess: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.AGENT_WRAPUP, interactionId: p.interactionId},\n },\n msg: {} as Contact.AgentContact,\n },\n notifFail: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.AGENT_CONTACT_END_FAILED},\n },\n errId: 'Service.aqm.task.end',\n },\n })),\n\n /*\n * Wrapup contact\n */\n wrapup: aqm.req((p: {interactionId: string; data: Contact.WrapupPayLoad}) => ({\n url: `${TASK_API}${p.interactionId}${WRAPUP}`,\n data: p.data,\n host: WCC_API_GATEWAY,\n err,\n notifSuccess: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.AGENT_WRAPPEDUP, interactionId: p.interactionId},\n },\n msg: {} as Contact.AgentContact,\n },\n notifFail: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.AGENT_WRAPUP_FAILED},\n },\n errId: 'Service.aqm.task.wrapup',\n },\n })),\n\n /*\n * Cancel popover\n */\n cancelTask: aqm.req((p: {interactionId: string}) => ({\n url: `${TASK_API}${p.interactionId}${END}`,\n data: {},\n host: WCC_API_GATEWAY,\n err,\n notifSuccess: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.CONTACT_ENDED, interactionId: p.interactionId},\n },\n msg: {} as Contact.AgentContact,\n },\n notifFail: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.AGENT_CONTACT_END_FAILED},\n },\n errId: 'Service.aqm.task.end',\n },\n })),\n\n /*\n * Cancel Ctq request\n */\n cancelCtq: aqm.req((p: {interactionId: string; data: Contact.cancelCtq}) => ({\n url: `${TASK_API}${p.interactionId}/cancelCtq`,\n data: p.data,\n host: WCC_API_GATEWAY,\n err,\n notifSuccess: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: 'AgentCtqCancelled', interactionId: p.interactionId},\n },\n msg: {} as Contact.AgentContact,\n },\n notifFail: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: 'AgentCtqCancelFailed'},\n },\n errId: 'Service.aqm.task.cancelCtq',\n },\n })),\n\n /*\n * Start consult conference\n */\n consultConference: aqm.req(\n (p: {interactionId: string; data: Contact.ConsultConferenceData}) => ({\n url: `${TASK_API}${p.interactionId}${CONSULT_CONFERENCE}`,\n data: p.data,\n host: WCC_API_GATEWAY,\n err,\n notifSuccess: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {\n type: [CC_EVENTS.AGENT_CONSULT_CONFERENCED, CC_EVENTS.AGENT_CONSULT_CONFERENCING],\n interactionId: p.interactionId,\n }, // any of the two events can be received for API success event\n },\n msg: {} as Contact.AgentContact,\n },\n notifFail: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.AGENT_CONSULT_CONFERENCE_FAILED},\n },\n errId: 'Service.aqm.task.consultConference',\n },\n })\n ),\n\n /*\n * Exit conference\n */\n exitConference: aqm.req((p: {interactionId: string}) => ({\n url: `${TASK_API}${p.interactionId}${CONFERENCE_EXIT}`,\n data: {},\n host: WCC_API_GATEWAY,\n err,\n notifSuccess: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.PARTICIPANT_LEFT_CONFERENCE, interactionId: p.interactionId},\n },\n msg: {} as Contact.AgentContact,\n },\n notifFail: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.PARTICIPANT_LEFT_CONFERENCE_FAILED}, // to be finalized\n },\n errId: 'Service.aqm.task.consultConference',\n },\n })),\n\n /*\n * Transfer conference\n */\n conferenceTransfer: aqm.req((p: {interactionId: string}) => ({\n url: `${TASK_API}${p.interactionId}${CONFERENCE_TRANSFER}`,\n data: {},\n host: WCC_API_GATEWAY,\n err,\n notifSuccess: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.PARTICIPANT_LEFT_CONFERENCE, interactionId: p.interactionId},\n },\n msg: {} as Contact.AgentContact,\n },\n notifFail: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.AGENT_CONFERENCE_TRANSFER_FAILED},\n },\n errId: 'Service.aqm.task.consultConference',\n },\n })),\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_types","require","_constants","_Utils","_constants2","aqmDialer","aqm","startOutdial","req","p","url","TASK_API","host","WCC_API_GATEWAY","data","err","notifSuccess","bind","type","TASK_MESSAGE_TYPE","CC_EVENTS","AGENT_OFFER_CONTACT","msg","notifFail","AGENT_OUTBOUND_FAILED","errId"],"sources":["dialer.ts"],"sourcesContent":["import {CC_EVENTS} from '../config/types';\nimport {WCC_API_GATEWAY} from '../constants';\nimport {createErrDetailsObject as err} from '../core/Utils';\nimport {TASK_MESSAGE_TYPE, TASK_API} from './constants';\nimport * as Contact from './types';\nimport AqmReqs from '../core/aqm-reqs';\n\n/**\n * Returns an object with AQM dialer functions used for outbound contact handling.\n *\n * @param {AqmReqs} aqm - An instance of AQM request handler.\n * @returns {{\n * startOutdial: (params: {data: Contact.DialerPayload}) => Promise<any>\n * }} Object containing methods for outbound dialing.\n * @ignore\n */\nexport default function aqmDialer(aqm: AqmReqs) {\n return {\n /**\n * Initiates an outbound contact (outdial) request.\n *\n * @param {Object} p - Parameters object.\n * @param {Contact.DialerPayload} p.data - Payload for the outbound call.\n * @returns {Promise<any>} A promise that resolves or rejects based on the outbound call response.\n *\n * Emits:\n * - `CC_EVENTS.AGENT_OFFER_CONTACT` on success\n * - `CC_EVENTS.AGENT_OUTBOUND_FAILED` on failure\n * @ignore\n */\n startOutdial: aqm.req((p: {data: Contact.DialerPayload}) => ({\n url: `${TASK_API}`,\n host: WCC_API_GATEWAY,\n data: p.data,\n err,\n notifSuccess: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.AGENT_OFFER_CONTACT},\n },\n msg: {} as Contact.AgentContact,\n },\n notifFail: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.AGENT_OUTBOUND_FAILED},\n },\n errId: 'Service.aqm.dialer.startOutdial',\n },\n })),\n };\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,WAAA,GAAAH,OAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASI,SAASA,CAACC,GAAY,EAAE;EAC9C,OAAO;IACL;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACIC,YAAY,EAAED,GAAG,CAACE,GAAG,CAAEC,CAAgC,KAAM;MAC3DC,GAAG,
|
|
1
|
+
{"version":3,"names":["_types","require","_constants","_Utils","_constants2","aqmDialer","aqm","startOutdial","req","p","url","TASK_API","host","WCC_API_GATEWAY","data","err","notifSuccess","bind","type","TASK_MESSAGE_TYPE","CC_EVENTS","AGENT_OFFER_CONTACT","msg","notifFail","AGENT_OUTBOUND_FAILED","errId"],"sources":["dialer.ts"],"sourcesContent":["import {CC_EVENTS} from '../config/types';\nimport {WCC_API_GATEWAY} from '../constants';\nimport {createErrDetailsObject as err} from '../core/Utils';\nimport {TASK_MESSAGE_TYPE, TASK_API} from './constants';\nimport * as Contact from './types';\nimport AqmReqs from '../core/aqm-reqs';\n\n/**\n * Returns an object with AQM dialer functions used for outbound contact handling.\n *\n * @param {AqmReqs} aqm - An instance of AQM request handler.\n * @returns {{\n * startOutdial: (params: {data: Contact.DialerPayload}) => Promise<any>\n * }} Object containing methods for outbound dialing.\n * @ignore\n */\nexport default function aqmDialer(aqm: AqmReqs) {\n return {\n /**\n * Initiates an outbound contact (outdial) request.\n *\n * @param {Object} p - Parameters object.\n * @param {Contact.DialerPayload} p.data - Payload for the outbound call.\n * @returns {Promise<any>} A promise that resolves or rejects based on the outbound call response.\n *\n * Emits:\n * - `CC_EVENTS.AGENT_OFFER_CONTACT` on success\n * - `CC_EVENTS.AGENT_OUTBOUND_FAILED` on failure\n * @ignore\n */\n startOutdial: aqm.req((p: {data: Contact.DialerPayload}) => ({\n url: `${TASK_API}`,\n host: WCC_API_GATEWAY,\n data: p.data,\n err,\n notifSuccess: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.AGENT_OFFER_CONTACT},\n },\n msg: {} as Contact.AgentContact,\n },\n notifFail: {\n bind: {\n type: TASK_MESSAGE_TYPE,\n data: {type: CC_EVENTS.AGENT_OUTBOUND_FAILED},\n },\n errId: 'Service.aqm.dialer.startOutdial',\n },\n })),\n };\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,WAAA,GAAAH,OAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASI,SAASA,CAACC,GAAY,EAAE;EAC9C,OAAO;IACL;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACIC,YAAY,EAAED,GAAG,CAACE,GAAG,CAAEC,CAAgC,KAAM;MAC3DC,GAAG,EAAE,GAAGC,oBAAQ,EAAE;MAClBC,IAAI,EAAEC,0BAAe;MACrBC,IAAI,EAAEL,CAAC,CAACK,IAAI;MACZC,GAAG,EAAHA,6BAAG;MACHC,YAAY,EAAE;QACZC,IAAI,EAAE;UACJC,IAAI,EAAEC,6BAAiB;UACvBL,IAAI,EAAE;YAACI,IAAI,EAAEE,gBAAS,CAACC;UAAmB;QAC5C,CAAC;QACDC,GAAG,EAAE,CAAC;MACR,CAAC;MACDC,SAAS,EAAE;QACTN,IAAI,EAAE;UACJC,IAAI,EAAEC,6BAAiB;UACvBL,IAAI,EAAE;YAACI,IAAI,EAAEE,gBAAS,CAACI;UAAqB;QAC9C,CAAC;QACDC,KAAK,EAAE;MACT;IACF,CAAC,CAAC;EACJ,CAAC;AACH","ignoreList":[]}
|
|
@@ -15,7 +15,7 @@ var _types2 = require("./types");
|
|
|
15
15
|
var _MetricsManager = _interopRequireDefault(require("../../metrics/MetricsManager"));
|
|
16
16
|
var _constants3 = require("../../metrics/constants");
|
|
17
17
|
var _AutoWrapup = _interopRequireDefault(require("./AutoWrapup"));
|
|
18
|
-
function _interopRequireDefault(
|
|
18
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
19
19
|
/**
|
|
20
20
|
* Task class represents a contact center task/interaction that can be managed by an agent.
|
|
21
21
|
* This class provides all the necessary methods to manage tasks in a contact center environment,
|
|
@@ -1223,27 +1223,27 @@ class Task extends _events.default {
|
|
|
1223
1223
|
* ```
|
|
1224
1224
|
*/
|
|
1225
1225
|
async consultTransfer(consultTransferPayload) {
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
const destAgentId = (0, _Utils.getDestinationAgentId)(this.data.interaction?.participants, this.data.agentId);
|
|
1226
|
+
// Get the destination agent ID using custom logic from participants data
|
|
1227
|
+
const destAgentId = (0, _Utils.calculateDestAgentId)(this.data.interaction, this.agentId);
|
|
1229
1228
|
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
// Obtain payload based on desktop logic using TaskData
|
|
1240
|
-
const finalDestinationType = (0, _Utils.deriveConsultTransferDestinationType)(this.data);
|
|
1229
|
+
// Resolve the target id (queue consult transfers go to the accepted agent)
|
|
1230
|
+
if (!destAgentId) {
|
|
1231
|
+
throw new Error('No agent has accepted this queue consult yet');
|
|
1232
|
+
}
|
|
1233
|
+
_loggerProxy.default.info(`Initiating consult transfer to ${consultTransferPayload?.to || destAgentId}`, {
|
|
1234
|
+
module: _constants.TASK_FILE,
|
|
1235
|
+
method: _constants2.METHODS.CONSULT_TRANSFER,
|
|
1236
|
+
interactionId: this.data.interactionId
|
|
1237
|
+
});
|
|
1241
1238
|
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1239
|
+
// Derive destination type from the participant's type property
|
|
1240
|
+
const destType = (0, _Utils.calculateDestType)(this.data.interaction, this.agentId);
|
|
1241
|
+
// By default we always use the computed destAgentId as the target id
|
|
1242
|
+
const consultTransferRequest = {
|
|
1243
|
+
to: destAgentId,
|
|
1244
|
+
destinationType: destType
|
|
1245
|
+
};
|
|
1246
|
+
try {
|
|
1247
1247
|
const result = await this.contact.consultTransfer({
|
|
1248
1248
|
interactionId: this.data.interactionId,
|
|
1249
1249
|
data: consultTransferRequest
|
|
@@ -1271,12 +1271,10 @@ class Task extends _events.default {
|
|
|
1271
1271
|
errorData: err.data?.errorData,
|
|
1272
1272
|
reasonCode: err.data?.reasonCode
|
|
1273
1273
|
};
|
|
1274
|
-
const failedDestinationType = (0, _Utils.deriveConsultTransferDestinationType)(this.data);
|
|
1275
|
-
const failedDestAgentId = (0, _Utils.getDestinationAgentId)(this.data.interaction?.participants, this.data.agentId);
|
|
1276
1274
|
this.metricsManager.trackEvent(_constants3.METRIC_EVENT_NAMES.TASK_TRANSFER_FAILED, {
|
|
1277
1275
|
taskId: this.data.interactionId,
|
|
1278
|
-
destination:
|
|
1279
|
-
destinationType:
|
|
1276
|
+
destination: destAgentId || '',
|
|
1277
|
+
destinationType: destType,
|
|
1280
1278
|
isConsultTransfer: true,
|
|
1281
1279
|
error: error.toString(),
|
|
1282
1280
|
...taskErrorProps,
|
|
@@ -1307,30 +1305,42 @@ class Task extends _events.default {
|
|
|
1307
1305
|
* ```
|
|
1308
1306
|
*/
|
|
1309
1307
|
async consultConference() {
|
|
1308
|
+
// Get the destination agent ID dynamically from participants
|
|
1309
|
+
// This handles multi-party conference scenarios, CBT (Capacity Based Team), and EP-DN cases
|
|
1310
|
+
const destAgentId = (0, _Utils.calculateDestAgentId)(this.data.interaction, this.agentId);
|
|
1311
|
+
|
|
1312
|
+
// Validate that we have a destination agent (for queue consult scenarios)
|
|
1313
|
+
if (!destAgentId) {
|
|
1314
|
+
throw new Error('No agent has accepted this queue consult yet');
|
|
1315
|
+
}
|
|
1316
|
+
|
|
1317
|
+
// Get the destination agent ID for fetching destination type
|
|
1318
|
+
// This helps determine the correct participant type for CBT (Capacity Based Team) and EP-DN scenarios
|
|
1319
|
+
const destAgentType = (0, _Utils.calculateDestType)(this.data.interaction, this.agentId);
|
|
1320
|
+
|
|
1310
1321
|
// Extract consultation conference data from task data (used in both try and catch)
|
|
1311
1322
|
const consultationData = {
|
|
1312
1323
|
agentId: this.agentId,
|
|
1313
|
-
|
|
1314
|
-
destinationType: this.data.destinationType || 'agent'
|
|
1324
|
+
to: destAgentId,
|
|
1325
|
+
destinationType: destAgentType || this.data.destinationType || 'agent'
|
|
1315
1326
|
};
|
|
1316
1327
|
try {
|
|
1317
|
-
_loggerProxy.default.info(`Initiating consult conference to ${
|
|
1328
|
+
_loggerProxy.default.info(`Initiating consult conference to ${destAgentId}`, {
|
|
1318
1329
|
module: _constants.TASK_FILE,
|
|
1319
1330
|
method: _constants2.METHODS.CONSULT_CONFERENCE,
|
|
1320
1331
|
interactionId: this.data.interactionId
|
|
1321
1332
|
});
|
|
1322
|
-
const paramsDataForConferenceV2 = (0, _Utils.buildConsultConferenceParamData)(consultationData, this.data.interactionId);
|
|
1323
1333
|
const response = await this.contact.consultConference({
|
|
1324
|
-
interactionId:
|
|
1325
|
-
data:
|
|
1334
|
+
interactionId: this.data.interactionId,
|
|
1335
|
+
data: consultationData
|
|
1326
1336
|
});
|
|
1327
1337
|
|
|
1328
1338
|
// Track success metrics (following consultTransfer pattern)
|
|
1329
1339
|
this.metricsManager.trackEvent(_constants3.METRIC_EVENT_NAMES.TASK_CONFERENCE_START_SUCCESS, {
|
|
1330
1340
|
taskId: this.data.interactionId,
|
|
1331
|
-
destination:
|
|
1332
|
-
destinationType:
|
|
1333
|
-
agentId:
|
|
1341
|
+
destination: consultationData.to,
|
|
1342
|
+
destinationType: consultationData.destinationType,
|
|
1343
|
+
agentId: consultationData.agentId,
|
|
1334
1344
|
..._MetricsManager.default.getCommonTrackingFieldForAQMResponse(response)
|
|
1335
1345
|
}, ['operational', 'behavioral', 'business']);
|
|
1336
1346
|
_loggerProxy.default.log(`Consult conference started successfully`, {
|
|
@@ -1348,15 +1358,11 @@ class Task extends _events.default {
|
|
|
1348
1358
|
errorData: err.data?.errorData,
|
|
1349
1359
|
reasonCode: err.data?.reasonCode
|
|
1350
1360
|
};
|
|
1351
|
-
|
|
1352
|
-
// Track failure metrics (following consultTransfer pattern)
|
|
1353
|
-
// Build conference data for error tracking using extracted data
|
|
1354
|
-
const failedParamsData = (0, _Utils.buildConsultConferenceParamData)(consultationData, this.data.interactionId);
|
|
1355
1361
|
this.metricsManager.trackEvent(_constants3.METRIC_EVENT_NAMES.TASK_CONFERENCE_START_FAILED, {
|
|
1356
1362
|
taskId: this.data.interactionId,
|
|
1357
|
-
destination:
|
|
1358
|
-
destinationType:
|
|
1359
|
-
agentId:
|
|
1363
|
+
destination: consultationData.to,
|
|
1364
|
+
destinationType: consultationData.destinationType,
|
|
1365
|
+
agentId: consultationData.agentId,
|
|
1360
1366
|
error: error.toString(),
|
|
1361
1367
|
...taskErrorProps,
|
|
1362
1368
|
..._MetricsManager.default.getCommonTrackingFieldForAQMResponseFailed(error.details || {})
|