Centralized Agent Desk Settings replaces scattered environment variables and config.json values with a tenant-level configuration managed in Unified Admin and consumed by Unified Agent, Agent Manager, and Conversation Manager.
Feature: Agent Desk Settings (env → API / Redis)
Ticket / Branch: 5.2.0_f-CLCC-565
Components: Unified Admin, Unified Agent, Agent Manager, Conversation Manager
Overview
Agent Desk configuration that previously lived in environment variables or config.json is now stored centrally in MongoDB per tenant through Unified Admin → Agent Desk Settings. This creates a single source of truth for Agent Desk behavior while still supporting component-specific consumption patterns.
|
Component |
How it gets settings |
|---|---|
|
Unified Agent |
Loads |
|
Agent Manager |
Uses wrap-up settings only via Redis key |
|
Conversation Manager |
Uses wrap-up settings only via the same Redis key |
Key design point: most Agent Desk settings are consumed directly by Unified Agent, while wrap-up is intentionally distributed through Redis for Agent Manager and Conversation Manager.
Configuration flow
The configuration lifecycle follows a simple publish-and-consume model:
-
Admin users update settings in Unified Admin UI.
-
Unified Admin persists the full settings document in MongoDB.
-
If wrap-up fields change, Unified Admin notifies Agent Manager through
POST /wrapup-settings. -
Agent Manager normalizes and stores wrap-up values in Redis.
-
Unified Agent reads from the Admin API, while Conversation Manager reads wrap-up from Redis.
Unified Admin is the authoring system. MongoDB is the persistent store. Redis is the fast distribution layer for wrap-up settings.
Unified Admin
Where to edit
|
Item |
Detail |
|---|---|
|
Menu / page |
Agent Desk Settings |
|
Route |
|
|
Permission resource |
|
|
Save behavior |
Updates MongoDB and, when wrap-up fields change, notifies Agent Manager |
Editable settings
|
UI label |
Field |
Type |
Default |
Notes |
|---|---|---|---|---|
|
Message Formatting |
|
Boolean |
|
Conversation formatting support |
|
Text Refine |
|
Boolean |
|
AI text refinement |
|
Knowledge Base Search |
|
Boolean |
|
Requires KB URL when enabled |
|
Knowledge Base URL |
|
String |
|
Required when KB search is on |
|
File Sharing |
|
Boolean |
|
Conversation attachment support |
|
Emojis |
|
Boolean |
|
Enables emoji support in chat |
|
Spell Check |
|
Boolean |
|
Enabled by default |
|
Quick Links |
|
Boolean |
|
Header quick links in Agent Desk |
|
Default Home Page |
|
Boolean |
|
Default home page behavior |
|
Auto Answer |
|
Boolean |
|
Not used for Cisco calls |
|
Cisco |
|
Boolean |
|
Mutually exclusive with CX Voice |
|
CX Voice |
|
Boolean |
|
Mutually exclusive with Cisco |
|
WebRTC Video |
|
Boolean |
|
Video capability flag |
|
WebRTC Service Identifier |
|
String |
|
Service identifier value |
|
Enable Voice Events For CRM |
|
Boolean |
|
Cleared if both Cisco and CX Voice are off |
|
Wrap-Up |
|
Boolean |
|
Propagates to Agent Manager and Redis |
|
Wrap-Up Time |
|
Number |
|
Valid range: 15–1800 seconds |
|
Dashboard Refresh Time |
|
Number |
|
Milliseconds |
|
CRM Events |
|
Boolean |
|
CRM event support |
|
Conversation Participants |
|
Boolean |
|
Participant visibility |
|
Show Active Sessions Data |
|
Boolean |
|
Session data visibility |
|
Outbound SMS |
|
Boolean |
|
SMS sending support |
|
Prefix Code |
|
String |
|
Used when SMS is enabled |
|
Close Send SMS Dialog |
|
Boolean |
|
Auto-close SMS dialog |
|
Pause Conversation |
|
Array |
1/3/5/7/10 min |
Hold duration options |
|
Inactivity Timeout |
|
Boolean |
|
Enables inactivity timer |
|
Inactivity Time |
|
Number |
|
Valid range when enabled: 30–3600 |
|
Bot Suggestion Thresholds |
|
Array |
Low/Mid/High bands |
Threshold label, color, min, max |
API
Base path: {UNIFIED_ADMIN_URL}/agent-desk-settings
|
Method |
Path |
Purpose |
|---|---|---|
|
|
|
Returns tenant Agent Desk Settings, usually as a single-item array, and seeds missing defaults for existing tenants |
|
|
|
Updates settings; request body must include |
-
GET behavior: creates a default document if none exists, or fills newly introduced fields through seeding logic.
-
PUT behavior: validates with Joi, enforces Cisco/CX Voice mutual exclusion, and sends a wrap-up webhook if
isWrapUpEnabledorwrapUpTimechanged.
Required Unified Admin config: AGENT_MANAGER_URL must point to Agent Manager. If it is empty, wrap-up notification is skipped and only logged.
Settings catalog
Top-level settings
|
Field |
Type |
Default |
Consumed by |
|---|---|---|---|
|
|
Boolean |
|
Unified Agent |
|
|
Boolean |
|
Unified Agent |
|
|
Boolean |
|
Unified Agent |
|
|
String |
|
Unified Agent |
|
|
Boolean |
|
Unified Agent |
|
|
Boolean |
|
Unified Agent |
|
|
Boolean |
|
Unified Agent |
|
|
Boolean |
|
Unified Agent |
|
|
Boolean |
|
Unified Agent |
|
|
Boolean |
|
Unified Agent |
|
|
Boolean |
|
Unified Agent |
|
|
Number |
|
Unified Agent |
|
|
Boolean |
|
Unified Agent |
|
|
Boolean |
|
Unified Agent |
|
|
Boolean |
|
Unified Agent |
|
|
Boolean |
|
Unified Agent |
|
|
String |
|
Unified Agent |
|
|
Boolean |
|
Agent Manager and Conversation Manager via Redis |
|
|
Number |
|
Agent Manager and Conversation Manager via Redis |
|
|
Boolean |
|
Unified Agent |
|
|
Boolean |
|
Unified Agent |
|
|
Boolean |
|
Unified Agent |
|
|
Boolean |
|
Unified Agent |
|
|
String |
|
Unified Agent |
|
|
Boolean |
|
Unified Agent |
|
|
Number |
|
Unified Agent |
|
|
Array |
1/3/5/7/10 min |
Unified Agent |
|
|
Array |
Low/Mid/High |
Unified Agent |
Nested Cisco settings
|
Field |
Type |
Default |
Unified Agent maps to |
|---|---|---|---|
|
|
Number |
|
|
|
|
String |
Sample URL |
|
|
|
Boolean |
|
|
|
|
Boolean |
|
|
|
|
String |
Configured value |
|
|
|
String |
Configured value |
|
|
|
String |
|
|
|
|
String |
Configured value |
|
|
|
String |
Configured value |
|
|
|
String |
Encrypted value |
|
|
|
String |
Encrypted value |
|
|
|
String |
|
|
|
|
String |
Configured value |
|
|
|
String |
Configured value |
|
|
|
Boolean |
|
|
|
|
String |
Configured value |
|
|
|
Number |
|
|
|
|
String |
|
|
Nested CX Voice settings
|
Field |
Type |
Default |
Unified Agent maps to |
|---|---|---|---|
|
|
Number |
|
|
|
|
String |
|
|
|
|
String |
|
|
|
|
String |
Configured value |
|
|
|
String |
Encrypted value |
|
|
|
Boolean |
|
|
|
|
String |
|
|
Agent Manager
Wrap-up storage model
|
Before |
After |
|---|---|
|
Environment variables |
Redis plus Unified Admin API; environment-based config removed |
|
Item |
Value |
|---|---|
|
Redis key |
|
|
Stored value |
|
|
Default if missing |
|
Webhook from Unified Admin
|
Item |
Detail |
|---|---|
|
Method / path |
|
|
When triggered |
When Agent Desk Settings are saved and wrap-up fields changed |
|
Headers |
|
|
Example body |
|
|
Effect |
Writes normalized wrap-up values to Redis |
Startup behavior initializes tenant wrap-up settings by fetching Unified Admin data and caching it in Redis. During runtime, Agent Manager reads Redis first and falls back to the Admin API only if the key is missing.
Runtime usage: wrap-up settings are referenced in agent.service.js, artemis.service.js, and jms.service.js.
Conversation Manager
Conversation Manager no longer reads wrap-up configuration from environment or common config. It relies entirely on the shared Redis key maintained by Agent Manager or the Admin-to-Agent Manager webhook path.
|
Item |
Detail |
|---|---|
|
Redis key |
|
|
DTO |
|
|
API |
|
The main usage point is ChannelSessionEndedEvent, which checks Redis-backed wrap-up settings to decide post-session behavior.
Unified Agent
Load sequence
-
Load
assets/config.jsonfor service URLs, environment values, and bootstrap feature flags. -
Call
{UNIFIED_ADMIN_URL}/agent-desk-settingsand merge migrated settings into runtime config throughloadAgentDeskSettingsandmergeAgentDeskSettings. -
If the Admin call fails, continue using existing defaults or values already present in
config.json. -
After app load, call
getConversationSettings()again for conversation-level UX settings such as emojis, formatting, KB, inactivity, SMS, and participant-related options.
Authentication behavior: /agent-desk-settings is excluded from the auth interceptor so it can be fetched before login.
What remains in config.json
Only non-migrated bootstrap values should remain in config.json or environment templates. These include service URLs, selected feature flags, SIP connectivity settings, timeout values, domain settings, and environment metadata.
Removed from template/env and now sourced from API: Cisco, CX Voice, spell check, CRM events, dashboard refresh, WebRTC flags, secure link, quick links, default home page, and other migrated Agent Desk settings. Wrap-up is also removed from agent bootstrap handling and distributed through Redis for Agent Manager and Conversation Manager.
Runtime effects in Agent Desk
|
Setting |
Effect in Agent Desk |
|---|---|
|
|
Shows or hides the Quick Links button in the header |
|
|
Enables or disables spell check for agent messages |
|
|
Enables emoji support in chat |
|
|
Controls knowledge base search availability in conversations |
|
|
Selects the voice stack and loads associated nested CTI or SIP configuration |
|
Conversation settings |
Control participants, file sharing, hold options, inactivity, SMS, and related UX behavior |
End-to-end wrap-up flow
-
Admin opens Agent Desk Settings at
/agent-desk. -
Admin enables Wrap-Up and sets Wrap-Up Time within the 15–1800 second range.
-
Unified Admin saves the values to MongoDB.
-
Unified Admin sends
POST {AGENT_MANAGER_URL}/wrapup-settings. -
Agent Manager writes the normalized payload to Redis under
{tenantId}:wrapupSettings. -
Agent Manager uses Redis for wrap-up timers and eligibility checks.
-
Conversation Manager reads the same Redis key when a channel session ends.
Operational note: if AGENT_MANAGER_URL is not configured, wrap-up changes will not reach Redis until Agent Manager restarts and performs its startup fetch, or until a later successful notification occurs.
Deployment checklist
Unified Admin
- Deploy backend and frontend, including the frontend build copied into
Backend/src/public - Set
AGENT_MANAGER_URLto the Agent Manager base URL - Confirm
GET /agent-desk-settingsreturns a document with the new fields - Confirm the UI shows expected toggles such as Quick Links, Default Home Page, Wrap-Up, Cisco, and CX Voice
- Confirm the role includes
agent-desk-settingpermissions as needed
Unified Agent
- Deploy an image with a slim
config.jsontemplate that excludes migrated keys - Verify
UNIFIED_ADMIN_URLis correct - In browser network tools, confirm
GET .../agent-desk-settingsreturns 200 during load - Change a setting in Admin, hard refresh Agent Desk, and verify the behavior updates
Agent Manager
- Deploy with Redis-backed wrap-up support and
POST /wrapup-settings - Remove legacy
IS_WRAP_UP_ENABLEDandWRAPUP_TIMEvariables if still present - Confirm startup writes
{tenantId}:wrapupSettingsto Redis - Confirm saving wrap-up in Admin updates Redis without restart
Conversation Manager
- Deploy with Redis-based
WrapUpSettingsand no wrap-up env dependency - Verify it shares the same Redis instance and key pattern as Agent Manager
Verification
|
Check |
How to verify |
|---|---|
|
Admin API |
Call |
|
Admin UI |
Open |
|
Agent Desk API merge |
Use DevTools Network to inspect |
|
Quick Links |
Disable in Admin, refresh Agent Desk, and confirm the header button is hidden |
|
Wrap-up Redis |
After saving wrap-up in Admin, verify Redis key |
|
Wrap-up webhook |
Check Admin and Agent Manager logs for |
|
Conversation Manager behavior |
Confirm channel session end respects the Redis wrap-up flag |