bugfix: when bargein is disabled, kill the background gather and do not restart it

This commit is contained in:
Dave Horton
2022-08-11 14:32:37 +02:00
parent f580bc60f5
commit 3d475217ca
2 changed files with 5 additions and 3 deletions

View File

@@ -410,6 +410,7 @@ class CallSession extends Emitter {
try { try {
const t = normalizeJambones(this.logger, [gather]); const t = normalizeJambones(this.logger, [gather]);
this.backgroundGatherTask = makeTask(this.logger, t[0]); this.backgroundGatherTask = makeTask(this.logger, t[0]);
this._bargeInEnabled = true;
this.backgroundGatherTask this.backgroundGatherTask
.once('dtmf', this._clearTasks.bind(this)) .once('dtmf', this._clearTasks.bind(this))
.once('vad', this._clearTasks.bind(this)) .once('vad', this._clearTasks.bind(this))
@@ -426,7 +427,7 @@ class CallSession extends Emitter {
this.backgroundGatherTask && this.backgroundGatherTask.removeAllListeners(); this.backgroundGatherTask && this.backgroundGatherTask.removeAllListeners();
this.backgroundGatherTask && this.backgroundGatherTask.span.end(); this.backgroundGatherTask && this.backgroundGatherTask.span.end();
this.backgroundGatherTask = null; this.backgroundGatherTask = null;
if (autoEnable && !this.callGone && !this._stopping) { if (autoEnable && !this.callGone && !this._stopping && this._bargeInEnabled) {
this.logger.info('CallSession:enableBotMode: restarting background gather'); this.logger.info('CallSession:enableBotMode: restarting background gather');
setImmediate(() => this.enableBotMode(gather, true)); setImmediate(() => this.enableBotMode(gather, true));
} }
@@ -443,6 +444,7 @@ class CallSession extends Emitter {
} }
} }
disableBotMode() { disableBotMode() {
this._bargeInEnabled = false;
if (this.backgroundGatherTask) { if (this.backgroundGatherTask) {
try { try {
this.backgroundGatherTask.removeAllListeners(); this.backgroundGatherTask.removeAllListeners();

View File

@@ -93,7 +93,7 @@ class TaskConfig extends Task {
}, 'Config: updated recognizer'); }, 'Config: updated recognizer');
} }
if ('enable' in this.bargeIn) { if ('enable' in this.bargeIn) {
if (this.gatherOpts) { if (this.bargeIn.enable === true && this.gatherOpts) {
this.gatherOpts.recognizer = this.hasRecognizer ? this.gatherOpts.recognizer = this.hasRecognizer ?
this.recognizer : this.recognizer :
{ {
@@ -103,7 +103,7 @@ class TaskConfig extends Task {
this.logger.info({opts: this.gatherOpts}, 'Config: enabling bargeIn'); this.logger.info({opts: this.gatherOpts}, 'Config: enabling bargeIn');
cs.enableBotMode(this.gatherOpts, this.autoEnable); cs.enableBotMode(this.gatherOpts, this.autoEnable);
} }
else { else if (this.bargeIn.enable === false) {
this.logger.info('Config: disabling bargeIn'); this.logger.info('Config: disabling bargeIn');
cs.disableBotMode(); cs.disableBotMode();
} }