diff --git a/lib/tasks/gather.js b/lib/tasks/gather.js index 0efa6a20..a759baf9 100644 --- a/lib/tasks/gather.js +++ b/lib/tasks/gather.js @@ -184,9 +184,9 @@ class TaskGather extends Task { this._killAudio(cs); this.ep.removeAllListeners('dtmf'); clearTimeout(this.interDigitTimer); - this._resolve('killed'); this.playTask?.span.end(); this.sayTask?.span.end(); + this._resolve('killed'); } updateTimeout(timeout) { diff --git a/lib/tasks/say.js b/lib/tasks/say.js index 195f9f95..a6f09eb5 100644 --- a/lib/tasks/say.js +++ b/lib/tasks/say.js @@ -44,7 +44,6 @@ class TaskSay extends Task { this.logger.info({vendor, language, voice}, 'TaskSay:exec'); this.ep = ep; - let span; try { if (!credentials) { writeAlerts({ @@ -58,11 +57,12 @@ class TaskSay extends Task { let lastUpdated = false; /* otel: trace time for tts */ - span = this.startSpan('tts-generation', { + const {span} = this.startChildSpan('tts-generation', { 'tts.vendor': vendor, 'tts.language': language, 'tts.voice': voice }); + this.ttsSpan = span; const filepath = (await Promise.all(this.text.map(async(text) => { if (this.killed) return; @@ -91,10 +91,10 @@ class TaskSay extends Task { updateSpeechCredentialLastUsed(credentials.speech_credential_sid) .catch(() => {/*already logged error */}); } - span.setAttributes({'tts.cached': servedFromCache}); + this.ttsSpan.setAttributes({'tts.cached': servedFromCache}); return filePath; }))).filter((fp) => fp && fp.length); - span?.end(); + this.ttsSpan?.end(); this.logger.debug({filepath}, 'synthesized files for tts'); while (!this.killed && (this.loop === 'forever' || this.loop--) && this.ep?.connected) { @@ -112,7 +112,7 @@ class TaskSay extends Task { } while (!this.killed && ++segment < filepath.length); } } catch (err) { - span?.end(); + this.ttsSpan?.end(); this.logger.info(err, 'TaskSay:exec error'); } this.emit('playDone');