అన్ని Home Assistant వాయిస్ కమాండ్లను ఒక కస్టమ్ ఏజెంట్‌కు రూట్ చేయండి

ప్రతి వాయిస్ కమాండ్ మీ స్వంత ఏజెంట్‌కు వెళ్లాలని మీరు కోరుకుంటున్నారు. అది ఒక లోకల్ LLM లేదా MCP సపోర్ట్ ఉన్న అసిస్టెంట్ కావచ్చు.

Home Assistant 2026.5 మరియు అంతకంటే కొత్త వెర్షన్లలో, దీనిని చేయడానికి సాధారణ పద్ధతి విఫలమవుతుంది.

మీరు ఆటోమేషన్‌లో కేవలం వైల్డ్‌కార్డ్ (wildcard) ఉపయోగిస్తే, మీకు HTTP 500 ఎర్రర్ వస్తుంది. సిస్టమ్ లేని ఒక లిస్ట్ కోసం వెతకడం వల్ల ఈ ఎర్రర్ వస్తుంది.

మీరు ఆ ఎర్రర్‌ను నివారించినప్పటికీ, బిల్ట్-ఇన్ కమాండ్లు మీ క్వెరీలను హైజాక్ చేస్తాయి. మీరు "When is the next low tide" అని అడిగితే, Home Assistant బదులుగా తదుపరి పాటను ప్లే చేయడానికి ప్రయత్నించవచ్చు.

ఈ రెండు సమస్యలను ఎలా పరిష్కరించాలో ఇక్కడ ఉంది.

సమస్యలు

  1. MissingListError: మీరు ఆటోమేషన్‌లో {text}ని ఉపయోగించినప్పుడు, Home Assistant "text" అనే పేరుతో రిజిస్టర్ చేయబడిన లిస్ట్ కోసం ఎదురుచూస్తుంది. ఆటోమేషన్లలో మీరు లిస్ట్‌లను నిర్వచించలేరు కాబట్టి, సిస్టమ్ క్రాష్ అవుతుంది.

  2. Intent Hijacking: మీ కస్టమ్ ఏజెంట్‌కు అవకాశం రాకముందే "turn on" లేదా "play next" వంటి బిల్ట్-ఇన్ కమాండ్లు మీ మాటలను మ్యాచ్ చేస్తాయి.

పరిష్కారం

మీరు 'catch-all' లాజిక్‌ను ఆటోమేషన్ల నుండి తీసివేసి, కస్టమ్ సెంటెన్సెస్‌లోకి మార్చాలి. ఇది మీరు ఒక నిజమైన వైల్డ్‌కార్డ్‌ను నిర్వచించడానికి అనుమతిస్తుంది మరియు మీ కమాండ్ మొదట లోడ్ అయ్యేలా చేస్తుంది.

స్టెప్ 1: ఒక కస్టమ్ సెంటెన్స్ సృష్టించండి మీ custom_sentences ఫోల్డర్‌లో ఒక ఫైల్‌ను సృష్టించండి. ఇది ఒక నిజమైన వైల్డ్‌కార్డ్ లిస్ట్‌ను రిజిస్టర్ చేస్తుంది.

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

స్టెప్ 2: intent_script ఉపయోగించండి ఆటోమేషన్‌కు బదులుగా, మీ configuration.yamlలో intent_scriptని ఉపయోగించండి. ఇది రెస్పాన్స్‌ను హ్యాండిల్ చేస్తుంది మరియు వాయిస్ పైప్‌లైన్‌ను స్మూత్‌గా ఉంచుతుంది.

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

ఇది ఎందుకు పనిచేస్తుంది

• వైల్డ్‌కార్డ్ లిస్ట్ HTTP 500 ఎర్రర్‌ను నిరోధిస్తుంది. • కస్టమ్ సెంటెన్సెస్ బిల్ట్-ఇన్ ఇంటెంట్స్ కంటే ముందే లోడ్ అవుతాయి. మీ ఏజెంట్ కమాండ్‌ను మొదట పట్టుకుంటుంది. • intent_script ఉపయోగించడం వల్ల అనేక హార్డ్‌వేర్ శాటిలైట్‌లపై వాయిస్ డెడ్‌లాక్‌లు (voice deadlocks) నివారించబడతాయి.

గమనిక: ఫుల్ వైల్డ్‌కార్డ్ "turn on the lights"తో సహా అన్నింటినీ పట్టుకుంటుంది. మీరు నేటివ్ కంట్రోల్‌ను కొనసాగించాలనుకుంటే, మీ కస్టమ్ సెంటెన్స్‌కు ఒక ప్రిఫిక్స్ (prefix) పదాన్ని జోడించండి, తద్వారా అది మీరు కోరుకున్నప్పుడు మాత్రమే ట్రిగ్గర్ అవుతుంది.

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