@webex/contact-center 3.11.0 → 3.12.0-auth-prejoin-fetch.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.sdd/manifest.json +883 -0
- package/AGENTS.md +94 -0
- package/ai-docs/ARCHITECTURE.md +168 -0
- package/ai-docs/CONTRACTS.md +50 -0
- package/ai-docs/GETTING_STARTED.md +168 -0
- package/ai-docs/GLOSSARY.md +43 -0
- package/ai-docs/README.md +138 -0
- package/ai-docs/REVIEW_CHECKLIST.md +41 -0
- package/ai-docs/RULES.md +444 -0
- package/ai-docs/SECURITY.md +52 -0
- package/ai-docs/SERVICE_STATE.md +48 -0
- package/ai-docs/SPEC_INDEX.md +65 -0
- package/ai-docs/adr/0001-spec-source-policy.md +55 -0
- package/ai-docs/adr/README.md +8 -0
- package/ai-docs/adr/_adr-template.md +31 -0
- package/ai-docs/contact-center-spec.md +359 -0
- package/ai-docs/features/consult-transfer-list-policy/spec/feature-spec.md +362 -0
- package/ai-docs/features/generated-spec-conformance-fidelity-remediation/spec/feature-spec.md +117 -0
- package/ai-docs/features/residual-warning-coverage-completion/spec/feature-spec.md +203 -0
- package/ai-docs/features/validator-code-fidelity-drift-fix/spec/feature-spec.md +315 -0
- package/ai-docs/patterns/event-driven-patterns.md +485 -0
- package/ai-docs/patterns/testing-patterns.md +480 -0
- package/ai-docs/patterns/typescript-patterns.md +365 -0
- package/ai-docs/templates/README.md +102 -0
- package/ai-docs/templates/documentation/create-agents-md.md +240 -0
- package/ai-docs/templates/documentation/create-architecture-md.md +295 -0
- package/ai-docs/templates/existing-service/bug-fix.md +254 -0
- package/ai-docs/templates/existing-service/feature-enhancement.md +450 -0
- package/ai-docs/templates/new-method/00-master.md +80 -0
- package/ai-docs/templates/new-method/01-requirements.md +232 -0
- package/ai-docs/templates/new-method/02-implementation.md +295 -0
- package/ai-docs/templates/new-method/03-tests.md +201 -0
- package/ai-docs/templates/new-method/04-validation.md +141 -0
- package/ai-docs/templates/new-service/00-master.md +109 -0
- package/ai-docs/templates/new-service/01-pre-questions.md +159 -0
- package/ai-docs/templates/new-service/02-code-generation.md +346 -0
- package/ai-docs/templates/new-service/03-integration.md +178 -0
- package/ai-docs/templates/new-service/04-test-generation.md +205 -0
- package/ai-docs/templates/new-service/05-validation.md +145 -0
- package/dist/cc.js +818 -59
- package/dist/cc.js.map +1 -1
- package/dist/config.js +13 -0
- package/dist/config.js.map +1 -1
- package/dist/constants.js +31 -3
- package/dist/constants.js.map +1 -1
- package/dist/index.js +27 -5
- package/dist/index.js.map +1 -1
- package/dist/metrics/behavioral-events.js +127 -0
- package/dist/metrics/behavioral-events.js.map +1 -1
- package/dist/metrics/constants.js +34 -3
- package/dist/metrics/constants.js.map +1 -1
- package/dist/services/AddressBook.js +18 -15
- package/dist/services/AddressBook.js.map +1 -1
- package/dist/services/AnswerCallOnWebexService.js +174 -0
- package/dist/services/AnswerCallOnWebexService.js.map +1 -0
- package/dist/services/ApiAiAssistant.js +318 -0
- package/dist/services/ApiAiAssistant.js.map +1 -0
- package/dist/services/EntryPoint.js +46 -68
- package/dist/services/EntryPoint.js.map +1 -1
- package/dist/services/Queue.js +27 -22
- package/dist/services/Queue.js.map +1 -1
- package/dist/services/UserPreference.js +427 -0
- package/dist/services/UserPreference.js.map +1 -0
- package/dist/services/WebexCrossClientService.js +171 -0
- package/dist/services/WebexCrossClientService.js.map +1 -0
- package/dist/services/WxAppTelephonyMercurySync.js +93 -0
- package/dist/services/WxAppTelephonyMercurySync.js.map +1 -0
- package/dist/services/agent/types.js.map +1 -1
- package/dist/services/config/Util.js +11 -4
- package/dist/services/config/Util.js.map +1 -1
- package/dist/services/config/constants.js +45 -8
- package/dist/services/config/constants.js.map +1 -1
- package/dist/services/config/index.js +41 -2
- package/dist/services/config/index.js.map +1 -1
- package/dist/services/config/types.js +70 -8
- package/dist/services/config/types.js.map +1 -1
- package/dist/services/constants.js +27 -1
- package/dist/services/constants.js.map +1 -1
- package/dist/services/core/Err.js.map +1 -1
- package/dist/services/core/Utils.js +122 -25
- package/dist/services/core/Utils.js.map +1 -1
- package/dist/services/core/WebexRequest.js +6 -2
- package/dist/services/core/WebexRequest.js.map +1 -1
- package/dist/services/core/aqm-reqs.js +119 -30
- package/dist/services/core/aqm-reqs.js.map +1 -1
- package/dist/services/core/types.js.map +1 -1
- package/dist/services/core/websocket/WebSocketManager.js +22 -6
- package/dist/services/core/websocket/WebSocketManager.js.map +1 -1
- package/dist/services/core/websocket/connection-service.js +3 -1
- package/dist/services/core/websocket/connection-service.js.map +1 -1
- package/dist/services/core/websocket/types.js.map +1 -1
- package/dist/services/index.js +6 -0
- package/dist/services/index.js.map +1 -1
- package/dist/services/task/Task.js +754 -0
- package/dist/services/task/Task.js.map +1 -0
- package/dist/services/task/TaskFactory.js +49 -0
- package/dist/services/task/TaskFactory.js.map +1 -0
- package/dist/services/task/TaskManager.js +1073 -447
- package/dist/services/task/TaskManager.js.map +1 -1
- package/dist/services/task/TaskUtils.js +220 -23
- package/dist/services/task/TaskUtils.js.map +1 -1
- package/dist/services/task/WebexCallingUtils.js +70 -0
- package/dist/services/task/WebexCallingUtils.js.map +1 -0
- package/dist/services/task/constants.js +26 -2
- package/dist/services/task/constants.js.map +1 -1
- package/dist/services/task/contact.js +29 -0
- package/dist/services/task/contact.js.map +1 -1
- package/dist/services/task/dialer.js +129 -0
- package/dist/services/task/dialer.js.map +1 -1
- package/dist/services/task/digital/Digital.js +78 -0
- package/dist/services/task/digital/Digital.js.map +1 -0
- package/dist/services/task/state-machine/TaskStateMachine.js +971 -0
- package/dist/services/task/state-machine/TaskStateMachine.js.map +1 -0
- package/dist/services/task/state-machine/actions.js +572 -0
- package/dist/services/task/state-machine/actions.js.map +1 -0
- package/dist/services/task/state-machine/constants.js +161 -0
- package/dist/services/task/state-machine/constants.js.map +1 -0
- package/dist/services/task/state-machine/guards.js +409 -0
- package/dist/services/task/state-machine/guards.js.map +1 -0
- package/dist/services/task/state-machine/index.js +53 -0
- package/dist/services/task/state-machine/index.js.map +1 -0
- package/dist/services/task/state-machine/types.js +54 -0
- package/dist/services/task/state-machine/types.js.map +1 -0
- package/dist/services/task/state-machine/uiControlsComputer.js +703 -0
- package/dist/services/task/state-machine/uiControlsComputer.js.map +1 -0
- package/dist/services/task/taskDataNormalizer.js +99 -0
- package/dist/services/task/taskDataNormalizer.js.map +1 -0
- package/dist/services/task/types.js +243 -5
- package/dist/services/task/types.js.map +1 -1
- package/dist/services/task/voice/Voice.js +1380 -0
- package/dist/services/task/voice/Voice.js.map +1 -0
- package/dist/services/task/voice/WebRTC.js +152 -0
- package/dist/services/task/voice/WebRTC.js.map +1 -0
- package/dist/services/task/voice/wxAppVoiceMethods.js +201 -0
- package/dist/services/task/voice/wxAppVoiceMethods.js.map +1 -0
- package/dist/services/wxAppTelephonyUtils.js +19 -0
- package/dist/services/wxAppTelephonyUtils.js.map +1 -0
- package/dist/types/cc.d.ts +967 -0
- package/dist/types/config.d.ts +79 -0
- package/dist/types/constants.d.ts +74 -0
- package/dist/types/index.d.ts +201 -0
- package/dist/types/logger-proxy.d.ts +71 -0
- package/dist/types/metrics/MetricsManager.d.ts +223 -0
- package/dist/types/metrics/behavioral-events.d.ts +29 -0
- package/dist/types/metrics/constants.d.ts +183 -0
- package/dist/types/services/AddressBook.d.ts +75 -0
- package/dist/types/services/AnswerCallOnWebexService.d.ts +37 -0
- package/dist/types/services/ApiAiAssistant.d.ts +49 -0
- package/dist/types/services/EntryPoint.d.ts +69 -0
- package/dist/types/services/Queue.d.ts +78 -0
- package/dist/types/services/UserPreference.d.ts +118 -0
- package/dist/types/services/WebCallingService.d.ts +1 -0
- package/dist/types/services/WebexCrossClientService.d.ts +28 -0
- package/dist/types/services/WxAppTelephonyMercurySync.d.ts +28 -0
- package/dist/types/services/agent/index.d.ts +46 -0
- package/dist/types/services/agent/types.d.ts +413 -0
- package/dist/types/services/config/Util.d.ts +20 -0
- package/dist/types/services/config/constants.d.ts +273 -0
- package/dist/types/services/config/index.d.ts +177 -0
- package/dist/types/services/config/types.d.ts +1381 -0
- package/dist/types/services/constants.d.ts +110 -0
- package/dist/types/services/core/Err.d.ts +127 -0
- package/dist/types/services/core/GlobalTypes.d.ts +58 -0
- package/dist/types/services/core/Utils.d.ts +121 -0
- package/dist/types/services/core/WebexRequest.d.ts +23 -0
- package/dist/types/services/core/aqm-reqs.d.ts +65 -0
- package/dist/types/services/core/constants.d.ts +99 -0
- package/dist/types/services/core/types.d.ts +49 -0
- package/dist/types/services/core/websocket/WebSocketManager.d.ts +36 -0
- package/dist/types/services/core/websocket/connection-service.d.ts +27 -0
- package/dist/types/services/core/websocket/keepalive.worker.d.ts +2 -0
- package/dist/types/services/core/websocket/types.d.ts +37 -0
- package/dist/types/services/index.d.ts +54 -0
- package/dist/types/services/task/AutoWrapup.d.ts +40 -0
- package/dist/types/services/task/Task.d.ts +175 -0
- package/dist/types/services/task/TaskFactory.d.ts +13 -0
- package/dist/types/services/task/TaskManager.d.ts +1 -0
- package/dist/types/services/task/TaskUtils.d.ts +138 -0
- package/dist/types/services/task/WebexCallingUtils.d.ts +11 -0
- package/dist/types/services/task/constants.d.ts +94 -0
- package/dist/types/services/task/contact.d.ts +73 -0
- package/dist/types/services/task/dialer.d.ts +73 -0
- package/dist/types/services/task/digital/Digital.d.ts +22 -0
- package/dist/types/services/task/state-machine/TaskStateMachine.d.ts +1398 -0
- package/dist/types/services/task/state-machine/actions.d.ts +10 -0
- package/dist/types/services/task/state-machine/constants.d.ts +107 -0
- package/dist/types/services/task/state-machine/guards.d.ts +103 -0
- package/dist/types/services/task/state-machine/index.d.ts +13 -0
- package/dist/types/services/task/state-machine/types.d.ts +277 -0
- package/dist/types/services/task/state-machine/uiControlsComputer.d.ts +9 -0
- package/dist/types/services/task/taskDataNormalizer.d.ts +10 -0
- package/dist/types/services/task/types.d.ts +1933 -0
- package/dist/types/services/task/voice/Voice.d.ts +223 -0
- package/dist/types/services/task/voice/WebRTC.d.ts +53 -0
- package/dist/types/services/task/voice/wxAppVoiceMethods.d.ts +52 -0
- package/dist/types/services/wxAppTelephonyUtils.d.ts +5 -0
- package/dist/types/types.d.ts +784 -0
- package/dist/types/utils/PageCache.d.ts +190 -0
- package/dist/types/webex-config.d.ts +53 -0
- package/dist/types/webex.d.ts +8 -0
- package/dist/types.js +137 -3
- package/dist/types.js.map +1 -1
- package/dist/utils/PageCache.js +19 -5
- package/dist/utils/PageCache.js.map +1 -1
- package/dist/webex.js +14 -2
- package/dist/webex.js.map +1 -1
- package/package.json +16 -12
- package/src/cc.ts +983 -60
- package/src/config.ts +13 -0
- package/src/constants.ts +29 -1
- package/src/index.ts +26 -5
- package/src/metrics/ai-docs/AGENTS.md +350 -0
- package/src/metrics/ai-docs/ARCHITECTURE.md +338 -0
- package/src/metrics/ai-docs/metrics-spec.md +860 -0
- package/src/metrics/behavioral-events.ts +134 -0
- package/src/metrics/constants.ts +39 -3
- package/src/services/AddressBook.ts +17 -6
- package/src/services/AnswerCallOnWebexService.ts +206 -0
- package/src/services/ApiAiAssistant.ts +412 -0
- package/src/services/EntryPoint.ts +59 -60
- package/src/services/Queue.ts +29 -12
- package/src/services/UserPreference.ts +509 -0
- package/src/services/WebexCrossClientService.ts +212 -0
- package/src/services/WxAppTelephonyMercurySync.ts +115 -0
- package/src/services/agent/ai-docs/AGENTS.md +240 -0
- package/src/services/agent/ai-docs/ARCHITECTURE.md +304 -0
- package/src/services/agent/ai-docs/agent-spec.md +504 -0
- package/src/services/agent/types.ts +1 -1
- package/src/services/ai-docs/AGENTS.md +386 -0
- package/src/services/ai-docs/services-spec.md +497 -0
- package/src/services/config/Util.ts +13 -2
- package/src/services/config/ai-docs/AGENTS.md +255 -0
- package/src/services/config/ai-docs/ARCHITECTURE.md +426 -0
- package/src/services/config/ai-docs/config-spec.md +675 -0
- package/src/services/config/constants.ts +47 -7
- package/src/services/config/index.ts +45 -1
- package/src/services/config/types.ts +253 -11
- package/src/services/constants.ts +29 -0
- package/src/services/core/Err.ts +4 -0
- package/src/services/core/Utils.ts +143 -30
- package/src/services/core/WebexRequest.ts +3 -1
- package/src/services/core/ai-docs/AGENTS.md +381 -0
- package/src/services/core/ai-docs/ARCHITECTURE.md +698 -0
- package/src/services/core/ai-docs/core-spec.md +787 -0
- package/src/services/core/aqm-reqs.ts +125 -32
- package/src/services/core/types.ts +2 -0
- package/src/services/core/websocket/WebSocketManager.ts +23 -6
- package/src/services/core/websocket/connection-service.ts +5 -1
- package/src/services/core/websocket/types.ts +1 -1
- package/src/services/index.ts +4 -0
- package/src/services/task/Task.ts +908 -0
- package/src/services/task/TaskFactory.ts +60 -0
- package/src/services/task/TaskManager.ts +1291 -513
- package/src/services/task/TaskUtils.ts +314 -24
- package/src/services/task/WebexCallingUtils.ts +136 -0
- package/src/services/task/ai-docs/AGENTS.md +457 -0
- package/src/services/task/ai-docs/ARCHITECTURE.md +595 -0
- package/src/services/task/ai-docs/task-spec.md +1469 -0
- package/src/services/task/constants.ts +26 -0
- package/src/services/task/contact.ts +30 -0
- package/src/services/task/dialer.ts +136 -1
- package/src/services/task/digital/Digital.ts +97 -0
- package/src/services/task/state-machine/TaskStateMachine.ts +1313 -0
- package/src/services/task/state-machine/actions.ts +741 -0
- package/src/services/task/state-machine/ai-docs/AGENTS.md +462 -0
- package/src/services/task/state-machine/ai-docs/ARCHITECTURE.md +1146 -0
- package/src/services/task/state-machine/ai-docs/task-state-machine-spec.md +2209 -0
- package/src/services/task/state-machine/constants.ts +172 -0
- package/src/services/task/state-machine/guards.ts +498 -0
- package/src/services/task/state-machine/index.ts +28 -0
- package/src/services/task/state-machine/types.ts +258 -0
- package/src/services/task/state-machine/uiControlsComputer.ts +1135 -0
- package/src/services/task/taskDataNormalizer.ts +137 -0
- package/src/services/task/types.ts +843 -70
- package/src/services/task/voice/Voice.ts +1720 -0
- package/src/services/task/voice/WebRTC.ts +191 -0
- package/src/services/task/voice/wxAppVoiceMethods.ts +307 -0
- package/src/services/wxAppTelephonyUtils.ts +14 -0
- package/src/types.ts +238 -11
- package/src/utils/AGENTS.md +289 -0
- package/src/utils/PageCache.ts +38 -5
- package/src/utils/ai-docs/utils-spec.md +391 -0
- package/src/webex.js +2 -0
- package/test/unit/spec/cc.ts +1856 -122
- package/test/unit/spec/logger-proxy.ts +70 -0
- package/test/unit/spec/metrics/behavioral-events.ts +18 -0
- package/test/unit/spec/services/AddressBook.ts +37 -6
- package/test/unit/spec/services/AnswerCallOnWebexService.ts +223 -0
- package/test/unit/spec/services/ApiAiAssistant.ts +273 -0
- package/test/unit/spec/services/EntryPoint.ts +87 -40
- package/test/unit/spec/services/Queue.ts +123 -12
- package/test/unit/spec/services/UserPreference.ts +401 -0
- package/test/unit/spec/services/WebCallingService.ts +7 -1
- package/test/unit/spec/services/WebexCrossClientService.ts +261 -0
- package/test/unit/spec/services/WxAppTelephonyMercurySync.ts +113 -0
- package/test/unit/spec/services/config/Util.ts +85 -0
- package/test/unit/spec/services/config/index.ts +85 -29
- package/test/unit/spec/services/core/Utils.ts +481 -2
- package/test/unit/spec/services/core/WebexRequest.ts +3 -1
- package/test/unit/spec/services/core/aqm-reqs.ts +113 -1
- package/test/unit/spec/services/core/websocket/WebSocketManager.ts +137 -41
- package/test/unit/spec/services/core/websocket/connection-service.ts +3 -1
- package/test/unit/spec/services/task/AutoWrapup.ts +63 -0
- package/test/unit/spec/services/task/Task.ts +677 -0
- package/test/unit/spec/services/task/TaskFactory.ts +99 -0
- package/test/unit/spec/services/task/TaskManager.ts +2209 -918
- package/test/unit/spec/services/task/TaskUtils.ts +235 -0
- package/test/unit/spec/services/task/WebexCallingUtils.ts +153 -0
- package/test/unit/spec/services/task/contact.ts +33 -0
- package/test/unit/spec/services/task/dialer.ts +372 -96
- package/test/unit/spec/services/task/digital/Digital.ts +105 -0
- package/test/unit/spec/services/task/state-machine/TaskStateMachine.ts +3433 -0
- package/test/unit/spec/services/task/state-machine/guards.ts +839 -0
- package/test/unit/spec/services/task/state-machine/types.ts +18 -0
- package/test/unit/spec/services/task/state-machine/uiControlsComputer.ts +3101 -0
- package/test/unit/spec/services/task/taskTestUtils.ts +87 -0
- package/test/unit/spec/services/task/voice/Voice.ts +1523 -0
- package/test/unit/spec/services/task/voice/WebRTC.ts +235 -0
- package/test/unit/spec/services/task/voice/wxAppVoiceMethods.ts +459 -0
- package/umd/contact-center.min.js +2 -2
- package/umd/contact-center.min.js.map +1 -1
- package/dist/services/task/index.js +0 -1525
- package/dist/services/task/index.js.map +0 -1
- package/src/services/task/index.ts +0 -1801
- package/test/unit/spec/services/task/index.ts +0 -2184
package/dist/services/Queue.js
CHANGED
|
@@ -71,14 +71,16 @@ class Queue {
|
|
|
71
71
|
}
|
|
72
72
|
|
|
73
73
|
/**
|
|
74
|
-
* Fetches contact service queues for the organization
|
|
75
|
-
*
|
|
74
|
+
* Fetches contact service queues for the organization. By default, returns active inbound
|
|
75
|
+
* telephony queues in backend name-ascending order using the agent's desktop profile views.
|
|
76
|
+
* Existing filter, sort, and desktop-profile parameters override those defaults.
|
|
77
|
+
* @param {ContactServiceQueueSearchParams} [params] - Search, pagination, and override parameters
|
|
76
78
|
* @returns {Promise<ContactServiceQueuesResponse>} Promise resolving to contact service queues
|
|
77
79
|
* @throws {Error} If the API call fails
|
|
78
80
|
* @public
|
|
79
81
|
* @example
|
|
80
82
|
* ```typescript
|
|
81
|
-
* // Get
|
|
83
|
+
* // Get queues using the default list policy and pagination
|
|
82
84
|
* const response = await queueAPI.getQueues();
|
|
83
85
|
*
|
|
84
86
|
* // Get queues with specific pagination
|
|
@@ -100,16 +102,28 @@ class Queue {
|
|
|
100
102
|
page = _PageCache.PAGINATION_DEFAULTS.PAGE,
|
|
101
103
|
pageSize = _PageCache.PAGINATION_DEFAULTS.PAGE_SIZE,
|
|
102
104
|
search,
|
|
103
|
-
filter,
|
|
105
|
+
filter = 'queueType==INBOUND;channelType==TELEPHONY;active==true',
|
|
104
106
|
attributes,
|
|
105
|
-
sortBy,
|
|
106
|
-
sortOrder,
|
|
107
|
-
desktopProfileFilter,
|
|
107
|
+
sortBy = 'name',
|
|
108
|
+
sortOrder = 'asc',
|
|
109
|
+
desktopProfileFilter = true,
|
|
108
110
|
provisioningView,
|
|
109
111
|
singleObjectResponse
|
|
110
112
|
} = params;
|
|
113
|
+
const agentView = desktopProfileFilter;
|
|
114
|
+
const firstLevelView = desktopProfileFilter;
|
|
111
115
|
const orgId = this.webex.credentials.getOrgId();
|
|
112
|
-
const
|
|
116
|
+
const effectiveSortBy = sortBy ?? (sortOrder ? 'name' : undefined);
|
|
117
|
+
const isSearchRequest = !!(search || filter || attributes || effectiveSortBy);
|
|
118
|
+
const canUseCache = this.pageCache.canUseCache({
|
|
119
|
+
search,
|
|
120
|
+
filter,
|
|
121
|
+
attributes,
|
|
122
|
+
sortBy: effectiveSortBy,
|
|
123
|
+
desktopProfileFilter,
|
|
124
|
+
provisioningView,
|
|
125
|
+
singleObjectResponse
|
|
126
|
+
});
|
|
113
127
|
_loggerProxy.default.info('Fetching contact service queues', {
|
|
114
128
|
module: 'Queue',
|
|
115
129
|
method: _constants4.METHODS.GET_QUEUES,
|
|
@@ -122,12 +136,7 @@ class Queue {
|
|
|
122
136
|
});
|
|
123
137
|
|
|
124
138
|
// Check if we can use cache for simple pagination (no search/filter/attributes/sort)
|
|
125
|
-
if (
|
|
126
|
-
search,
|
|
127
|
-
filter,
|
|
128
|
-
attributes,
|
|
129
|
-
sortBy
|
|
130
|
-
})) {
|
|
139
|
+
if (canUseCache) {
|
|
131
140
|
const cacheKey = this.pageCache.buildCacheKey(orgId, page, pageSize);
|
|
132
141
|
const cachedPage = this.pageCache.getCachedPage(cacheKey);
|
|
133
142
|
if (cachedPage) {
|
|
@@ -167,11 +176,12 @@ class Queue {
|
|
|
167
176
|
if (filter) queryParams.append('filter', filter);
|
|
168
177
|
if (attributes) queryParams.append('attributes', attributes);
|
|
169
178
|
if (search) queryParams.append('search', search);
|
|
170
|
-
if (
|
|
171
|
-
if (sortOrder) queryParams.append('sortOrder', sortOrder);
|
|
179
|
+
if (effectiveSortBy) queryParams.append('sort', `${effectiveSortBy},${(sortOrder ?? 'asc').toUpperCase()}`);
|
|
172
180
|
if (desktopProfileFilter !== undefined) queryParams.append('desktopProfileFilter', desktopProfileFilter.toString());
|
|
173
181
|
if (provisioningView !== undefined) queryParams.append('provisioningView', provisioningView.toString());
|
|
174
182
|
if (singleObjectResponse !== undefined) queryParams.append('singleObjectResponse', singleObjectResponse.toString());
|
|
183
|
+
if (agentView !== undefined) queryParams.append('agentView', agentView.toString());
|
|
184
|
+
if (firstLevelView !== undefined) queryParams.append('firstLevelView', firstLevelView.toString());
|
|
175
185
|
const resource = _constants2.endPointMap.queueList(orgId, queryParams.toString());
|
|
176
186
|
_loggerProxy.default.log('Making API request to fetch contact service queues', {
|
|
177
187
|
module: 'Queue',
|
|
@@ -216,12 +226,7 @@ class Queue {
|
|
|
216
226
|
}
|
|
217
227
|
|
|
218
228
|
// Cache the page data for simple pagination (no search/filter/attributes/sort)
|
|
219
|
-
if (
|
|
220
|
-
search,
|
|
221
|
-
filter,
|
|
222
|
-
attributes,
|
|
223
|
-
sortBy
|
|
224
|
-
}) && response.body?.data) {
|
|
229
|
+
if (canUseCache && response.body?.data) {
|
|
225
230
|
const cacheKey = this.pageCache.buildCacheKey(orgId, page, pageSize);
|
|
226
231
|
this.pageCache.cachePage(cacheKey, response.body.data, response.body.meta);
|
|
227
232
|
_loggerProxy.default.log('Cached contact service queues for future requests', {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_types","require","_loggerProxy","_interopRequireDefault","_WebexRequest","_PageCache","_interopRequireWildcard","_MetricsManager","_constants","_constants2","_constants3","_constants4","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","Queue","constructor","webex","webexRequest","WebexRequest","getInstance","pageCache","PageCache","metricsManager","MetricsManager","getQueues","params","startTime","Date","now","page","PAGINATION_DEFAULTS","PAGE","pageSize","PAGE_SIZE","search","filter","attributes","sortBy","sortOrder","desktopProfileFilter","provisioningView","singleObjectResponse","orgId","credentials","getOrgId","isSearchRequest","LoggerProxy","info","module","method","METHODS","GET_QUEUES","data","canUseCache","cacheKey","buildCacheKey","cachedPage","getCachedPage","duration","log","cacheHit","recordCount","length","meta","totalPages","totalMeta","totalRecords","orgid","timeEvent","METRIC_EVENT_NAMES","QUEUE_FETCH_SUCCESS","queryParams","URLSearchParams","toString","append","undefined","resource","endPointMap","queueList","service","WCC_API_GATEWAY","response","request","HTTP_METHODS","GET","body","statusCode","trackEvent","isFirstPage","cachePage","error","errorData","Error","message","String","QUEUE_FETCH_FAILED","exports","_default"],"sources":["Queue.ts"],"sourcesContent":["import {HTTP_METHODS, WebexSDK} from '../types';\nimport type {\n ContactServiceQueue,\n ContactServiceQueuesResponse,\n ContactServiceQueueSearchParams,\n} from '../types';\nimport LoggerProxy from '../logger-proxy';\nimport WebexRequest from './core/WebexRequest';\nimport PageCache, {PAGINATION_DEFAULTS} from '../utils/PageCache';\nimport MetricsManager from '../metrics/MetricsManager';\nimport {WCC_API_GATEWAY} from './constants';\nimport {endPointMap} from './config/constants';\nimport {METRIC_EVENT_NAMES} from '../metrics/constants';\nimport {METHODS} from '../constants';\n\n/**\n * Queue API class for managing Webex Contact Center contact service queues.\n * Provides functionality to fetch contact service queues using the queue API.\n *\n * @class Queue\n * @public\n * @example\n * ```typescript\n * import Webex from 'webex';\n *\n * const webex = new Webex({ credentials: 'YOUR_ACCESS_TOKEN' });\n * const cc = webex.cc;\n *\n * // Register and login first\n * await cc.register();\n * await cc.stationLogin({ teamId: 'team123', loginOption: 'BROWSER' });\n *\n * // Get Queue API instance from ContactCenter\n * const queueAPI = cc.queue;\n *\n * // Get all queues\n * const queues = await queueAPI.getQueues();\n *\n * // Get queues with pagination\n * const queues = await queueAPI.getQueues({\n * page: 0,\n * pageSize: 50\n * });\n *\n * // Search for specific queues\n * const searchResults = await queueAPI.getQueues({\n * search: 'support',\n * filter: 'name==\"Support Queue\"'\n * });\n * ```\n */\nexport class Queue {\n private webexRequest: WebexRequest;\n private webex: WebexSDK;\n private metricsManager: MetricsManager;\n\n // Page cache using the common utility\n private pageCache: PageCache<ContactServiceQueue>;\n\n /**\n * Creates an instance of Queue\n * @param {WebexSDK} webex - The Webex SDK instance\n * @public\n */\n constructor(webex: WebexSDK) {\n this.webex = webex;\n this.webexRequest = WebexRequest.getInstance({webex});\n this.pageCache = new PageCache<ContactServiceQueue>('Queue');\n this.metricsManager = MetricsManager.getInstance({webex});\n }\n\n /**\n * Fetches contact service queues for the organization\n * @param {ContactServiceQueueSearchParams} [params] - Search and pagination parameters\n * @returns {Promise<ContactServiceQueuesResponse>} Promise resolving to contact service queues\n * @throws {Error} If the API call fails\n * @public\n * @example\n * ```typescript\n * // Get all queues with default pagination\n * const response = await queueAPI.getQueues();\n *\n * // Get queues with specific pagination\n * const response = await queueAPI.getQueues({\n * page: 0,\n * pageSize: 25\n * });\n *\n * // Search for queues\n * const response = await queueAPI.getQueues({\n * search: 'support',\n * filter: 'queueType==\"INBOUND\"'\n * });\n * ```\n */\n public async getQueues(\n params: ContactServiceQueueSearchParams = {}\n ): Promise<ContactServiceQueuesResponse> {\n const startTime = Date.now();\n const {\n page = PAGINATION_DEFAULTS.PAGE,\n pageSize = PAGINATION_DEFAULTS.PAGE_SIZE,\n search,\n filter,\n attributes,\n sortBy,\n sortOrder,\n desktopProfileFilter,\n provisioningView,\n singleObjectResponse,\n } = params;\n\n const orgId = this.webex.credentials.getOrgId();\n const isSearchRequest = !!(search || filter || attributes || sortBy);\n\n LoggerProxy.info('Fetching contact service queues', {\n module: 'Queue',\n method: METHODS.GET_QUEUES,\n data: {\n orgId,\n page,\n pageSize,\n isSearchRequest,\n },\n });\n\n // Check if we can use cache for simple pagination (no search/filter/attributes/sort)\n if (this.pageCache.canUseCache({search, filter, attributes, sortBy})) {\n const cacheKey = this.pageCache.buildCacheKey(orgId, page, pageSize);\n const cachedPage = this.pageCache.getCachedPage(cacheKey);\n\n if (cachedPage) {\n const duration = Date.now() - startTime;\n\n LoggerProxy.log(`Returning page ${page} from cache`, {\n module: 'Queue',\n method: 'getQueues',\n data: {\n cacheHit: true,\n duration,\n recordCount: cachedPage.data.length,\n page,\n pageSize,\n },\n });\n\n return {\n data: cachedPage.data,\n meta: {\n page,\n pageSize,\n totalPages: cachedPage.totalMeta?.totalPages,\n totalRecords: cachedPage.totalMeta?.totalRecords,\n orgid: orgId,\n },\n };\n }\n }\n\n // Start timing only for actual API calls (not cache hits)\n this.metricsManager.timeEvent(METRIC_EVENT_NAMES.QUEUE_FETCH_SUCCESS);\n\n try {\n // Build query parameters according to spec\n const queryParams = new URLSearchParams({\n page: page.toString(),\n pageSize: pageSize.toString(),\n });\n\n if (filter) queryParams.append('filter', filter);\n if (attributes) queryParams.append('attributes', attributes);\n if (search) queryParams.append('search', search);\n if (sortBy) queryParams.append('sortBy', sortBy);\n if (sortOrder) queryParams.append('sortOrder', sortOrder);\n if (desktopProfileFilter !== undefined)\n queryParams.append('desktopProfileFilter', desktopProfileFilter.toString());\n if (provisioningView !== undefined)\n queryParams.append('provisioningView', provisioningView.toString());\n if (singleObjectResponse !== undefined)\n queryParams.append('singleObjectResponse', singleObjectResponse.toString());\n\n const resource = endPointMap.queueList(orgId, queryParams.toString());\n\n LoggerProxy.log('Making API request to fetch contact service queues', {\n module: 'Queue',\n method: METHODS.GET_QUEUES,\n data: {\n resource,\n service: WCC_API_GATEWAY,\n },\n });\n\n const response = await this.webexRequest.request({\n service: WCC_API_GATEWAY,\n resource,\n method: HTTP_METHODS.GET,\n });\n\n const duration = Date.now() - startTime;\n\n const recordCount = response.body?.data?.length || 0;\n const totalRecords = response.body?.meta?.totalRecords;\n\n LoggerProxy.log(`Successfully retrieved ${recordCount} contact service queues`, {\n module: 'Queue',\n method: METHODS.GET_QUEUES,\n data: {\n statusCode: response.statusCode,\n duration,\n recordCount,\n totalRecords,\n isSearchRequest,\n page,\n pageSize,\n },\n });\n\n // Only track metrics for search requests or first page loads to reduce metric volume\n if (isSearchRequest || page === 0) {\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.QUEUE_FETCH_SUCCESS,\n {\n orgId,\n statusCode: response.statusCode,\n recordCount,\n totalRecords,\n isSearchRequest,\n isFirstPage: page === 0,\n },\n ['behavioral', 'operational']\n );\n }\n\n // Cache the page data for simple pagination (no search/filter/attributes/sort)\n if (this.pageCache.canUseCache({search, filter, attributes, sortBy}) && response.body?.data) {\n const cacheKey = this.pageCache.buildCacheKey(orgId, page, pageSize);\n this.pageCache.cachePage(cacheKey, response.body.data, response.body.meta);\n\n LoggerProxy.log('Cached contact service queues for future requests', {\n module: 'Queue',\n method: METHODS.GET_QUEUES,\n data: {\n cacheKey,\n recordCount,\n },\n });\n }\n\n return response.body;\n } catch (error) {\n const errorData = {\n orgId,\n error: error instanceof Error ? error.message : String(error),\n isSearchRequest,\n page,\n pageSize,\n };\n\n LoggerProxy.error('Failed to fetch contact service queues', {\n module: 'Queue',\n method: METHODS.GET_QUEUES,\n data: errorData,\n error,\n });\n\n // Track all failures for troubleshooting\n this.metricsManager.trackEvent(METRIC_EVENT_NAMES.QUEUE_FETCH_FAILED, errorData, [\n 'behavioral',\n 'operational',\n ]);\n\n throw error;\n }\n }\n}\n\nexport default Queue;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_types","require","_loggerProxy","_interopRequireDefault","_WebexRequest","_PageCache","_interopRequireWildcard","_MetricsManager","_constants","_constants2","_constants3","_constants4","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","Queue","constructor","webex","webexRequest","WebexRequest","getInstance","pageCache","PageCache","metricsManager","MetricsManager","getQueues","params","startTime","Date","now","page","PAGINATION_DEFAULTS","PAGE","pageSize","PAGE_SIZE","search","filter","attributes","sortBy","sortOrder","desktopProfileFilter","provisioningView","singleObjectResponse","agentView","firstLevelView","orgId","credentials","getOrgId","effectiveSortBy","undefined","isSearchRequest","canUseCache","LoggerProxy","info","module","method","METHODS","GET_QUEUES","data","cacheKey","buildCacheKey","cachedPage","getCachedPage","duration","log","cacheHit","recordCount","length","meta","totalPages","totalMeta","totalRecords","orgid","timeEvent","METRIC_EVENT_NAMES","QUEUE_FETCH_SUCCESS","queryParams","URLSearchParams","toString","append","toUpperCase","resource","endPointMap","queueList","service","WCC_API_GATEWAY","response","request","HTTP_METHODS","GET","body","statusCode","trackEvent","isFirstPage","cachePage","error","errorData","Error","message","String","QUEUE_FETCH_FAILED","exports","_default"],"sources":["Queue.ts"],"sourcesContent":["import {HTTP_METHODS, WebexSDK} from '../types';\nimport type {\n ContactServiceQueue,\n ContactServiceQueuesResponse,\n ContactServiceQueueSearchParams,\n} from '../types';\nimport LoggerProxy from '../logger-proxy';\nimport WebexRequest from './core/WebexRequest';\nimport PageCache, {PAGINATION_DEFAULTS} from '../utils/PageCache';\nimport MetricsManager from '../metrics/MetricsManager';\nimport {WCC_API_GATEWAY} from './constants';\nimport {endPointMap} from './config/constants';\nimport {METRIC_EVENT_NAMES} from '../metrics/constants';\nimport {METHODS} from '../constants';\n\n/**\n * Queue API class for managing Webex Contact Center contact service queues.\n * Provides functionality to fetch contact service queues using the queue API.\n *\n * @class Queue\n * @public\n * @example\n * ```typescript\n * import Webex from 'webex';\n *\n * const webex = new Webex({ credentials: 'YOUR_ACCESS_TOKEN' });\n * const cc = webex.cc;\n *\n * // Register and login first\n * await cc.register();\n * await cc.stationLogin({ teamId: 'team123', loginOption: 'BROWSER' });\n *\n * // Get Queue API instance from ContactCenter\n * const queueAPI = cc.queue;\n *\n * // Get all queues\n * const queues = await queueAPI.getQueues();\n *\n * // Get queues with pagination\n * const queues = await queueAPI.getQueues({\n * page: 0,\n * pageSize: 50\n * });\n *\n * // Search for specific queues\n * const searchResults = await queueAPI.getQueues({\n * search: 'support',\n * filter: 'name==\"Support Queue\"'\n * });\n * ```\n */\nexport class Queue {\n private webexRequest: WebexRequest;\n private webex: WebexSDK;\n private metricsManager: MetricsManager;\n\n // Page cache using the common utility\n private pageCache: PageCache<ContactServiceQueue>;\n\n /**\n * Creates an instance of Queue\n * @param {WebexSDK} webex - The Webex SDK instance\n * @public\n */\n constructor(webex: WebexSDK) {\n this.webex = webex;\n this.webexRequest = WebexRequest.getInstance({webex});\n this.pageCache = new PageCache<ContactServiceQueue>('Queue');\n this.metricsManager = MetricsManager.getInstance({webex});\n }\n\n /**\n * Fetches contact service queues for the organization. By default, returns active inbound\n * telephony queues in backend name-ascending order using the agent's desktop profile views.\n * Existing filter, sort, and desktop-profile parameters override those defaults.\n * @param {ContactServiceQueueSearchParams} [params] - Search, pagination, and override parameters\n * @returns {Promise<ContactServiceQueuesResponse>} Promise resolving to contact service queues\n * @throws {Error} If the API call fails\n * @public\n * @example\n * ```typescript\n * // Get queues using the default list policy and pagination\n * const response = await queueAPI.getQueues();\n *\n * // Get queues with specific pagination\n * const response = await queueAPI.getQueues({\n * page: 0,\n * pageSize: 25\n * });\n *\n * // Search for queues\n * const response = await queueAPI.getQueues({\n * search: 'support',\n * filter: 'queueType==\"INBOUND\"'\n * });\n * ```\n */\n public async getQueues(\n params: ContactServiceQueueSearchParams = {}\n ): Promise<ContactServiceQueuesResponse> {\n const startTime = Date.now();\n const {\n page = PAGINATION_DEFAULTS.PAGE,\n pageSize = PAGINATION_DEFAULTS.PAGE_SIZE,\n search,\n filter = 'queueType==INBOUND;channelType==TELEPHONY;active==true',\n attributes,\n sortBy = 'name',\n sortOrder = 'asc',\n desktopProfileFilter = true,\n provisioningView,\n singleObjectResponse,\n } = params;\n const agentView = desktopProfileFilter;\n const firstLevelView = desktopProfileFilter;\n\n const orgId = this.webex.credentials.getOrgId();\n const effectiveSortBy = sortBy ?? (sortOrder ? 'name' : undefined);\n const isSearchRequest = !!(search || filter || attributes || effectiveSortBy);\n const canUseCache = this.pageCache.canUseCache({\n search,\n filter,\n attributes,\n sortBy: effectiveSortBy,\n desktopProfileFilter,\n provisioningView,\n singleObjectResponse,\n });\n\n LoggerProxy.info('Fetching contact service queues', {\n module: 'Queue',\n method: METHODS.GET_QUEUES,\n data: {\n orgId,\n page,\n pageSize,\n isSearchRequest,\n },\n });\n\n // Check if we can use cache for simple pagination (no search/filter/attributes/sort)\n if (canUseCache) {\n const cacheKey = this.pageCache.buildCacheKey(orgId, page, pageSize);\n const cachedPage = this.pageCache.getCachedPage(cacheKey);\n\n if (cachedPage) {\n const duration = Date.now() - startTime;\n\n LoggerProxy.log(`Returning page ${page} from cache`, {\n module: 'Queue',\n method: 'getQueues',\n data: {\n cacheHit: true,\n duration,\n recordCount: cachedPage.data.length,\n page,\n pageSize,\n },\n });\n\n return {\n data: cachedPage.data,\n meta: {\n page,\n pageSize,\n totalPages: cachedPage.totalMeta?.totalPages,\n totalRecords: cachedPage.totalMeta?.totalRecords,\n orgid: orgId,\n },\n };\n }\n }\n\n // Start timing only for actual API calls (not cache hits)\n this.metricsManager.timeEvent(METRIC_EVENT_NAMES.QUEUE_FETCH_SUCCESS);\n\n try {\n // Build query parameters according to spec\n const queryParams = new URLSearchParams({\n page: page.toString(),\n pageSize: pageSize.toString(),\n });\n\n if (filter) queryParams.append('filter', filter);\n if (attributes) queryParams.append('attributes', attributes);\n if (search) queryParams.append('search', search);\n if (effectiveSortBy)\n queryParams.append('sort', `${effectiveSortBy},${(sortOrder ?? 'asc').toUpperCase()}`);\n if (desktopProfileFilter !== undefined)\n queryParams.append('desktopProfileFilter', desktopProfileFilter.toString());\n if (provisioningView !== undefined)\n queryParams.append('provisioningView', provisioningView.toString());\n if (singleObjectResponse !== undefined)\n queryParams.append('singleObjectResponse', singleObjectResponse.toString());\n if (agentView !== undefined) queryParams.append('agentView', agentView.toString());\n if (firstLevelView !== undefined)\n queryParams.append('firstLevelView', firstLevelView.toString());\n\n const resource = endPointMap.queueList(orgId, queryParams.toString());\n\n LoggerProxy.log('Making API request to fetch contact service queues', {\n module: 'Queue',\n method: METHODS.GET_QUEUES,\n data: {\n resource,\n service: WCC_API_GATEWAY,\n },\n });\n\n const response = await this.webexRequest.request({\n service: WCC_API_GATEWAY,\n resource,\n method: HTTP_METHODS.GET,\n });\n\n const duration = Date.now() - startTime;\n\n const recordCount = response.body?.data?.length || 0;\n const totalRecords = response.body?.meta?.totalRecords;\n\n LoggerProxy.log(`Successfully retrieved ${recordCount} contact service queues`, {\n module: 'Queue',\n method: METHODS.GET_QUEUES,\n data: {\n statusCode: response.statusCode,\n duration,\n recordCount,\n totalRecords,\n isSearchRequest,\n page,\n pageSize,\n },\n });\n\n // Only track metrics for search requests or first page loads to reduce metric volume\n if (isSearchRequest || page === 0) {\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.QUEUE_FETCH_SUCCESS,\n {\n orgId,\n statusCode: response.statusCode,\n recordCount,\n totalRecords,\n isSearchRequest,\n isFirstPage: page === 0,\n },\n ['behavioral', 'operational']\n );\n }\n\n // Cache the page data for simple pagination (no search/filter/attributes/sort)\n if (canUseCache && response.body?.data) {\n const cacheKey = this.pageCache.buildCacheKey(orgId, page, pageSize);\n this.pageCache.cachePage(cacheKey, response.body.data, response.body.meta);\n\n LoggerProxy.log('Cached contact service queues for future requests', {\n module: 'Queue',\n method: METHODS.GET_QUEUES,\n data: {\n cacheKey,\n recordCount,\n },\n });\n }\n\n return response.body;\n } catch (error) {\n const errorData = {\n orgId,\n error: error instanceof Error ? error.message : String(error),\n isSearchRequest,\n page,\n pageSize,\n };\n\n LoggerProxy.error('Failed to fetch contact service queues', {\n module: 'Queue',\n method: METHODS.GET_QUEUES,\n data: errorData,\n error,\n });\n\n // Track all failures for troubleshooting\n this.metricsManager.trackEvent(METRIC_EVENT_NAMES.QUEUE_FETCH_FAILED, errorData, [\n 'behavioral',\n 'operational',\n ]);\n\n throw error;\n }\n }\n}\n\nexport default Queue;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,427 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = exports.UserPreference = void 0;
|
|
7
|
+
var _types = require("../types");
|
|
8
|
+
var _loggerProxy = _interopRequireDefault(require("../logger-proxy"));
|
|
9
|
+
var _WebexRequest = _interopRequireDefault(require("./core/WebexRequest"));
|
|
10
|
+
var _MetricsManager = _interopRequireDefault(require("../metrics/MetricsManager"));
|
|
11
|
+
var _constants = require("./constants");
|
|
12
|
+
var _constants2 = require("./config/constants");
|
|
13
|
+
var _constants3 = require("../metrics/constants");
|
|
14
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
15
|
+
/**
|
|
16
|
+
* UserPreference API class for managing Webex Contact Center user preferences.
|
|
17
|
+
* Provides functionality to get, create, update, and delete user preferences.
|
|
18
|
+
*
|
|
19
|
+
* @class UserPreference
|
|
20
|
+
* @public
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* import Webex from 'webex';
|
|
24
|
+
*
|
|
25
|
+
* const webex = new Webex({ credentials: 'YOUR_ACCESS_TOKEN' });
|
|
26
|
+
* const cc = webex.cc;
|
|
27
|
+
*
|
|
28
|
+
* // Register and login first
|
|
29
|
+
* await cc.register();
|
|
30
|
+
* await cc.stationLogin({ teamId: 'team123', loginOption: 'BROWSER' });
|
|
31
|
+
*
|
|
32
|
+
* // Get UserPreference API instance from ContactCenter
|
|
33
|
+
* const userPreferenceAPI = cc.userPreference;
|
|
34
|
+
*
|
|
35
|
+
* // Get user preferences for the current user
|
|
36
|
+
* const preferences = await userPreferenceAPI.getUserPreference();
|
|
37
|
+
*
|
|
38
|
+
* // Create new user preferences
|
|
39
|
+
* const newPreferences = await userPreferenceAPI.createUserPreference({
|
|
40
|
+
* userId: 'user123',
|
|
41
|
+
* preferences: { e911Reminder: true }
|
|
42
|
+
* });
|
|
43
|
+
*
|
|
44
|
+
* // Update user preferences
|
|
45
|
+
* const updatedPreferences = await userPreferenceAPI.updateUserPreference('user123', {
|
|
46
|
+
* preferences: { e911Reminder: false }
|
|
47
|
+
* });
|
|
48
|
+
*
|
|
49
|
+
* // Delete user preferences
|
|
50
|
+
* await userPreferenceAPI.deleteUserPreference('user123');
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
class UserPreference {
|
|
54
|
+
/**
|
|
55
|
+
* Creates an instance of UserPreference
|
|
56
|
+
* @param {WebexSDK} webex - The Webex SDK instance
|
|
57
|
+
* @param {() => string} getUserId - Function to get the current user's CI user ID
|
|
58
|
+
* @public
|
|
59
|
+
*/
|
|
60
|
+
constructor(webex, getUserId) {
|
|
61
|
+
this.webex = webex;
|
|
62
|
+
this.webexRequest = _WebexRequest.default.getInstance({
|
|
63
|
+
webex
|
|
64
|
+
});
|
|
65
|
+
this.getUserId = getUserId;
|
|
66
|
+
this.metricsManager = _MetricsManager.default.getInstance({
|
|
67
|
+
webex
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Fetches user preferences for a specific user
|
|
73
|
+
* @param {GetUserPreferenceParams} [params] - Optional parameters for fetching preferences
|
|
74
|
+
* @param {string} [params.userId] - User ID to fetch preferences for. Defaults to current user's CI user ID.
|
|
75
|
+
* @param {number} [params.page=0] - Page number (0-indexed). Default: 0
|
|
76
|
+
* @param {number} [params.pageSize=100] - Number of items per page. Default: 100
|
|
77
|
+
* @returns {Promise<UserPreferenceResponse>} Promise resolving to user preferences
|
|
78
|
+
* @throws {Error} If the API call fails
|
|
79
|
+
* @public
|
|
80
|
+
* @example
|
|
81
|
+
* ```typescript
|
|
82
|
+
* // Get preferences for current user
|
|
83
|
+
* const preferences = await userPreferenceAPI.getUserPreference();
|
|
84
|
+
*
|
|
85
|
+
* // Get preferences for a specific user
|
|
86
|
+
* const preferences = await userPreferenceAPI.getUserPreference({ userId: 'user123' });
|
|
87
|
+
*
|
|
88
|
+
* // Get preferences with pagination
|
|
89
|
+
* const preferences = await userPreferenceAPI.getUserPreference({ page: 0, pageSize: 50 });
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
async getUserPreference(params) {
|
|
93
|
+
const {
|
|
94
|
+
userId,
|
|
95
|
+
page,
|
|
96
|
+
pageSize
|
|
97
|
+
} = params || {};
|
|
98
|
+
const targetUserId = userId || this.getUserId();
|
|
99
|
+
const orgId = this.webex.credentials.getOrgId();
|
|
100
|
+
_loggerProxy.default.info('Fetching user preferences', {
|
|
101
|
+
module: 'UserPreference',
|
|
102
|
+
method: 'getUserPreference',
|
|
103
|
+
data: {
|
|
104
|
+
orgId,
|
|
105
|
+
userId: targetUserId,
|
|
106
|
+
page,
|
|
107
|
+
pageSize
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
if (!targetUserId) {
|
|
111
|
+
_loggerProxy.default.error('getUserPreference called without a valid userId', {
|
|
112
|
+
module: 'UserPreference',
|
|
113
|
+
method: 'getUserPreference',
|
|
114
|
+
data: {
|
|
115
|
+
orgId,
|
|
116
|
+
userId: targetUserId,
|
|
117
|
+
error: 'Missing userId. Ensure user is logged in or provide a userId.'
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
throw new Error('UserPreference: userId is not available.');
|
|
121
|
+
}
|
|
122
|
+
try {
|
|
123
|
+
let resource = _constants2.endPointMap.userPreference(orgId, targetUserId);
|
|
124
|
+
|
|
125
|
+
// Build query parameters if provided
|
|
126
|
+
const queryParams = [];
|
|
127
|
+
if (page !== undefined) queryParams.push(`page=${page}`);
|
|
128
|
+
if (pageSize !== undefined) queryParams.push(`pageSize=${pageSize}`);
|
|
129
|
+
if (queryParams.length > 0) {
|
|
130
|
+
resource = `${resource}?${queryParams.join('&')}`;
|
|
131
|
+
}
|
|
132
|
+
_loggerProxy.default.info('Making API request to fetch user preferences', {
|
|
133
|
+
module: 'UserPreference',
|
|
134
|
+
method: 'getUserPreference',
|
|
135
|
+
data: {
|
|
136
|
+
resource,
|
|
137
|
+
service: _constants.WCC_API_GATEWAY
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
this.metricsManager.timeEvent(_constants3.METRIC_EVENT_NAMES.USER_PREFERENCE_GET_SUCCESS);
|
|
141
|
+
this.metricsManager.timeEvent(_constants3.METRIC_EVENT_NAMES.USER_PREFERENCE_GET_FAILED);
|
|
142
|
+
const response = await this.webexRequest.request({
|
|
143
|
+
service: _constants.WCC_API_GATEWAY,
|
|
144
|
+
resource,
|
|
145
|
+
method: _types.HTTP_METHODS.GET
|
|
146
|
+
});
|
|
147
|
+
_loggerProxy.default.info('Successfully retrieved user preferences', {
|
|
148
|
+
module: 'UserPreference',
|
|
149
|
+
method: 'getUserPreference',
|
|
150
|
+
data: {
|
|
151
|
+
statusCode: response.statusCode,
|
|
152
|
+
userId: targetUserId
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
this.metricsManager.trackEvent(_constants3.METRIC_EVENT_NAMES.USER_PREFERENCE_GET_SUCCESS, {
|
|
156
|
+
orgId,
|
|
157
|
+
userId: targetUserId,
|
|
158
|
+
statusCode: response.statusCode
|
|
159
|
+
}, ['behavioral', 'operational']);
|
|
160
|
+
return response.body;
|
|
161
|
+
} catch (error) {
|
|
162
|
+
const errorData = {
|
|
163
|
+
orgId,
|
|
164
|
+
userId: targetUserId,
|
|
165
|
+
error: error instanceof Error ? error.message : String(error)
|
|
166
|
+
};
|
|
167
|
+
_loggerProxy.default.error('Failed to fetch user preferences', {
|
|
168
|
+
module: 'UserPreference',
|
|
169
|
+
method: 'getUserPreference',
|
|
170
|
+
data: errorData,
|
|
171
|
+
error
|
|
172
|
+
});
|
|
173
|
+
this.metricsManager.trackEvent(_constants3.METRIC_EVENT_NAMES.USER_PREFERENCE_GET_FAILED, errorData, ['behavioral', 'operational']);
|
|
174
|
+
throw error;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Creates new user preferences
|
|
180
|
+
* @param {CreateUserPreferenceRequest} data - The user preference data to create
|
|
181
|
+
* @returns {Promise<UserPreference>} Promise resolving to created user preferences
|
|
182
|
+
* @throws {Error} If the API call fails
|
|
183
|
+
* @public
|
|
184
|
+
* @example
|
|
185
|
+
* ```typescript
|
|
186
|
+
* const newPreferences = await userPreferenceAPI.createUserPreference({
|
|
187
|
+
* userId: 'user123',
|
|
188
|
+
* preferences: { e911Reminder: true, notificationSettings: { email: true } }
|
|
189
|
+
* });
|
|
190
|
+
* ```
|
|
191
|
+
*/
|
|
192
|
+
async createUserPreference(data) {
|
|
193
|
+
const orgId = this.webex.credentials.getOrgId();
|
|
194
|
+
_loggerProxy.default.info('Creating user preferences', {
|
|
195
|
+
module: 'UserPreference',
|
|
196
|
+
method: 'createUserPreference',
|
|
197
|
+
data: {
|
|
198
|
+
orgId,
|
|
199
|
+
userId: data.userId
|
|
200
|
+
}
|
|
201
|
+
});
|
|
202
|
+
if (!data.userId) {
|
|
203
|
+
_loggerProxy.default.error('createUserPreference called without a valid userId', {
|
|
204
|
+
module: 'UserPreference',
|
|
205
|
+
method: 'createUserPreference',
|
|
206
|
+
data: {
|
|
207
|
+
orgId,
|
|
208
|
+
error: 'Missing userId in request data.'
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
throw new Error('UserPreference: userId is required to create user preferences.');
|
|
212
|
+
}
|
|
213
|
+
try {
|
|
214
|
+
const resource = _constants2.endPointMap.userPreferenceCreate(orgId);
|
|
215
|
+
_loggerProxy.default.info('Making API request to create user preferences', {
|
|
216
|
+
module: 'UserPreference',
|
|
217
|
+
method: 'createUserPreference',
|
|
218
|
+
data: {
|
|
219
|
+
resource,
|
|
220
|
+
service: _constants.WCC_API_GATEWAY
|
|
221
|
+
}
|
|
222
|
+
});
|
|
223
|
+
this.metricsManager.timeEvent(_constants3.METRIC_EVENT_NAMES.USER_PREFERENCE_CREATE_SUCCESS);
|
|
224
|
+
this.metricsManager.timeEvent(_constants3.METRIC_EVENT_NAMES.USER_PREFERENCE_CREATE_FAILED);
|
|
225
|
+
const response = await this.webexRequest.request({
|
|
226
|
+
service: _constants.WCC_API_GATEWAY,
|
|
227
|
+
resource,
|
|
228
|
+
method: _types.HTTP_METHODS.POST,
|
|
229
|
+
body: data
|
|
230
|
+
});
|
|
231
|
+
_loggerProxy.default.info('Successfully created user preferences', {
|
|
232
|
+
module: 'UserPreference',
|
|
233
|
+
method: 'createUserPreference',
|
|
234
|
+
data: {
|
|
235
|
+
statusCode: response.statusCode,
|
|
236
|
+
userId: data.userId
|
|
237
|
+
}
|
|
238
|
+
});
|
|
239
|
+
this.metricsManager.trackEvent(_constants3.METRIC_EVENT_NAMES.USER_PREFERENCE_CREATE_SUCCESS, {
|
|
240
|
+
orgId,
|
|
241
|
+
userId: data.userId,
|
|
242
|
+
statusCode: response.statusCode
|
|
243
|
+
}, ['behavioral', 'operational']);
|
|
244
|
+
return response.body;
|
|
245
|
+
} catch (error) {
|
|
246
|
+
const errorData = {
|
|
247
|
+
orgId,
|
|
248
|
+
userId: data.userId,
|
|
249
|
+
error: error instanceof Error ? error.message : String(error)
|
|
250
|
+
};
|
|
251
|
+
_loggerProxy.default.error('Failed to create user preferences', {
|
|
252
|
+
module: 'UserPreference',
|
|
253
|
+
method: 'createUserPreference',
|
|
254
|
+
data: errorData,
|
|
255
|
+
error
|
|
256
|
+
});
|
|
257
|
+
this.metricsManager.trackEvent(_constants3.METRIC_EVENT_NAMES.USER_PREFERENCE_CREATE_FAILED, errorData, ['behavioral', 'operational']);
|
|
258
|
+
throw error;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
/**
|
|
263
|
+
* Updates existing user preferences
|
|
264
|
+
* @param {string} userId - User ID to update preferences for
|
|
265
|
+
* @param {UpdateUserPreferenceRequest} data - The user preference data to update
|
|
266
|
+
* @returns {Promise<UserPreference>} Promise resolving to updated user preferences
|
|
267
|
+
* @throws {Error} If the API call fails
|
|
268
|
+
* @public
|
|
269
|
+
* @example
|
|
270
|
+
* ```typescript
|
|
271
|
+
* const updatedPreferences = await userPreferenceAPI.updateUserPreference('user123', {
|
|
272
|
+
* preferences: { e911Reminder: false }
|
|
273
|
+
* });
|
|
274
|
+
* ```
|
|
275
|
+
*/
|
|
276
|
+
async updateUserPreference(userId, data) {
|
|
277
|
+
const orgId = this.webex.credentials.getOrgId();
|
|
278
|
+
_loggerProxy.default.info('Updating user preferences', {
|
|
279
|
+
module: 'UserPreference',
|
|
280
|
+
method: 'updateUserPreference',
|
|
281
|
+
data: {
|
|
282
|
+
orgId,
|
|
283
|
+
userId
|
|
284
|
+
}
|
|
285
|
+
});
|
|
286
|
+
if (!userId) {
|
|
287
|
+
_loggerProxy.default.error('updateUserPreference called without a valid userId', {
|
|
288
|
+
module: 'UserPreference',
|
|
289
|
+
method: 'updateUserPreference',
|
|
290
|
+
data: {
|
|
291
|
+
orgId,
|
|
292
|
+
error: 'Missing userId parameter.'
|
|
293
|
+
}
|
|
294
|
+
});
|
|
295
|
+
throw new Error('UserPreference: userId is required to update user preferences.');
|
|
296
|
+
}
|
|
297
|
+
try {
|
|
298
|
+
const resource = _constants2.endPointMap.userPreference(orgId, userId);
|
|
299
|
+
_loggerProxy.default.info('Making API request to update user preferences', {
|
|
300
|
+
module: 'UserPreference',
|
|
301
|
+
method: 'updateUserPreference',
|
|
302
|
+
data: {
|
|
303
|
+
resource,
|
|
304
|
+
service: _constants.WCC_API_GATEWAY
|
|
305
|
+
}
|
|
306
|
+
});
|
|
307
|
+
this.metricsManager.timeEvent(_constants3.METRIC_EVENT_NAMES.USER_PREFERENCE_UPDATE_SUCCESS);
|
|
308
|
+
this.metricsManager.timeEvent(_constants3.METRIC_EVENT_NAMES.USER_PREFERENCE_UPDATE_FAILED);
|
|
309
|
+
const response = await this.webexRequest.request({
|
|
310
|
+
service: _constants.WCC_API_GATEWAY,
|
|
311
|
+
resource,
|
|
312
|
+
method: _types.HTTP_METHODS.PUT,
|
|
313
|
+
body: data
|
|
314
|
+
});
|
|
315
|
+
_loggerProxy.default.info('Successfully updated user preferences', {
|
|
316
|
+
module: 'UserPreference',
|
|
317
|
+
method: 'updateUserPreference',
|
|
318
|
+
data: {
|
|
319
|
+
statusCode: response.statusCode,
|
|
320
|
+
userId
|
|
321
|
+
}
|
|
322
|
+
});
|
|
323
|
+
this.metricsManager.trackEvent(_constants3.METRIC_EVENT_NAMES.USER_PREFERENCE_UPDATE_SUCCESS, {
|
|
324
|
+
orgId,
|
|
325
|
+
userId,
|
|
326
|
+
statusCode: response.statusCode
|
|
327
|
+
}, ['behavioral', 'operational']);
|
|
328
|
+
return response.body;
|
|
329
|
+
} catch (error) {
|
|
330
|
+
const errorData = {
|
|
331
|
+
orgId,
|
|
332
|
+
userId,
|
|
333
|
+
error: error instanceof Error ? error.message : String(error)
|
|
334
|
+
};
|
|
335
|
+
_loggerProxy.default.error('Failed to update user preferences', {
|
|
336
|
+
module: 'UserPreference',
|
|
337
|
+
method: 'updateUserPreference',
|
|
338
|
+
data: errorData,
|
|
339
|
+
error
|
|
340
|
+
});
|
|
341
|
+
this.metricsManager.trackEvent(_constants3.METRIC_EVENT_NAMES.USER_PREFERENCE_UPDATE_FAILED, errorData, ['behavioral', 'operational']);
|
|
342
|
+
throw error;
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
/**
|
|
347
|
+
* Deletes user preferences for a specific user
|
|
348
|
+
* @param {string} userId - User ID to delete preferences for
|
|
349
|
+
* @returns {Promise<void>} Promise resolving when deletion is complete
|
|
350
|
+
* @throws {Error} If the API call fails
|
|
351
|
+
* @public
|
|
352
|
+
* @example
|
|
353
|
+
* ```typescript
|
|
354
|
+
* await userPreferenceAPI.deleteUserPreference('user123');
|
|
355
|
+
* ```
|
|
356
|
+
*/
|
|
357
|
+
async deleteUserPreference(userId) {
|
|
358
|
+
const orgId = this.webex.credentials.getOrgId();
|
|
359
|
+
_loggerProxy.default.info('Deleting user preferences', {
|
|
360
|
+
module: 'UserPreference',
|
|
361
|
+
method: 'deleteUserPreference',
|
|
362
|
+
data: {
|
|
363
|
+
orgId,
|
|
364
|
+
userId
|
|
365
|
+
}
|
|
366
|
+
});
|
|
367
|
+
if (!userId) {
|
|
368
|
+
_loggerProxy.default.error('deleteUserPreference called without a valid userId', {
|
|
369
|
+
module: 'UserPreference',
|
|
370
|
+
method: 'deleteUserPreference',
|
|
371
|
+
data: {
|
|
372
|
+
orgId,
|
|
373
|
+
error: 'Missing userId parameter.'
|
|
374
|
+
}
|
|
375
|
+
});
|
|
376
|
+
throw new Error('UserPreference: userId is required to delete user preferences.');
|
|
377
|
+
}
|
|
378
|
+
try {
|
|
379
|
+
const resource = _constants2.endPointMap.userPreference(orgId, userId);
|
|
380
|
+
_loggerProxy.default.info('Making API request to delete user preferences', {
|
|
381
|
+
module: 'UserPreference',
|
|
382
|
+
method: 'deleteUserPreference',
|
|
383
|
+
data: {
|
|
384
|
+
resource,
|
|
385
|
+
service: _constants.WCC_API_GATEWAY
|
|
386
|
+
}
|
|
387
|
+
});
|
|
388
|
+
this.metricsManager.timeEvent(_constants3.METRIC_EVENT_NAMES.USER_PREFERENCE_DELETE_SUCCESS);
|
|
389
|
+
this.metricsManager.timeEvent(_constants3.METRIC_EVENT_NAMES.USER_PREFERENCE_DELETE_FAILED);
|
|
390
|
+
const response = await this.webexRequest.request({
|
|
391
|
+
service: _constants.WCC_API_GATEWAY,
|
|
392
|
+
resource,
|
|
393
|
+
method: _types.HTTP_METHODS.DELETE
|
|
394
|
+
});
|
|
395
|
+
_loggerProxy.default.info('Successfully deleted user preferences', {
|
|
396
|
+
module: 'UserPreference',
|
|
397
|
+
method: 'deleteUserPreference',
|
|
398
|
+
data: {
|
|
399
|
+
statusCode: response.statusCode,
|
|
400
|
+
userId
|
|
401
|
+
}
|
|
402
|
+
});
|
|
403
|
+
this.metricsManager.trackEvent(_constants3.METRIC_EVENT_NAMES.USER_PREFERENCE_DELETE_SUCCESS, {
|
|
404
|
+
orgId,
|
|
405
|
+
userId,
|
|
406
|
+
statusCode: response.statusCode
|
|
407
|
+
}, ['behavioral', 'operational']);
|
|
408
|
+
} catch (error) {
|
|
409
|
+
const errorData = {
|
|
410
|
+
orgId,
|
|
411
|
+
userId,
|
|
412
|
+
error: error instanceof Error ? error.message : String(error)
|
|
413
|
+
};
|
|
414
|
+
_loggerProxy.default.error('Failed to delete user preferences', {
|
|
415
|
+
module: 'UserPreference',
|
|
416
|
+
method: 'deleteUserPreference',
|
|
417
|
+
data: errorData,
|
|
418
|
+
error
|
|
419
|
+
});
|
|
420
|
+
this.metricsManager.trackEvent(_constants3.METRIC_EVENT_NAMES.USER_PREFERENCE_DELETE_FAILED, errorData, ['behavioral', 'operational']);
|
|
421
|
+
throw error;
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
exports.UserPreference = UserPreference;
|
|
426
|
+
var _default = exports.default = UserPreference;
|
|
427
|
+
//# sourceMappingURL=UserPreference.js.map
|