diff --git a/lib/session/call-session.js b/lib/session/call-session.js index 095213bb..194ce1c4 100644 --- a/lib/session/call-session.js +++ b/lib/session/call-session.js @@ -454,8 +454,8 @@ class CallSession extends Emitter { async enableBotMode(gather, autoEnable) { try { if (this.backgroundGatherTask) { - this.logger.info('CallSession:enableBotMode - bot mode currently enabled, stop it'); - this.disableBotMode(); + this.logger.info('CallSession:enableBotMode - bot mode currently enabled, ignoring request to start again'); + return; } const t = normalizeJambones(this.logger, [gather]); this.backgroundGatherTask = makeTask(this.logger, t[0]); diff --git a/lib/tasks/gather.js b/lib/tasks/gather.js index 75c3d5b3..0c974150 100644 --- a/lib/tasks/gather.js +++ b/lib/tasks/gather.js @@ -182,6 +182,10 @@ class TaskGather extends Task { this.logger.debug('Gather:exec - calling _initSpeech'); this._initSpeech(cs, ep) .then(() => { + if (this.killed) { + this.logger.info('Gather:exec - task was quickly killed so do not transcribe'); + return; + } this._startTranscribing(ep); return updateSpeechCredentialLastUsed(this.sttCredentials.speech_credential_sid); }) @@ -232,7 +236,13 @@ class TaskGather extends Task { } }); } - else startListening(cs, ep); + else { + if (this.killed) { + this.logger.info('Gather:exec - task was immediately killed so do not transcribe'); + return; + } + startListening(cs, ep); + } if (this.input.includes('speech') && this.listenDuringPrompt) { await this._initSpeech(cs, ep);