diff --git a/lib/session/call-session.js b/lib/session/call-session.js index 92ef9466..11dd8ea8 100644 --- a/lib/session/call-session.js +++ b/lib/session/call-session.js @@ -877,6 +877,7 @@ class CallSession extends Emitter { const taskNum = ++this.taskIdx; const stackNum = this.stackIdx; const task = this.tasks.shift(); + task._stackNum = `${stackNum}:${taskNum}`; this.logger.info(`CallSession:exec starting task #${stackNum}:${taskNum}: ${task.name}`); this._notifyTaskStatus(task, {event: 'starting'}); // Register verbhook span wait for end diff --git a/lib/tasks/gather.js b/lib/tasks/gather.js index 9bb270d1..935ba3ce 100644 --- a/lib/tasks/gather.js +++ b/lib/tasks/gather.js @@ -107,7 +107,7 @@ class TaskGather extends SttTask { } async exec(cs, {ep}) { - this.logger.debug({options: this.data}, 'Gather:exec'); + this.logger.debug({options: this.data}, `Gather:exec ${this.stackNum}`); await super.exec(cs, {ep}); const {updateSpeechCredentialLastUsed} = require('../utils/db-utils')(this.logger, cs.srf); @@ -236,10 +236,15 @@ class TaskGather extends SttTask { if (this.input.includes('speech') && this.listenDuringPrompt) { await this._setSpeechHandlers(cs, ep); - this.logger.debug('Gather:exec - going to start transcribing (listenDuringPrompt)'); - this._startTranscribing(ep); - updateSpeechCredentialLastUsed(this.sttCredentials.speech_credential_sid) - .catch(() => {/*already logged error */}); + if (!this.resolved && !this.killed) { + this.logger.debug(`Gather:exec ${this.stackNum} - going to start transcribing (listenDuringPrompt)`); + this._startTranscribing(ep); + updateSpeechCredentialLastUsed(this.sttCredentials.speech_credential_sid) + .catch(() => {/*already logged error */}); + } + else { + this.logger.info(`Gather:exec ${this.stackNum} - task was killed or resolved before starting transcription`); + } } if (this.input.includes('digits') || this.dtmfBargein || this.asrDtmfTerminationDigit) { @@ -484,7 +489,7 @@ class TaskGather extends SttTask { locale: this.language, interim: this.interim, bugname: this.bugname - }, 'Gather:_startTranscribing'); + }, `Gather:_startTranscribing ${this.stackNum}`); /** * Note: we don't need to ask deepgram for interim results, because they @@ -702,7 +707,12 @@ class TaskGather extends SttTask { // make sure this is not a transcript from answering machine detection const bugname = fsEvent.getHeader('media-bugname'); const finished = fsEvent.getHeader('transcription-session-finished'); - this.logger.debug({evt, bugname, finished, vendor: this.vendor}, 'Gather:_onTranscription raw transcript'); + this.logger.debug({ + evt, + bugname, + finished, + vendor: this.vendor + }, `Gather:_onTranscription ${this.stackNum} raw transcript`); if (bugname && this.bugname !== bugname) return; if (this.vendor === 'ibm' && evt?.state === 'listening') return; @@ -875,7 +885,7 @@ class TaskGather extends SttTask { } } _onEndOfUtterance(cs, ep) { - this.logger.debug('TaskGather:_onEndOfUtterance'); + this.logger.debug(`TaskGather:_onEndOfUtterance ${this.stackNum}`); if (this.bargein && this.minBargeinWordCount === 0) { this._killAudio(cs); } @@ -974,7 +984,7 @@ class TaskGather extends SttTask { } async _resolve(reason, evt) { - this.logger.debug(`TaskGather:resolve with reason ${reason}`); + this.logger.debug(`TaskGather:resolve ${this.stackNum} with reason ${reason}`); if (this.needsStt && this.ep && this.ep.connected) { this.ep.stopTranscription({ vendor: this.vendor,