Encaminhe Toda a Voz do Home Assistant para um Agente Personalizado

Você quer que cada comando de voz seja enviado para o seu próprio agente. Talvez seja um LLM local ou um assistente com suporte a MCP.

No Home Assistant 2026.5 e versões mais recentes, a maneira padrão de fazer isso falha.

Se você usar um wildcard puro em uma automação, receberá um erro HTTP 500. Esse erro ocorre porque o sistema procura por uma lista que não existe.

Mesmo que você evite o erro, os comandos integrados irão sequestrar suas consultas. Se você perguntar "Quando é a próxima maré baixa", o Home Assistant pode tentar tocar a próxima música em vez disso.

Aqui está como corrigir ambos os problemas.

Os Problemas

  1. MissingListError: Quando você usa {text} em uma automação, o Home Assistant espera uma lista registrada chamada "text". Como você não pode definir listas em automações, o sistema trava.

  2. Sequestro de Intenção (Intent Hijacking): Comandos integrados como "turn on" ou "play next" correspondem às suas palavras antes que seu agente personalizado tenha uma chance.

A Solução

Você deve mover a lógica de captura geral (catch-all) das automações para frases personalizadas (custom sentences). Isso permite que você defina um wildcard real e garante que seu comando seja carregado primeiro.

Passo 1: Crie uma frase personalizada Crie um arquivo na sua pasta custom_sentences. Isso registra uma lista de wildcard real.

language: "en"
intents:
  NaturaliQuery:
    data:
      - sentences:
          - "{text}"
lists:
  text:
    wildcard: true

Passo 2: Use um intent_script Em vez de uma automação, use um intent_script no seu configuration.yaml. Isso gerencia a resposta e mantém o pipeline de voz fluido.

intent_script:
  NaturaliQuery:
    speech:
      text: "One moment."
    action:
      - action: mqtt.publish
        data:
          topic: my/agent/ask
          payload: '{"text": "{{ text }}"}'

Por que isso funciona

• A lista de wildcard interrompe o erro HTTP 500. • Frases personalizadas são carregadas antes das intenções integradas. Seu agente captura o comando primeiro. • O uso de intent_script evita deadlocks de voz em muitos satélites de hardware.

Nota: Um wildcard total capturará tudo, incluindo "turn on the lights". Se você quiser manter o controle nativo, adicione uma palavra de prefixo à sua frase personalizada para que ela só seja acionada quando você desejar.

Source: https://dev.to/clarkbw--/route-all-home-assistant-voice-to-a-custom-agent-with-a-wildcard-sentence-4iee

Optional learning community: https://t.me/GyaanSetuAi