@webex/contact-center 3.12.0-llmrefactor.2 → 3.12.0-llmrefactor.3

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 (187) hide show
  1. package/.sdd/manifest.json +5 -4
  2. package/ai-docs/ARCHITECTURE.md +1 -1
  3. package/ai-docs/CONTRACTS.md +5 -1
  4. package/ai-docs/SECURITY.md +1 -1
  5. package/ai-docs/contact-center-spec.md +22 -4
  6. package/ai-docs/features/consult-transfer-list-policy/spec/feature-spec.md +362 -0
  7. package/dist/cc.js +440 -10
  8. package/dist/cc.js.map +1 -1
  9. package/dist/config.js +7 -0
  10. package/dist/config.js.map +1 -1
  11. package/dist/constants.js +10 -2
  12. package/dist/constants.js.map +1 -1
  13. package/dist/index.js.map +1 -1
  14. package/dist/metrics/behavioral-events.js +13 -0
  15. package/dist/metrics/behavioral-events.js.map +1 -1
  16. package/dist/metrics/constants.js +2 -0
  17. package/dist/metrics/constants.js.map +1 -1
  18. package/dist/services/AddressBook.js +18 -15
  19. package/dist/services/AddressBook.js.map +1 -1
  20. package/dist/services/AnswerCallOnWebexService.js +174 -0
  21. package/dist/services/AnswerCallOnWebexService.js.map +1 -0
  22. package/dist/services/EntryPoint.js +46 -68
  23. package/dist/services/EntryPoint.js.map +1 -1
  24. package/dist/services/Queue.js +27 -22
  25. package/dist/services/Queue.js.map +1 -1
  26. package/dist/services/WebexCrossClientService.js +171 -0
  27. package/dist/services/WebexCrossClientService.js.map +1 -0
  28. package/dist/services/WxAppTelephonyMercurySync.js +93 -0
  29. package/dist/services/WxAppTelephonyMercurySync.js.map +1 -0
  30. package/dist/services/config/Util.js +3 -0
  31. package/dist/services/config/Util.js.map +1 -1
  32. package/dist/services/config/constants.js +10 -6
  33. package/dist/services/config/constants.js.map +1 -1
  34. package/dist/services/config/types.js +4 -0
  35. package/dist/services/config/types.js.map +1 -1
  36. package/dist/services/core/Err.js.map +1 -1
  37. package/dist/services/core/WebexRequest.js +6 -2
  38. package/dist/services/core/WebexRequest.js.map +1 -1
  39. package/dist/services/core/aqm-reqs.js +28 -14
  40. package/dist/services/core/aqm-reqs.js.map +1 -1
  41. package/dist/services/core/types.js.map +1 -1
  42. package/dist/services/task/Task.js +73 -7
  43. package/dist/services/task/Task.js.map +1 -1
  44. package/dist/services/task/TaskFactory.js +8 -4
  45. package/dist/services/task/TaskFactory.js.map +1 -1
  46. package/dist/services/task/TaskManager.js +176 -20
  47. package/dist/services/task/TaskManager.js.map +1 -1
  48. package/dist/services/task/WebexCallingUtils.js +70 -0
  49. package/dist/services/task/WebexCallingUtils.js.map +1 -0
  50. package/dist/services/task/constants.js +4 -1
  51. package/dist/services/task/constants.js.map +1 -1
  52. package/dist/services/task/contact.js +29 -0
  53. package/dist/services/task/contact.js.map +1 -1
  54. package/dist/services/task/digital/Digital.js +3 -2
  55. package/dist/services/task/digital/Digital.js.map +1 -1
  56. package/dist/services/task/state-machine/TaskStateMachine.js +135 -37
  57. package/dist/services/task/state-machine/TaskStateMachine.js.map +1 -1
  58. package/dist/services/task/state-machine/actions.js +6 -1
  59. package/dist/services/task/state-machine/actions.js.map +1 -1
  60. package/dist/services/task/state-machine/guards.js +38 -11
  61. package/dist/services/task/state-machine/guards.js.map +1 -1
  62. package/dist/services/task/state-machine/types.js.map +1 -1
  63. package/dist/services/task/state-machine/uiControlsComputer.js +118 -18
  64. package/dist/services/task/state-machine/uiControlsComputer.js.map +1 -1
  65. package/dist/services/task/types.js +16 -1
  66. package/dist/services/task/types.js.map +1 -1
  67. package/dist/services/task/voice/Voice.js +350 -14
  68. package/dist/services/task/voice/Voice.js.map +1 -1
  69. package/dist/services/task/voice/WebRTC.js +4 -1
  70. package/dist/services/task/voice/WebRTC.js.map +1 -1
  71. package/dist/services/task/voice/wxAppVoiceMethods.js +201 -0
  72. package/dist/services/task/voice/wxAppVoiceMethods.js.map +1 -0
  73. package/dist/services/wxAppTelephonyUtils.js +19 -0
  74. package/dist/services/wxAppTelephonyUtils.js.map +1 -0
  75. package/dist/types/cc.d.ts +77 -4
  76. package/dist/types/config.d.ts +7 -0
  77. package/dist/types/constants.d.ts +8 -0
  78. package/dist/types/index.d.ts +3 -1
  79. package/dist/types/metrics/constants.d.ts +2 -0
  80. package/dist/types/services/AddressBook.d.ts +2 -1
  81. package/dist/types/services/AnswerCallOnWebexService.d.ts +37 -0
  82. package/dist/types/services/EntryPoint.d.ts +7 -5
  83. package/dist/types/services/Queue.d.ts +5 -3
  84. package/dist/types/services/WebexCrossClientService.d.ts +28 -0
  85. package/dist/types/services/WxAppTelephonyMercurySync.d.ts +28 -0
  86. package/dist/types/services/config/constants.d.ts +8 -5
  87. package/dist/types/services/config/types.d.ts +17 -4
  88. package/dist/types/services/core/Err.d.ts +2 -0
  89. package/dist/types/services/core/WebexRequest.d.ts +1 -0
  90. package/dist/types/services/core/types.d.ts +2 -0
  91. package/dist/types/services/task/Task.d.ts +20 -2
  92. package/dist/types/services/task/TaskFactory.d.ts +2 -1
  93. package/dist/types/services/task/WebexCallingUtils.d.ts +11 -0
  94. package/dist/types/services/task/constants.d.ts +3 -0
  95. package/dist/types/services/task/contact.d.ts +4 -0
  96. package/dist/types/services/task/digital/Digital.d.ts +2 -2
  97. package/dist/types/services/task/state-machine/TaskStateMachine.d.ts +260 -56
  98. package/dist/types/services/task/state-machine/guards.d.ts +6 -5
  99. package/dist/types/services/task/state-machine/types.d.ts +9 -1
  100. package/dist/types/services/task/types.d.ts +81 -4
  101. package/dist/types/services/task/voice/Voice.d.ts +48 -9
  102. package/dist/types/services/task/voice/WebRTC.d.ts +2 -2
  103. package/dist/types/services/task/voice/wxAppVoiceMethods.d.ts +52 -0
  104. package/dist/types/services/wxAppTelephonyUtils.d.ts +5 -0
  105. package/dist/types/types.d.ts +14 -8
  106. package/dist/types/utils/PageCache.d.ts +20 -3
  107. package/dist/types.js +7 -2
  108. package/dist/types.js.map +1 -1
  109. package/dist/utils/PageCache.js +19 -5
  110. package/dist/utils/PageCache.js.map +1 -1
  111. package/dist/webex.js +1 -1
  112. package/package.json +1 -1
  113. package/src/cc.ts +506 -9
  114. package/src/config.ts +7 -0
  115. package/src/constants.ts +8 -0
  116. package/src/index.ts +2 -0
  117. package/src/metrics/ai-docs/metrics-spec.md +9 -3
  118. package/src/metrics/behavioral-events.ts +14 -0
  119. package/src/metrics/constants.ts +2 -0
  120. package/src/services/AddressBook.ts +17 -6
  121. package/src/services/AnswerCallOnWebexService.ts +206 -0
  122. package/src/services/EntryPoint.ts +59 -60
  123. package/src/services/Queue.ts +29 -12
  124. package/src/services/WebexCrossClientService.ts +212 -0
  125. package/src/services/WxAppTelephonyMercurySync.ts +115 -0
  126. package/src/services/ai-docs/AGENTS.md +10 -10
  127. package/src/services/ai-docs/services-spec.md +6 -1
  128. package/src/services/config/Util.ts +3 -0
  129. package/src/services/config/ai-docs/AGENTS.md +1 -1
  130. package/src/services/config/ai-docs/ARCHITECTURE.md +2 -2
  131. package/src/services/config/ai-docs/config-spec.md +6 -0
  132. package/src/services/config/constants.ts +10 -6
  133. package/src/services/config/types.ts +16 -4
  134. package/src/services/core/Err.ts +1 -0
  135. package/src/services/core/WebexRequest.ts +3 -1
  136. package/src/services/core/ai-docs/core-spec.md +5 -1
  137. package/src/services/core/aqm-reqs.ts +30 -15
  138. package/src/services/core/types.ts +2 -0
  139. package/src/services/task/Task.ts +79 -8
  140. package/src/services/task/TaskFactory.ts +8 -3
  141. package/src/services/task/TaskManager.ts +254 -15
  142. package/src/services/task/WebexCallingUtils.ts +136 -0
  143. package/src/services/task/ai-docs/ARCHITECTURE.md +1 -0
  144. package/src/services/task/ai-docs/task-spec.md +117 -2
  145. package/src/services/task/constants.ts +3 -0
  146. package/src/services/task/contact.ts +30 -0
  147. package/src/services/task/digital/Digital.ts +4 -2
  148. package/src/services/task/state-machine/TaskStateMachine.ts +210 -63
  149. package/src/services/task/state-machine/actions.ts +5 -2
  150. package/src/services/task/state-machine/ai-docs/AGENTS.md +8 -4
  151. package/src/services/task/state-machine/ai-docs/ARCHITECTURE.md +17 -8
  152. package/src/services/task/state-machine/ai-docs/task-state-machine-spec.md +46 -22
  153. package/src/services/task/state-machine/guards.ts +64 -11
  154. package/src/services/task/state-machine/types.ts +16 -1
  155. package/src/services/task/state-machine/uiControlsComputer.ts +206 -32
  156. package/src/services/task/types.ts +114 -4
  157. package/src/services/task/voice/Voice.ts +462 -12
  158. package/src/services/task/voice/WebRTC.ts +5 -1
  159. package/src/services/task/voice/wxAppVoiceMethods.ts +307 -0
  160. package/src/services/wxAppTelephonyUtils.ts +14 -0
  161. package/src/types.ts +33 -9
  162. package/src/utils/AGENTS.md +21 -10
  163. package/src/utils/PageCache.ts +38 -5
  164. package/src/utils/ai-docs/utils-spec.md +21 -11
  165. package/test/unit/spec/cc.ts +1274 -0
  166. package/test/unit/spec/metrics/behavioral-events.ts +18 -0
  167. package/test/unit/spec/services/AddressBook.ts +37 -6
  168. package/test/unit/spec/services/AnswerCallOnWebexService.ts +223 -0
  169. package/test/unit/spec/services/EntryPoint.ts +87 -40
  170. package/test/unit/spec/services/Queue.ts +123 -12
  171. package/test/unit/spec/services/WebexCrossClientService.ts +261 -0
  172. package/test/unit/spec/services/WxAppTelephonyMercurySync.ts +113 -0
  173. package/test/unit/spec/services/config/Util.ts +85 -0
  174. package/test/unit/spec/services/core/WebexRequest.ts +3 -1
  175. package/test/unit/spec/services/core/aqm-reqs.ts +113 -1
  176. package/test/unit/spec/services/task/Task.ts +200 -0
  177. package/test/unit/spec/services/task/TaskFactory.ts +39 -2
  178. package/test/unit/spec/services/task/TaskManager.ts +653 -1
  179. package/test/unit/spec/services/task/WebexCallingUtils.ts +153 -0
  180. package/test/unit/spec/services/task/contact.ts +33 -0
  181. package/test/unit/spec/services/task/state-machine/TaskStateMachine.ts +854 -72
  182. package/test/unit/spec/services/task/state-machine/guards.ts +210 -8
  183. package/test/unit/spec/services/task/state-machine/uiControlsComputer.ts +445 -7
  184. package/test/unit/spec/services/task/voice/Voice.ts +874 -0
  185. package/test/unit/spec/services/task/voice/wxAppVoiceMethods.ts +459 -0
  186. package/umd/contact-center.min.js +2 -2
  187. package/umd/contact-center.min.js.map +1 -1
@@ -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":[]}
@@ -0,0 +1,171 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _loggerProxy = _interopRequireDefault(require("../logger-proxy"));
8
+ var _constants = require("../constants");
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ const WEBEX_CROSS_CLIENT_FILE = 'WebexCrossClientService';
11
+ const DEFAULT_CROSS_CLIENT_STATE_TTL = 900;
12
+ const EXPIRATION_OFFSET_MS = 60_000;
13
+ /** Must match Agent Desktop usersub publish — Webex App reads `wxcc` cross-client state. */
14
+ const DEFAULT_APP_NAME = 'wxcc';
15
+ const REFRESH_RETRY_DELAY_MS = 30_000;
16
+ const MAX_REFRESH_RETRIES = 3;
17
+ /**
18
+ * Publishes usersub cross-client state so Webex App suppresses native calling toasts (WXCC-6026).
19
+ */
20
+ class WebexCrossClientService {
21
+ answerCallsState = false;
22
+ appName = DEFAULT_APP_NAME;
23
+ /** Incremented on teardown/disable to ignore stale refresh timer callbacks. */
24
+ refreshGeneration = 0;
25
+ constructor(webex) {
26
+ this.webex = webex;
27
+ }
28
+ extractDeviceIdFromUrl(url) {
29
+ const match = url.match(/\/devices\/([^/?]+)/);
30
+ return match ? match[1] : '';
31
+ }
32
+ getDeviceUrl() {
33
+ return this.webex.internal.device?.url;
34
+ }
35
+ clearRefreshTimer() {
36
+ if (this.refreshTimer) {
37
+ clearTimeout(this.refreshTimer);
38
+ this.refreshTimer = undefined;
39
+ }
40
+ if (this.refreshRetryTimer) {
41
+ clearTimeout(this.refreshRetryTimer);
42
+ this.refreshRetryTimer = undefined;
43
+ }
44
+ }
45
+ scheduleRefreshRetry(userId, ttl, scheduledGeneration, retryAttempt) {
46
+ if (retryAttempt >= MAX_REFRESH_RETRIES || scheduledGeneration !== this.refreshGeneration || !this.answerCallsState) {
47
+ return;
48
+ }
49
+ this.refreshRetryTimer = setTimeout(async () => {
50
+ if (scheduledGeneration !== this.refreshGeneration || !this.answerCallsState) {
51
+ return;
52
+ }
53
+ try {
54
+ await this.setManageWebexCallingInWxcc(true, {
55
+ userId,
56
+ ttl,
57
+ appName: this.appName
58
+ });
59
+ } catch (error) {
60
+ _loggerProxy.default.error(`WebexCrossClientService refresh retry failed: ${error}`, {
61
+ module: WEBEX_CROSS_CLIENT_FILE,
62
+ method: _constants.METHODS.SET_MANAGE_WEBEX_CALLING_IN_WXCC
63
+ });
64
+ this.scheduleRefreshRetry(userId, ttl, scheduledGeneration, retryAttempt + 1);
65
+ }
66
+ }, REFRESH_RETRY_DELAY_MS);
67
+ }
68
+ startRefreshTimer(userId, ttl) {
69
+ this.clearRefreshTimer();
70
+ if (!this.answerCallsState) {
71
+ return;
72
+ }
73
+ const refreshTime = ttl * 1000 - EXPIRATION_OFFSET_MS;
74
+ const scheduledGeneration = this.refreshGeneration;
75
+ this.refreshTimer = setTimeout(async () => {
76
+ if (scheduledGeneration !== this.refreshGeneration || !this.answerCallsState) {
77
+ return;
78
+ }
79
+ try {
80
+ await this.setManageWebexCallingInWxcc(true, {
81
+ userId,
82
+ ttl,
83
+ appName: this.appName
84
+ });
85
+ } catch (error) {
86
+ _loggerProxy.default.error(`WebexCrossClientService refresh failed: ${error}`, {
87
+ module: WEBEX_CROSS_CLIENT_FILE,
88
+ method: _constants.METHODS.SET_MANAGE_WEBEX_CALLING_IN_WXCC
89
+ });
90
+ this.scheduleRefreshRetry(userId, ttl, scheduledGeneration, 0);
91
+ }
92
+ }, refreshTime);
93
+ }
94
+ publishCrossClientState(users, ttl, composition, logContext) {
95
+ const body = {
96
+ users,
97
+ compositions: [{
98
+ type: 'cross-client-state',
99
+ ttl,
100
+ composition
101
+ }]
102
+ };
103
+ return this.webex.request({
104
+ method: 'POST',
105
+ service: 'usersub',
106
+ resource: 'publish',
107
+ body
108
+ }).then(response => response?.body).catch(error => {
109
+ _loggerProxy.default.error(`WebexCrossClientService.${logContext} failed: ${error}`, {
110
+ module: WEBEX_CROSS_CLIENT_FILE,
111
+ method: _constants.METHODS.SET_MANAGE_WEBEX_CALLING_IN_WXCC
112
+ });
113
+ return Promise.reject(error);
114
+ });
115
+ }
116
+ async setManageWebexCallingInWxcc(enable, options) {
117
+ const operationGeneration = this.refreshGeneration;
118
+ const userId = options?.userId ?? this.webex.internal.device?.userId;
119
+ const ttl = options?.ttl ?? DEFAULT_CROSS_CLIENT_STATE_TTL;
120
+ const appName = options?.appName ?? DEFAULT_APP_NAME;
121
+ this.appName = appName;
122
+ if (!userId) {
123
+ throw new Error('User ID is unavailable for cross-client publish');
124
+ }
125
+ const deviceUrl = this.getDeviceUrl();
126
+ if (!deviceUrl) {
127
+ throw new Error('Device URL is unavailable for cross-client publish');
128
+ }
129
+ const composition = {
130
+ devices: [{
131
+ deviceId: this.extractDeviceIdFromUrl(deviceUrl),
132
+ appName,
133
+ state: {
134
+ 'answer-calls-on-wxcc': enable
135
+ }
136
+ }]
137
+ };
138
+ await this.publishCrossClientState([userId], ttl, composition, 'setManageWebexCallingInWxcc');
139
+ if (operationGeneration !== this.refreshGeneration) {
140
+ return;
141
+ }
142
+ this.answerCallsState = enable;
143
+ if (enable) {
144
+ this.startRefreshTimer(userId, ttl);
145
+ } else {
146
+ this.refreshGeneration += 1;
147
+ this.clearRefreshTimer();
148
+ }
149
+ _loggerProxy.default.info(`Cross-client answer-calls-on-wxcc set to ${enable}`, {
150
+ module: WEBEX_CROSS_CLIENT_FILE,
151
+ method: _constants.METHODS.SET_MANAGE_WEBEX_CALLING_IN_WXCC,
152
+ data: {
153
+ appName,
154
+ deviceId: this.extractDeviceIdFromUrl(deviceUrl),
155
+ ttl
156
+ }
157
+ });
158
+ }
159
+ teardown() {
160
+ this.refreshGeneration += 1;
161
+ this.clearRefreshTimer();
162
+ this.answerCallsState = false;
163
+ }
164
+
165
+ /** Whether usersub `answer-calls-on-wxcc: true` was successfully published this session. */
166
+ isAnswerCallsStateActive() {
167
+ return this.answerCallsState;
168
+ }
169
+ }
170
+ exports.default = WebexCrossClientService;
171
+ //# sourceMappingURL=WebexCrossClientService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_loggerProxy","_interopRequireDefault","require","_constants","e","__esModule","default","WEBEX_CROSS_CLIENT_FILE","DEFAULT_CROSS_CLIENT_STATE_TTL","EXPIRATION_OFFSET_MS","DEFAULT_APP_NAME","REFRESH_RETRY_DELAY_MS","MAX_REFRESH_RETRIES","WebexCrossClientService","answerCallsState","appName","refreshGeneration","constructor","webex","extractDeviceIdFromUrl","url","match","getDeviceUrl","internal","device","clearRefreshTimer","refreshTimer","clearTimeout","undefined","refreshRetryTimer","scheduleRefreshRetry","userId","ttl","scheduledGeneration","retryAttempt","setTimeout","setManageWebexCallingInWxcc","error","LoggerProxy","module","method","METHODS","SET_MANAGE_WEBEX_CALLING_IN_WXCC","startRefreshTimer","refreshTime","publishCrossClientState","users","composition","logContext","body","compositions","type","request","service","resource","then","response","catch","Promise","reject","enable","options","operationGeneration","Error","deviceUrl","devices","deviceId","state","info","data","teardown","isAnswerCallsStateActive","exports"],"sources":["WebexCrossClientService.ts"],"sourcesContent":["import LoggerProxy from '../logger-proxy';\nimport {METHODS} from '../constants';\nimport {WebexSDK} from '../types';\n\nconst WEBEX_CROSS_CLIENT_FILE = 'WebexCrossClientService';\nconst DEFAULT_CROSS_CLIENT_STATE_TTL = 900;\nconst EXPIRATION_OFFSET_MS = 60_000;\n/** Must match Agent Desktop usersub publish — Webex App reads `wxcc` cross-client state. */\nconst DEFAULT_APP_NAME = 'wxcc';\nconst REFRESH_RETRY_DELAY_MS = 30_000;\nconst MAX_REFRESH_RETRIES = 3;\n\ntype RefreshTimer = ReturnType<typeof setTimeout>;\n\n/**\n * Publishes usersub cross-client state so Webex App suppresses native calling toasts (WXCC-6026).\n */\nexport default class WebexCrossClientService {\n private webex: WebexSDK;\n private refreshTimer?: RefreshTimer;\n private refreshRetryTimer?: RefreshTimer;\n private answerCallsState = false;\n private appName = DEFAULT_APP_NAME;\n /** Incremented on teardown/disable to ignore stale refresh timer callbacks. */\n private refreshGeneration = 0;\n\n constructor(webex: WebexSDK) {\n this.webex = webex;\n }\n\n private extractDeviceIdFromUrl(url: string): string {\n const match = url.match(/\\/devices\\/([^/?]+)/);\n\n return match ? match[1] : '';\n }\n\n private getDeviceUrl(): string | undefined {\n return this.webex.internal.device?.url;\n }\n\n private clearRefreshTimer(): void {\n if (this.refreshTimer) {\n clearTimeout(this.refreshTimer);\n this.refreshTimer = undefined;\n }\n\n if (this.refreshRetryTimer) {\n clearTimeout(this.refreshRetryTimer);\n this.refreshRetryTimer = undefined;\n }\n }\n\n private scheduleRefreshRetry(\n userId: string,\n ttl: number,\n scheduledGeneration: number,\n retryAttempt: number\n ): void {\n if (\n retryAttempt >= MAX_REFRESH_RETRIES ||\n scheduledGeneration !== this.refreshGeneration ||\n !this.answerCallsState\n ) {\n return;\n }\n\n this.refreshRetryTimer = setTimeout(async () => {\n if (scheduledGeneration !== this.refreshGeneration || !this.answerCallsState) {\n return;\n }\n\n try {\n await this.setManageWebexCallingInWxcc(true, {userId, ttl, appName: this.appName});\n } catch (error) {\n LoggerProxy.error(`WebexCrossClientService refresh retry failed: ${error}`, {\n module: WEBEX_CROSS_CLIENT_FILE,\n method: METHODS.SET_MANAGE_WEBEX_CALLING_IN_WXCC,\n });\n this.scheduleRefreshRetry(userId, ttl, scheduledGeneration, retryAttempt + 1);\n }\n }, REFRESH_RETRY_DELAY_MS);\n }\n\n private startRefreshTimer(userId: string, ttl: number): void {\n this.clearRefreshTimer();\n\n if (!this.answerCallsState) {\n return;\n }\n\n const refreshTime = ttl * 1000 - EXPIRATION_OFFSET_MS;\n const scheduledGeneration = this.refreshGeneration;\n this.refreshTimer = setTimeout(async () => {\n if (scheduledGeneration !== this.refreshGeneration || !this.answerCallsState) {\n return;\n }\n\n try {\n await this.setManageWebexCallingInWxcc(true, {userId, ttl, appName: this.appName});\n } catch (error) {\n LoggerProxy.error(`WebexCrossClientService refresh failed: ${error}`, {\n module: WEBEX_CROSS_CLIENT_FILE,\n method: METHODS.SET_MANAGE_WEBEX_CALLING_IN_WXCC,\n });\n this.scheduleRefreshRetry(userId, ttl, scheduledGeneration, 0);\n }\n }, refreshTime);\n }\n\n private publishCrossClientState(\n users: string[],\n ttl: number,\n composition: Record<string, unknown>,\n logContext: string\n ): Promise<unknown> {\n const body = {\n users,\n compositions: [\n {\n type: 'cross-client-state',\n ttl,\n composition,\n },\n ],\n };\n\n return this.webex\n .request({\n method: 'POST',\n service: 'usersub',\n resource: 'publish',\n body,\n })\n .then((response: {body?: unknown}) => response?.body)\n .catch((error: unknown) => {\n LoggerProxy.error(`WebexCrossClientService.${logContext} failed: ${error}`, {\n module: WEBEX_CROSS_CLIENT_FILE,\n method: METHODS.SET_MANAGE_WEBEX_CALLING_IN_WXCC,\n });\n\n return Promise.reject(error);\n });\n }\n\n public async setManageWebexCallingInWxcc(\n enable: boolean,\n options?: {userId?: string; ttl?: number; appName?: string}\n ): Promise<void> {\n const operationGeneration = this.refreshGeneration;\n const userId = options?.userId ?? this.webex.internal.device?.userId;\n const ttl = options?.ttl ?? DEFAULT_CROSS_CLIENT_STATE_TTL;\n const appName = options?.appName ?? DEFAULT_APP_NAME;\n this.appName = appName;\n\n if (!userId) {\n throw new Error('User ID is unavailable for cross-client publish');\n }\n\n const deviceUrl = this.getDeviceUrl();\n if (!deviceUrl) {\n throw new Error('Device URL is unavailable for cross-client publish');\n }\n\n const composition = {\n devices: [\n {\n deviceId: this.extractDeviceIdFromUrl(deviceUrl),\n appName,\n state: {\n 'answer-calls-on-wxcc': enable,\n },\n },\n ],\n };\n\n await this.publishCrossClientState([userId], ttl, composition, 'setManageWebexCallingInWxcc');\n\n if (operationGeneration !== this.refreshGeneration) {\n return;\n }\n\n this.answerCallsState = enable;\n\n if (enable) {\n this.startRefreshTimer(userId, ttl);\n } else {\n this.refreshGeneration += 1;\n this.clearRefreshTimer();\n }\n\n LoggerProxy.info(`Cross-client answer-calls-on-wxcc set to ${enable}`, {\n module: WEBEX_CROSS_CLIENT_FILE,\n method: METHODS.SET_MANAGE_WEBEX_CALLING_IN_WXCC,\n data: {\n appName,\n deviceId: this.extractDeviceIdFromUrl(deviceUrl),\n ttl,\n },\n });\n }\n\n public teardown(): void {\n this.refreshGeneration += 1;\n this.clearRefreshTimer();\n this.answerCallsState = false;\n }\n\n /** Whether usersub `answer-calls-on-wxcc: true` was successfully published this session. */\n public isAnswerCallsStateActive(): boolean {\n return this.answerCallsState;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.TELEPHONY_CALL_UNMUTED = exports.TELEPHONY_CALL_MUTED = void 0;
7
+ var _loggerProxy = _interopRequireDefault(require("../logger-proxy"));
8
+ var _constants = require("../constants");
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ const WXAPP_TELEPHONY_MERCURY_SYNC_FILE = 'WxAppTelephonyMercurySync';
11
+ const TELEPHONY_CALL_MUTED = exports.TELEPHONY_CALL_MUTED = 'event:telephony_calls.muted';
12
+ const TELEPHONY_CALL_UNMUTED = exports.TELEPHONY_CALL_UNMUTED = 'event:telephony_calls.unmuted';
13
+ /**
14
+ * Subscribes to Mercury telephony mute/unmute events for wxApp thick-client sync (AD parity).
15
+ */
16
+ class WxAppTelephonyMercurySync {
17
+ constructor(webex) {
18
+ this.webex = webex;
19
+ }
20
+ decodeBase64(value) {
21
+ try {
22
+ return atob(value);
23
+ } catch {
24
+ return value;
25
+ }
26
+ }
27
+ handleMuteStateEvent = (agentId, event) => {
28
+ const {
29
+ actorId,
30
+ callId,
31
+ muted
32
+ } = event?.data ?? {};
33
+ if (!actorId || !callId || muted === undefined) {
34
+ return;
35
+ }
36
+ const decodedActorId = this.decodeBase64(actorId);
37
+ const decodedCallId = this.decodeBase64(callId);
38
+ if (!decodedActorId.endsWith(agentId)) {
39
+ return;
40
+ }
41
+ _loggerProxy.default.info('WxApp telephony mute state sync received', {
42
+ module: WXAPP_TELEPHONY_MERCURY_SYNC_FILE,
43
+ method: _constants.METHODS.SYNC_WXAPP_MUTE_FROM_MERCURY,
44
+ data: {
45
+ muted
46
+ }
47
+ });
48
+ this.muteChangeHandler?.(decodedCallId, muted);
49
+ };
50
+ subscribe(agentId, onMuteChange) {
51
+ this.unsubscribe();
52
+ const mercury = this.webex.internal.mercury;
53
+ if (!mercury) {
54
+ _loggerProxy.default.error('Mercury is unavailable for wxApp mute sync', {
55
+ module: WXAPP_TELEPHONY_MERCURY_SYNC_FILE,
56
+ method: _constants.METHODS.SYNC_WXAPP_MUTE_FROM_MERCURY
57
+ });
58
+ return;
59
+ }
60
+ this.subscribedAgentId = agentId;
61
+ this.muteChangeHandler = onMuteChange;
62
+ this.boundMuteHandler = event => {
63
+ this.handleMuteStateEvent(agentId, event);
64
+ };
65
+ this.boundUnmuteHandler = event => {
66
+ this.handleMuteStateEvent(agentId, event);
67
+ };
68
+ mercury.on(TELEPHONY_CALL_MUTED, this.boundMuteHandler);
69
+ mercury.on(TELEPHONY_CALL_UNMUTED, this.boundUnmuteHandler);
70
+ _loggerProxy.default.info('Subscribed to wxApp telephony Mercury mute sync', {
71
+ module: WXAPP_TELEPHONY_MERCURY_SYNC_FILE,
72
+ method: _constants.METHODS.SYNC_WXAPP_MUTE_FROM_MERCURY
73
+ });
74
+ }
75
+ unsubscribe() {
76
+ const mercury = this.webex.internal.mercury;
77
+ if (mercury && this.boundMuteHandler) {
78
+ mercury.off(TELEPHONY_CALL_MUTED, this.boundMuteHandler);
79
+ }
80
+ if (mercury && this.boundUnmuteHandler) {
81
+ mercury.off(TELEPHONY_CALL_UNMUTED, this.boundUnmuteHandler);
82
+ }
83
+ this.subscribedAgentId = undefined;
84
+ this.muteChangeHandler = undefined;
85
+ this.boundMuteHandler = undefined;
86
+ this.boundUnmuteHandler = undefined;
87
+ }
88
+ isSubscribed() {
89
+ return Boolean(this.subscribedAgentId && this.muteChangeHandler);
90
+ }
91
+ }
92
+ exports.default = WxAppTelephonyMercurySync;
93
+ //# sourceMappingURL=WxAppTelephonyMercurySync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_loggerProxy","_interopRequireDefault","require","_constants","e","__esModule","default","WXAPP_TELEPHONY_MERCURY_SYNC_FILE","TELEPHONY_CALL_MUTED","exports","TELEPHONY_CALL_UNMUTED","WxAppTelephonyMercurySync","constructor","webex","decodeBase64","value","atob","handleMuteStateEvent","agentId","event","actorId","callId","muted","data","undefined","decodedActorId","decodedCallId","endsWith","LoggerProxy","info","module","method","METHODS","SYNC_WXAPP_MUTE_FROM_MERCURY","muteChangeHandler","subscribe","onMuteChange","unsubscribe","mercury","internal","error","subscribedAgentId","boundMuteHandler","boundUnmuteHandler","on","off","isSubscribed","Boolean"],"sources":["WxAppTelephonyMercurySync.ts"],"sourcesContent":["import LoggerProxy from '../logger-proxy';\nimport {METHODS} from '../constants';\nimport {WebexSDK} from '../types';\n\nconst WXAPP_TELEPHONY_MERCURY_SYNC_FILE = 'WxAppTelephonyMercurySync';\n\nexport const TELEPHONY_CALL_MUTED = 'event:telephony_calls.muted';\nexport const TELEPHONY_CALL_UNMUTED = 'event:telephony_calls.unmuted';\n\nexport type UpdatedCallMuteStateEvent = {\n data: {\n actorId: string;\n callId: string;\n muted: boolean;\n };\n};\n\ntype MuteChangeHandler = (callId: string, muted: boolean) => void;\n\n/**\n * Subscribes to Mercury telephony mute/unmute events for wxApp thick-client sync (AD parity).\n */\nexport default class WxAppTelephonyMercurySync {\n private webex: WebexSDK;\n private subscribedAgentId?: string;\n private muteChangeHandler?: MuteChangeHandler;\n private boundMuteHandler?: (event: UpdatedCallMuteStateEvent) => void;\n private boundUnmuteHandler?: (event: UpdatedCallMuteStateEvent) => void;\n\n constructor(webex: WebexSDK) {\n this.webex = webex;\n }\n\n private decodeBase64(value: string): string {\n try {\n return atob(value);\n } catch {\n return value;\n }\n }\n\n private handleMuteStateEvent = (agentId: string, event: UpdatedCallMuteStateEvent): void => {\n const {actorId, callId, muted} = event?.data ?? {};\n if (!actorId || !callId || muted === undefined) {\n return;\n }\n\n const decodedActorId = this.decodeBase64(actorId);\n const decodedCallId = this.decodeBase64(callId);\n\n if (!decodedActorId.endsWith(agentId)) {\n return;\n }\n\n LoggerProxy.info('WxApp telephony mute state sync received', {\n module: WXAPP_TELEPHONY_MERCURY_SYNC_FILE,\n method: METHODS.SYNC_WXAPP_MUTE_FROM_MERCURY,\n data: {muted},\n });\n\n this.muteChangeHandler?.(decodedCallId, muted);\n };\n\n public subscribe(agentId: string, onMuteChange: MuteChangeHandler): void {\n this.unsubscribe();\n\n const mercury = this.webex.internal.mercury;\n if (!mercury) {\n LoggerProxy.error('Mercury is unavailable for wxApp mute sync', {\n module: WXAPP_TELEPHONY_MERCURY_SYNC_FILE,\n method: METHODS.SYNC_WXAPP_MUTE_FROM_MERCURY,\n });\n\n return;\n }\n\n this.subscribedAgentId = agentId;\n this.muteChangeHandler = onMuteChange;\n\n this.boundMuteHandler = (event: UpdatedCallMuteStateEvent) => {\n this.handleMuteStateEvent(agentId, event);\n };\n this.boundUnmuteHandler = (event: UpdatedCallMuteStateEvent) => {\n this.handleMuteStateEvent(agentId, event);\n };\n\n mercury.on(TELEPHONY_CALL_MUTED, this.boundMuteHandler);\n mercury.on(TELEPHONY_CALL_UNMUTED, this.boundUnmuteHandler);\n\n LoggerProxy.info('Subscribed to wxApp telephony Mercury mute sync', {\n module: WXAPP_TELEPHONY_MERCURY_SYNC_FILE,\n method: METHODS.SYNC_WXAPP_MUTE_FROM_MERCURY,\n });\n }\n\n public unsubscribe(): void {\n const mercury = this.webex.internal.mercury;\n\n if (mercury && this.boundMuteHandler) {\n mercury.off(TELEPHONY_CALL_MUTED, this.boundMuteHandler);\n }\n if (mercury && this.boundUnmuteHandler) {\n mercury.off(TELEPHONY_CALL_UNMUTED, this.boundUnmuteHandler);\n }\n\n this.subscribedAgentId = undefined;\n this.muteChangeHandler = undefined;\n this.boundMuteHandler = undefined;\n this.boundUnmuteHandler = undefined;\n }\n\n public isSubscribed(): boolean {\n return Boolean(this.subscribedAgentId && this.muteChangeHandler);\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -184,6 +184,9 @@ function parseAgentConfigs(profileData) {
184
184
  callVariablesSuppressed: tenantData.callVariablesSuppressed,
185
185
  agentDbId: userData.dbId,
186
186
  allowConsultToQueue: agentProfileData.consultToQueue,
187
+ accessQueue: agentProfileData.accessQueue,
188
+ accessEntryPoint: agentProfileData.accessEntryPoint,
189
+ accessBuddyTeam: agentProfileData.accessBuddyTeam,
187
190
  agentPersonalStatsEnabled: agentProfileData.viewableStatistics ? agentProfileData.viewableStatistics.agentStats : false,
188
191
  addressBookId: agentProfileData.addressBookId,
189
192
  outdialANIId: agentProfileData.outdialANIId,
@@ -1 +1 @@
1
- {"version":3,"names":["_constants","require","_types","getUrlMapping","urlMappings","name","mappedUrl","find","mapping","url","getMsftConfig","agentProfileData","showUserDetailsMS","stateSynchronizationMS","getWebexConfig","showUserDetailsWebex","stateSynchronizationWebex","getDefaultAgentDN","agentDNValidation","getFilteredDialplanEntries","dialPlanData","profileDialPlans","dialPlanEntries","forEach","dailPlan","includes","id","filteredPlan","regex","regularExpression","prefix","strippedChars","push","getFilterAuxCodes","auxCodes","type","specificCodes","filteredAuxCodes","auxCode","workTypeCode","active","length","isSystem","isSystemCode","isDefault","defaultCode","getDefaultWrapUpCode","wrapUpReasonList","c","parseAgentConfigs","profileData","userData","teamData","tenantData","orgInfoData","orgSettingsData","urlMapping","aiFeatureFlags","tenantDataTimeout","timeoutDesktopInactivityEnabled","timeoutDesktopInactivityMins","inactivityTimeoutTimer","timeoutDesktopInactivityCustomEnabled","wrapupCodes","WRAP_UP_CODE","accessWrapUpCode","wrapUpCodes","idleCodes","IDLE_CODE","accessIdleCode","defaultWrapUpData","aiFeature","data","undefined","finalData","teams","defaultDn","deafultDialledNumber","forceDefaultDn","forceDefaultDnForAgent","regexUS","dnDefaultRegex","regexOther","dnOtherRegex","agentId","ciUserId","agentName","firstName","lastName","agentMailId","email","agentProfileID","agentProfileId","autoAnswer","dialPlan","dialPlanEnabled","dialPlanEntity","dialPlans","multimediaProfileId","skillProfileId","siteId","enterpriseId","tenantId","tenantTimezone","timezone","environment","privacyShieldVisible","organizationIdleCodes","idleCodesAccess","wrapUpData","wrapUpProps","autoWrapup","autoWrapUp","autoWrapupInterval","autoWrapAfterSeconds","lastAgentRoute","lastAgentRouting","wrapUpCodeAccess","allowCancelAutoWrapup","allowAutoWrapUpExtension","defaultWrapupCode","isOutboundEnabledForTenant","outdialEnabled","isOutboundEnabledForAgent","isAdhocDialingEnabled","isAgentAvailableAfterOutdial","agentAvailableAfterOutdial","outDialEp","outdialEntryPointId","isCampaignManagementEnabled","campaignManagerEnabled","isEndTaskEnabled","endCallEnabled","isEndConsultEnabled","endConsultEnabled","callVariablesSuppressed","agentDbId","dbId","allowConsultToQueue","consultToQueue","agentPersonalStatsEnabled","viewableStatistics","agentStats","addressBookId","outdialANIId","analyserUserId","acqueonApiUrl","acqueonConsoleUrl","isTimeoutDesktopInactivityEnabled","loginVoiceOptions","webRtcEnabled","maskSensitiveData","microsoftConfig","webexConfig","lostConnectionRecoveryTimeout","LOST_CONNECTION_RECOVERY_TIMEOUT"],"sources":["Util.ts"],"sourcesContent":["import {LOST_CONNECTION_RECOVERY_TIMEOUT} from '../core/constants';\nimport {\n AgentResponse,\n AuxCode,\n AuxCodeType,\n DesktopProfileResponse,\n DialPlanEntity,\n Entity,\n IDLE_CODE,\n OrgInfo,\n OrgSettings,\n Profile,\n Team,\n TenantData,\n URLMapping,\n WRAP_UP_CODE,\n AIFeatureFlagsResponse,\n AIFeatureFlags,\n} from './types';\n\n/**\n * Get the URL mapping for the given name\n * @param {Array<URLMapping>} urlMappings\n * @param {string} name\n * @returns {string}\n */\nconst getUrlMapping = (urlMappings: Array<URLMapping>, name: string) => {\n const mappedUrl = urlMappings.find((mapping) => mapping.name === name)?.url;\n\n return mappedUrl || '';\n};\n\n/**\n * Get the MSFT and Webex configuration\n * @param {DesktopProfileResponse} agentProfileData\n * @returns {Object}\n */\nconst getMsftConfig = (agentProfileData: DesktopProfileResponse) => {\n return {\n showUserDetailsMS: agentProfileData.showUserDetailsMS ?? false,\n stateSynchronizationMS: agentProfileData.stateSynchronizationMS ?? false,\n };\n};\n\n/**\n * Get the Webex configuration\n * @param {DesktopProfileResponse} agentProfileData\n * @returns {Object}\n */\nconst getWebexConfig = (agentProfileData: DesktopProfileResponse) => {\n return {\n showUserDetailsWebex: agentProfileData.showUserDetailsWebex ?? false,\n stateSynchronizationWebex: agentProfileData.stateSynchronizationWebex ?? false,\n };\n};\n\n/**\n * Get the default agent DN\n * @param {string} agentDNValidation\n * @returns {boolean}\n */\nconst getDefaultAgentDN = (agentDNValidation: string) => {\n return agentDNValidation === 'PROVISIONED_VALUE';\n};\n\n/**\n * Get the filtered dialplan entries\n * @param {Array<DialPlanEntity>} dialPlanData\n * @param {Array<string>} profileDialPlans\n * @returns {Array<Entity>}\n */\nconst getFilteredDialplanEntries = (dialPlanData: DialPlanEntity[], profileDialPlans: string[]) => {\n const dialPlanEntries = [];\n dialPlanData.forEach((dailPlan: DialPlanEntity) => {\n if (profileDialPlans.includes(dailPlan.id)) {\n const filteredPlan = {\n regex: dailPlan.regularExpression,\n prefix: dailPlan.prefix,\n strippedChars: dailPlan.strippedChars,\n name: dailPlan.name,\n };\n dialPlanEntries.push(filteredPlan);\n }\n });\n\n return dialPlanEntries;\n};\n\n/**\n * Get the filtered aux codes\n * @param {Array<AuxCode>} auxCodes\n * @param {AuxCodeType} type\n * @param {Array<string>} specificCodes\n * @returns {Array<Entity>}\n */\nconst getFilterAuxCodes = (\n auxCodes: Array<AuxCode>,\n type: AuxCodeType,\n specificCodes: string[]\n) => {\n const filteredAuxCodes: Array<Entity> = [];\n auxCodes.forEach((auxCode: AuxCode) => {\n if (\n auxCode.workTypeCode === type &&\n auxCode.active &&\n (specificCodes.length === 0 || specificCodes.includes(auxCode.id))\n ) {\n filteredAuxCodes.push({\n id: auxCode.id,\n name: auxCode.name,\n isSystem: auxCode.isSystemCode,\n isDefault: auxCode.defaultCode,\n });\n }\n });\n\n return filteredAuxCodes;\n};\n\n/**\n * Get the default wrapup code\n * @param {Array<Entity>} wrapUpReasonList\n * @returns {Entity}\n */\nfunction getDefaultWrapUpCode(wrapUpReasonList: Entity[]) {\n return wrapUpReasonList?.find((c: Entity) => c.isDefault);\n}\n\n/**\n * Parse the agent configurations\n * @param {Object} profileData\n * @returns {Profile}\n */\nfunction parseAgentConfigs(profileData: {\n userData: AgentResponse;\n teamData: Team[];\n tenantData: TenantData;\n orgInfoData: OrgInfo;\n auxCodes: AuxCode[];\n orgSettingsData: OrgSettings;\n agentProfileData: DesktopProfileResponse;\n dialPlanData: DialPlanEntity[];\n urlMapping: URLMapping[];\n multimediaProfileId: string;\n aiFeatureFlags: AIFeatureFlagsResponse;\n}): Profile {\n const {\n userData,\n teamData,\n tenantData,\n orgInfoData,\n auxCodes,\n orgSettingsData,\n agentProfileData,\n dialPlanData,\n urlMapping,\n aiFeatureFlags,\n } = profileData;\n\n const tenantDataTimeout = tenantData.timeoutDesktopInactivityEnabled\n ? tenantData.timeoutDesktopInactivityMins\n : null;\n const inactivityTimeoutTimer = agentProfileData.timeoutDesktopInactivityCustomEnabled\n ? agentProfileData.timeoutDesktopInactivityMins\n : tenantDataTimeout;\n\n const wrapupCodes = getFilterAuxCodes(\n auxCodes,\n WRAP_UP_CODE,\n agentProfileData.accessWrapUpCode === 'ALL' ? [] : agentProfileData.wrapUpCodes\n );\n\n const idleCodes = getFilterAuxCodes(\n auxCodes,\n IDLE_CODE,\n agentProfileData.accessIdleCode === 'ALL' ? [] : agentProfileData.idleCodes\n );\n\n idleCodes.push({\n id: '0',\n name: 'Available',\n isSystem: false,\n isDefault: false,\n }); // pushing available state to idle codes\n\n const defaultWrapUpData = getDefaultWrapUpCode(wrapupCodes);\n const aiFeature: AIFeatureFlags | undefined =\n aiFeatureFlags?.data?.length > 0 ? aiFeatureFlags.data[0] : undefined;\n\n const finalData = {\n teams: teamData,\n defaultDn: userData.deafultDialledNumber,\n forceDefaultDn: tenantData.forceDefaultDn,\n forceDefaultDnForAgent: getDefaultAgentDN(agentProfileData.agentDNValidation),\n regexUS: tenantData.dnDefaultRegex,\n regexOther: tenantData.dnOtherRegex,\n agentId: userData.ciUserId,\n agentName: `${userData.firstName} ${userData.lastName}`,\n agentMailId: userData.email,\n agentProfileID: userData.agentProfileId,\n autoAnswer: agentProfileData.autoAnswer,\n dialPlan: agentProfileData.dialPlanEnabled\n ? {\n type: 'adhocDial',\n dialPlanEntity: getFilteredDialplanEntries(dialPlanData, agentProfileData.dialPlans),\n }\n : undefined,\n multimediaProfileId: profileData.multimediaProfileId,\n skillProfileId: userData.skillProfileId ? userData.skillProfileId : null,\n siteId: userData.siteId,\n enterpriseId: orgInfoData.tenantId,\n tenantTimezone: orgInfoData.timezone,\n environment: orgInfoData.environment,\n privacyShieldVisible: tenantData.privacyShieldVisible,\n organizationIdleCodes: [], // TODO: for supervisor, getOrgFilteredIdleCodes(auxCodes, false),\n idleCodesAccess: agentProfileData.accessIdleCode as 'ALL' | 'SPECIFIC',\n idleCodes,\n wrapupCodes,\n wrapUpData: {\n wrapUpProps: {\n autoWrapup: agentProfileData.autoWrapUp,\n autoWrapupInterval: agentProfileData.autoWrapAfterSeconds,\n lastAgentRoute: agentProfileData.lastAgentRouting,\n wrapUpCodeAccess: agentProfileData.accessWrapUpCode,\n wrapUpReasonList: wrapupCodes,\n allowCancelAutoWrapup: agentProfileData.allowAutoWrapUpExtension,\n },\n },\n defaultWrapupCode: defaultWrapUpData?.id ?? '',\n isOutboundEnabledForTenant: tenantData.outdialEnabled,\n isOutboundEnabledForAgent: agentProfileData.outdialEnabled,\n isAdhocDialingEnabled: agentProfileData.dialPlanEnabled,\n isAgentAvailableAfterOutdial: agentProfileData.agentAvailableAfterOutdial,\n outDialEp: agentProfileData.outdialEntryPointId,\n isCampaignManagementEnabled: orgSettingsData.campaignManagerEnabled,\n isEndTaskEnabled: tenantData.endCallEnabled,\n isEndConsultEnabled: tenantData.endConsultEnabled,\n callVariablesSuppressed: tenantData.callVariablesSuppressed,\n agentDbId: userData.dbId,\n allowConsultToQueue: agentProfileData.consultToQueue,\n agentPersonalStatsEnabled: agentProfileData.viewableStatistics\n ? agentProfileData.viewableStatistics.agentStats\n : false,\n addressBookId: agentProfileData.addressBookId,\n outdialANIId: agentProfileData.outdialANIId,\n analyserUserId: userData.id,\n\n urlMappings: {\n acqueonApiUrl: getUrlMapping(urlMapping, 'ACQUEON_API_URL'),\n acqueonConsoleUrl: getUrlMapping(urlMapping, 'ACQUEON_CONSOLE_URL'),\n },\n isTimeoutDesktopInactivityEnabled: tenantData.timeoutDesktopInactivityEnabled,\n timeoutDesktopInactivityMins: inactivityTimeoutTimer,\n loginVoiceOptions: agentProfileData.loginVoiceOptions ?? [],\n webRtcEnabled: orgSettingsData.webRtcEnabled,\n maskSensitiveData: orgSettingsData.maskSensitiveData\n ? orgSettingsData.maskSensitiveData\n : false,\n microsoftConfig: getMsftConfig(agentProfileData),\n webexConfig: getWebexConfig(agentProfileData),\n lostConnectionRecoveryTimeout:\n tenantData.lostConnectionRecoveryTimeout || LOST_CONNECTION_RECOVERY_TIMEOUT,\n aiFeature,\n };\n\n return finalData;\n}\n\nexport {parseAgentConfigs};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_constants","require","_types","getUrlMapping","urlMappings","name","mappedUrl","find","mapping","url","getMsftConfig","agentProfileData","showUserDetailsMS","stateSynchronizationMS","getWebexConfig","showUserDetailsWebex","stateSynchronizationWebex","getDefaultAgentDN","agentDNValidation","getFilteredDialplanEntries","dialPlanData","profileDialPlans","dialPlanEntries","forEach","dailPlan","includes","id","filteredPlan","regex","regularExpression","prefix","strippedChars","push","getFilterAuxCodes","auxCodes","type","specificCodes","filteredAuxCodes","auxCode","workTypeCode","active","length","isSystem","isSystemCode","isDefault","defaultCode","getDefaultWrapUpCode","wrapUpReasonList","c","parseAgentConfigs","profileData","userData","teamData","tenantData","orgInfoData","orgSettingsData","urlMapping","aiFeatureFlags","tenantDataTimeout","timeoutDesktopInactivityEnabled","timeoutDesktopInactivityMins","inactivityTimeoutTimer","timeoutDesktopInactivityCustomEnabled","wrapupCodes","WRAP_UP_CODE","accessWrapUpCode","wrapUpCodes","idleCodes","IDLE_CODE","accessIdleCode","defaultWrapUpData","aiFeature","data","undefined","finalData","teams","defaultDn","deafultDialledNumber","forceDefaultDn","forceDefaultDnForAgent","regexUS","dnDefaultRegex","regexOther","dnOtherRegex","agentId","ciUserId","agentName","firstName","lastName","agentMailId","email","agentProfileID","agentProfileId","autoAnswer","dialPlan","dialPlanEnabled","dialPlanEntity","dialPlans","multimediaProfileId","skillProfileId","siteId","enterpriseId","tenantId","tenantTimezone","timezone","environment","privacyShieldVisible","organizationIdleCodes","idleCodesAccess","wrapUpData","wrapUpProps","autoWrapup","autoWrapUp","autoWrapupInterval","autoWrapAfterSeconds","lastAgentRoute","lastAgentRouting","wrapUpCodeAccess","allowCancelAutoWrapup","allowAutoWrapUpExtension","defaultWrapupCode","isOutboundEnabledForTenant","outdialEnabled","isOutboundEnabledForAgent","isAdhocDialingEnabled","isAgentAvailableAfterOutdial","agentAvailableAfterOutdial","outDialEp","outdialEntryPointId","isCampaignManagementEnabled","campaignManagerEnabled","isEndTaskEnabled","endCallEnabled","isEndConsultEnabled","endConsultEnabled","callVariablesSuppressed","agentDbId","dbId","allowConsultToQueue","consultToQueue","accessQueue","accessEntryPoint","accessBuddyTeam","agentPersonalStatsEnabled","viewableStatistics","agentStats","addressBookId","outdialANIId","analyserUserId","acqueonApiUrl","acqueonConsoleUrl","isTimeoutDesktopInactivityEnabled","loginVoiceOptions","webRtcEnabled","maskSensitiveData","microsoftConfig","webexConfig","lostConnectionRecoveryTimeout","LOST_CONNECTION_RECOVERY_TIMEOUT"],"sources":["Util.ts"],"sourcesContent":["import {LOST_CONNECTION_RECOVERY_TIMEOUT} from '../core/constants';\nimport {\n AgentResponse,\n AuxCode,\n AuxCodeType,\n DesktopProfileResponse,\n DialPlanEntity,\n Entity,\n IDLE_CODE,\n OrgInfo,\n OrgSettings,\n Profile,\n Team,\n TenantData,\n URLMapping,\n WRAP_UP_CODE,\n AIFeatureFlagsResponse,\n AIFeatureFlags,\n} from './types';\n\n/**\n * Get the URL mapping for the given name\n * @param {Array<URLMapping>} urlMappings\n * @param {string} name\n * @returns {string}\n */\nconst getUrlMapping = (urlMappings: Array<URLMapping>, name: string) => {\n const mappedUrl = urlMappings.find((mapping) => mapping.name === name)?.url;\n\n return mappedUrl || '';\n};\n\n/**\n * Get the MSFT and Webex configuration\n * @param {DesktopProfileResponse} agentProfileData\n * @returns {Object}\n */\nconst getMsftConfig = (agentProfileData: DesktopProfileResponse) => {\n return {\n showUserDetailsMS: agentProfileData.showUserDetailsMS ?? false,\n stateSynchronizationMS: agentProfileData.stateSynchronizationMS ?? false,\n };\n};\n\n/**\n * Get the Webex configuration\n * @param {DesktopProfileResponse} agentProfileData\n * @returns {Object}\n */\nconst getWebexConfig = (agentProfileData: DesktopProfileResponse) => {\n return {\n showUserDetailsWebex: agentProfileData.showUserDetailsWebex ?? false,\n stateSynchronizationWebex: agentProfileData.stateSynchronizationWebex ?? false,\n };\n};\n\n/**\n * Get the default agent DN\n * @param {string} agentDNValidation\n * @returns {boolean}\n */\nconst getDefaultAgentDN = (agentDNValidation: string) => {\n return agentDNValidation === 'PROVISIONED_VALUE';\n};\n\n/**\n * Get the filtered dialplan entries\n * @param {Array<DialPlanEntity>} dialPlanData\n * @param {Array<string>} profileDialPlans\n * @returns {Array<Entity>}\n */\nconst getFilteredDialplanEntries = (dialPlanData: DialPlanEntity[], profileDialPlans: string[]) => {\n const dialPlanEntries = [];\n dialPlanData.forEach((dailPlan: DialPlanEntity) => {\n if (profileDialPlans.includes(dailPlan.id)) {\n const filteredPlan = {\n regex: dailPlan.regularExpression,\n prefix: dailPlan.prefix,\n strippedChars: dailPlan.strippedChars,\n name: dailPlan.name,\n };\n dialPlanEntries.push(filteredPlan);\n }\n });\n\n return dialPlanEntries;\n};\n\n/**\n * Get the filtered aux codes\n * @param {Array<AuxCode>} auxCodes\n * @param {AuxCodeType} type\n * @param {Array<string>} specificCodes\n * @returns {Array<Entity>}\n */\nconst getFilterAuxCodes = (\n auxCodes: Array<AuxCode>,\n type: AuxCodeType,\n specificCodes: string[]\n) => {\n const filteredAuxCodes: Array<Entity> = [];\n auxCodes.forEach((auxCode: AuxCode) => {\n if (\n auxCode.workTypeCode === type &&\n auxCode.active &&\n (specificCodes.length === 0 || specificCodes.includes(auxCode.id))\n ) {\n filteredAuxCodes.push({\n id: auxCode.id,\n name: auxCode.name,\n isSystem: auxCode.isSystemCode,\n isDefault: auxCode.defaultCode,\n });\n }\n });\n\n return filteredAuxCodes;\n};\n\n/**\n * Get the default wrapup code\n * @param {Array<Entity>} wrapUpReasonList\n * @returns {Entity}\n */\nfunction getDefaultWrapUpCode(wrapUpReasonList: Entity[]) {\n return wrapUpReasonList?.find((c: Entity) => c.isDefault);\n}\n\n/**\n * Parse the agent configurations\n * @param {Object} profileData\n * @returns {Profile}\n */\nfunction parseAgentConfigs(profileData: {\n userData: AgentResponse;\n teamData: Team[];\n tenantData: TenantData;\n orgInfoData: OrgInfo;\n auxCodes: AuxCode[];\n orgSettingsData: OrgSettings;\n agentProfileData: DesktopProfileResponse;\n dialPlanData: DialPlanEntity[];\n urlMapping: URLMapping[];\n multimediaProfileId: string;\n aiFeatureFlags: AIFeatureFlagsResponse;\n}): Profile {\n const {\n userData,\n teamData,\n tenantData,\n orgInfoData,\n auxCodes,\n orgSettingsData,\n agentProfileData,\n dialPlanData,\n urlMapping,\n aiFeatureFlags,\n } = profileData;\n\n const tenantDataTimeout = tenantData.timeoutDesktopInactivityEnabled\n ? tenantData.timeoutDesktopInactivityMins\n : null;\n const inactivityTimeoutTimer = agentProfileData.timeoutDesktopInactivityCustomEnabled\n ? agentProfileData.timeoutDesktopInactivityMins\n : tenantDataTimeout;\n\n const wrapupCodes = getFilterAuxCodes(\n auxCodes,\n WRAP_UP_CODE,\n agentProfileData.accessWrapUpCode === 'ALL' ? [] : agentProfileData.wrapUpCodes\n );\n\n const idleCodes = getFilterAuxCodes(\n auxCodes,\n IDLE_CODE,\n agentProfileData.accessIdleCode === 'ALL' ? [] : agentProfileData.idleCodes\n );\n\n idleCodes.push({\n id: '0',\n name: 'Available',\n isSystem: false,\n isDefault: false,\n }); // pushing available state to idle codes\n\n const defaultWrapUpData = getDefaultWrapUpCode(wrapupCodes);\n const aiFeature: AIFeatureFlags | undefined =\n aiFeatureFlags?.data?.length > 0 ? aiFeatureFlags.data[0] : undefined;\n\n const finalData = {\n teams: teamData,\n defaultDn: userData.deafultDialledNumber,\n forceDefaultDn: tenantData.forceDefaultDn,\n forceDefaultDnForAgent: getDefaultAgentDN(agentProfileData.agentDNValidation),\n regexUS: tenantData.dnDefaultRegex,\n regexOther: tenantData.dnOtherRegex,\n agentId: userData.ciUserId,\n agentName: `${userData.firstName} ${userData.lastName}`,\n agentMailId: userData.email,\n agentProfileID: userData.agentProfileId,\n autoAnswer: agentProfileData.autoAnswer,\n dialPlan: agentProfileData.dialPlanEnabled\n ? {\n type: 'adhocDial',\n dialPlanEntity: getFilteredDialplanEntries(dialPlanData, agentProfileData.dialPlans),\n }\n : undefined,\n multimediaProfileId: profileData.multimediaProfileId,\n skillProfileId: userData.skillProfileId ? userData.skillProfileId : null,\n siteId: userData.siteId,\n enterpriseId: orgInfoData.tenantId,\n tenantTimezone: orgInfoData.timezone,\n environment: orgInfoData.environment,\n privacyShieldVisible: tenantData.privacyShieldVisible,\n organizationIdleCodes: [], // TODO: for supervisor, getOrgFilteredIdleCodes(auxCodes, false),\n idleCodesAccess: agentProfileData.accessIdleCode as 'ALL' | 'SPECIFIC',\n idleCodes,\n wrapupCodes,\n wrapUpData: {\n wrapUpProps: {\n autoWrapup: agentProfileData.autoWrapUp,\n autoWrapupInterval: agentProfileData.autoWrapAfterSeconds,\n lastAgentRoute: agentProfileData.lastAgentRouting,\n wrapUpCodeAccess: agentProfileData.accessWrapUpCode,\n wrapUpReasonList: wrapupCodes,\n allowCancelAutoWrapup: agentProfileData.allowAutoWrapUpExtension,\n },\n },\n defaultWrapupCode: defaultWrapUpData?.id ?? '',\n isOutboundEnabledForTenant: tenantData.outdialEnabled,\n isOutboundEnabledForAgent: agentProfileData.outdialEnabled,\n isAdhocDialingEnabled: agentProfileData.dialPlanEnabled,\n isAgentAvailableAfterOutdial: agentProfileData.agentAvailableAfterOutdial,\n outDialEp: agentProfileData.outdialEntryPointId,\n isCampaignManagementEnabled: orgSettingsData.campaignManagerEnabled,\n isEndTaskEnabled: tenantData.endCallEnabled,\n isEndConsultEnabled: tenantData.endConsultEnabled,\n callVariablesSuppressed: tenantData.callVariablesSuppressed,\n agentDbId: userData.dbId,\n allowConsultToQueue: agentProfileData.consultToQueue,\n accessQueue: agentProfileData.accessQueue,\n accessEntryPoint: agentProfileData.accessEntryPoint,\n accessBuddyTeam: agentProfileData.accessBuddyTeam,\n agentPersonalStatsEnabled: agentProfileData.viewableStatistics\n ? agentProfileData.viewableStatistics.agentStats\n : false,\n addressBookId: agentProfileData.addressBookId,\n outdialANIId: agentProfileData.outdialANIId,\n analyserUserId: userData.id,\n\n urlMappings: {\n acqueonApiUrl: getUrlMapping(urlMapping, 'ACQUEON_API_URL'),\n acqueonConsoleUrl: getUrlMapping(urlMapping, 'ACQUEON_CONSOLE_URL'),\n },\n isTimeoutDesktopInactivityEnabled: tenantData.timeoutDesktopInactivityEnabled,\n timeoutDesktopInactivityMins: inactivityTimeoutTimer,\n loginVoiceOptions: agentProfileData.loginVoiceOptions ?? [],\n webRtcEnabled: orgSettingsData.webRtcEnabled,\n maskSensitiveData: orgSettingsData.maskSensitiveData\n ? orgSettingsData.maskSensitiveData\n : false,\n microsoftConfig: getMsftConfig(agentProfileData),\n webexConfig: getWebexConfig(agentProfileData),\n lostConnectionRecoveryTimeout:\n tenantData.lostConnectionRecoveryTimeout || LOST_CONNECTION_RECOVERY_TIMEOUT,\n aiFeature,\n };\n\n return finalData;\n}\n\nexport {parseAgentConfigs};\n"],"mappings":"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","ignoreList":[]}
@@ -3,10 +3,17 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.endPointMap = exports.METHODS = exports.DEFAULT_PAGE_SIZE = exports.DEFAULT_PAGE = exports.DEFAULT_AUXCODE_ATTRIBUTES = exports.AGENT_STATE_AVAILABLE_ID = exports.AGENT_STATE_AVAILABLE_DESCRIPTION = exports.AGENT_STATE_AVAILABLE = void 0;
6
+ exports.endPointMap = exports.METHODS = exports.DEFAULT_PAGE_SIZE = exports.DEFAULT_PAGE = exports.DEFAULT_AUXCODE_ATTRIBUTES = exports.COLLABORATION_ACCESS = exports.AGENT_STATE_AVAILABLE_ID = exports.AGENT_STATE_AVAILABLE_DESCRIPTION = exports.AGENT_STATE_AVAILABLE = void 0;
7
7
  // making query params configurable for List Teams and List Aux Codes API
8
8
  const DEFAULT_PAGE = exports.DEFAULT_PAGE = 0;
9
9
 
10
+ /** Desktop Profile access levels for collaboration destination categories. */
11
+ const COLLABORATION_ACCESS = exports.COLLABORATION_ACCESS = {
12
+ ALL: 'ALL',
13
+ SPECIFIC: 'SPECIFIC',
14
+ NONE: 'NONE'
15
+ };
16
+
10
17
  /**
11
18
  * Default page size for paginated API requests.
12
19
  * @type {number}
@@ -229,16 +236,13 @@ const endPointMap = exports.endPointMap = {
229
236
  */
230
237
  queueList: (orgId, queryParams) => `/organization/${orgId}/v2/contact-service-queue?${queryParams}`,
231
238
  /**
232
- * Gets the endpoint for entry points list with custom query parameters.
239
+ * Gets the desktop-profile-filtered dial-number mappings used by entry-point destination lists.
233
240
  * @param orgId - Organization ID.
234
241
  * @param queryParams - Query parameters string.
235
242
  * @returns The endpoint URL string.
236
- * @public
237
- * @example
238
- * const url = endPointMap.entryPointList('org123', 'page=0&pageSize=10');
239
243
  * @ignore
240
244
  */
241
- entryPointList: (orgId, queryParams) => `/organization/${orgId}/v2/entry-point?${queryParams}`,
245
+ entryPointDialNumberList: (orgId, queryParams) => `/organization/${orgId}/v3/dial-number?${queryParams}`,
242
246
  /**
243
247
  * Gets the endpoint for address book entries with custom query parameters.
244
248
  * @param orgId - Organization ID.
@@ -1 +1 @@
1
- {"version":3,"names":["DEFAULT_PAGE","exports","DEFAULT_PAGE_SIZE","AGENT_STATE_AVAILABLE_ID","AGENT_STATE_AVAILABLE","AGENT_STATE_AVAILABLE_DESCRIPTION","DEFAULT_AUXCODE_ATTRIBUTES","METHODS","GET_AGENT_CONFIG","GET_USER_USING_CI","GET_DESKTOP_PROFILE_BY_ID","GET_MULTIMEDIA_PROFILE_BY_ID","GET_LIST_OF_TEAMS","GET_ALL_TEAMS","GET_LIST_OF_AUX_CODES","GET_ALL_AUX_CODES","GET_SITE_INFO","GET_ORG_INFO","GET_ORGANIZATION_SETTING","GET_TENANT_DATA","GET_URL_MAPPING","GET_DIAL_PLAN_DATA","GET_AI_FEATURE_FLAGS","GET_QUEUES","PARSE_AGENT_CONFIGS","GET_URL_MAPPING_UTIL","GET_MSFT_CONFIG","GET_WEBEX_CONFIG","GET_DEFAULT_AGENT_DN","GET_FILTERED_DIALPLAN_ENTRIES","GET_FILTER_AUX_CODES","GET_DEFAULT_WRAP_UP_CODE","endPointMap","userByCI","orgId","agentId","desktopProfile","desktopProfileId","multimediaProfile","multimediaProfileId","listTeams","page","pageSize","filter","length","listAuxCodes","attributes","orgInfo","orgSettings","siteInfo","siteId","tenantData","urlMapping","dialPlan","aiFeature","queueList","queryParams","entryPointList","addressBookEntries","addressBookId","outdialAniEntries","outdialANI","userPreference","userId","userPreferenceCreate"],"sources":["constants.ts"],"sourcesContent":["// making query params configurable for List Teams and List Aux Codes API\nexport const DEFAULT_PAGE = 0;\n\n/**\n * Default page size for paginated API requests.\n * @type {number}\n * @public\n * @example\n * const pageSize = DEFAULT_PAGE_SIZE; // 100\n * @ignore\n */\nexport const DEFAULT_PAGE_SIZE = 100;\n\n/**\n * Agent state ID for 'Available'.\n * @type {string}\n * @public\n * @ignore\n */\nexport const AGENT_STATE_AVAILABLE_ID = '0';\n\n/**\n * Agent state label for 'Available'.\n * @type {string}\n * @public\n * @ignore\n */\nexport const AGENT_STATE_AVAILABLE = 'Available';\n\n/**\n * Description for the 'Available' agent state.\n * @type {string}\n * @public\n * @ignore\n */\nexport const AGENT_STATE_AVAILABLE_DESCRIPTION = 'Agent is available to receive calls';\n\n/**\n * Default attributes for auxiliary code API requests.\n * @type {string[]}\n * @public\n * @ignore\n */\nexport const DEFAULT_AUXCODE_ATTRIBUTES = [\n 'id',\n 'isSystemCode',\n 'name',\n 'defaultCode',\n 'workTypeCode',\n 'active',\n];\n\n// Method names for config services\nexport const METHODS = {\n // AgentConfigService methods\n GET_AGENT_CONFIG: 'getAgentConfig',\n GET_USER_USING_CI: 'getUserUsingCI',\n GET_DESKTOP_PROFILE_BY_ID: 'getDesktopProfileById',\n GET_MULTIMEDIA_PROFILE_BY_ID: 'getMultimediaProfileById',\n GET_LIST_OF_TEAMS: 'getListOfTeams',\n GET_ALL_TEAMS: 'getAllTeams',\n GET_LIST_OF_AUX_CODES: 'getListOfAuxCodes',\n GET_ALL_AUX_CODES: 'getAllAuxCodes',\n GET_SITE_INFO: 'getSiteInfo',\n GET_ORG_INFO: 'getOrgInfo',\n GET_ORGANIZATION_SETTING: 'getOrganizationSetting',\n GET_TENANT_DATA: 'getTenantData',\n GET_URL_MAPPING: 'getURLMapping',\n GET_DIAL_PLAN_DATA: 'getDialPlanData',\n GET_AI_FEATURE_FLAGS: 'getAIFeatureFlags',\n GET_QUEUES: 'getQueues',\n\n // Util methods\n PARSE_AGENT_CONFIGS: 'parseAgentConfigs',\n GET_URL_MAPPING_UTIL: 'getUrlMapping',\n GET_MSFT_CONFIG: 'getMsftConfig',\n GET_WEBEX_CONFIG: 'getWebexConfig',\n GET_DEFAULT_AGENT_DN: 'getDefaultAgentDN',\n GET_FILTERED_DIALPLAN_ENTRIES: 'getFilteredDialplanEntries',\n GET_FILTER_AUX_CODES: 'getFilterAuxCodes',\n GET_DEFAULT_WRAP_UP_CODE: 'getDefaultWrapUpCode',\n};\n\n/**\n * Maps API endpoint names to functions that generate endpoint URLs for various organization resources.\n * @public\n * @example\n * const url = endPointMap.userByCI('org123', 'agent456');\n */\nexport const endPointMap = {\n /**\n * Gets the endpoint for a user by CI user ID.\n * @param orgId - Organization ID.\n * @param agentId - Agent ID.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.userByCI('org123', 'agent456');\n * @ignore\n */\n userByCI: (orgId: string, agentId: string) =>\n `organization/${orgId}/user/by-ci-user-id/${agentId}`,\n\n /**\n * Gets the endpoint for a desktop profile.\n * @param orgId - Organization ID.\n * @param desktopProfileId - Desktop profile ID.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.desktopProfile('org123', 'profile789');\n * @ignore\n */\n desktopProfile: (orgId: string, desktopProfileId: string) =>\n `organization/${orgId}/agent-profile/${desktopProfileId}`,\n\n /**\n * Gets the endpoint for a multimedia profile.\n * @param orgId - Organization ID.\n * @param multimediaProfileId - Multimedia profile ID.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.multimediaProfile('org123', 'multi456');\n * @ignore\n */\n multimediaProfile: (orgId: string, multimediaProfileId: string) =>\n `organization/${orgId}/multimedia-profile/${multimediaProfileId}`,\n\n /**\n * Gets the endpoint for listing teams with optional filters.\n * @param orgId - Organization ID.\n * @param page - Page number.\n * @param pageSize - Page size.\n * @param filter - Array of team IDs to filter.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.listTeams('org123', 0, 100, ['team1', 'team2']);\n * @ignore\n */\n listTeams: (orgId: string, page: number, pageSize: number, filter: string[]) =>\n `organization/${orgId}/v2/team?page=${page}&pageSize=${pageSize}${\n filter && filter.length > 0 ? `&filter=id=in=(${filter})` : ''\n }`,\n\n /**\n * Gets the endpoint for listing auxiliary codes with optional filters and attributes.\n * @param orgId - Organization ID.\n * @param page - Page number.\n * @param pageSize - Page size.\n * @param filter - Array of auxiliary code IDs to filter.\n * @param attributes - Array of attribute names to include.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.listAuxCodes('org123', 0, 100, ['aux1'], ['id', 'name']);\n * @ignore\n */\n listAuxCodes: (\n orgId: string,\n page: number,\n pageSize: number,\n filter: string[],\n attributes: string[]\n ) =>\n `organization/${orgId}/v2/auxiliary-code?page=${page}&pageSize=${pageSize}${\n filter && filter.length > 0 ? `&filter=id=in=(${filter})` : ''\n }&attributes=${attributes}&desktopProfileFilter=true`,\n\n /**\n * Gets the endpoint for organization info.\n * @param orgId - Organization ID.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.orgInfo('org123');\n * @ignore\n */\n orgInfo: (orgId: string) => `organization/${orgId}`,\n\n /**\n * Gets the endpoint for organization settings.\n * @param orgId - Organization ID.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.orgSettings('org123');\n * @ignore\n */\n orgSettings: (orgId: string) => `organization/${orgId}/v2/organization-setting?agentView=true`,\n\n /**\n * Gets the endpoint for site info.\n * @param orgId - Organization ID.\n * @param siteId - Site ID.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.siteInfo('org123', 'site456');\n * @ignore\n */\n siteInfo: (orgId: string, siteId: string) => `organization/${orgId}/site/${siteId}`,\n\n /**\n * Gets the endpoint for tenant configuration data.\n * @param orgId - Organization ID.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.tenantData('org123');\n * @ignore\n */\n tenantData: (orgId: string) => `organization/${orgId}/v2/tenant-configuration?agentView=true`,\n\n /**\n * Gets the endpoint for organization URL mapping.\n * @param orgId - Organization ID.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.urlMapping('org123');\n * @ignore\n */\n urlMapping: (orgId: string) => `organization/${orgId}/v2/org-url-mapping?sort=name,ASC`,\n\n /**\n * Gets the endpoint for dial plan.\n * @param orgId - Organization ID.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.dialPlan('org123');\n * @ignore\n */\n dialPlan: (orgId: string) => `organization/${orgId}/dial-plan?agentView=true`,\n /**\n * Gets the endpoint for listing AI feature flags.\n * @param orgId - Organization ID.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.aiFeatureFlags('org123');\n * @ignore\n */\n aiFeature: (orgId: string) => `organization/${orgId}/v2/ai-feature?page=0&pageSize=100`,\n\n /**\n * Gets the endpoint for the queue list with custom query parameters.\n * @param orgId - Organization ID.\n * @param queryParams - Query parameters string.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.queueList('org123', 'page=0&pageSize=10');\n * @ignore\n */\n queueList: (orgId: string, queryParams: string) =>\n `/organization/${orgId}/v2/contact-service-queue?${queryParams}`,\n /**\n * Gets the endpoint for entry points list with custom query parameters.\n * @param orgId - Organization ID.\n * @param queryParams - Query parameters string.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.entryPointList('org123', 'page=0&pageSize=10');\n * @ignore\n */\n entryPointList: (orgId: string, queryParams: string) =>\n `/organization/${orgId}/v2/entry-point?${queryParams}`,\n /**\n * Gets the endpoint for address book entries with custom query parameters.\n * @param orgId - Organization ID.\n * @param addressBookId - Address book ID.\n * @param queryParams - Query parameters string.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.addressBookEntries('org123', 'book456', 'page=0&pageSize=10');\n * @ignore\n */\n addressBookEntries: (orgId: string, addressBookId: string, queryParams: string) =>\n `/organization/${orgId}/v2/address-book/${addressBookId}/entry?${queryParams}`,\n\n /**\n * Gets the endpoint for outdial ANI entries with custom query parameters.\n * @param orgId - Organization ID.\n * @param outdialANI - Outdial ANI ID.\n * @param queryParams - Query parameters string.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.outdialAniEntries('org123', 'ani456', 'page=0&pageSize=10');\n * @ignore\n */\n outdialAniEntries: (orgId: string, outdialANI: string, queryParams: string) =>\n `organization/${orgId}/v2/outdial-ani/${outdialANI}/entry${\n queryParams ? `?${queryParams}` : ''\n }`,\n\n /**\n * Gets the endpoint for user preference by user ID.\n * @param orgId - Organization ID.\n * @param userId - User ID.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.userPreference('org123', 'user456');\n * @ignore\n */\n userPreference: (orgId: string, userId: string) =>\n `organization/${orgId}/user-preference/${userId}`,\n\n /**\n * Gets the endpoint for creating user preference.\n * @param orgId - Organization ID.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.userPreferenceCreate('org123');\n * @ignore\n */\n userPreferenceCreate: (orgId: string) => `organization/${orgId}/user-preference`,\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["DEFAULT_PAGE","exports","COLLABORATION_ACCESS","ALL","SPECIFIC","NONE","DEFAULT_PAGE_SIZE","AGENT_STATE_AVAILABLE_ID","AGENT_STATE_AVAILABLE","AGENT_STATE_AVAILABLE_DESCRIPTION","DEFAULT_AUXCODE_ATTRIBUTES","METHODS","GET_AGENT_CONFIG","GET_USER_USING_CI","GET_DESKTOP_PROFILE_BY_ID","GET_MULTIMEDIA_PROFILE_BY_ID","GET_LIST_OF_TEAMS","GET_ALL_TEAMS","GET_LIST_OF_AUX_CODES","GET_ALL_AUX_CODES","GET_SITE_INFO","GET_ORG_INFO","GET_ORGANIZATION_SETTING","GET_TENANT_DATA","GET_URL_MAPPING","GET_DIAL_PLAN_DATA","GET_AI_FEATURE_FLAGS","GET_QUEUES","PARSE_AGENT_CONFIGS","GET_URL_MAPPING_UTIL","GET_MSFT_CONFIG","GET_WEBEX_CONFIG","GET_DEFAULT_AGENT_DN","GET_FILTERED_DIALPLAN_ENTRIES","GET_FILTER_AUX_CODES","GET_DEFAULT_WRAP_UP_CODE","endPointMap","userByCI","orgId","agentId","desktopProfile","desktopProfileId","multimediaProfile","multimediaProfileId","listTeams","page","pageSize","filter","length","listAuxCodes","attributes","orgInfo","orgSettings","siteInfo","siteId","tenantData","urlMapping","dialPlan","aiFeature","queueList","queryParams","entryPointDialNumberList","addressBookEntries","addressBookId","outdialAniEntries","outdialANI","userPreference","userId","userPreferenceCreate"],"sources":["constants.ts"],"sourcesContent":["// making query params configurable for List Teams and List Aux Codes API\nexport const DEFAULT_PAGE = 0;\n\n/** Desktop Profile access levels for collaboration destination categories. */\nexport const COLLABORATION_ACCESS = {\n ALL: 'ALL',\n SPECIFIC: 'SPECIFIC',\n NONE: 'NONE',\n} as const;\n\n/**\n * Default page size for paginated API requests.\n * @type {number}\n * @public\n * @example\n * const pageSize = DEFAULT_PAGE_SIZE; // 100\n * @ignore\n */\nexport const DEFAULT_PAGE_SIZE = 100;\n\n/**\n * Agent state ID for 'Available'.\n * @type {string}\n * @public\n * @ignore\n */\nexport const AGENT_STATE_AVAILABLE_ID = '0';\n\n/**\n * Agent state label for 'Available'.\n * @type {string}\n * @public\n * @ignore\n */\nexport const AGENT_STATE_AVAILABLE = 'Available';\n\n/**\n * Description for the 'Available' agent state.\n * @type {string}\n * @public\n * @ignore\n */\nexport const AGENT_STATE_AVAILABLE_DESCRIPTION = 'Agent is available to receive calls';\n\n/**\n * Default attributes for auxiliary code API requests.\n * @type {string[]}\n * @public\n * @ignore\n */\nexport const DEFAULT_AUXCODE_ATTRIBUTES = [\n 'id',\n 'isSystemCode',\n 'name',\n 'defaultCode',\n 'workTypeCode',\n 'active',\n];\n\n// Method names for config services\nexport const METHODS = {\n // AgentConfigService methods\n GET_AGENT_CONFIG: 'getAgentConfig',\n GET_USER_USING_CI: 'getUserUsingCI',\n GET_DESKTOP_PROFILE_BY_ID: 'getDesktopProfileById',\n GET_MULTIMEDIA_PROFILE_BY_ID: 'getMultimediaProfileById',\n GET_LIST_OF_TEAMS: 'getListOfTeams',\n GET_ALL_TEAMS: 'getAllTeams',\n GET_LIST_OF_AUX_CODES: 'getListOfAuxCodes',\n GET_ALL_AUX_CODES: 'getAllAuxCodes',\n GET_SITE_INFO: 'getSiteInfo',\n GET_ORG_INFO: 'getOrgInfo',\n GET_ORGANIZATION_SETTING: 'getOrganizationSetting',\n GET_TENANT_DATA: 'getTenantData',\n GET_URL_MAPPING: 'getURLMapping',\n GET_DIAL_PLAN_DATA: 'getDialPlanData',\n GET_AI_FEATURE_FLAGS: 'getAIFeatureFlags',\n GET_QUEUES: 'getQueues',\n\n // Util methods\n PARSE_AGENT_CONFIGS: 'parseAgentConfigs',\n GET_URL_MAPPING_UTIL: 'getUrlMapping',\n GET_MSFT_CONFIG: 'getMsftConfig',\n GET_WEBEX_CONFIG: 'getWebexConfig',\n GET_DEFAULT_AGENT_DN: 'getDefaultAgentDN',\n GET_FILTERED_DIALPLAN_ENTRIES: 'getFilteredDialplanEntries',\n GET_FILTER_AUX_CODES: 'getFilterAuxCodes',\n GET_DEFAULT_WRAP_UP_CODE: 'getDefaultWrapUpCode',\n};\n\n/**\n * Maps API endpoint names to functions that generate endpoint URLs for various organization resources.\n * @public\n * @example\n * const url = endPointMap.userByCI('org123', 'agent456');\n */\nexport const endPointMap = {\n /**\n * Gets the endpoint for a user by CI user ID.\n * @param orgId - Organization ID.\n * @param agentId - Agent ID.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.userByCI('org123', 'agent456');\n * @ignore\n */\n userByCI: (orgId: string, agentId: string) =>\n `organization/${orgId}/user/by-ci-user-id/${agentId}`,\n\n /**\n * Gets the endpoint for a desktop profile.\n * @param orgId - Organization ID.\n * @param desktopProfileId - Desktop profile ID.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.desktopProfile('org123', 'profile789');\n * @ignore\n */\n desktopProfile: (orgId: string, desktopProfileId: string) =>\n `organization/${orgId}/agent-profile/${desktopProfileId}`,\n\n /**\n * Gets the endpoint for a multimedia profile.\n * @param orgId - Organization ID.\n * @param multimediaProfileId - Multimedia profile ID.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.multimediaProfile('org123', 'multi456');\n * @ignore\n */\n multimediaProfile: (orgId: string, multimediaProfileId: string) =>\n `organization/${orgId}/multimedia-profile/${multimediaProfileId}`,\n\n /**\n * Gets the endpoint for listing teams with optional filters.\n * @param orgId - Organization ID.\n * @param page - Page number.\n * @param pageSize - Page size.\n * @param filter - Array of team IDs to filter.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.listTeams('org123', 0, 100, ['team1', 'team2']);\n * @ignore\n */\n listTeams: (orgId: string, page: number, pageSize: number, filter: string[]) =>\n `organization/${orgId}/v2/team?page=${page}&pageSize=${pageSize}${\n filter && filter.length > 0 ? `&filter=id=in=(${filter})` : ''\n }`,\n\n /**\n * Gets the endpoint for listing auxiliary codes with optional filters and attributes.\n * @param orgId - Organization ID.\n * @param page - Page number.\n * @param pageSize - Page size.\n * @param filter - Array of auxiliary code IDs to filter.\n * @param attributes - Array of attribute names to include.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.listAuxCodes('org123', 0, 100, ['aux1'], ['id', 'name']);\n * @ignore\n */\n listAuxCodes: (\n orgId: string,\n page: number,\n pageSize: number,\n filter: string[],\n attributes: string[]\n ) =>\n `organization/${orgId}/v2/auxiliary-code?page=${page}&pageSize=${pageSize}${\n filter && filter.length > 0 ? `&filter=id=in=(${filter})` : ''\n }&attributes=${attributes}&desktopProfileFilter=true`,\n\n /**\n * Gets the endpoint for organization info.\n * @param orgId - Organization ID.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.orgInfo('org123');\n * @ignore\n */\n orgInfo: (orgId: string) => `organization/${orgId}`,\n\n /**\n * Gets the endpoint for organization settings.\n * @param orgId - Organization ID.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.orgSettings('org123');\n * @ignore\n */\n orgSettings: (orgId: string) => `organization/${orgId}/v2/organization-setting?agentView=true`,\n\n /**\n * Gets the endpoint for site info.\n * @param orgId - Organization ID.\n * @param siteId - Site ID.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.siteInfo('org123', 'site456');\n * @ignore\n */\n siteInfo: (orgId: string, siteId: string) => `organization/${orgId}/site/${siteId}`,\n\n /**\n * Gets the endpoint for tenant configuration data.\n * @param orgId - Organization ID.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.tenantData('org123');\n * @ignore\n */\n tenantData: (orgId: string) => `organization/${orgId}/v2/tenant-configuration?agentView=true`,\n\n /**\n * Gets the endpoint for organization URL mapping.\n * @param orgId - Organization ID.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.urlMapping('org123');\n * @ignore\n */\n urlMapping: (orgId: string) => `organization/${orgId}/v2/org-url-mapping?sort=name,ASC`,\n\n /**\n * Gets the endpoint for dial plan.\n * @param orgId - Organization ID.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.dialPlan('org123');\n * @ignore\n */\n dialPlan: (orgId: string) => `organization/${orgId}/dial-plan?agentView=true`,\n /**\n * Gets the endpoint for listing AI feature flags.\n * @param orgId - Organization ID.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.aiFeatureFlags('org123');\n * @ignore\n */\n aiFeature: (orgId: string) => `organization/${orgId}/v2/ai-feature?page=0&pageSize=100`,\n\n /**\n * Gets the endpoint for the queue list with custom query parameters.\n * @param orgId - Organization ID.\n * @param queryParams - Query parameters string.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.queueList('org123', 'page=0&pageSize=10');\n * @ignore\n */\n queueList: (orgId: string, queryParams: string) =>\n `/organization/${orgId}/v2/contact-service-queue?${queryParams}`,\n /**\n * Gets the desktop-profile-filtered dial-number mappings used by entry-point destination lists.\n * @param orgId - Organization ID.\n * @param queryParams - Query parameters string.\n * @returns The endpoint URL string.\n * @ignore\n */\n entryPointDialNumberList: (orgId: string, queryParams: string) =>\n `/organization/${orgId}/v3/dial-number?${queryParams}`,\n /**\n * Gets the endpoint for address book entries with custom query parameters.\n * @param orgId - Organization ID.\n * @param addressBookId - Address book ID.\n * @param queryParams - Query parameters string.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.addressBookEntries('org123', 'book456', 'page=0&pageSize=10');\n * @ignore\n */\n addressBookEntries: (orgId: string, addressBookId: string, queryParams: string) =>\n `/organization/${orgId}/v2/address-book/${addressBookId}/entry?${queryParams}`,\n\n /**\n * Gets the endpoint for outdial ANI entries with custom query parameters.\n * @param orgId - Organization ID.\n * @param outdialANI - Outdial ANI ID.\n * @param queryParams - Query parameters string.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.outdialAniEntries('org123', 'ani456', 'page=0&pageSize=10');\n * @ignore\n */\n outdialAniEntries: (orgId: string, outdialANI: string, queryParams: string) =>\n `organization/${orgId}/v2/outdial-ani/${outdialANI}/entry${\n queryParams ? `?${queryParams}` : ''\n }`,\n\n /**\n * Gets the endpoint for user preference by user ID.\n * @param orgId - Organization ID.\n * @param userId - User ID.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.userPreference('org123', 'user456');\n * @ignore\n */\n userPreference: (orgId: string, userId: string) =>\n `organization/${orgId}/user-preference/${userId}`,\n\n /**\n * Gets the endpoint for creating user preference.\n * @param orgId - Organization ID.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.userPreferenceCreate('org123');\n * @ignore\n */\n userPreferenceCreate: (orgId: string) => `organization/${orgId}/user-preference`,\n};\n"],"mappings":"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","ignoreList":[]}