@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.
- package/README.md +81 -0
- package/__mocks__/workerMock.js +15 -0
- package/babel.config.js +15 -0
- package/dist/cc.js +1416 -0
- package/dist/cc.js.map +1 -0
- package/dist/config.js +72 -0
- package/dist/config.js.map +1 -0
- package/dist/constants.js +58 -0
- package/dist/constants.js.map +1 -0
- package/dist/index.js +142 -0
- package/dist/index.js.map +1 -0
- package/dist/logger-proxy.js +115 -0
- package/dist/logger-proxy.js.map +1 -0
- package/dist/metrics/MetricsManager.js +474 -0
- package/dist/metrics/MetricsManager.js.map +1 -0
- package/dist/metrics/behavioral-events.js +322 -0
- package/dist/metrics/behavioral-events.js.map +1 -0
- package/dist/metrics/constants.js +134 -0
- package/dist/metrics/constants.js.map +1 -0
- package/dist/services/WebCallingService.js +323 -0
- package/dist/services/WebCallingService.js.map +1 -0
- package/dist/services/agent/index.js +177 -0
- package/dist/services/agent/index.js.map +1 -0
- package/dist/services/agent/types.js +137 -0
- package/dist/services/agent/types.js.map +1 -0
- package/dist/services/config/Util.js +203 -0
- package/dist/services/config/Util.js.map +1 -0
- package/dist/services/config/constants.js +221 -0
- package/dist/services/config/constants.js.map +1 -0
- package/dist/services/config/index.js +607 -0
- package/dist/services/config/index.js.map +1 -0
- package/dist/services/config/types.js +334 -0
- package/dist/services/config/types.js.map +1 -0
- package/dist/services/constants.js +117 -0
- package/dist/services/constants.js.map +1 -0
- package/dist/services/core/Err.js +43 -0
- package/dist/services/core/Err.js.map +1 -0
- package/dist/services/core/GlobalTypes.js +6 -0
- package/dist/services/core/GlobalTypes.js.map +1 -0
- package/dist/services/core/Utils.js +126 -0
- package/dist/services/core/Utils.js.map +1 -0
- package/dist/services/core/WebexRequest.js +96 -0
- package/dist/services/core/WebexRequest.js.map +1 -0
- package/dist/services/core/aqm-reqs.js +246 -0
- package/dist/services/core/aqm-reqs.js.map +1 -0
- package/dist/services/core/constants.js +109 -0
- package/dist/services/core/constants.js.map +1 -0
- package/dist/services/core/types.js +6 -0
- package/dist/services/core/types.js.map +1 -0
- package/dist/services/core/websocket/WebSocketManager.js +187 -0
- package/dist/services/core/websocket/WebSocketManager.js.map +1 -0
- package/dist/services/core/websocket/connection-service.js +111 -0
- package/dist/services/core/websocket/connection-service.js.map +1 -0
- package/dist/services/core/websocket/keepalive.worker.js +94 -0
- package/dist/services/core/websocket/keepalive.worker.js.map +1 -0
- package/dist/services/core/websocket/types.js +6 -0
- package/dist/services/core/websocket/types.js.map +1 -0
- package/dist/services/index.js +78 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/task/AutoWrapup.js +88 -0
- package/dist/services/task/AutoWrapup.js.map +1 -0
- package/dist/services/task/TaskManager.js +369 -0
- package/dist/services/task/TaskManager.js.map +1 -0
- package/dist/services/task/constants.js +58 -0
- package/dist/services/task/constants.js.map +1 -0
- package/dist/services/task/contact.js +464 -0
- package/dist/services/task/contact.js.map +1 -0
- package/dist/services/task/dialer.js +60 -0
- package/dist/services/task/dialer.js.map +1 -0
- package/dist/services/task/index.js +1188 -0
- package/dist/services/task/index.js.map +1 -0
- package/dist/services/task/types.js +214 -0
- package/dist/services/task/types.js.map +1 -0
- package/dist/types/cc.d.ts +676 -0
- package/dist/types/config.d.ts +66 -0
- package/dist/types/constants.d.ts +45 -0
- package/dist/types/index.d.ts +178 -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 +127 -0
- package/dist/types/services/WebCallingService.d.ts +1 -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 +19 -0
- package/dist/types/services/config/constants.d.ts +203 -0
- package/dist/types/services/config/index.d.ts +171 -0
- package/dist/types/services/config/types.d.ts +1113 -0
- package/dist/types/services/constants.d.ts +97 -0
- package/dist/types/services/core/Err.d.ts +119 -0
- package/dist/types/services/core/GlobalTypes.d.ts +33 -0
- package/dist/types/services/core/Utils.d.ts +36 -0
- package/dist/types/services/core/WebexRequest.d.ts +22 -0
- package/dist/types/services/core/aqm-reqs.d.ts +16 -0
- package/dist/types/services/core/constants.d.ts +85 -0
- package/dist/types/services/core/types.d.ts +47 -0
- package/dist/types/services/core/websocket/WebSocketManager.d.ts +34 -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 +52 -0
- package/dist/types/services/task/AutoWrapup.d.ts +40 -0
- package/dist/types/services/task/TaskManager.d.ts +1 -0
- package/dist/types/services/task/constants.d.ts +46 -0
- package/dist/types/services/task/contact.d.ts +59 -0
- package/dist/types/services/task/dialer.d.ts +28 -0
- package/dist/types/services/task/index.d.ts +569 -0
- package/dist/types/services/task/types.d.ts +1041 -0
- package/dist/types/types.d.ts +452 -0
- package/dist/types/webex-config.d.ts +53 -0
- package/dist/types/webex.d.ts +7 -0
- package/dist/types.js +292 -0
- package/dist/types.js.map +1 -0
- package/dist/webex-config.js +60 -0
- package/dist/webex-config.js.map +1 -0
- package/dist/webex.js +99 -0
- package/dist/webex.js.map +1 -0
- package/jest.config.js +45 -0
- package/package.json +83 -0
- package/src/cc.ts +1618 -0
- package/src/config.ts +65 -0
- package/src/constants.ts +51 -0
- package/src/index.ts +220 -0
- package/src/logger-proxy.ts +110 -0
- package/src/metrics/MetricsManager.ts +512 -0
- package/src/metrics/behavioral-events.ts +332 -0
- package/src/metrics/constants.ts +135 -0
- package/src/services/WebCallingService.ts +351 -0
- package/src/services/agent/index.ts +149 -0
- package/src/services/agent/types.ts +440 -0
- package/src/services/config/Util.ts +261 -0
- package/src/services/config/constants.ts +249 -0
- package/src/services/config/index.ts +743 -0
- package/src/services/config/types.ts +1117 -0
- package/src/services/constants.ts +111 -0
- package/src/services/core/Err.ts +126 -0
- package/src/services/core/GlobalTypes.ts +34 -0
- package/src/services/core/Utils.ts +132 -0
- package/src/services/core/WebexRequest.ts +103 -0
- package/src/services/core/aqm-reqs.ts +272 -0
- package/src/services/core/constants.ts +106 -0
- package/src/services/core/types.ts +48 -0
- package/src/services/core/websocket/WebSocketManager.ts +196 -0
- package/src/services/core/websocket/connection-service.ts +142 -0
- package/src/services/core/websocket/keepalive.worker.js +88 -0
- package/src/services/core/websocket/types.ts +40 -0
- package/src/services/index.ts +71 -0
- package/src/services/task/AutoWrapup.ts +86 -0
- package/src/services/task/TaskManager.ts +420 -0
- package/src/services/task/constants.ts +52 -0
- package/src/services/task/contact.ts +429 -0
- package/src/services/task/dialer.ts +52 -0
- package/src/services/task/index.ts +1375 -0
- package/src/services/task/types.ts +1113 -0
- package/src/types.ts +639 -0
- package/src/webex-config.ts +54 -0
- package/src/webex.js +96 -0
- package/test/unit/spec/cc.ts +1985 -0
- package/test/unit/spec/metrics/MetricsManager.ts +491 -0
- package/test/unit/spec/metrics/behavioral-events.ts +102 -0
- package/test/unit/spec/services/WebCallingService.ts +416 -0
- package/test/unit/spec/services/agent/index.ts +65 -0
- package/test/unit/spec/services/config/index.ts +1035 -0
- package/test/unit/spec/services/core/Utils.ts +279 -0
- package/test/unit/spec/services/core/WebexRequest.ts +144 -0
- package/test/unit/spec/services/core/aqm-reqs.ts +570 -0
- package/test/unit/spec/services/core/websocket/WebSocketManager.ts +378 -0
- package/test/unit/spec/services/core/websocket/connection-service.ts +178 -0
- package/test/unit/spec/services/task/TaskManager.ts +1351 -0
- package/test/unit/spec/services/task/contact.ts +204 -0
- package/test/unit/spec/services/task/dialer.ts +157 -0
- package/test/unit/spec/services/task/index.ts +1474 -0
- package/tsconfig.json +6 -0
- package/typedoc.json +37 -0
- package/typedoc.md +240 -0
- package/umd/contact-center.min.js +3 -0
- package/umd/contact-center.min.js.map +1 -0
package/tsconfig.json
ADDED
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
|
+
---
|