@webex/contact-center 3.12.0-next.149 → 3.12.0-next.150

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 (37) hide show
  1. package/.sdd/manifest.json +1 -1
  2. package/ai-docs/CONTRACTS.md +1 -0
  3. package/dist/cc.js +4 -4
  4. package/dist/cc.js.map +1 -1
  5. package/dist/index.js.map +1 -1
  6. package/dist/services/config/Util.js +38 -45
  7. package/dist/services/config/Util.js.map +1 -1
  8. package/dist/services/config/constants.js +15 -71
  9. package/dist/services/config/constants.js.map +1 -1
  10. package/dist/services/config/index.js +49 -226
  11. package/dist/services/config/index.js.map +1 -1
  12. package/dist/services/config/types.js +33 -11
  13. package/dist/services/config/types.js.map +1 -1
  14. package/dist/types/cc.d.ts +3 -3
  15. package/dist/types/index.d.ts +16 -8
  16. package/dist/types/services/config/Util.d.ts +4 -8
  17. package/dist/types/services/config/constants.d.ts +15 -71
  18. package/dist/types/services/config/index.d.ts +16 -64
  19. package/dist/types/services/config/types.d.ts +97 -160
  20. package/dist/webex.js +1 -1
  21. package/package.json +1 -1
  22. package/src/cc.ts +4 -4
  23. package/src/index.ts +16 -8
  24. package/src/services/agent/ai-docs/AGENTS.md +1 -1
  25. package/src/services/config/Util.ts +43 -82
  26. package/src/services/config/ai-docs/AGENTS.md +34 -39
  27. package/src/services/config/ai-docs/ARCHITECTURE.md +88 -101
  28. package/src/services/config/ai-docs/config-spec.md +115 -132
  29. package/src/services/config/constants.ts +18 -80
  30. package/src/services/config/index.ts +52 -278
  31. package/src/services/config/types.ts +101 -185
  32. package/test/unit/spec/index.ts +6 -2
  33. package/test/unit/spec/services/config/Util.ts +442 -70
  34. package/test/unit/spec/services/config/index.ts +246 -544
  35. package/typedoc.md +1 -1
  36. package/umd/contact-center.min.js +2 -2
  37. package/umd/contact-center.min.js.map +1 -1
@@ -257,7 +257,7 @@ export type WebSocketEvent = {
257
257
  };
258
258
 
259
259
  /**
260
- * Represents the response from getUserUsingCI method.
260
+ * Agent identity carried by the `user` section of the user desktop-login aggregate.
261
261
  */
262
262
  export type AgentResponse = {
263
263
  /**
@@ -290,16 +290,6 @@ export type AgentResponse = {
290
290
  */
291
291
  email: string;
292
292
 
293
- /**
294
- * Team IDs assigned to the agent.
295
- */
296
- teamIds: string[];
297
-
298
- /**
299
- * Multimedia profile ID associated with the agent.
300
- */
301
- multimediaProfileId: string;
302
-
303
293
  /**
304
294
  * Skill profile ID of the agent.
305
295
  */
@@ -311,9 +301,10 @@ export type AgentResponse = {
311
301
  siteId: string;
312
302
 
313
303
  /**
314
- * Database ID of the agent.
304
+ * Database ID of the agent, distinct from `ciUserId`. Passed as `userDbId` to the team lookup,
305
+ * which sends it as the backend's `filter=userId==` value.
315
306
  */
316
- dbId?: string;
307
+ dbId: string;
317
308
 
318
309
  /**
319
310
  * The default dialed number of the agent.
@@ -323,36 +314,12 @@ export type AgentResponse = {
323
314
  };
324
315
 
325
316
  /**
326
- * Represents the response from getDesktopProfileById method.
317
+ * Desktop Profile settings carried by the `agentProfile` section of the user desktop-login
318
+ * aggregate.
327
319
  */
328
- export type DesktopProfileResponse = {
329
- /**
330
- * Unique identifier of the agent profile configuration.
331
- */
332
- id: string;
333
-
334
- /**
335
- * Display name for the agent profile.
336
- */
337
- name: string;
338
-
320
+ export type AgentProfile = {
339
321
  /**
340
- * Description of the agent profile.
341
- */
342
- description: string;
343
-
344
- /**
345
- * Parent entity type for the profile (for example ORGANIZATION).
346
- */
347
- parentType: string;
348
-
349
- /**
350
- * Indicates whether screen pop is enabled.
351
- */
352
- screenPopup: boolean;
353
-
354
- /**
355
- * Represents the voice options of an agent.
322
+ * Represents the voice options of an agent. The order is nondeterministic; treat as a set.
356
323
  */
357
324
  loginVoiceOptions: LoginOption[];
358
325
 
@@ -366,16 +333,6 @@ export type DesktopProfileResponse = {
366
333
  */
367
334
  accessIdleCode: string;
368
335
 
369
- /**
370
- * Wrap-up codes list that the agents can select when they wrap up a contact.
371
- */
372
- wrapUpCodes: string[];
373
-
374
- /**
375
- * Idle codes list that the agents can select in Agent Desktop.
376
- */
377
- idleCodes: string[];
378
-
379
336
  /**
380
337
  * Dial plan enabled for the agent.
381
338
  */
@@ -394,12 +351,7 @@ export type DesktopProfileResponse = {
394
351
  /**
395
352
  * Whether the agent personal greeting is enabled.
396
353
  */
397
- agentPersonalGreeting: boolean;
398
-
399
- /**
400
- * Auto answer allowed.
401
- */
402
- autoAnswer: boolean;
354
+ agentPersonalGreeting?: boolean;
403
355
 
404
356
  /**
405
357
  * Auto wrap-up after seconds.
@@ -421,31 +373,16 @@ export type DesktopProfileResponse = {
421
373
  */
422
374
  accessQueue: CollaborationAccess;
423
375
 
424
- /**
425
- * Queue identifiers available to the agent when access is SPECIFIC.
426
- */
427
- queues: string[];
428
-
429
376
  /**
430
377
  * Access control for entry points assigned to the agent.
431
378
  */
432
379
  accessEntryPoint: CollaborationAccess;
433
380
 
434
- /**
435
- * Entry point identifiers available to the agent when access is SPECIFIC.
436
- */
437
- entryPoints: string[];
438
-
439
381
  /**
440
382
  * Access control for buddy teams assigned to the agent.
441
383
  */
442
384
  accessBuddyTeam: CollaborationAccess;
443
385
 
444
- /**
445
- * Buddy team identifiers available to the agent when access is SPECIFIC.
446
- */
447
- buddyTeams: string[];
448
-
449
386
  /**
450
387
  * Outdial enabled for the agent.
451
388
  */
@@ -461,6 +398,11 @@ export type DesktopProfileResponse = {
461
398
  */
462
399
  outdialANIId: string;
463
400
 
401
+ /**
402
+ * Whether the agent can schedule and manage callbacks.
403
+ */
404
+ scheduleAndManageCallBack?: boolean;
405
+
464
406
  /**
465
407
  * Consult to queue allowed.
466
408
  */
@@ -469,19 +411,14 @@ export type DesktopProfileResponse = {
469
411
  /**
470
412
  * Address book ID of the agent.
471
413
  */
472
- addressBookId: string;
414
+ addressBookId?: string;
473
415
 
474
416
  /**
475
417
  * Viewable statistics of the agent.
476
418
  */
477
419
  viewableStatistics: {
478
- id: string;
479
420
  agentStats: boolean;
480
- accessQueueStats: string;
481
- contactServiceQueues: string[];
482
- loggedInTeamStats: boolean;
483
- accessTeamStats: string;
484
- teams: string[];
421
+ aiAgentPerformance?: boolean;
485
422
  };
486
423
 
487
424
  /**
@@ -489,16 +426,6 @@ export type DesktopProfileResponse = {
489
426
  */
490
427
  agentDNValidation: string;
491
428
 
492
- /**
493
- * Additional DN validation criteria configured for the agent.
494
- */
495
- agentDNValidationCriterions: string[];
496
-
497
- /**
498
- * Dial plans of the agent.
499
- */
500
- dialPlans: string[];
501
-
502
429
  /**
503
430
  * Timeout desktop inactivity custom enabled.
504
431
  */
@@ -507,52 +434,7 @@ export type DesktopProfileResponse = {
507
434
  /**
508
435
  * Timeout desktop inactivity minutes.
509
436
  */
510
- timeoutDesktopInactivityMins: number;
511
-
512
- /**
513
- * Show user details in Microsoft enabled or not.
514
- */
515
- showUserDetailsMS: boolean;
516
-
517
- /**
518
- * State synchronization in Microsoft enabled or not.
519
- */
520
- stateSynchronizationMS: boolean;
521
-
522
- /**
523
- * Show user details in Webex enabled or not.
524
- */
525
- showUserDetailsWebex: boolean;
526
-
527
- /**
528
- * State synchronization in Webex enabled or not.
529
- */
530
- stateSynchronizationWebex: boolean;
531
-
532
- /**
533
- * Threshold rules configured for the agent profile.
534
- */
535
- thresholdRules: Array<Record<string, string | number>>;
536
-
537
- /**
538
- * Whether the agent profile is currently active.
539
- */
540
- active: boolean;
541
-
542
- /**
543
- * Whether this profile is the system default.
544
- */
545
- systemDefault: boolean;
546
-
547
- /**
548
- * Timestamp when the profile was created.
549
- */
550
- createdTime: number;
551
-
552
- /**
553
- * Timestamp when the profile was last updated.
554
- */
555
- lastUpdatedTime: number;
437
+ timeoutDesktopInactivityMins?: number;
556
438
  };
557
439
 
558
440
  /**
@@ -712,7 +594,8 @@ export type ListTeamsResponse = {
712
594
  };
713
595
 
714
596
  /**
715
- * Basic organization information in the contact center system
597
+ * Basic organization information carried by the `organization` section of the org desktop-login
598
+ * aggregate.
716
599
  * @private
717
600
  * @ignore
718
601
  */
@@ -721,12 +604,11 @@ export type OrgInfo = {
721
604
  tenantId: string;
722
605
  /** Organization timezone */
723
606
  timezone: string;
724
- /** Current environment (e.g., 'produs1', 'intgus1') */
725
- environment: string;
726
607
  };
727
608
 
728
609
  /**
729
- * Organization-wide feature settings and configurations
610
+ * Organization-wide feature settings carried by the `organizationSetting` section of the org
611
+ * desktop-login aggregate.
730
612
  * @private
731
613
  */
732
614
  export type OrgSettings = {
@@ -758,12 +640,13 @@ export type SiteInfo = {
758
640
  };
759
641
 
760
642
  /**
761
- * Tenant-level configuration data and settings
643
+ * Tenant-level configuration carried by the `tenantConfiguration` section of the org
644
+ * desktop-login aggregate.
762
645
  * @private
763
646
  */
764
647
  export type TenantData = {
765
- /** Desktop inactivity timeout in minutes */
766
- timeoutDesktopInactivityMins: number;
648
+ /** Desktop inactivity timeout in minutes. Omitted when the timeout is not enabled. */
649
+ timeoutDesktopInactivityMins?: number;
767
650
  /** Whether default DN is enforced */
768
651
  forceDefaultDn: boolean;
769
652
  /** Regex pattern for default DN validation */
@@ -787,16 +670,46 @@ export type TenantData = {
787
670
  };
788
671
 
789
672
  /**
790
- * URL mapping configuration for external integrations
673
+ * URL mappings carried by the `urlMappings` section of the org desktop-login aggregate, keyed by
674
+ * mapping name. The aggregate returns `{}` when the organization has no Acqueon configuration.
791
675
  * @public
792
676
  */
793
- export type URLMapping = {
794
- id: string;
795
- name: string;
796
- url: string;
797
- links: string[]; // Assuming 'links' is an array of strings, adjust if necessary
798
- createdTime: number; // Assuming timestamps are represented as numbers
799
- lastUpdatedTime: number;
677
+ export type OrgUrlMappings = {
678
+ /** Acqueon API endpoint URL */
679
+ ACQUEON_API_URL?: string;
680
+ /** Acqueon console URL */
681
+ ACQUEON_CONSOLE_URL?: string;
682
+ };
683
+
684
+ /**
685
+ * Organization-level Microsoft Teams integration configuration carried by the `microsoftConfig`
686
+ * section of the org desktop-login aggregate. The whole section is absent when the organization
687
+ * has no Microsoft integration.
688
+ * @public
689
+ */
690
+ export type MicrosoftConfig = {
691
+ /** Whether to show user details in Teams */
692
+ showUserDetails?: boolean;
693
+ /** Whether to sync agent state with Teams */
694
+ stateSynchronization?: boolean;
695
+ /** Whether the integration is enabled organization-wide */
696
+ active?: boolean;
697
+ /** Idle codes mapped to Teams presence states */
698
+ idleCodes?: Record<string, string>;
699
+ };
700
+
701
+ /**
702
+ * Organization-level Webex integration configuration carried by the `webexConfig` section of the
703
+ * org desktop-login aggregate.
704
+ * @public
705
+ */
706
+ export type WebexConfig = {
707
+ /** Whether to show user details in Webex */
708
+ showUserDetails?: boolean;
709
+ /** Whether to sync agent state with Webex */
710
+ stateSynchronization?: boolean;
711
+ /** Idle codes mapped to Webex presence states */
712
+ idleCodes?: Record<string, string>;
800
713
  };
801
714
 
802
715
  /**
@@ -894,6 +807,8 @@ export type DialPlanEntity = {
894
807
  strippedChars: string;
895
808
  /** Name of the dial plan */
896
809
  name: string;
810
+ /** Whether the dial plan is active */
811
+ active: boolean;
897
812
  };
898
813
 
899
814
  /**
@@ -1001,19 +916,6 @@ export type WrapupData = {
1001
916
  };
1002
917
  };
1003
918
 
1004
- /**
1005
- * Team configuration information
1006
- * @public
1007
- */
1008
- export type Team = {
1009
- /** Unique team identifier */
1010
- teamId: string;
1011
- /** Team display name */
1012
- teamName: string;
1013
- /** Optional desktop layout configuration identifier */
1014
- desktopLayoutId?: string;
1015
- };
1016
-
1017
919
  /**
1018
920
  * Basic queue configuration information
1019
921
  * @public
@@ -1037,11 +939,12 @@ export type URLMappings = {
1037
939
  };
1038
940
 
1039
941
  /**
1040
- * AI feature resource row returned by /v2/ai-feature API.
942
+ * AI feature flags carried by the `aiFeature` section of the org desktop-login aggregate.
1041
943
  * @public
1042
944
  */
1043
945
  export type AIFeatureFlags = {
1044
- id: string;
946
+ /** Not carried by the aggregate; retained for responses that still supply a record id. */
947
+ id?: string;
1045
948
  realtimeTranscripts?: {
1046
949
  enable?: boolean;
1047
950
  agentInclusionType?: string;
@@ -1066,27 +969,42 @@ export type AIFeatureFlags = {
1066
969
  queuesInclusionType?: string;
1067
970
  surveyDataSource?: string;
1068
971
  };
1069
- links?: string[];
1070
- createdTime?: number;
1071
- lastUpdatedTime?: number;
1072
972
  };
1073
973
 
1074
974
  /**
1075
- * Response type for list AI feature resources API.
975
+ * Aggregated organization configuration returned by `organization/{orgId}/desktop-login`.
976
+ * Replaces the separate organization, organization-setting, tenant-configuration,
977
+ * org-url-mapping and ai-feature calls.
1076
978
  * @public
1077
979
  */
1078
- export type AIFeatureFlagsResponse = {
1079
- meta?: {
1080
- orgid?: string;
1081
- page?: number;
1082
- pageSize?: number;
1083
- totalPages?: number;
1084
- totalRecords?: number;
1085
- links?: {
1086
- self?: string;
1087
- };
1088
- };
1089
- data: AIFeatureFlags[];
980
+ export type OrgDesktopLoginResponse = {
981
+ /** Organization identity and timezone */
982
+ organization: OrgInfo;
983
+ /** Organization-wide feature settings */
984
+ organizationSetting: OrgSettings;
985
+ /** Tenant-level configuration */
986
+ tenantConfiguration: TenantData;
987
+ /** External integration URLs, keyed by mapping name */
988
+ urlMappings?: OrgUrlMappings;
989
+ /** AI feature flags */
990
+ aiFeature?: AIFeatureFlags;
991
+ /** Microsoft Teams integration configuration; absent when not configured */
992
+ microsoftConfig?: MicrosoftConfig;
993
+ /** Webex integration configuration */
994
+ webexConfig?: WebexConfig;
995
+ };
996
+
997
+ /**
998
+ * Aggregated user configuration returned by
999
+ * `organization/{orgId}/v2/user/by-ci-user-id/{ciUserId}/desktop-login`.
1000
+ * Replaces the separate user and agent-profile calls.
1001
+ * @public
1002
+ */
1003
+ export type UserDesktopLoginResponse = {
1004
+ /** Agent identity */
1005
+ user: AgentResponse;
1006
+ /** Desktop Profile settings for the agent */
1007
+ agentProfile: AgentProfile;
1090
1008
  };
1091
1009
 
1092
1010
  /**
@@ -1109,8 +1027,8 @@ export type Profile = {
1109
1027
  /** Whether to sync agent state with Webex */
1110
1028
  stateSynchronizationWebex?: boolean;
1111
1029
  };
1112
- /** List of teams the agent belongs to */
1113
- teams: Team[];
1030
+ /** List of teams the agent belongs to, as returned by the team API */
1031
+ teams: TeamList[];
1114
1032
  /** Agent's default dial number */
1115
1033
  defaultDn: string;
1116
1034
  dn?: string;
@@ -1226,8 +1144,6 @@ export type Profile = {
1226
1144
  isAnalyzerEnabled?: boolean;
1227
1145
  /** Tenant timezone */
1228
1146
  tenantTimezone?: string;
1229
- /** Current environment (e.g., 'produs1', 'intgus1') */
1230
- environment?: string;
1231
1147
  /** Available voice login options */
1232
1148
  loginVoiceOptions?: LoginOption[];
1233
1149
  /** Current login device type */
@@ -23,6 +23,7 @@ const EXPECTED_ROOT_EXPORTS = Object.freeze([
23
23
  'AgentContact',
24
24
  'AgentEvents',
25
25
  'AgentLogin',
26
+ 'AgentProfile',
26
27
  'AgentProfileUpdate',
27
28
  'AgentResponse',
28
29
  'AgentState',
@@ -46,7 +47,6 @@ const EXPECTED_ROOT_EXPORTS = Object.freeze([
46
47
  'ContactServiceQueueSearchParams',
47
48
  'ContactServiceQueuesResponse',
48
49
  'CreateUserPreferenceRequest',
49
- 'DesktopProfileResponse',
50
50
  'DeviceType',
51
51
  'DeviceTypeUpdateSuccess',
52
52
  'DialPlan',
@@ -71,9 +71,12 @@ const EXPECTED_ROOT_EXPORTS = Object.freeze([
71
71
  'LoginOption',
72
72
  'Logout',
73
73
  'LogoutSuccess',
74
+ 'MicrosoftConfig',
74
75
  'MultimediaProfileResponse',
76
+ 'OrgDesktopLoginResponse',
75
77
  'OrgInfo',
76
78
  'OrgSettings',
79
+ 'OrgUrlMappings',
77
80
  'Profile',
78
81
  'ReloginSuccess',
79
82
  'RespondToWellnessBreakParams',
@@ -98,10 +101,10 @@ const EXPECTED_ROOT_EXPORTS = Object.freeze([
98
101
  'TeamList',
99
102
  'TenantData',
100
103
  'TransferPayLoad',
101
- 'URLMapping',
102
104
  'UpdateDeviceTypeResponse',
103
105
  'UpdateUserPreferenceRequest',
104
106
  'UploadLogsResponse',
107
+ 'UserDesktopLoginResponse',
105
108
  'UserPreference',
106
109
  'UserPreferenceData',
107
110
  'UserStationLogin',
@@ -109,6 +112,7 @@ const EXPECTED_ROOT_EXPORTS = Object.freeze([
109
112
  'WELLNESS_BREAK_USER_ACTIONS',
110
113
  'WRAP_UP_CODE',
111
114
  'WebSocketEvent',
115
+ 'WebexConfig',
112
116
  'WebexSDK',
113
117
  'WellnessBreakEvent',
114
118
  'WellnessBreakNotificationAction',