diff --git a/src/data/assist_pipeline.ts b/src/data/assist_pipeline.ts index e5f60c2d9c..c0c8b4b788 100644 --- a/src/data/assist_pipeline.ts +++ b/src/data/assist_pipeline.ts @@ -9,6 +9,7 @@ export interface AssistPipeline { language: string; conversation_engine: string; conversation_language: string | null; + prefer_local_intents?: boolean; stt_engine: string | null; stt_language: string | null; tts_engine: string | null; @@ -28,6 +29,7 @@ export interface AssistPipelineMutableParams { language: string; conversation_engine: string; conversation_language: string | null; + prefer_local_intents?: boolean; stt_engine: string | null; stt_language: string | null; tts_engine: string | null; diff --git a/src/panels/config/voice-assistants/assist-pipeline-detail/assist-pipeline-detail-conversation.ts b/src/panels/config/voice-assistants/assist-pipeline-detail/assist-pipeline-detail-conversation.ts index 22c93108d3..1fb3871614 100644 --- a/src/panels/config/voice-assistants/assist-pipeline-detail/assist-pipeline-detail-conversation.ts +++ b/src/panels/config/voice-assistants/assist-pipeline-detail/assist-pipeline-detail-conversation.ts @@ -17,8 +17,12 @@ export class AssistPipelineDetailConversation extends LitElement { @state() private _supportedLanguages?: "*" | string[]; private _schema = memoizeOne( - (language?: string, supportedLanguages?: "*" | string[]) => - [ + ( + engine?: string, + language?: string, + supportedLanguages?: "*" | string[] + ) => { + const fields: any = [ { name: "", type: "grid", @@ -32,18 +36,32 @@ export class AssistPipelineDetailConversation extends LitElement { }, }, }, - supportedLanguages !== "*" && supportedLanguages?.length - ? { - name: "conversation_language", - required: true, - selector: { - language: { languages: supportedLanguages, no_sort: true }, - }, - } - : { name: "", type: "constant" }, - ] as const, + ], }, - ] as const + ]; + + if (supportedLanguages !== "*" && supportedLanguages?.length) { + fields[0].schema.push({ + name: "conversation_language", + required: true, + selector: { + language: { languages: supportedLanguages, no_sort: true }, + }, + }); + } + + if (engine !== "conversation.home_assistant") { + fields.push({ + name: "prefer_local_intents", + default: true, + selector: { + boolean: {}, + }, + }); + } + + return fields; + } ); private _computeLabel = (schema): string => @@ -53,6 +71,13 @@ export class AssistPipelineDetailConversation extends LitElement { ) : ""; + private _computeHelper = (schema): string => + schema.name + ? this.hass.localize( + `ui.panel.config.voice_assistants.assistants.pipeline.detail.form.${schema.name}_description` as LocalizeKeys + ) + : ""; + protected render() { return html`