તમામ Home Assistant વોઇસને કસ્ટમ એજન્ટ પર રૂટ કરો

તમે ઈચ્છો છો કે દરેક વોઇસ કમાન્ડ તમારા પોતાના એજન્ટ પાસે જાય. કદાચ તે લોકલ LLM હોય અથવા MCP સપોર્ટ ધરાવતું આસિસ્ટન્ટ હોય.

Home Assistant 2026.5 અને તેનાથી નવા વર્ઝનમાં, આ કરવા માટેની પ્રમાણભૂત રીત નિષ્ફળ જાય છે.

જો તમે ઓટોમેશનમાં સીધો (bare) વાઈલ્ડકાર્ડ વાપરો છો, તો તમને HTTP 500 એરર મળે છે. આ એરર એટલા માટે આવે છે કારણ કે સિસ્ટમ એવી લિસ્ટ શોધે છે જે અસ્તિત્વમાં નથી.

જો તમે એરર ટાળી પણ લો, તો પણ બિલ્ટ-ઇન કમાન્ડ્સ તમારી ક્વેરીઝ હાઇજેક કરી લેશે. જો તમે પૂછો "When is the next low tide," તો Home Assistant તેના બદલે આગલું ગીત વગાડવાનો પ્રયાસ કરી શકે છે.

આ બંને સમસ્યાઓ કેવી રીતે સુધારવી તે અહીં છે.

સમસ્યાઓ

  1. MissingListError: જ્યારે તમે ઓટોમેશનમાં {text} નો ઉપયોગ કરો છો, ત્યારે Home Assistant "text" નામની રજિસ્ટર્ડ લિસ્ટની અપેક્ષા રાખે છે. તમે ઓટોમેશનમાં લિસ્ટ વ્યાખ્યાયિત કરી શકતા નથી, તેથી સિસ્ટમ ક્રેશ થઈ જાય છે.

  2. Intent Hijacking: "turn on" અથવા "play next" જેવા બિલ્ટ-ઇન કમાન્ડ્સ તમારા કસ્ટમ એજન્ટને તક મળે તે પહેલાં જ તમારા શબ્દો સાથે મેચ થઈ જાય છે.

ઉકેલ

તમારે catch-all લોજિકને ઓટોમેશનમાંથી બહાર કાઢીને કસ્ટમ સેન્ટેન્સમાં ખસેડવું પડશે. આ તમને સાચો વાઈલ્ડકાર્ડ વ્યાખ્યાયિત કરવાની મંજૂરી આપે છે અને ખાતરી કરે છે કે તમારો કમાન્ડ પહેલા લોડ થાય.

સ્ટેપ 1: કસ્ટમ સેન્ટેન્સ બનાવો તમારા custom_sentences ફોલ્ડરમાં એક ફાઇલ બનાવો. આ એક સાચી વાઈલ્ડકાર્ડ લિસ્ટ રજિસ્ટર કરે છે.

language: "en"
intents:
  NaturaliQuery:
    data:
      - sentences:
          - "{text}"
lists:
  text:
    wildcard: true

સ્ટેપ 2: intent_script નો ઉપયોગ કરો ઓટોમેશનને બદલે, તમારા configuration.yaml માં intent_script નો ઉપયોગ કરો. આ પ્રતિસાદ (response) હેન્ડલ કરે છે અને વોઇસ પાઇપલાઇનને સ્મૂધ રાખે છે.

intent_script:
  NaturaliQuery:
    speech:
      text: "One moment."
    action:
      - action: mqtt.publish
        data:
          topic: my/agent/ask
          payload: '{"text": "{{ text }}"}'

આ શા માટે કામ કરે છે

• વાઈલ્ડકાર્ડ લિસ્ટ HTTP 500 એરરને અટકાવે છે. • કસ્ટમ સેન્ટેન્સ બિલ્ટ-ઇન ઇન્ટેન્ટ્સ પહેલા લોડ થાય છે. તમારો એજન્ટ કમાન્ડને પહેલા પકડી લે છે. • intent_script નો ઉપયોગ કરવાથી ઘણા હાર્ડવેર સેટેલાઇટ્સ પર વોઇસ ડેડલોક ટાળી શકાય છે.

નોંધ: ફૂલ વાઈલ્ડકાર્ડ "turn on the lights" સહિત બધું જ પકડી લેશે. જો તમે નેટિવ કંટ્રોલ રાખવા માંગતા હોવ, તો તમારા કસ્ટમ સેન્ટેન્સમાં એક પ્રીફિક્સ શબ્દ ઉમેરો જેથી તે ફક્ત ત્યારે જ ટ્રિગર થાય જ્યારે તમે ઈચ્છો છો.

Source: https://dev.to/clarkbw--/route-all-home-assistant-voice-to-a-custom-agent-with-a-wildcard-sentence-4iee

Optional learning community: https://t.me/GyaanSetuAi