ส่งคำสั่งเสียงทั้งหมดของ Home Assistant ไปยัง Agent ส่วนตัวของคุณ
คุณต้องการให้ทุกคำสั่งเสียงถูกส่งไปยัง Agent ของคุณเอง ไม่ว่าจะเป็น Local LLM หรือผู้ช่วยที่มีการรองรับ MCP ก็ตาม
ใน Home Assistant เวอร์ชัน 2026.5 และใหม่กว่า วิธีมาตรฐานในการทำสิ่งนี้จะใช้งานไม่ได้
หากคุณใช้ wildcard เปล่าๆ ใน automation คุณจะพบข้อผิดพลาด HTTP 500 ซึ่งเกิดขึ้นเพราะระบบพยายามค้นหารายการ (list) ที่ไม่มีอยู่จริง
ถึงแม้คุณจะหลีกเลี่ยงข้อผิดพลาดนี้ได้ แต่คำสั่งที่มีมาให้ในตัว (built-in commands) จะเข้ามาแย่งคำสั่งของคุณ หากคุณถามว่า "When is the next low tide" Home Assistant อาจจะพยายามเล่นเพลงถัดไปแทน
นี่คือวิธีแก้ไขทั้งสองปัญหาดังกล่าว
ปัญหาที่พบ
MissingListError: เมื่อคุณใช้
{text}ใน automation ตัว Home Assistant จะคาดหวังว่ามีรายการที่ลงทะเบียนไว้ในชื่อ "text" แต่เนื่องจากคุณไม่สามารถกำหนดรายการ (lists) ใน automation ได้ ระบบจึงเกิดการล่ม (crash)Intent Hijacking: คำสั่งที่มีมาให้ในตัว เช่น "turn on" หรือ "play next" จะตรวจพบคำพูดของคุณก่อนที่ custom agent ของคุณจะมีโอกาสได้รับคำสั่ง
วิธีแก้ไข
คุณต้องย้ายตรรกะแบบ catch-all ออกจาก automation ไปไว้ใน custom sentences แทน วิธีนี้จะช่วยให้คุณสามารถกำหนด wildcard ที่ใช้งานได้จริง และช่วยให้มั่นใจว่าคำสั่งของคุณจะถูกโหลดขึ้นมาก่อน
ขั้นตอนที่ 1: สร้าง custom sentence
สร้างไฟล์ในโฟลเดอร์ custom_sentences ของคุณ วิธีนี้จะเป็นการลงทะเบียนรายการ wildcard ที่ใช้งานได้จริง
language: "en"
intents:
NaturaliQuery:
data:
- sentences:
- "{text}"
lists:
text:
wildcard: true
ขั้นตอนที่ 2: ใช้ intent_script
แทนที่จะใช้ automation ให้ใช้ intent_script ใน configuration.yaml ของคุณ วิธีนี้จะช่วยจัดการการตอบสนองและทำให้ voice pipeline ทำงานได้อย่างราบรื่น
intent_script:
NaturaliQuery:
speech:
text: "One moment."
action:
- action: mqtt.publish
data:
topic: my/agent/ask
payload: '{"text": "{{ text }}"}'
ทำไมวิธีนี้ถึงได้ผล
• รายการ wildcard ช่วยหยุดข้อผิดพลาด HTTP 500
• Custom sentences จะถูกโหลดก่อน built-in intents ทำให้ agent ของคุณได้รับคำสั่งก่อน
• การใช้ intent_script ช่วยหลีกเลี่ยงปัญหา voice deadlocks ในอุปกรณ์ satellite หลายรุ่น
หมายเหตุ: การใช้ wildcard แบบเต็มรูปแบบจะดักจับทุกอย่าง รวมถึงคำสั่งอย่าง "turn on the lights" ด้วย หากคุณต้องการรักษาการควบคุมแบบดั้งเดิมไว้ ให้เพิ่มคำนำหน้า (prefix) ใน custom sentence ของคุณ เพื่อให้มันทำงานเฉพาะเมื่อคุณต้องการเท่านั้น
Optional learning community: https://t.me/GyaanSetuAi
