Add missing voice assistant select action logic (#22139)

This commit is contained in:
Bram Kragten 2024-09-27 20:40:55 +02:00 committed by GitHub
parent 8223f6b155
commit d7aaa41aa4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -14,6 +14,7 @@ import {
import { import {
assistSatelliteAnnounce, assistSatelliteAnnounce,
AssistSatelliteConfiguration, AssistSatelliteConfiguration,
setWakeWords,
} from "../../data/assist_satellite"; } from "../../data/assist_satellite";
import { fetchCloudStatus } from "../../data/cloud"; import { fetchCloudStatus } from "../../data/cloud";
import { showVoiceAssistantPipelineDetailDialog } from "../../panels/config/voice-assistants/show-dialog-voice-assistant-pipeline-detail"; import { showVoiceAssistantPipelineDetailDialog } from "../../panels/config/voice-assistants/show-dialog-voice-assistant-pipeline-detail";
@ -21,6 +22,8 @@ import "../../panels/lovelace/entity-rows/hui-select-entity-row";
import { HomeAssistant } from "../../types"; import { HomeAssistant } from "../../types";
import { AssistantSetupStyles } from "./styles"; import { AssistantSetupStyles } from "./styles";
import { STEP } from "./voice-assistant-setup-dialog"; import { STEP } from "./voice-assistant-setup-dialog";
import { setSelectOption } from "../../data/select";
import { InputSelectEntity } from "../../data/input_select";
@customElement("ha-voice-assistant-setup-step-success") @customElement("ha-voice-assistant-setup-step-success")
export class HaVoiceAssistantSetupStepSuccess extends LitElement { export class HaVoiceAssistantSetupStepSuccess extends LitElement {
@ -58,7 +61,9 @@ export class HaVoiceAssistantSetupStepSuccess extends LitElement {
protected override render() { protected override render() {
const pipelineEntity = this.assistConfiguration const pipelineEntity = this.assistConfiguration
? this.hass.states[this.assistConfiguration.pipeline_entity_id] ? (this.hass.states[
this.assistConfiguration.pipeline_entity_id
] as InputSelectEntity)
: undefined; : undefined;
return html`<div class="content"> return html`<div class="content">
@ -69,15 +74,18 @@ export class HaVoiceAssistantSetupStepSuccess extends LitElement {
settings, you can change that below. settings, you can change that below.
</p> </p>
<div class="rows"> <div class="rows">
<div class="row"> ${this.assistConfiguration &&
this.assistConfiguration.available_wake_words.length > 1
? html` <div class="row">
<ha-select <ha-select
.label=${"Wake word"} .label=${"Wake word"}
@closed=${stopPropagation} @closed=${stopPropagation}
fixedMenuPosition fixedMenuPosition
naturalMenuWidth naturalMenuWidth
.value=${this.assistConfiguration?.active_wake_words[0]} .value=${this.assistConfiguration.active_wake_words[0]}
@selected=${this._wakeWordPicked}
> >
${this.assistConfiguration?.available_wake_words.map( ${this.assistConfiguration.available_wake_words.map(
(wakeword) => (wakeword) =>
html`<ha-list-item .value=${wakeword.id}> html`<ha-list-item .value=${wakeword.id}>
${wakeword.wake_word} ${wakeword.wake_word}
@ -88,14 +96,17 @@ export class HaVoiceAssistantSetupStepSuccess extends LitElement {
<ha-svg-icon slot="icon" .path=${mdiMicrophone}></ha-svg-icon> <ha-svg-icon slot="icon" .path=${mdiMicrophone}></ha-svg-icon>
Test Test
</ha-button> </ha-button>
</div> </div>`
<div class="row"> : nothing}
${pipelineEntity
? html`<div class="row">
<ha-select <ha-select
.label=${"Assistant"} .label=${"Assistant"}
@closed=${stopPropagation} @closed=${stopPropagation}
.value=${pipelineEntity?.state} .value=${pipelineEntity?.state}
fixedMenuPosition fixedMenuPosition
naturalMenuWidth naturalMenuWidth
@selected=${this._pipelinePicked}
> >
${pipelineEntity?.attributes.options.map( ${pipelineEntity?.attributes.options.map(
(pipeline) => (pipeline) =>
@ -108,7 +119,8 @@ export class HaVoiceAssistantSetupStepSuccess extends LitElement {
<ha-svg-icon slot="icon" .path=${mdiCog}></ha-svg-icon> <ha-svg-icon slot="icon" .path=${mdiCog}></ha-svg-icon>
Edit Edit
</ha-button> </ha-button>
</div> </div>`
: nothing}
${this._ttsSettings ${this._ttsSettings
? html`<div class="row"> ? html`<div class="row">
<ha-tts-voice-picker <ha-tts-voice-picker
@ -156,6 +168,25 @@ export class HaVoiceAssistantSetupStepSuccess extends LitElement {
return [pipeline, pipelines.preferred_pipeline]; return [pipeline, pipelines.preferred_pipeline];
} }
private async _wakeWordPicked(ev) {
const option = ev.target.value;
await setWakeWords(this.hass, this.assistEntityId!, [option]);
}
private _pipelinePicked(ev) {
const stateObj = this.hass!.states[
this.assistConfiguration!.pipeline_entity_id
] as InputSelectEntity;
const option = ev.target.value;
if (
option === stateObj.state ||
!stateObj.attributes.options.includes(option)
) {
return;
}
setSelectOption(this.hass!, stateObj.entity_id, option);
}
private async _setTtsSettings() { private async _setTtsSettings() {
const [pipeline] = await this._getPipeline(); const [pipeline] = await this._getPipeline();
if (!pipeline) { if (!pipeline) {