@webex/contact-center 3.11.0 → 3.12.0-auth-prejoin-fetch.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 (325) hide show
  1. package/.sdd/manifest.json +883 -0
  2. package/AGENTS.md +94 -0
  3. package/ai-docs/ARCHITECTURE.md +168 -0
  4. package/ai-docs/CONTRACTS.md +50 -0
  5. package/ai-docs/GETTING_STARTED.md +168 -0
  6. package/ai-docs/GLOSSARY.md +43 -0
  7. package/ai-docs/README.md +138 -0
  8. package/ai-docs/REVIEW_CHECKLIST.md +41 -0
  9. package/ai-docs/RULES.md +444 -0
  10. package/ai-docs/SECURITY.md +52 -0
  11. package/ai-docs/SERVICE_STATE.md +48 -0
  12. package/ai-docs/SPEC_INDEX.md +65 -0
  13. package/ai-docs/adr/0001-spec-source-policy.md +55 -0
  14. package/ai-docs/adr/README.md +8 -0
  15. package/ai-docs/adr/_adr-template.md +31 -0
  16. package/ai-docs/contact-center-spec.md +359 -0
  17. package/ai-docs/features/consult-transfer-list-policy/spec/feature-spec.md +362 -0
  18. package/ai-docs/features/generated-spec-conformance-fidelity-remediation/spec/feature-spec.md +117 -0
  19. package/ai-docs/features/residual-warning-coverage-completion/spec/feature-spec.md +203 -0
  20. package/ai-docs/features/validator-code-fidelity-drift-fix/spec/feature-spec.md +315 -0
  21. package/ai-docs/patterns/event-driven-patterns.md +485 -0
  22. package/ai-docs/patterns/testing-patterns.md +480 -0
  23. package/ai-docs/patterns/typescript-patterns.md +365 -0
  24. package/ai-docs/templates/README.md +102 -0
  25. package/ai-docs/templates/documentation/create-agents-md.md +240 -0
  26. package/ai-docs/templates/documentation/create-architecture-md.md +295 -0
  27. package/ai-docs/templates/existing-service/bug-fix.md +254 -0
  28. package/ai-docs/templates/existing-service/feature-enhancement.md +450 -0
  29. package/ai-docs/templates/new-method/00-master.md +80 -0
  30. package/ai-docs/templates/new-method/01-requirements.md +232 -0
  31. package/ai-docs/templates/new-method/02-implementation.md +295 -0
  32. package/ai-docs/templates/new-method/03-tests.md +201 -0
  33. package/ai-docs/templates/new-method/04-validation.md +141 -0
  34. package/ai-docs/templates/new-service/00-master.md +109 -0
  35. package/ai-docs/templates/new-service/01-pre-questions.md +159 -0
  36. package/ai-docs/templates/new-service/02-code-generation.md +346 -0
  37. package/ai-docs/templates/new-service/03-integration.md +178 -0
  38. package/ai-docs/templates/new-service/04-test-generation.md +205 -0
  39. package/ai-docs/templates/new-service/05-validation.md +145 -0
  40. package/dist/cc.js +818 -59
  41. package/dist/cc.js.map +1 -1
  42. package/dist/config.js +13 -0
  43. package/dist/config.js.map +1 -1
  44. package/dist/constants.js +31 -3
  45. package/dist/constants.js.map +1 -1
  46. package/dist/index.js +27 -5
  47. package/dist/index.js.map +1 -1
  48. package/dist/metrics/behavioral-events.js +127 -0
  49. package/dist/metrics/behavioral-events.js.map +1 -1
  50. package/dist/metrics/constants.js +34 -3
  51. package/dist/metrics/constants.js.map +1 -1
  52. package/dist/services/AddressBook.js +18 -15
  53. package/dist/services/AddressBook.js.map +1 -1
  54. package/dist/services/AnswerCallOnWebexService.js +174 -0
  55. package/dist/services/AnswerCallOnWebexService.js.map +1 -0
  56. package/dist/services/ApiAiAssistant.js +318 -0
  57. package/dist/services/ApiAiAssistant.js.map +1 -0
  58. package/dist/services/EntryPoint.js +46 -68
  59. package/dist/services/EntryPoint.js.map +1 -1
  60. package/dist/services/Queue.js +27 -22
  61. package/dist/services/Queue.js.map +1 -1
  62. package/dist/services/UserPreference.js +427 -0
  63. package/dist/services/UserPreference.js.map +1 -0
  64. package/dist/services/WebexCrossClientService.js +171 -0
  65. package/dist/services/WebexCrossClientService.js.map +1 -0
  66. package/dist/services/WxAppTelephonyMercurySync.js +93 -0
  67. package/dist/services/WxAppTelephonyMercurySync.js.map +1 -0
  68. package/dist/services/agent/types.js.map +1 -1
  69. package/dist/services/config/Util.js +11 -4
  70. package/dist/services/config/Util.js.map +1 -1
  71. package/dist/services/config/constants.js +45 -8
  72. package/dist/services/config/constants.js.map +1 -1
  73. package/dist/services/config/index.js +41 -2
  74. package/dist/services/config/index.js.map +1 -1
  75. package/dist/services/config/types.js +70 -8
  76. package/dist/services/config/types.js.map +1 -1
  77. package/dist/services/constants.js +27 -1
  78. package/dist/services/constants.js.map +1 -1
  79. package/dist/services/core/Err.js.map +1 -1
  80. package/dist/services/core/Utils.js +122 -25
  81. package/dist/services/core/Utils.js.map +1 -1
  82. package/dist/services/core/WebexRequest.js +6 -2
  83. package/dist/services/core/WebexRequest.js.map +1 -1
  84. package/dist/services/core/aqm-reqs.js +119 -30
  85. package/dist/services/core/aqm-reqs.js.map +1 -1
  86. package/dist/services/core/types.js.map +1 -1
  87. package/dist/services/core/websocket/WebSocketManager.js +22 -6
  88. package/dist/services/core/websocket/WebSocketManager.js.map +1 -1
  89. package/dist/services/core/websocket/connection-service.js +3 -1
  90. package/dist/services/core/websocket/connection-service.js.map +1 -1
  91. package/dist/services/core/websocket/types.js.map +1 -1
  92. package/dist/services/index.js +6 -0
  93. package/dist/services/index.js.map +1 -1
  94. package/dist/services/task/Task.js +754 -0
  95. package/dist/services/task/Task.js.map +1 -0
  96. package/dist/services/task/TaskFactory.js +49 -0
  97. package/dist/services/task/TaskFactory.js.map +1 -0
  98. package/dist/services/task/TaskManager.js +1073 -447
  99. package/dist/services/task/TaskManager.js.map +1 -1
  100. package/dist/services/task/TaskUtils.js +220 -23
  101. package/dist/services/task/TaskUtils.js.map +1 -1
  102. package/dist/services/task/WebexCallingUtils.js +70 -0
  103. package/dist/services/task/WebexCallingUtils.js.map +1 -0
  104. package/dist/services/task/constants.js +26 -2
  105. package/dist/services/task/constants.js.map +1 -1
  106. package/dist/services/task/contact.js +29 -0
  107. package/dist/services/task/contact.js.map +1 -1
  108. package/dist/services/task/dialer.js +129 -0
  109. package/dist/services/task/dialer.js.map +1 -1
  110. package/dist/services/task/digital/Digital.js +78 -0
  111. package/dist/services/task/digital/Digital.js.map +1 -0
  112. package/dist/services/task/state-machine/TaskStateMachine.js +971 -0
  113. package/dist/services/task/state-machine/TaskStateMachine.js.map +1 -0
  114. package/dist/services/task/state-machine/actions.js +572 -0
  115. package/dist/services/task/state-machine/actions.js.map +1 -0
  116. package/dist/services/task/state-machine/constants.js +161 -0
  117. package/dist/services/task/state-machine/constants.js.map +1 -0
  118. package/dist/services/task/state-machine/guards.js +409 -0
  119. package/dist/services/task/state-machine/guards.js.map +1 -0
  120. package/dist/services/task/state-machine/index.js +53 -0
  121. package/dist/services/task/state-machine/index.js.map +1 -0
  122. package/dist/services/task/state-machine/types.js +54 -0
  123. package/dist/services/task/state-machine/types.js.map +1 -0
  124. package/dist/services/task/state-machine/uiControlsComputer.js +703 -0
  125. package/dist/services/task/state-machine/uiControlsComputer.js.map +1 -0
  126. package/dist/services/task/taskDataNormalizer.js +99 -0
  127. package/dist/services/task/taskDataNormalizer.js.map +1 -0
  128. package/dist/services/task/types.js +243 -5
  129. package/dist/services/task/types.js.map +1 -1
  130. package/dist/services/task/voice/Voice.js +1380 -0
  131. package/dist/services/task/voice/Voice.js.map +1 -0
  132. package/dist/services/task/voice/WebRTC.js +152 -0
  133. package/dist/services/task/voice/WebRTC.js.map +1 -0
  134. package/dist/services/task/voice/wxAppVoiceMethods.js +201 -0
  135. package/dist/services/task/voice/wxAppVoiceMethods.js.map +1 -0
  136. package/dist/services/wxAppTelephonyUtils.js +19 -0
  137. package/dist/services/wxAppTelephonyUtils.js.map +1 -0
  138. package/dist/types/cc.d.ts +967 -0
  139. package/dist/types/config.d.ts +79 -0
  140. package/dist/types/constants.d.ts +74 -0
  141. package/dist/types/index.d.ts +201 -0
  142. package/dist/types/logger-proxy.d.ts +71 -0
  143. package/dist/types/metrics/MetricsManager.d.ts +223 -0
  144. package/dist/types/metrics/behavioral-events.d.ts +29 -0
  145. package/dist/types/metrics/constants.d.ts +183 -0
  146. package/dist/types/services/AddressBook.d.ts +75 -0
  147. package/dist/types/services/AnswerCallOnWebexService.d.ts +37 -0
  148. package/dist/types/services/ApiAiAssistant.d.ts +49 -0
  149. package/dist/types/services/EntryPoint.d.ts +69 -0
  150. package/dist/types/services/Queue.d.ts +78 -0
  151. package/dist/types/services/UserPreference.d.ts +118 -0
  152. package/dist/types/services/WebCallingService.d.ts +1 -0
  153. package/dist/types/services/WebexCrossClientService.d.ts +28 -0
  154. package/dist/types/services/WxAppTelephonyMercurySync.d.ts +28 -0
  155. package/dist/types/services/agent/index.d.ts +46 -0
  156. package/dist/types/services/agent/types.d.ts +413 -0
  157. package/dist/types/services/config/Util.d.ts +20 -0
  158. package/dist/types/services/config/constants.d.ts +273 -0
  159. package/dist/types/services/config/index.d.ts +177 -0
  160. package/dist/types/services/config/types.d.ts +1381 -0
  161. package/dist/types/services/constants.d.ts +110 -0
  162. package/dist/types/services/core/Err.d.ts +127 -0
  163. package/dist/types/services/core/GlobalTypes.d.ts +58 -0
  164. package/dist/types/services/core/Utils.d.ts +121 -0
  165. package/dist/types/services/core/WebexRequest.d.ts +23 -0
  166. package/dist/types/services/core/aqm-reqs.d.ts +65 -0
  167. package/dist/types/services/core/constants.d.ts +99 -0
  168. package/dist/types/services/core/types.d.ts +49 -0
  169. package/dist/types/services/core/websocket/WebSocketManager.d.ts +36 -0
  170. package/dist/types/services/core/websocket/connection-service.d.ts +27 -0
  171. package/dist/types/services/core/websocket/keepalive.worker.d.ts +2 -0
  172. package/dist/types/services/core/websocket/types.d.ts +37 -0
  173. package/dist/types/services/index.d.ts +54 -0
  174. package/dist/types/services/task/AutoWrapup.d.ts +40 -0
  175. package/dist/types/services/task/Task.d.ts +175 -0
  176. package/dist/types/services/task/TaskFactory.d.ts +13 -0
  177. package/dist/types/services/task/TaskManager.d.ts +1 -0
  178. package/dist/types/services/task/TaskUtils.d.ts +138 -0
  179. package/dist/types/services/task/WebexCallingUtils.d.ts +11 -0
  180. package/dist/types/services/task/constants.d.ts +94 -0
  181. package/dist/types/services/task/contact.d.ts +73 -0
  182. package/dist/types/services/task/dialer.d.ts +73 -0
  183. package/dist/types/services/task/digital/Digital.d.ts +22 -0
  184. package/dist/types/services/task/state-machine/TaskStateMachine.d.ts +1398 -0
  185. package/dist/types/services/task/state-machine/actions.d.ts +10 -0
  186. package/dist/types/services/task/state-machine/constants.d.ts +107 -0
  187. package/dist/types/services/task/state-machine/guards.d.ts +103 -0
  188. package/dist/types/services/task/state-machine/index.d.ts +13 -0
  189. package/dist/types/services/task/state-machine/types.d.ts +277 -0
  190. package/dist/types/services/task/state-machine/uiControlsComputer.d.ts +9 -0
  191. package/dist/types/services/task/taskDataNormalizer.d.ts +10 -0
  192. package/dist/types/services/task/types.d.ts +1933 -0
  193. package/dist/types/services/task/voice/Voice.d.ts +223 -0
  194. package/dist/types/services/task/voice/WebRTC.d.ts +53 -0
  195. package/dist/types/services/task/voice/wxAppVoiceMethods.d.ts +52 -0
  196. package/dist/types/services/wxAppTelephonyUtils.d.ts +5 -0
  197. package/dist/types/types.d.ts +784 -0
  198. package/dist/types/utils/PageCache.d.ts +190 -0
  199. package/dist/types/webex-config.d.ts +53 -0
  200. package/dist/types/webex.d.ts +8 -0
  201. package/dist/types.js +137 -3
  202. package/dist/types.js.map +1 -1
  203. package/dist/utils/PageCache.js +19 -5
  204. package/dist/utils/PageCache.js.map +1 -1
  205. package/dist/webex.js +14 -2
  206. package/dist/webex.js.map +1 -1
  207. package/package.json +16 -12
  208. package/src/cc.ts +983 -60
  209. package/src/config.ts +13 -0
  210. package/src/constants.ts +29 -1
  211. package/src/index.ts +26 -5
  212. package/src/metrics/ai-docs/AGENTS.md +350 -0
  213. package/src/metrics/ai-docs/ARCHITECTURE.md +338 -0
  214. package/src/metrics/ai-docs/metrics-spec.md +860 -0
  215. package/src/metrics/behavioral-events.ts +134 -0
  216. package/src/metrics/constants.ts +39 -3
  217. package/src/services/AddressBook.ts +17 -6
  218. package/src/services/AnswerCallOnWebexService.ts +206 -0
  219. package/src/services/ApiAiAssistant.ts +412 -0
  220. package/src/services/EntryPoint.ts +59 -60
  221. package/src/services/Queue.ts +29 -12
  222. package/src/services/UserPreference.ts +509 -0
  223. package/src/services/WebexCrossClientService.ts +212 -0
  224. package/src/services/WxAppTelephonyMercurySync.ts +115 -0
  225. package/src/services/agent/ai-docs/AGENTS.md +240 -0
  226. package/src/services/agent/ai-docs/ARCHITECTURE.md +304 -0
  227. package/src/services/agent/ai-docs/agent-spec.md +504 -0
  228. package/src/services/agent/types.ts +1 -1
  229. package/src/services/ai-docs/AGENTS.md +386 -0
  230. package/src/services/ai-docs/services-spec.md +497 -0
  231. package/src/services/config/Util.ts +13 -2
  232. package/src/services/config/ai-docs/AGENTS.md +255 -0
  233. package/src/services/config/ai-docs/ARCHITECTURE.md +426 -0
  234. package/src/services/config/ai-docs/config-spec.md +675 -0
  235. package/src/services/config/constants.ts +47 -7
  236. package/src/services/config/index.ts +45 -1
  237. package/src/services/config/types.ts +253 -11
  238. package/src/services/constants.ts +29 -0
  239. package/src/services/core/Err.ts +4 -0
  240. package/src/services/core/Utils.ts +143 -30
  241. package/src/services/core/WebexRequest.ts +3 -1
  242. package/src/services/core/ai-docs/AGENTS.md +381 -0
  243. package/src/services/core/ai-docs/ARCHITECTURE.md +698 -0
  244. package/src/services/core/ai-docs/core-spec.md +787 -0
  245. package/src/services/core/aqm-reqs.ts +125 -32
  246. package/src/services/core/types.ts +2 -0
  247. package/src/services/core/websocket/WebSocketManager.ts +23 -6
  248. package/src/services/core/websocket/connection-service.ts +5 -1
  249. package/src/services/core/websocket/types.ts +1 -1
  250. package/src/services/index.ts +4 -0
  251. package/src/services/task/Task.ts +908 -0
  252. package/src/services/task/TaskFactory.ts +60 -0
  253. package/src/services/task/TaskManager.ts +1291 -513
  254. package/src/services/task/TaskUtils.ts +314 -24
  255. package/src/services/task/WebexCallingUtils.ts +136 -0
  256. package/src/services/task/ai-docs/AGENTS.md +457 -0
  257. package/src/services/task/ai-docs/ARCHITECTURE.md +595 -0
  258. package/src/services/task/ai-docs/task-spec.md +1469 -0
  259. package/src/services/task/constants.ts +26 -0
  260. package/src/services/task/contact.ts +30 -0
  261. package/src/services/task/dialer.ts +136 -1
  262. package/src/services/task/digital/Digital.ts +97 -0
  263. package/src/services/task/state-machine/TaskStateMachine.ts +1313 -0
  264. package/src/services/task/state-machine/actions.ts +741 -0
  265. package/src/services/task/state-machine/ai-docs/AGENTS.md +462 -0
  266. package/src/services/task/state-machine/ai-docs/ARCHITECTURE.md +1146 -0
  267. package/src/services/task/state-machine/ai-docs/task-state-machine-spec.md +2209 -0
  268. package/src/services/task/state-machine/constants.ts +172 -0
  269. package/src/services/task/state-machine/guards.ts +498 -0
  270. package/src/services/task/state-machine/index.ts +28 -0
  271. package/src/services/task/state-machine/types.ts +258 -0
  272. package/src/services/task/state-machine/uiControlsComputer.ts +1135 -0
  273. package/src/services/task/taskDataNormalizer.ts +137 -0
  274. package/src/services/task/types.ts +843 -70
  275. package/src/services/task/voice/Voice.ts +1720 -0
  276. package/src/services/task/voice/WebRTC.ts +191 -0
  277. package/src/services/task/voice/wxAppVoiceMethods.ts +307 -0
  278. package/src/services/wxAppTelephonyUtils.ts +14 -0
  279. package/src/types.ts +238 -11
  280. package/src/utils/AGENTS.md +289 -0
  281. package/src/utils/PageCache.ts +38 -5
  282. package/src/utils/ai-docs/utils-spec.md +391 -0
  283. package/src/webex.js +2 -0
  284. package/test/unit/spec/cc.ts +1856 -122
  285. package/test/unit/spec/logger-proxy.ts +70 -0
  286. package/test/unit/spec/metrics/behavioral-events.ts +18 -0
  287. package/test/unit/spec/services/AddressBook.ts +37 -6
  288. package/test/unit/spec/services/AnswerCallOnWebexService.ts +223 -0
  289. package/test/unit/spec/services/ApiAiAssistant.ts +273 -0
  290. package/test/unit/spec/services/EntryPoint.ts +87 -40
  291. package/test/unit/spec/services/Queue.ts +123 -12
  292. package/test/unit/spec/services/UserPreference.ts +401 -0
  293. package/test/unit/spec/services/WebCallingService.ts +7 -1
  294. package/test/unit/spec/services/WebexCrossClientService.ts +261 -0
  295. package/test/unit/spec/services/WxAppTelephonyMercurySync.ts +113 -0
  296. package/test/unit/spec/services/config/Util.ts +85 -0
  297. package/test/unit/spec/services/config/index.ts +85 -29
  298. package/test/unit/spec/services/core/Utils.ts +481 -2
  299. package/test/unit/spec/services/core/WebexRequest.ts +3 -1
  300. package/test/unit/spec/services/core/aqm-reqs.ts +113 -1
  301. package/test/unit/spec/services/core/websocket/WebSocketManager.ts +137 -41
  302. package/test/unit/spec/services/core/websocket/connection-service.ts +3 -1
  303. package/test/unit/spec/services/task/AutoWrapup.ts +63 -0
  304. package/test/unit/spec/services/task/Task.ts +677 -0
  305. package/test/unit/spec/services/task/TaskFactory.ts +99 -0
  306. package/test/unit/spec/services/task/TaskManager.ts +2209 -918
  307. package/test/unit/spec/services/task/TaskUtils.ts +235 -0
  308. package/test/unit/spec/services/task/WebexCallingUtils.ts +153 -0
  309. package/test/unit/spec/services/task/contact.ts +33 -0
  310. package/test/unit/spec/services/task/dialer.ts +372 -96
  311. package/test/unit/spec/services/task/digital/Digital.ts +105 -0
  312. package/test/unit/spec/services/task/state-machine/TaskStateMachine.ts +3433 -0
  313. package/test/unit/spec/services/task/state-machine/guards.ts +839 -0
  314. package/test/unit/spec/services/task/state-machine/types.ts +18 -0
  315. package/test/unit/spec/services/task/state-machine/uiControlsComputer.ts +3101 -0
  316. package/test/unit/spec/services/task/taskTestUtils.ts +87 -0
  317. package/test/unit/spec/services/task/voice/Voice.ts +1523 -0
  318. package/test/unit/spec/services/task/voice/WebRTC.ts +235 -0
  319. package/test/unit/spec/services/task/voice/wxAppVoiceMethods.ts +459 -0
  320. package/umd/contact-center.min.js +2 -2
  321. package/umd/contact-center.min.js.map +1 -1
  322. package/dist/services/task/index.js +0 -1525
  323. package/dist/services/task/index.js.map +0 -1
  324. package/src/services/task/index.ts +0 -1801
  325. package/test/unit/spec/services/task/index.ts +0 -2184
@@ -0,0 +1,223 @@
1
+ import routingContact from '../contact';
2
+ import { ConsultPayload, ConsultEndPayload, ResumeRecordingPayload, TaskData, TaskResponse, DropConferenceParticipantPayload, IVoice, VoiceUIControlOptions, TaskToggleMuteOptions, TaskTransmitDtmfOptions, TransferPayLoad } from '../types';
3
+ import Task from '../Task';
4
+ import { TaskActionArgs } from '../state-machine';
5
+ import { WrapupData } from '../../config/types';
6
+ export default class Voice extends Task implements IVoice {
7
+ private static readonly WXAPP_MUTE_SYNC_RETRY_DELAY_MS;
8
+ private static readonly WXAPP_MUTE_SYNC_MAX_RETRIES;
9
+ private answerCallOnWebexService?;
10
+ private enableWxBetterTogether;
11
+ private wxAppMuted;
12
+ private wxAppAnswerPending;
13
+ private wxAppAcceptInFlight;
14
+ private wxAppMuteSyncInFlight?;
15
+ private wxAppMuteToggleInFlight?;
16
+ constructor(contact: ReturnType<typeof routingContact>, data: TaskData, callOptions?: VoiceUIControlOptions, wrapupData?: WrapupData, agentId?: string);
17
+ private getWxAppVoiceDependencies;
18
+ /** @deprecated Use {@link Voice.getWxAppVoiceDependencies} */
19
+ private getWxAppVoiceDeps;
20
+ isWebexAppCallingOffer(): boolean;
21
+ isWebexAppInboundCallingOffer(): boolean;
22
+ private setWxAppAnswerPending;
23
+ private setWxAppAcceptInFlight;
24
+ setEnableWxBetterTogether(enabled: boolean): void;
25
+ applyWxAppMuteStateFromSync(incomingCallId: string, muted: boolean): void;
26
+ getWxAppMuted(): boolean;
27
+ private static delay;
28
+ private canRetryWxAppMuteSync;
29
+ private shouldSkipWxAppMuteSync;
30
+ private applyWxAppMuteFromBackfill;
31
+ syncWxAppMuteFromCallDetails(retryAttempt?: number): Promise<boolean | undefined>;
32
+ private performWxAppMuteSync;
33
+ protected onTaskAssigned(): void;
34
+ protected onTaskHydrated(): void;
35
+ getCallingDeviceDetails(): import("../WebexCallingUtils").WebexCallingDeviceDetails;
36
+ getWebexCallingCallId(): string | null;
37
+ private createWxAppLifecycle;
38
+ private getStateMachineSnapshot;
39
+ /**
40
+ * Accepts the task. Routes to wxApp telephony answer when `enableWxBetterTogether` and wxApp offer.
41
+ */
42
+ accept(): Promise<TaskResponse>;
43
+ /**
44
+ * Declines the task. Routes wxApp inbound to telephony reject; wxApp outdial offer to cancelTask.
45
+ */
46
+ decline(): Promise<TaskResponse>;
47
+ /**
48
+ * Toggles mute for wxApp engaged telephony when `enableWxBetterTogether` is active.
49
+ */
50
+ toggleMute(options?: TaskToggleMuteOptions): Promise<void>;
51
+ /**
52
+ * Sends in-call DTMF for wxApp engaged telephony when `enableWxBetterTogether` is active.
53
+ */
54
+ transmitDtmf(options: TaskTransmitDtmfOptions): Promise<void>;
55
+ /**
56
+ * This is used to hold the task.
57
+ * @returns Promise<TaskResponse>
58
+ * @throws Error
59
+ * @example
60
+ * ```typescript
61
+ * task.hold().then(()=>{}).catch(()=>{})
62
+ * ```
63
+ * */
64
+ hold(): Promise<TaskResponse>;
65
+ /**
66
+ * This is used to resume the task.
67
+ * @returns Promise<TaskResponse>
68
+ * @throws Error
69
+ * @example
70
+ * ```typescript
71
+ * task.resume().then(()=>{}).catch(()=>{})
72
+ * ```
73
+ * */
74
+ resume(): Promise<TaskResponse>;
75
+ /**
76
+ * This is used to hold or resume the task.
77
+ * @param isHeld: boolean - true to hold the task, false to resume it
78
+ * @returns Promise<TaskResponse>
79
+ * @throws Error
80
+ * @example
81
+ * ```typescript
82
+ * task.holdResume(isHeld: true).then(()=>{}).catch(()=>{})
83
+ * ```
84
+ * */
85
+ holdResume(): Promise<TaskResponse>;
86
+ /**
87
+ * This is used to pause the call recording
88
+ * @returns Promise<TaskResponse>
89
+ * @throws Error
90
+ * @example
91
+ * ```typescript
92
+ * task.pauseRecording().then(()=>{}).catch(()=>{});
93
+ * ```
94
+ */
95
+ pauseRecording(): Promise<TaskResponse>;
96
+ /**
97
+ * This is used to pause the call recording
98
+ * @param resumeRecordingPayload
99
+ * @returns Promise<TaskResponse>
100
+ * @throws Error
101
+ * @example
102
+ * ```typescript
103
+ * task.resumeRecording(resumeRecordingPayload).then(()=>{}).catch(()=>{});
104
+ * ```
105
+ */
106
+ resumeRecording(resumeRecordingPayload?: ResumeRecordingPayload): Promise<TaskResponse>;
107
+ /**
108
+ * This is used to consult the task
109
+ * @param consultPayload
110
+ * @returns Promise<TaskResponse>
111
+ * @throws Error
112
+ * @example
113
+ * ```typescript
114
+ * const consultPayload = {
115
+ * destination: 'myBuddyAgentId',
116
+ * destinationType: DESTINATION_TYPE.AGENT,
117
+ * }
118
+ * task.consult(consultPayload).then(()=>{}).catch(()=>{});
119
+ * ```
120
+ * */
121
+ consult(consultPayload?: ConsultPayload): Promise<TaskResponse>;
122
+ /**
123
+ * This is used to end the consult session on the task.
124
+ * @param consultEndPayload - Payload indicating consult end flags and identifiers
125
+ * @returns Promise<TaskResponse>
126
+ * @throws Error
127
+ * @example
128
+ * ```typescript
129
+ * task.endConsult({
130
+ * isConsult: true,
131
+ * queueId: 'myQueueId',
132
+ * taskId: 'taskId',
133
+ * });
134
+ * ```
135
+ */
136
+ endConsult(consultEndPayload?: ConsultEndPayload): Promise<TaskResponse>;
137
+ /**
138
+ * This is used to transfer the task.
139
+ * @param payload - Transfer payload
140
+ * @returns Promise<TaskResponse>
141
+ * @throws Error
142
+ * @example
143
+ * ```typescript
144
+ * task.transfer({
145
+ * to: 'destinationId',
146
+ * destinationType: DESTINATION_TYPE.AGENT,
147
+ * consult: true, // Optional, if true will perform a consult transfer else blind transfer
148
+ * });
149
+ * ```
150
+ */
151
+ transfer(payload: TransferPayLoad): Promise<TaskResponse>;
152
+ /**
153
+ * Start a consult conference, merging main and consult calls.
154
+ */
155
+ consultConference(): Promise<TaskResponse>;
156
+ /**
157
+ * Removes another participant from an active conference.
158
+ * Completion is correlated with ParticipantLeftConference by the AQM request layer.
159
+ * @param payload - Participant identifier to remove
160
+ * @returns Promise<TaskResponse>
161
+ */
162
+ dropConferenceParticipant(payload: DropConferenceParticipantPayload): Promise<TaskResponse>;
163
+ /**
164
+ * Exit from a conference call.
165
+ * Per conference-spec.md:
166
+ * - Primary agent exits to wrapup
167
+ * - Non-primary agent exits to available/connected
168
+ * - Other participants continue the call
169
+ *
170
+ * @returns Promise<TaskResponse>
171
+ * @throws Error if not in conference or exit fails
172
+ * @example
173
+ * ```typescript
174
+ * task.exitConference().then(() => {}).catch(() => {});
175
+ * ```
176
+ */
177
+ exitConference(): Promise<TaskResponse>;
178
+ /**
179
+ * Transfer the conference to another participant.
180
+ * Per conference-spec.md: Only primary agent can transfer conference.
181
+ * After transfer, the transferring agent exits to wrapup.
182
+ *
183
+ * @returns Promise<TaskResponse>
184
+ * @throws Error if not in conference or transfer fails
185
+ * @example
186
+ * ```typescript
187
+ * task.transferConference().then(() => {}).catch(() => {});
188
+ * ```
189
+ */
190
+ transferConference(): Promise<TaskResponse>;
191
+ /**
192
+ * Toggle between consult call and main call during consulting.
193
+ * If on consult leg (consultCallHeld = false), switches to main call by holding consult.
194
+ * If on main call (consultCallHeld = true), switches to consult by resuming consult.
195
+ *
196
+ * @returns Promise<TaskResponse>
197
+ * @throws Error if not in CONSULTING state or no consult media resource
198
+ * @example
199
+ * ```typescript
200
+ * await task.switchCall();
201
+ * ```
202
+ */
203
+ switchCall(): Promise<TaskResponse>;
204
+ protected getChannelSpecificActionOverrides(): {
205
+ emitTaskHold: ({ event }: TaskActionArgs) => void;
206
+ emitTaskResume: ({ event }: TaskActionArgs) => void;
207
+ emitTaskRecordingStarted: ({ event }: TaskActionArgs) => void;
208
+ emitTaskRecordingPaused: ({ event }: TaskActionArgs) => void;
209
+ emitTaskRecordingPauseFailed: ({ event }: TaskActionArgs) => void;
210
+ emitTaskRecordingResumed: ({ event }: TaskActionArgs) => void;
211
+ emitTaskRecordingResumeFailed: ({ event }: TaskActionArgs) => void;
212
+ emitTaskParticipantJoined: ({ event }: TaskActionArgs) => void;
213
+ emitTaskParticipantLeft: ({ event }: TaskActionArgs) => void;
214
+ emitTaskConferenceStarted: ({ event }: TaskActionArgs) => void;
215
+ emitTaskConferenceEnded: ({ event }: TaskActionArgs) => void;
216
+ emitTaskConferenceFailed: ({ event }: TaskActionArgs) => void;
217
+ emitTaskExitConference: ({ event }: TaskActionArgs) => void;
218
+ emitTaskTransferConference: ({ event }: TaskActionArgs) => void;
219
+ emitTaskSwitchCall: ({ event }: TaskActionArgs) => void;
220
+ emitTaskTransferConferenceFailed: ({ event }: TaskActionArgs) => void;
221
+ emitTaskOutdialFailed: ({ event }: TaskActionArgs) => void;
222
+ };
223
+ }
@@ -0,0 +1,53 @@
1
+ import routingContact from '../contact';
2
+ import { TaskData, TaskResponse, IWebRTC, VoiceUIControlOptions, TaskToggleMuteOptions } from '../types';
3
+ import Voice from './Voice';
4
+ import WebCallingService from '../../WebCallingService';
5
+ import { WrapupData } from '../../config/types';
6
+ export default class WebRTC extends Voice implements IWebRTC {
7
+ private localAudioStream;
8
+ private webCallingService;
9
+ constructor(contact: ReturnType<typeof routingContact>, webCallingService: WebCallingService, data: TaskData, callOptions?: VoiceUIControlOptions, wrapupData?: WrapupData, agentId?: string);
10
+ private registerWebCallListeners;
11
+ private handleRemoteMedia;
12
+ /**
13
+ * This method is used to unregister the web call listeners.
14
+ * @returns void
15
+ * @example
16
+ * ```typescript
17
+ * task.unregisterWebCallListeners();
18
+ * ```
19
+ */
20
+ unregisterWebCallListeners(): void;
21
+ /**
22
+ * This is used for incoming task accept by agent.
23
+ *
24
+ * @returns Promise<TaskResponse>
25
+ * @throws Error
26
+ * @example
27
+ * ```typescript
28
+ * task.accept().then(()=>{}).catch(()=>{})
29
+ * ```
30
+ */
31
+ accept(): Promise<TaskResponse>;
32
+ /**
33
+ * This is used for the incoming task decline by agent.
34
+ *
35
+ * @returns Promise<TaskResponse>
36
+ * @throws Error
37
+ * @example
38
+ * ```typescript
39
+ * task.decline().then(()=>{}).catch(()=>{})
40
+ * ```
41
+ */
42
+ decline(): Promise<TaskResponse>;
43
+ /**
44
+ * This is used for the placing the call in mute or unmute by the agent.
45
+ *
46
+ * @throws Error
47
+ * @example
48
+ * ```typescript
49
+ * task.toggleMute().then(()=>{}).catch(()=>{})
50
+ * ```
51
+ */
52
+ toggleMute(options?: TaskToggleMuteOptions): Promise<void>;
53
+ }
@@ -0,0 +1,52 @@
1
+ import AnswerCallOnWebexService from '../../AnswerCallOnWebexService';
2
+ import { TaskData, TaskToggleMuteOptions, TaskTransmitDtmfOptions } from '../types';
3
+ import { TaskState } from '../state-machine';
4
+ import { WebexCallingDeviceDetails } from '../WebexCallingUtils';
5
+ export type WxAppVoiceDependencies = {
6
+ enableWxBetterTogether: boolean;
7
+ answerCallOnWebexService?: AnswerCallOnWebexService;
8
+ agentId?: string;
9
+ getTaskData: () => TaskData;
10
+ getTaskState: () => TaskState | undefined;
11
+ getWxAppMuted: () => boolean;
12
+ setWxAppMuted: (muted: boolean) => void;
13
+ };
14
+ /** @deprecated Use {@link WxAppVoiceDependencies} */
15
+ export type WxAppVoiceDeps = WxAppVoiceDependencies;
16
+ export type WxAppVoiceLifecycle = {
17
+ setWxAppAcceptInFlight: (inFlight: boolean) => void;
18
+ setWxAppAnswerPending: (pending: boolean) => void;
19
+ resetWxAppMuted: () => void;
20
+ syncWxAppMuteFromCallDetails: () => Promise<boolean | undefined>;
21
+ mapWxAppVoiceError: (error: unknown, method: string) => never;
22
+ };
23
+ export declare function getCallingDeviceDetails(deps: WxAppVoiceDependencies): WebexCallingDeviceDetails | undefined;
24
+ export declare function isWebexAppCallingOffer(deps: WxAppVoiceDependencies): boolean;
25
+ /** Inbound wxApp offer only — outdial decline uses CC routing, not telephony reject. */
26
+ export declare function isWebexAppInboundCallingOffer(deps: WxAppVoiceDependencies): boolean;
27
+ export declare function getWebexCallingCallId(deps: WxAppVoiceDependencies): string | null;
28
+ export declare function getWxAppLineOwnerId(deps: WxAppVoiceDependencies): string | undefined;
29
+ export declare function resolveWxAppLineOwnerId(deps: WxAppVoiceDependencies, override?: string): string | undefined;
30
+ export declare function acceptOnWebex(deps: WxAppVoiceDependencies, options?: {
31
+ lineOwnerId?: string;
32
+ }): Promise<void>;
33
+ export declare function rejectOnWebex(deps: WxAppVoiceDependencies, options?: {
34
+ lineOwnerId?: string;
35
+ }): Promise<void>;
36
+ export declare function toggleMuteOnWebex(deps: WxAppVoiceDependencies, options?: {
37
+ lineOwnerId?: string;
38
+ muted?: boolean;
39
+ }): Promise<void>;
40
+ export declare function transmitDtmfOnWebex(deps: WxAppVoiceDependencies, options: {
41
+ dtmf: string;
42
+ lineOwnerId?: string;
43
+ }): Promise<void>;
44
+ export declare function runWxAppAccept(deps: WxAppVoiceDependencies, lifecycle: WxAppVoiceLifecycle, options?: {
45
+ lineOwnerId?: string;
46
+ }): Promise<void>;
47
+ export declare function runWxAppReject(deps: WxAppVoiceDependencies, lifecycle: WxAppVoiceLifecycle, options?: {
48
+ lineOwnerId?: string;
49
+ }): Promise<void>;
50
+ export declare function runWxAppToggleMute(deps: WxAppVoiceDependencies, lifecycle: WxAppVoiceLifecycle, options?: TaskToggleMuteOptions): Promise<void>;
51
+ export declare function runWxAppTransmitDtmf(deps: WxAppVoiceDependencies, lifecycle: WxAppVoiceLifecycle, options: TaskTransmitDtmfOptions): Promise<void>;
52
+ export declare function mapWxAppVoiceError(error: unknown, method: string, module: string): never;
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Expected Hydra responses when mute backfill races call creation (WXCC-6026).
3
+ * These must not be logged as errors — see task-spec wxApp mute backfill guard.
4
+ */
5
+ export declare function isWxAppCallNotFoundError(error: unknown): boolean;