ಎಲ್ಲಾ Home Assistant ಧ್ವನಿ ಆಜ್ಞೆಗಳನ್ನು ಕಸ್ಟಮ್ ಏಜೆಂಟ್‌ಗೆ ವರ್ಗಾಯಿಸಿ

ನೀವು ಪ್ರತಿಯೊಂದು ಧ್ವನಿ ಆಜ್ಞೆಯೂ (voice command) ನಿಮ್ಮ ಸ್ವಂತ ಏಜೆಂಟ್‌ಗೆ ಹೋಗಬೇಕೆಂದು ಬಯಸುತ್ತೀರಿ. ಬಹುಶಃ ಅದು ಲೋಕಲ್ LLM ಆಗಿರಬಹುದು ಅಥವಾ MCP ಬೆಂಬಲವಿರುವ ಅಸಿಸ್ಟೆಂಟ್ ಆಗಿರಬಹುದು.

Home Assistant 2026.5 ಮತ್ತು ನಂತರದ ಆವೃತ್ತಿಗಳಲ್ಲಿ, ಇದನ್ನು ಮಾಡುವ ಸಾಮಾನ್ಯ ವಿಧಾನವು ವಿಫಲವಾಗುತ್ತದೆ.

ನೀವು ಆಟೊಮೇಷನ್‌ನಲ್ಲಿ (automation) ಕೇವಲ ವೈಲ್ಡ್‌ಕಾರ್ಡ್ (wildcard) ಬಳಸಿದರೆ, ನಿಮಗೆ HTTP 500 ಎರರ್ ಬರುತ್ತದೆ. ಈ ಎರರ್ ಬರಲು ಕಾರಣವೆಂದರೆ, ಸಿಸ್ಟಮ್ ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲದ ಪಟ್ಟಿಯನ್ನು (list) ಹುಡುಕುತ್ತದೆ.

ನೀವು ಈ ಎರರ್ ಅನ್ನು ತಪ್ಪಿಸಿದರೂ ಸಹ, ಬಿಲ್ಟ್-ಇನ್ ಕಮಾಂಡ್‌ಗಳು ನಿಮ್ಮ ಪ್ರಶ್ನೆಗಳನ್ನು ಹೈಜಾಕ್ ಮಾಡುತ್ತವೆ. ನೀವು "When is the next low tide" ಎಂದು ಕೇಳಿದರೆ, Home Assistant ಬದಲಿಗೆ ಮುಂದಿನ ಹಾಡನ್ನು ಪ್ಲೇ ಮಾಡಲು ಪ್ರಯತ್ನಿಸಬಹುದು.

ಈ ಎರಡೂ ಸಮಸ್ಯೆಗಳನ್ನು ಸರಿಪಡಿಸುವುದು ಹೇಗೆ ಎಂಬುದು ಇಲ್ಲಿದೆ.

ಸಮಸ್ಯೆಗಳು

  1. MissingListError: ನೀವು ಆಟೊಮೇಷನ್‌ನಲ್ಲಿ {text} ಅನ್ನು ಬಳಸಿದಾಗ, Home Assistant "text" ಎಂಬ ಹೆಸರಿನ ನೋಂದಾಯಿತ ಪಟ್ಟಿಯನ್ನು ನಿರೀಕ್ಷಿಸುತ್ತದೆ. ಆಟೊಮೇಷನ್‌ಗಳಲ್ಲಿ ನೀವು ಪಟ್ಟಿಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲು ಸಾಧ್ಯವಿಲ್ಲದ ಕಾರಣ, ಸಿಸ್ಟಮ್ ಕ್ರ್ಯಾಶ್ ಆಗುತ್ತದೆ.

  2. Intent Hijacking: "turn on" ಅಥವಾ "play next" ನಂತಹ ಬಿಲ್ಟ್-ಇನ್ ಕಮಾಂಡ್‌ಗಳು ನಿಮ್ಮ ಕಸ್ಟಮ್ ಏಜೆಂಟ್‌ಗೆ ಅವಕಾಶ ಸಿಗುವ ಮೊದಲೇ ನಿಮ್ಮ ಪದಗಳಿಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತವೆ.

ಪರಿಹಾರ

ನೀವು 'ಕ್ಯಾಚ್-ಆಲ್' (catch-all) ಲಾಜಿಕ್ ಅನ್ನು ಆಟೊಮೇಷನ್‌ಗಳಿಂದ ಹೊರಗೆ ಮತ್ತು ಕಸ್ಟಮ್ ವಾಕ್ಯಗಳಿಗೆ (custom sentences) ವರ್ಗಾಯಿಸಬೇಕು. ಇದು ನೀವು ನೈಜ ವೈಲ್ಡ್‌ಕಾರ್ಡ್ ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ ಮತ್ತು ನಿಮ್ಮ ಕಮಾಂಡ್ ಮೊದಲು ಲೋಡ್ ಆಗುವುದನ್ನು ಖಚಿತಪಡಿಸುತ್ತದೆ.

ಹಂತ 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