Alihkan Semua Suara Home Assistant ke Agen Kustom
Anda ingin setiap perintah suara diarahkan ke agen Anda sendiri. Mungkin berupa LLM lokal atau asisten dengan dukungan MCP.
Pada Home Assistant 2026.5 dan yang lebih baru, cara standar untuk melakukan ini gagal.
Jika Anda menggunakan wildcard murni dalam sebuah otomasi, Anda akan mendapatkan error HTTP 500. Error ini terjadi karena sistem mencari daftar yang tidak ada.
Bahkan jika Anda menghindari error tersebut, perintah bawaan akan membajak kueri Anda. Jika Anda bertanya "When is the next low tide," Home Assistant mungkin malah mencoba memutar lagu berikutnya.
Berikut adalah cara memperbaiki kedua masalah tersebut.
Masalahnya
MissingListError: Saat Anda menggunakan {text} dalam sebuah otomasi, Home Assistant mengharapkan daftar terdaftar bernama "text." Karena Anda tidak dapat mendefinisikan daftar dalam otomasi, sistem akan crash.
Intent Hijacking: Perintah bawaan seperti "turn on" atau "play next" akan mencocokkan kata-kata Anda sebelum agen kustom Anda sempat memprosesnya.
Solusinya
Anda harus memindahkan logika catch-all keluar dari otomasi dan ke dalam custom sentences. Ini memungkinkan Anda untuk mendefinisikan wildcard yang nyata dan memastikan perintah Anda dimuat lebih dulu.
Langkah 1: Buat custom sentence Buat file di folder custom_sentences Anda. Ini akan mendaftarkan daftar wildcard yang nyata.
language: "en"
intents:
NaturaliQuery:
data:
- sentences:
- "{text}"
lists:
text:
wildcard: true
Langkah 2: Gunakan intent_script Alih-alih menggunakan otomasi, gunakan intent_script di configuration.yaml Anda. Ini menangani respons dan menjaga alur suara tetap lancar.
intent_script:
NaturaliQuery:
speech:
text: "One moment."
action:
- action: mqtt.publish
data:
topic: my/agent/ask
payload: '{"text": "{{ text }}"}'
Mengapa ini berhasil
• Daftar wildcard menghentikan error HTTP 500. • Custom sentences dimuat sebelum intent bawaan. Agen Anda menangkap perintah tersebut lebih dulu. • Menggunakan intent_script menghindari kebuntuan suara (voice deadlocks) pada banyak perangkat satelit hardware.
Catatan: Wildcard penuh akan menangkap segalanya, termasuk "turn on the lights." Jika Anda ingin mempertahankan kontrol asli, tambahkan kata awalan pada custom sentence Anda agar hanya terpicu saat Anda menginginkannya.
Komunitas belajar opsional: https://t.me/GyaanSetuAi
