Dirige todos los comandos de voz de Home Assistant a un agente personalizado

Quieres que cada comando de voz se dirija a tu propio agente. Tal vez sea un LLM local o un asistente con soporte para MCP.

En Home Assistant 2026.5 y versiones posteriores, la forma estándar de hacer esto falla.

Si usas un comodín (wildcard) simple en una automatización, obtendrás un error HTTP 500. Este error ocurre porque el sistema busca una lista que no existe.

Incluso si evitas el error, los comandos integrados secuestrarán tus consultas. Si preguntas "¿Cuándo es la próxima marea baja?", Home Assistant podría intentar reproducir la siguiente canción en su lugar.

Aquí te explicamos cómo solucionar ambos problemas.

Los problemas

  1. MissingListError: Cuando usas {text} en una automatización, Home Assistant espera una lista registrada llamada "text". Dado que no puedes definir listas en las automatizaciones, el sistema falla.

  2. Secuestro de intenciones (Intent Hijacking): Los comandos integrados como "turn on" o "play next" coinciden con tus palabras antes de que tu agente personalizado tenga oportunidad.

La solución

Debes trasladar la lógica de captura general fuera de las automatizaciones y llevarla a frases personalizadas (custom sentences). Esto te permite definir un comodín real y garantiza que tu comando se cargue primero.

Paso 1: Crea una frase personalizada Crea un archivo en tu carpeta custom_sentences. Esto registra una lista de comodines real.

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

Paso 2: Usa un intent_script En lugar de una automatización, usa un intent_script en tu configuration.yaml. Esto gestiona la respuesta y mantiene fluido el flujo de voz.

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

Por qué esto funciona

• La lista de comodines detiene el error HTTP 500. • Las frases personalizadas se cargan antes que las intenciones integradas. Tu agente captura el comando primero. • El uso de intent_script evita bloqueos de voz en muchos satélites de hardware.

Nota: Un comodín total capturará todo, incluyendo "turn on the lights". Si quieres mantener el control nativo, añade una palabra de prefijo a tu frase personalizada para que solo se active cuando tú quieras.

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

Comunidad de aprendizaje opcional: https://t.me/GyaanSetuAi