Bugfix/gather kill race condition (#207)

* further fix for race condition in #206

* #206: ignore request to start bot mode when bot mode is already active
This commit is contained in:
Dave Horton
2023-01-04 09:24:39 -05:00
parent aad2d52efd
commit b16d49d8ea
2 changed files with 13 additions and 3 deletions

View File

@@ -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]);

View File

@@ -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);