@webex/contact-center 3.12.0-next.13 → 3.12.0-next.130

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 (312) hide show
  1. package/.sdd/manifest.json +884 -0
  2. package/AGENTS.md +94 -0
  3. package/ai-docs/ARCHITECTURE.md +168 -0
  4. package/ai-docs/CONTRACTS.md +53 -0
  5. package/ai-docs/GETTING_STARTED.md +168 -0
  6. package/ai-docs/GLOSSARY.md +43 -0
  7. package/ai-docs/README.md +138 -0
  8. package/ai-docs/REVIEW_CHECKLIST.md +41 -0
  9. package/ai-docs/RULES.md +444 -0
  10. package/ai-docs/SECURITY.md +52 -0
  11. package/ai-docs/SERVICE_STATE.md +52 -0
  12. package/ai-docs/SPEC_INDEX.md +65 -0
  13. package/ai-docs/adr/0001-spec-source-policy.md +55 -0
  14. package/ai-docs/adr/README.md +8 -0
  15. package/ai-docs/adr/_adr-template.md +31 -0
  16. package/ai-docs/contact-center-spec.md +382 -0
  17. package/ai-docs/features/consult-transfer-list-policy/spec/feature-spec.md +362 -0
  18. package/ai-docs/features/contact-owner-change-refactor.md +78 -0
  19. package/ai-docs/features/generated-spec-conformance-fidelity-remediation/spec/feature-spec.md +117 -0
  20. package/ai-docs/features/residual-warning-coverage-completion/spec/feature-spec.md +203 -0
  21. package/ai-docs/features/validator-code-fidelity-drift-fix/spec/feature-spec.md +315 -0
  22. package/ai-docs/patterns/event-driven-patterns.md +485 -0
  23. package/ai-docs/patterns/testing-patterns.md +480 -0
  24. package/ai-docs/patterns/typescript-patterns.md +365 -0
  25. package/ai-docs/templates/README.md +102 -0
  26. package/ai-docs/templates/documentation/create-agents-md.md +240 -0
  27. package/ai-docs/templates/documentation/create-architecture-md.md +295 -0
  28. package/ai-docs/templates/existing-service/bug-fix.md +254 -0
  29. package/ai-docs/templates/existing-service/feature-enhancement.md +450 -0
  30. package/ai-docs/templates/new-method/00-master.md +80 -0
  31. package/ai-docs/templates/new-method/01-requirements.md +232 -0
  32. package/ai-docs/templates/new-method/02-implementation.md +295 -0
  33. package/ai-docs/templates/new-method/03-tests.md +201 -0
  34. package/ai-docs/templates/new-method/04-validation.md +141 -0
  35. package/ai-docs/templates/new-service/00-master.md +109 -0
  36. package/ai-docs/templates/new-service/01-pre-questions.md +159 -0
  37. package/ai-docs/templates/new-service/02-code-generation.md +346 -0
  38. package/ai-docs/templates/new-service/03-integration.md +178 -0
  39. package/ai-docs/templates/new-service/04-test-generation.md +205 -0
  40. package/ai-docs/templates/new-service/05-validation.md +145 -0
  41. package/dist/cc.js +971 -42
  42. package/dist/cc.js.map +1 -1
  43. package/dist/config.js +13 -0
  44. package/dist/config.js.map +1 -1
  45. package/dist/constants.js +31 -3
  46. package/dist/constants.js.map +1 -1
  47. package/dist/index.js +45 -15
  48. package/dist/index.js.map +1 -1
  49. package/dist/metrics/MetricsManager.js +16 -0
  50. package/dist/metrics/MetricsManager.js.map +1 -1
  51. package/dist/metrics/behavioral-events.js +205 -0
  52. package/dist/metrics/behavioral-events.js.map +1 -1
  53. package/dist/metrics/constants.js +48 -4
  54. package/dist/metrics/constants.js.map +1 -1
  55. package/dist/services/AddressBook.js +18 -15
  56. package/dist/services/AddressBook.js.map +1 -1
  57. package/dist/services/AnswerCallOnWebexService.js +202 -0
  58. package/dist/services/AnswerCallOnWebexService.js.map +1 -0
  59. package/dist/services/ApiAiAssistant.js +269 -9
  60. package/dist/services/ApiAiAssistant.js.map +1 -1
  61. package/dist/services/EntryPoint.js +46 -68
  62. package/dist/services/EntryPoint.js.map +1 -1
  63. package/dist/services/Queue.js +27 -22
  64. package/dist/services/Queue.js.map +1 -1
  65. package/dist/services/UserPreference.js +427 -0
  66. package/dist/services/UserPreference.js.map +1 -0
  67. package/dist/services/WebexCrossClientService.js +222 -0
  68. package/dist/services/WebexCrossClientService.js.map +1 -0
  69. package/dist/services/WxAppTelephonyMercurySync.js +108 -0
  70. package/dist/services/WxAppTelephonyMercurySync.js.map +1 -0
  71. package/dist/services/config/Util.js +11 -4
  72. package/dist/services/config/Util.js.map +1 -1
  73. package/dist/services/config/constants.js +41 -7
  74. package/dist/services/config/constants.js.map +1 -1
  75. package/dist/services/config/index.js +51 -0
  76. package/dist/services/config/index.js.map +1 -1
  77. package/dist/services/config/types.js +57 -12
  78. package/dist/services/config/types.js.map +1 -1
  79. package/dist/services/core/Err.js.map +1 -1
  80. package/dist/services/core/Utils.js +111 -32
  81. package/dist/services/core/Utils.js.map +1 -1
  82. package/dist/services/core/WebexRequest.js +6 -2
  83. package/dist/services/core/WebexRequest.js.map +1 -1
  84. package/dist/services/core/aqm-reqs.js +28 -14
  85. package/dist/services/core/aqm-reqs.js.map +1 -1
  86. package/dist/services/core/types.js.map +1 -1
  87. package/dist/services/core/websocket/WebSocketManager.js +2 -1
  88. package/dist/services/core/websocket/WebSocketManager.js.map +1 -1
  89. package/dist/services/core/websocket/types.js.map +1 -1
  90. package/dist/services/index.js +1 -1
  91. package/dist/services/index.js.map +1 -1
  92. package/dist/services/task/Task.js +754 -0
  93. package/dist/services/task/Task.js.map +1 -0
  94. package/dist/services/task/TaskFactory.js +49 -0
  95. package/dist/services/task/TaskFactory.js.map +1 -0
  96. package/dist/services/task/TaskManager.js +1172 -521
  97. package/dist/services/task/TaskManager.js.map +1 -1
  98. package/dist/services/task/TaskUtils.js +211 -27
  99. package/dist/services/task/TaskUtils.js.map +1 -1
  100. package/dist/services/task/WebexCallingUtils.js +70 -0
  101. package/dist/services/task/WebexCallingUtils.js.map +1 -0
  102. package/dist/services/task/constants.js +12 -2
  103. package/dist/services/task/constants.js.map +1 -1
  104. package/dist/services/task/contact.js +29 -0
  105. package/dist/services/task/contact.js.map +1 -1
  106. package/dist/services/task/dialer.js +78 -0
  107. package/dist/services/task/dialer.js.map +1 -1
  108. package/dist/services/task/digital/Digital.js +78 -0
  109. package/dist/services/task/digital/Digital.js.map +1 -0
  110. package/dist/services/task/state-machine/TaskStateMachine.js +982 -0
  111. package/dist/services/task/state-machine/TaskStateMachine.js.map +1 -0
  112. package/dist/services/task/state-machine/actions.js +572 -0
  113. package/dist/services/task/state-machine/actions.js.map +1 -0
  114. package/dist/services/task/state-machine/constants.js +161 -0
  115. package/dist/services/task/state-machine/constants.js.map +1 -0
  116. package/dist/services/task/state-machine/guards.js +379 -0
  117. package/dist/services/task/state-machine/guards.js.map +1 -0
  118. package/dist/services/task/state-machine/index.js +53 -0
  119. package/dist/services/task/state-machine/index.js.map +1 -0
  120. package/dist/services/task/state-machine/types.js +54 -0
  121. package/dist/services/task/state-machine/types.js.map +1 -0
  122. package/dist/services/task/state-machine/uiControlsComputer.js +703 -0
  123. package/dist/services/task/state-machine/uiControlsComputer.js.map +1 -0
  124. package/dist/services/task/taskDataNormalizer.js +99 -0
  125. package/dist/services/task/taskDataNormalizer.js.map +1 -0
  126. package/dist/services/task/types.js +228 -5
  127. package/dist/services/task/types.js.map +1 -1
  128. package/dist/services/task/voice/Voice.js +1485 -0
  129. package/dist/services/task/voice/Voice.js.map +1 -0
  130. package/dist/services/task/voice/WebRTC.js +152 -0
  131. package/dist/services/task/voice/WebRTC.js.map +1 -0
  132. package/dist/services/task/voice/wxAppVoiceMethods.js +354 -0
  133. package/dist/services/task/voice/wxAppVoiceMethods.js.map +1 -0
  134. package/dist/services/wxAppDiagnosticLogging.js +122 -0
  135. package/dist/services/wxAppDiagnosticLogging.js.map +1 -0
  136. package/dist/services/wxAppTelephonyUtils.js +19 -0
  137. package/dist/services/wxAppTelephonyUtils.js.map +1 -0
  138. package/dist/types/cc.d.ts +193 -6
  139. package/dist/types/config.d.ts +13 -0
  140. package/dist/types/constants.d.ts +29 -1
  141. package/dist/types/index.d.ts +35 -8
  142. package/dist/types/metrics/MetricsManager.d.ts +6 -0
  143. package/dist/types/metrics/constants.d.ts +43 -1
  144. package/dist/types/services/AddressBook.d.ts +2 -1
  145. package/dist/types/services/AnswerCallOnWebexService.d.ts +38 -0
  146. package/dist/types/services/ApiAiAssistant.d.ts +56 -5
  147. package/dist/types/services/EntryPoint.d.ts +7 -5
  148. package/dist/types/services/Queue.d.ts +5 -3
  149. package/dist/types/services/UserPreference.d.ts +118 -0
  150. package/dist/types/services/WebexCrossClientService.d.ts +32 -0
  151. package/dist/types/services/WxAppTelephonyMercurySync.d.ts +28 -0
  152. package/dist/types/services/config/constants.d.ts +34 -5
  153. package/dist/types/services/config/types.d.ts +197 -12
  154. package/dist/types/services/core/Err.d.ts +6 -0
  155. package/dist/types/services/core/Utils.d.ts +35 -13
  156. package/dist/types/services/core/WebexRequest.d.ts +1 -0
  157. package/dist/types/services/core/types.d.ts +2 -0
  158. package/dist/types/services/core/websocket/WebSocketManager.d.ts +1 -0
  159. package/dist/types/services/core/websocket/types.d.ts +1 -1
  160. package/dist/types/services/index.d.ts +1 -1
  161. package/dist/types/services/task/Task.d.ts +175 -0
  162. package/dist/types/services/task/TaskFactory.d.ts +13 -0
  163. package/dist/types/services/task/TaskUtils.d.ts +48 -2
  164. package/dist/types/services/task/WebexCallingUtils.d.ts +11 -0
  165. package/dist/types/services/task/constants.d.ts +10 -0
  166. package/dist/types/services/task/contact.d.ts +4 -0
  167. package/dist/types/services/task/dialer.d.ts +30 -0
  168. package/dist/types/services/task/digital/Digital.d.ts +22 -0
  169. package/dist/types/services/task/state-machine/TaskStateMachine.d.ts +1442 -0
  170. package/dist/types/services/task/state-machine/actions.d.ts +10 -0
  171. package/dist/types/services/task/state-machine/constants.d.ts +107 -0
  172. package/dist/types/services/task/state-machine/guards.d.ts +103 -0
  173. package/dist/types/services/task/state-machine/index.d.ts +13 -0
  174. package/dist/types/services/task/state-machine/types.d.ts +277 -0
  175. package/dist/types/services/task/state-machine/uiControlsComputer.d.ts +9 -0
  176. package/dist/types/services/task/taskDataNormalizer.d.ts +10 -0
  177. package/dist/types/services/task/types.d.ts +680 -66
  178. package/dist/types/services/task/voice/Voice.d.ts +227 -0
  179. package/dist/types/services/task/voice/WebRTC.d.ts +53 -0
  180. package/dist/types/services/task/voice/wxAppVoiceMethods.d.ts +55 -0
  181. package/dist/types/services/wxAppDiagnosticLogging.d.ts +51 -0
  182. package/dist/types/services/wxAppTelephonyUtils.d.ts +5 -0
  183. package/dist/types/types.d.ts +205 -9
  184. package/dist/types/utils/PageCache.d.ts +20 -3
  185. package/dist/types/webex.d.ts +1 -0
  186. package/dist/types.js +162 -4
  187. package/dist/types.js.map +1 -1
  188. package/dist/utils/PageCache.js +19 -5
  189. package/dist/utils/PageCache.js.map +1 -1
  190. package/dist/webex.js +22 -2
  191. package/dist/webex.js.map +1 -1
  192. package/package.json +16 -12
  193. package/src/cc.ts +1289 -112
  194. package/src/config.ts +13 -0
  195. package/src/constants.ts +29 -1
  196. package/src/index.ts +36 -5
  197. package/src/metrics/MetricsManager.ts +16 -0
  198. package/src/metrics/ai-docs/AGENTS.md +350 -0
  199. package/src/metrics/ai-docs/ARCHITECTURE.md +338 -0
  200. package/src/metrics/ai-docs/metrics-spec.md +921 -0
  201. package/src/metrics/behavioral-events.ts +212 -0
  202. package/src/metrics/constants.ts +52 -4
  203. package/src/services/AddressBook.ts +17 -6
  204. package/src/services/AnswerCallOnWebexService.ts +239 -0
  205. package/src/services/ApiAiAssistant.ts +356 -9
  206. package/src/services/EntryPoint.ts +59 -60
  207. package/src/services/Queue.ts +29 -12
  208. package/src/services/UserPreference.ts +509 -0
  209. package/src/services/WebexCrossClientService.ts +293 -0
  210. package/src/services/WxAppTelephonyMercurySync.ts +142 -0
  211. package/src/services/agent/ai-docs/AGENTS.md +240 -0
  212. package/src/services/agent/ai-docs/ARCHITECTURE.md +304 -0
  213. package/src/services/agent/ai-docs/agent-spec.md +505 -0
  214. package/src/services/ai-docs/AGENTS.md +386 -0
  215. package/src/services/ai-docs/services-spec.md +505 -0
  216. package/src/services/config/Util.ts +12 -3
  217. package/src/services/config/ai-docs/AGENTS.md +255 -0
  218. package/src/services/config/ai-docs/ARCHITECTURE.md +426 -0
  219. package/src/services/config/ai-docs/config-spec.md +686 -0
  220. package/src/services/config/constants.ts +46 -6
  221. package/src/services/config/index.ts +65 -0
  222. package/src/services/config/types.ts +197 -13
  223. package/src/services/core/Err.ts +3 -0
  224. package/src/services/core/Utils.ts +127 -37
  225. package/src/services/core/WebexRequest.ts +3 -1
  226. package/src/services/core/ai-docs/AGENTS.md +381 -0
  227. package/src/services/core/ai-docs/ARCHITECTURE.md +698 -0
  228. package/src/services/core/ai-docs/core-spec.md +787 -0
  229. package/src/services/core/aqm-reqs.ts +30 -15
  230. package/src/services/core/types.ts +2 -0
  231. package/src/services/core/websocket/WebSocketManager.ts +2 -0
  232. package/src/services/core/websocket/types.ts +1 -1
  233. package/src/services/index.ts +1 -1
  234. package/src/services/task/Task.ts +908 -0
  235. package/src/services/task/TaskFactory.ts +60 -0
  236. package/src/services/task/TaskManager.ts +1419 -608
  237. package/src/services/task/TaskUtils.ts +303 -25
  238. package/src/services/task/WebexCallingUtils.ts +136 -0
  239. package/src/services/task/ai-docs/AGENTS.md +457 -0
  240. package/src/services/task/ai-docs/ARCHITECTURE.md +595 -0
  241. package/src/services/task/ai-docs/task-spec.md +1474 -0
  242. package/src/services/task/constants.ts +10 -0
  243. package/src/services/task/contact.ts +30 -0
  244. package/src/services/task/dialer.ts +80 -0
  245. package/src/services/task/digital/Digital.ts +97 -0
  246. package/src/services/task/state-machine/TaskStateMachine.ts +1320 -0
  247. package/src/services/task/state-machine/actions.ts +741 -0
  248. package/src/services/task/state-machine/ai-docs/AGENTS.md +460 -0
  249. package/src/services/task/state-machine/ai-docs/ARCHITECTURE.md +1156 -0
  250. package/src/services/task/state-machine/ai-docs/task-state-machine-spec.md +2247 -0
  251. package/src/services/task/state-machine/constants.ts +172 -0
  252. package/src/services/task/state-machine/guards.ts +442 -0
  253. package/src/services/task/state-machine/index.ts +28 -0
  254. package/src/services/task/state-machine/types.ts +258 -0
  255. package/src/services/task/state-machine/uiControlsComputer.ts +1135 -0
  256. package/src/services/task/taskDataNormalizer.ts +137 -0
  257. package/src/services/task/types.ts +819 -70
  258. package/src/services/task/voice/Voice.ts +1851 -0
  259. package/src/services/task/voice/WebRTC.ts +191 -0
  260. package/src/services/task/voice/wxAppVoiceMethods.ts +516 -0
  261. package/src/services/wxAppDiagnosticLogging.ts +174 -0
  262. package/src/services/wxAppTelephonyUtils.ts +14 -0
  263. package/src/types.ts +262 -11
  264. package/src/utils/AGENTS.md +289 -0
  265. package/src/utils/PageCache.ts +38 -5
  266. package/src/utils/ai-docs/utils-spec.md +391 -0
  267. package/src/webex.js +10 -0
  268. package/test/unit/spec/cc.ts +2210 -119
  269. package/test/unit/spec/logger-proxy.ts +70 -0
  270. package/test/unit/spec/metrics/MetricsManager.ts +25 -0
  271. package/test/unit/spec/metrics/behavioral-events.ts +60 -0
  272. package/test/unit/spec/services/AddressBook.ts +37 -6
  273. package/test/unit/spec/services/AnswerCallOnWebexService.ts +264 -0
  274. package/test/unit/spec/services/ApiAiAssistant.ts +311 -21
  275. package/test/unit/spec/services/EntryPoint.ts +87 -40
  276. package/test/unit/spec/services/Queue.ts +123 -12
  277. package/test/unit/spec/services/UserPreference.ts +401 -0
  278. package/test/unit/spec/services/WebCallingService.ts +7 -1
  279. package/test/unit/spec/services/WebexCrossClientService.ts +467 -0
  280. package/test/unit/spec/services/WxAppTelephonyMercurySync.ts +136 -0
  281. package/test/unit/spec/services/config/Util.ts +129 -0
  282. package/test/unit/spec/services/config/index.ts +97 -29
  283. package/test/unit/spec/services/core/Utils.ts +425 -8
  284. package/test/unit/spec/services/core/WebexRequest.ts +3 -1
  285. package/test/unit/spec/services/core/aqm-reqs.ts +113 -1
  286. package/test/unit/spec/services/core/websocket/WebSocketManager.ts +66 -40
  287. package/test/unit/spec/services/task/AutoWrapup.ts +63 -0
  288. package/test/unit/spec/services/task/Task.ts +745 -0
  289. package/test/unit/spec/services/task/TaskFactory.ts +99 -0
  290. package/test/unit/spec/services/task/TaskManager.ts +2518 -1494
  291. package/test/unit/spec/services/task/TaskUtils.ts +235 -0
  292. package/test/unit/spec/services/task/WebexCallingUtils.ts +153 -0
  293. package/test/unit/spec/services/task/contact.ts +33 -0
  294. package/test/unit/spec/services/task/dialer.ts +190 -0
  295. package/test/unit/spec/services/task/digital/Digital.ts +105 -0
  296. package/test/unit/spec/services/task/state-machine/TaskStateMachine.ts +4060 -0
  297. package/test/unit/spec/services/task/state-machine/guards.ts +839 -0
  298. package/test/unit/spec/services/task/state-machine/types.ts +18 -0
  299. package/test/unit/spec/services/task/state-machine/uiControlsComputer.ts +3101 -0
  300. package/test/unit/spec/services/task/taskTestUtils.ts +87 -0
  301. package/test/unit/spec/services/task/voice/Voice.ts +2061 -0
  302. package/test/unit/spec/services/task/voice/WebRTC.ts +235 -0
  303. package/test/unit/spec/services/task/voice/wxAppVoiceMethods.ts +603 -0
  304. package/test/unit/spec/services/wxAppDiagnosticLogging.ts +143 -0
  305. package/test/unit/spec/wellnessSampleUtils.ts +288 -0
  306. package/umd/contact-center.min.js +2 -2
  307. package/umd/contact-center.min.js.map +1 -1
  308. package/dist/services/task/index.js +0 -1525
  309. package/dist/services/task/index.js.map +0 -1
  310. package/dist/types/services/task/index.d.ts +0 -650
  311. package/src/services/task/index.ts +0 -1801
  312. package/test/unit/spec/services/task/index.ts +0 -2184
@@ -1 +1 @@
1
- {"version":3,"names":["_loggerProxy","_interopRequireDefault","require","_MetricsManager","_constants","_constants2","_types","_Utils","_constants3","e","__esModule","default","ApiAIAssistant","constructor","webex","metricsManager","MetricsManager","getInstance","setAIFeatureFlags","aiFeature","getBaseUrl","wccApiGatewayUrl","internal","services","get","WCC_API_GATEWAY","error","detailedError","getErrorDetails","Error","METHODS","GET_BASE_URL","CC_FILE","hostname","URL","toLowerCase","resolvedEnv","AI_ASSISTANT_ENV_MAP","AI_ASSISTANT_BASE_URL_TEMPLATE","replace","sendEvent","agentId","interactionId","eventType","eventName","action","LoggerProxy","info","module","method","SEND_EVENT","data","timeEvent","METRIC_EVENT_NAMES","AI_ASSISTANT_SEND_EVENT_SUCCESS","AI_ASSISTANT_SEND_EVENT_FAILED","baseUrl","orgId","credentials","getOrgId","response","request","uri","AI_ASSISTANT_API_URLS","EVENT","HTTP_METHODS","POST","addAuthHeader","body","eventDetails","actionTimeStamp","String","Date","now","trackEvent","message","fetchHistoricTranscripts","FETCH_HISTORIC_TRANSCRIPTS","AI_ASSISTANT_FETCH_HISTORIC_TRANSCRIPTS_SUCCESS","AI_ASSISTANT_FETCH_HISTORIC_TRANSCRIPTS_FAILED","realtimeTranscripts","enable","TRANSCRIPTS_LIST","exports","_default"],"sources":["ApiAiAssistant.ts"],"sourcesContent":["import LoggerProxy from '../logger-proxy';\nimport MetricsManager from '../metrics/MetricsManager';\nimport {METRIC_EVENT_NAMES} from '../metrics/constants';\nimport {CC_FILE, METHODS} from '../constants';\nimport {\n HTTP_METHODS,\n WebexSDK,\n IHttpResponse,\n TranscriptAction,\n AIAssistantEventType,\n AIAssistantEventName,\n HistoricTranscriptsResponse,\n} from '../types';\nimport {getErrorDetails} from './core/Utils';\nimport {\n AI_ASSISTANT_BASE_URL_TEMPLATE,\n AI_ASSISTANT_ENV_MAP,\n AI_ASSISTANT_API_URLS,\n WCC_API_GATEWAY,\n} from './constants';\nimport {AIFeatureFlags} from './config/types';\n\n/**\n * ApiAIAssistant provides AI Assistant APIs for transcript controls.\n * @public\n */\nexport class ApiAIAssistant {\n private webex: WebexSDK;\n private metricsManager: MetricsManager;\n public aiFeature: AIFeatureFlags;\n\n constructor(webex: WebexSDK) {\n this.webex = webex;\n this.metricsManager = MetricsManager.getInstance({webex});\n }\n\n public setAIFeatureFlags(aiFeature: AIFeatureFlags): void {\n this.aiFeature = aiFeature;\n }\n\n private getBaseUrl(): string {\n const wccApiGatewayUrl = this.webex.internal.services.get(WCC_API_GATEWAY) || '';\n\n if (!wccApiGatewayUrl) {\n const {error: detailedError} = getErrorDetails(\n new Error('AI_ASSISTANT_BASE_URL_NOT_AVAILABLE'),\n METHODS.GET_BASE_URL,\n CC_FILE\n );\n throw detailedError;\n }\n\n let hostname = '';\n try {\n hostname = new URL(wccApiGatewayUrl).hostname.toLowerCase();\n } catch (error) {\n hostname = wccApiGatewayUrl.toLowerCase();\n }\n\n const resolvedEnv = AI_ASSISTANT_ENV_MAP[hostname];\n if (!resolvedEnv) {\n const {error: detailedError} = getErrorDetails(\n new Error('AI_ASSISTANT_BASE_URL_NOT_AVAILABLE'),\n METHODS.GET_BASE_URL,\n CC_FILE\n );\n throw detailedError;\n }\n\n return AI_ASSISTANT_BASE_URL_TEMPLATE.replace('%s', resolvedEnv);\n }\n\n /**\n * Sends an event to the AI Assistant service.\n * @param agentId - agent identifier\n * @param interactionId - interaction/conversation identifier\n * @param eventType - the type of event (e.g. 'CUSTOM_EVENT')\n * @param eventName - the name of the event (e.g. 'GET_TRANSCRIPTS')\n * @param action - action within eventDetails (e.g. 'START' or 'STOP')\n */\n public async sendEvent(\n agentId: string,\n interactionId: string,\n eventType: AIAssistantEventType,\n eventName: AIAssistantEventName,\n action: TranscriptAction\n ): Promise<Record<string, unknown>> {\n LoggerProxy.info('Sending event', {\n module: CC_FILE,\n method: METHODS.SEND_EVENT,\n interactionId,\n data: {eventType, eventName, action},\n });\n this.metricsManager.timeEvent([\n METRIC_EVENT_NAMES.AI_ASSISTANT_SEND_EVENT_SUCCESS,\n METRIC_EVENT_NAMES.AI_ASSISTANT_SEND_EVENT_FAILED,\n ]);\n\n try {\n const baseUrl = this.getBaseUrl();\n const orgId = this.webex.credentials.getOrgId();\n const response = (await this.webex.request({\n uri: `${baseUrl}${AI_ASSISTANT_API_URLS.EVENT}`,\n method: HTTP_METHODS.POST,\n addAuthHeader: true,\n body: {\n agentId,\n orgId,\n eventType,\n eventName,\n eventDetails: {\n data: {\n interactionId,\n action,\n actionTimeStamp: String(Date.now()),\n },\n },\n },\n })) as IHttpResponse;\n\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.AI_ASSISTANT_SEND_EVENT_SUCCESS,\n {agentId, orgId, interactionId, eventType, eventName, action},\n ['operational']\n );\n\n return response?.body || {};\n } catch (error) {\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.AI_ASSISTANT_SEND_EVENT_FAILED,\n {\n interactionId,\n eventType,\n eventName,\n action,\n error: error instanceof Error ? error.message : String(error),\n },\n ['operational']\n );\n\n const {error: detailedError} = getErrorDetails(error, METHODS.SEND_EVENT, CC_FILE);\n throw detailedError;\n }\n }\n\n /**\n * Fetches historic transcripts for an interaction.\n * This API is allowed only when real-time transcription feature is enabled.\n *\n * @param interactionId - interaction/conversation identifier\n */\n public async fetchHistoricTranscripts(\n agentId: string,\n interactionId: string\n ): Promise<HistoricTranscriptsResponse> {\n LoggerProxy.info('Fetching historic transcripts', {\n module: CC_FILE,\n method: METHODS.FETCH_HISTORIC_TRANSCRIPTS,\n interactionId,\n });\n this.metricsManager.timeEvent([\n METRIC_EVENT_NAMES.AI_ASSISTANT_FETCH_HISTORIC_TRANSCRIPTS_SUCCESS,\n METRIC_EVENT_NAMES.AI_ASSISTANT_FETCH_HISTORIC_TRANSCRIPTS_FAILED,\n ]);\n if (!this.aiFeature?.realtimeTranscripts?.enable) {\n const {error: detailedError} = getErrorDetails(\n new Error('REAL_TIME_TRANSCRIPTION_NOT_ENABLED'),\n METHODS.FETCH_HISTORIC_TRANSCRIPTS,\n CC_FILE\n );\n throw detailedError;\n }\n\n try {\n const baseUrl = this.getBaseUrl();\n const orgId = this.webex.credentials.getOrgId();\n const response = (await this.webex.request({\n uri: `${baseUrl}${AI_ASSISTANT_API_URLS.TRANSCRIPTS_LIST}`,\n method: HTTP_METHODS.POST,\n addAuthHeader: true,\n body: {\n agentId,\n orgId,\n interactionId,\n },\n })) as IHttpResponse;\n\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.AI_ASSISTANT_FETCH_HISTORIC_TRANSCRIPTS_SUCCESS,\n {agentId, orgId, interactionId},\n ['operational']\n );\n\n return response.body as HistoricTranscriptsResponse;\n } catch (error) {\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.AI_ASSISTANT_FETCH_HISTORIC_TRANSCRIPTS_FAILED,\n {\n interactionId,\n error: error instanceof Error ? error.message : String(error),\n },\n ['operational']\n );\n if (error instanceof Error) {\n throw error;\n }\n const {error: detailedError} = getErrorDetails(\n error,\n METHODS.FETCH_HISTORIC_TRANSCRIPTS,\n CC_FILE\n );\n throw detailedError;\n }\n }\n}\n\nexport default ApiAIAssistant;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_uuid","require","_loggerProxy","_interopRequireDefault","_MetricsManager","_constants","_constants2","_types","_Utils","_constants3","e","__esModule","default","ApiAIAssistant","createWellnessError","reason","error","Error","details","type","orgId","webex","credentials","getOrgId","trackingId","data","constructor","wellnessContextProvider","metricsManager","MetricsManager","getInstance","setAIFeatureFlags","aiFeature","sendWellnessBreakAction","action","method","timeEvent","METRIC_EVENT_NAMES","AI_ASSISTANT_WELLNESS_ACTION_ACCEPTED","AI_ASSISTANT_WELLNESS_ACTION_FAILED","context","agentId","trim","agentSessionId","isWellnessBreakEnabled","baseUrl","getBaseUrl","response","request","uri","AI_ASSISTANT_API_URLS","EVENT","HTTP_METHODS","POST","addAuthHeader","body","eventType","AIAssistantEventType","CUSTOM_EVENT","eventName","AIAssistantEventName","WELLNESS_BREAK_ACTION","eventDetails","actionTimeStamp","Date","now","statusCode","trackEvent","LoggerProxy","log","module","CC_FILE","message","String","detailedError","getErrorDetails","requestWellnessBreak","WELLNESS_BREAK_USER_ACTIONS","REQUESTED","METHODS","REQUEST_WELLNESS_BREAK","respondToWellnessBreak","params","ACCEPTED","REJECTED","NO_RESPONSE","includes","RESPOND_TO_WELLNESS_BREAK","wccApiGatewayUrl","internal","services","get","WCC_API_GATEWAY","GET_BASE_URL","hostname","URL","toLowerCase","resolvedEnv","AI_ASSISTANT_ENV_MAP","AI_ASSISTANT_BASE_URL_TEMPLATE","replace","sendEvent","interactionId","eventMetaData","languageCode","info","SEND_EVENT","AI_ASSISTANT_SEND_EVENT_SUCCESS","AI_ASSISTANT_SEND_EVENT_FAILED","getRealTimeAssistance","trimmedContext","uuidv4","ADD_SUGGESTIONS_EXTRA_CONTEXT","GET_SUGGESTIONS","loggerContext","GET_REAL_TIME_ASSISTANCE","AI_ASSISTANT_GET_REAL_TIME_ASSISTANCE_SUCCESS","AI_ASSISTANT_GET_REAL_TIME_ASSISTANCE_FAILED","suggestedResponses","enable","undefined","sendRealTimeAssistanceUserAction","adaptiveCardId","actionId","actionType","SEND_REAL_TIME_ASSISTANCE_USER_ACTION","AI_ASSISTANT_SEND_REAL_TIME_ASSISTANCE_USER_ACTION_SUCCESS","AI_ASSISTANT_SEND_REAL_TIME_ASSISTANCE_USER_ACTION_FAILED","SUGGESTED_RESPONSES_USER_ACTION","userAction","fetchHistoricTranscripts","FETCH_HISTORIC_TRANSCRIPTS","AI_ASSISTANT_FETCH_HISTORIC_TRANSCRIPTS_SUCCESS","AI_ASSISTANT_FETCH_HISTORIC_TRANSCRIPTS_FAILED","realtimeTranscripts","TRANSCRIPTS_LIST","exports","_default"],"sources":["ApiAiAssistant.ts"],"sourcesContent":["import {v4 as uuidv4} from 'uuid';\nimport LoggerProxy from '../logger-proxy';\nimport MetricsManager from '../metrics/MetricsManager';\nimport {METRIC_EVENT_NAMES} from '../metrics/constants';\nimport {CC_FILE, METHODS} from '../constants';\nimport {\n HTTP_METHODS,\n WebexSDK,\n IHttpResponse,\n AIAssistantEventType,\n AIAssistantEventName,\n HistoricTranscriptsResponse,\n RealTimeAssistanceParams,\n RealTimeAssistanceUserActionParams,\n RespondToWellnessBreakParams,\n WellnessBreakUserAction,\n WELLNESS_BREAK_USER_ACTIONS,\n GenericError,\n} from '../types';\nimport {getErrorDetails} from './core/Utils';\nimport {\n AI_ASSISTANT_BASE_URL_TEMPLATE,\n AI_ASSISTANT_ENV_MAP,\n AI_ASSISTANT_API_URLS,\n WCC_API_GATEWAY,\n} from './constants';\nimport {AIFeatureFlags} from './config/types';\n\ntype WellnessBreakContextProvider = () => {\n isWellnessBreakEnabled: boolean;\n agentId?: string;\n agentSessionId?: string;\n};\n\n/**\n * ApiAIAssistant provides AI Assistant APIs for transcript controls.\n * @public\n */\nexport class ApiAIAssistant {\n private webex: WebexSDK;\n private metricsManager: MetricsManager;\n private aiFeature: AIFeatureFlags;\n private readonly wellnessContextProvider?: WellnessBreakContextProvider;\n\n private createWellnessError(reason: string): GenericError {\n const error = new Error(reason) as GenericError;\n error.details = {\n type: 'SDK_VALIDATION_ERROR',\n orgId: this.webex.credentials.getOrgId(),\n trackingId: '',\n data: {reason},\n };\n\n return error;\n }\n\n constructor(webex: WebexSDK, wellnessContextProvider?: WellnessBreakContextProvider) {\n this.webex = webex;\n this.wellnessContextProvider = wellnessContextProvider;\n this.metricsManager = MetricsManager.getInstance({webex});\n }\n\n public setAIFeatureFlags(aiFeature: AIFeatureFlags): void {\n this.aiFeature = aiFeature;\n }\n\n private async sendWellnessBreakAction(\n action: WellnessBreakUserAction,\n method: string\n ): Promise<void> {\n this.metricsManager.timeEvent([\n METRIC_EVENT_NAMES.AI_ASSISTANT_WELLNESS_ACTION_ACCEPTED,\n METRIC_EVENT_NAMES.AI_ASSISTANT_WELLNESS_ACTION_FAILED,\n ]);\n\n try {\n const context = this.wellnessContextProvider?.();\n const agentId = context?.agentId?.trim();\n const agentSessionId = context?.agentSessionId?.trim();\n const orgId = this.webex.credentials.getOrgId()?.trim();\n\n if (context?.isWellnessBreakEnabled !== true) {\n throw this.createWellnessError('WELLNESS_BREAK_NOT_ENABLED');\n }\n if (!orgId) {\n throw this.createWellnessError('WELLNESS_BREAK_ORG_ID_REQUIRED');\n }\n if (!agentId) {\n throw this.createWellnessError('WELLNESS_BREAK_AGENT_ID_REQUIRED');\n }\n if (!agentSessionId) {\n throw this.createWellnessError('WELLNESS_BREAK_AGENT_SESSION_REQUIRED');\n }\n\n const baseUrl = this.getBaseUrl();\n const response = (await this.webex.request({\n uri: `${baseUrl}${AI_ASSISTANT_API_URLS.EVENT}`,\n method: HTTP_METHODS.POST,\n addAuthHeader: true,\n body: {\n agentId,\n orgId,\n eventType: AIAssistantEventType.CUSTOM_EVENT,\n eventName: AIAssistantEventName.WELLNESS_BREAK_ACTION,\n eventDetails: {\n data: {\n action,\n agentSessionId,\n actionTimeStamp: Date.now(),\n },\n },\n },\n })) as IHttpResponse;\n\n if (response.statusCode !== 202) {\n throw this.createWellnessError(\n `WELLNESS_BREAK_ACTION_UNEXPECTED_STATUS_${response.statusCode}`\n );\n }\n\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.AI_ASSISTANT_WELLNESS_ACTION_ACCEPTED,\n {action},\n ['operational']\n );\n LoggerProxy.log('Wellness action accepted by AI Assistant', {\n module: CC_FILE,\n method,\n data: {action},\n });\n } catch (error) {\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.AI_ASSISTANT_WELLNESS_ACTION_FAILED,\n {\n action,\n error: error instanceof Error ? error.message : String(error),\n },\n ['operational']\n );\n const {error: detailedError} = getErrorDetails(error, method, CC_FILE);\n throw detailedError;\n }\n }\n\n /**\n * Requests an Agent Wellness Break.\n * The promise resolves when the HTTP request is accepted with status 202; the later\n * approval or denial is delivered independently through a wellness notification.\n * @returns A promise that resolves with no value after HTTP acceptance\n * @throws Structured Contact Center error when disabled, stale, invalid, or delivery fails\n * @example\n * await webex.cc.apiAIAssistant.requestWellnessBreak();\n * @public\n */\n public async requestWellnessBreak(): Promise<void> {\n return this.sendWellnessBreakAction(\n WELLNESS_BREAK_USER_ACTIONS.REQUESTED,\n METHODS.REQUEST_WELLNESS_BREAK\n );\n }\n\n /**\n * Responds to a backend-provided Agent Wellness Break offer.\n * The promise resolves when the HTTP request is accepted with status 202 and does not\n * wait for a WebSocket completion event.\n * @param params - ACCEPTED, REJECTED, or NO_RESPONSE\n * @returns A promise that resolves with no value after HTTP acceptance\n * @throws Structured Contact Center error when disabled, stale, invalid, or delivery fails\n * @example\n * await webex.cc.apiAIAssistant.respondToWellnessBreak({\n * action: WELLNESS_BREAK_USER_ACTIONS.ACCEPTED,\n * });\n * @public\n */\n public async respondToWellnessBreak(params: RespondToWellnessBreakParams): Promise<void> {\n const {action} = params;\n if (\n ![\n WELLNESS_BREAK_USER_ACTIONS.ACCEPTED,\n WELLNESS_BREAK_USER_ACTIONS.REJECTED,\n WELLNESS_BREAK_USER_ACTIONS.NO_RESPONSE,\n ].includes(action)\n ) {\n const {error} = getErrorDetails(\n this.createWellnessError('WELLNESS_BREAK_ACTION_INVALID'),\n METHODS.RESPOND_TO_WELLNESS_BREAK,\n CC_FILE\n );\n throw error;\n }\n\n return this.sendWellnessBreakAction(action, METHODS.RESPOND_TO_WELLNESS_BREAK);\n }\n\n private getBaseUrl(): string {\n const wccApiGatewayUrl = this.webex.internal.services.get(WCC_API_GATEWAY) || '';\n\n if (!wccApiGatewayUrl) {\n const {error: detailedError} = getErrorDetails(\n new Error('AI_ASSISTANT_BASE_URL_NOT_AVAILABLE'),\n METHODS.GET_BASE_URL,\n CC_FILE\n );\n throw detailedError;\n }\n\n let hostname = '';\n try {\n hostname = new URL(wccApiGatewayUrl).hostname.toLowerCase();\n } catch (error) {\n hostname = wccApiGatewayUrl.toLowerCase();\n }\n\n const resolvedEnv = AI_ASSISTANT_ENV_MAP[hostname];\n if (!resolvedEnv) {\n const {error: detailedError} = getErrorDetails(\n new Error('AI_ASSISTANT_BASE_URL_NOT_AVAILABLE'),\n METHODS.GET_BASE_URL,\n CC_FILE\n );\n throw detailedError;\n }\n\n return AI_ASSISTANT_BASE_URL_TEMPLATE.replace('%s', resolvedEnv);\n }\n\n /**\n * Sends an event to the AI Assistant service.\n * @param agentId - agent identifier\n * @param interactionId - interaction/conversation identifier\n * @param eventType - the type of event (e.g. 'CUSTOM_EVENT')\n * @param eventName - the name of the event (e.g. 'GET_TRANSCRIPTS')\n * @param eventMetaData - event-specific fields to include in eventDetails.data\n * @param languageCode - language code within eventDetails.data\n * @param trackingId - tracking identifier within eventDetails.data\n */\n public async sendEvent(\n agentId: string,\n interactionId: string,\n eventType: AIAssistantEventType,\n eventName: AIAssistantEventName,\n eventMetaData?: Record<string, unknown>,\n languageCode?: string,\n trackingId?: string\n ): Promise<Record<string, unknown>> {\n LoggerProxy.info('Sending event', {\n module: CC_FILE,\n method: METHODS.SEND_EVENT,\n interactionId,\n data: {eventType, eventName, eventMetaData},\n });\n this.metricsManager.timeEvent([\n METRIC_EVENT_NAMES.AI_ASSISTANT_SEND_EVENT_SUCCESS,\n METRIC_EVENT_NAMES.AI_ASSISTANT_SEND_EVENT_FAILED,\n ]);\n\n try {\n const baseUrl = this.getBaseUrl();\n const orgId = this.webex.credentials.getOrgId();\n const response = (await this.webex.request({\n uri: `${baseUrl}${AI_ASSISTANT_API_URLS.EVENT}`,\n method: HTTP_METHODS.POST,\n addAuthHeader: true,\n body: {\n agentId,\n orgId,\n eventType,\n eventName,\n eventDetails: {\n data: {\n ...eventMetaData,\n interactionId,\n actionTimeStamp: String(Date.now()),\n languageCode,\n trackingId,\n },\n },\n },\n })) as IHttpResponse;\n\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.AI_ASSISTANT_SEND_EVENT_SUCCESS,\n {agentId, orgId, interactionId, eventType, eventName},\n ['operational']\n );\n\n return response?.body || {};\n } catch (error) {\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.AI_ASSISTANT_SEND_EVENT_FAILED,\n {\n interactionId,\n eventType,\n eventName,\n error: error instanceof Error ? error.message : String(error),\n },\n ['operational']\n );\n\n const {error: detailedError} = getErrorDetails(error, METHODS.SEND_EVENT, CC_FILE);\n throw detailedError;\n }\n }\n\n /**\n * Requests real-time assistance for an interaction.\n *\n * @param params - Real-time assistance request parameters\n * @returns HTTP response body from the AI Assistant event API\n * @public\n */\n public async getRealTimeAssistance(params: RealTimeAssistanceParams) {\n const {agentId, interactionId, context} = params;\n const trimmedContext = context?.trim();\n const languageCode = params.languageCode ?? 'en';\n const trackingId = `WX_CC_SDK_${uuidv4()}`;\n const eventName = trimmedContext\n ? AIAssistantEventName.ADD_SUGGESTIONS_EXTRA_CONTEXT\n : AIAssistantEventName.GET_SUGGESTIONS;\n\n const loggerContext = {\n module: CC_FILE,\n method: METHODS.GET_REAL_TIME_ASSISTANCE,\n interactionId,\n trackingId,\n data: {eventName},\n };\n\n LoggerProxy.info('Requesting real-time assistance', loggerContext);\n\n this.metricsManager.timeEvent([\n METRIC_EVENT_NAMES.AI_ASSISTANT_GET_REAL_TIME_ASSISTANCE_SUCCESS,\n METRIC_EVENT_NAMES.AI_ASSISTANT_GET_REAL_TIME_ASSISTANCE_FAILED,\n ]);\n\n try {\n if (!this.aiFeature?.suggestedResponses?.enable) {\n const {error: detailedError} = getErrorDetails(\n new Error('SUGGESTED_RESPONSES_NOT_ENABLED'),\n METHODS.GET_REAL_TIME_ASSISTANCE,\n CC_FILE\n );\n throw detailedError;\n }\n\n const orgId = this.webex.credentials.getOrgId();\n\n const response = await this.sendEvent(\n agentId,\n interactionId,\n AIAssistantEventType.CUSTOM_EVENT,\n eventName,\n trimmedContext !== undefined ? {context: trimmedContext} : undefined,\n languageCode,\n trackingId\n );\n\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.AI_ASSISTANT_GET_REAL_TIME_ASSISTANCE_SUCCESS,\n {\n agentId,\n orgId,\n interactionId,\n eventName,\n trackingId,\n context,\n },\n ['operational']\n );\n LoggerProxy.log('Real-time assistance request succeeded', loggerContext);\n\n return response;\n } catch (error) {\n LoggerProxy.error('Real-time assistance request failed', {...loggerContext, error});\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.AI_ASSISTANT_GET_REAL_TIME_ASSISTANCE_FAILED,\n {\n agentId,\n interactionId,\n trackingId,\n eventName,\n error: error instanceof Error ? error.message : String(error),\n },\n ['operational']\n );\n\n const {error: detailedError} = getErrorDetails(\n error,\n METHODS.GET_REAL_TIME_ASSISTANCE,\n CC_FILE\n );\n throw detailedError;\n }\n }\n\n /**\n * Sends user action feedback for a real-time assistance adaptive card.\n *\n * @param params - Real-time assistance user action parameters\n * @returns HTTP response body from the AI Assistant event API\n * @public\n */\n public async sendRealTimeAssistanceUserAction(\n params: RealTimeAssistanceUserActionParams\n ): Promise<Record<string, unknown>> {\n const {agentId, interactionId, adaptiveCardId, actionId} = params;\n const actionType = 'Action.Submit';\n const languageCode = params.languageCode ?? 'en';\n const trackingId = `WX_CC_SDK_${uuidv4()}`;\n\n const loggerContext = {\n module: CC_FILE,\n method: METHODS.SEND_REAL_TIME_ASSISTANCE_USER_ACTION,\n interactionId,\n trackingId,\n data: {actionId, adaptiveCardId},\n };\n\n LoggerProxy.info('Sending real-time assistance user action', loggerContext);\n\n this.metricsManager.timeEvent([\n METRIC_EVENT_NAMES.AI_ASSISTANT_SEND_REAL_TIME_ASSISTANCE_USER_ACTION_SUCCESS,\n METRIC_EVENT_NAMES.AI_ASSISTANT_SEND_REAL_TIME_ASSISTANCE_USER_ACTION_FAILED,\n ]);\n\n try {\n if (!this.aiFeature?.suggestedResponses?.enable) {\n const {error: detailedError} = getErrorDetails(\n new Error('SUGGESTED_RESPONSES_NOT_ENABLED'),\n METHODS.SEND_REAL_TIME_ASSISTANCE_USER_ACTION,\n CC_FILE\n );\n throw detailedError;\n }\n\n const orgId = this.webex.credentials.getOrgId();\n const response = await this.sendEvent(\n agentId,\n interactionId,\n AIAssistantEventType.CUSTOM_EVENT,\n AIAssistantEventName.SUGGESTED_RESPONSES_USER_ACTION,\n {\n adaptiveCardId,\n userAction: {\n actionType,\n actionId,\n },\n },\n languageCode,\n trackingId\n );\n\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.AI_ASSISTANT_SEND_REAL_TIME_ASSISTANCE_USER_ACTION_SUCCESS,\n {\n agentId,\n orgId,\n interactionId,\n adaptiveCardId,\n actionId,\n trackingId,\n },\n ['operational']\n );\n LoggerProxy.log('Real-time assistance user action sent', loggerContext);\n\n return response;\n } catch (error) {\n LoggerProxy.error('Real-time assistance user action failed', {...loggerContext, error});\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.AI_ASSISTANT_SEND_REAL_TIME_ASSISTANCE_USER_ACTION_FAILED,\n {\n agentId,\n interactionId,\n adaptiveCardId,\n actionId,\n trackingId,\n error: error instanceof Error ? error.message : String(error),\n },\n ['operational']\n );\n\n const {error: detailedError} = getErrorDetails(\n error,\n METHODS.SEND_REAL_TIME_ASSISTANCE_USER_ACTION,\n CC_FILE\n );\n throw detailedError;\n }\n }\n\n /**\n * Fetches historic transcripts for an interaction.\n * This API is allowed only when real-time transcription feature is enabled.\n *\n * @param interactionId - interaction/conversation identifier\n */\n public async fetchHistoricTranscripts(\n agentId: string,\n interactionId: string\n ): Promise<HistoricTranscriptsResponse> {\n LoggerProxy.info('Fetching historic transcripts', {\n module: CC_FILE,\n method: METHODS.FETCH_HISTORIC_TRANSCRIPTS,\n interactionId,\n });\n this.metricsManager.timeEvent([\n METRIC_EVENT_NAMES.AI_ASSISTANT_FETCH_HISTORIC_TRANSCRIPTS_SUCCESS,\n METRIC_EVENT_NAMES.AI_ASSISTANT_FETCH_HISTORIC_TRANSCRIPTS_FAILED,\n ]);\n if (!this.aiFeature?.realtimeTranscripts?.enable) {\n const {error: detailedError} = getErrorDetails(\n new Error('REAL_TIME_TRANSCRIPTION_NOT_ENABLED'),\n METHODS.FETCH_HISTORIC_TRANSCRIPTS,\n CC_FILE\n );\n throw detailedError;\n }\n\n try {\n const baseUrl = this.getBaseUrl();\n const orgId = this.webex.credentials.getOrgId();\n const response = (await this.webex.request({\n uri: `${baseUrl}${AI_ASSISTANT_API_URLS.TRANSCRIPTS_LIST}`,\n method: HTTP_METHODS.POST,\n addAuthHeader: true,\n body: {\n agentId,\n orgId,\n interactionId,\n },\n })) as IHttpResponse;\n\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.AI_ASSISTANT_FETCH_HISTORIC_TRANSCRIPTS_SUCCESS,\n {agentId, orgId, interactionId},\n ['operational']\n );\n\n return response.body as HistoricTranscriptsResponse;\n } catch (error) {\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.AI_ASSISTANT_FETCH_HISTORIC_TRANSCRIPTS_FAILED,\n {\n interactionId,\n error: error instanceof Error ? error.message : String(error),\n },\n ['operational']\n );\n\n if (error instanceof Error) {\n throw error;\n }\n const {error: detailedError} = getErrorDetails(\n error,\n METHODS.FETCH_HISTORIC_TRANSCRIPTS,\n CC_FILE\n );\n throw detailedError;\n }\n }\n}\n\nexport default ApiAIAssistant;\n"],"mappings":"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","ignoreList":[]}
@@ -7,13 +7,27 @@ exports.default = exports.EntryPoint = void 0;
7
7
  var _types = require("../types");
8
8
  var _loggerProxy = _interopRequireDefault(require("../logger-proxy"));
9
9
  var _WebexRequest = _interopRequireDefault(require("./core/WebexRequest"));
10
- var _PageCache = _interopRequireWildcard(require("../utils/PageCache"));
10
+ var _PageCache = require("../utils/PageCache");
11
11
  var _MetricsManager = _interopRequireDefault(require("../metrics/MetricsManager"));
12
12
  var _constants = require("./constants");
13
13
  var _constants2 = require("./config/constants");
14
14
  var _constants3 = require("../metrics/constants");
15
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
16
15
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
16
+ const DEFAULT_ENTRY_POINT_ATTRIBUTES = 'id,dialledNumber,entryPointId,entryPointName';
17
+ const DEFAULT_ENTRY_POINT_SORT_FIELD = 'entryPointName';
18
+ const mergeEntryPointAttributes = attributes => {
19
+ const mergedAttributes = new Set(DEFAULT_ENTRY_POINT_ATTRIBUTES.split(','));
20
+ attributes?.split(',').map(attribute => attribute.trim()).filter(Boolean).forEach(attribute => mergedAttributes.add(attribute));
21
+ return Array.from(mergedAttributes).join(',');
22
+ };
23
+ const mapDialNumberEntryPoint = item => ({
24
+ id: item.entryPointId,
25
+ name: item.entryPointName,
26
+ ...(item.dialledNumber ? {
27
+ number: item.dialledNumber
28
+ } : {})
29
+ });
30
+
17
31
  /**
18
32
  * EntryPoint class for managing Webex Contact Center entry points.
19
33
  * Provides functionality to fetch, search, and paginate through entry points.
@@ -41,15 +55,13 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
41
55
  * });
42
56
  *
43
57
  * // Search for specific entry points
44
- * const searchResults = await entryPointAPI.searchEntryPoints({
58
+ * const searchResults = await entryPointAPI.getEntryPoints({
45
59
  * search: 'support',
46
60
  * filter: 'type=="voice"'
47
61
  * });
48
62
  * ```
49
63
  */
50
64
  class EntryPoint {
51
- // Page cache using the common utility
52
-
53
65
  /**
54
66
  * Creates an instance of EntryPoint
55
67
  * @param {WebexSDK} webex - The Webex SDK instance
@@ -60,21 +72,23 @@ class EntryPoint {
60
72
  this.webexRequest = _WebexRequest.default.getInstance({
61
73
  webex
62
74
  });
63
- this.pageCache = new _PageCache.default('EntryPoint');
64
75
  this.metricsManager = _MetricsManager.default.getInstance({
65
76
  webex
66
77
  });
67
78
  }
68
79
 
69
80
  /**
70
- * Fetches entry points for the organization with pagination support
71
- * @param {EntryPointSearchParams} [params] - Search and pagination parameters
81
+ * Fetches entry-point dial-number mappings for the organization with pagination support. By
82
+ * default, returns the agent's desktop-profile-filtered mappings in backend entry-point-name order.
83
+ * Search, filter, attribute, and sort parameters can customize the request while desktop-profile
84
+ * scoping and required mapping fields remain SDK-owned.
85
+ * @param {EntryPointSearchParams} [params] - Search, pagination, and compatible override parameters.
72
86
  * @returns {Promise<EntryPointListResponse>} Promise resolving to paginated entry points
73
87
  * @throws {Error} If the API call fails
74
88
  * @public
75
89
  * @example
76
90
  * ```typescript
77
- * // Get first page of entry points
91
+ * // Get the first page using the default entry-point policy
78
92
  * const response = await entryPointAPI.getEntryPoints();
79
93
  *
80
94
  * // Get specific page with custom page size
@@ -92,57 +106,32 @@ class EntryPoint {
92
106
  search,
93
107
  filter,
94
108
  attributes,
95
- sortBy,
109
+ sortBy = 'name',
96
110
  sortOrder = 'asc'
97
111
  } = params;
98
112
  const orgId = this.webex.credentials.getOrgId();
99
- const isSearchRequest = !!(search || filter || attributes || sortBy);
113
+ const hasCustomSort = sortBy !== 'name' || sortOrder !== 'asc';
114
+ const isSearchRequest = !!(search || filter || attributes || hasCustomSort);
115
+ const effectiveSortBy = sortBy === 'name' ? DEFAULT_ENTRY_POINT_SORT_FIELD : sortBy;
100
116
  _loggerProxy.default.info(`Fetching entry points - orgId: ${orgId}, page: ${page}, pageSize: ${pageSize}, isSearchRequest: ${isSearchRequest}`, {
101
117
  module: 'EntryPoint',
102
118
  method: 'getEntryPoints'
103
119
  });
104
-
105
- // Check if we can use cache for simple pagination (no search/filter/attributes/sort)
106
- if (this.pageCache.canUseCache({
107
- search,
108
- filter,
109
- attributes,
110
- sortBy
111
- })) {
112
- const cacheKey = this.pageCache.buildCacheKey(orgId, page, pageSize);
113
- const cachedPage = this.pageCache.getCachedPage(cacheKey);
114
- if (cachedPage) {
115
- const duration = Date.now() - startTime;
116
- _loggerProxy.default.log(`Returning page ${page} from cache - cacheHit: true, duration: ${duration}ms, recordCount: ${cachedPage.data.length}, pageSize: ${pageSize}`, {
117
- module: 'EntryPoint',
118
- method: 'getEntryPoints'
119
- });
120
- return {
121
- data: cachedPage.data,
122
- meta: {
123
- page,
124
- pageSize,
125
- totalPages: cachedPage.totalMeta?.totalPages,
126
- totalRecords: cachedPage.totalMeta?.totalRecords
127
- }
128
- };
129
- }
130
- }
131
-
132
- // Start timing only for actual API calls (not cache hits)
133
120
  this.metricsManager.timeEvent(_constants3.METRIC_EVENT_NAMES.ENTRYPOINT_FETCH_SUCCESS);
134
121
  try {
135
- // Build query parameters
136
122
  const queryParams = new URLSearchParams({
137
123
  page: page.toString(),
138
124
  pageSize: pageSize.toString(),
139
- sortOrder
125
+ attributes: mergeEntryPointAttributes(attributes)
140
126
  });
141
127
  if (search) queryParams.append('search', search);
142
128
  if (filter) queryParams.append('filter', filter);
143
- if (attributes) queryParams.append('attributes', attributes);
144
- if (sortBy) queryParams.append('sortBy', sortBy);
145
- const resource = _constants2.endPointMap.entryPointList(orgId, queryParams.toString());
129
+ if (effectiveSortBy) {
130
+ queryParams.append('sort', `${effectiveSortBy},${sortOrder.toUpperCase()}`);
131
+ }
132
+ queryParams.append('desktopProfileFilter', 'true');
133
+ queryParams.append('includeEntryPointName', 'true');
134
+ const resource = _constants2.endPointMap.entryPointDialNumberList(orgId, queryParams.toString());
146
135
  _loggerProxy.default.log(`Making API request to fetch entry points - resource: ${resource}, service: ${_constants.WCC_API_GATEWAY}`, {
147
136
  module: 'EntryPoint',
148
137
  method: 'getEntryPoints'
@@ -150,11 +139,19 @@ class EntryPoint {
150
139
  const response = await this.webexRequest.request({
151
140
  service: _constants.WCC_API_GATEWAY,
152
141
  resource,
153
- method: _types.HTTP_METHODS.GET
142
+ method: _types.HTTP_METHODS.GET,
143
+ headers: {
144
+ 'X-ORGANIZATION-ID': orgId,
145
+ 'x-ignore-internal-data': 'false'
146
+ }
154
147
  });
148
+ const responseBody = {
149
+ ...response.body,
150
+ data: (response.body?.data ?? []).map(mapDialNumberEntryPoint)
151
+ };
155
152
  const duration = Date.now() - startTime;
156
- const recordCount = response.body?.data?.length || 0;
157
- const totalRecords = response.body?.meta?.totalRecords;
153
+ const recordCount = responseBody.data.length;
154
+ const totalRecords = responseBody.meta?.totalRecords;
158
155
  _loggerProxy.default.log(`Successfully retrieved ${recordCount} entry points`, {
159
156
  module: 'EntryPoint',
160
157
  method: 'getEntryPoints',
@@ -180,26 +177,7 @@ class EntryPoint {
180
177
  isFirstPage: page === 0
181
178
  }, ['behavioral']);
182
179
  }
183
-
184
- // Cache the page data for simple pagination (no search/filter/attributes/sort)
185
- if (this.pageCache.canUseCache({
186
- search,
187
- filter,
188
- attributes,
189
- sortBy
190
- }) && response.body?.data) {
191
- const cacheKey = this.pageCache.buildCacheKey(orgId, page, pageSize);
192
- this.pageCache.cachePage(cacheKey, response.body.data, response.body.meta);
193
- _loggerProxy.default.log('Cached entry points data for future requests', {
194
- module: 'EntryPoint',
195
- method: 'getEntryPoints',
196
- data: {
197
- cacheKey,
198
- recordCount
199
- }
200
- });
201
- }
202
- return response.body;
180
+ return responseBody;
203
181
  } catch (error) {
204
182
  const errorData = {
205
183
  orgId,
@@ -1 +1 @@
1
- {"version":3,"names":["_types","require","_loggerProxy","_interopRequireDefault","_WebexRequest","_PageCache","_interopRequireWildcard","_MetricsManager","_constants","_constants2","_constants3","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","EntryPoint","constructor","webex","webexRequest","WebexRequest","getInstance","pageCache","PageCache","metricsManager","MetricsManager","getEntryPoints","params","startTime","Date","now","page","PAGINATION_DEFAULTS","PAGE","pageSize","PAGE_SIZE","search","filter","attributes","sortBy","sortOrder","orgId","credentials","getOrgId","isSearchRequest","LoggerProxy","info","module","method","canUseCache","cacheKey","buildCacheKey","cachedPage","getCachedPage","duration","log","data","length","meta","totalPages","totalMeta","totalRecords","timeEvent","METRIC_EVENT_NAMES","ENTRYPOINT_FETCH_SUCCESS","queryParams","URLSearchParams","toString","append","resource","endPointMap","entryPointList","WCC_API_GATEWAY","response","request","service","HTTP_METHODS","GET","recordCount","body","statusCode","trackEvent","isFirstPage","cachePage","error","errorData","Error","message","String","ENTRYPOINT_FETCH_FAILED","exports","_default"],"sources":["EntryPoint.ts"],"sourcesContent":["import {HTTP_METHODS, WebexSDK} from '../types';\nimport type {EntryPointRecord, EntryPointListResponse, EntryPointSearchParams} from '../types';\nimport LoggerProxy from '../logger-proxy';\nimport WebexRequest from './core/WebexRequest';\nimport PageCache, {PAGINATION_DEFAULTS} from '../utils/PageCache';\nimport MetricsManager from '../metrics/MetricsManager';\nimport {WCC_API_GATEWAY} from './constants';\nimport {endPointMap} from './config/constants';\nimport {METRIC_EVENT_NAMES} from '../metrics/constants';\n\n/**\n * EntryPoint class for managing Webex Contact Center entry points.\n * Provides functionality to fetch, search, and paginate through entry points.\n *\n * @class EntryPoint\n * @public\n * @example\n * ```typescript\n * import Webex from 'webex';\n *\n * const webex = new Webex({ credentials: 'YOUR_ACCESS_TOKEN' });\n * const cc = webex.cc;\n *\n * // Register and login first\n * await cc.register();\n * await cc.stationLogin({ teamId: 'team123', loginOption: 'BROWSER' });\n *\n * // Get EntryPoint API instance from ContactCenter\n * const entryPointAPI = cc.entryPoint;\n *\n * // Get all entry points with pagination\n * const response = await entryPointAPI.getEntryPoints({\n * page: 0,\n * pageSize: 50\n * });\n *\n * // Search for specific entry points\n * const searchResults = await entryPointAPI.searchEntryPoints({\n * search: 'support',\n * filter: 'type==\"voice\"'\n * });\n * ```\n */\nexport class EntryPoint {\n private webexRequest: WebexRequest;\n private webex: WebexSDK;\n private metricsManager: MetricsManager;\n\n // Page cache using the common utility\n private pageCache: PageCache<EntryPointRecord>;\n\n /**\n * Creates an instance of EntryPoint\n * @param {WebexSDK} webex - The Webex SDK instance\n * @public\n */\n constructor(webex: WebexSDK) {\n this.webex = webex;\n this.webexRequest = WebexRequest.getInstance({webex});\n this.pageCache = new PageCache<EntryPointRecord>('EntryPoint');\n this.metricsManager = MetricsManager.getInstance({webex});\n }\n\n /**\n * Fetches entry points for the organization with pagination support\n * @param {EntryPointSearchParams} [params] - Search and pagination parameters\n * @returns {Promise<EntryPointListResponse>} Promise resolving to paginated entry points\n * @throws {Error} If the API call fails\n * @public\n * @example\n * ```typescript\n * // Get first page of entry points\n * const response = await entryPointAPI.getEntryPoints();\n *\n * // Get specific page with custom page size\n * const response = await entryPointAPI.getEntryPoints({\n * page: 2,\n * pageSize: 25\n * });\n * ```\n */\n public async getEntryPoints(\n params: EntryPointSearchParams = {}\n ): Promise<EntryPointListResponse> {\n const startTime = Date.now();\n const {\n page = PAGINATION_DEFAULTS.PAGE,\n pageSize = PAGINATION_DEFAULTS.PAGE_SIZE,\n search,\n filter,\n attributes,\n sortBy,\n sortOrder = 'asc',\n } = params;\n\n const orgId = this.webex.credentials.getOrgId();\n const isSearchRequest = !!(search || filter || attributes || sortBy);\n\n LoggerProxy.info(\n `Fetching entry points - orgId: ${orgId}, page: ${page}, pageSize: ${pageSize}, isSearchRequest: ${isSearchRequest}`,\n {\n module: 'EntryPoint',\n method: 'getEntryPoints',\n }\n );\n\n // Check if we can use cache for simple pagination (no search/filter/attributes/sort)\n if (this.pageCache.canUseCache({search, filter, attributes, sortBy})) {\n const cacheKey = this.pageCache.buildCacheKey(orgId, page, pageSize);\n const cachedPage = this.pageCache.getCachedPage(cacheKey);\n\n if (cachedPage) {\n const duration = Date.now() - startTime;\n\n LoggerProxy.log(\n `Returning page ${page} from cache - cacheHit: true, duration: ${duration}ms, recordCount: ${cachedPage.data.length}, pageSize: ${pageSize}`,\n {\n module: 'EntryPoint',\n method: 'getEntryPoints',\n }\n );\n\n return {\n data: cachedPage.data,\n meta: {\n page,\n pageSize,\n totalPages: cachedPage.totalMeta?.totalPages,\n totalRecords: cachedPage.totalMeta?.totalRecords,\n },\n };\n }\n }\n\n // Start timing only for actual API calls (not cache hits)\n this.metricsManager.timeEvent(METRIC_EVENT_NAMES.ENTRYPOINT_FETCH_SUCCESS);\n\n try {\n // Build query parameters\n const queryParams = new URLSearchParams({\n page: page.toString(),\n pageSize: pageSize.toString(),\n sortOrder,\n });\n\n if (search) queryParams.append('search', search);\n if (filter) queryParams.append('filter', filter);\n if (attributes) queryParams.append('attributes', attributes);\n if (sortBy) queryParams.append('sortBy', sortBy);\n\n const resource = endPointMap.entryPointList(orgId, queryParams.toString());\n\n LoggerProxy.log(\n `Making API request to fetch entry points - resource: ${resource}, service: ${WCC_API_GATEWAY}`,\n {\n module: 'EntryPoint',\n method: 'getEntryPoints',\n }\n );\n\n const response = await this.webexRequest.request({\n service: WCC_API_GATEWAY,\n resource,\n method: HTTP_METHODS.GET,\n });\n\n const duration = Date.now() - startTime;\n\n const recordCount = response.body?.data?.length || 0;\n const totalRecords = response.body?.meta?.totalRecords;\n\n LoggerProxy.log(`Successfully retrieved ${recordCount} entry points`, {\n module: 'EntryPoint',\n method: 'getEntryPoints',\n data: {\n statusCode: response.statusCode,\n duration,\n recordCount,\n totalRecords,\n isSearchRequest,\n page,\n pageSize,\n },\n });\n\n // Only track metrics for search requests or first page loads to reduce metric volume\n if (isSearchRequest || page === 0) {\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.ENTRYPOINT_FETCH_SUCCESS,\n {\n orgId,\n statusCode: response.statusCode,\n recordCount,\n totalRecords,\n isSearchRequest,\n isFirstPage: page === 0,\n },\n ['behavioral']\n );\n }\n\n // Cache the page data for simple pagination (no search/filter/attributes/sort)\n if (this.pageCache.canUseCache({search, filter, attributes, sortBy}) && response.body?.data) {\n const cacheKey = this.pageCache.buildCacheKey(orgId, page, pageSize);\n this.pageCache.cachePage(cacheKey, response.body.data, response.body.meta);\n\n LoggerProxy.log('Cached entry points data for future requests', {\n module: 'EntryPoint',\n method: 'getEntryPoints',\n data: {cacheKey, recordCount},\n });\n }\n\n return response.body;\n } catch (error) {\n const errorData = {\n orgId,\n error: error instanceof Error ? error.message : String(error),\n isSearchRequest,\n page,\n pageSize,\n };\n\n LoggerProxy.error(`Failed to fetch entry points`, {\n module: 'EntryPoint',\n method: 'getEntryPoints',\n data: errorData,\n error,\n });\n\n // Track all failures for troubleshooting\n this.metricsManager.trackEvent(METRIC_EVENT_NAMES.ENTRYPOINT_FETCH_FAILED, errorData, [\n 'behavioral',\n ]);\n\n throw error;\n }\n }\n}\n\nexport default EntryPoint;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_types","require","_loggerProxy","_interopRequireDefault","_WebexRequest","_PageCache","_MetricsManager","_constants","_constants2","_constants3","e","__esModule","default","DEFAULT_ENTRY_POINT_ATTRIBUTES","DEFAULT_ENTRY_POINT_SORT_FIELD","mergeEntryPointAttributes","attributes","mergedAttributes","Set","split","map","attribute","trim","filter","Boolean","forEach","add","Array","from","join","mapDialNumberEntryPoint","item","id","entryPointId","name","entryPointName","dialledNumber","number","EntryPoint","constructor","webex","webexRequest","WebexRequest","getInstance","metricsManager","MetricsManager","getEntryPoints","params","startTime","Date","now","page","PAGINATION_DEFAULTS","PAGE","pageSize","PAGE_SIZE","search","sortBy","sortOrder","orgId","credentials","getOrgId","hasCustomSort","isSearchRequest","effectiveSortBy","LoggerProxy","info","module","method","timeEvent","METRIC_EVENT_NAMES","ENTRYPOINT_FETCH_SUCCESS","queryParams","URLSearchParams","toString","append","toUpperCase","resource","endPointMap","entryPointDialNumberList","log","WCC_API_GATEWAY","response","request","service","HTTP_METHODS","GET","headers","responseBody","body","data","duration","recordCount","length","totalRecords","meta","statusCode","trackEvent","isFirstPage","error","errorData","Error","message","String","ENTRYPOINT_FETCH_FAILED","exports","_default"],"sources":["EntryPoint.ts"],"sourcesContent":["import {HTTP_METHODS, WebexSDK} from '../types';\nimport type {EntryPointRecord, EntryPointListResponse, EntryPointSearchParams} from '../types';\nimport LoggerProxy from '../logger-proxy';\nimport WebexRequest from './core/WebexRequest';\nimport {PAGINATION_DEFAULTS} from '../utils/PageCache';\nimport MetricsManager from '../metrics/MetricsManager';\nimport {WCC_API_GATEWAY} from './constants';\nimport {endPointMap} from './config/constants';\nimport {METRIC_EVENT_NAMES} from '../metrics/constants';\n\nconst DEFAULT_ENTRY_POINT_ATTRIBUTES = 'id,dialledNumber,entryPointId,entryPointName';\nconst DEFAULT_ENTRY_POINT_SORT_FIELD = 'entryPointName';\n\ntype DialNumberEntryPointRecord = {\n id: string;\n dialledNumber?: string;\n entryPointId: string;\n entryPointName: string;\n};\n\nconst mergeEntryPointAttributes = (attributes?: string): string => {\n const mergedAttributes = new Set(DEFAULT_ENTRY_POINT_ATTRIBUTES.split(','));\n\n attributes\n ?.split(',')\n .map((attribute) => attribute.trim())\n .filter(Boolean)\n .forEach((attribute) => mergedAttributes.add(attribute));\n\n return Array.from(mergedAttributes).join(',');\n};\n\nconst mapDialNumberEntryPoint = (item: DialNumberEntryPointRecord): EntryPointRecord => ({\n id: item.entryPointId,\n name: item.entryPointName,\n ...(item.dialledNumber ? {number: item.dialledNumber} : {}),\n});\n\n/**\n * EntryPoint class for managing Webex Contact Center entry points.\n * Provides functionality to fetch, search, and paginate through entry points.\n *\n * @class EntryPoint\n * @public\n * @example\n * ```typescript\n * import Webex from 'webex';\n *\n * const webex = new Webex({ credentials: 'YOUR_ACCESS_TOKEN' });\n * const cc = webex.cc;\n *\n * // Register and login first\n * await cc.register();\n * await cc.stationLogin({ teamId: 'team123', loginOption: 'BROWSER' });\n *\n * // Get EntryPoint API instance from ContactCenter\n * const entryPointAPI = cc.entryPoint;\n *\n * // Get all entry points with pagination\n * const response = await entryPointAPI.getEntryPoints({\n * page: 0,\n * pageSize: 50\n * });\n *\n * // Search for specific entry points\n * const searchResults = await entryPointAPI.getEntryPoints({\n * search: 'support',\n * filter: 'type==\"voice\"'\n * });\n * ```\n */\nexport class EntryPoint {\n private webexRequest: WebexRequest;\n private webex: WebexSDK;\n private metricsManager: MetricsManager;\n\n /**\n * Creates an instance of EntryPoint\n * @param {WebexSDK} webex - The Webex SDK instance\n * @public\n */\n constructor(webex: WebexSDK) {\n this.webex = webex;\n this.webexRequest = WebexRequest.getInstance({webex});\n this.metricsManager = MetricsManager.getInstance({webex});\n }\n\n /**\n * Fetches entry-point dial-number mappings for the organization with pagination support. By\n * default, returns the agent's desktop-profile-filtered mappings in backend entry-point-name order.\n * Search, filter, attribute, and sort parameters can customize the request while desktop-profile\n * scoping and required mapping fields remain SDK-owned.\n * @param {EntryPointSearchParams} [params] - Search, pagination, and compatible override parameters.\n * @returns {Promise<EntryPointListResponse>} Promise resolving to paginated entry points\n * @throws {Error} If the API call fails\n * @public\n * @example\n * ```typescript\n * // Get the first page using the default entry-point policy\n * const response = await entryPointAPI.getEntryPoints();\n *\n * // Get specific page with custom page size\n * const response = await entryPointAPI.getEntryPoints({\n * page: 2,\n * pageSize: 25\n * });\n * ```\n */\n public async getEntryPoints(\n params: EntryPointSearchParams = {}\n ): Promise<EntryPointListResponse> {\n const startTime = Date.now();\n const {\n page = PAGINATION_DEFAULTS.PAGE,\n pageSize = PAGINATION_DEFAULTS.PAGE_SIZE,\n search,\n filter,\n attributes,\n sortBy = 'name',\n sortOrder = 'asc',\n } = params;\n\n const orgId = this.webex.credentials.getOrgId();\n const hasCustomSort = sortBy !== 'name' || sortOrder !== 'asc';\n const isSearchRequest = !!(search || filter || attributes || hasCustomSort);\n const effectiveSortBy = sortBy === 'name' ? DEFAULT_ENTRY_POINT_SORT_FIELD : sortBy;\n\n LoggerProxy.info(\n `Fetching entry points - orgId: ${orgId}, page: ${page}, pageSize: ${pageSize}, isSearchRequest: ${isSearchRequest}`,\n {\n module: 'EntryPoint',\n method: 'getEntryPoints',\n }\n );\n\n this.metricsManager.timeEvent(METRIC_EVENT_NAMES.ENTRYPOINT_FETCH_SUCCESS);\n\n try {\n const queryParams = new URLSearchParams({\n page: page.toString(),\n pageSize: pageSize.toString(),\n attributes: mergeEntryPointAttributes(attributes),\n });\n\n if (search) queryParams.append('search', search);\n if (filter) queryParams.append('filter', filter);\n if (effectiveSortBy) {\n queryParams.append('sort', `${effectiveSortBy},${sortOrder.toUpperCase()}`);\n }\n queryParams.append('desktopProfileFilter', 'true');\n queryParams.append('includeEntryPointName', 'true');\n\n const resource = endPointMap.entryPointDialNumberList(orgId, queryParams.toString());\n\n LoggerProxy.log(\n `Making API request to fetch entry points - resource: ${resource}, service: ${WCC_API_GATEWAY}`,\n {\n module: 'EntryPoint',\n method: 'getEntryPoints',\n }\n );\n\n const response = await this.webexRequest.request({\n service: WCC_API_GATEWAY,\n resource,\n method: HTTP_METHODS.GET,\n headers: {\n 'X-ORGANIZATION-ID': orgId,\n 'x-ignore-internal-data': 'false',\n },\n });\n\n const responseBody: EntryPointListResponse = {\n ...response.body,\n data: (response.body?.data ?? []).map(mapDialNumberEntryPoint),\n };\n\n const duration = Date.now() - startTime;\n\n const recordCount = responseBody.data.length;\n const totalRecords = responseBody.meta?.totalRecords;\n\n LoggerProxy.log(`Successfully retrieved ${recordCount} entry points`, {\n module: 'EntryPoint',\n method: 'getEntryPoints',\n data: {\n statusCode: response.statusCode,\n duration,\n recordCount,\n totalRecords,\n isSearchRequest,\n page,\n pageSize,\n },\n });\n\n // Only track metrics for search requests or first page loads to reduce metric volume\n if (isSearchRequest || page === 0) {\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.ENTRYPOINT_FETCH_SUCCESS,\n {\n orgId,\n statusCode: response.statusCode,\n recordCount,\n totalRecords,\n isSearchRequest,\n isFirstPage: page === 0,\n },\n ['behavioral']\n );\n }\n\n return responseBody;\n } catch (error) {\n const errorData = {\n orgId,\n error: error instanceof Error ? error.message : String(error),\n isSearchRequest,\n page,\n pageSize,\n };\n\n LoggerProxy.error(`Failed to fetch entry points`, {\n module: 'EntryPoint',\n method: 'getEntryPoints',\n data: errorData,\n error,\n });\n\n // Track all failures for troubleshooting\n this.metricsManager.trackEvent(METRIC_EVENT_NAMES.ENTRYPOINT_FETCH_FAILED, errorData, [\n 'behavioral',\n ]);\n\n throw error;\n }\n }\n}\n\nexport default EntryPoint;\n"],"mappings":"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","ignoreList":[]}
@@ -71,14 +71,16 @@ class Queue {
71
71
  }
72
72
 
73
73
  /**
74
- * Fetches contact service queues for the organization
75
- * @param {ContactServiceQueueSearchParams} [params] - Search and pagination parameters
74
+ * Fetches contact service queues for the organization. By default, returns active inbound
75
+ * telephony queues in backend name-ascending order using the agent's desktop profile views.
76
+ * Existing filter, sort, and desktop-profile parameters override those defaults.
77
+ * @param {ContactServiceQueueSearchParams} [params] - Search, pagination, and override parameters
76
78
  * @returns {Promise<ContactServiceQueuesResponse>} Promise resolving to contact service queues
77
79
  * @throws {Error} If the API call fails
78
80
  * @public
79
81
  * @example
80
82
  * ```typescript
81
- * // Get all queues with default pagination
83
+ * // Get queues using the default list policy and pagination
82
84
  * const response = await queueAPI.getQueues();
83
85
  *
84
86
  * // Get queues with specific pagination
@@ -100,16 +102,28 @@ class Queue {
100
102
  page = _PageCache.PAGINATION_DEFAULTS.PAGE,
101
103
  pageSize = _PageCache.PAGINATION_DEFAULTS.PAGE_SIZE,
102
104
  search,
103
- filter,
105
+ filter = 'queueType==INBOUND;channelType==TELEPHONY;active==true',
104
106
  attributes,
105
- sortBy,
106
- sortOrder,
107
- desktopProfileFilter,
107
+ sortBy = 'name',
108
+ sortOrder = 'asc',
109
+ desktopProfileFilter = true,
108
110
  provisioningView,
109
111
  singleObjectResponse
110
112
  } = params;
113
+ const agentView = desktopProfileFilter;
114
+ const firstLevelView = desktopProfileFilter;
111
115
  const orgId = this.webex.credentials.getOrgId();
112
- const isSearchRequest = !!(search || filter || attributes || sortBy);
116
+ const effectiveSortBy = sortBy ?? (sortOrder ? 'name' : undefined);
117
+ const isSearchRequest = !!(search || filter || attributes || effectiveSortBy);
118
+ const canUseCache = this.pageCache.canUseCache({
119
+ search,
120
+ filter,
121
+ attributes,
122
+ sortBy: effectiveSortBy,
123
+ desktopProfileFilter,
124
+ provisioningView,
125
+ singleObjectResponse
126
+ });
113
127
  _loggerProxy.default.info('Fetching contact service queues', {
114
128
  module: 'Queue',
115
129
  method: _constants4.METHODS.GET_QUEUES,
@@ -122,12 +136,7 @@ class Queue {
122
136
  });
123
137
 
124
138
  // Check if we can use cache for simple pagination (no search/filter/attributes/sort)
125
- if (this.pageCache.canUseCache({
126
- search,
127
- filter,
128
- attributes,
129
- sortBy
130
- })) {
139
+ if (canUseCache) {
131
140
  const cacheKey = this.pageCache.buildCacheKey(orgId, page, pageSize);
132
141
  const cachedPage = this.pageCache.getCachedPage(cacheKey);
133
142
  if (cachedPage) {
@@ -167,11 +176,12 @@ class Queue {
167
176
  if (filter) queryParams.append('filter', filter);
168
177
  if (attributes) queryParams.append('attributes', attributes);
169
178
  if (search) queryParams.append('search', search);
170
- if (sortBy) queryParams.append('sortBy', sortBy);
171
- if (sortOrder) queryParams.append('sortOrder', sortOrder);
179
+ if (effectiveSortBy) queryParams.append('sort', `${effectiveSortBy},${(sortOrder ?? 'asc').toUpperCase()}`);
172
180
  if (desktopProfileFilter !== undefined) queryParams.append('desktopProfileFilter', desktopProfileFilter.toString());
173
181
  if (provisioningView !== undefined) queryParams.append('provisioningView', provisioningView.toString());
174
182
  if (singleObjectResponse !== undefined) queryParams.append('singleObjectResponse', singleObjectResponse.toString());
183
+ if (agentView !== undefined) queryParams.append('agentView', agentView.toString());
184
+ if (firstLevelView !== undefined) queryParams.append('firstLevelView', firstLevelView.toString());
175
185
  const resource = _constants2.endPointMap.queueList(orgId, queryParams.toString());
176
186
  _loggerProxy.default.log('Making API request to fetch contact service queues', {
177
187
  module: 'Queue',
@@ -216,12 +226,7 @@ class Queue {
216
226
  }
217
227
 
218
228
  // Cache the page data for simple pagination (no search/filter/attributes/sort)
219
- if (this.pageCache.canUseCache({
220
- search,
221
- filter,
222
- attributes,
223
- sortBy
224
- }) && response.body?.data) {
229
+ if (canUseCache && response.body?.data) {
225
230
  const cacheKey = this.pageCache.buildCacheKey(orgId, page, pageSize);
226
231
  this.pageCache.cachePage(cacheKey, response.body.data, response.body.meta);
227
232
  _loggerProxy.default.log('Cached contact service queues for future requests', {
@@ -1 +1 @@
1
- {"version":3,"names":["_types","require","_loggerProxy","_interopRequireDefault","_WebexRequest","_PageCache","_interopRequireWildcard","_MetricsManager","_constants","_constants2","_constants3","_constants4","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","Queue","constructor","webex","webexRequest","WebexRequest","getInstance","pageCache","PageCache","metricsManager","MetricsManager","getQueues","params","startTime","Date","now","page","PAGINATION_DEFAULTS","PAGE","pageSize","PAGE_SIZE","search","filter","attributes","sortBy","sortOrder","desktopProfileFilter","provisioningView","singleObjectResponse","orgId","credentials","getOrgId","isSearchRequest","LoggerProxy","info","module","method","METHODS","GET_QUEUES","data","canUseCache","cacheKey","buildCacheKey","cachedPage","getCachedPage","duration","log","cacheHit","recordCount","length","meta","totalPages","totalMeta","totalRecords","orgid","timeEvent","METRIC_EVENT_NAMES","QUEUE_FETCH_SUCCESS","queryParams","URLSearchParams","toString","append","undefined","resource","endPointMap","queueList","service","WCC_API_GATEWAY","response","request","HTTP_METHODS","GET","body","statusCode","trackEvent","isFirstPage","cachePage","error","errorData","Error","message","String","QUEUE_FETCH_FAILED","exports","_default"],"sources":["Queue.ts"],"sourcesContent":["import {HTTP_METHODS, WebexSDK} from '../types';\nimport type {\n ContactServiceQueue,\n ContactServiceQueuesResponse,\n ContactServiceQueueSearchParams,\n} from '../types';\nimport LoggerProxy from '../logger-proxy';\nimport WebexRequest from './core/WebexRequest';\nimport PageCache, {PAGINATION_DEFAULTS} from '../utils/PageCache';\nimport MetricsManager from '../metrics/MetricsManager';\nimport {WCC_API_GATEWAY} from './constants';\nimport {endPointMap} from './config/constants';\nimport {METRIC_EVENT_NAMES} from '../metrics/constants';\nimport {METHODS} from '../constants';\n\n/**\n * Queue API class for managing Webex Contact Center contact service queues.\n * Provides functionality to fetch contact service queues using the queue API.\n *\n * @class Queue\n * @public\n * @example\n * ```typescript\n * import Webex from 'webex';\n *\n * const webex = new Webex({ credentials: 'YOUR_ACCESS_TOKEN' });\n * const cc = webex.cc;\n *\n * // Register and login first\n * await cc.register();\n * await cc.stationLogin({ teamId: 'team123', loginOption: 'BROWSER' });\n *\n * // Get Queue API instance from ContactCenter\n * const queueAPI = cc.queue;\n *\n * // Get all queues\n * const queues = await queueAPI.getQueues();\n *\n * // Get queues with pagination\n * const queues = await queueAPI.getQueues({\n * page: 0,\n * pageSize: 50\n * });\n *\n * // Search for specific queues\n * const searchResults = await queueAPI.getQueues({\n * search: 'support',\n * filter: 'name==\"Support Queue\"'\n * });\n * ```\n */\nexport class Queue {\n private webexRequest: WebexRequest;\n private webex: WebexSDK;\n private metricsManager: MetricsManager;\n\n // Page cache using the common utility\n private pageCache: PageCache<ContactServiceQueue>;\n\n /**\n * Creates an instance of Queue\n * @param {WebexSDK} webex - The Webex SDK instance\n * @public\n */\n constructor(webex: WebexSDK) {\n this.webex = webex;\n this.webexRequest = WebexRequest.getInstance({webex});\n this.pageCache = new PageCache<ContactServiceQueue>('Queue');\n this.metricsManager = MetricsManager.getInstance({webex});\n }\n\n /**\n * Fetches contact service queues for the organization\n * @param {ContactServiceQueueSearchParams} [params] - Search and pagination parameters\n * @returns {Promise<ContactServiceQueuesResponse>} Promise resolving to contact service queues\n * @throws {Error} If the API call fails\n * @public\n * @example\n * ```typescript\n * // Get all queues with default pagination\n * const response = await queueAPI.getQueues();\n *\n * // Get queues with specific pagination\n * const response = await queueAPI.getQueues({\n * page: 0,\n * pageSize: 25\n * });\n *\n * // Search for queues\n * const response = await queueAPI.getQueues({\n * search: 'support',\n * filter: 'queueType==\"INBOUND\"'\n * });\n * ```\n */\n public async getQueues(\n params: ContactServiceQueueSearchParams = {}\n ): Promise<ContactServiceQueuesResponse> {\n const startTime = Date.now();\n const {\n page = PAGINATION_DEFAULTS.PAGE,\n pageSize = PAGINATION_DEFAULTS.PAGE_SIZE,\n search,\n filter,\n attributes,\n sortBy,\n sortOrder,\n desktopProfileFilter,\n provisioningView,\n singleObjectResponse,\n } = params;\n\n const orgId = this.webex.credentials.getOrgId();\n const isSearchRequest = !!(search || filter || attributes || sortBy);\n\n LoggerProxy.info('Fetching contact service queues', {\n module: 'Queue',\n method: METHODS.GET_QUEUES,\n data: {\n orgId,\n page,\n pageSize,\n isSearchRequest,\n },\n });\n\n // Check if we can use cache for simple pagination (no search/filter/attributes/sort)\n if (this.pageCache.canUseCache({search, filter, attributes, sortBy})) {\n const cacheKey = this.pageCache.buildCacheKey(orgId, page, pageSize);\n const cachedPage = this.pageCache.getCachedPage(cacheKey);\n\n if (cachedPage) {\n const duration = Date.now() - startTime;\n\n LoggerProxy.log(`Returning page ${page} from cache`, {\n module: 'Queue',\n method: 'getQueues',\n data: {\n cacheHit: true,\n duration,\n recordCount: cachedPage.data.length,\n page,\n pageSize,\n },\n });\n\n return {\n data: cachedPage.data,\n meta: {\n page,\n pageSize,\n totalPages: cachedPage.totalMeta?.totalPages,\n totalRecords: cachedPage.totalMeta?.totalRecords,\n orgid: orgId,\n },\n };\n }\n }\n\n // Start timing only for actual API calls (not cache hits)\n this.metricsManager.timeEvent(METRIC_EVENT_NAMES.QUEUE_FETCH_SUCCESS);\n\n try {\n // Build query parameters according to spec\n const queryParams = new URLSearchParams({\n page: page.toString(),\n pageSize: pageSize.toString(),\n });\n\n if (filter) queryParams.append('filter', filter);\n if (attributes) queryParams.append('attributes', attributes);\n if (search) queryParams.append('search', search);\n if (sortBy) queryParams.append('sortBy', sortBy);\n if (sortOrder) queryParams.append('sortOrder', sortOrder);\n if (desktopProfileFilter !== undefined)\n queryParams.append('desktopProfileFilter', desktopProfileFilter.toString());\n if (provisioningView !== undefined)\n queryParams.append('provisioningView', provisioningView.toString());\n if (singleObjectResponse !== undefined)\n queryParams.append('singleObjectResponse', singleObjectResponse.toString());\n\n const resource = endPointMap.queueList(orgId, queryParams.toString());\n\n LoggerProxy.log('Making API request to fetch contact service queues', {\n module: 'Queue',\n method: METHODS.GET_QUEUES,\n data: {\n resource,\n service: WCC_API_GATEWAY,\n },\n });\n\n const response = await this.webexRequest.request({\n service: WCC_API_GATEWAY,\n resource,\n method: HTTP_METHODS.GET,\n });\n\n const duration = Date.now() - startTime;\n\n const recordCount = response.body?.data?.length || 0;\n const totalRecords = response.body?.meta?.totalRecords;\n\n LoggerProxy.log(`Successfully retrieved ${recordCount} contact service queues`, {\n module: 'Queue',\n method: METHODS.GET_QUEUES,\n data: {\n statusCode: response.statusCode,\n duration,\n recordCount,\n totalRecords,\n isSearchRequest,\n page,\n pageSize,\n },\n });\n\n // Only track metrics for search requests or first page loads to reduce metric volume\n if (isSearchRequest || page === 0) {\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.QUEUE_FETCH_SUCCESS,\n {\n orgId,\n statusCode: response.statusCode,\n recordCount,\n totalRecords,\n isSearchRequest,\n isFirstPage: page === 0,\n },\n ['behavioral', 'operational']\n );\n }\n\n // Cache the page data for simple pagination (no search/filter/attributes/sort)\n if (this.pageCache.canUseCache({search, filter, attributes, sortBy}) && response.body?.data) {\n const cacheKey = this.pageCache.buildCacheKey(orgId, page, pageSize);\n this.pageCache.cachePage(cacheKey, response.body.data, response.body.meta);\n\n LoggerProxy.log('Cached contact service queues for future requests', {\n module: 'Queue',\n method: METHODS.GET_QUEUES,\n data: {\n cacheKey,\n recordCount,\n },\n });\n }\n\n return response.body;\n } catch (error) {\n const errorData = {\n orgId,\n error: error instanceof Error ? error.message : String(error),\n isSearchRequest,\n page,\n pageSize,\n };\n\n LoggerProxy.error('Failed to fetch contact service queues', {\n module: 'Queue',\n method: METHODS.GET_QUEUES,\n data: errorData,\n error,\n });\n\n // Track all failures for troubleshooting\n this.metricsManager.trackEvent(METRIC_EVENT_NAMES.QUEUE_FETCH_FAILED, errorData, [\n 'behavioral',\n 'operational',\n ]);\n\n throw error;\n }\n }\n}\n\nexport default Queue;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_types","require","_loggerProxy","_interopRequireDefault","_WebexRequest","_PageCache","_interopRequireWildcard","_MetricsManager","_constants","_constants2","_constants3","_constants4","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","Queue","constructor","webex","webexRequest","WebexRequest","getInstance","pageCache","PageCache","metricsManager","MetricsManager","getQueues","params","startTime","Date","now","page","PAGINATION_DEFAULTS","PAGE","pageSize","PAGE_SIZE","search","filter","attributes","sortBy","sortOrder","desktopProfileFilter","provisioningView","singleObjectResponse","agentView","firstLevelView","orgId","credentials","getOrgId","effectiveSortBy","undefined","isSearchRequest","canUseCache","LoggerProxy","info","module","method","METHODS","GET_QUEUES","data","cacheKey","buildCacheKey","cachedPage","getCachedPage","duration","log","cacheHit","recordCount","length","meta","totalPages","totalMeta","totalRecords","orgid","timeEvent","METRIC_EVENT_NAMES","QUEUE_FETCH_SUCCESS","queryParams","URLSearchParams","toString","append","toUpperCase","resource","endPointMap","queueList","service","WCC_API_GATEWAY","response","request","HTTP_METHODS","GET","body","statusCode","trackEvent","isFirstPage","cachePage","error","errorData","Error","message","String","QUEUE_FETCH_FAILED","exports","_default"],"sources":["Queue.ts"],"sourcesContent":["import {HTTP_METHODS, WebexSDK} from '../types';\nimport type {\n ContactServiceQueue,\n ContactServiceQueuesResponse,\n ContactServiceQueueSearchParams,\n} from '../types';\nimport LoggerProxy from '../logger-proxy';\nimport WebexRequest from './core/WebexRequest';\nimport PageCache, {PAGINATION_DEFAULTS} from '../utils/PageCache';\nimport MetricsManager from '../metrics/MetricsManager';\nimport {WCC_API_GATEWAY} from './constants';\nimport {endPointMap} from './config/constants';\nimport {METRIC_EVENT_NAMES} from '../metrics/constants';\nimport {METHODS} from '../constants';\n\n/**\n * Queue API class for managing Webex Contact Center contact service queues.\n * Provides functionality to fetch contact service queues using the queue API.\n *\n * @class Queue\n * @public\n * @example\n * ```typescript\n * import Webex from 'webex';\n *\n * const webex = new Webex({ credentials: 'YOUR_ACCESS_TOKEN' });\n * const cc = webex.cc;\n *\n * // Register and login first\n * await cc.register();\n * await cc.stationLogin({ teamId: 'team123', loginOption: 'BROWSER' });\n *\n * // Get Queue API instance from ContactCenter\n * const queueAPI = cc.queue;\n *\n * // Get all queues\n * const queues = await queueAPI.getQueues();\n *\n * // Get queues with pagination\n * const queues = await queueAPI.getQueues({\n * page: 0,\n * pageSize: 50\n * });\n *\n * // Search for specific queues\n * const searchResults = await queueAPI.getQueues({\n * search: 'support',\n * filter: 'name==\"Support Queue\"'\n * });\n * ```\n */\nexport class Queue {\n private webexRequest: WebexRequest;\n private webex: WebexSDK;\n private metricsManager: MetricsManager;\n\n // Page cache using the common utility\n private pageCache: PageCache<ContactServiceQueue>;\n\n /**\n * Creates an instance of Queue\n * @param {WebexSDK} webex - The Webex SDK instance\n * @public\n */\n constructor(webex: WebexSDK) {\n this.webex = webex;\n this.webexRequest = WebexRequest.getInstance({webex});\n this.pageCache = new PageCache<ContactServiceQueue>('Queue');\n this.metricsManager = MetricsManager.getInstance({webex});\n }\n\n /**\n * Fetches contact service queues for the organization. By default, returns active inbound\n * telephony queues in backend name-ascending order using the agent's desktop profile views.\n * Existing filter, sort, and desktop-profile parameters override those defaults.\n * @param {ContactServiceQueueSearchParams} [params] - Search, pagination, and override parameters\n * @returns {Promise<ContactServiceQueuesResponse>} Promise resolving to contact service queues\n * @throws {Error} If the API call fails\n * @public\n * @example\n * ```typescript\n * // Get queues using the default list policy and pagination\n * const response = await queueAPI.getQueues();\n *\n * // Get queues with specific pagination\n * const response = await queueAPI.getQueues({\n * page: 0,\n * pageSize: 25\n * });\n *\n * // Search for queues\n * const response = await queueAPI.getQueues({\n * search: 'support',\n * filter: 'queueType==\"INBOUND\"'\n * });\n * ```\n */\n public async getQueues(\n params: ContactServiceQueueSearchParams = {}\n ): Promise<ContactServiceQueuesResponse> {\n const startTime = Date.now();\n const {\n page = PAGINATION_DEFAULTS.PAGE,\n pageSize = PAGINATION_DEFAULTS.PAGE_SIZE,\n search,\n filter = 'queueType==INBOUND;channelType==TELEPHONY;active==true',\n attributes,\n sortBy = 'name',\n sortOrder = 'asc',\n desktopProfileFilter = true,\n provisioningView,\n singleObjectResponse,\n } = params;\n const agentView = desktopProfileFilter;\n const firstLevelView = desktopProfileFilter;\n\n const orgId = this.webex.credentials.getOrgId();\n const effectiveSortBy = sortBy ?? (sortOrder ? 'name' : undefined);\n const isSearchRequest = !!(search || filter || attributes || effectiveSortBy);\n const canUseCache = this.pageCache.canUseCache({\n search,\n filter,\n attributes,\n sortBy: effectiveSortBy,\n desktopProfileFilter,\n provisioningView,\n singleObjectResponse,\n });\n\n LoggerProxy.info('Fetching contact service queues', {\n module: 'Queue',\n method: METHODS.GET_QUEUES,\n data: {\n orgId,\n page,\n pageSize,\n isSearchRequest,\n },\n });\n\n // Check if we can use cache for simple pagination (no search/filter/attributes/sort)\n if (canUseCache) {\n const cacheKey = this.pageCache.buildCacheKey(orgId, page, pageSize);\n const cachedPage = this.pageCache.getCachedPage(cacheKey);\n\n if (cachedPage) {\n const duration = Date.now() - startTime;\n\n LoggerProxy.log(`Returning page ${page} from cache`, {\n module: 'Queue',\n method: 'getQueues',\n data: {\n cacheHit: true,\n duration,\n recordCount: cachedPage.data.length,\n page,\n pageSize,\n },\n });\n\n return {\n data: cachedPage.data,\n meta: {\n page,\n pageSize,\n totalPages: cachedPage.totalMeta?.totalPages,\n totalRecords: cachedPage.totalMeta?.totalRecords,\n orgid: orgId,\n },\n };\n }\n }\n\n // Start timing only for actual API calls (not cache hits)\n this.metricsManager.timeEvent(METRIC_EVENT_NAMES.QUEUE_FETCH_SUCCESS);\n\n try {\n // Build query parameters according to spec\n const queryParams = new URLSearchParams({\n page: page.toString(),\n pageSize: pageSize.toString(),\n });\n\n if (filter) queryParams.append('filter', filter);\n if (attributes) queryParams.append('attributes', attributes);\n if (search) queryParams.append('search', search);\n if (effectiveSortBy)\n queryParams.append('sort', `${effectiveSortBy},${(sortOrder ?? 'asc').toUpperCase()}`);\n if (desktopProfileFilter !== undefined)\n queryParams.append('desktopProfileFilter', desktopProfileFilter.toString());\n if (provisioningView !== undefined)\n queryParams.append('provisioningView', provisioningView.toString());\n if (singleObjectResponse !== undefined)\n queryParams.append('singleObjectResponse', singleObjectResponse.toString());\n if (agentView !== undefined) queryParams.append('agentView', agentView.toString());\n if (firstLevelView !== undefined)\n queryParams.append('firstLevelView', firstLevelView.toString());\n\n const resource = endPointMap.queueList(orgId, queryParams.toString());\n\n LoggerProxy.log('Making API request to fetch contact service queues', {\n module: 'Queue',\n method: METHODS.GET_QUEUES,\n data: {\n resource,\n service: WCC_API_GATEWAY,\n },\n });\n\n const response = await this.webexRequest.request({\n service: WCC_API_GATEWAY,\n resource,\n method: HTTP_METHODS.GET,\n });\n\n const duration = Date.now() - startTime;\n\n const recordCount = response.body?.data?.length || 0;\n const totalRecords = response.body?.meta?.totalRecords;\n\n LoggerProxy.log(`Successfully retrieved ${recordCount} contact service queues`, {\n module: 'Queue',\n method: METHODS.GET_QUEUES,\n data: {\n statusCode: response.statusCode,\n duration,\n recordCount,\n totalRecords,\n isSearchRequest,\n page,\n pageSize,\n },\n });\n\n // Only track metrics for search requests or first page loads to reduce metric volume\n if (isSearchRequest || page === 0) {\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.QUEUE_FETCH_SUCCESS,\n {\n orgId,\n statusCode: response.statusCode,\n recordCount,\n totalRecords,\n isSearchRequest,\n isFirstPage: page === 0,\n },\n ['behavioral', 'operational']\n );\n }\n\n // Cache the page data for simple pagination (no search/filter/attributes/sort)\n if (canUseCache && response.body?.data) {\n const cacheKey = this.pageCache.buildCacheKey(orgId, page, pageSize);\n this.pageCache.cachePage(cacheKey, response.body.data, response.body.meta);\n\n LoggerProxy.log('Cached contact service queues for future requests', {\n module: 'Queue',\n method: METHODS.GET_QUEUES,\n data: {\n cacheKey,\n recordCount,\n },\n });\n }\n\n return response.body;\n } catch (error) {\n const errorData = {\n orgId,\n error: error instanceof Error ? error.message : String(error),\n isSearchRequest,\n page,\n pageSize,\n };\n\n LoggerProxy.error('Failed to fetch contact service queues', {\n module: 'Queue',\n method: METHODS.GET_QUEUES,\n data: errorData,\n error,\n });\n\n // Track all failures for troubleshooting\n this.metricsManager.trackEvent(METRIC_EVENT_NAMES.QUEUE_FETCH_FAILED, errorData, [\n 'behavioral',\n 'operational',\n ]);\n\n throw error;\n }\n }\n}\n\nexport default Queue;\n"],"mappings":"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","ignoreList":[]}