@webex/contact-center 3.9.0 → 3.10.0-next.10
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 +207 -47
- package/dist/cc.js.map +1 -1
- package/dist/constants.js +1 -0
- package/dist/constants.js.map +1 -1
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/logger-proxy.js +24 -1
- package/dist/logger-proxy.js.map +1 -1
- package/dist/metrics/MetricsManager.js +1 -1
- package/dist/metrics/MetricsManager.js.map +1 -1
- package/dist/metrics/behavioral-events.js +89 -0
- package/dist/metrics/behavioral-events.js.map +1 -1
- package/dist/metrics/constants.js +32 -2
- package/dist/metrics/constants.js.map +1 -1
- package/dist/services/AddressBook.js +271 -0
- package/dist/services/AddressBook.js.map +1 -0
- package/dist/services/EntryPoint.js +227 -0
- package/dist/services/EntryPoint.js.map +1 -0
- package/dist/services/Queue.js +261 -0
- package/dist/services/Queue.js.map +1 -0
- package/dist/services/config/constants.js +36 -2
- package/dist/services/config/constants.js.map +1 -1
- package/dist/services/config/index.js +29 -21
- package/dist/services/config/index.js.map +1 -1
- package/dist/services/config/types.js +33 -1
- package/dist/services/config/types.js.map +1 -1
- package/dist/services/core/GlobalTypes.js.map +1 -1
- package/dist/services/core/Utils.js +181 -2
- package/dist/services/core/Utils.js.map +1 -1
- package/dist/services/core/aqm-reqs.js +0 -4
- 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/websocket/WebSocketManager.js +0 -4
- package/dist/services/core/websocket/WebSocketManager.js.map +1 -1
- package/dist/services/task/TaskManager.js +151 -7
- package/dist/services/task/TaskManager.js.map +1 -1
- package/dist/services/task/TaskUtils.js +104 -0
- package/dist/services/task/TaskUtils.js.map +1 -0
- package/dist/services/task/constants.js +26 -1
- package/dist/services/task/constants.js.map +1 -1
- package/dist/services/task/contact.js +86 -0
- package/dist/services/task/contact.js.map +1 -1
- package/dist/services/task/index.js +428 -91
- package/dist/services/task/index.js.map +1 -1
- package/dist/services/task/types.js +12 -0
- package/dist/services/task/types.js.map +1 -1
- package/dist/types/cc.d.ts +121 -35
- package/dist/types/constants.d.ts +1 -0
- package/dist/types/index.d.ts +4 -3
- package/dist/types/metrics/constants.d.ts +25 -1
- package/dist/types/services/AddressBook.d.ts +74 -0
- package/dist/types/services/EntryPoint.d.ts +67 -0
- package/dist/types/services/Queue.d.ts +76 -0
- package/dist/types/services/config/constants.d.ts +35 -1
- package/dist/types/services/config/index.d.ts +6 -9
- package/dist/types/services/config/types.d.ts +79 -58
- package/dist/types/services/core/GlobalTypes.d.ts +25 -0
- package/dist/types/services/core/Utils.d.ts +55 -1
- package/dist/types/services/core/constants.d.ts +14 -0
- package/dist/types/services/task/TaskUtils.d.ts +42 -0
- package/dist/types/services/task/constants.d.ts +23 -0
- package/dist/types/services/task/contact.d.ts +10 -0
- package/dist/types/services/task/index.d.ts +85 -4
- package/dist/types/services/task/types.d.ts +245 -21
- package/dist/types/types.d.ts +162 -0
- package/dist/types/utils/PageCache.d.ts +173 -0
- package/dist/types.js +17 -0
- package/dist/types.js.map +1 -1
- package/dist/utils/PageCache.js +192 -0
- package/dist/utils/PageCache.js.map +1 -0
- package/dist/webex.js +1 -1
- package/package.json +10 -9
- package/src/cc.ts +232 -52
- package/src/constants.ts +1 -0
- package/src/index.ts +17 -2
- package/src/logger-proxy.ts +24 -1
- package/src/metrics/MetricsManager.ts +1 -1
- package/src/metrics/behavioral-events.ts +94 -0
- package/src/metrics/constants.ts +37 -1
- package/src/services/AddressBook.ts +291 -0
- package/src/services/EntryPoint.ts +241 -0
- package/src/services/Queue.ts +277 -0
- package/src/services/config/constants.ts +42 -2
- package/src/services/config/index.ts +30 -30
- package/src/services/config/types.ts +59 -58
- package/src/services/core/GlobalTypes.ts +27 -0
- package/src/services/core/Utils.ts +215 -1
- package/src/services/core/aqm-reqs.ts +0 -5
- package/src/services/core/constants.ts +16 -0
- package/src/services/core/websocket/WebSocketManager.ts +0 -4
- package/src/services/task/TaskManager.ts +182 -9
- package/src/services/task/TaskUtils.ts +113 -0
- package/src/services/task/constants.ts +25 -0
- package/src/services/task/contact.ts +80 -0
- package/src/services/task/index.ts +497 -71
- package/src/services/task/types.ts +264 -20
- package/src/types.ts +180 -0
- package/src/utils/PageCache.ts +252 -0
- package/test/unit/spec/cc.ts +282 -85
- package/test/unit/spec/metrics/MetricsManager.ts +0 -1
- package/test/unit/spec/metrics/behavioral-events.ts +42 -0
- package/test/unit/spec/services/AddressBook.ts +332 -0
- package/test/unit/spec/services/EntryPoint.ts +259 -0
- package/test/unit/spec/services/Queue.ts +323 -0
- package/test/unit/spec/services/config/index.ts +279 -65
- package/test/unit/spec/services/core/Utils.ts +282 -1
- package/test/unit/spec/services/core/aqm-reqs.ts +1 -3
- package/test/unit/spec/services/core/websocket/WebSocketManager.ts +0 -4
- package/test/unit/spec/services/task/TaskManager.ts +760 -2
- package/test/unit/spec/services/task/TaskUtils.ts +131 -0
- package/test/unit/spec/services/task/contact.ts +31 -1
- package/test/unit/spec/services/task/index.ts +873 -163
- package/umd/contact-center.min.js +2 -2
- package/umd/contact-center.min.js.map +1 -1
|
@@ -370,6 +370,150 @@ export enum TASK_EVENTS {
|
|
|
370
370
|
* ```
|
|
371
371
|
*/
|
|
372
372
|
TASK_OFFER_CONTACT = 'task:offerContact',
|
|
373
|
+
|
|
374
|
+
/**
|
|
375
|
+
* Triggered when a conference is being established
|
|
376
|
+
* @example
|
|
377
|
+
* ```typescript
|
|
378
|
+
* task.on(TASK_EVENTS.TASK_CONFERENCE_ESTABLISHING, (task: ITask) => {
|
|
379
|
+
* console.log('Conference establishing:', task.data.interactionId);
|
|
380
|
+
* // Handle conference setup in progress
|
|
381
|
+
* });
|
|
382
|
+
* ```
|
|
383
|
+
*/
|
|
384
|
+
TASK_CONFERENCE_ESTABLISHING = 'task:conferenceEstablishing',
|
|
385
|
+
|
|
386
|
+
/**
|
|
387
|
+
* Triggered when a conference is started successfully
|
|
388
|
+
* @example
|
|
389
|
+
* ```typescript
|
|
390
|
+
* task.on(TASK_EVENTS.TASK_CONFERENCE_STARTED, (task: ITask) => {
|
|
391
|
+
* console.log('Conference started:', task.data.interactionId);
|
|
392
|
+
* // Handle conference start
|
|
393
|
+
* });
|
|
394
|
+
* ```
|
|
395
|
+
*/
|
|
396
|
+
TASK_CONFERENCE_STARTED = 'task:conferenceStarted',
|
|
397
|
+
|
|
398
|
+
/**
|
|
399
|
+
* Triggered when a conference fails to start
|
|
400
|
+
* @example
|
|
401
|
+
* ```typescript
|
|
402
|
+
* task.on(TASK_EVENTS.TASK_CONFERENCE_FAILED, (task: ITask) => {
|
|
403
|
+
* console.log('Conference failed:', task.data.interactionId);
|
|
404
|
+
* // Handle conference failure
|
|
405
|
+
* });
|
|
406
|
+
* ```
|
|
407
|
+
*/
|
|
408
|
+
TASK_CONFERENCE_FAILED = 'task:conferenceFailed',
|
|
409
|
+
|
|
410
|
+
/**
|
|
411
|
+
* Triggered when a conference is ended successfully
|
|
412
|
+
* @example
|
|
413
|
+
* ```typescript
|
|
414
|
+
* task.on(TASK_EVENTS.TASK_CONFERENCE_ENDED, (task: ITask) => {
|
|
415
|
+
* console.log('Conference ended:', task.data.interactionId);
|
|
416
|
+
* // Handle conference end
|
|
417
|
+
* });
|
|
418
|
+
* ```
|
|
419
|
+
*/
|
|
420
|
+
TASK_CONFERENCE_ENDED = 'task:conferenceEnded',
|
|
421
|
+
|
|
422
|
+
/**
|
|
423
|
+
* Triggered when a participant joins the conference
|
|
424
|
+
* @example
|
|
425
|
+
* ```typescript
|
|
426
|
+
* task.on(TASK_EVENTS.TASK_PARTICIPANT_JOINED, (task: ITask) => {
|
|
427
|
+
* console.log('Participant joined conference:', task.data.interactionId);
|
|
428
|
+
* // Handle participant joining
|
|
429
|
+
* });
|
|
430
|
+
* ```
|
|
431
|
+
*/
|
|
432
|
+
TASK_PARTICIPANT_JOINED = 'task:participantJoined',
|
|
433
|
+
|
|
434
|
+
/**
|
|
435
|
+
* Triggered when a participant leaves the conference
|
|
436
|
+
* @example
|
|
437
|
+
* ```typescript
|
|
438
|
+
* task.on(TASK_EVENTS.TASK_PARTICIPANT_LEFT, (task: ITask) => {
|
|
439
|
+
* console.log('Participant left conference:', task.data.interactionId);
|
|
440
|
+
* // Handle participant leaving
|
|
441
|
+
* });
|
|
442
|
+
* ```
|
|
443
|
+
*/
|
|
444
|
+
TASK_PARTICIPANT_LEFT = 'task:participantLeft',
|
|
445
|
+
|
|
446
|
+
/**
|
|
447
|
+
* Triggered when conference transfer is successful
|
|
448
|
+
* @example
|
|
449
|
+
* ```typescript
|
|
450
|
+
* task.on(TASK_EVENTS.TASK_CONFERENCE_TRANSFERRED, (task: ITask) => {
|
|
451
|
+
* console.log('Conference transferred:', task.data.interactionId);
|
|
452
|
+
* // Handle successful conference transfer
|
|
453
|
+
* });
|
|
454
|
+
* ```
|
|
455
|
+
*/
|
|
456
|
+
TASK_CONFERENCE_TRANSFERRED = 'task:conferenceTransferred',
|
|
457
|
+
|
|
458
|
+
/**
|
|
459
|
+
* Triggered when conference transfer fails
|
|
460
|
+
* @example
|
|
461
|
+
* ```typescript
|
|
462
|
+
* task.on(TASK_EVENTS.TASK_CONFERENCE_TRANSFER_FAILED, (task: ITask) => {
|
|
463
|
+
* console.log('Conference transfer failed:', task.data.interactionId);
|
|
464
|
+
* // Handle failed conference transfer
|
|
465
|
+
* });
|
|
466
|
+
* ```
|
|
467
|
+
*/
|
|
468
|
+
TASK_CONFERENCE_TRANSFER_FAILED = 'task:conferenceTransferFailed',
|
|
469
|
+
|
|
470
|
+
/**
|
|
471
|
+
* Triggered when ending a conference fails
|
|
472
|
+
* @example
|
|
473
|
+
* ```typescript
|
|
474
|
+
* task.on(TASK_EVENTS.TASK_CONFERENCE_END_FAILED, (task: ITask) => {
|
|
475
|
+
* console.log('Conference end failed:', task.data.interactionId);
|
|
476
|
+
* // Handle failed conference end
|
|
477
|
+
* });
|
|
478
|
+
* ```
|
|
479
|
+
*/
|
|
480
|
+
TASK_CONFERENCE_END_FAILED = 'task:conferenceEndFailed',
|
|
481
|
+
|
|
482
|
+
/**
|
|
483
|
+
* Triggered when participant exit from conference fails
|
|
484
|
+
* @example
|
|
485
|
+
* ```typescript
|
|
486
|
+
* task.on(TASK_EVENTS.TASK_PARTICIPANT_LEFT_FAILED, (task: ITask) => {
|
|
487
|
+
* console.log('Participant failed to leave conference:', task.data.interactionId);
|
|
488
|
+
* // Handle failed participant exit
|
|
489
|
+
* });
|
|
490
|
+
* ```
|
|
491
|
+
*/
|
|
492
|
+
TASK_PARTICIPANT_LEFT_FAILED = 'task:participantLeftFailed',
|
|
493
|
+
|
|
494
|
+
/**
|
|
495
|
+
* Triggered when a contact is merged
|
|
496
|
+
* @example
|
|
497
|
+
* ```typescript
|
|
498
|
+
* task.on(TASK_EVENTS.TASK_MERGED, (task: ITask) => {
|
|
499
|
+
* console.log('Contact merged:', task.data.interactionId);
|
|
500
|
+
* // Handle contact merge
|
|
501
|
+
* });
|
|
502
|
+
* ```
|
|
503
|
+
*/
|
|
504
|
+
TASK_MERGED = 'task:merged',
|
|
505
|
+
|
|
506
|
+
/**
|
|
507
|
+
* Triggered when a participant enters post-call activity state
|
|
508
|
+
* @example
|
|
509
|
+
* ```typescript
|
|
510
|
+
* task.on(TASK_EVENTS.TASK_POST_CALL_ACTIVITY, (task: ITask) => {
|
|
511
|
+
* console.log('Participant in post-call activity:', task.data.interactionId);
|
|
512
|
+
* // Handle post-call activity
|
|
513
|
+
* });
|
|
514
|
+
* ```
|
|
515
|
+
*/
|
|
516
|
+
TASK_POST_CALL_ACTIVITY = 'task:postCallActivity',
|
|
373
517
|
}
|
|
374
518
|
|
|
375
519
|
/**
|
|
@@ -613,6 +757,8 @@ export type TaskData = {
|
|
|
613
757
|
isConsulted?: boolean;
|
|
614
758
|
/** Indicates if the task is in conference state */
|
|
615
759
|
isConferencing: boolean;
|
|
760
|
+
/** Indicates if a conference is currently in progress (2+ active agents) */
|
|
761
|
+
isConferenceInProgress?: boolean;
|
|
616
762
|
/** Identifier of agent who last updated the task */
|
|
617
763
|
updatedBy?: string;
|
|
618
764
|
/** Type of destination for transfer/consult */
|
|
@@ -635,6 +781,8 @@ export type TaskData = {
|
|
|
635
781
|
isWebCallMute?: boolean;
|
|
636
782
|
/** Identifier for reservation interaction */
|
|
637
783
|
reservationInteractionId?: string;
|
|
784
|
+
/** Identifier for the reserved agent channel (used for campaign tasks) */
|
|
785
|
+
reservedAgentChannelId?: string;
|
|
638
786
|
/** Indicates if wrap-up is required for this task */
|
|
639
787
|
wrapUpRequired?: boolean;
|
|
640
788
|
};
|
|
@@ -931,6 +1079,8 @@ export type DialerPayload = {
|
|
|
931
1079
|
mediaType: 'telephony' | 'chat' | 'social' | 'email';
|
|
932
1080
|
/** The outbound type for the task */
|
|
933
1081
|
outboundType: 'OUTDIAL' | 'CALLBACK' | 'EXECUTE_FLOW';
|
|
1082
|
+
/** The Outdial ANI number that will be used while making a call to the customer. */
|
|
1083
|
+
origin: string;
|
|
934
1084
|
};
|
|
935
1085
|
|
|
936
1086
|
/**
|
|
@@ -1000,16 +1150,16 @@ export interface ITask extends EventEmitter {
|
|
|
1000
1150
|
autoWrapup?: AutoWrapup;
|
|
1001
1151
|
|
|
1002
1152
|
/**
|
|
1003
|
-
*
|
|
1004
|
-
* This method stops the auto-wrapup process if it is currently active
|
|
1153
|
+
* Cancels the auto-wrapup timer for the task.
|
|
1154
|
+
* This method stops the auto-wrapup process if it is currently active.
|
|
1005
1155
|
* Note: This is supported only in single session mode. Not supported in multi-session mode.
|
|
1006
1156
|
* @returns void
|
|
1007
1157
|
*/
|
|
1008
1158
|
cancelAutoWrapupTimer(): void;
|
|
1009
1159
|
|
|
1010
1160
|
/**
|
|
1011
|
-
* Deregisters all web call event listeners
|
|
1012
|
-
* Used when cleaning up task resources
|
|
1161
|
+
* Deregisters all web call event listeners.
|
|
1162
|
+
* Used when cleaning up task resources.
|
|
1013
1163
|
* @ignore
|
|
1014
1164
|
*/
|
|
1015
1165
|
unregisterWebCallListeners(): void;
|
|
@@ -1029,7 +1179,7 @@ export interface ITask extends EventEmitter {
|
|
|
1029
1179
|
* @returns Promise<TaskResponse>
|
|
1030
1180
|
* @example
|
|
1031
1181
|
* ```typescript
|
|
1032
|
-
* task.accept();
|
|
1182
|
+
* await task.accept();
|
|
1033
1183
|
* ```
|
|
1034
1184
|
*/
|
|
1035
1185
|
accept(): Promise<TaskResponse>;
|
|
@@ -1039,48 +1189,58 @@ export interface ITask extends EventEmitter {
|
|
|
1039
1189
|
* @returns Promise<TaskResponse>
|
|
1040
1190
|
* @example
|
|
1041
1191
|
* ```typescript
|
|
1042
|
-
* task.decline();
|
|
1192
|
+
* await task.decline();
|
|
1043
1193
|
* ```
|
|
1044
1194
|
*/
|
|
1045
1195
|
decline(): Promise<TaskResponse>;
|
|
1046
1196
|
|
|
1047
1197
|
/**
|
|
1048
|
-
* Places the current task on hold
|
|
1198
|
+
* Places the current task on hold.
|
|
1199
|
+
* @param mediaResourceId - Optional media resource ID to use for the hold operation. If not provided, uses the task's current mediaResourceId
|
|
1049
1200
|
* @returns Promise<TaskResponse>
|
|
1050
1201
|
* @example
|
|
1051
1202
|
* ```typescript
|
|
1052
|
-
*
|
|
1203
|
+
* // Hold with default mediaResourceId
|
|
1204
|
+
* await task.hold();
|
|
1205
|
+
*
|
|
1206
|
+
* // Hold with custom mediaResourceId
|
|
1207
|
+
* await task.hold('custom-media-resource-id');
|
|
1053
1208
|
* ```
|
|
1054
1209
|
*/
|
|
1055
|
-
hold(): Promise<TaskResponse>;
|
|
1210
|
+
hold(mediaResourceId?: string): Promise<TaskResponse>;
|
|
1056
1211
|
|
|
1057
1212
|
/**
|
|
1058
|
-
* Resumes a task that was previously on hold
|
|
1213
|
+
* Resumes a task that was previously on hold.
|
|
1214
|
+
* @param mediaResourceId - Optional media resource ID to use for the resume operation. If not provided, uses the task's current mediaResourceId from interaction media
|
|
1059
1215
|
* @returns Promise<TaskResponse>
|
|
1060
1216
|
* @example
|
|
1061
1217
|
* ```typescript
|
|
1062
|
-
*
|
|
1218
|
+
* // Resume with default mediaResourceId
|
|
1219
|
+
* await task.resume();
|
|
1220
|
+
*
|
|
1221
|
+
* // Resume with custom mediaResourceId
|
|
1222
|
+
* await task.resume('custom-media-resource-id');
|
|
1063
1223
|
* ```
|
|
1064
1224
|
*/
|
|
1065
|
-
resume(): Promise<TaskResponse>;
|
|
1225
|
+
resume(mediaResourceId?: string): Promise<TaskResponse>;
|
|
1066
1226
|
|
|
1067
1227
|
/**
|
|
1068
|
-
* Ends/terminates the current task
|
|
1228
|
+
* Ends/terminates the current task.
|
|
1069
1229
|
* @returns Promise<TaskResponse>
|
|
1070
1230
|
* @example
|
|
1071
1231
|
* ```typescript
|
|
1072
|
-
* task.end();
|
|
1232
|
+
* await task.end();
|
|
1073
1233
|
* ```
|
|
1074
1234
|
*/
|
|
1075
1235
|
end(): Promise<TaskResponse>;
|
|
1076
1236
|
|
|
1077
1237
|
/**
|
|
1078
|
-
* Initiates wrap-up process for the task with specified details
|
|
1238
|
+
* Initiates wrap-up process for the task with specified details.
|
|
1079
1239
|
* @param wrapupPayload - Wrap-up details including reason and auxiliary code
|
|
1080
1240
|
* @returns Promise<TaskResponse>
|
|
1081
1241
|
* @example
|
|
1082
1242
|
* ```typescript
|
|
1083
|
-
* task.wrapup({
|
|
1243
|
+
* await task.wrapup({
|
|
1084
1244
|
* wrapUpReason: "Customer issue resolved",
|
|
1085
1245
|
* auxCodeId: "RESOLVED"
|
|
1086
1246
|
* });
|
|
@@ -1089,25 +1249,109 @@ export interface ITask extends EventEmitter {
|
|
|
1089
1249
|
wrapup(wrapupPayload: WrapupPayLoad): Promise<TaskResponse>;
|
|
1090
1250
|
|
|
1091
1251
|
/**
|
|
1092
|
-
* Pauses the recording for current task
|
|
1252
|
+
* Pauses the recording for current task.
|
|
1093
1253
|
* @returns Promise<TaskResponse>
|
|
1094
1254
|
* @example
|
|
1095
1255
|
* ```typescript
|
|
1096
|
-
* task.pauseRecording();
|
|
1256
|
+
* await task.pauseRecording();
|
|
1097
1257
|
* ```
|
|
1098
1258
|
*/
|
|
1099
1259
|
pauseRecording(): Promise<TaskResponse>;
|
|
1100
1260
|
|
|
1101
1261
|
/**
|
|
1102
|
-
* Resumes a previously paused recording
|
|
1262
|
+
* Resumes a previously paused recording.
|
|
1103
1263
|
* @param resumeRecordingPayload - Parameters for resuming the recording
|
|
1104
1264
|
* @returns Promise<TaskResponse>
|
|
1105
1265
|
* @example
|
|
1106
1266
|
* ```typescript
|
|
1107
|
-
* task.resumeRecording({
|
|
1267
|
+
* await task.resumeRecording({
|
|
1108
1268
|
* autoResumed: false
|
|
1109
1269
|
* });
|
|
1110
1270
|
* ```
|
|
1111
1271
|
*/
|
|
1112
1272
|
resumeRecording(resumeRecordingPayload: ResumeRecordingPayload): Promise<TaskResponse>;
|
|
1273
|
+
|
|
1274
|
+
/**
|
|
1275
|
+
* Initiates a consultation with another agent or queue.
|
|
1276
|
+
* @param consultPayload - Consultation details including destination and type
|
|
1277
|
+
* @returns Promise<TaskResponse>
|
|
1278
|
+
* @example
|
|
1279
|
+
* ```typescript
|
|
1280
|
+
* await task.consult({ to: "agentId", destinationType: "agent" });
|
|
1281
|
+
* ```
|
|
1282
|
+
*/
|
|
1283
|
+
consult(consultPayload: ConsultPayload): Promise<TaskResponse>;
|
|
1284
|
+
|
|
1285
|
+
/**
|
|
1286
|
+
* Ends an ongoing consultation.
|
|
1287
|
+
* @param consultEndPayload - Details for ending the consultation
|
|
1288
|
+
* @returns Promise<TaskResponse>
|
|
1289
|
+
* @example
|
|
1290
|
+
* ```typescript
|
|
1291
|
+
* await task.endConsult({ isConsult: true, taskId: "taskId" });
|
|
1292
|
+
* ```
|
|
1293
|
+
*/
|
|
1294
|
+
endConsult(consultEndPayload: ConsultEndPayload): Promise<TaskResponse>;
|
|
1295
|
+
|
|
1296
|
+
/**
|
|
1297
|
+
* Transfers the task to another agent or queue.
|
|
1298
|
+
* @param transferPayload - Transfer details including destination and type
|
|
1299
|
+
* @returns Promise<TaskResponse>
|
|
1300
|
+
* @example
|
|
1301
|
+
* ```typescript
|
|
1302
|
+
* await task.transfer({ to: "queueId", destinationType: "queue" });
|
|
1303
|
+
* ```
|
|
1304
|
+
*/
|
|
1305
|
+
transfer(transferPayload: TransferPayLoad): Promise<TaskResponse>;
|
|
1306
|
+
|
|
1307
|
+
/**
|
|
1308
|
+
* Transfers the task after consultation.
|
|
1309
|
+
* @param consultTransferPayload - Details for consult transfer (optional)
|
|
1310
|
+
* @returns Promise<TaskResponse>
|
|
1311
|
+
* @example
|
|
1312
|
+
* ```typescript
|
|
1313
|
+
* await task.consultTransfer({ to: "agentId", destinationType: "agent" });
|
|
1314
|
+
* ```
|
|
1315
|
+
*/
|
|
1316
|
+
consultTransfer(consultTransferPayload?: ConsultTransferPayLoad): Promise<TaskResponse>;
|
|
1317
|
+
|
|
1318
|
+
/**
|
|
1319
|
+
* Initiates a consult conference (merge consult call with main call).
|
|
1320
|
+
* @returns Promise<TaskResponse>
|
|
1321
|
+
* @example
|
|
1322
|
+
* ```typescript
|
|
1323
|
+
* await task.consultConference();
|
|
1324
|
+
* ```
|
|
1325
|
+
*/
|
|
1326
|
+
consultConference(): Promise<TaskResponse>;
|
|
1327
|
+
|
|
1328
|
+
/**
|
|
1329
|
+
* Exits from an ongoing conference.
|
|
1330
|
+
* @returns Promise<TaskResponse>
|
|
1331
|
+
* @example
|
|
1332
|
+
* ```typescript
|
|
1333
|
+
* await task.exitConference();
|
|
1334
|
+
* ```
|
|
1335
|
+
*/
|
|
1336
|
+
exitConference(): Promise<TaskResponse>;
|
|
1337
|
+
|
|
1338
|
+
/**
|
|
1339
|
+
* Transfers the conference to another participant.
|
|
1340
|
+
* @returns Promise<TaskResponse>
|
|
1341
|
+
* @example
|
|
1342
|
+
* ```typescript
|
|
1343
|
+
* await task.transferConference();
|
|
1344
|
+
* ```
|
|
1345
|
+
*/
|
|
1346
|
+
transferConference(): Promise<TaskResponse>;
|
|
1347
|
+
|
|
1348
|
+
/**
|
|
1349
|
+
* Toggles mute/unmute for the local audio stream during a WebRTC task.
|
|
1350
|
+
* @returns Promise<void>
|
|
1351
|
+
* @example
|
|
1352
|
+
* ```typescript
|
|
1353
|
+
* await task.toggleMute();
|
|
1354
|
+
* ```
|
|
1355
|
+
*/
|
|
1356
|
+
toggleMute(): Promise<void>;
|
|
1113
1357
|
}
|
package/src/types.ts
CHANGED
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
import * as Agent from './services/agent/types';
|
|
8
8
|
import * as Contact from './services/task/types';
|
|
9
9
|
import {Profile} from './services/config/types';
|
|
10
|
+
import {PaginatedResponse, BaseSearchParams} from './utils/PageCache';
|
|
10
11
|
|
|
11
12
|
/**
|
|
12
13
|
* Generic type for converting a const enum object into a union type of its values.
|
|
@@ -192,6 +193,10 @@ export interface LogContext {
|
|
|
192
193
|
method?: string;
|
|
193
194
|
interactionId?: string;
|
|
194
195
|
trackingId?: string;
|
|
196
|
+
/** Additional structured data to include in logs */
|
|
197
|
+
data?: Record<string, any>;
|
|
198
|
+
/** Error object to include in logs */
|
|
199
|
+
error?: Error | unknown;
|
|
195
200
|
}
|
|
196
201
|
|
|
197
202
|
/**
|
|
@@ -620,6 +625,181 @@ export type StationReLoginResponse = Agent.ReloginSuccess | Error;
|
|
|
620
625
|
*/
|
|
621
626
|
export type SetStateResponse = Agent.StateChangeSuccess | Error;
|
|
622
627
|
|
|
628
|
+
/**
|
|
629
|
+
* AddressBook types
|
|
630
|
+
*/
|
|
631
|
+
export interface AddressBookEntry {
|
|
632
|
+
id: string;
|
|
633
|
+
organizationId?: string;
|
|
634
|
+
version?: number;
|
|
635
|
+
name: string;
|
|
636
|
+
number: string;
|
|
637
|
+
createdTime?: number;
|
|
638
|
+
lastUpdatedTime?: number;
|
|
639
|
+
}
|
|
640
|
+
|
|
641
|
+
export type AddressBookEntriesResponse = PaginatedResponse<AddressBookEntry>;
|
|
642
|
+
|
|
643
|
+
export interface AddressBookEntrySearchParams extends BaseSearchParams {
|
|
644
|
+
addressBookId?: string;
|
|
645
|
+
}
|
|
646
|
+
|
|
647
|
+
/**
|
|
648
|
+
* EntryPointRecord types
|
|
649
|
+
*/
|
|
650
|
+
export interface EntryPointRecord {
|
|
651
|
+
id: string;
|
|
652
|
+
name: string;
|
|
653
|
+
description?: string;
|
|
654
|
+
type: string;
|
|
655
|
+
isActive: boolean;
|
|
656
|
+
orgId: string;
|
|
657
|
+
createdAt?: string;
|
|
658
|
+
updatedAt?: string;
|
|
659
|
+
settings?: Record<string, any>;
|
|
660
|
+
}
|
|
661
|
+
|
|
662
|
+
export type EntryPointListResponse = PaginatedResponse<EntryPointRecord>;
|
|
663
|
+
export type EntryPointSearchParams = BaseSearchParams;
|
|
664
|
+
|
|
665
|
+
/**
|
|
666
|
+
* Queue types
|
|
667
|
+
*/
|
|
668
|
+
export interface QueueSkillRequirement {
|
|
669
|
+
organizationId?: string;
|
|
670
|
+
id?: string;
|
|
671
|
+
version?: number;
|
|
672
|
+
skillId: string;
|
|
673
|
+
skillName?: string;
|
|
674
|
+
skillType?: string;
|
|
675
|
+
condition: string;
|
|
676
|
+
skillValue: string;
|
|
677
|
+
createdTime?: number;
|
|
678
|
+
lastUpdatedTime?: number;
|
|
679
|
+
}
|
|
680
|
+
|
|
681
|
+
export interface QueueAgent {
|
|
682
|
+
id: string;
|
|
683
|
+
ciUserId?: string;
|
|
684
|
+
}
|
|
685
|
+
|
|
686
|
+
export interface AgentGroup {
|
|
687
|
+
teamId: string;
|
|
688
|
+
}
|
|
689
|
+
|
|
690
|
+
export interface CallDistributionGroup {
|
|
691
|
+
agentGroups: AgentGroup[];
|
|
692
|
+
order: number;
|
|
693
|
+
duration?: number;
|
|
694
|
+
}
|
|
695
|
+
|
|
696
|
+
export interface AssistantSkillMapping {
|
|
697
|
+
assistantSkillId?: string;
|
|
698
|
+
assistantSkillUpdatedTime?: number;
|
|
699
|
+
}
|
|
700
|
+
|
|
701
|
+
/**
|
|
702
|
+
* Configuration for a contact service queue
|
|
703
|
+
* @public
|
|
704
|
+
*/
|
|
705
|
+
export interface ContactServiceQueue {
|
|
706
|
+
/** Organization ID */
|
|
707
|
+
organizationId?: string;
|
|
708
|
+
/** Unique identifier for the queue */
|
|
709
|
+
id?: string;
|
|
710
|
+
/** Version of the queue */
|
|
711
|
+
version?: number;
|
|
712
|
+
/** Name of the Contact Service Queue */
|
|
713
|
+
name: string;
|
|
714
|
+
/** Description of the queue */
|
|
715
|
+
description?: string;
|
|
716
|
+
/** Queue type (INBOUND, OUTBOUND) */
|
|
717
|
+
queueType: 'INBOUND' | 'OUTBOUND';
|
|
718
|
+
/** Whether to check agent availability */
|
|
719
|
+
checkAgentAvailability: boolean;
|
|
720
|
+
/** Channel type (TELEPHONY, EMAIL, SOCIAL_CHANNEL, CHAT, etc.) */
|
|
721
|
+
channelType: 'TELEPHONY' | 'EMAIL' | 'FAX' | 'CHAT' | 'VIDEO' | 'OTHERS' | 'SOCIAL_CHANNEL';
|
|
722
|
+
/** Social channel type for SOCIAL_CHANNEL channelType */
|
|
723
|
+
socialChannelType?:
|
|
724
|
+
| 'MESSAGEBIRD'
|
|
725
|
+
| 'MESSENGER'
|
|
726
|
+
| 'WHATSAPP'
|
|
727
|
+
| 'APPLE_BUSINESS_CHAT'
|
|
728
|
+
| 'GOOGLE_BUSINESS_MESSAGES';
|
|
729
|
+
/** Service level threshold in seconds */
|
|
730
|
+
serviceLevelThreshold: number;
|
|
731
|
+
/** Maximum number of simultaneous contacts */
|
|
732
|
+
maxActiveContacts: number;
|
|
733
|
+
/** Maximum time in queue in seconds */
|
|
734
|
+
maxTimeInQueue: number;
|
|
735
|
+
/** Default music in queue media file ID */
|
|
736
|
+
defaultMusicInQueueMediaFileId: string;
|
|
737
|
+
/** Timezone for routing strategies */
|
|
738
|
+
timezone?: string;
|
|
739
|
+
/** Whether the queue is active */
|
|
740
|
+
active: boolean;
|
|
741
|
+
/** Whether outdial campaign is enabled */
|
|
742
|
+
outdialCampaignEnabled?: boolean;
|
|
743
|
+
/** Whether monitoring is permitted */
|
|
744
|
+
monitoringPermitted: boolean;
|
|
745
|
+
/** Whether parking is permitted */
|
|
746
|
+
parkingPermitted: boolean;
|
|
747
|
+
/** Whether recording is permitted */
|
|
748
|
+
recordingPermitted: boolean;
|
|
749
|
+
/** Whether recording all calls is permitted */
|
|
750
|
+
recordingAllCallsPermitted: boolean;
|
|
751
|
+
/** Whether pausing recording is permitted */
|
|
752
|
+
pauseRecordingPermitted: boolean;
|
|
753
|
+
/** Recording pause duration in seconds */
|
|
754
|
+
recordingPauseDuration?: number;
|
|
755
|
+
/** Control flow script URL */
|
|
756
|
+
controlFlowScriptUrl: string;
|
|
757
|
+
/** IVR requeue URL */
|
|
758
|
+
ivrRequeueUrl: string;
|
|
759
|
+
/** Overflow number for telephony */
|
|
760
|
+
overflowNumber?: string;
|
|
761
|
+
/** Vendor ID */
|
|
762
|
+
vendorId?: string;
|
|
763
|
+
/** Routing type */
|
|
764
|
+
routingType: 'LONGEST_AVAILABLE_AGENT' | 'SKILLS_BASED' | 'CIRCULAR' | 'LINEAR';
|
|
765
|
+
/** Skills-based routing type */
|
|
766
|
+
skillBasedRoutingType?: 'LONGEST_AVAILABLE_AGENT' | 'BEST_AVAILABLE_AGENT';
|
|
767
|
+
/** Queue routing type */
|
|
768
|
+
queueRoutingType: 'TEAM_BASED' | 'SKILL_BASED' | 'AGENT_BASED';
|
|
769
|
+
/** Queue skill requirements */
|
|
770
|
+
queueSkillRequirements?: QueueSkillRequirement[];
|
|
771
|
+
/** List of agents for agent-based queue */
|
|
772
|
+
agents?: QueueAgent[];
|
|
773
|
+
/** Call distribution groups */
|
|
774
|
+
callDistributionGroups: CallDistributionGroup[];
|
|
775
|
+
/** XSP version */
|
|
776
|
+
xspVersion?: string;
|
|
777
|
+
/** Subscription ID */
|
|
778
|
+
subscriptionId?: string;
|
|
779
|
+
/** Assistant skill mapping */
|
|
780
|
+
assistantSkill?: AssistantSkillMapping;
|
|
781
|
+
/** Whether this is a system default queue */
|
|
782
|
+
systemDefault?: boolean;
|
|
783
|
+
/** User who last updated agents list */
|
|
784
|
+
agentsLastUpdatedByUserName?: string;
|
|
785
|
+
/** Email of user who last updated agents list */
|
|
786
|
+
agentsLastUpdatedByUserEmailPrefix?: string;
|
|
787
|
+
/** When agents list was last updated */
|
|
788
|
+
agentsLastUpdatedTime?: number;
|
|
789
|
+
/** Creation timestamp in epoch millis */
|
|
790
|
+
createdTime?: number;
|
|
791
|
+
/** Last updated timestamp in epoch millis */
|
|
792
|
+
lastUpdatedTime?: number;
|
|
793
|
+
}
|
|
794
|
+
|
|
795
|
+
export type ContactServiceQueuesResponse = PaginatedResponse<ContactServiceQueue>;
|
|
796
|
+
|
|
797
|
+
export interface ContactServiceQueueSearchParams extends BaseSearchParams {
|
|
798
|
+
desktopProfileFilter?: boolean;
|
|
799
|
+
provisioningView?: boolean;
|
|
800
|
+
singleObjectResponse?: boolean;
|
|
801
|
+
}
|
|
802
|
+
|
|
623
803
|
/**
|
|
624
804
|
* Response type for buddy agents query operations.
|
|
625
805
|
* Either a success response with list of buddy agents or an error.
|