You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: packages/contact-center/task/ai-docs/widgets/OutdialCall/ARCHITECTURE.md
+75Lines changed: 75 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -130,6 +130,81 @@ sequenceDiagram
130
130
end
131
131
```
132
132
133
+
### Post-Dial Flow by Login Mode
134
+
135
+
After `cc.startOutdial()` succeeds, the platform establishes a first-leg call to the agent before dialing the customer (second leg). How the first leg connects depends on the agent's login mode.
136
+
137
+
#### Desktop Mode -- Customer Rings Directly
138
+
139
+
In Desktop mode, the agent is auto-connected. The customer's phone rings immediately, and once the customer answers, the agent reaches ENGAGED state.
140
+
141
+
```mermaid
142
+
sequenceDiagram
143
+
participant A as Agent
144
+
participant W as Widget / Store
145
+
participant P as CC Platform
146
+
participant C as Customer
147
+
148
+
A->>W: Click dial button
149
+
W->>P: cc.startOutdial(destination, origin)
150
+
P-->>W: TaskResponse
151
+
P->>C: Customer's phone rings (second leg)
152
+
C->>P: Customer answers
153
+
P->>W: Agent auto-connects → ENGAGED
154
+
```
155
+
156
+
The agent never needs to accept the incoming task. The Accept button is visible but disabled during the brief popup.
157
+
158
+
#### Extension Mode -- Manual Answer Required
159
+
160
+
The first-leg call rings on the agent's Webex Calling extension. The agent must answer it before the platform dials the customer.
161
+
162
+
```mermaid
163
+
sequenceDiagram
164
+
participant A as Agent
165
+
participant W as Widget / Store
166
+
participant E as Webex Calling Extension
167
+
participant P as CC Platform
168
+
participant C as Customer
169
+
170
+
A->>W: Click dial button
171
+
W->>P: cc.startOutdial(destination, origin)
172
+
P-->>W: TaskResponse
173
+
P->>E: First-leg rings on extension
174
+
Note over E: Answer button becomes enabled
175
+
A->>E: Answer call on extension
176
+
P->>C: Customer's phone rings (second leg)
177
+
C->>P: Customer answers
178
+
P->>W: Agent state → ENGAGED
179
+
```
180
+
181
+
The agent must answer the extension call before the customer is dialed.
182
+
183
+
#### Dial Number (DN) Mode -- Manual Answer Required
184
+
185
+
The first-leg call rings on the agent's DN phone. The agent must answer it before the platform dials the customer.
186
+
187
+
```mermaid
188
+
sequenceDiagram
189
+
participant A as Agent
190
+
participant W as Widget / Store
191
+
participant D as Agent DN Phone
192
+
participant P as CC Platform
193
+
participant C as Customer
194
+
195
+
A->>W: Click dial button
196
+
W->>P: cc.startOutdial(destination, origin)
197
+
P-->>W: TaskResponse
198
+
P->>D: First-leg rings on DN phone
199
+
Note over D: Answer button becomes enabled
200
+
A->>D: Answer call on DN phone
201
+
P->>C: Customer's phone rings (second leg)
202
+
C->>P: Customer answers
203
+
P->>W: Agent state → ENGAGED
204
+
```
205
+
206
+
The agent must answer the DN phone call before the customer is dialed.
|`setupForMultipartyConference()`| Sets up 4 agents + caller for conference tests (agent1–4 pages + callerPage) |
236
241
|`setupMultiSessionPage()`| Targeted helper to initialize only multi-session page when needed |
237
242
@@ -263,6 +268,7 @@ When enabled by setup config/method, these page properties are created and avail
263
268
|`taskControlUtils.ts`|`holdCallToggle`, `recordCallToggle`, `isCallHeld`, `endTask`, `verifyHoldTimer`, `verifyHoldButtonIcon`, `verifyRecordButtonIcon`, `setupConsoleLogging`, `verifyHoldLogs`, `verifyRecordingLogs`, `verifyEndLogs`, `verifyRemoteAudioTracks`| Basic call control actions + callback/event log assertions. `endTask` now stays generic and assumes the caller has already restored the page to a normal endable state. |
264
269
|`advancedTaskControlUtils.ts`|`consultOrTransfer`, `cancelConsult`, `waitForPrimaryCallAfterConsult`, `setupAdvancedConsoleLogging`, `verifyTransferSuccessLogs`, `verifyConsultStartSuccessLogs`, `verifyConsultEndSuccessLogs`, `verifyConsultTransferredLogs`, `ACTIVE_CONSULT_CONTROL_TEST_IDS`| Consult/transfer operations + advanced callback/event log assertions. Includes consult-state polling and post-consult primary-call restoration before generic end-task operations. |
|`helperUtils.ts`|`handleStrayTasks`, `pageSetup`, `waitForState`, `waitForStateLogs`, `waitForWebSocketDisconnection`, `waitForWebSocketReconnection`, `clearPendingCallAndWrapup`, `dismissOverlays`| Shared setup/cleanup/state polling/network-watch helpers. `waitForState` polls visible state text (`state-name`) to align with `verifyCurrentState`. `pageSetup` includes one bounded station logout/re-login recovery if `state-select` is still missing after login. `handleStrayTasks` handles exit-conference, dual call control groups (iterates all end-call buttons to find enabled one), cancel-consult with switch-leg fallback. |
268
274
|`conferenceUtils.ts`|`cleanupConferenceState`, `startBaselineCallOnAgent1`, `consultAgentAndAcceptCall`, `consultQueueAndAcceptCall`, `mergeConsultIntoConference`, `transferConsultAndSubmitWrapup`, `toggleConferenceLegIfSwitchAvailable`, `exitConferenceParticipantAndWrapup`, `endConferenceTaskAndWrapup`| Shared conference helpers used by Set 7, Set 8, and Set 9 to keep call setup/cleanup and consult-transfer flows consistent and reusable. Conference callers now choose explicit exit-vs-end behavior instead of using one mixed helper. |
@@ -432,4 +438,4 @@ After a call ends, the Make Call button on the caller page may stay disabled. Cl
0 commit comments