diff --git a/README.md b/README.md index 398a8ed4..1f922fdc 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,9 @@ Configuration is provided via environment variables: |STATS_PORT| listening port for metrics host|no| |STATS_PROTOCOL| 'tcp' or 'udp'|no| |STATS_TELEGRAF| if 1, metrics will be generated in telegraf format|no| +|JAMBONZ_RECORD_WS_BASE_URL| recording websocket URL to send the recording audio|no| +|JAMBONZ_RECORD_WS_USERNAME| recording websocket username|no| +|JAMBONZ_RECORD_WS_PASSWORD| recording websocket password|no| ### running under pm2 Typically, this application runs under [pm2](https://pm2.io) using an [ecosystem.config.js](https://pm2.keymetrics.io/docs/usage/application-declaration/) file similar to this: diff --git a/lib/config.js b/lib/config.js index 51808374..6a49901b 100644 --- a/lib/config.js +++ b/lib/config.js @@ -144,9 +144,9 @@ const JAMBONES_REDIS_SENTINELS = process.env.JAMBONES_REDIS_SENTINELS ? { username: process.env.JAMBONES_REDIS_SENTINEL_USERNAME }) } : null; -const JAMBONZ_RECORD_WS_BASE_URL = process.env.JAMBONZ_RECORD_WS_BASE_URL; -const JAMBONZ_RECORD_WS_USERNAME = process.env.JAMBONZ_RECORD_WS_USERNAME; -const JAMBONZ_RECORD_WS_PASSWORD = process.env.JAMBONZ_RECORD_WS_PASSWORD; +const JAMBONZ_RECORD_WS_BASE_URL = process.env.JAMBONZ_RECORD_WS_BASE_URL || process.env.JAMBONES_RECORD_WS_BASE_URL; +const JAMBONZ_RECORD_WS_USERNAME = process.env.JAMBONZ_RECORD_WS_USERNAME || process.env.JAMBONES_RECORD_WS_USERNAME; +const JAMBONZ_RECORD_WS_PASSWORD = process.env.JAMBONZ_RECORD_WS_PASSWORD || process.env.JAMBONES_RECORD_WS_PASSWORD; const JAMBONZ_DISABLE_DIAL_PAI_HEADER = process.env.JAMBONZ_DISABLE_DIAL_PAI_HEADER || false; module.exports = { diff --git a/lib/session/call-session.js b/lib/session/call-session.js index 165422ab..d4dcce4a 100644 --- a/lib/session/call-session.js +++ b/lib/session/call-session.js @@ -1933,17 +1933,22 @@ class CallSession extends Emitter { async enableRecordAllCall() { if (this.accountInfo.account.record_all_calls || this.application.record_all_calls) { + if (!JAMBONZ_RECORD_WS_BASE_URL || !this.accountInfo.account.bucket_credential) { + this.logger.error('Record all calls: invalid configuration'); + return; + } const listenOpts = { url: `${JAMBONZ_RECORD_WS_BASE_URL}/record/${this.accountInfo.account.bucket_credential.vendor}`, - wsAuth: { - username: JAMBONZ_RECORD_WS_USERNAME, - password: JAMBONZ_RECORD_WS_PASSWORD - }, disableBidirectionalAudio: true, mixType : 'stereo', passDtmf: true }; - + if (JAMBONZ_RECORD_WS_USERNAME && JAMBONZ_RECORD_WS_PASSWORD) { + listenOpts.wsAuth = { + username: JAMBONZ_RECORD_WS_USERNAME, + password: JAMBONZ_RECORD_WS_PASSWORD + }; + } this.logger.debug({listenOpts}, 'Record all calls: enabling listen'); await this.startBackgroundListen({verb: 'listen', ...listenOpts}, 'jambonz-session-record'); }