ניתוב כל פקודות הקול של Home Assistant לסוכן מותאם אישית
אתם רוצים שכל פקודת קול תופנה לסוכן שלכם. אולי מדובר ב-LLM מקומי או בעוזר עם תמיכה ב-MCP.
בגרסאות Home Assistant 2026.5 ומעלה, הדרך הסטנדרטית לעשות זאת נכשלת.
אם תשתמשו ב-wildcard גולמי באוטומציה, תקבלו שגיאת HTTP 500. שגיאה זו מתרחשת מכיוון שהמערכת מחפשת רשימה שאינה קיימת.
גם אם תמנעו מהשגיאה, פקודות מובנות יחטפו את השאילתות שלכם. אם תשאלו "When is the next low tide", Home Assistant עשוי לנסות להשמיע את השיר הבא במקום זאת.
הנה הדרך לפתור את שתי הבעיות.
הבעיות
MissingListError: כשמשתמשים ב-{text} באוטומציה, Home Assistant מצפה לרשימה רשומה בשם "text". מכיוון שלא ניתן להגדיר רשימות באוטומציות, המערכת קורסת.
Intent Hijacking: פקודות מובנות כמו "turn on" או "play next" מתאימות למילים שלכם לפני שהסוכן המותאם אישית שלכם מקבל הזדמנות.
הפתרון
עליכם להעביר את לוגיקת ה-catch-all מתוך האוטומציות אל תוך משפטים מותאמים אישית (custom sentences). זה מאפשר לכם להגדיר wildcard אמיתי ומבטיח שהפקודה שלכם תיטען ראשונה.
שלב 1: יצירת משפט מותאם אישית
צרו קובץ בתיקיית ה-custom_sentences שלכם. פעולה זו רושמת רשימת wildcard אמיתית.
language: "en"
intents:
NaturaliQuery:
data:
- sentences:
- "{text}"
lists:
text:
wildcard: true
שלב 2: שימוש ב-intent_script
במקום אוטומציה, השתמשו ב-intent_script בקובץ ה-configuration.yaml שלכם. זה מטפל בתגובה ושומר על זרימת פקודות הקול חלקה.
intent_script:
NaturaliQuery:
speech:
text: "One moment."
action:
- action: mqtt.publish
data:
topic: my/agent/ask
payload: '{"text": "{{ text }}"}'
למה זה עובד
• רשימת ה-wildcard מונעת את שגיאת ה-HTTP 500.
• משפטים מותאמים אישית נטענים לפני ה-intents המובנים. הסוכן שלכם תופס את הפקודה ראשון.
• שימוש ב-intent_script מונע מצבי deadlocks של קול בלווייני חומרה (hardware satellites) רבים.
הערה: wildcard מלא יתפוס הכל, כולל "turn on the lights". אם ברצונכם לשמור על שליטה מקורית, הוסיפו מילת קידומת (prefix) למשפט המותאם אישית שלכם כדי שהוא יופעל רק כשאתם רוצים בכך.
Optional learning community: https://t.me/GyaanSetuAi
