@webex/contact-center 3.9.0-next.9 → 3.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cc.js +182 -47
- package/dist/cc.js.map +1 -1
- package/dist/constants.js +1 -0
- package/dist/constants.js.map +1 -1
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/logger-proxy.js +24 -1
- package/dist/logger-proxy.js.map +1 -1
- package/dist/metrics/behavioral-events.js +89 -0
- package/dist/metrics/behavioral-events.js.map +1 -1
- package/dist/metrics/constants.js +30 -2
- package/dist/metrics/constants.js.map +1 -1
- package/dist/services/AddressBook.js +271 -0
- package/dist/services/AddressBook.js.map +1 -0
- package/dist/services/EntryPoint.js +227 -0
- package/dist/services/EntryPoint.js.map +1 -0
- package/dist/services/Queue.js +261 -0
- package/dist/services/Queue.js.map +1 -0
- package/dist/services/config/constants.js +36 -2
- package/dist/services/config/constants.js.map +1 -1
- package/dist/services/config/index.js +29 -21
- package/dist/services/config/index.js.map +1 -1
- package/dist/services/config/types.js +33 -1
- package/dist/services/config/types.js.map +1 -1
- package/dist/services/core/Utils.js +42 -1
- package/dist/services/core/Utils.js.map +1 -1
- package/dist/services/task/TaskManager.js +113 -3
- package/dist/services/task/TaskManager.js.map +1 -1
- package/dist/services/task/TaskUtils.js +76 -0
- package/dist/services/task/TaskUtils.js.map +1 -0
- package/dist/services/task/constants.js +26 -1
- package/dist/services/task/constants.js.map +1 -1
- package/dist/services/task/contact.js +86 -0
- package/dist/services/task/contact.js.map +1 -1
- package/dist/services/task/index.js +241 -5
- package/dist/services/task/index.js.map +1 -1
- package/dist/services/task/types.js +14 -0
- package/dist/services/task/types.js.map +1 -1
- package/dist/types/cc.d.ts +115 -35
- package/dist/types/constants.d.ts +1 -0
- package/dist/types/index.d.ts +3 -2
- package/dist/types/metrics/constants.d.ts +24 -1
- package/dist/types/services/AddressBook.d.ts +74 -0
- package/dist/types/services/EntryPoint.d.ts +67 -0
- package/dist/types/services/Queue.d.ts +76 -0
- package/dist/types/services/config/constants.d.ts +35 -1
- package/dist/types/services/config/index.d.ts +6 -9
- package/dist/types/services/config/types.d.ts +79 -58
- package/dist/types/services/core/Utils.d.ts +14 -1
- package/dist/types/services/task/TaskUtils.d.ts +28 -0
- package/dist/types/services/task/constants.d.ts +23 -0
- package/dist/types/services/task/contact.d.ts +10 -0
- package/dist/types/services/task/index.d.ts +64 -1
- package/dist/types/services/task/types.d.ts +221 -19
- package/dist/types/types.d.ts +162 -0
- package/dist/types/utils/PageCache.d.ts +173 -0
- package/dist/types.js +17 -0
- package/dist/types.js.map +1 -1
- package/dist/utils/PageCache.js +192 -0
- package/dist/utils/PageCache.js.map +1 -0
- package/dist/webex.js +1 -1
- package/package.json +10 -9
- package/src/cc.ts +206 -52
- package/src/constants.ts +1 -0
- package/src/index.ts +16 -2
- package/src/logger-proxy.ts +24 -1
- package/src/metrics/behavioral-events.ts +94 -0
- package/src/metrics/constants.ts +34 -1
- package/src/services/AddressBook.ts +291 -0
- package/src/services/EntryPoint.ts +241 -0
- package/src/services/Queue.ts +277 -0
- package/src/services/config/constants.ts +42 -2
- package/src/services/config/index.ts +30 -30
- package/src/services/config/types.ts +59 -58
- package/src/services/core/Utils.ts +44 -0
- package/src/services/task/TaskManager.ts +122 -5
- package/src/services/task/TaskUtils.ts +81 -0
- package/src/services/task/constants.ts +25 -0
- package/src/services/task/contact.ts +80 -0
- package/src/services/task/index.ts +300 -4
- package/src/services/task/types.ts +239 -18
- package/src/types.ts +180 -0
- package/src/utils/PageCache.ts +252 -0
- package/test/unit/spec/cc.ts +282 -85
- package/test/unit/spec/metrics/behavioral-events.ts +42 -0
- package/test/unit/spec/services/AddressBook.ts +332 -0
- package/test/unit/spec/services/EntryPoint.ts +259 -0
- package/test/unit/spec/services/Queue.ts +323 -0
- package/test/unit/spec/services/config/index.ts +279 -65
- package/test/unit/spec/services/task/TaskManager.ts +382 -0
- package/test/unit/spec/services/task/TaskUtils.ts +131 -0
- package/test/unit/spec/services/task/contact.ts +31 -1
- package/test/unit/spec/services/task/index.ts +242 -8
- package/umd/contact-center.min.js +2 -2
- package/umd/contact-center.min.js.map +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_types","require","_loggerProxy","_interopRequireDefault","_WebexRequest","_PageCache","_interopRequireWildcard","_MetricsManager","_constants","_constants2","_constants3","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","AddressBook","constructor","webex","getAddressBookId","webexRequest","WebexRequest","getInstance","pageCache","PageCache","metricsManager","MetricsManager","getEntries","params","startTime","Date","now","addressBookId","page","PAGINATION_DEFAULTS","PAGE","pageSize","PAGE_SIZE","search","filter","attributes","bookId","orgId","credentials","getOrgId","isSearchRequest","LoggerProxy","info","module","method","data","canUseCache","cacheKey","buildCacheKey","cachedPage","getCachedPage","duration","cacheHit","recordCount","length","meta","totalPages","totalMeta","totalRecords","timeEvent","METRIC_EVENT_NAMES","ADDRESSBOOK_FETCH_SUCCESS","errorData","error","trackEvent","ADDRESSBOOK_FETCH_FAILED","Error","queryParams","URLSearchParams","toString","append","resource","endPointMap","addressBookEntries","service","WCC_API_GATEWAY","response","request","HTTP_METHODS","GET","body","statusCode","isFirstPage","cachePage","message","String","exports","_default"],"sources":["AddressBook.ts"],"sourcesContent":["import {HTTP_METHODS, WebexSDK} from '../types';\nimport type {\n AddressBookEntry,\n AddressBookEntriesResponse,\n AddressBookEntrySearchParams,\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';\n\n/**\n * AddressBook API class for managing Webex Contact Center address book entries.\n * Provides functionality to fetch address book entries using the entry API.\n *\n * @class AddressBook\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 AddressBook API instance from ContactCenter\n * const addressBookAPI = cc.addressBook;\n *\n * // Get entries from agent's default address book\n * const entries = await addressBookAPI.getEntries();\n *\n * // Get entries from a specific address book with pagination\n * const entries = await addressBookAPI.getEntries({\n * addressBookId: 'addressBookId123',\n * page: 0,\n * pageSize: 50\n * });\n *\n * // Search for specific entries\n * const searchResults = await addressBook.getEntries({\n * search: 'john',\n * filter: 'name==\"John Doe\"'\n * });\n * ```\n */\nexport class AddressBook {\n private webexRequest: WebexRequest;\n private webex: WebexSDK;\n private getAddressBookId: () => string;\n private metricsManager: MetricsManager;\n\n // Page cache using the common utility\n private pageCache: PageCache<AddressBookEntry>;\n\n /**\n * Creates an instance of AddressBook\n * @param {WebexSDK} webex - The Webex SDK instance\n * @param {() => string} getAddressBookId - Function to get the addressBookId from agent profile\n * @public\n */\n constructor(webex: WebexSDK, getAddressBookId: () => string) {\n this.webex = webex;\n this.webexRequest = WebexRequest.getInstance({webex});\n this.getAddressBookId = getAddressBookId;\n this.pageCache = new PageCache<AddressBookEntry>('AddressBook');\n this.metricsManager = MetricsManager.getInstance({webex});\n }\n\n /**\n * Fetches address book entries for a specific address book using the entry API\n * @param {AddressBookEntrySearchParams} [params] - Search and pagination parameters including addressBookId\n * @returns {Promise<AddressBookEntriesResponse>} Promise resolving to address book entries\n * @throws {Error} If the API call fails\n * @public\n * @example\n * ```typescript\n * // Get entries from agent's default address book\n * const response = await addressBookAPI.getEntries();\n *\n * // Get entries from a specific address book with pagination\n * const response = await addressBookAPI.getEntries({\n * addressBookId: 'addressBookId123',\n * page: 0,\n * pageSize: 25\n * });\n * ```\n */\n public async getEntries(\n params: AddressBookEntrySearchParams = {}\n ): Promise<AddressBookEntriesResponse> {\n const startTime = Date.now();\n const {\n addressBookId,\n page = PAGINATION_DEFAULTS.PAGE,\n pageSize = PAGINATION_DEFAULTS.PAGE_SIZE,\n search,\n filter,\n attributes,\n } = params;\n\n // Use provided addressBookId or fall back to agent's address book\n const bookId = addressBookId || this.getAddressBookId();\n const orgId = this.webex.credentials.getOrgId();\n const isSearchRequest = !!(search || filter || attributes);\n\n LoggerProxy.info('Fetching address book entries', {\n module: 'AddressBook',\n method: 'getEntries',\n data: {\n orgId,\n bookId,\n page,\n pageSize,\n isSearchRequest,\n },\n });\n\n // Check if we can use cache for simple pagination (no search/filter/attributes)\n if (this.pageCache.canUseCache({search, filter, attributes})) {\n const cacheKey = this.pageCache.buildCacheKey(bookId, page, pageSize);\n const cachedPage = this.pageCache.getCachedPage(cacheKey);\n\n if (cachedPage) {\n const duration = Date.now() - startTime;\n\n LoggerProxy.info(`Returning page ${page} from cache`, {\n module: 'AddressBook',\n method: 'getEntries',\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 },\n };\n }\n }\n\n // Start timing for the operation\n this.metricsManager.timeEvent(METRIC_EVENT_NAMES.ADDRESSBOOK_FETCH_SUCCESS);\n\n // Validate address book id early to avoid bad requests\n if (!bookId) {\n const errorData = {\n orgId,\n bookId,\n isSearchRequest,\n page,\n pageSize,\n error: 'Missing addressBookId for agent. Ensure agent profile contains addressBookId.',\n };\n LoggerProxy.error('AddressBook called without a valid addressBookId', {\n module: 'AddressBook',\n method: 'getEntries',\n data: errorData,\n });\n\n this.metricsManager.trackEvent(METRIC_EVENT_NAMES.ADDRESSBOOK_FETCH_FAILED, errorData, [\n 'behavioral',\n 'operational',\n ]);\n\n throw new Error('AddressBook: addressBookId is not available for the current agent.');\n }\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\n const resource = endPointMap.addressBookEntries(orgId, bookId, queryParams.toString());\n\n LoggerProxy.info('Making API request to fetch address book entries', {\n module: 'AddressBook',\n method: 'getEntries',\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.info(`Successfully retrieved ${recordCount} address book entries`, {\n module: 'AddressBook',\n method: 'getEntries',\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.ADDRESSBOOK_FETCH_SUCCESS,\n {\n orgId,\n bookId,\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)\n if (this.pageCache.canUseCache({search, filter, attributes}) && response.body?.data) {\n const cacheKey = this.pageCache.buildCacheKey(bookId, page, pageSize);\n this.pageCache.cachePage(cacheKey, response.body.data, response.body.meta);\n\n LoggerProxy.info('Cached address book entries for future requests', {\n module: 'AddressBook',\n method: 'getEntries',\n data: {\n cacheKey,\n recordCount,\n },\n });\n }\n\n return response.body;\n } catch (error) {\n const errorData = {\n orgId,\n bookId,\n error: error instanceof Error ? error.message : String(error),\n isSearchRequest,\n page,\n pageSize,\n };\n\n LoggerProxy.error('Failed to fetch address book entries', {\n module: 'AddressBook',\n method: 'getEntries',\n data: errorData,\n error,\n });\n\n // Track all failures for troubleshooting\n this.metricsManager.trackEvent(METRIC_EVENT_NAMES.ADDRESSBOOK_FETCH_FAILED, errorData, [\n 'behavioral',\n 'operational',\n ]);\n\n throw error;\n }\n }\n}\n\nexport default AddressBook;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = exports.EntryPoint = void 0;
|
|
7
|
+
var _types = require("../types");
|
|
8
|
+
var _loggerProxy = _interopRequireDefault(require("../logger-proxy"));
|
|
9
|
+
var _WebexRequest = _interopRequireDefault(require("./core/WebexRequest"));
|
|
10
|
+
var _PageCache = _interopRequireWildcard(require("../utils/PageCache"));
|
|
11
|
+
var _MetricsManager = _interopRequireDefault(require("../metrics/MetricsManager"));
|
|
12
|
+
var _constants = require("./constants");
|
|
13
|
+
var _constants2 = require("./config/constants");
|
|
14
|
+
var _constants3 = require("../metrics/constants");
|
|
15
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
16
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
17
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
18
|
+
/**
|
|
19
|
+
* EntryPoint class for managing Webex Contact Center entry points.
|
|
20
|
+
* Provides functionality to fetch, search, and paginate through entry points.
|
|
21
|
+
*
|
|
22
|
+
* @class EntryPoint
|
|
23
|
+
* @public
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* import Webex from 'webex';
|
|
27
|
+
*
|
|
28
|
+
* const webex = new Webex({ credentials: 'YOUR_ACCESS_TOKEN' });
|
|
29
|
+
* const cc = webex.cc;
|
|
30
|
+
*
|
|
31
|
+
* // Register and login first
|
|
32
|
+
* await cc.register();
|
|
33
|
+
* await cc.stationLogin({ teamId: 'team123', loginOption: 'BROWSER' });
|
|
34
|
+
*
|
|
35
|
+
* // Get EntryPoint API instance from ContactCenter
|
|
36
|
+
* const entryPointAPI = cc.entryPoint;
|
|
37
|
+
*
|
|
38
|
+
* // Get all entry points with pagination
|
|
39
|
+
* const response = await entryPointAPI.getEntryPoints({
|
|
40
|
+
* page: 0,
|
|
41
|
+
* pageSize: 50
|
|
42
|
+
* });
|
|
43
|
+
*
|
|
44
|
+
* // Search for specific entry points
|
|
45
|
+
* const searchResults = await entryPointAPI.searchEntryPoints({
|
|
46
|
+
* search: 'support',
|
|
47
|
+
* filter: 'type=="voice"'
|
|
48
|
+
* });
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
class EntryPoint {
|
|
52
|
+
// Page cache using the common utility
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Creates an instance of EntryPoint
|
|
56
|
+
* @param {WebexSDK} webex - The Webex SDK instance
|
|
57
|
+
* @public
|
|
58
|
+
*/
|
|
59
|
+
constructor(webex) {
|
|
60
|
+
this.webex = webex;
|
|
61
|
+
this.webexRequest = _WebexRequest.default.getInstance({
|
|
62
|
+
webex
|
|
63
|
+
});
|
|
64
|
+
this.pageCache = new _PageCache.default('EntryPoint');
|
|
65
|
+
this.metricsManager = _MetricsManager.default.getInstance({
|
|
66
|
+
webex
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Fetches entry points for the organization with pagination support
|
|
72
|
+
* @param {EntryPointSearchParams} [params] - Search and pagination parameters
|
|
73
|
+
* @returns {Promise<EntryPointListResponse>} Promise resolving to paginated entry points
|
|
74
|
+
* @throws {Error} If the API call fails
|
|
75
|
+
* @public
|
|
76
|
+
* @example
|
|
77
|
+
* ```typescript
|
|
78
|
+
* // Get first page of entry points
|
|
79
|
+
* const response = await entryPointAPI.getEntryPoints();
|
|
80
|
+
*
|
|
81
|
+
* // Get specific page with custom page size
|
|
82
|
+
* const response = await entryPointAPI.getEntryPoints({
|
|
83
|
+
* page: 2,
|
|
84
|
+
* pageSize: 25
|
|
85
|
+
* });
|
|
86
|
+
* ```
|
|
87
|
+
*/
|
|
88
|
+
async getEntryPoints(params = {}) {
|
|
89
|
+
const startTime = Date.now();
|
|
90
|
+
const {
|
|
91
|
+
page = _PageCache.PAGINATION_DEFAULTS.PAGE,
|
|
92
|
+
pageSize = _PageCache.PAGINATION_DEFAULTS.PAGE_SIZE,
|
|
93
|
+
search,
|
|
94
|
+
filter,
|
|
95
|
+
attributes,
|
|
96
|
+
sortBy,
|
|
97
|
+
sortOrder = 'asc'
|
|
98
|
+
} = params;
|
|
99
|
+
const orgId = this.webex.credentials.getOrgId();
|
|
100
|
+
const isSearchRequest = !!(search || filter || attributes || sortBy);
|
|
101
|
+
_loggerProxy.default.info(`Fetching entry points - orgId: ${orgId}, page: ${page}, pageSize: ${pageSize}, isSearchRequest: ${isSearchRequest}`, {
|
|
102
|
+
module: 'EntryPoint',
|
|
103
|
+
method: 'getEntryPoints'
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
// Check if we can use cache for simple pagination (no search/filter/attributes/sort)
|
|
107
|
+
if (this.pageCache.canUseCache({
|
|
108
|
+
search,
|
|
109
|
+
filter,
|
|
110
|
+
attributes,
|
|
111
|
+
sortBy
|
|
112
|
+
})) {
|
|
113
|
+
const cacheKey = this.pageCache.buildCacheKey(orgId, page, pageSize);
|
|
114
|
+
const cachedPage = this.pageCache.getCachedPage(cacheKey);
|
|
115
|
+
if (cachedPage) {
|
|
116
|
+
const duration = Date.now() - startTime;
|
|
117
|
+
_loggerProxy.default.log(`Returning page ${page} from cache - cacheHit: true, duration: ${duration}ms, recordCount: ${cachedPage.data.length}, pageSize: ${pageSize}`, {
|
|
118
|
+
module: 'EntryPoint',
|
|
119
|
+
method: 'getEntryPoints'
|
|
120
|
+
});
|
|
121
|
+
return {
|
|
122
|
+
data: cachedPage.data,
|
|
123
|
+
meta: {
|
|
124
|
+
page,
|
|
125
|
+
pageSize,
|
|
126
|
+
totalPages: cachedPage.totalMeta?.totalPages,
|
|
127
|
+
totalRecords: cachedPage.totalMeta?.totalRecords
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// Start timing only for actual API calls (not cache hits)
|
|
134
|
+
this.metricsManager.timeEvent(_constants3.METRIC_EVENT_NAMES.ENTRYPOINT_FETCH_SUCCESS);
|
|
135
|
+
try {
|
|
136
|
+
// Build query parameters
|
|
137
|
+
const queryParams = new URLSearchParams({
|
|
138
|
+
page: page.toString(),
|
|
139
|
+
pageSize: pageSize.toString(),
|
|
140
|
+
sortOrder
|
|
141
|
+
});
|
|
142
|
+
if (search) queryParams.append('search', search);
|
|
143
|
+
if (filter) queryParams.append('filter', filter);
|
|
144
|
+
if (attributes) queryParams.append('attributes', attributes);
|
|
145
|
+
if (sortBy) queryParams.append('sortBy', sortBy);
|
|
146
|
+
const resource = _constants2.endPointMap.entryPointList(orgId, queryParams.toString());
|
|
147
|
+
_loggerProxy.default.log(`Making API request to fetch entry points - resource: ${resource}, service: ${_constants.WCC_API_GATEWAY}`, {
|
|
148
|
+
module: 'EntryPoint',
|
|
149
|
+
method: 'getEntryPoints'
|
|
150
|
+
});
|
|
151
|
+
const response = await this.webexRequest.request({
|
|
152
|
+
service: _constants.WCC_API_GATEWAY,
|
|
153
|
+
resource,
|
|
154
|
+
method: _types.HTTP_METHODS.GET
|
|
155
|
+
});
|
|
156
|
+
const duration = Date.now() - startTime;
|
|
157
|
+
const recordCount = response.body?.data?.length || 0;
|
|
158
|
+
const totalRecords = response.body?.meta?.totalRecords;
|
|
159
|
+
_loggerProxy.default.log(`Successfully retrieved ${recordCount} entry points`, {
|
|
160
|
+
module: 'EntryPoint',
|
|
161
|
+
method: 'getEntryPoints',
|
|
162
|
+
data: {
|
|
163
|
+
statusCode: response.statusCode,
|
|
164
|
+
duration,
|
|
165
|
+
recordCount,
|
|
166
|
+
totalRecords,
|
|
167
|
+
isSearchRequest,
|
|
168
|
+
page,
|
|
169
|
+
pageSize
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
|
|
173
|
+
// Only track metrics for search requests or first page loads to reduce metric volume
|
|
174
|
+
if (isSearchRequest || page === 0) {
|
|
175
|
+
this.metricsManager.trackEvent(_constants3.METRIC_EVENT_NAMES.ENTRYPOINT_FETCH_SUCCESS, {
|
|
176
|
+
orgId,
|
|
177
|
+
statusCode: response.statusCode,
|
|
178
|
+
recordCount,
|
|
179
|
+
totalRecords,
|
|
180
|
+
isSearchRequest,
|
|
181
|
+
isFirstPage: page === 0
|
|
182
|
+
}, ['behavioral']);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
// Cache the page data for simple pagination (no search/filter/attributes/sort)
|
|
186
|
+
if (this.pageCache.canUseCache({
|
|
187
|
+
search,
|
|
188
|
+
filter,
|
|
189
|
+
attributes,
|
|
190
|
+
sortBy
|
|
191
|
+
}) && response.body?.data) {
|
|
192
|
+
const cacheKey = this.pageCache.buildCacheKey(orgId, page, pageSize);
|
|
193
|
+
this.pageCache.cachePage(cacheKey, response.body.data, response.body.meta);
|
|
194
|
+
_loggerProxy.default.log('Cached entry points data for future requests', {
|
|
195
|
+
module: 'EntryPoint',
|
|
196
|
+
method: 'getEntryPoints',
|
|
197
|
+
data: {
|
|
198
|
+
cacheKey,
|
|
199
|
+
recordCount
|
|
200
|
+
}
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
return response.body;
|
|
204
|
+
} catch (error) {
|
|
205
|
+
const errorData = {
|
|
206
|
+
orgId,
|
|
207
|
+
error: error instanceof Error ? error.message : String(error),
|
|
208
|
+
isSearchRequest,
|
|
209
|
+
page,
|
|
210
|
+
pageSize
|
|
211
|
+
};
|
|
212
|
+
_loggerProxy.default.error(`Failed to fetch entry points`, {
|
|
213
|
+
module: 'EntryPoint',
|
|
214
|
+
method: 'getEntryPoints',
|
|
215
|
+
data: errorData,
|
|
216
|
+
error
|
|
217
|
+
});
|
|
218
|
+
|
|
219
|
+
// Track all failures for troubleshooting
|
|
220
|
+
this.metricsManager.trackEvent(_constants3.METRIC_EVENT_NAMES.ENTRYPOINT_FETCH_FAILED, errorData, ['behavioral']);
|
|
221
|
+
throw error;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
exports.EntryPoint = EntryPoint;
|
|
226
|
+
var _default = exports.default = EntryPoint;
|
|
227
|
+
//# sourceMappingURL=EntryPoint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_types","require","_loggerProxy","_interopRequireDefault","_WebexRequest","_PageCache","_interopRequireWildcard","_MetricsManager","_constants","_constants2","_constants3","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","EntryPoint","constructor","webex","webexRequest","WebexRequest","getInstance","pageCache","PageCache","metricsManager","MetricsManager","getEntryPoints","params","startTime","Date","now","page","PAGINATION_DEFAULTS","PAGE","pageSize","PAGE_SIZE","search","filter","attributes","sortBy","sortOrder","orgId","credentials","getOrgId","isSearchRequest","LoggerProxy","info","module","method","canUseCache","cacheKey","buildCacheKey","cachedPage","getCachedPage","duration","log","data","length","meta","totalPages","totalMeta","totalRecords","timeEvent","METRIC_EVENT_NAMES","ENTRYPOINT_FETCH_SUCCESS","queryParams","URLSearchParams","toString","append","resource","endPointMap","entryPointList","WCC_API_GATEWAY","response","request","service","HTTP_METHODS","GET","recordCount","body","statusCode","trackEvent","isFirstPage","cachePage","error","errorData","Error","message","String","ENTRYPOINT_FETCH_FAILED","exports","_default"],"sources":["EntryPoint.ts"],"sourcesContent":["import {HTTP_METHODS, WebexSDK} from '../types';\nimport type {EntryPointRecord, EntryPointListResponse, EntryPointSearchParams} from '../types';\nimport LoggerProxy from '../logger-proxy';\nimport WebexRequest from './core/WebexRequest';\nimport PageCache, {PAGINATION_DEFAULTS} from '../utils/PageCache';\nimport MetricsManager from '../metrics/MetricsManager';\nimport {WCC_API_GATEWAY} from './constants';\nimport {endPointMap} from './config/constants';\nimport {METRIC_EVENT_NAMES} from '../metrics/constants';\n\n/**\n * EntryPoint class for managing Webex Contact Center entry points.\n * Provides functionality to fetch, search, and paginate through entry points.\n *\n * @class EntryPoint\n * @public\n * @example\n * ```typescript\n * import Webex from 'webex';\n *\n * const webex = new Webex({ credentials: 'YOUR_ACCESS_TOKEN' });\n * const cc = webex.cc;\n *\n * // Register and login first\n * await cc.register();\n * await cc.stationLogin({ teamId: 'team123', loginOption: 'BROWSER' });\n *\n * // Get EntryPoint API instance from ContactCenter\n * const entryPointAPI = cc.entryPoint;\n *\n * // Get all entry points with pagination\n * const response = await entryPointAPI.getEntryPoints({\n * page: 0,\n * pageSize: 50\n * });\n *\n * // Search for specific entry points\n * const searchResults = await entryPointAPI.searchEntryPoints({\n * search: 'support',\n * filter: 'type==\"voice\"'\n * });\n * ```\n */\nexport class EntryPoint {\n private webexRequest: WebexRequest;\n private webex: WebexSDK;\n private metricsManager: MetricsManager;\n\n // Page cache using the common utility\n private pageCache: PageCache<EntryPointRecord>;\n\n /**\n * Creates an instance of EntryPoint\n * @param {WebexSDK} webex - The Webex SDK instance\n * @public\n */\n constructor(webex: WebexSDK) {\n this.webex = webex;\n this.webexRequest = WebexRequest.getInstance({webex});\n this.pageCache = new PageCache<EntryPointRecord>('EntryPoint');\n this.metricsManager = MetricsManager.getInstance({webex});\n }\n\n /**\n * Fetches entry points for the organization with pagination support\n * @param {EntryPointSearchParams} [params] - Search and pagination parameters\n * @returns {Promise<EntryPointListResponse>} Promise resolving to paginated entry points\n * @throws {Error} If the API call fails\n * @public\n * @example\n * ```typescript\n * // Get first page of entry points\n * const response = await entryPointAPI.getEntryPoints();\n *\n * // Get specific page with custom page size\n * const response = await entryPointAPI.getEntryPoints({\n * page: 2,\n * pageSize: 25\n * });\n * ```\n */\n public async getEntryPoints(\n params: EntryPointSearchParams = {}\n ): Promise<EntryPointListResponse> {\n const startTime = Date.now();\n const {\n page = PAGINATION_DEFAULTS.PAGE,\n pageSize = PAGINATION_DEFAULTS.PAGE_SIZE,\n search,\n filter,\n attributes,\n sortBy,\n sortOrder = 'asc',\n } = params;\n\n const orgId = this.webex.credentials.getOrgId();\n const isSearchRequest = !!(search || filter || attributes || sortBy);\n\n LoggerProxy.info(\n `Fetching entry points - orgId: ${orgId}, page: ${page}, pageSize: ${pageSize}, isSearchRequest: ${isSearchRequest}`,\n {\n module: 'EntryPoint',\n method: 'getEntryPoints',\n }\n );\n\n // Check if we can use cache for simple pagination (no search/filter/attributes/sort)\n if (this.pageCache.canUseCache({search, filter, attributes, sortBy})) {\n const cacheKey = this.pageCache.buildCacheKey(orgId, page, pageSize);\n const cachedPage = this.pageCache.getCachedPage(cacheKey);\n\n if (cachedPage) {\n const duration = Date.now() - startTime;\n\n LoggerProxy.log(\n `Returning page ${page} from cache - cacheHit: true, duration: ${duration}ms, recordCount: ${cachedPage.data.length}, pageSize: ${pageSize}`,\n {\n module: 'EntryPoint',\n method: 'getEntryPoints',\n }\n );\n\n return {\n data: cachedPage.data,\n meta: {\n page,\n pageSize,\n totalPages: cachedPage.totalMeta?.totalPages,\n totalRecords: cachedPage.totalMeta?.totalRecords,\n },\n };\n }\n }\n\n // Start timing only for actual API calls (not cache hits)\n this.metricsManager.timeEvent(METRIC_EVENT_NAMES.ENTRYPOINT_FETCH_SUCCESS);\n\n try {\n // Build query parameters\n const queryParams = new URLSearchParams({\n page: page.toString(),\n pageSize: pageSize.toString(),\n sortOrder,\n });\n\n if (search) queryParams.append('search', search);\n if (filter) queryParams.append('filter', filter);\n if (attributes) queryParams.append('attributes', attributes);\n if (sortBy) queryParams.append('sortBy', sortBy);\n\n const resource = endPointMap.entryPointList(orgId, queryParams.toString());\n\n LoggerProxy.log(\n `Making API request to fetch entry points - resource: ${resource}, service: ${WCC_API_GATEWAY}`,\n {\n module: 'EntryPoint',\n method: 'getEntryPoints',\n }\n );\n\n const response = await this.webexRequest.request({\n service: WCC_API_GATEWAY,\n resource,\n method: HTTP_METHODS.GET,\n });\n\n const duration = Date.now() - startTime;\n\n const recordCount = response.body?.data?.length || 0;\n const totalRecords = response.body?.meta?.totalRecords;\n\n LoggerProxy.log(`Successfully retrieved ${recordCount} entry points`, {\n module: 'EntryPoint',\n method: 'getEntryPoints',\n data: {\n statusCode: response.statusCode,\n duration,\n recordCount,\n totalRecords,\n isSearchRequest,\n page,\n pageSize,\n },\n });\n\n // Only track metrics for search requests or first page loads to reduce metric volume\n if (isSearchRequest || page === 0) {\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.ENTRYPOINT_FETCH_SUCCESS,\n {\n orgId,\n statusCode: response.statusCode,\n recordCount,\n totalRecords,\n isSearchRequest,\n isFirstPage: page === 0,\n },\n ['behavioral']\n );\n }\n\n // Cache the page data for simple pagination (no search/filter/attributes/sort)\n if (this.pageCache.canUseCache({search, filter, attributes, sortBy}) && response.body?.data) {\n const cacheKey = this.pageCache.buildCacheKey(orgId, page, pageSize);\n this.pageCache.cachePage(cacheKey, response.body.data, response.body.meta);\n\n LoggerProxy.log('Cached entry points data for future requests', {\n module: 'EntryPoint',\n method: 'getEntryPoints',\n data: {cacheKey, recordCount},\n });\n }\n\n return response.body;\n } catch (error) {\n const errorData = {\n orgId,\n error: error instanceof Error ? error.message : String(error),\n isSearchRequest,\n page,\n pageSize,\n };\n\n LoggerProxy.error(`Failed to fetch entry points`, {\n module: 'EntryPoint',\n method: 'getEntryPoints',\n data: errorData,\n error,\n });\n\n // Track all failures for troubleshooting\n this.metricsManager.trackEvent(METRIC_EVENT_NAMES.ENTRYPOINT_FETCH_FAILED, errorData, [\n 'behavioral',\n ]);\n\n throw error;\n }\n }\n}\n\nexport default EntryPoint;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = exports.Queue = void 0;
|
|
7
|
+
var _types = require("../types");
|
|
8
|
+
var _loggerProxy = _interopRequireDefault(require("../logger-proxy"));
|
|
9
|
+
var _WebexRequest = _interopRequireDefault(require("./core/WebexRequest"));
|
|
10
|
+
var _PageCache = _interopRequireWildcard(require("../utils/PageCache"));
|
|
11
|
+
var _MetricsManager = _interopRequireDefault(require("../metrics/MetricsManager"));
|
|
12
|
+
var _constants = require("./constants");
|
|
13
|
+
var _constants2 = require("./config/constants");
|
|
14
|
+
var _constants3 = require("../metrics/constants");
|
|
15
|
+
var _constants4 = require("../constants");
|
|
16
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
17
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
18
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
|
+
/**
|
|
20
|
+
* Queue API class for managing Webex Contact Center contact service queues.
|
|
21
|
+
* Provides functionality to fetch contact service queues using the queue API.
|
|
22
|
+
*
|
|
23
|
+
* @class Queue
|
|
24
|
+
* @public
|
|
25
|
+
* @example
|
|
26
|
+
* ```typescript
|
|
27
|
+
* import Webex from 'webex';
|
|
28
|
+
*
|
|
29
|
+
* const webex = new Webex({ credentials: 'YOUR_ACCESS_TOKEN' });
|
|
30
|
+
* const cc = webex.cc;
|
|
31
|
+
*
|
|
32
|
+
* // Register and login first
|
|
33
|
+
* await cc.register();
|
|
34
|
+
* await cc.stationLogin({ teamId: 'team123', loginOption: 'BROWSER' });
|
|
35
|
+
*
|
|
36
|
+
* // Get Queue API instance from ContactCenter
|
|
37
|
+
* const queueAPI = cc.queue;
|
|
38
|
+
*
|
|
39
|
+
* // Get all queues
|
|
40
|
+
* const queues = await queueAPI.getQueues();
|
|
41
|
+
*
|
|
42
|
+
* // Get queues with pagination
|
|
43
|
+
* const queues = await queueAPI.getQueues({
|
|
44
|
+
* page: 0,
|
|
45
|
+
* pageSize: 50
|
|
46
|
+
* });
|
|
47
|
+
*
|
|
48
|
+
* // Search for specific queues
|
|
49
|
+
* const searchResults = await queueAPI.getQueues({
|
|
50
|
+
* search: 'support',
|
|
51
|
+
* filter: 'name=="Support Queue"'
|
|
52
|
+
* });
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
class Queue {
|
|
56
|
+
// Page cache using the common utility
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Creates an instance of Queue
|
|
60
|
+
* @param {WebexSDK} webex - The Webex SDK instance
|
|
61
|
+
* @public
|
|
62
|
+
*/
|
|
63
|
+
constructor(webex) {
|
|
64
|
+
this.webex = webex;
|
|
65
|
+
this.webexRequest = _WebexRequest.default.getInstance({
|
|
66
|
+
webex
|
|
67
|
+
});
|
|
68
|
+
this.pageCache = new _PageCache.default('Queue');
|
|
69
|
+
this.metricsManager = _MetricsManager.default.getInstance({
|
|
70
|
+
webex
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Fetches contact service queues for the organization
|
|
76
|
+
* @param {ContactServiceQueueSearchParams} [params] - Search and pagination parameters
|
|
77
|
+
* @returns {Promise<ContactServiceQueuesResponse>} Promise resolving to contact service queues
|
|
78
|
+
* @throws {Error} If the API call fails
|
|
79
|
+
* @public
|
|
80
|
+
* @example
|
|
81
|
+
* ```typescript
|
|
82
|
+
* // Get all queues with default pagination
|
|
83
|
+
* const response = await queueAPI.getQueues();
|
|
84
|
+
*
|
|
85
|
+
* // Get queues with specific pagination
|
|
86
|
+
* const response = await queueAPI.getQueues({
|
|
87
|
+
* page: 0,
|
|
88
|
+
* pageSize: 25
|
|
89
|
+
* });
|
|
90
|
+
*
|
|
91
|
+
* // Search for queues
|
|
92
|
+
* const response = await queueAPI.getQueues({
|
|
93
|
+
* search: 'support',
|
|
94
|
+
* filter: 'queueType=="INBOUND"'
|
|
95
|
+
* });
|
|
96
|
+
* ```
|
|
97
|
+
*/
|
|
98
|
+
async getQueues(params = {}) {
|
|
99
|
+
const startTime = Date.now();
|
|
100
|
+
const {
|
|
101
|
+
page = _PageCache.PAGINATION_DEFAULTS.PAGE,
|
|
102
|
+
pageSize = _PageCache.PAGINATION_DEFAULTS.PAGE_SIZE,
|
|
103
|
+
search,
|
|
104
|
+
filter,
|
|
105
|
+
attributes,
|
|
106
|
+
sortBy,
|
|
107
|
+
sortOrder,
|
|
108
|
+
desktopProfileFilter,
|
|
109
|
+
provisioningView,
|
|
110
|
+
singleObjectResponse
|
|
111
|
+
} = params;
|
|
112
|
+
const orgId = this.webex.credentials.getOrgId();
|
|
113
|
+
const isSearchRequest = !!(search || filter || attributes || sortBy);
|
|
114
|
+
_loggerProxy.default.info('Fetching contact service queues', {
|
|
115
|
+
module: 'Queue',
|
|
116
|
+
method: _constants4.METHODS.GET_QUEUES,
|
|
117
|
+
data: {
|
|
118
|
+
orgId,
|
|
119
|
+
page,
|
|
120
|
+
pageSize,
|
|
121
|
+
isSearchRequest
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
// Check if we can use cache for simple pagination (no search/filter/attributes/sort)
|
|
126
|
+
if (this.pageCache.canUseCache({
|
|
127
|
+
search,
|
|
128
|
+
filter,
|
|
129
|
+
attributes,
|
|
130
|
+
sortBy
|
|
131
|
+
})) {
|
|
132
|
+
const cacheKey = this.pageCache.buildCacheKey(orgId, page, pageSize);
|
|
133
|
+
const cachedPage = this.pageCache.getCachedPage(cacheKey);
|
|
134
|
+
if (cachedPage) {
|
|
135
|
+
const duration = Date.now() - startTime;
|
|
136
|
+
_loggerProxy.default.log(`Returning page ${page} from cache`, {
|
|
137
|
+
module: 'Queue',
|
|
138
|
+
method: 'getQueues',
|
|
139
|
+
data: {
|
|
140
|
+
cacheHit: true,
|
|
141
|
+
duration,
|
|
142
|
+
recordCount: cachedPage.data.length,
|
|
143
|
+
page,
|
|
144
|
+
pageSize
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
return {
|
|
148
|
+
data: cachedPage.data,
|
|
149
|
+
meta: {
|
|
150
|
+
page,
|
|
151
|
+
pageSize,
|
|
152
|
+
totalPages: cachedPage.totalMeta?.totalPages,
|
|
153
|
+
totalRecords: cachedPage.totalMeta?.totalRecords,
|
|
154
|
+
orgid: orgId
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
// Start timing only for actual API calls (not cache hits)
|
|
161
|
+
this.metricsManager.timeEvent(_constants3.METRIC_EVENT_NAMES.QUEUE_FETCH_SUCCESS);
|
|
162
|
+
try {
|
|
163
|
+
// Build query parameters according to spec
|
|
164
|
+
const queryParams = new URLSearchParams({
|
|
165
|
+
page: page.toString(),
|
|
166
|
+
pageSize: pageSize.toString()
|
|
167
|
+
});
|
|
168
|
+
if (filter) queryParams.append('filter', filter);
|
|
169
|
+
if (attributes) queryParams.append('attributes', attributes);
|
|
170
|
+
if (search) queryParams.append('search', search);
|
|
171
|
+
if (sortBy) queryParams.append('sortBy', sortBy);
|
|
172
|
+
if (sortOrder) queryParams.append('sortOrder', sortOrder);
|
|
173
|
+
if (desktopProfileFilter !== undefined) queryParams.append('desktopProfileFilter', desktopProfileFilter.toString());
|
|
174
|
+
if (provisioningView !== undefined) queryParams.append('provisioningView', provisioningView.toString());
|
|
175
|
+
if (singleObjectResponse !== undefined) queryParams.append('singleObjectResponse', singleObjectResponse.toString());
|
|
176
|
+
const resource = _constants2.endPointMap.queueList(orgId, queryParams.toString());
|
|
177
|
+
_loggerProxy.default.log('Making API request to fetch contact service queues', {
|
|
178
|
+
module: 'Queue',
|
|
179
|
+
method: _constants4.METHODS.GET_QUEUES,
|
|
180
|
+
data: {
|
|
181
|
+
resource,
|
|
182
|
+
service: _constants.WCC_API_GATEWAY
|
|
183
|
+
}
|
|
184
|
+
});
|
|
185
|
+
const response = await this.webexRequest.request({
|
|
186
|
+
service: _constants.WCC_API_GATEWAY,
|
|
187
|
+
resource,
|
|
188
|
+
method: _types.HTTP_METHODS.GET
|
|
189
|
+
});
|
|
190
|
+
const duration = Date.now() - startTime;
|
|
191
|
+
const recordCount = response.body?.data?.length || 0;
|
|
192
|
+
const totalRecords = response.body?.meta?.totalRecords;
|
|
193
|
+
_loggerProxy.default.log(`Successfully retrieved ${recordCount} contact service queues`, {
|
|
194
|
+
module: 'Queue',
|
|
195
|
+
method: _constants4.METHODS.GET_QUEUES,
|
|
196
|
+
data: {
|
|
197
|
+
statusCode: response.statusCode,
|
|
198
|
+
duration,
|
|
199
|
+
recordCount,
|
|
200
|
+
totalRecords,
|
|
201
|
+
isSearchRequest,
|
|
202
|
+
page,
|
|
203
|
+
pageSize
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
|
|
207
|
+
// Only track metrics for search requests or first page loads to reduce metric volume
|
|
208
|
+
if (isSearchRequest || page === 0) {
|
|
209
|
+
this.metricsManager.trackEvent(_constants3.METRIC_EVENT_NAMES.QUEUE_FETCH_SUCCESS, {
|
|
210
|
+
orgId,
|
|
211
|
+
statusCode: response.statusCode,
|
|
212
|
+
recordCount,
|
|
213
|
+
totalRecords,
|
|
214
|
+
isSearchRequest,
|
|
215
|
+
isFirstPage: page === 0
|
|
216
|
+
}, ['behavioral', 'operational']);
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
// Cache the page data for simple pagination (no search/filter/attributes/sort)
|
|
220
|
+
if (this.pageCache.canUseCache({
|
|
221
|
+
search,
|
|
222
|
+
filter,
|
|
223
|
+
attributes,
|
|
224
|
+
sortBy
|
|
225
|
+
}) && response.body?.data) {
|
|
226
|
+
const cacheKey = this.pageCache.buildCacheKey(orgId, page, pageSize);
|
|
227
|
+
this.pageCache.cachePage(cacheKey, response.body.data, response.body.meta);
|
|
228
|
+
_loggerProxy.default.log('Cached contact service queues for future requests', {
|
|
229
|
+
module: 'Queue',
|
|
230
|
+
method: _constants4.METHODS.GET_QUEUES,
|
|
231
|
+
data: {
|
|
232
|
+
cacheKey,
|
|
233
|
+
recordCount
|
|
234
|
+
}
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
return response.body;
|
|
238
|
+
} catch (error) {
|
|
239
|
+
const errorData = {
|
|
240
|
+
orgId,
|
|
241
|
+
error: error instanceof Error ? error.message : String(error),
|
|
242
|
+
isSearchRequest,
|
|
243
|
+
page,
|
|
244
|
+
pageSize
|
|
245
|
+
};
|
|
246
|
+
_loggerProxy.default.error('Failed to fetch contact service queues', {
|
|
247
|
+
module: 'Queue',
|
|
248
|
+
method: _constants4.METHODS.GET_QUEUES,
|
|
249
|
+
data: errorData,
|
|
250
|
+
error
|
|
251
|
+
});
|
|
252
|
+
|
|
253
|
+
// Track all failures for troubleshooting
|
|
254
|
+
this.metricsManager.trackEvent(_constants3.METRIC_EVENT_NAMES.QUEUE_FETCH_FAILED, errorData, ['behavioral', 'operational']);
|
|
255
|
+
throw error;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
exports.Queue = Queue;
|
|
260
|
+
var _default = exports.default = Queue;
|
|
261
|
+
//# sourceMappingURL=Queue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_types","require","_loggerProxy","_interopRequireDefault","_WebexRequest","_PageCache","_interopRequireWildcard","_MetricsManager","_constants","_constants2","_constants3","_constants4","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","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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"}
|
|
@@ -66,7 +66,6 @@ const METHODS = exports.METHODS = {
|
|
|
66
66
|
GET_TENANT_DATA: 'getTenantData',
|
|
67
67
|
GET_URL_MAPPING: 'getURLMapping',
|
|
68
68
|
GET_DIAL_PLAN_DATA: 'getDialPlanData',
|
|
69
|
-
GET_QUEUES: 'getQueues',
|
|
70
69
|
// Util methods
|
|
71
70
|
PARSE_AGENT_CONFIGS: 'parseAgentConfigs',
|
|
72
71
|
GET_URL_MAPPING_UTIL: 'getUrlMapping',
|
|
@@ -216,6 +215,41 @@ const endPointMap = exports.endPointMap = {
|
|
|
216
215
|
* const url = endPointMap.queueList('org123', 'page=0&pageSize=10');
|
|
217
216
|
* @ignore
|
|
218
217
|
*/
|
|
219
|
-
queueList: (orgId, queryParams) =>
|
|
218
|
+
queueList: (orgId, queryParams) => `/organization/${orgId}/v2/contact-service-queue?${queryParams}`,
|
|
219
|
+
/**
|
|
220
|
+
* Gets the endpoint for entry points list with custom query parameters.
|
|
221
|
+
* @param orgId - Organization ID.
|
|
222
|
+
* @param queryParams - Query parameters string.
|
|
223
|
+
* @returns The endpoint URL string.
|
|
224
|
+
* @public
|
|
225
|
+
* @example
|
|
226
|
+
* const url = endPointMap.entryPointList('org123', 'page=0&pageSize=10');
|
|
227
|
+
* @ignore
|
|
228
|
+
*/
|
|
229
|
+
entryPointList: (orgId, queryParams) => `/organization/${orgId}/v2/entry-point?${queryParams}`,
|
|
230
|
+
/**
|
|
231
|
+
* Gets the endpoint for address book entries with custom query parameters.
|
|
232
|
+
* @param orgId - Organization ID.
|
|
233
|
+
* @param addressBookId - Address book ID.
|
|
234
|
+
* @param queryParams - Query parameters string.
|
|
235
|
+
* @returns The endpoint URL string.
|
|
236
|
+
* @public
|
|
237
|
+
* @example
|
|
238
|
+
* const url = endPointMap.addressBookEntries('org123', 'book456', 'page=0&pageSize=10');
|
|
239
|
+
* @ignore
|
|
240
|
+
*/
|
|
241
|
+
addressBookEntries: (orgId, addressBookId, queryParams) => `/organization/${orgId}/v2/address-book/${addressBookId}/entry?${queryParams}`,
|
|
242
|
+
/**
|
|
243
|
+
* Gets the endpoint for outdial ANI entries with custom query parameters.
|
|
244
|
+
* @param orgId - Organization ID.
|
|
245
|
+
* @param outdialANI - Outdial ANI ID.
|
|
246
|
+
* @param queryParams - Query parameters string.
|
|
247
|
+
* @returns The endpoint URL string.
|
|
248
|
+
* @public
|
|
249
|
+
* @example
|
|
250
|
+
* const url = endPointMap.outdialAniEntries('org123', 'ani456', 'page=0&pageSize=10');
|
|
251
|
+
* @ignore
|
|
252
|
+
*/
|
|
253
|
+
outdialAniEntries: (orgId, outdialANI, queryParams) => `organization/${orgId}/v2/outdial-ani/${outdialANI}/entry${queryParams ? `?${queryParams}` : ''}`
|
|
220
254
|
};
|
|
221
255
|
//# sourceMappingURL=constants.js.map
|