mirror of
https://github.com/jambonz/jambonz-feature-server.git
synced 2026-08-19 09:40:23 +00:00
`rOpts.sgoogleOptions?.recognizerId` (note the stray `s`) is always
undefined, so GOOGLE_SPEECH_RECOGNIZER_ID was never set on the channel.
The media server therefore fell back to the wildcard recognizer "_" with a
full inline config, and every caller passing a recognizerId silently got the
stock v2 model instead of their custom recognizer. Present since 8999c85, so
in v0.9.7-rc1 and v0.9.8.
Also in the same v2 path:
- Accept a full resource path in `recognizerId`, not just a bare id. The
media server builds <parent>/recognizers/<id>, so a full path would be
concatenated onto the parent into a nonsense recognizer name. A parent
embedded in the path now also wins over `parentPath` and feeds the
regional-endpoint derivation.
- Add the four v2-only vars to google's stickyVars. Without them a v2 gather
leaks its recognizer, endpoint and service version into a later v1 (or
wildcard) gather on the same call. Clearing a sticky var sends "", which
FreeSWITCH treats as a delete (switch_channel.c: zstr(value) ->
switch_event_del_header), so the media server sees the var as absent.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>