in lex-web-ui/src/store/actions.js [429:464]
interruptSpeechConversation(context) {
if (!context.state.recState.isConversationGoing &&
!context.state.botAudio.isSpeaking
) {
return Promise.resolve();
}
return new Promise((resolve, reject) => {
context.dispatch('stopConversation')
.then(() => context.dispatch('stopRecording'))
.then(() => {
if (context.state.botAudio.isSpeaking) {
audio.pause();
}
})
.then(() => {
let count = 0;
const countMax = 20;
const intervalTimeInMs = 250;
context.commit('setIsLexInterrupting', true);
const intervalId = setInterval(() => {
if (!context.state.lex.isProcessing) {
clearInterval(intervalId);
context.commit('setIsLexInterrupting', false);
resolve();
}
if (count > countMax) {
clearInterval(intervalId);
context.commit('setIsLexInterrupting', false);
reject(new Error('interrupt interval exceeded'));
}
count += 1;
}, intervalTimeInMs);
});
});
},