From 27a3fbcfedeac60441d20d022e1f9c885395c3fa Mon Sep 17 00:00:00 2001 From: saridsa2 Date: Sun, 12 Apr 2026 16:03:51 +0530 Subject: [PATCH] feat(config): add Ozonetel admin credentials to TelephonyConfig - adminUsername + adminPassword in ozonetel section - Masked in GET response, sentinel-stripped on update - Env seeds: OZONETEL_ADMIN_USERNAME, OZONETEL_ADMIN_PASSWORD - Used by supervisor barge/whisper/listen endpoints Co-Authored-By: Claude Opus 4.6 (1M context) --- src/config/telephony-config.service.ts | 4 ++++ src/config/telephony.defaults.ts | 9 +++++++++ 2 files changed, 13 insertions(+) diff --git a/src/config/telephony-config.service.ts b/src/config/telephony-config.service.ts index 43cfaff..23f2626 100644 --- a/src/config/telephony-config.service.ts +++ b/src/config/telephony-config.service.ts @@ -46,6 +46,7 @@ export class TelephonyConfigService implements OnModuleInit { ozonetel: { ...c.ozonetel, agentPassword: c.ozonetel.agentPassword ? '***masked***' : '', + adminPassword: c.ozonetel.adminPassword ? '***masked***' : '', }, }; } @@ -68,6 +69,9 @@ export class TelephonyConfigService implements OnModuleInit { if (merged.ozonetel.agentPassword === '***masked***') { merged.ozonetel.agentPassword = current.ozonetel.agentPassword; } + if (merged.ozonetel.adminPassword === '***masked***') { + merged.ozonetel.adminPassword = current.ozonetel.adminPassword; + } this.backup(); this.writeFile(merged); this.cached = merged; diff --git a/src/config/telephony.defaults.ts b/src/config/telephony.defaults.ts index e28751f..af03202 100644 --- a/src/config/telephony.defaults.ts +++ b/src/config/telephony.defaults.ts @@ -22,6 +22,11 @@ export type TelephonyConfig = { sipId: string; // Default outbound campaign name on Ozonetel CloudAgent. campaignName: string; + // Ozonetel portal admin credentials — used by supervisor barge/whisper/listen. + // These are the login credentials for the Ozonetel admin dashboard + // (api.cloudagent.ozonetel.com/auth/login), NOT an agent ID. + adminUsername: string; + adminPassword: string; }; // Ozonetel WebRTC gateway used by the staff portal softphone. sip: { @@ -46,6 +51,8 @@ export const DEFAULT_TELEPHONY_CONFIG: TelephonyConfig = { did: '', sipId: '', campaignName: '', + adminUsername: '', + adminPassword: '', }, sip: { domain: 'blr-pub-rtc4.ozonetel.com', @@ -65,6 +72,8 @@ export const TELEPHONY_ENV_SEEDS: Array<{ env: string; path: string[] }> = [ // OZONETEL_AGENT_ID removed — agentId is per-user on the Agent entity, // not a sidecar-level config. All endpoints require agentId from caller. { env: 'OZONETEL_AGENT_PASSWORD', path: ['ozonetel', 'agentPassword'] }, + { env: 'OZONETEL_ADMIN_USERNAME', path: ['ozonetel', 'adminUsername'] }, + { env: 'OZONETEL_ADMIN_PASSWORD', path: ['ozonetel', 'adminPassword'] }, { env: 'OZONETEL_DID', path: ['ozonetel', 'did'] }, { env: 'OZONETEL_SIP_ID', path: ['ozonetel', 'sipId'] }, { env: 'OZONETEL_CAMPAIGN_NAME', path: ['ozonetel', 'campaignName'] },