@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.
- package/.sdd/manifest.json +883 -0
- package/AGENTS.md +94 -0
- package/ai-docs/ARCHITECTURE.md +168 -0
- package/ai-docs/CONTRACTS.md +50 -0
- package/ai-docs/GETTING_STARTED.md +168 -0
- package/ai-docs/GLOSSARY.md +43 -0
- package/ai-docs/README.md +138 -0
- package/ai-docs/REVIEW_CHECKLIST.md +41 -0
- package/ai-docs/RULES.md +444 -0
- package/ai-docs/SECURITY.md +52 -0
- package/ai-docs/SERVICE_STATE.md +48 -0
- package/ai-docs/SPEC_INDEX.md +65 -0
- package/ai-docs/adr/0001-spec-source-policy.md +55 -0
- package/ai-docs/adr/README.md +8 -0
- package/ai-docs/adr/_adr-template.md +31 -0
- package/ai-docs/contact-center-spec.md +359 -0
- package/ai-docs/features/consult-transfer-list-policy/spec/feature-spec.md +362 -0
- package/ai-docs/features/generated-spec-conformance-fidelity-remediation/spec/feature-spec.md +117 -0
- package/ai-docs/features/residual-warning-coverage-completion/spec/feature-spec.md +203 -0
- package/ai-docs/features/validator-code-fidelity-drift-fix/spec/feature-spec.md +315 -0
- package/ai-docs/patterns/event-driven-patterns.md +485 -0
- package/ai-docs/patterns/testing-patterns.md +480 -0
- package/ai-docs/patterns/typescript-patterns.md +365 -0
- package/ai-docs/templates/README.md +102 -0
- package/ai-docs/templates/documentation/create-agents-md.md +240 -0
- package/ai-docs/templates/documentation/create-architecture-md.md +295 -0
- package/ai-docs/templates/existing-service/bug-fix.md +254 -0
- package/ai-docs/templates/existing-service/feature-enhancement.md +450 -0
- package/ai-docs/templates/new-method/00-master.md +80 -0
- package/ai-docs/templates/new-method/01-requirements.md +232 -0
- package/ai-docs/templates/new-method/02-implementation.md +295 -0
- package/ai-docs/templates/new-method/03-tests.md +201 -0
- package/ai-docs/templates/new-method/04-validation.md +141 -0
- package/ai-docs/templates/new-service/00-master.md +109 -0
- package/ai-docs/templates/new-service/01-pre-questions.md +159 -0
- package/ai-docs/templates/new-service/02-code-generation.md +346 -0
- package/ai-docs/templates/new-service/03-integration.md +178 -0
- package/ai-docs/templates/new-service/04-test-generation.md +205 -0
- package/ai-docs/templates/new-service/05-validation.md +145 -0
- package/dist/cc.js +818 -59
- package/dist/cc.js.map +1 -1
- package/dist/config.js +13 -0
- package/dist/config.js.map +1 -1
- package/dist/constants.js +31 -3
- package/dist/constants.js.map +1 -1
- package/dist/index.js +27 -5
- package/dist/index.js.map +1 -1
- package/dist/metrics/behavioral-events.js +127 -0
- package/dist/metrics/behavioral-events.js.map +1 -1
- package/dist/metrics/constants.js +34 -3
- package/dist/metrics/constants.js.map +1 -1
- package/dist/services/AddressBook.js +18 -15
- package/dist/services/AddressBook.js.map +1 -1
- package/dist/services/AnswerCallOnWebexService.js +174 -0
- package/dist/services/AnswerCallOnWebexService.js.map +1 -0
- package/dist/services/ApiAiAssistant.js +318 -0
- package/dist/services/ApiAiAssistant.js.map +1 -0
- package/dist/services/EntryPoint.js +46 -68
- package/dist/services/EntryPoint.js.map +1 -1
- package/dist/services/Queue.js +27 -22
- package/dist/services/Queue.js.map +1 -1
- package/dist/services/UserPreference.js +427 -0
- package/dist/services/UserPreference.js.map +1 -0
- package/dist/services/WebexCrossClientService.js +171 -0
- package/dist/services/WebexCrossClientService.js.map +1 -0
- package/dist/services/WxAppTelephonyMercurySync.js +93 -0
- package/dist/services/WxAppTelephonyMercurySync.js.map +1 -0
- package/dist/services/agent/types.js.map +1 -1
- package/dist/services/config/Util.js +11 -4
- package/dist/services/config/Util.js.map +1 -1
- package/dist/services/config/constants.js +45 -8
- package/dist/services/config/constants.js.map +1 -1
- package/dist/services/config/index.js +41 -2
- package/dist/services/config/index.js.map +1 -1
- package/dist/services/config/types.js +70 -8
- package/dist/services/config/types.js.map +1 -1
- package/dist/services/constants.js +27 -1
- package/dist/services/constants.js.map +1 -1
- package/dist/services/core/Err.js.map +1 -1
- package/dist/services/core/Utils.js +122 -25
- package/dist/services/core/Utils.js.map +1 -1
- package/dist/services/core/WebexRequest.js +6 -2
- package/dist/services/core/WebexRequest.js.map +1 -1
- package/dist/services/core/aqm-reqs.js +119 -30
- package/dist/services/core/aqm-reqs.js.map +1 -1
- package/dist/services/core/types.js.map +1 -1
- package/dist/services/core/websocket/WebSocketManager.js +22 -6
- package/dist/services/core/websocket/WebSocketManager.js.map +1 -1
- package/dist/services/core/websocket/connection-service.js +3 -1
- package/dist/services/core/websocket/connection-service.js.map +1 -1
- package/dist/services/core/websocket/types.js.map +1 -1
- package/dist/services/index.js +6 -0
- package/dist/services/index.js.map +1 -1
- package/dist/services/task/Task.js +754 -0
- package/dist/services/task/Task.js.map +1 -0
- package/dist/services/task/TaskFactory.js +49 -0
- package/dist/services/task/TaskFactory.js.map +1 -0
- package/dist/services/task/TaskManager.js +1073 -447
- package/dist/services/task/TaskManager.js.map +1 -1
- package/dist/services/task/TaskUtils.js +220 -23
- package/dist/services/task/TaskUtils.js.map +1 -1
- package/dist/services/task/WebexCallingUtils.js +70 -0
- package/dist/services/task/WebexCallingUtils.js.map +1 -0
- package/dist/services/task/constants.js +26 -2
- package/dist/services/task/constants.js.map +1 -1
- package/dist/services/task/contact.js +29 -0
- package/dist/services/task/contact.js.map +1 -1
- package/dist/services/task/dialer.js +129 -0
- package/dist/services/task/dialer.js.map +1 -1
- package/dist/services/task/digital/Digital.js +78 -0
- package/dist/services/task/digital/Digital.js.map +1 -0
- package/dist/services/task/state-machine/TaskStateMachine.js +971 -0
- package/dist/services/task/state-machine/TaskStateMachine.js.map +1 -0
- package/dist/services/task/state-machine/actions.js +572 -0
- package/dist/services/task/state-machine/actions.js.map +1 -0
- package/dist/services/task/state-machine/constants.js +161 -0
- package/dist/services/task/state-machine/constants.js.map +1 -0
- package/dist/services/task/state-machine/guards.js +409 -0
- package/dist/services/task/state-machine/guards.js.map +1 -0
- package/dist/services/task/state-machine/index.js +53 -0
- package/dist/services/task/state-machine/index.js.map +1 -0
- package/dist/services/task/state-machine/types.js +54 -0
- package/dist/services/task/state-machine/types.js.map +1 -0
- package/dist/services/task/state-machine/uiControlsComputer.js +703 -0
- package/dist/services/task/state-machine/uiControlsComputer.js.map +1 -0
- package/dist/services/task/taskDataNormalizer.js +99 -0
- package/dist/services/task/taskDataNormalizer.js.map +1 -0
- package/dist/services/task/types.js +243 -5
- package/dist/services/task/types.js.map +1 -1
- package/dist/services/task/voice/Voice.js +1380 -0
- package/dist/services/task/voice/Voice.js.map +1 -0
- package/dist/services/task/voice/WebRTC.js +152 -0
- package/dist/services/task/voice/WebRTC.js.map +1 -0
- package/dist/services/task/voice/wxAppVoiceMethods.js +201 -0
- package/dist/services/task/voice/wxAppVoiceMethods.js.map +1 -0
- package/dist/services/wxAppTelephonyUtils.js +19 -0
- package/dist/services/wxAppTelephonyUtils.js.map +1 -0
- package/dist/types/cc.d.ts +967 -0
- package/dist/types/config.d.ts +79 -0
- package/dist/types/constants.d.ts +74 -0
- package/dist/types/index.d.ts +201 -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 +183 -0
- package/dist/types/services/AddressBook.d.ts +75 -0
- package/dist/types/services/AnswerCallOnWebexService.d.ts +37 -0
- package/dist/types/services/ApiAiAssistant.d.ts +49 -0
- package/dist/types/services/EntryPoint.d.ts +69 -0
- package/dist/types/services/Queue.d.ts +78 -0
- package/dist/types/services/UserPreference.d.ts +118 -0
- package/dist/types/services/WebCallingService.d.ts +1 -0
- package/dist/types/services/WebexCrossClientService.d.ts +28 -0
- package/dist/types/services/WxAppTelephonyMercurySync.d.ts +28 -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 +20 -0
- package/dist/types/services/config/constants.d.ts +273 -0
- package/dist/types/services/config/index.d.ts +177 -0
- package/dist/types/services/config/types.d.ts +1381 -0
- package/dist/types/services/constants.d.ts +110 -0
- package/dist/types/services/core/Err.d.ts +127 -0
- package/dist/types/services/core/GlobalTypes.d.ts +58 -0
- package/dist/types/services/core/Utils.d.ts +121 -0
- package/dist/types/services/core/WebexRequest.d.ts +23 -0
- package/dist/types/services/core/aqm-reqs.d.ts +65 -0
- package/dist/types/services/core/constants.d.ts +99 -0
- package/dist/types/services/core/types.d.ts +49 -0
- package/dist/types/services/core/websocket/WebSocketManager.d.ts +36 -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 +54 -0
- package/dist/types/services/task/AutoWrapup.d.ts +40 -0
- package/dist/types/services/task/Task.d.ts +175 -0
- package/dist/types/services/task/TaskFactory.d.ts +13 -0
- package/dist/types/services/task/TaskManager.d.ts +1 -0
- package/dist/types/services/task/TaskUtils.d.ts +138 -0
- package/dist/types/services/task/WebexCallingUtils.d.ts +11 -0
- package/dist/types/services/task/constants.d.ts +94 -0
- package/dist/types/services/task/contact.d.ts +73 -0
- package/dist/types/services/task/dialer.d.ts +73 -0
- package/dist/types/services/task/digital/Digital.d.ts +22 -0
- package/dist/types/services/task/state-machine/TaskStateMachine.d.ts +1398 -0
- package/dist/types/services/task/state-machine/actions.d.ts +10 -0
- package/dist/types/services/task/state-machine/constants.d.ts +107 -0
- package/dist/types/services/task/state-machine/guards.d.ts +103 -0
- package/dist/types/services/task/state-machine/index.d.ts +13 -0
- package/dist/types/services/task/state-machine/types.d.ts +277 -0
- package/dist/types/services/task/state-machine/uiControlsComputer.d.ts +9 -0
- package/dist/types/services/task/taskDataNormalizer.d.ts +10 -0
- package/dist/types/services/task/types.d.ts +1933 -0
- package/dist/types/services/task/voice/Voice.d.ts +223 -0
- package/dist/types/services/task/voice/WebRTC.d.ts +53 -0
- package/dist/types/services/task/voice/wxAppVoiceMethods.d.ts +52 -0
- package/dist/types/services/wxAppTelephonyUtils.d.ts +5 -0
- package/dist/types/types.d.ts +784 -0
- package/dist/types/utils/PageCache.d.ts +190 -0
- package/dist/types/webex-config.d.ts +53 -0
- package/dist/types/webex.d.ts +8 -0
- package/dist/types.js +137 -3
- package/dist/types.js.map +1 -1
- package/dist/utils/PageCache.js +19 -5
- package/dist/utils/PageCache.js.map +1 -1
- package/dist/webex.js +14 -2
- package/dist/webex.js.map +1 -1
- package/package.json +16 -12
- package/src/cc.ts +983 -60
- package/src/config.ts +13 -0
- package/src/constants.ts +29 -1
- package/src/index.ts +26 -5
- package/src/metrics/ai-docs/AGENTS.md +350 -0
- package/src/metrics/ai-docs/ARCHITECTURE.md +338 -0
- package/src/metrics/ai-docs/metrics-spec.md +860 -0
- package/src/metrics/behavioral-events.ts +134 -0
- package/src/metrics/constants.ts +39 -3
- package/src/services/AddressBook.ts +17 -6
- package/src/services/AnswerCallOnWebexService.ts +206 -0
- package/src/services/ApiAiAssistant.ts +412 -0
- package/src/services/EntryPoint.ts +59 -60
- package/src/services/Queue.ts +29 -12
- package/src/services/UserPreference.ts +509 -0
- package/src/services/WebexCrossClientService.ts +212 -0
- package/src/services/WxAppTelephonyMercurySync.ts +115 -0
- package/src/services/agent/ai-docs/AGENTS.md +240 -0
- package/src/services/agent/ai-docs/ARCHITECTURE.md +304 -0
- package/src/services/agent/ai-docs/agent-spec.md +504 -0
- package/src/services/agent/types.ts +1 -1
- package/src/services/ai-docs/AGENTS.md +386 -0
- package/src/services/ai-docs/services-spec.md +497 -0
- package/src/services/config/Util.ts +13 -2
- package/src/services/config/ai-docs/AGENTS.md +255 -0
- package/src/services/config/ai-docs/ARCHITECTURE.md +426 -0
- package/src/services/config/ai-docs/config-spec.md +675 -0
- package/src/services/config/constants.ts +47 -7
- package/src/services/config/index.ts +45 -1
- package/src/services/config/types.ts +253 -11
- package/src/services/constants.ts +29 -0
- package/src/services/core/Err.ts +4 -0
- package/src/services/core/Utils.ts +143 -30
- package/src/services/core/WebexRequest.ts +3 -1
- package/src/services/core/ai-docs/AGENTS.md +381 -0
- package/src/services/core/ai-docs/ARCHITECTURE.md +698 -0
- package/src/services/core/ai-docs/core-spec.md +787 -0
- package/src/services/core/aqm-reqs.ts +125 -32
- package/src/services/core/types.ts +2 -0
- package/src/services/core/websocket/WebSocketManager.ts +23 -6
- package/src/services/core/websocket/connection-service.ts +5 -1
- package/src/services/core/websocket/types.ts +1 -1
- package/src/services/index.ts +4 -0
- package/src/services/task/Task.ts +908 -0
- package/src/services/task/TaskFactory.ts +60 -0
- package/src/services/task/TaskManager.ts +1291 -513
- package/src/services/task/TaskUtils.ts +314 -24
- package/src/services/task/WebexCallingUtils.ts +136 -0
- package/src/services/task/ai-docs/AGENTS.md +457 -0
- package/src/services/task/ai-docs/ARCHITECTURE.md +595 -0
- package/src/services/task/ai-docs/task-spec.md +1469 -0
- package/src/services/task/constants.ts +26 -0
- package/src/services/task/contact.ts +30 -0
- package/src/services/task/dialer.ts +136 -1
- package/src/services/task/digital/Digital.ts +97 -0
- package/src/services/task/state-machine/TaskStateMachine.ts +1313 -0
- package/src/services/task/state-machine/actions.ts +741 -0
- package/src/services/task/state-machine/ai-docs/AGENTS.md +462 -0
- package/src/services/task/state-machine/ai-docs/ARCHITECTURE.md +1146 -0
- package/src/services/task/state-machine/ai-docs/task-state-machine-spec.md +2209 -0
- package/src/services/task/state-machine/constants.ts +172 -0
- package/src/services/task/state-machine/guards.ts +498 -0
- package/src/services/task/state-machine/index.ts +28 -0
- package/src/services/task/state-machine/types.ts +258 -0
- package/src/services/task/state-machine/uiControlsComputer.ts +1135 -0
- package/src/services/task/taskDataNormalizer.ts +137 -0
- package/src/services/task/types.ts +843 -70
- package/src/services/task/voice/Voice.ts +1720 -0
- package/src/services/task/voice/WebRTC.ts +191 -0
- package/src/services/task/voice/wxAppVoiceMethods.ts +307 -0
- package/src/services/wxAppTelephonyUtils.ts +14 -0
- package/src/types.ts +238 -11
- package/src/utils/AGENTS.md +289 -0
- package/src/utils/PageCache.ts +38 -5
- package/src/utils/ai-docs/utils-spec.md +391 -0
- package/src/webex.js +2 -0
- package/test/unit/spec/cc.ts +1856 -122
- package/test/unit/spec/logger-proxy.ts +70 -0
- package/test/unit/spec/metrics/behavioral-events.ts +18 -0
- package/test/unit/spec/services/AddressBook.ts +37 -6
- package/test/unit/spec/services/AnswerCallOnWebexService.ts +223 -0
- package/test/unit/spec/services/ApiAiAssistant.ts +273 -0
- package/test/unit/spec/services/EntryPoint.ts +87 -40
- package/test/unit/spec/services/Queue.ts +123 -12
- package/test/unit/spec/services/UserPreference.ts +401 -0
- package/test/unit/spec/services/WebCallingService.ts +7 -1
- package/test/unit/spec/services/WebexCrossClientService.ts +261 -0
- package/test/unit/spec/services/WxAppTelephonyMercurySync.ts +113 -0
- package/test/unit/spec/services/config/Util.ts +85 -0
- package/test/unit/spec/services/config/index.ts +85 -29
- package/test/unit/spec/services/core/Utils.ts +481 -2
- package/test/unit/spec/services/core/WebexRequest.ts +3 -1
- package/test/unit/spec/services/core/aqm-reqs.ts +113 -1
- package/test/unit/spec/services/core/websocket/WebSocketManager.ts +137 -41
- package/test/unit/spec/services/core/websocket/connection-service.ts +3 -1
- package/test/unit/spec/services/task/AutoWrapup.ts +63 -0
- package/test/unit/spec/services/task/Task.ts +677 -0
- package/test/unit/spec/services/task/TaskFactory.ts +99 -0
- package/test/unit/spec/services/task/TaskManager.ts +2209 -918
- package/test/unit/spec/services/task/TaskUtils.ts +235 -0
- package/test/unit/spec/services/task/WebexCallingUtils.ts +153 -0
- package/test/unit/spec/services/task/contact.ts +33 -0
- package/test/unit/spec/services/task/dialer.ts +372 -96
- package/test/unit/spec/services/task/digital/Digital.ts +105 -0
- package/test/unit/spec/services/task/state-machine/TaskStateMachine.ts +3433 -0
- package/test/unit/spec/services/task/state-machine/guards.ts +839 -0
- package/test/unit/spec/services/task/state-machine/types.ts +18 -0
- package/test/unit/spec/services/task/state-machine/uiControlsComputer.ts +3101 -0
- package/test/unit/spec/services/task/taskTestUtils.ts +87 -0
- package/test/unit/spec/services/task/voice/Voice.ts +1523 -0
- package/test/unit/spec/services/task/voice/WebRTC.ts +235 -0
- package/test/unit/spec/services/task/voice/wxAppVoiceMethods.ts +459 -0
- package/umd/contact-center.min.js +2 -2
- package/umd/contact-center.min.js.map +1 -1
- package/dist/services/task/index.js +0 -1525
- package/dist/services/task/index.js.map +0 -1
- package/src/services/task/index.ts +0 -1801
- 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;
|