0.9.5-2
Major release
New Features
- Redesigned and simplifed the Carrier page in the portal, adding support for additional carrier authentication features.
- Add support for STT Latency metrics
- Add support for Deepgram Flux STT.
- Add support for Gladia STT.
- Add support for Soundhound STT.
- Add support for AssemblyAI v3 STT.
- Add support for Deepgram EU hosted endpoint.
- Add support for additinonal ElevenLabs hosted endpoints.
- Add support for Cartesia Sonic-3 streaming TTS model.
- Add support for Resemble TTS.
- Add additional languages and phrases to voicemail greeting file.
- Config verb can now be used to disable tts caching for the entire call.
- New
distributeDtmfproperty added to conference verb to enable DTMF distribution to all conference members. - Add support for tel scheme in referTo property of dial verb.
- Add new Alert verb
- Added CLI commands for managing feature server drainage, allowing administrators to manually take feature servers out of the rotation gracefully. Commands include fs active, fs drain, fs drained, fs undrain, and fs list.
Bug fixes
- A significant number of stability and performance improvements have been made in this release to improve overall system reliability.
- PR 1421 Fixed a timing issue in the gather verb where the timeout timer would not properly start after a bargein event occurred. This could cause calls to hang indefinitely waiting for user input instead of timing out as expected. The fix also removed an unnecessary “playDone” event emission that was no longer being used.
- PR 1415 Fixed an issue where whitespace-only tokens were being sent to the media server during TTS streaming. When whitespace was trimmed, incomplete commands lacking the required parameters would result in errors. The fix validates tokens before transmission and holds whitespace-only content for the next processing cycle.
- PR 1391 Fixed an issue where customerData was being lost when calls were transferred between feature servers. The fix ensures that customer context and metadata are preserved throughout the transfer process, allowing important customer information to remain intact during call routing.
- PR 1395 Resolved an issue where query string parameters were being inappropriately URL-encoded when they appeared as part of a filename in HTTP requests for audio file retrieval. This was causing URLs to become malformed and preventing audio files from being retrieved correctly.
- PR 1393 Fixed a race condition where the system would fail to send the final status callback or close the WebSocket application connection when a caller canceled during app JSON fetching. The fix ensures that CallSession properly cleans up resources when a call is canceled during the app-fetching phase.
- PR 1386 Fixed a timing issue where the continuous ASR (automatic speech recognition) timer was being initiated immediately upon starting to listen during background gather operations. The fix prevents the timer from starting prematurely in background gather scenarios, avoiding unintended behavior.
- PR 1383 Resolved a bug where transferring outbound conference participants between feature servers would fail. The system was checking the original call direction from Redis to determine whether to answer transfer requests, which caused failures for outbound calls. The fix ensures that transferred calls are always answered regardless of their original call direction.
- PR 1369 Improved error handling for TTS synthesis failures by ensuring that errors occurring during the initial TTS request are properly propagated as “SpeechCredentialError” events. Previously, TTS errors would fail silently without proper logging or call handling. The fix enables proper error reporting and allows applications to handle TTS failures appropriately.
- PR 1372 Added an event handler to properly respond when the Deepgram speech recognition service terminates its connection unexpectedly with an error condition. This ensures the system can gracefully handle remote closure events from Deepgram.
- PR 1366 Fixed an issue where the synthesized-audio verb was not properly sending status events when using text-to-speech streaming functionality. The fix ensures that status events are correctly generated and transmitted when TTS streaming is enabled, allowing clients to properly track the completion or status of audio synthesis operations.
- PR 1351 Fixed a timeout handling issue in the gather verb where the main timeout and ASR timeout were not being properly cleared when an interdigit timeout was triggered or when DTMF input took priority. This prevents conflicting timer behaviors during gather operations.
- PR 1359 Added exception handling around req.cancel() calls to prevent unhandled errors during request cancellation. This was particularly important for REST-based outdial operations where timing issues could cause exceptions to be thrown without proper catching, potentially causing crashes.
- PR 1358 Updated the speech_util dependency to version 0.2.23, bringing improvements to the speech processing pipeline.
- PR 1357 Fixed a bug where the singleDialer component was not properly initializing ConfirmCallSession with the necessary temporary file references. This was preventing proper cleanup and file management later in the call lifecycle, potentially causing issues with confirmation hook processing.
- PR 1356 Resolved an issue where ConfirmCallSession within placeCall lacked access to the tmpFiles variable, preventing proper cleanup of temporary files after operations completed. This fix prevents temporary file accumulation and resource leaks in the call session confirmation workflow.
- PR 1354 Corrected a misleading error log message that displayed “invalid command since id is missing” when a request actually lacked the tokens field. The log message now accurately reflects when the tokens field is missing, improving debugging clarity for developers.
- PR 1353 Added exception handling to prevent crashes when a SIP REFER message is received after a dial task has already concluded. This fix allows the system to gracefully manage this timing-related edge case rather than terminating unexpectedly.
- PR 1352 Fixed a security issue where the TTS streaming functionality was inadvertently exposing sensitive speech service credentials in logs or output. The fix ensures that authentication information remains protected and isn’t accidentally exposed through logs or debug output.
- PR 1349 Fixed an issue where Least Cost Routing (LCR) was being ignored in certain scenarios. The change prevents the dial and createCall functions from attempting to automatically select a carrier trunk when LCR is configured but no specific trunk is specified. This fix only affects accounts with active LCR configurations.
- PR 1344 Fixed an issue where the punctuation setting in the gather recognizer object was not functioning correctly when using Microsoft as the speech recognition vendor. When developers set “punctuation: false” in the recognizer configuration, the system was not removing punctuation marks from the recognized speech output as expected.
- PR 1331 Resolved a race condition in playback handling where the say task could receive stop events from previous cached file playbacks, causing improper playback state management. The fix shifts responsibility for generating playback IDs to the feature server and tracks the current playback ID to ensure only events corresponding to the current playback operation are processed.
- PR 1312 Fixed an issue where the timeout timer wasn’t being initiated when users bargeIn to a speech prompt by pressing DTMF digits. The fix ensures the timer starts automatically when DTMF input occurs during playback, while preserving existing behavior for normal scenarios where the timer starts at the end of say/play operations.
- PR 1320 Extended notification functionality for text-to-speech audio handling to send synthesized-audio notifications regardless of whether content originates from cache or vendor generation. Previously, the system only sent notifications when audio was freshly generated. The fix also returns an identifier that allows correlation between “say” verbs and their corresponding synthesized-audio events, enabling better traceability.
- PR 1315 Fixed a bug where the task.kill parameter was not being properly passed to the call state component, ensuring proper task termination handling.
- PR 1308 Enabled passing through options from the recogniser object in an AMD (Automated Message Detection) verb to the speech-to-text service. This allows users to leverage service-specific features such as custom models (e.g., custom Deepgram models) without modifying the core implementation.
- PR 1301 Fixed an issue where temporary audio files in a ConfirmCallSession were not being cleaned up when calls ended, causing resource leaks. The fix ensures that ConfirmCallSession uses the tmpFiles set of the parent CallSession to store references to created files, allowing the parent CallSession’s cleanup function to properly remove temporary files when the call terminates.
- PR 1300 Enabled the ability to pause and resume background listening functionality using silence or blank audio, enhancing the system’s ability to handle audio input states more flexibly during background processing operations.
- PR 1293 Fixed an issue with audio file caching where URLs containing query string parameters with periods (valid characters) were incorrectly parsed. The fix URL-encodes periods within query string parameters to %2E, allowing the system to correctly identify the file extension and enabling proper caching and playback of media files.
- PR 1290 Fixed failures when using Whisper with Play functionality by allowing a whisper to accept a single object verb (specifically “play”) without triggering unnecessary fetching operations. The fix also disables URL-based verb fetching during whisper operations to prevent failures.
- PR 1278 Implemented control mechanisms for forwarding the P-Asserted-Identity (PAI) header, enabling more granular control over how PAI information is propagated through the system.
- PR 1283 Fixed an issue where the stopTranscription method was incorrectly delaying transcription stops during gather verb operations when the JAMBONES_TRANSCRIBE_EP_DESTROY_DELAY_MS environment variable was enabled. The delayed shutdown prevented proper input capture in subsequent gather operations when transitioning between recognizers. The fix adds a gracefulShutdown: false parameter to stop transcription immediately without applying the configured delay.
- PR 1276 Fixed an issue where the gather task’s nested sayTask would not emit a playDone event when operating in streaming mode, preventing the transcribe task from starting and blocking the timeout timer. This fix ensures proper event emission during streaming playback, allowing the gather operation to proceed normally through its lifecycle stages and enabling timeout mechanisms to function when listenDuringPrompt is enabled.
- PR 1286 Fixed TTS cache issues including error handling gaps when TTS fails (where playback-start event doesn’t occur but playback-stop still fires), and concurrency race conditions with playback IDs. The fix implements atomic operations for ID generation and properly handles scenarios where playback-start lacks an ID.
- PR 1282 Fixed issues with LCC (Low Cost Calling) dial functionality when relative URLs are provided as action hooks. The PR also updated speech-utils to version 0.2.15 with configurable tmp folder location.
- PR 1279 Fixed a race condition related to cached audio playback where playback stop events from previous audio commands could incorrectly interfere with current playback operations. The solution validates that the playback ID in the “playback-stopped” event matches the ID from the corresponding “playback-start” event. Also improved TTS caching to respect the disableTtsCache setting.
- PR 1259 Fixed an issue where transcriptions were not being received when calls were terminated. The feature server was sending stopTranscription commands too quickly and destroying endpoints prematurely before transcription could be processed. The fix implements graceful shutdown for endpoints when JAMBONES_TRANSCRIBE_EP_DESTROY_DELAY_MS is enabled, delaying stopTranscription and endpoint destruction until transcription is received or timeout occurs. Excludes ASR fallback operations, paused transcription states, and AMD stop operations from the delay.
- PR 1271 Fixed an issue where the system would attempt to process missing or undefined data when a referHook function in a dial operation fails to return any payload. The fix now skips subsequent operations when no response is received, preventing errors from trying to work with empty or null values.
- PR 1269 Fixed TTS response code handling to ensure that a response code of 0 triggers task failure. The fix addresses compatibility with different TTS vendors (like Azure and Deepgram) that return different error codes, and improves error alerting when TTS errors occur by sending appropriate jambonz:error messages to webhooks rather than dropping calls.
- PR 1264 Fixed REFER (call transfer) handling in the dial functionality to ensure proper cleanup and termination of the dial task in the parent session when a REFER request is received on a parent call leg after the child call has been transferred. The fix includes a reversion of a problematic prior change to dial.js.
- PR 492 Fixed API authorization for account-level API keys to access SIP gateways and VoIP carriers. Previously, account-level API keys were unable to read or create these resources through the API endpoints. The fix grants proper permissions and automatically populates the service provider SID when accounts create carriers.
- PR 494 Fixed excessive CPU utilization during call recording caused by inefficient buffer handling in S3 multipart uploads. The previous implementation used Buffer.concat on every chunk, creating O(n²) complexity. The fix optimizes memory operations by accumulating chunks in an array and performing a single concatenation per 5 MB part, reducing complexity to O(n) and stabilizing request latency under concurrent load.
- PR 500 Fixed an issue where the system was unable to retrieve the list of available voices for Deepgram models.
- PR 505 Added the ability to completely disable rate limiting by setting the DISABLE_RATE_LIMITS environment variable to ‘true’ or ‘1’. This optimization is useful for deployments that handle rate limiting at a higher infrastructure level, eliminating unnecessary processing overhead from API-level rate limit calculations.
- PR 208 Increased DTMF signal volume levels in the session border controller to improve DTMF tone detection and reliability.
- PR 183 Fixed SIP reinvite handling to properly remove video SDP (Session Description Protocol) information during call renegotiation. This ensures that video codec and capability data is correctly filtered when calls are reinvited.
- PR 189 Fixed the isPrivateVoipNetwork function to correctly identify private network addresses in SIP URIs regardless of whether a trailing semicolon is present. Previously, URIs without a semicolon would incorrectly return false even when representing valid private network addresses.
- PR 113 Fixed an issue where the system was redirecting client calls to other SBCs using public IP addresses instead of private ones. The fix stores the private SIP address in Redis during client registration, enabling subsequent operations to route calls through private network paths.
- PR 110 Enhanced the database status API response to include expires value and timestamp fields for carrier information. The changes provide additional metadata about credential expiration and when status was recorded, along with improved logging for better visibility into the registration flow.
SQL changes
Availability
- Available now on jambonz.cloud
- Available now with devops scripts for support subscription customers
Questions? Contact us at support@jambonz.org