diff --git a/src/components/ha-assist-chat.ts b/src/components/ha-assist-chat.ts index 9c206f3b80..36d5ece3a4 100644 --- a/src/components/ha-assist-chat.ts +++ b/src/components/ha-assist-chat.ts @@ -295,6 +295,7 @@ export class HaAssistChat extends LitElement { this._addMessage(userMessage); this.requestUpdate("_audioRecorder"); + let continueConversation = false; let hassMessage = { who: "hass", text: "…", @@ -369,6 +370,8 @@ export class HaAssistChat extends LitElement { if (event.type === "intent-end") { this._conversationId = event.data.intent_output.conversation_id; + continueConversation = + event.data.intent_output.continue_conversation; const plain = event.data.intent_output.response.speech?.plain; if (plain) { hassMessage.text = plain.speech; @@ -380,7 +383,12 @@ export class HaAssistChat extends LitElement { const url = event.data.tts_output.url; this._audio = new Audio(url); this._audio.play(); - this._audio.addEventListener("ended", this._unloadAudio); + this._audio.addEventListener("ended", () => { + this._unloadAudio(); + if (continueConversation) { + this._startListening(); + } + }); this._audio.addEventListener("pause", this._unloadAudio); this._audio.addEventListener("canplaythrough", this._playAudio); this._audio.addEventListener("error", this._audioError); diff --git a/src/data/conversation.ts b/src/data/conversation.ts index 8d46785206..3f5282c12e 100644 --- a/src/data/conversation.ts +++ b/src/data/conversation.ts @@ -51,6 +51,7 @@ export interface ConversationResult { | IntentResultActionDone | IntentResultQueryAnswer | IntentResultError; + continue_conversation: boolean; } export interface Agent {