How to force a specific pipeline for assist_satellite.start_conversation? (Bilingual Voice PE)
Voice PE puck set up with two wake words → two Assist pipelines:
- "Hey Jarvis" → Grok EN (Clara voice, EN STT)
- "OK Nabu" → Grok FR (Sylvie voice, FR STT)
Manual commands work great. The pain: inbound notifications via webhooks (SMS / Signal) that call assist_satellite.start_conversation to announce + listen hands-free.
start_conversation uses the puck's currently-active pipeline — i.e., whichever wake word was last used. So if I just talked to "Hey Jarvis", a French SMS arrives and Clara reads it with an English accent, then STT mishears my "oui" as "with"/"play"/etc and Grok gets garbage.
Things I tried that don't work:
- select.select_option on select.X_assistant and _assistant_2 before start_conversation — only rebinds wake-word → pipeline mapping permanently, doesn't override the active
pipeline for the in-flight conversation - Setting preferred_item in /config/.storage/assist_pipeline.pipelines — confirmed via test it does NOT override the satellite's bound pipeline for start_conversation
- No pipeline_entity_id parameter on assist_satellite.start_conversation (afaict)
Current workaround: skip hands-free entirely. Use tts.speak with explicit voice: SylvieNeural / ClaraNeural for the announce (correct voice, no mic open). Then I manually say "OK Nabu, lis mon dernier SMS" to read the body — that works because the wake word puts the puck on the right pipeline.
The question: is there a way to specify which pipeline start_conversation should use per-call? Or another service that opens the mic on a specific pipeline without going through the wake-word flow? Even editing storage to flip the satellite's "active pipeline" between calls would be acceptable.
HA 2026.5 / Voice PE firmware latest / Grok-based conversation agent. Cross-language home, both EN and FR daily.