@webex/contact-center 3.12.0-llmrefactor.1 → 3.12.0-llmrefactor.11

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 (198) hide show
  1. package/.sdd/manifest.json +7 -5
  2. package/ai-docs/ARCHITECTURE.md +1 -1
  3. package/ai-docs/CONTRACTS.md +8 -3
  4. package/ai-docs/SECURITY.md +1 -1
  5. package/ai-docs/contact-center-spec.md +22 -4
  6. package/ai-docs/features/consult-transfer-list-policy/spec/feature-spec.md +362 -0
  7. package/dist/cc.js +544 -12
  8. package/dist/cc.js.map +1 -1
  9. package/dist/config.js +7 -0
  10. package/dist/config.js.map +1 -1
  11. package/dist/constants.js +10 -2
  12. package/dist/constants.js.map +1 -1
  13. package/dist/index.js.map +1 -1
  14. package/dist/metrics/MetricsManager.js +16 -0
  15. package/dist/metrics/MetricsManager.js.map +1 -1
  16. package/dist/metrics/behavioral-events.js +104 -0
  17. package/dist/metrics/behavioral-events.js.map +1 -1
  18. package/dist/metrics/constants.js +18 -0
  19. package/dist/metrics/constants.js.map +1 -1
  20. package/dist/services/AddressBook.js +18 -15
  21. package/dist/services/AddressBook.js.map +1 -1
  22. package/dist/services/AnswerCallOnWebexService.js +202 -0
  23. package/dist/services/AnswerCallOnWebexService.js.map +1 -0
  24. package/dist/services/EntryPoint.js +46 -68
  25. package/dist/services/EntryPoint.js.map +1 -1
  26. package/dist/services/Queue.js +27 -22
  27. package/dist/services/Queue.js.map +1 -1
  28. package/dist/services/WebexCrossClientService.js +222 -0
  29. package/dist/services/WebexCrossClientService.js.map +1 -0
  30. package/dist/services/WxAppTelephonyMercurySync.js +108 -0
  31. package/dist/services/WxAppTelephonyMercurySync.js.map +1 -0
  32. package/dist/services/config/Util.js +3 -0
  33. package/dist/services/config/Util.js.map +1 -1
  34. package/dist/services/config/constants.js +10 -6
  35. package/dist/services/config/constants.js.map +1 -1
  36. package/dist/services/config/types.js +4 -0
  37. package/dist/services/config/types.js.map +1 -1
  38. package/dist/services/core/Err.js.map +1 -1
  39. package/dist/services/core/WebexRequest.js +6 -2
  40. package/dist/services/core/WebexRequest.js.map +1 -1
  41. package/dist/services/core/aqm-reqs.js +28 -14
  42. package/dist/services/core/aqm-reqs.js.map +1 -1
  43. package/dist/services/core/types.js.map +1 -1
  44. package/dist/services/task/Task.js +73 -7
  45. package/dist/services/task/Task.js.map +1 -1
  46. package/dist/services/task/TaskFactory.js +8 -4
  47. package/dist/services/task/TaskFactory.js.map +1 -1
  48. package/dist/services/task/TaskManager.js +490 -21
  49. package/dist/services/task/TaskManager.js.map +1 -1
  50. package/dist/services/task/WebexCallingUtils.js +70 -0
  51. package/dist/services/task/WebexCallingUtils.js.map +1 -0
  52. package/dist/services/task/constants.js +4 -1
  53. package/dist/services/task/constants.js.map +1 -1
  54. package/dist/services/task/contact.js +29 -0
  55. package/dist/services/task/contact.js.map +1 -1
  56. package/dist/services/task/digital/Digital.js +3 -2
  57. package/dist/services/task/digital/Digital.js.map +1 -1
  58. package/dist/services/task/state-machine/TaskStateMachine.js +162 -53
  59. package/dist/services/task/state-machine/TaskStateMachine.js.map +1 -1
  60. package/dist/services/task/state-machine/actions.js +6 -1
  61. package/dist/services/task/state-machine/actions.js.map +1 -1
  62. package/dist/services/task/state-machine/guards.js +7 -10
  63. package/dist/services/task/state-machine/guards.js.map +1 -1
  64. package/dist/services/task/state-machine/types.js.map +1 -1
  65. package/dist/services/task/state-machine/uiControlsComputer.js +118 -18
  66. package/dist/services/task/state-machine/uiControlsComputer.js.map +1 -1
  67. package/dist/services/task/types.js +16 -1
  68. package/dist/services/task/types.js.map +1 -1
  69. package/dist/services/task/voice/Voice.js +456 -15
  70. package/dist/services/task/voice/Voice.js.map +1 -1
  71. package/dist/services/task/voice/WebRTC.js +4 -1
  72. package/dist/services/task/voice/WebRTC.js.map +1 -1
  73. package/dist/services/task/voice/wxAppVoiceMethods.js +354 -0
  74. package/dist/services/task/voice/wxAppVoiceMethods.js.map +1 -0
  75. package/dist/services/wxAppDiagnosticLogging.js +122 -0
  76. package/dist/services/wxAppDiagnosticLogging.js.map +1 -0
  77. package/dist/services/wxAppTelephonyUtils.js +19 -0
  78. package/dist/services/wxAppTelephonyUtils.js.map +1 -0
  79. package/dist/types/cc.d.ts +78 -4
  80. package/dist/types/config.d.ts +7 -0
  81. package/dist/types/constants.d.ts +8 -0
  82. package/dist/types/index.d.ts +3 -1
  83. package/dist/types/metrics/MetricsManager.d.ts +6 -0
  84. package/dist/types/metrics/constants.d.ts +17 -0
  85. package/dist/types/services/AddressBook.d.ts +2 -1
  86. package/dist/types/services/AnswerCallOnWebexService.d.ts +38 -0
  87. package/dist/types/services/EntryPoint.d.ts +7 -5
  88. package/dist/types/services/Queue.d.ts +5 -3
  89. package/dist/types/services/WebexCrossClientService.d.ts +32 -0
  90. package/dist/types/services/WxAppTelephonyMercurySync.d.ts +28 -0
  91. package/dist/types/services/config/constants.d.ts +8 -5
  92. package/dist/types/services/config/types.d.ts +17 -4
  93. package/dist/types/services/core/Err.d.ts +2 -0
  94. package/dist/types/services/core/WebexRequest.d.ts +1 -0
  95. package/dist/types/services/core/types.d.ts +2 -0
  96. package/dist/types/services/task/Task.d.ts +20 -2
  97. package/dist/types/services/task/TaskFactory.d.ts +2 -1
  98. package/dist/types/services/task/WebexCallingUtils.d.ts +11 -0
  99. package/dist/types/services/task/constants.d.ts +3 -0
  100. package/dist/types/services/task/contact.d.ts +4 -0
  101. package/dist/types/services/task/digital/Digital.d.ts +2 -2
  102. package/dist/types/services/task/state-machine/TaskStateMachine.d.ts +304 -56
  103. package/dist/types/services/task/state-machine/guards.d.ts +6 -5
  104. package/dist/types/services/task/state-machine/types.d.ts +9 -1
  105. package/dist/types/services/task/types.d.ts +81 -4
  106. package/dist/types/services/task/voice/Voice.d.ts +52 -9
  107. package/dist/types/services/task/voice/WebRTC.d.ts +2 -2
  108. package/dist/types/services/task/voice/wxAppVoiceMethods.d.ts +55 -0
  109. package/dist/types/services/wxAppDiagnosticLogging.d.ts +51 -0
  110. package/dist/types/services/wxAppTelephonyUtils.d.ts +5 -0
  111. package/dist/types/types.d.ts +14 -8
  112. package/dist/types/utils/PageCache.d.ts +20 -3
  113. package/dist/types.js +7 -2
  114. package/dist/types.js.map +1 -1
  115. package/dist/utils/PageCache.js +19 -5
  116. package/dist/utils/PageCache.js.map +1 -1
  117. package/dist/webex.js +1 -1
  118. package/package.json +8 -8
  119. package/src/cc.ts +657 -12
  120. package/src/config.ts +7 -0
  121. package/src/constants.ts +8 -0
  122. package/src/index.ts +2 -0
  123. package/src/metrics/MetricsManager.ts +16 -0
  124. package/src/metrics/ai-docs/metrics-spec.md +78 -10
  125. package/src/metrics/behavioral-events.ts +106 -0
  126. package/src/metrics/constants.ts +20 -0
  127. package/src/services/AddressBook.ts +17 -6
  128. package/src/services/AnswerCallOnWebexService.ts +239 -0
  129. package/src/services/EntryPoint.ts +59 -60
  130. package/src/services/Queue.ts +29 -12
  131. package/src/services/WebexCrossClientService.ts +293 -0
  132. package/src/services/WxAppTelephonyMercurySync.ts +142 -0
  133. package/src/services/agent/ai-docs/agent-spec.md +1 -0
  134. package/src/services/ai-docs/AGENTS.md +10 -10
  135. package/src/services/ai-docs/services-spec.md +6 -1
  136. package/src/services/config/Util.ts +3 -0
  137. package/src/services/config/ai-docs/AGENTS.md +1 -1
  138. package/src/services/config/ai-docs/ARCHITECTURE.md +2 -2
  139. package/src/services/config/ai-docs/config-spec.md +6 -0
  140. package/src/services/config/constants.ts +10 -6
  141. package/src/services/config/types.ts +16 -4
  142. package/src/services/core/Err.ts +1 -0
  143. package/src/services/core/WebexRequest.ts +3 -1
  144. package/src/services/core/ai-docs/core-spec.md +5 -1
  145. package/src/services/core/aqm-reqs.ts +30 -15
  146. package/src/services/core/types.ts +2 -0
  147. package/src/services/task/Task.ts +79 -8
  148. package/src/services/task/TaskFactory.ts +8 -3
  149. package/src/services/task/TaskManager.ts +716 -17
  150. package/src/services/task/WebexCallingUtils.ts +136 -0
  151. package/src/services/task/ai-docs/ARCHITECTURE.md +1 -0
  152. package/src/services/task/ai-docs/task-spec.md +156 -3
  153. package/src/services/task/constants.ts +3 -0
  154. package/src/services/task/contact.ts +30 -0
  155. package/src/services/task/digital/Digital.ts +4 -2
  156. package/src/services/task/state-machine/TaskStateMachine.ts +235 -81
  157. package/src/services/task/state-machine/actions.ts +5 -2
  158. package/src/services/task/state-machine/ai-docs/AGENTS.md +6 -4
  159. package/src/services/task/state-machine/ai-docs/ARCHITECTURE.md +35 -16
  160. package/src/services/task/state-machine/ai-docs/task-state-machine-spec.md +103 -33
  161. package/src/services/task/state-machine/guards.ts +7 -10
  162. package/src/services/task/state-machine/types.ts +16 -1
  163. package/src/services/task/state-machine/uiControlsComputer.ts +206 -32
  164. package/src/services/task/types.ts +114 -4
  165. package/src/services/task/voice/Voice.ts +595 -14
  166. package/src/services/task/voice/WebRTC.ts +5 -1
  167. package/src/services/task/voice/wxAppVoiceMethods.ts +516 -0
  168. package/src/services/wxAppDiagnosticLogging.ts +174 -0
  169. package/src/services/wxAppTelephonyUtils.ts +14 -0
  170. package/src/types.ts +33 -9
  171. package/src/utils/AGENTS.md +21 -10
  172. package/src/utils/PageCache.ts +38 -5
  173. package/src/utils/ai-docs/utils-spec.md +21 -11
  174. package/test/unit/spec/cc.ts +1522 -19
  175. package/test/unit/spec/metrics/MetricsManager.ts +25 -0
  176. package/test/unit/spec/metrics/behavioral-events.ts +60 -0
  177. package/test/unit/spec/services/AddressBook.ts +37 -6
  178. package/test/unit/spec/services/AnswerCallOnWebexService.ts +264 -0
  179. package/test/unit/spec/services/EntryPoint.ts +87 -40
  180. package/test/unit/spec/services/Queue.ts +123 -12
  181. package/test/unit/spec/services/WebexCrossClientService.ts +467 -0
  182. package/test/unit/spec/services/WxAppTelephonyMercurySync.ts +136 -0
  183. package/test/unit/spec/services/config/Util.ts +85 -0
  184. package/test/unit/spec/services/core/WebexRequest.ts +3 -1
  185. package/test/unit/spec/services/core/aqm-reqs.ts +113 -1
  186. package/test/unit/spec/services/task/Task.ts +274 -6
  187. package/test/unit/spec/services/task/TaskFactory.ts +39 -2
  188. package/test/unit/spec/services/task/TaskManager.ts +1717 -9
  189. package/test/unit/spec/services/task/WebexCallingUtils.ts +153 -0
  190. package/test/unit/spec/services/task/contact.ts +33 -0
  191. package/test/unit/spec/services/task/state-machine/TaskStateMachine.ts +1485 -109
  192. package/test/unit/spec/services/task/state-machine/guards.ts +210 -8
  193. package/test/unit/spec/services/task/state-machine/uiControlsComputer.ts +445 -7
  194. package/test/unit/spec/services/task/voice/Voice.ts +1412 -0
  195. package/test/unit/spec/services/task/voice/wxAppVoiceMethods.ts +603 -0
  196. package/test/unit/spec/services/wxAppDiagnosticLogging.ts +143 -0
  197. package/umd/contact-center.min.js +2 -2
  198. package/umd/contact-center.min.js.map +1 -1
@@ -163,6 +163,28 @@ export default class ContactCenter extends WebexPlugin implements IContactCenter
163
163
  * @private
164
164
  */
165
165
  private webCallingService;
166
+ /**
167
+ * REST telephony for wxApp thick-client answer (WXCC-6026)
168
+ * @private
169
+ */
170
+ private answerCallOnWebexService;
171
+ /**
172
+ * usersub cross-client state for Webex App toast suppression
173
+ * @private
174
+ */
175
+ private webexCrossClientService;
176
+ /**
177
+ * Mercury telephony mute sync for wxApp thick-client answer
178
+ * @private
179
+ */
180
+ private wxAppTelephonyMercurySync;
181
+ /** True when wxApp mute sync opened Mercury (Extension/DN-only profiles). */
182
+ private wxAppMercuryConnectedByCc;
183
+ /** True when wxApp mute sync registered the Webex device. */
184
+ private wxAppDeviceRegisteredByCc;
185
+ private static readonly WXAPP_FALSE_PUBLISH_RETRY_DELAY_MS;
186
+ private static readonly WXAPP_FALSE_PUBLISH_MAX_RETRIES;
187
+ private wxAppFalsePublishRetryTimer?;
166
188
  /**
167
189
  * Core service managers for Contact Center operations
168
190
  * Includes agent, connection, and configuration services
@@ -574,6 +596,58 @@ export default class ContactCenter extends WebexPlugin implements IContactCenter
574
596
  * @private
575
597
  */
576
598
  private validatePluginConfig;
599
+ /**
600
+ * Whether wxApp thick-client answer is enabled for this SDK instance.
601
+ * @public
602
+ */
603
+ isWxBetterTogetherEnabled(): boolean;
604
+ /**
605
+ * Current station login option (Extension, Dial Number, or Browser/Desktop).
606
+ * Prefer webCallingService — updated on every stationLogin before wxApp hooks run.
607
+ * @private
608
+ */
609
+ private getCurrentStationLoginOption;
610
+ /**
611
+ * wxApp thick-client answer is supported for Extension and Dial Number station login only —
612
+ * not Browser/Desktop (WebRTC) login.
613
+ * @private
614
+ */
615
+ private assertWxAppStationLoginSupportedForEnable;
616
+ /**
617
+ * Clears runtime wxApp config after logout/deregister so stale flags do not apply on relogin.
618
+ * @private
619
+ */
620
+ private resetEnableWxBetterTogetherConfig;
621
+ private getWxAppTelephonyTaskType;
622
+ private ensureWxAppPostStationLogin;
623
+ private clearWxAppFalsePublishRetryTimer;
624
+ private scheduleForcedFalsePublishRetry;
625
+ /**
626
+ * Retries compensating false publish after rollback failure, regardless of enabled flag.
627
+ * @private
628
+ */
629
+ private scheduleCompensatingFalsePublishRetry;
630
+ private scheduleFalsePublishRetry;
631
+ /**
632
+ * Best-effort rollback when usersub true was published but wxApp setup did not complete.
633
+ * @private
634
+ */
635
+ private revertWxAppCrossClientPublish;
636
+ private ensureWxAppDeviceRegistered;
637
+ private ensureWxAppMercuryConnected;
638
+ /**
639
+ * Disconnects Mercury and unregisters the device when wxApp mute sync opened them.
640
+ * @private
641
+ */
642
+ private releaseWxAppMercuryResources;
643
+ /**
644
+ * Clears wxApp runtime state and feature-owned resources. Publish failures are logged;
645
+ * optional rethrow for deregister when callers need to surface usersub errors.
646
+ * @private
647
+ */
648
+ private teardownWxAppLocalState;
649
+ private ensureWxAppMercuryAndSubscribe;
650
+ private publishAnswerOnWebexCrossClientState;
577
651
  /**
578
652
  * Initializes event listeners for the Contact Center service
579
653
  * Sets up handlers for connection state changes and other core events
@@ -880,14 +954,14 @@ export default class ContactCenter extends WebexPlugin implements IContactCenter
880
954
  */
881
955
  updateAgentProfile(data: AgentProfileUpdate): Promise<UpdateDeviceTypeResponse>;
882
956
  /**
883
- * Returns paginated entry points for the organization.
884
- * Thin wrapper around internal EntryPoint instance.
957
+ * Returns paginated entry points using the EntryPoint service defaults.
958
+ * Existing request parameters can override those defaults.
885
959
  * @public
886
960
  */
887
961
  getEntryPoints(params?: EntryPointSearchParams): Promise<EntryPointListResponse>;
888
962
  /**
889
- * Returns paginated contact service queues for the organization.
890
- * Thin wrapper around internal Queue instance.
963
+ * Returns paginated contact service queues using the Queue service defaults.
964
+ * Existing request parameters can override those defaults.
891
965
  * @public
892
966
  */
893
967
  getQueues(params?: ContactServiceQueueSearchParams): Promise<ContactServiceQueuesResponse>;
@@ -31,6 +31,13 @@ declare const _default: {
31
31
  * @default false
32
32
  */
33
33
  disableWebRTCRegistration: boolean;
34
+ /**
35
+ * Whether wxApp Better Together is enabled at SDK init.
36
+ * Must be set before SDK init. Default false (WXCC-6026).
37
+ * @type {boolean}
38
+ * @default false
39
+ */
40
+ enableWxBetterTogether: boolean;
34
41
  /**
35
42
  * The type of client making the connection.
36
43
  * @type {string}
@@ -13,6 +13,7 @@ export declare const AQM_REQS_FILE = "aqm-reqs";
13
13
  export declare const WEBEX_REQUEST_FILE = "WebexRequest";
14
14
  export declare const TASK_MANAGER_FILE = "TaskManager";
15
15
  export declare const TASK_FILE = "Task";
16
+ export declare const INBOUND_DIRECTION = "INBOUND";
16
17
  export declare const OUTDIAL_DIRECTION = "OUTBOUND";
17
18
  export declare const ATTRIBUTES: {};
18
19
  export declare const OUTDIAL_MEDIA_TYPE = "telephony";
@@ -50,9 +51,11 @@ export declare const METHODS: {
50
51
  TRANSFER_CALL: string;
51
52
  CONSULT_TRANSFER: string;
52
53
  CONSULT_CONFERENCE: string;
54
+ DROP_CONFERENCE_PARTICIPANT: string;
53
55
  EXIT_CONFERENCE: string;
54
56
  TRANSFER_CONFERENCE: string;
55
57
  TOGGLE_MUTE: string;
58
+ TRANSMIT_DTMF: string;
56
59
  COMPLETE_TRANSFER: string;
57
60
  GET_OUTDIAL_ANI_ENTRIES: string;
58
61
  ACCEPT_PREVIEW_CONTACT: string;
@@ -63,4 +66,9 @@ export declare const METHODS: {
63
66
  GET_REAL_TIME_ASSISTANCE: string;
64
67
  SEND_REAL_TIME_ASSISTANCE_USER_ACTION: string;
65
68
  FETCH_HISTORIC_TRANSCRIPTS: string;
69
+ SET_MANAGE_WEBEX_CALLING_IN_WXCC: string;
70
+ IS_WX_BETTER_TOGETHER_ENABLED: string;
71
+ SYNC_WXAPP_MUTE_FROM_MERCURY: string;
72
+ GET_CALL_DETAILS_ON_WEBEX: string;
73
+ ENSURE_WXAPP_MERCURY_CONNECTED: string;
66
74
  };
@@ -98,7 +98,9 @@ IEventEmitter,
98
98
  /** Task interface */
99
99
  ITask, Interaction, TaskData,
100
100
  /** Task response */
101
- TaskResponse, ConsultPayload, ConsultEndPayload, ConsultTransferPayLoad,
101
+ TaskResponse,
102
+ /** Conference participant drop request */
103
+ DropConferenceParticipantPayload, ConsultPayload, ConsultEndPayload, ConsultTransferPayLoad,
102
104
  /** Dialer payload */
103
105
  DialerPayload, TransferPayLoad, ResumeRecordingPayload, WrapupPayLoad,
104
106
  /** UI control types for task buttons */
@@ -178,6 +178,12 @@ export default class MetricsManager {
178
178
  * MetricsManager.getInstance().timeEvent(['AGENT_LOGIN', 'AGENT_LOGOUT']);
179
179
  */
180
180
  timeEvent(keys: string | string[]): void;
181
+ /**
182
+ * Clears a running timed event without emitting a metric.
183
+ * @param keys - A string or array of strings representing event keys (same as timeEvent).
184
+ * @public
185
+ */
186
+ cancelTimedEvent(keys: string | string[]): void;
181
187
  /**
182
188
  * Sets the Webex SDK instance and marks the manager as ready when the SDK is ready.
183
189
  * @param webex - The Webex SDK instance.
@@ -124,10 +124,27 @@ export declare const METRIC_EVENT_NAMES: {
124
124
  readonly TASK_CONFERENCE_TRANSFER_FAILED: "Task Conference Transfer Failed";
125
125
  readonly TASK_CONFERENCE_EXIT_SUCCESS: "Task Conference Exit Success";
126
126
  readonly TASK_CONFERENCE_EXIT_FAILED: "Task Conference Exit Failed";
127
+ readonly TASK_CONFERENCE_PARTICIPANT_DROP_SUCCESS: "Task Conference Participant Drop Success";
128
+ readonly TASK_CONFERENCE_PARTICIPANT_DROP_FAILED: "Task Conference Participant Drop Failed";
127
129
  readonly TASK_SWITCH_CALL_SUCCESS: "Task Switch Call Success";
128
130
  readonly TASK_SWITCH_CALL_FAILED: "Task Switch Call Failed";
129
131
  readonly TASK_OUTDIAL_SUCCESS: "Task Outdial Success";
130
132
  readonly TASK_OUTDIAL_FAILED: "Task Outdial Failed";
133
+ readonly WXAPP_TASK_MUTE_SUCCESS: "WxApp Task Mute Success";
134
+ readonly WXAPP_TASK_MUTE_FAILED: "WxApp Task Mute Failed";
135
+ readonly WXAPP_TASK_DTMF_SUCCESS: "WxApp Task Dtmf Success";
136
+ readonly WXAPP_TASK_DTMF_FAILED: "WxApp Task Dtmf Failed";
137
+ readonly WXAPP_TASK_ACCEPT_SUCCESS: "WxApp Task Accept Success";
138
+ readonly WXAPP_TASK_ACCEPT_FAILED: "WxApp Task Accept Failed";
139
+ readonly WXAPP_TASK_DECLINE_SUCCESS: "WxApp Task Decline Success";
140
+ readonly WXAPP_TASK_DECLINE_FAILED: "WxApp Task Decline Failed";
141
+ readonly WXAPP_SESSION_INIT_SUCCESS: "WxApp Session Init Success";
142
+ readonly WXAPP_SESSION_INIT_FAILED: "WxApp Session Init Failed";
143
+ readonly WXAPP_SESSION_SKIPPED: "WxApp Session Skipped";
144
+ readonly WXAPP_USERSUB_PUBLISH_SUCCESS: "WxApp Usersub Publish Success";
145
+ readonly WXAPP_USERSUB_PUBLISH_FAILED: "WxApp Usersub Publish Failed";
146
+ readonly WXAPP_MERCURY_SUBSCRIBE_SUCCESS: "WxApp Mercury Subscribe Success";
147
+ readonly WXAPP_MERCURY_SUBSCRIBE_FAILED: "WxApp Mercury Subscribe Failed";
131
148
  readonly UPLOAD_LOGS_SUCCESS: "Upload Logs Success";
132
149
  readonly UPLOAD_LOGS_FAILED: "Upload Logs Failed";
133
150
  readonly WEBSOCKET_DEREGISTER_SUCCESS: "Websocket Deregister Success";
@@ -52,7 +52,8 @@ export declare class AddressBook {
52
52
  constructor(webex: WebexSDK, getAddressBookId: () => string);
53
53
  /**
54
54
  * Fetches address book entries for a specific address book using the entry API
55
- * @param {AddressBookEntrySearchParams} [params] - Search and pagination parameters including addressBookId
55
+ * @param {AddressBookEntrySearchParams} [params] - Search, pagination, and optional sort parameters
56
+ * including addressBookId. Sorting defaults to name ascending.
56
57
  * @returns {Promise<AddressBookEntriesResponse>} Promise resolving to address book entries
57
58
  * @throws {Error} If the API call fails
58
59
  * @public
@@ -0,0 +1,38 @@
1
+ import { IHttpResponse, WebexSDK } from '../types';
2
+ export type WxAppTelephonyError = Error & {
3
+ isWxAppTelephonyError: true;
4
+ trackingId?: string;
5
+ status?: number | string;
6
+ };
7
+ export type AnswerCallParams = {
8
+ callId: string;
9
+ endpointId: string;
10
+ lineOwnerId?: string;
11
+ };
12
+ export type CallIdParams = {
13
+ callId: string;
14
+ lineOwnerId?: string;
15
+ };
16
+ export type TransmitDtmfParams = CallIdParams & {
17
+ dtmf: string;
18
+ };
19
+ export type CallDetailsResponse = {
20
+ muted?: boolean;
21
+ };
22
+ /**
23
+ * REST telephony client for wxApp thick-client answer (WXCC-6026).
24
+ * Separate from WebCallingService (WebRTC/Mobius).
25
+ */
26
+ export default class AnswerCallOnWebexService {
27
+ private webex;
28
+ constructor(webex: WebexSDK);
29
+ private getTelephonyBaseUrl;
30
+ private extractTrackingId;
31
+ private telephonyRequest;
32
+ answerCall(params: AnswerCallParams): Promise<IHttpResponse>;
33
+ rejectCall(params: CallIdParams): Promise<IHttpResponse>;
34
+ muteCall(params: CallIdParams): Promise<IHttpResponse>;
35
+ unmuteCall(params: CallIdParams): Promise<IHttpResponse>;
36
+ transmitDtmf(params: TransmitDtmfParams): Promise<IHttpResponse>;
37
+ getCallDetails(params: CallIdParams): Promise<CallDetailsResponse>;
38
+ }
@@ -27,7 +27,7 @@ import type { EntryPointListResponse, EntryPointSearchParams } from '../types';
27
27
  * });
28
28
  *
29
29
  * // Search for specific entry points
30
- * const searchResults = await entryPointAPI.searchEntryPoints({
30
+ * const searchResults = await entryPointAPI.getEntryPoints({
31
31
  * search: 'support',
32
32
  * filter: 'type=="voice"'
33
33
  * });
@@ -37,7 +37,6 @@ export declare class EntryPoint {
37
37
  private webexRequest;
38
38
  private webex;
39
39
  private metricsManager;
40
- private pageCache;
41
40
  /**
42
41
  * Creates an instance of EntryPoint
43
42
  * @param {WebexSDK} webex - The Webex SDK instance
@@ -45,14 +44,17 @@ export declare class EntryPoint {
45
44
  */
46
45
  constructor(webex: WebexSDK);
47
46
  /**
48
- * Fetches entry points for the organization with pagination support
49
- * @param {EntryPointSearchParams} [params] - Search and pagination parameters
47
+ * Fetches entry-point dial-number mappings for the organization with pagination support. By
48
+ * default, returns the agent's desktop-profile-filtered mappings in backend entry-point-name order.
49
+ * Search, filter, attribute, and sort parameters can customize the request while desktop-profile
50
+ * scoping and required mapping fields remain SDK-owned.
51
+ * @param {EntryPointSearchParams} [params] - Search, pagination, and compatible override parameters.
50
52
  * @returns {Promise<EntryPointListResponse>} Promise resolving to paginated entry points
51
53
  * @throws {Error} If the API call fails
52
54
  * @public
53
55
  * @example
54
56
  * ```typescript
55
- * // Get first page of entry points
57
+ * // Get the first page using the default entry-point policy
56
58
  * const response = await entryPointAPI.getEntryPoints();
57
59
  *
58
60
  * // Get specific page with custom page size
@@ -48,14 +48,16 @@ export declare class Queue {
48
48
  */
49
49
  constructor(webex: WebexSDK);
50
50
  /**
51
- * Fetches contact service queues for the organization
52
- * @param {ContactServiceQueueSearchParams} [params] - Search and pagination parameters
51
+ * Fetches contact service queues for the organization. By default, returns active inbound
52
+ * telephony queues in backend name-ascending order using the agent's desktop profile views.
53
+ * Existing filter, sort, and desktop-profile parameters override those defaults.
54
+ * @param {ContactServiceQueueSearchParams} [params] - Search, pagination, and override parameters
53
55
  * @returns {Promise<ContactServiceQueuesResponse>} Promise resolving to contact service queues
54
56
  * @throws {Error} If the API call fails
55
57
  * @public
56
58
  * @example
57
59
  * ```typescript
58
- * // Get all queues with default pagination
60
+ * // Get queues using the default list policy and pagination
59
61
  * const response = await queueAPI.getQueues();
60
62
  *
61
63
  * // Get queues with specific pagination
@@ -0,0 +1,32 @@
1
+ import { WebexSDK } from '../types';
2
+ /**
3
+ * Publishes usersub cross-client state so Webex App suppresses native calling toasts (WXCC-6026).
4
+ */
5
+ export default class WebexCrossClientService {
6
+ private webex;
7
+ private refreshTimer?;
8
+ private refreshRetryTimer?;
9
+ private answerCallsState;
10
+ private appName;
11
+ /** Incremented on teardown/disable to ignore stale refresh timer callbacks. */
12
+ private refreshGeneration;
13
+ /** Monotonic id for usersub publish metrics timers; stale publishes cancel only their own timer. */
14
+ private usersubPublishMetricsId;
15
+ constructor(webex: WebexSDK);
16
+ private extractDeviceIdFromUrl;
17
+ private getDeviceUrl;
18
+ private clearRefreshTimer;
19
+ private scheduleRefreshRetry;
20
+ private startRefreshTimer;
21
+ private publishCrossClientState;
22
+ setManageWebexCallingInWxcc(enable: boolean, options?: {
23
+ userId?: string;
24
+ ttl?: number;
25
+ appName?: string;
26
+ trackPublishMetrics?: boolean;
27
+ }): Promise<void>;
28
+ private trackUsersubPreflightFailure;
29
+ teardown(): void;
30
+ /** Whether usersub `answer-calls-on-wxcc: true` was successfully published this session. */
31
+ isAnswerCallsStateActive(): boolean;
32
+ }
@@ -0,0 +1,28 @@
1
+ import { WebexSDK } from '../types';
2
+ export declare const TELEPHONY_CALL_MUTED = "event:telephony_calls.muted";
3
+ export declare const TELEPHONY_CALL_UNMUTED = "event:telephony_calls.unmuted";
4
+ export type UpdatedCallMuteStateEvent = {
5
+ data: {
6
+ actorId: string;
7
+ callId: string;
8
+ muted: boolean;
9
+ };
10
+ };
11
+ type MuteChangeHandler = (callId: string, muted: boolean) => void;
12
+ /**
13
+ * Subscribes to Mercury telephony mute/unmute events for wxApp thick-client sync (AD parity).
14
+ */
15
+ export default class WxAppTelephonyMercurySync {
16
+ private webex;
17
+ private subscribedAgentId?;
18
+ private muteChangeHandler?;
19
+ private boundMuteHandler?;
20
+ private boundUnmuteHandler?;
21
+ constructor(webex: WebexSDK);
22
+ private decodeBase64;
23
+ private handleMuteStateEvent;
24
+ subscribe(agentId: string, onMuteChange: MuteChangeHandler): void;
25
+ unsubscribe(): void;
26
+ isSubscribed(): boolean;
27
+ }
28
+ export {};
@@ -1,4 +1,10 @@
1
1
  export declare const DEFAULT_PAGE = 0;
2
+ /** Desktop Profile access levels for collaboration destination categories. */
3
+ export declare const COLLABORATION_ACCESS: {
4
+ readonly ALL: "ALL";
5
+ readonly SPECIFIC: "SPECIFIC";
6
+ readonly NONE: "NONE";
7
+ };
2
8
  /**
3
9
  * Default page size for paginated API requests.
4
10
  * @type {number}
@@ -212,16 +218,13 @@ export declare const endPointMap: {
212
218
  */
213
219
  queueList: (orgId: string, queryParams: string) => string;
214
220
  /**
215
- * Gets the endpoint for entry points list with custom query parameters.
221
+ * Gets the desktop-profile-filtered dial-number mappings used by entry-point destination lists.
216
222
  * @param orgId - Organization ID.
217
223
  * @param queryParams - Query parameters string.
218
224
  * @returns The endpoint URL string.
219
- * @public
220
- * @example
221
- * const url = endPointMap.entryPointList('org123', 'page=0&pageSize=10');
222
225
  * @ignore
223
226
  */
224
- entryPointList: (orgId: string, queryParams: string) => string;
227
+ entryPointDialNumberList: (orgId: string, queryParams: string) => string;
225
228
  /**
226
229
  * Gets the endpoint for address book entries with custom query parameters.
227
230
  * @param orgId - Organization ID.
@@ -1,4 +1,7 @@
1
1
  import * as Agent from '../agent/types';
2
+ import { COLLABORATION_ACCESS } from './constants';
3
+ /** Desktop Profile access level for a collaboration destination category. */
4
+ export type CollaborationAccess = Enum<typeof COLLABORATION_ACCESS>;
2
5
  /**
3
6
  * Events emitted on task objects
4
7
  * @enum {string}
@@ -50,6 +53,8 @@ export declare const CC_TASK_EVENTS: {
50
53
  readonly PARTICIPANT_LEFT_CONFERENCE: "ParticipantLeftConference";
51
54
  /** Event emitted when participant leaving conference fails */
52
55
  readonly PARTICIPANT_LEFT_CONFERENCE_FAILED: "ParticipantLeftConferenceFailed";
56
+ /** Event emitted when dropping another conference participant fails */
57
+ readonly PARTICIPANT_DROP_CONFERENCE_FAILED: "ParticipantDropConferenceFailed";
53
58
  /** Event emitted when consultation conference end fails */
54
59
  readonly AGENT_CONSULT_CONFERENCE_END_FAILED: "AgentConsultConferenceEndFailed";
55
60
  /** Event emitted when conference is successfully transferred */
@@ -227,6 +232,8 @@ export declare const CC_EVENTS: {
227
232
  readonly PARTICIPANT_LEFT_CONFERENCE: "ParticipantLeftConference";
228
233
  /** Event emitted when participant leaving conference fails */
229
234
  readonly PARTICIPANT_LEFT_CONFERENCE_FAILED: "ParticipantLeftConferenceFailed";
235
+ /** Event emitted when dropping another conference participant fails */
236
+ readonly PARTICIPANT_DROP_CONFERENCE_FAILED: "ParticipantDropConferenceFailed";
230
237
  /** Event emitted when consultation conference end fails */
231
238
  readonly AGENT_CONSULT_CONFERENCE_END_FAILED: "AgentConsultConferenceEndFailed";
232
239
  /** Event emitted when conference is successfully transferred */
@@ -513,9 +520,9 @@ export type DesktopProfileResponse = {
513
520
  */
514
521
  allowAutoWrapUpExtension: boolean;
515
522
  /**
516
- * Access control for queues assigned to the agent (ALL or SPECIFIC).
523
+ * Access control for queues assigned to the agent (ALL, SPECIFIC, or NONE).
517
524
  */
518
- accessQueue: string;
525
+ accessQueue: CollaborationAccess;
519
526
  /**
520
527
  * Queue identifiers available to the agent when access is SPECIFIC.
521
528
  */
@@ -523,7 +530,7 @@ export type DesktopProfileResponse = {
523
530
  /**
524
531
  * Access control for entry points assigned to the agent.
525
532
  */
526
- accessEntryPoint: string;
533
+ accessEntryPoint: CollaborationAccess;
527
534
  /**
528
535
  * Entry point identifiers available to the agent when access is SPECIFIC.
529
536
  */
@@ -531,7 +538,7 @@ export type DesktopProfileResponse = {
531
538
  /**
532
539
  * Access control for buddy teams assigned to the agent.
533
540
  */
534
- accessBuddyTeam: string;
541
+ accessBuddyTeam: CollaborationAccess;
535
542
  /**
536
543
  * Buddy team identifiers available to the agent when access is SPECIFIC.
537
544
  */
@@ -1197,6 +1204,12 @@ export type Profile = {
1197
1204
  agentAnalyzerId?: string;
1198
1205
  /** Whether consult to queue is allowed */
1199
1206
  allowConsultToQueue: boolean;
1207
+ /** Access control for queues on Desktop Profile Collaboration tab */
1208
+ accessQueue?: CollaborationAccess;
1209
+ /** Access control for entry points on Desktop Profile Collaboration tab */
1210
+ accessEntryPoint?: CollaborationAccess;
1211
+ /** Access control for buddy teams on Desktop Profile Collaboration tab */
1212
+ accessBuddyTeam?: CollaborationAccess;
1200
1213
  /** Additional campaign manager information */
1201
1214
  campaignManagerAdditionalInfo?: string;
1202
1215
  /** Whether personal statistics are enabled */
@@ -49,6 +49,8 @@ export type TaskErrorIds = {
49
49
  'Service.aqm.task.consultAccept': Failure;
50
50
  } | {
51
51
  'Service.aqm.task.consultConference': Failure;
52
+ } | {
53
+ 'Service.aqm.task.dropConferenceParticipant': Failure;
52
54
  } | {
53
55
  'Service.aqm.task.consultEnd': Failure;
54
56
  } | {
@@ -11,6 +11,7 @@ declare class WebexRequest {
11
11
  resource: string;
12
12
  method: HTTP_METHODS;
13
13
  body?: RequestBody;
14
+ headers?: Record<string, string | null>;
14
15
  }): Promise<IHttpResponse>;
15
16
  /**
16
17
  * This is used for uploading the logs to backend/mats.
@@ -18,6 +18,8 @@ export type Req<TRes, TErr> = {
18
18
  url: string;
19
19
  host?: string;
20
20
  method?: HTTP_METHODS;
21
+ /** Suppress request URLs and routing payloads from AQM logs for sensitive operations. */
22
+ redactSensitiveLogs?: boolean;
21
23
  err?: ((errObj: WebexRequestPayload) => Err.Details<'Service.reqs.generic.failure'>) | Err.IdsMessage | ((e: WebexRequestPayload) => Err.Message | Err.Details<Err.IdsDetails>);
22
24
  notifSuccess: {
23
25
  bind: Bind;
@@ -1,7 +1,7 @@
1
1
  /// <reference types="node" />
2
2
  import { EventEmitter } from 'events';
3
3
  import type { ActorRefFrom, SnapshotFrom } from 'xstate';
4
- import { ITask, TaskData, TaskResponse, WrapupPayLoad, TaskId, TransferPayLoad, TASK_EVENTS, TaskUIControls, ConsultEndPayload, ConsultPayload, ConsultTransferPayLoad, ResumeRecordingPayload, CallId } from './types';
4
+ import { ITask, TaskData, TaskResponse, WrapupPayLoad, TaskId, TransferPayLoad, TASK_EVENTS, TaskUIControls, DropConferenceParticipantPayload, ConsultEndPayload, ConsultPayload, ConsultTransferPayLoad, ResumeRecordingPayload, CallId, TaskToggleMuteOptions, TaskTransmitDtmfOptions } from './types';
5
5
  import routingContact from './contact';
6
6
  import MetricsManager from '../../metrics/MetricsManager';
7
7
  import { TaskState } from './state-machine';
@@ -34,10 +34,12 @@ export default abstract class Task extends EventEmitter implements ITask {
34
34
  endConsult(consultEndPayload: ConsultEndPayload): Promise<TaskResponse>;
35
35
  consultTransfer(consultTransferPayload?: ConsultTransferPayLoad): Promise<TaskResponse>;
36
36
  consultConference(): Promise<TaskResponse>;
37
+ dropConferenceParticipant(payload: DropConferenceParticipantPayload): Promise<TaskResponse>;
37
38
  exitConference(): Promise<TaskResponse>;
38
39
  transferConference(): Promise<TaskResponse>;
39
40
  switchCall(): Promise<TaskResponse>;
40
- toggleMute(): Promise<void>;
41
+ toggleMute(options?: TaskToggleMuteOptions): Promise<void>;
42
+ transmitDtmf(options: TaskTransmitDtmfOptions): Promise<void>;
41
43
  unregisterWebCallListeners(): void;
42
44
  /**
43
45
  * Cancel any in-progress auto wrap-up timer.
@@ -69,6 +71,22 @@ export default abstract class Task extends EventEmitter implements ITask {
69
71
  *
70
72
  * @returns UI control states for all task actions
71
73
  */
74
+ /**
75
+ * Update wxApp thick-client answer flag at runtime (Voice overrides).
76
+ */
77
+ setEnableWxBetterTogether(_enabled: boolean): void;
78
+ /**
79
+ * Apply wxApp mute state from external sync (Voice overrides).
80
+ */
81
+ applyWxAppMuteStateFromSync(_incomingCallId: string, _muted: boolean): void;
82
+ /**
83
+ * Hook for post-assign wxApp sync (Voice overrides).
84
+ */
85
+ protected onTaskAssigned(): void;
86
+ /**
87
+ * Hook for post-hydrate wxApp sync (Voice overrides).
88
+ */
89
+ protected onTaskHydrated(): void;
72
90
  protected computeUIControls(): TaskUIControls;
73
91
  /**
74
92
  * Stop the state machine service
@@ -1,5 +1,6 @@
1
1
  import routingContact from './contact';
2
2
  import WebCallingService from '../WebCallingService';
3
+ import AnswerCallOnWebexService from '../AnswerCallOnWebexService';
3
4
  import Task from './Task';
4
5
  import { TaskData } from './types';
5
6
  import { ConfigFlags } from '../../types';
@@ -8,5 +9,5 @@ export default class TaskFactory {
8
9
  /**
9
10
  * Creates the correct Task subclass based on mediaType & loginOption
10
11
  */
11
- static createTask(contact: ReturnType<typeof routingContact>, webCallingService: WebCallingService, data: TaskData, configFlags: ConfigFlags, wrapupData?: WrapupData, agentId?: string): Task;
12
+ static createTask(contact: ReturnType<typeof routingContact>, webCallingService: WebCallingService, data: TaskData, configFlags: ConfigFlags, wrapupData?: WrapupData, agentId?: string, answerCallOnWebexService?: AnswerCallOnWebexService): Task;
12
13
  }
@@ -0,0 +1,11 @@
1
+ import { TaskState } from './state-machine/constants';
2
+ export type WebexCallingDeviceDetails = {
3
+ deviceType: string;
4
+ deviceId: string;
5
+ deviceCallId: string;
6
+ };
7
+ export declare function getWebexCallingDeviceDetailsForAgent(agentId: string | undefined, participants: unknown): WebexCallingDeviceDetails | undefined;
8
+ export declare function isWebexCallingCallForAgent(agentId: string | undefined, participants: unknown): boolean;
9
+ /** Matches wxAppVoiceMethods.getWebexCallingCallId engaged semantics for uiControls. */
10
+ export declare function isWxAppEngagedForControls(enableWxBetterTogether: boolean, agentId: string | undefined, participants: unknown, state: TaskState): boolean;
11
+ export declare function decodedLineOwnerId(lineOwnerId?: string): string | undefined;
@@ -11,6 +11,8 @@ export declare const CONSULT = "/consult";
11
11
  export declare const CONSULT_ACCEPT = "/consult/accept";
12
12
  export declare const CONSULT_END = "/consult/end";
13
13
  export declare const TRANSFER = "/transfer";
14
+ /** Backend destination value for direct entry-point transfers through the vteam endpoint. */
15
+ export declare const ENTRY_POINT_TRANSFER_DESTINATION_TYPE = "entrypointDialNumber";
14
16
  export declare const CONSULT_TRANSFER = "/consult/transfer";
15
17
  export declare const PAUSE = "/record/pause";
16
18
  export declare const RESUME = "/record/resume";
@@ -65,6 +67,7 @@ export declare const METHODS: {
65
67
  TRANSFER: string;
66
68
  CONSULT_TRANSFER: string;
67
69
  CONSULT_CONFERENCE: string;
70
+ DROP_CONFERENCE_PARTICIPANT: string;
68
71
  EXIT_CONFERENCE: string;
69
72
  TRANSFER_CONFERENCE: string;
70
73
  UPDATE_TASK_DATA: string;
@@ -60,6 +60,10 @@ export default function routingContact(aqm: AqmReqs): {
60
60
  interactionId: string;
61
61
  data: Contact.ConsultConferenceData;
62
62
  }>;
63
+ dropConferenceParticipant: import("../core/types").Res<Contact.AgentContact, {
64
+ interactionId: string;
65
+ participantId: string;
66
+ }>;
63
67
  exitConference: import("../core/types").Res<Contact.AgentContact, {
64
68
  interactionId: string;
65
69
  }>;
@@ -1,9 +1,9 @@
1
- import { IDigital, TaskResponse, TaskData } from '../types';
1
+ import { ConsultTransferDestinationConfig, IDigital, TaskResponse, TaskData } from '../types';
2
2
  import { WrapupData } from '../../config/types';
3
3
  import Task from '../Task';
4
4
  import routingContact from '../contact';
5
5
  export default class Digital extends Task implements IDigital {
6
- constructor(contact: ReturnType<typeof routingContact>, data: TaskData, wrapupData?: WrapupData, agentId?: string);
6
+ constructor(contact: ReturnType<typeof routingContact>, data: TaskData, wrapupData?: WrapupData, agentId?: string, consultTransferConfig?: ConsultTransferDestinationConfig);
7
7
  /**
8
8
  * Refresh the digital task with the latest backend payload and recompute UI controls.
9
9
  */