সমস্ত Home Assistant Voice-কে একটি কাস্টম এজেন্টে রুট করুন
আপনি চান প্রতিটি ভয়েস কমান্ড আপনার নিজস্ব এজেন্টে যাক। এটি একটি লোকাল LLM বা MCP সাপোর্টযুক্ত কোনো অ্যাসিস্ট্যান্ট হতে পারে।
Home Assistant 2026.5 এবং এর পরবর্তী ভার্সনগুলোতে, এটি করার প্রচলিত পদ্ধতিটি কাজ করে না।
আপনি যদি কোনো অটোমেশনে সরাসরি ওয়াইল্ডকার্ড (wildcard) ব্যবহার করেন, তবে আপনি একটি HTTP 500 এরর পাবেন। এই এররটি ঘটে কারণ সিস্টেম এমন একটি লিস্ট খোঁজে যা আসলে নেই।
আপনি যদি এররটি এড়িয়েও যান, তবুও বিল্ট-ইন কমান্ডগুলো আপনার কুয়েরি হাইজ্যাক (hijack) করবে। আপনি যদি জিজ্ঞাসা করেন "When is the next low tide," Home Assistant পরিবর্তে পরবর্তী গানটি বাজানোর চেষ্টা করতে পারে।
এই উভয় সমস্যা সমাধানের উপায় নিচে দেওয়া হলো।
সমস্যাগুলো
MissingListError: যখন আপনি কোনো অটোমেশনে
{text}ব্যবহার করেন, Home Assistant "text" নামে একটি রেজিস্টার্ড লিস্ট আশা করে। যেহেতু আপনি অটোমেশনে লিস্ট ডিফাইন করতে পারেন না, তাই সিস্টেমটি ক্র্যাশ করে।Intent Hijacking: "turn on" বা "play next"-এর মতো বিল্ট-ইন কমান্ডগুলো আপনার কাস্টম এজেন্ট সুযোগ পাওয়ার আগেই আপনার কথাগুলোর সাথে মিলে যায়।
সমাধান
আপনাকে catch-all লজিকটি অটোমেশন থেকে সরিয়ে কাস্টম সেন্টেন্সে (custom sentences) নিয়ে আসতে হবে। এটি আপনাকে একটি প্রকৃত ওয়াইল্ডকার্ড ডিফাইন করতে সাহায্য করবে এবং নিশ্চিত করবে যে আপনার কমান্ডটি সবার আগে লোড হচ্ছে।
ধাপ ১: একটি কাস্টম সেন্টেন্স তৈরি করুন
আপনার custom_sentences ফোল্ডারে একটি ফাইল তৈরি করুন। এটি একটি প্রকৃত ওয়াইল্ডকার্ড লিস্ট রেজিস্টার করবে।
language: "en"
intents:
NaturaliQuery:
data:
- sentences:
- "{text}"
lists:
text:
wildcard: true
ধাপ ২: একটি 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"-সহ সবকিছুকেই ক্যাপচার করবে। আপনি যদি নেটিভ কন্ট্রোল বজায় রাখতে চান, তবে আপনার কাস্টম সেন্টেন্সে একটি প্রিফিক্স (prefix) শব্দ যোগ করুন যাতে এটি শুধুমাত্র তখনই ট্রিগার হয় যখন আপনি চান।
Optional learning community: https://t.me/GyaanSetuAi
