@webex/contact-center 3.8.1 → 3.9.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.
Files changed (89) hide show
  1. package/dist/cc.js +105 -63
  2. package/dist/cc.js.map +1 -1
  3. package/dist/index.js +13 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/logger-proxy.js +24 -1
  6. package/dist/logger-proxy.js.map +1 -1
  7. package/dist/metrics/MetricsManager.js +1 -1
  8. package/dist/metrics/MetricsManager.js.map +1 -1
  9. package/dist/metrics/behavioral-events.js +51 -0
  10. package/dist/metrics/behavioral-events.js.map +1 -1
  11. package/dist/metrics/constants.js +12 -1
  12. package/dist/metrics/constants.js.map +1 -1
  13. package/dist/services/AddressBook.js +271 -0
  14. package/dist/services/AddressBook.js.map +1 -0
  15. package/dist/services/EntryPoint.js +227 -0
  16. package/dist/services/EntryPoint.js.map +1 -0
  17. package/dist/services/Queue.js +261 -0
  18. package/dist/services/Queue.js.map +1 -0
  19. package/dist/services/config/constants.js +24 -2
  20. package/dist/services/config/constants.js.map +1 -1
  21. package/dist/services/config/index.js +1 -43
  22. package/dist/services/config/index.js.map +1 -1
  23. package/dist/services/config/types.js +0 -5
  24. package/dist/services/config/types.js.map +1 -1
  25. package/dist/services/core/GlobalTypes.js.map +1 -1
  26. package/dist/services/core/Utils.js +121 -2
  27. package/dist/services/core/Utils.js.map +1 -1
  28. package/dist/services/core/aqm-reqs.js +0 -4
  29. package/dist/services/core/aqm-reqs.js.map +1 -1
  30. package/dist/services/core/websocket/WebSocketManager.js +0 -4
  31. package/dist/services/core/websocket/WebSocketManager.js.map +1 -1
  32. package/dist/services/task/TaskManager.js +1 -0
  33. package/dist/services/task/TaskManager.js.map +1 -1
  34. package/dist/services/task/index.js +145 -71
  35. package/dist/services/task/index.js.map +1 -1
  36. package/dist/types/cc.d.ts +77 -43
  37. package/dist/types/index.d.ts +8 -3
  38. package/dist/types/metrics/constants.d.ts +7 -0
  39. package/dist/types/services/AddressBook.d.ts +74 -0
  40. package/dist/types/services/EntryPoint.d.ts +67 -0
  41. package/dist/types/services/Queue.d.ts +76 -0
  42. package/dist/types/services/config/constants.d.ts +23 -1
  43. package/dist/types/services/config/index.d.ts +1 -14
  44. package/dist/types/services/config/types.d.ts +0 -64
  45. package/dist/types/services/core/GlobalTypes.d.ts +25 -0
  46. package/dist/types/services/core/Utils.d.ts +27 -1
  47. package/dist/types/services/task/index.d.ts +1 -1
  48. package/dist/types/types.d.ts +162 -0
  49. package/dist/types/utils/PageCache.d.ts +173 -0
  50. package/dist/types.js +17 -0
  51. package/dist/types.js.map +1 -1
  52. package/dist/utils/PageCache.js +192 -0
  53. package/dist/utils/PageCache.js.map +1 -0
  54. package/dist/webex.js +1 -1
  55. package/package.json +10 -10
  56. package/src/cc.ts +121 -81
  57. package/src/index.ts +19 -3
  58. package/src/logger-proxy.ts +24 -1
  59. package/src/metrics/MetricsManager.ts +1 -1
  60. package/src/metrics/behavioral-events.ts +54 -0
  61. package/src/metrics/constants.ts +15 -0
  62. package/src/services/AddressBook.ts +291 -0
  63. package/src/services/EntryPoint.ts +241 -0
  64. package/src/services/Queue.ts +277 -0
  65. package/src/services/config/constants.ts +26 -2
  66. package/src/services/config/index.ts +1 -55
  67. package/src/services/config/types.ts +0 -65
  68. package/src/services/core/GlobalTypes.ts +27 -0
  69. package/src/services/core/Utils.ts +155 -1
  70. package/src/services/core/aqm-reqs.ts +0 -5
  71. package/src/services/core/websocket/WebSocketManager.ts +0 -4
  72. package/src/services/task/TaskManager.ts +1 -0
  73. package/src/services/task/index.ts +172 -56
  74. package/src/types.ts +180 -0
  75. package/src/utils/PageCache.ts +252 -0
  76. package/test/unit/spec/cc.ts +30 -82
  77. package/test/unit/spec/metrics/MetricsManager.ts +0 -1
  78. package/test/unit/spec/metrics/behavioral-events.ts +14 -0
  79. package/test/unit/spec/services/AddressBook.ts +332 -0
  80. package/test/unit/spec/services/EntryPoint.ts +259 -0
  81. package/test/unit/spec/services/Queue.ts +323 -0
  82. package/test/unit/spec/services/config/index.ts +0 -71
  83. package/test/unit/spec/services/core/Utils.ts +50 -0
  84. package/test/unit/spec/services/core/aqm-reqs.ts +1 -3
  85. package/test/unit/spec/services/core/websocket/WebSocketManager.ts +0 -4
  86. package/test/unit/spec/services/task/TaskManager.ts +8 -1
  87. package/test/unit/spec/services/task/index.ts +226 -122
  88. package/umd/contact-center.min.js +2 -2
  89. package/umd/contact-center.min.js.map +1 -1
@@ -331,15 +331,21 @@ class Task extends _events.default {
331
331
  }
332
332
  return Promise.resolve(); // TODO: reject for extension as part of refactor
333
333
  } catch (error) {
334
- const {
335
- error: detailedError
336
- } = (0, _Utils.getErrorDetails)(error, _constants2.METHODS.ACCEPT, _constants.TASK_FILE);
334
+ const err = (0, _Utils.generateTaskErrorObject)(error, _constants2.METHODS.ACCEPT, _constants.TASK_FILE);
335
+ const taskErrorProps = {
336
+ trackingId: err.data?.trackingId,
337
+ errorMessage: err.data?.message,
338
+ errorType: err.data?.errorType,
339
+ errorData: err.data?.errorData,
340
+ reasonCode: err.data?.reasonCode
341
+ };
337
342
  this.metricsManager.trackEvent(_constants3.METRIC_EVENT_NAMES.TASK_ACCEPT_FAILED, {
338
343
  taskId: this.data.interactionId,
339
344
  error: error.toString(),
345
+ ...taskErrorProps,
340
346
  ..._MetricsManager.default.getCommonTrackingFieldForAQMResponseFailed(error.details)
341
347
  }, ['operational', 'behavioral', 'business']);
342
- throw detailedError;
348
+ throw err;
343
349
  }
344
350
  }
345
351
 
@@ -372,10 +378,8 @@ class Task extends _events.default {
372
378
  });
373
379
  return Promise.resolve();
374
380
  } catch (error) {
375
- const {
376
- error: detailedError
377
- } = (0, _Utils.getErrorDetails)(error, _constants2.METHODS.TOGGLE_MUTE, _constants.TASK_FILE);
378
- throw detailedError;
381
+ const err = (0, _Utils.generateTaskErrorObject)(error, _constants2.METHODS.TOGGLE_MUTE, _constants.TASK_FILE);
382
+ throw err;
379
383
  }
380
384
  }
381
385
 
@@ -413,15 +417,21 @@ class Task extends _events.default {
413
417
  });
414
418
  return Promise.resolve();
415
419
  } catch (error) {
416
- const {
417
- error: detailedError
418
- } = (0, _Utils.getErrorDetails)(error, _constants2.METHODS.DECLINE, _constants.TASK_FILE);
420
+ const err = (0, _Utils.generateTaskErrorObject)(error, _constants2.METHODS.DECLINE, _constants.TASK_FILE);
421
+ const taskErrorProps = {
422
+ trackingId: err.data?.trackingId,
423
+ errorMessage: err.data?.message,
424
+ errorType: err.data?.errorType,
425
+ errorData: err.data?.errorData,
426
+ reasonCode: err.data?.reasonCode
427
+ };
419
428
  this.metricsManager.trackEvent(_constants3.METRIC_EVENT_NAMES.TASK_DECLINE_FAILED, {
420
429
  taskId: this.data.interactionId,
421
430
  error: error.toString(),
431
+ ...taskErrorProps,
422
432
  ..._MetricsManager.default.getCommonTrackingFieldForAQMResponseFailed(error.details || {})
423
433
  }, ['operational', 'behavioral']);
424
- throw detailedError;
434
+ throw err;
425
435
  }
426
436
  }
427
437
 
@@ -478,16 +488,22 @@ class Task extends _events.default {
478
488
  });
479
489
  return response;
480
490
  } catch (error) {
481
- const {
482
- error: detailedError
483
- } = (0, _Utils.getErrorDetails)(error, _constants2.METHODS.HOLD, _constants.TASK_FILE);
491
+ const err = (0, _Utils.generateTaskErrorObject)(error, _constants2.METHODS.HOLD, _constants.TASK_FILE);
492
+ const taskErrorProps = {
493
+ trackingId: err.data?.trackingId,
494
+ errorMessage: err.data?.message,
495
+ errorType: err.data?.errorType,
496
+ errorData: err.data?.errorData,
497
+ reasonCode: err.data?.reasonCode
498
+ };
484
499
  this.metricsManager.trackEvent(_constants3.METRIC_EVENT_NAMES.TASK_HOLD_FAILED, {
485
500
  taskId: this.data.interactionId,
486
501
  mediaResourceId: this.data.mediaResourceId,
487
502
  error: error.toString(),
503
+ ...taskErrorProps,
488
504
  ..._MetricsManager.default.getCommonTrackingFieldForAQMResponseFailed(error.details || {})
489
505
  }, ['operational', 'behavioral']);
490
- throw detailedError;
506
+ throw err;
491
507
  }
492
508
  }
493
509
 
@@ -551,17 +567,23 @@ class Task extends _events.default {
551
567
  });
552
568
  return response;
553
569
  } catch (error) {
554
- const {
555
- error: detailedError
556
- } = (0, _Utils.getErrorDetails)(error, _constants2.METHODS.RESUME, _constants.TASK_FILE);
570
+ const err = (0, _Utils.generateTaskErrorObject)(error, _constants2.METHODS.RESUME, _constants.TASK_FILE);
557
571
  const mainInteractionId = this.data.interaction?.mainInteractionId;
572
+ const taskErrorProps = {
573
+ trackingId: err.data?.trackingId,
574
+ errorMessage: err.data?.message,
575
+ errorType: err.data?.errorType,
576
+ errorData: err.data?.errorData,
577
+ reasonCode: err.data?.reasonCode
578
+ };
558
579
  this.metricsManager.trackEvent(_constants3.METRIC_EVENT_NAMES.TASK_RESUME_FAILED, {
559
580
  taskId: this.data.interactionId,
560
581
  mainInteractionId,
561
582
  mediaResourceId: mainInteractionId ? this.data.interaction.media[mainInteractionId].mediaResourceId : '',
583
+ ...taskErrorProps,
562
584
  ..._MetricsManager.default.getCommonTrackingFieldForAQMResponseFailed(error.details || {})
563
585
  }, ['operational', 'behavioral']);
564
- throw detailedError;
586
+ throw err;
565
587
  }
566
588
  }
567
589
 
@@ -631,14 +653,20 @@ class Task extends _events.default {
631
653
  });
632
654
  return response;
633
655
  } catch (error) {
634
- const {
635
- error: detailedError
636
- } = (0, _Utils.getErrorDetails)(error, _constants2.METHODS.END, _constants.TASK_FILE);
656
+ const err = (0, _Utils.generateTaskErrorObject)(error, _constants2.METHODS.END, _constants.TASK_FILE);
657
+ const taskErrorProps = {
658
+ trackingId: err.data?.trackingId,
659
+ errorMessage: err.data?.message,
660
+ errorType: err.data?.errorType,
661
+ errorData: err.data?.errorData,
662
+ reasonCode: err.data?.reasonCode
663
+ };
637
664
  this.metricsManager.trackEvent(_constants3.METRIC_EVENT_NAMES.TASK_END_FAILED, {
638
665
  taskId: this.data.interactionId,
666
+ ...taskErrorProps,
639
667
  ..._MetricsManager.default.getCommonTrackingFieldForAQMResponseFailed(error.details || {})
640
668
  }, ['operational', 'behavioral', 'business']);
641
- throw detailedError;
669
+ throw err;
642
670
  }
643
671
  }
644
672
 
@@ -720,16 +748,22 @@ class Task extends _events.default {
720
748
  });
721
749
  return response;
722
750
  } catch (error) {
723
- const {
724
- error: detailedError
725
- } = (0, _Utils.getErrorDetails)(error, _constants2.METHODS.WRAPUP, _constants.TASK_FILE);
751
+ const err = (0, _Utils.generateTaskErrorObject)(error, _constants2.METHODS.WRAPUP, _constants.TASK_FILE);
752
+ const taskErrorProps = {
753
+ trackingId: err.data?.trackingId,
754
+ errorMessage: err.data?.message,
755
+ errorType: err.data?.errorType,
756
+ errorData: err.data?.errorData,
757
+ reasonCode: err.data?.reasonCode
758
+ };
726
759
  this.metricsManager.trackEvent(_constants3.METRIC_EVENT_NAMES.TASK_WRAPUP_FAILED, {
727
760
  taskId: this.data.interactionId,
728
761
  wrapUpCode: wrapupPayload.auxCodeId,
729
762
  wrapUpReason: wrapupPayload.wrapUpReason,
763
+ ...taskErrorProps,
730
764
  ..._MetricsManager.default.getCommonTrackingFieldForAQMResponseFailed(error.details || {})
731
765
  }, ['operational', 'behavioral', 'business']);
732
- throw detailedError;
766
+ throw err;
733
767
  }
734
768
  }
735
769
 
@@ -788,15 +822,21 @@ class Task extends _events.default {
788
822
  });
789
823
  return result;
790
824
  } catch (error) {
791
- const {
792
- error: detailedError
793
- } = (0, _Utils.getErrorDetails)(error, _constants2.METHODS.PAUSE_RECORDING, _constants.TASK_FILE);
825
+ const err = (0, _Utils.generateTaskErrorObject)(error, _constants2.METHODS.PAUSE_RECORDING, _constants.TASK_FILE);
826
+ const taskErrorProps = {
827
+ trackingId: err.data?.trackingId,
828
+ errorMessage: err.data?.message,
829
+ errorType: err.data?.errorType,
830
+ errorData: err.data?.errorData,
831
+ reasonCode: err.data?.reasonCode
832
+ };
794
833
  this.metricsManager.trackEvent(_constants3.METRIC_EVENT_NAMES.TASK_PAUSE_RECORDING_FAILED, {
795
834
  taskId: this.data.interactionId,
796
835
  error: error.toString(),
836
+ ...taskErrorProps,
797
837
  ..._MetricsManager.default.getCommonTrackingFieldForAQMResponseFailed(error.details || {})
798
838
  }, ['operational', 'behavioral', 'business']);
799
- throw detailedError;
839
+ throw err;
800
840
  }
801
841
  }
802
842
 
@@ -864,15 +904,21 @@ class Task extends _events.default {
864
904
  });
865
905
  return result;
866
906
  } catch (error) {
867
- const {
868
- error: detailedError
869
- } = (0, _Utils.getErrorDetails)(error, _constants2.METHODS.RESUME_RECORDING, _constants.TASK_FILE);
907
+ const err = (0, _Utils.generateTaskErrorObject)(error, _constants2.METHODS.RESUME_RECORDING, _constants.TASK_FILE);
908
+ const taskErrorProps = {
909
+ trackingId: err.data?.trackingId,
910
+ errorMessage: err.data?.message,
911
+ errorType: err.data?.errorType,
912
+ errorData: err.data?.errorData,
913
+ reasonCode: err.data?.reasonCode
914
+ };
870
915
  this.metricsManager.trackEvent(_constants3.METRIC_EVENT_NAMES.TASK_RESUME_RECORDING_FAILED, {
871
916
  taskId: this.data.interactionId,
872
917
  error: error.toString(),
918
+ ...taskErrorProps,
873
919
  ..._MetricsManager.default.getCommonTrackingFieldForAQMResponseFailed(error.details || {})
874
920
  }, ['operational', 'behavioral', 'business']);
875
- throw detailedError;
921
+ throw err;
876
922
  }
877
923
  }
878
924
 
@@ -935,17 +981,23 @@ class Task extends _events.default {
935
981
  });
936
982
  return result;
937
983
  } catch (error) {
938
- const {
939
- error: detailedError
940
- } = (0, _Utils.getErrorDetails)(error, _constants2.METHODS.CONSULT, _constants.TASK_FILE);
984
+ const err = (0, _Utils.generateTaskErrorObject)(error, _constants2.METHODS.CONSULT, _constants.TASK_FILE);
985
+ const taskErrorProps = {
986
+ trackingId: err.data?.trackingId,
987
+ errorMessage: err.data?.message,
988
+ errorType: err.data?.errorType,
989
+ errorData: err.data?.errorData,
990
+ reasonCode: err.data?.reasonCode
991
+ };
941
992
  this.metricsManager.trackEvent(_constants3.METRIC_EVENT_NAMES.TASK_CONSULT_START_FAILED, {
942
993
  taskId: this.data.interactionId,
943
994
  destination: consultPayload.to,
944
995
  destinationType: consultPayload.destinationType,
945
996
  error: error.toString(),
997
+ ...taskErrorProps,
946
998
  ..._MetricsManager.default.getCommonTrackingFieldForAQMResponseFailed(error.details || {})
947
999
  }, ['operational', 'behavioral', 'business']);
948
- throw detailedError;
1000
+ throw err;
949
1001
  }
950
1002
  }
951
1003
 
@@ -1006,15 +1058,21 @@ class Task extends _events.default {
1006
1058
  });
1007
1059
  return result;
1008
1060
  } catch (error) {
1009
- const {
1010
- error: detailedError
1011
- } = (0, _Utils.getErrorDetails)(error, _constants2.METHODS.END_CONSULT, _constants.TASK_FILE);
1061
+ const err = (0, _Utils.generateTaskErrorObject)(error, _constants2.METHODS.END_CONSULT, _constants.TASK_FILE);
1062
+ const taskErrorProps = {
1063
+ trackingId: err.data?.trackingId,
1064
+ errorMessage: err.data?.message,
1065
+ errorType: err.data?.errorType,
1066
+ errorData: err.data?.errorData,
1067
+ reasonCode: err.data?.reasonCode
1068
+ };
1012
1069
  this.metricsManager.trackEvent(_constants3.METRIC_EVENT_NAMES.TASK_CONSULT_END_FAILED, {
1013
1070
  taskId: this.data.interactionId,
1014
1071
  error: error.toString(),
1072
+ ...taskErrorProps,
1015
1073
  ..._MetricsManager.default.getCommonTrackingFieldForAQMResponseFailed(error.details || {})
1016
1074
  }, ['operational', 'behavioral', 'business']);
1017
- throw detailedError;
1075
+ throw err;
1018
1076
  }
1019
1077
  }
1020
1078
 
@@ -1083,18 +1141,24 @@ class Task extends _events.default {
1083
1141
  });
1084
1142
  return result;
1085
1143
  } catch (error) {
1086
- const {
1087
- error: detailedError
1088
- } = (0, _Utils.getErrorDetails)(error, _constants2.METHODS.TRANSFER, _constants.TASK_FILE);
1144
+ const err = (0, _Utils.generateTaskErrorObject)(error, _constants2.METHODS.TRANSFER, _constants.TASK_FILE);
1145
+ const taskErrorProps = {
1146
+ trackingId: err.data?.trackingId,
1147
+ errorMessage: err.data?.message,
1148
+ errorType: err.data?.errorType,
1149
+ errorData: err.data?.errorData,
1150
+ reasonCode: err.data?.reasonCode
1151
+ };
1089
1152
  this.metricsManager.trackEvent(_constants3.METRIC_EVENT_NAMES.TASK_TRANSFER_FAILED, {
1090
1153
  taskId: this.data.interactionId,
1091
1154
  destination: transferPayload.to,
1092
1155
  destinationType: transferPayload.destinationType,
1093
1156
  isConsultTransfer: false,
1094
1157
  error: error.toString(),
1158
+ ...taskErrorProps,
1095
1159
  ..._MetricsManager.default.getCommonTrackingFieldForAQMResponseFailed(error.details || {})
1096
1160
  }, ['operational', 'behavioral', 'business']);
1097
- throw detailedError;
1161
+ throw err;
1098
1162
  }
1099
1163
  }
1100
1164
 
@@ -1132,36 +1196,38 @@ class Task extends _events.default {
1132
1196
  */
1133
1197
  async consultTransfer(consultTransferPayload) {
1134
1198
  try {
1135
- _loggerProxy.default.info(`Initiating consult transfer to ${consultTransferPayload.to}`, {
1199
+ // Get the destination agent ID using custom logic from participants data
1200
+ const destAgentId = (0, _Utils.getDestinationAgentId)(this.data.interaction?.participants, this.data.agentId);
1201
+
1202
+ // Resolve the target id (queue consult transfers go to the accepted agent)
1203
+ if (!destAgentId) {
1204
+ throw new Error('No agent has accepted this queue consult yet');
1205
+ }
1206
+ _loggerProxy.default.info(`Initiating consult transfer to ${consultTransferPayload?.to || destAgentId}`, {
1136
1207
  module: _constants.TASK_FILE,
1137
1208
  method: _constants2.METHODS.CONSULT_TRANSFER,
1138
1209
  interactionId: this.data.interactionId
1139
1210
  });
1211
+ // Obtain payload based on desktop logic using TaskData
1212
+ const finalDestinationType = (0, _Utils.deriveConsultTransferDestinationType)(this.data);
1140
1213
 
1141
- // For queue destinations, use the destAgentId from task data
1142
- if (consultTransferPayload.destinationType === _types2.CONSULT_TRANSFER_DESTINATION_TYPE.QUEUE) {
1143
- if (!this.data.destAgentId) {
1144
- throw new Error('No agent has accepted this queue consult yet');
1145
- }
1146
-
1147
- // Override the destination with the agent who accepted the queue consult
1148
- consultTransferPayload = {
1149
- to: this.data.destAgentId,
1150
- destinationType: _types2.CONSULT_TRANSFER_DESTINATION_TYPE.AGENT
1151
- };
1152
- }
1214
+ // By default we always use the computed destAgentId as the target id
1215
+ const consultTransferRequest = {
1216
+ to: destAgentId,
1217
+ destinationType: finalDestinationType
1218
+ };
1153
1219
  const result = await this.contact.consultTransfer({
1154
1220
  interactionId: this.data.interactionId,
1155
- data: consultTransferPayload
1221
+ data: consultTransferRequest
1156
1222
  });
1157
1223
  this.metricsManager.trackEvent(_constants3.METRIC_EVENT_NAMES.TASK_TRANSFER_SUCCESS, {
1158
1224
  taskId: this.data.interactionId,
1159
- destination: consultTransferPayload.to,
1160
- destinationType: consultTransferPayload.destinationType,
1225
+ destination: consultTransferRequest.to,
1226
+ destinationType: consultTransferRequest.destinationType,
1161
1227
  isConsultTransfer: true,
1162
1228
  ..._MetricsManager.default.getCommonTrackingFieldForAQMResponse(result)
1163
1229
  }, ['operational', 'behavioral', 'business']);
1164
- _loggerProxy.default.log(`Consult transfer completed successfully to ${consultTransferPayload.to}`, {
1230
+ _loggerProxy.default.log(`Consult transfer completed successfully to ${consultTransferPayload?.to || destAgentId}`, {
1165
1231
  module: _constants.TASK_FILE,
1166
1232
  method: _constants2.METHODS.CONSULT_TRANSFER,
1167
1233
  trackingId: result.trackingId,
@@ -1169,18 +1235,26 @@ class Task extends _events.default {
1169
1235
  });
1170
1236
  return result;
1171
1237
  } catch (error) {
1172
- const {
1173
- error: detailedError
1174
- } = (0, _Utils.getErrorDetails)(error, _constants2.METHODS.CONSULT_TRANSFER, _constants.TASK_FILE);
1238
+ const err = (0, _Utils.generateTaskErrorObject)(error, _constants2.METHODS.CONSULT_TRANSFER, _constants.TASK_FILE);
1239
+ const taskErrorProps = {
1240
+ trackingId: err.data?.trackingId,
1241
+ errorMessage: err.data?.message,
1242
+ errorType: err.data?.errorType,
1243
+ errorData: err.data?.errorData,
1244
+ reasonCode: err.data?.reasonCode
1245
+ };
1246
+ const failedDestinationType = (0, _Utils.deriveConsultTransferDestinationType)(this.data);
1247
+ const failedDestAgentId = (0, _Utils.getDestinationAgentId)(this.data.interaction?.participants, this.data.agentId);
1175
1248
  this.metricsManager.trackEvent(_constants3.METRIC_EVENT_NAMES.TASK_TRANSFER_FAILED, {
1176
1249
  taskId: this.data.interactionId,
1177
- destination: consultTransferPayload.to,
1178
- destinationType: consultTransferPayload.destinationType,
1250
+ destination: failedDestAgentId || '',
1251
+ destinationType: failedDestinationType,
1179
1252
  isConsultTransfer: true,
1180
1253
  error: error.toString(),
1254
+ ...taskErrorProps,
1181
1255
  ..._MetricsManager.default.getCommonTrackingFieldForAQMResponseFailed(error.details || {})
1182
1256
  }, ['operational', 'behavioral', 'business']);
1183
- throw detailedError;
1257
+ throw err;
1184
1258
  }
1185
1259
  }
1186
1260
  }