diff --git a/lib/session/call-session.js b/lib/session/call-session.js index 75a910d1..564deb41 100644 --- a/lib/session/call-session.js +++ b/lib/session/call-session.js @@ -607,13 +607,19 @@ class CallSession extends Emitter { this.logger.info(`CallSession:exec starting task #${stackNum}:${taskNum}: ${task.name}`); try { const resources = await this._evaluatePreconditions(task); + let skip = false; this.currentTask = task; if (TaskName.Gather === task.name && this.isBotModeEnabled) { - const timeout = task.timeout; - this.logger.info(`CallSession:exec skipping #${stackNum}:${taskNum}: ${task.name}`); - this.backgroundGatherTask.updateTimeout(timeout); + if (this.backgroundGatherTask.updateTaskInProgress(task)) { + this.logger.info(`CallSession:exec skipping #${stackNum}:${taskNum}: ${task.name}`); + skip = true; + } + else { + this.logger.info('CallSession:exec disabling bot mode to start gather with new options'); + this.disableBotMode(); + } } - else { + if (!skip) { const {span, ctx} = this.rootSpan.startChildSpan(`verb:${task.summary}`); task.span = span; task.ctx = ctx; diff --git a/lib/tasks/gather.js b/lib/tasks/gather.js index e3177a78..75c3d5b3 100644 --- a/lib/tasks/gather.js +++ b/lib/tasks/gather.js @@ -262,8 +262,12 @@ class TaskGather extends Task { this._resolve('killed'); } - updateTimeout(timeout) { - this.logger.info(`TaskGather:updateTimeout - updating timeout to ${timeout}`); + updateTaskInProgress(opts) { + if (!this.needsStt && opts.input.includes('speech')) { + this.logger.info('TaskGather:updateTaskInProgress - adding speech to a background gather'); + return false; // this needs be handled by killing the background gather and starting a new one + } + const {timeout} = opts; this.timeout = timeout; this._startTimer(); }