@webex/contact-center 0.0.0-next.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.
Files changed (177) hide show
  1. package/README.md +81 -0
  2. package/__mocks__/workerMock.js +15 -0
  3. package/babel.config.js +15 -0
  4. package/dist/cc.js +1416 -0
  5. package/dist/cc.js.map +1 -0
  6. package/dist/config.js +72 -0
  7. package/dist/config.js.map +1 -0
  8. package/dist/constants.js +58 -0
  9. package/dist/constants.js.map +1 -0
  10. package/dist/index.js +142 -0
  11. package/dist/index.js.map +1 -0
  12. package/dist/logger-proxy.js +115 -0
  13. package/dist/logger-proxy.js.map +1 -0
  14. package/dist/metrics/MetricsManager.js +474 -0
  15. package/dist/metrics/MetricsManager.js.map +1 -0
  16. package/dist/metrics/behavioral-events.js +322 -0
  17. package/dist/metrics/behavioral-events.js.map +1 -0
  18. package/dist/metrics/constants.js +134 -0
  19. package/dist/metrics/constants.js.map +1 -0
  20. package/dist/services/WebCallingService.js +323 -0
  21. package/dist/services/WebCallingService.js.map +1 -0
  22. package/dist/services/agent/index.js +177 -0
  23. package/dist/services/agent/index.js.map +1 -0
  24. package/dist/services/agent/types.js +137 -0
  25. package/dist/services/agent/types.js.map +1 -0
  26. package/dist/services/config/Util.js +203 -0
  27. package/dist/services/config/Util.js.map +1 -0
  28. package/dist/services/config/constants.js +221 -0
  29. package/dist/services/config/constants.js.map +1 -0
  30. package/dist/services/config/index.js +607 -0
  31. package/dist/services/config/index.js.map +1 -0
  32. package/dist/services/config/types.js +334 -0
  33. package/dist/services/config/types.js.map +1 -0
  34. package/dist/services/constants.js +117 -0
  35. package/dist/services/constants.js.map +1 -0
  36. package/dist/services/core/Err.js +43 -0
  37. package/dist/services/core/Err.js.map +1 -0
  38. package/dist/services/core/GlobalTypes.js +6 -0
  39. package/dist/services/core/GlobalTypes.js.map +1 -0
  40. package/dist/services/core/Utils.js +126 -0
  41. package/dist/services/core/Utils.js.map +1 -0
  42. package/dist/services/core/WebexRequest.js +96 -0
  43. package/dist/services/core/WebexRequest.js.map +1 -0
  44. package/dist/services/core/aqm-reqs.js +246 -0
  45. package/dist/services/core/aqm-reqs.js.map +1 -0
  46. package/dist/services/core/constants.js +109 -0
  47. package/dist/services/core/constants.js.map +1 -0
  48. package/dist/services/core/types.js +6 -0
  49. package/dist/services/core/types.js.map +1 -0
  50. package/dist/services/core/websocket/WebSocketManager.js +187 -0
  51. package/dist/services/core/websocket/WebSocketManager.js.map +1 -0
  52. package/dist/services/core/websocket/connection-service.js +111 -0
  53. package/dist/services/core/websocket/connection-service.js.map +1 -0
  54. package/dist/services/core/websocket/keepalive.worker.js +94 -0
  55. package/dist/services/core/websocket/keepalive.worker.js.map +1 -0
  56. package/dist/services/core/websocket/types.js +6 -0
  57. package/dist/services/core/websocket/types.js.map +1 -0
  58. package/dist/services/index.js +78 -0
  59. package/dist/services/index.js.map +1 -0
  60. package/dist/services/task/AutoWrapup.js +88 -0
  61. package/dist/services/task/AutoWrapup.js.map +1 -0
  62. package/dist/services/task/TaskManager.js +369 -0
  63. package/dist/services/task/TaskManager.js.map +1 -0
  64. package/dist/services/task/constants.js +58 -0
  65. package/dist/services/task/constants.js.map +1 -0
  66. package/dist/services/task/contact.js +464 -0
  67. package/dist/services/task/contact.js.map +1 -0
  68. package/dist/services/task/dialer.js +60 -0
  69. package/dist/services/task/dialer.js.map +1 -0
  70. package/dist/services/task/index.js +1188 -0
  71. package/dist/services/task/index.js.map +1 -0
  72. package/dist/services/task/types.js +214 -0
  73. package/dist/services/task/types.js.map +1 -0
  74. package/dist/types/cc.d.ts +676 -0
  75. package/dist/types/config.d.ts +66 -0
  76. package/dist/types/constants.d.ts +45 -0
  77. package/dist/types/index.d.ts +178 -0
  78. package/dist/types/logger-proxy.d.ts +71 -0
  79. package/dist/types/metrics/MetricsManager.d.ts +223 -0
  80. package/dist/types/metrics/behavioral-events.d.ts +29 -0
  81. package/dist/types/metrics/constants.d.ts +127 -0
  82. package/dist/types/services/WebCallingService.d.ts +1 -0
  83. package/dist/types/services/agent/index.d.ts +46 -0
  84. package/dist/types/services/agent/types.d.ts +413 -0
  85. package/dist/types/services/config/Util.d.ts +19 -0
  86. package/dist/types/services/config/constants.d.ts +203 -0
  87. package/dist/types/services/config/index.d.ts +171 -0
  88. package/dist/types/services/config/types.d.ts +1113 -0
  89. package/dist/types/services/constants.d.ts +97 -0
  90. package/dist/types/services/core/Err.d.ts +119 -0
  91. package/dist/types/services/core/GlobalTypes.d.ts +33 -0
  92. package/dist/types/services/core/Utils.d.ts +36 -0
  93. package/dist/types/services/core/WebexRequest.d.ts +22 -0
  94. package/dist/types/services/core/aqm-reqs.d.ts +16 -0
  95. package/dist/types/services/core/constants.d.ts +85 -0
  96. package/dist/types/services/core/types.d.ts +47 -0
  97. package/dist/types/services/core/websocket/WebSocketManager.d.ts +34 -0
  98. package/dist/types/services/core/websocket/connection-service.d.ts +27 -0
  99. package/dist/types/services/core/websocket/keepalive.worker.d.ts +2 -0
  100. package/dist/types/services/core/websocket/types.d.ts +37 -0
  101. package/dist/types/services/index.d.ts +52 -0
  102. package/dist/types/services/task/AutoWrapup.d.ts +40 -0
  103. package/dist/types/services/task/TaskManager.d.ts +1 -0
  104. package/dist/types/services/task/constants.d.ts +46 -0
  105. package/dist/types/services/task/contact.d.ts +59 -0
  106. package/dist/types/services/task/dialer.d.ts +28 -0
  107. package/dist/types/services/task/index.d.ts +569 -0
  108. package/dist/types/services/task/types.d.ts +1041 -0
  109. package/dist/types/types.d.ts +452 -0
  110. package/dist/types/webex-config.d.ts +53 -0
  111. package/dist/types/webex.d.ts +7 -0
  112. package/dist/types.js +292 -0
  113. package/dist/types.js.map +1 -0
  114. package/dist/webex-config.js +60 -0
  115. package/dist/webex-config.js.map +1 -0
  116. package/dist/webex.js +99 -0
  117. package/dist/webex.js.map +1 -0
  118. package/jest.config.js +45 -0
  119. package/package.json +83 -0
  120. package/src/cc.ts +1618 -0
  121. package/src/config.ts +65 -0
  122. package/src/constants.ts +51 -0
  123. package/src/index.ts +220 -0
  124. package/src/logger-proxy.ts +110 -0
  125. package/src/metrics/MetricsManager.ts +512 -0
  126. package/src/metrics/behavioral-events.ts +332 -0
  127. package/src/metrics/constants.ts +135 -0
  128. package/src/services/WebCallingService.ts +351 -0
  129. package/src/services/agent/index.ts +149 -0
  130. package/src/services/agent/types.ts +440 -0
  131. package/src/services/config/Util.ts +261 -0
  132. package/src/services/config/constants.ts +249 -0
  133. package/src/services/config/index.ts +743 -0
  134. package/src/services/config/types.ts +1117 -0
  135. package/src/services/constants.ts +111 -0
  136. package/src/services/core/Err.ts +126 -0
  137. package/src/services/core/GlobalTypes.ts +34 -0
  138. package/src/services/core/Utils.ts +132 -0
  139. package/src/services/core/WebexRequest.ts +103 -0
  140. package/src/services/core/aqm-reqs.ts +272 -0
  141. package/src/services/core/constants.ts +106 -0
  142. package/src/services/core/types.ts +48 -0
  143. package/src/services/core/websocket/WebSocketManager.ts +196 -0
  144. package/src/services/core/websocket/connection-service.ts +142 -0
  145. package/src/services/core/websocket/keepalive.worker.js +88 -0
  146. package/src/services/core/websocket/types.ts +40 -0
  147. package/src/services/index.ts +71 -0
  148. package/src/services/task/AutoWrapup.ts +86 -0
  149. package/src/services/task/TaskManager.ts +420 -0
  150. package/src/services/task/constants.ts +52 -0
  151. package/src/services/task/contact.ts +429 -0
  152. package/src/services/task/dialer.ts +52 -0
  153. package/src/services/task/index.ts +1375 -0
  154. package/src/services/task/types.ts +1113 -0
  155. package/src/types.ts +639 -0
  156. package/src/webex-config.ts +54 -0
  157. package/src/webex.js +96 -0
  158. package/test/unit/spec/cc.ts +1985 -0
  159. package/test/unit/spec/metrics/MetricsManager.ts +491 -0
  160. package/test/unit/spec/metrics/behavioral-events.ts +102 -0
  161. package/test/unit/spec/services/WebCallingService.ts +416 -0
  162. package/test/unit/spec/services/agent/index.ts +65 -0
  163. package/test/unit/spec/services/config/index.ts +1035 -0
  164. package/test/unit/spec/services/core/Utils.ts +279 -0
  165. package/test/unit/spec/services/core/WebexRequest.ts +144 -0
  166. package/test/unit/spec/services/core/aqm-reqs.ts +570 -0
  167. package/test/unit/spec/services/core/websocket/WebSocketManager.ts +378 -0
  168. package/test/unit/spec/services/core/websocket/connection-service.ts +178 -0
  169. package/test/unit/spec/services/task/TaskManager.ts +1351 -0
  170. package/test/unit/spec/services/task/contact.ts +204 -0
  171. package/test/unit/spec/services/task/dialer.ts +157 -0
  172. package/test/unit/spec/services/task/index.ts +1474 -0
  173. package/tsconfig.json +6 -0
  174. package/typedoc.json +37 -0
  175. package/typedoc.md +240 -0
  176. package/umd/contact-center.min.js +3 -0
  177. package/umd/contact-center.min.js.map +1 -0
package/tsconfig.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "extends": "../../../tsconfig.json",
3
+ "include": [
4
+ "src"
5
+ ],
6
+ }
package/typedoc.json ADDED
@@ -0,0 +1,37 @@
1
+ {
2
+ "name": "Contact Center Plugin",
3
+ "entryPoints": ["src/index.ts"],
4
+ "readme": "typedoc.md",
5
+ "entryPointStrategy": "expand",
6
+ "tsconfig": "tsconfig.json",
7
+ "out": "../../../docs/wxcc",
8
+ "excludePrivate": false,
9
+ "excludeExternals": true,
10
+ "exclude": ["**/node_modules/**", "**/test/unit/spec/**/*.ts"],
11
+ "hideGenerator": true,
12
+ "theme": "default",
13
+ "cleanOutputDir": true,
14
+ "includeVersion": true,
15
+ "disableSources": false,
16
+ "sourceLinkTemplate": "https://github.com/webex/webex-js-sdk/blob/master/{path}#L{line}",
17
+ "validation": {
18
+ "notExported": true,
19
+ "invalidLink": true,
20
+ "notDocumented": true
21
+ },
22
+ "sort": ["kind", "visibility", "alphabetical"],
23
+ "categorizeByGroup": true,
24
+ "categoryOrder": ["Core", "Services", "Classes", "Interfaces", "Enum", "Types", "*"],
25
+ "navigationLinks": {
26
+ "Home": "/",
27
+ "NPM": "http://npmjs.com/package/@webex/contact-center",
28
+ "GitHub": "https://github.com/webex/webex-js-sdk"
29
+ },
30
+ "searchInComments": true,
31
+ "visibilityFilters": {
32
+ "protected": true,
33
+ "private": false,
34
+ "inherited": true,
35
+ "external": true
36
+ }
37
+ }
package/typedoc.md ADDED
@@ -0,0 +1,240 @@
1
+ # Webex JS SDK: Contact Center Plugin
2
+
3
+ Welcome to **@webex/contact-center**, a plugin for the [Webex JS SDK](https://github.com/webex/webex-js-sdk). This package enables integration with Webex Contact Center, providing APIs for agent management, task handling, and real-time communications.
4
+
5
+ ## Features
6
+
7
+ - Agent lifecycle (login, state, profile)
8
+ - Task operations (calls, chats, media)
9
+ - Event-driven updates
10
+ - WebRTC browser calling
11
+ - TypeScript support
12
+
13
+ ## Installation
14
+
15
+ ```bash
16
+ npm install @webex/contact-center
17
+ ```
18
+
19
+ ## Initialization
20
+
21
+ Initialize the Contact Center plugin with the Webex SDK. The `config` parameter is optional, but you can pass any of the following options for `cc`:
22
+
23
+ ```javascript
24
+ import Webex from '@webex/contact-center';
25
+
26
+ const config = {
27
+ credentials: {
28
+ access_token: 'your-access-token', // Required for authentication
29
+ },
30
+ logger: {
31
+ level: 'debug', // Enhanced logging for development
32
+ bufferLogLevel: 'log', // Log level for uploaded logs
33
+ },
34
+ cc: {
35
+ // Agent session management
36
+ allowMultiLogin: false, // Prevent multiple agent sessions
37
+ allowAutomatedRelogin: true, // Auto reconnect on disconnection
38
+
39
+ // Connection settings
40
+ clientType: 'WebexCCSDK', // Identify client type
41
+ isKeepAliveEnabled: false, // Websocket keep-alive
42
+ force: true, // Force connection parameters
43
+
44
+ // Metrics configuration
45
+ metrics: {
46
+ clientName: 'WEBEX_JS_SDK',
47
+ clientType: 'WebexCCSDK',
48
+ },
49
+ },
50
+ };
51
+
52
+ const webex = Webex.init({config}); // config is optional
53
+ const cc = webex.cc;
54
+
55
+ webex.once('ready', () => {
56
+ // Safe to use cc and other plugins here
57
+ });
58
+ ```
59
+
60
+ ## Core Classes
61
+
62
+ ### ContactCenter Class
63
+
64
+ The [ContactCenter](./classes/ContactCenter.html) class is your primary interface for agent operations. Key capabilities include:
65
+
66
+ 1. **Session Management**:
67
+
68
+ - Agent registration and initialization
69
+ - Connection management
70
+ - Event handling
71
+
72
+ 2. **Agent Operations**:
73
+
74
+ - Station login/logout
75
+ - State management (Available/Idle)
76
+ - Profile updates
77
+
78
+ 3. **Task Management**:
79
+ - Inbound task handling
80
+ - Outbound calling
81
+ - Queue operations
82
+
83
+ Example workflow:
84
+
85
+ ```javascript
86
+ // Initialize agent session
87
+ async function initializeAgent() {
88
+ try {
89
+ // 1. Register with contact center
90
+ const profile = await cc.register();
91
+
92
+ // 2. Login with browser-based calling
93
+ await cc.stationLogin({
94
+ teamId: profile.teams[0].teamId,
95
+ loginOption: 'BROWSER',
96
+ });
97
+
98
+ // 3. Set availability state
99
+ await cc.setAgentState({
100
+ state: 'Available',
101
+ auxCodeId: '0',
102
+ });
103
+
104
+ console.log('Agent initialized and ready');
105
+ } catch (error) {
106
+ console.error('Initialization failed:', error);
107
+ }
108
+ }
109
+ ```
110
+
111
+ ### Task Class
112
+
113
+ The [Task](./classes/Task.html) class represents an interaction (call, chat, etc.) and provides methods for:
114
+
115
+ 1. **Media Control**:
116
+
117
+ - Mute/unmute
118
+ - Hold/resume
119
+ - Recording controls
120
+
121
+ 2. **Call Flow**:
122
+
123
+ - Accept/decline tasks
124
+ - Transfer operations
125
+ - Consultation features
126
+
127
+ 3. **Task Completion**:
128
+ - End interaction
129
+ - Wrap-up handling
130
+ - Disposition updates
131
+
132
+ Example task handling:
133
+
134
+ ```javascript
135
+ // Set up task event handlers
136
+ cc.on('task:incoming', async (task) => {
137
+ try {
138
+ // 1. Accept the task
139
+ await task.accept();
140
+
141
+ // 2. Set up media handling (for voice)
142
+ task.on('task:media', (track) => {
143
+ const audio = document.getElementById('remote-audio');
144
+ audio.srcObject = new MediaStream([track]);
145
+ });
146
+
147
+ // 3. Handle task states
148
+ task.on('task:hold', () => {
149
+ console.log('Task placed on hold');
150
+ });
151
+
152
+ task.on('task:end', async () => {
153
+ if (task.data.wrapUpRequired) {
154
+ await task.wrapup({
155
+ auxCodeId: 'RESOLVED',
156
+ wrapUpReason: 'Customer issue resolved',
157
+ });
158
+ }
159
+ });
160
+ } catch (error) {
161
+ console.error('Task handling failed:', error);
162
+ }
163
+ });
164
+ ```
165
+
166
+ ## Configuration Reference
167
+
168
+ | Option | Type | Default | Description |
169
+ | -------------------------- | --------- | ---------------- | ---------------------------------------------------- |
170
+ | `credentials.access_token` | `string` | Required | Webex authentication token |
171
+ | `logger.level` | `string` | `'info'` | Log level (`'debug'`, `'info'`, `'warn'`, `'error'`) |
172
+ | `logger.bufferLogLevel` | `string` | `'log'` | Buffered logging level for diagnostics |
173
+ | `cc.allowMultiLogin` | `boolean` | `false` | Allow multiple concurrent logins |
174
+ | `cc.allowAutomatedRelogin` | `boolean` | `true` | Auto-reconnect on connection loss |
175
+ | `cc.clientType` | `string` | `'WebexCCSDK'` | Client identifier |
176
+ | `cc.isKeepAliveEnabled` | `boolean` | `false` | Enable websocket keep-alive |
177
+ | `cc.force` | `boolean` | `true` | Force connection parameters |
178
+ | `cc.metrics.clientName` | `string` | `'WEBEX_JS_SDK'` | Client name for metrics |
179
+ | `cc.metrics.clientType` | `string` | `'WebexCCSDK'` | Client type for metrics |
180
+
181
+ ## Events
182
+
183
+ The SDK uses an event-driven model to notify about various state changes:
184
+
185
+ ### Agent Events
186
+
187
+ - `agent:stateChange` - Agent's state has changed (Available, Idle, etc.)
188
+ - `agent:stateChangeSuccess` - Agent state change was successful
189
+ - `agent:stateChangeFailed` - Agent state change failed
190
+ - `agent:stationLoginSuccess` - Agent login was successful
191
+ - `agent:stationLoginFailed` - Agent login failed
192
+ - `agent:logoutSuccess` - Agent logout was successful
193
+ - `agent:logoutFailed` - Agent logout failed
194
+ - `agent:dnRegistered` - Agent's device number registered
195
+ - `agent:multiLogin` - Multiple logins detected
196
+ - `agent:reloginSuccess` - Agent relogin was successful
197
+
198
+ ### Task Events
199
+
200
+ - `task:incoming` - New task is being offered
201
+ - `task:assigned` - Task assigned to agent
202
+ - `task:unassigned` - Task unassigned from agent
203
+ - `task:media` - Media track received (voice, etc.)
204
+ - `task:hold` - Task placed on hold
205
+ - `task:unhold` - Task resumed from hold
206
+ - `task:end` - Task completed
207
+ - `task:ended` - Task/call has ended
208
+ - `task:wrapup` - Task in wrap-up state
209
+ - `task:wrappedup` - Task wrap-up completed
210
+ - `task:rejected` - Task was rejected
211
+ - `task:hydrate` - Task data has been updated
212
+ - `task:offerContact` - Contact offered to agent
213
+ - `task:consultEnd` - Consultation ended
214
+ - `task:consultQueueCancelled` - Queue consultation cancelled
215
+ - `task:consultQueueFailed` - Queue consultation failed
216
+ - `task:consultAccepted` - Consultation accepted
217
+ - `task:consulting` - Consulting in progress
218
+ - `task:consultCreated` - Consultation created
219
+ - `task:offerConsult` - Consultation offered
220
+ - `task:established` - Task/call has been connected
221
+ - `task:error` - An error occurred during task handling
222
+ - `task:ringing` - Task/call is ringing
223
+ - `task:recordingPaused` - Recording paused
224
+ - `task:recordingPauseFailed` - Failed to pause recording
225
+ - `task:recordingResumed` - Recording resumed
226
+ - `task:recordingResumeFailed` - Failed to resume recording
227
+
228
+ ### Media Events
229
+
230
+ - `task:media` - Media track received
231
+ - `task:hold` - Task placed on hold
232
+ - `task:unhold` - Task resumed
233
+
234
+ ## Support
235
+
236
+ For issues and feature requests, please visit the [GitHub repository](https://github.com/webex/webex-js-sdk/issues).
237
+
238
+ For access token generation and authentication details, refer to the [Webex Developer Portal](https://developer.webex.com/meeting/docs/getting-started).
239
+
240
+ ---