सर्व Home Assistant Voice एका कस्टम एजंटकडे (Custom Agent) वळवा
तुम्हाला प्रत्येक व्हॉइस कमांड तुमच्या स्वतःच्या एजंटकडे पाठवायची असेल. कदाचित तो एखादा लोकल LLM असेल किंवा MCP सपोर्ट असलेला असिस्टंट असेल.
Home Assistant 2026.5 आणि त्यापुढील आवृत्त्यांमध्ये, हे करण्याचा मानक मार्ग (standard way) अपयशी ठरतो.
जर तुम्ही ऑटोमेशनमध्ये थेट वाइल्डकार्ड (wildcard) वापरले, तर तुम्हाला HTTP 500 एरर येतो. ही एरर येते कारण सिस्टम अशा लिस्टचा शोध घेते जी अस्तित्वात नाही.
जरी तुम्ही ही एरर टाळली तरी, बिल्ट-इन कमांड्स तुमच्या क्वेरीज हायजॅक (hijack) करतील. जर तुम्ही "When is the next low tide" असे विचारले, तर Home Assistant त्याऐवजी पुढचे गाणे प्ले करण्याचा प्रयत्न करू शकते.
या दोन्ही समस्या कशा सोडवायच्या ते खाली दिले आहे.
समस्या
MissingListError: जेव्हा तुम्ही ऑटोमेशनमध्ये {text} वापरता, तेव्हा Home Assistant "text" नावाच्या नोंदणीकृत (registered) लिस्टची अपेक्षा करते. तुम्ही ऑटोमेशनमध्ये लिस्ट परिभाषित करू शकत नसल्यामुळे, सिस्टम क्रॅश होते.
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 एरर येत नाही. • कस्टम सेंटन्सेस बिल्ट-इन इंटेंट्सच्या (intents) आधी लोड होतात. तुमचा एजंट प्रथम कमांड पकडतो. • intent_script वापरल्यामुळे अनेक हार्डवेअर सॅटेलाईट्सवर व्हॉइस डेडलॉक (voice deadlocks) टाळता येतात.
टीप: पूर्ण वाइल्डकार्ड "turn on the lights" सह सर्व काही पकडेल. जर तुम्हाला नेटिव्ह कंट्रोल कायम ठेवायचा असेल, तर तुमच्या कस्टम सेंटन्समध्ये एक प्रीफिक्स शब्द जोडा जेणेकरून तो फक्त तुम्हाला हवे तेव्हाच ट्रिगर होईल.
Optional learning community: https://t.me/GyaanSetuAi
