`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>
* feat: support srtpEncryption on dial verb for sip URI targets
Reads the new dial.srtpEncryption option and, for sip: URI targets,
forwards it to sbc-outbound as an X-Jambonz-SRTP header so the outbound
leg negotiates encrypted media (SRTP) — e.g. to a sips:/TLS endpoint
such as LiveKit. No behavior change when the option is unset.
Requires @jambonz/verb-specifications with the srtpEncryption spec
(dependency bump to follow once published) and sbc-outbound honoring
the X-Jambonz-SRTP header.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* update verb specification
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor recording
removed the test of `(this.cs.accountInfo.account.record_all_calls || this.cs.application.record_all_calls` from backround-task-manager.jsL138 as this check is already done in call-session.js at Line 3007, also allows us to start the record from update or config verbs
* handle start recording for a call that is not yet answered
* return false if not changing recording state
* different check for status
* set hasRecording flag on callInfo when starting
* update redis on recording start
* lint
* update dependency
Update sentenceEndRegex to treat the following as sentence boundaries: ASCII .!? followed by whitespace or end-of-text; Arabic question mark (؟) and full stop (۔) with the same rule; Japanese 。, !, ? treated as boundaries regardless of following character; and double newlines (\n\n). This improves streaming chunking for mixed-language content.
* compare sdp for transcoding
* refactor sdp check for leading codec
* fix reference to epOther
* minor changes
* minor
* fix#1447
* fix security issue
* use convenience getter appIsUsingWebsockets in CallSession
---------
Co-authored-by: Dave Horton <daveh@beachdognet.com>
* fix say verb does not close streaming when finish say
* wip
* wip
* ttsStreamingBuffer reset eventHandlerCount after remove listeners
* only send tokens to module if connected
* wip
* sent stream_open when successfully connected to vendor
* for deepgram flux include the turn taking events in the transcription payload
* for deepgram flux, including turn_taking_event in the speech payload
* fix prev commit which used wrong field
* fixed transcription is not received when call is terminated
* wip
* fixed failing testcases
* wip
* wip
* wip
* wip
* should not do gracefulshutdown on stopAmd