diff --git a/lib/tasks/gather.js b/lib/tasks/gather.js index 194086aa..5acf7863 100644 --- a/lib/tasks/gather.js +++ b/lib/tasks/gather.js @@ -230,17 +230,17 @@ class TaskGather extends SttTask { }; const startListening = async(cs, ep) => { + if (this.killed || this.resolved) { + this.logger.info('Gather:exec - task was quickly killed so do not transcribe'); + return; + } this._startTimer(); if (this.isContinuousAsr && 0 === this.timeout && !this.isBackgroundGather) { this._startAsrTimer(); } - if (this.input.includes('speech') && !this.listenDuringPrompt) { + if (this.input.includes('speech')) { try { await this._setSpeechHandlers(cs, ep); - if (this.killed) { - this.logger.info('Gather:exec - task was quickly killed so do not transcribe'); - return; - } this._startTranscribing(ep); } catch (e) { await this._startFallback(cs, ep, {error: e}); @@ -258,14 +258,14 @@ class TaskGather extends SttTask { startDtmfListener(); } this._stopVad(); - if (!this.killed && !this.resolved) { + if (!this.killed && !this.resolved && !this.listenDuringPrompt) { startListening(cs, ep); - if (this.input.includes('speech') && this.vendor === 'nuance' && this.listenDuringPrompt) { - this.logger.debug('Gather:exec - starting transcription timers after say completes'); - ep.startTranscriptionTimers((err) => { - if (err) this.logger.error({err}, 'Gather:exec - error starting transcription timers'); - }); - } + } + if (this.input.includes('speech') && this.vendor === 'nuance' && this.listenDuringPrompt) { + this.logger.debug('Gather:exec - starting transcription timers after say completes'); + ep.startTranscriptionTimers((err) => { + if (err) this.logger.error({err}, 'Gather:exec - error starting transcription timers'); + }); } }; this.sayTask.span = span; @@ -296,14 +296,14 @@ class TaskGather extends SttTask { startDtmfListener(); } this._stopVad(); - if (!this.killed && !this.resolved) { + if (!this.killed && !this.resolved && !this.listenDuringPrompt) { startListening(cs, ep); - if (this.input.includes('speech') && this.vendor === 'nuance' && this.listenDuringPrompt) { - this.logger.debug('Gather:exec - starting transcription timers after play completes'); - ep.startTranscriptionTimers((err) => { - if (err) this.logger.error({err}, 'Gather:exec - error starting transcription timers'); - }); - } + } + if (this.input.includes('speech') && this.vendor === 'nuance' && this.listenDuringPrompt) { + this.logger.debug('Gather:exec - starting transcription timers after play completes'); + ep.startTranscriptionTimers((err) => { + if (err) this.logger.error({err}, 'Gather:exec - error starting transcription timers'); + }); } }; this.playTask.span = span; @@ -321,21 +321,12 @@ class TaskGather extends SttTask { }); } else { - if (this.killed) { - this.logger.info('Gather:exec - task was immediately killed so do not transcribe'); - return; - } - startListening(cs, ep); + // listenDuringPrompt is set to false if there is no say or play task + await startListening(cs, ep); } - if (this.input.includes('speech') && this.listenDuringPrompt) { - await this._setSpeechHandlers(cs, ep); - if (!this.resolved && !this.killed) { - this._startTranscribing(ep); - } - else { - this.logger.info('Gather:exec - task was killed or resolved quickly, not starting transcription'); - } + if (this.listenDuringPrompt) { + await startListening(cs, ep); } // https://github.com/jambonz/jambonz-feature-server/issues/913