diff --git a/lib/session/call-session.js b/lib/session/call-session.js index db56a028..da95daf6 100644 --- a/lib/session/call-session.js +++ b/lib/session/call-session.js @@ -2814,14 +2814,15 @@ Duration=${duration} ` } } - _configMsEndpoint() { + _configMsEndpoint(sendSilenceOnIdle = true) { this._enableInbandDtmfIfRequired(this.ep); this.ep.once('destroy', this._handleMediaTimeout.bind(this)); const opts = { ...(this.onHoldMusic && {holdMusic: `shout://${this.onHoldMusic.replace(/^https?:\/\//, '')}`}), ...(JAMBONES_USE_FREESWITCH_TIMER_FD && {timer_name: 'timerfd'}), ...(JAMBONES_MEDIA_TIMEOUT_MS && {media_timeout: JAMBONES_MEDIA_TIMEOUT_MS}), - ...(JAMBONES_MEDIA_HOLD_TIMEOUT_MS && {media_hold_timeout: JAMBONES_MEDIA_HOLD_TIMEOUT_MS}) + ...(JAMBONES_MEDIA_HOLD_TIMEOUT_MS && {media_hold_timeout: JAMBONES_MEDIA_HOLD_TIMEOUT_MS}), + ...(sendSilenceOnIdle && {send_silence_when_idle: -1}) }; if (Object.keys(opts).length > 0) { this.ep.set(opts); diff --git a/lib/tasks/dial.js b/lib/tasks/dial.js index fa7f3958..0151ae6d 100644 --- a/lib/tasks/dial.js +++ b/lib/tasks/dial.js @@ -748,6 +748,13 @@ class TaskDial extends Task { if (this.epOther) { this.epOther.api('uuid_break', this.epOther.uuid); this.epOther.bridge(sd.ep); + + /** + * wait until the endpoints are bridged before apply the send_silence_when_idle + * audiocodes webrtc client somehow inserts massive latency if we send silence + * and then bridge A and B. + */ + this.ep.set('send_silence_when_idle', -1); } this.bridged = true; } diff --git a/lib/utils/place-outdial.js b/lib/utils/place-outdial.js index cb6516f3..dadbc330 100644 --- a/lib/utils/place-outdial.js +++ b/lib/utils/place-outdial.js @@ -138,7 +138,7 @@ class SingleDialer extends Emitter { this.serviceUrl = srf.locals.serviceUrl; this.ep = await ms.createEndpoint(); - this._configMsEndpoint(); + this._configMsEndpoint(false); this.logger.debug(`SingleDialer:exec - created endpoint ${this.ep.uuid}`); /** @@ -339,12 +339,13 @@ class SingleDialer extends Emitter { } } - _configMsEndpoint() { + _configMsEndpoint(sendSilenceOnIdle = true) { const opts = { ...(this.onHoldMusic && {holdMusic: `shout://${this.onHoldMusic.replace(/^https?:\/\//, '')}`}), ...(JAMBONES_USE_FREESWITCH_TIMER_FD && {timer_name: 'timerfd'}), ...(JAMBONES_MEDIA_TIMEOUT_MS && {media_timeout: JAMBONES_MEDIA_TIMEOUT_MS}), - ...(JAMBONES_MEDIA_HOLD_TIMEOUT_MS && {media_hold_timeout: JAMBONES_MEDIA_HOLD_TIMEOUT_MS}) + ...(JAMBONES_MEDIA_HOLD_TIMEOUT_MS && {media_hold_timeout: JAMBONES_MEDIA_HOLD_TIMEOUT_MS}), + ...(sendSilenceOnIdle && {send_silence_when_idle: -1}) }; if (Object.keys(opts).length > 0) { this.ep.set(opts);