Delphi v0.9.18
Delphi v0.9.18 splits Browser SDK and browser voice into independent capabilities that each default to off. It adds a team system-audio library, bot no-input handling, per-trunk SIP maintenance mode and structured transaction logging. The upgrade requires operator actions, so read the upgrade notes before you start.
0.9.18Recorded SDK recommendation0.1.5Recorded SDK range>=0.1.3 <0.2.0Highlights
- Browser SDK and browser voice (WebRTC) are separate deployment capabilities. Each defaults to off and accepts only the literal values
trueorfalse. - Teams have a system-audio library for WAV files and text-to-speech announcements, with storage allowances per subscription plan and private storage per team.
- Flow Settings has a bot no-input give-up that can end or transfer the call.
- A Super Admin can put one inbound SIP trunk into maintenance mode. New calls on that trunk receive a configurable SIP response, while established calls continue.
- TelAPI, TelPhi and Tasker write one transaction record per integration leg, with optional payload logging and security tags for SIEM export.
- Base images use digest-pinned upstream releases, and the media stack runs current Kamailio, Asterisk and Janus versions.
Voice and calls
- The bot no-input give-up ends or transfers a call when the bot does not answer a request in time. Calls that give up end with
bot_no_input_give_up. See Give up when the bot stays silent. - The gateway monitors incoming audio on the caller leg. It plays a warning and ends the call with
no_mediaormedia_connection_brokenwhen audio does not recover. Applications can set their own warning text. See Customize the media connection warning. - Azure STT accepts
sttSpeechContextsphrase lists as a provider default. See Speech context phrases. - With Use SSML on, Azure TTS passes SSML in the text through, and Custom SSML wraps the text at
{{TEXT}}. Azure TTS adds no speaking style, role or accent unless the provider configuration sets them. - Azure speech recognition no longer amplifies buffered audio a second time when it is queued for the next turn.
Flow Builder and conversations
- The flow assistant is generally available. It requires
FEATURE_AI_FLOW_BUILDERand permission to edit the flow. See Flow assistant availability. - An empty Max call duration (seconds) always inherits the deployment default. Values outside 10–7200 show "Must be between 10 and 7200 seconds." See Limit call duration.
- Transfer instead of hangup in Flow Settings › Call duration transfers a silent-bot call by SIP REFER. A failed transfer ends the call.
- The editor fits a loaded graph to the view without overwriting saved node positions.
- The conversation QA tab shows the stored reason when scoring fails.
AI providers and models
- Retry and fallback editors appear only when resilience controls are enabled for the deployment. Saved resilience policies keep running when the editors are hidden. See Resilience controls.
- An unselected speech trigger runs no step of the fallback ladder. Typed STT and TTS setup failures use
stt_errorortts_error; other setup failures usesystem_error. - The OpenAI model suggestions include GPT-5.6 Sol, Terra and Luna. Saved model selections are unchanged.
- OpenAI GPT-Live is available as an opt-in pilot. It runs only on Voice servers where the operator sets
GPT_LIVE_PILOT_ENABLED. The conversation detail shows one usage line per Live session. See GPT-Live (Pilot). - With Azure TTS, the key and region travel as a pair.
API and SDK
- The API builds its OpenAPI description from the enabled capabilities. See API description by capability profile.
- The
runtime.migrationenum includesvoice_to_text. Update clients that validate this field against a fixed list. - The SDK contract is unchanged. The recommended SDK remains 0.1.5.
Platform and onboarding
- The Portal has versioned feature profiles per release, with preview, saved revisions and explicit activation. See Release profiles in the Portal.
- Adding a member in the Portal sends a setup email with a link valid for 24 hours.
- An expired automatic account lock is cleared at the next sign-in.
- A Super Admin whose local credential is unusable can reset it with an audited
./delphi-setup.shaction. See Provision users and memberships. - Access Logs show the affected account in User for role and user changes. The administrator appears under Changed by.
- The system-audio library stores and previews files; it does not play them during calls. See Manage system audio.
- Contextual help links in the Web UI point to stable documentation pages.
Observability and diagnostics
- TelPhi emits a
telphi.heartbeatspan on every server heartbeat, by default every 10 seconds, even with no active call. TheTelphiNoTracesalert relies on that span. See TelPhi heartbeat and the no-traces alert. - Audit records written by the web application are also sent to SigNoz after the database change commits. A rolled-back change sends no record.
- Transaction records carry
logpoint,category, status, duration and correlation identifiers.LOG_INTEGRATION_PAYLOADSadds payloads and headers; error responses always carry them. See Transaction records. - Rejected calls and security-relevant audit records carry
security_eventandsecurity_category. A call from an unknown address is logged as a warning instead of an error. - The call Logs view also matches attribute values, up to 20,000 characters per record. See Search the logs of a call.
- A rejected or failed
hanguportransferruntime command is reported in the logs. - Recording retrieval honors the server's proxy settings and logs the failing step. The Web UI retries a failed recording lookup once. See Recording playback lookup.
- Speech-recognition audio pushes are logged as summaries, which reduces TelPhi logging load.
Infrastructure and operations
- Base images are pinned by digest: Node.js, Debian trixie, Go, Alpine and Python. The media stack runs Kamailio 6.1.4, Asterisk 22.11.0 and Janus 1.4.1.
- Native runtime libraries in the media images include current upstream security fixes.
- The TelSys image raises its ARI limits:
ARIHTTPSESSIONLIMITis 1000 andARIWEBSOCKETWRITETIMEOUTis 1000 ms. See Voice runtime limits under load. - Optional
AZURE_STT_AUDIO_FLUSH_MSsets the speech-recognition audio batch from 20 to 200 ms. Larger values save CPU and add latency. - Configuration fetch retries are adjustable on every role with
FETCH_CONFIG_ATTEMPTSandFETCH_CONFIG_RETRY_DELAY. - System audio supports a private filesystem backend or one private S3 bucket per team plus a platform bucket. See Deploy and verify system audio.
- For the complete list of new and removed variables, see Changes in 0.9.18.
Fixes
- New calls are no longer declined with SIP 603 after the ARI WebSocket drops under load.
- Calls are no longer rejected with SIP 503 because of a stale TelPro heartbeat.
- The first DTMF digit of an extension is no longer lost.
- A GPT-Live farewell that produces no audio no longer holds the hangup.
- Password-expiry reminders are no longer sent twice after a worker restart or retry.
- QA scoring retries only transient failures and stores the reason for failures that a retry cannot fix.
- Sandbox HTTP tools and OAuth requests use the configured egress proxy.
- An empty turn transcript is omitted instead of written as an empty file.
Recording settings
- Accept incoming calls controls app availability separately from Recording artefacts. An empty recording selection disables recording. See Choose recording outputs.
- Inbound call, rejection and resolver logs retain their call correlation.
Upgrade notes
FEATURE_API_ACCESS was on by default in 0.9.17. Its replacement, FEATURE_BROWSER_SDK, defaults to off. Set FEATURE_BROWSER_SDK explicitly, or the SDK routes, API keys and /ws/session disappear. Browser voice also needs FEATURE_WEBRTC=true, which requires FEATURE_BROWSER_SDK=true.
Remove FEATURE_API_ACCESS. It has no alias and enables nothing. Set the Browser SDK and browser voice flags to the literal true or false; the API and Web UI refuse to start with any other value. See Upgrade from 0.9.17.
Run the database migrations with the Ops db-migrate service before you roll out the services. The live_session_usage migration must run before the new API, Web UI and Voice services start. The platform migrations add tables and columns and keep existing records.
If your teams use the system-audio library, configure its storage first. Without it, uploads fail with "System audio storage is not configured". See Choose a storage backend.
Upgrade the complete 0.9.18 release set. No mixed set with 0.9.17 components is supported. See Upgrade to 0.9.18.
- Resilience editors are hidden unless you select Resilience controls in the Portal feature profile. Saved resilience policies keep running either way.
- Update the
TelphiNoTracesrule with./apply-alert-rules.shon the SigNoz host. The rule now relies on the heartbeat span, so silence means TelPhi or its telemetry path is down. See Apply or update the alert rules. - Flows saved before 0.9.18 can hold an explicit
5400second call duration. Clear it and publish again if the flow should inherit the deployment default.
Known issues
- System-audio files are stored and previewed only; the library does not play them during calls.
- The load fixes in this release do not raise the published capacity figures.
Compatibility
The recommended SDK is 0.1.5, with supported range >=0.1.3 <0.2.0. The platform declares these upstream versions for 0.9.18. For digests, declaration locations and overrides, see Declared upstream versions.
| Component | Declared version |
|---|---|
| Kamailio | 6.1.4 (source build) |
| RTPEngine | 26.0 channel |
| Asterisk | 22.11.0 |
| Janus | 1.4.1 |
| Node.js (application images) | 24.21.0 on Alpine 3.24 |
| Go (build stage) | 1.27.1 |
| Debian (media images) | trixie |
| Alpine (media server) | 3.24.2 |
| Python (CPU AudioProc) | 3.11 |
| PostgreSQL | 17 |
| Redis | 7 |
| PgBouncer | 1.25.1 |
| coturn | 4.6.2 |
| OpenTelemetry Collector | 0.159.0 |
| SigNoz | 0.139.0 |
| ClickHouse | 25.5.6 |
| Keycloak (Portal identity) | 26.7.4 |
| Host operating system | Ubuntu 22.04 |
Upgrade checklist
- Save an explicit Browser SDK and browser voice selections in the Portal profile for 0.9.18. Use Remove obsolete selection for retired IDs.
- Remove
FEATURE_API_ACCESSfrom every service configuration. - Configure system-audio storage if your teams use the library.
- Run the database migrations, including
live_session_usage, before the API, Web UI and Voice services start. - Deploy the complete 0.9.18 release set.
- Update the SigNoz alert rules.
- Verify session routes, browser text and voice and a phone call as your profile requires. See Apply and accept the selected set.