Delphi v0.9.13-patch1
Delphi v0.9.13-patch1 extends the voice provider catalogue, improves first-use egress setup and transfer routing fallbacks, fixes TOBi DTMF forwarding on extension-routed calls, and hardens Kamailio when Redis TLS is enabled.
v0.9.13Recommended SDKv0.1.3Supported SDK range>=0.1.2 <0.2.0Highlights
- Added Gemini Live, Inworld STT/TTS, and Grok Realtime to the modular provider catalogue and Flow Builder editor.
- Added platform-managed team defaults (OpenAI/Azure secrets, WebRTC keys) and a first-use egress setup step so new deployments get outbound routing without manual wiring.
- Improved transfer routing when flows omit an explicit egress pool — resolves team/base-number routes and a configurable platform fallback route.
- Fixed TOBi managed-LLM calls so DTMF on extension-routed channels reaches the LLM as
channelOrigin=dtmf. - Rebuilt TelPro/Kamailio with SSL-capable
ndb_redisso Redis TLS deployments connect reliably and honor the Redis CA bundle.
AI providers
The modular audio pipeline and Flow Builder provider editor now support three additional vendor integrations:
| Provider | Mode | Notes |
|---|---|---|
| Gemini Live | Realtime | Bidirectional audio with tool calls and browser actions. References team variable geminiDefaultKey. |
| Grok Realtime | Realtime | xAI realtime voice built on the shared OpenAI-realtime transport. References xaiDefaultKey. |
| Inworld STT | Pipeline STT | Streaming speech-to-text with configurable end-of-turn detection. References inworldDefaultKey. |
| Inworld TTS | Pipeline TTS | PCM output with selectable voices and delivery mode. References inworldDefaultKey. |
Provider configs that reference team variables now trigger flow resync when those variables change, so published apps pick up updated credentials without a manual republish.
OpenAI Realtime internals were refactored into a shared base used by Grok Realtime, reducing duplication across realtime providers.
Team defaults and egress
New teams (and teams provisioned through signup) now receive platform-managed defaults automatically:
- Superuser-managed team secret variables for
openaiDefaultKeyandazureDefaultKey, copied from platform secrets when present. - A system-managed WebRTC API key when WebRTC is enabled — these keys no longer count toward customer API-key limits.
Team admins no longer see superuser-managed variables in the team variable list; SUPERUSERs still see the full set.
Transfer routing resolves egress more consistently when a flow does not set an explicit routingPool:
- Use the explicit pool or route ID from the flow or managed callback when provided.
- Fall back to an enabled egress route linked to the app base number or called number.
- Fall back to the platform default global egress route ID configured under Admin Settings → Platform settings → Egress defaults.
The first-use delphi-setup wizard adds an egress step that creates a default outbound trunk and route for the initial team/base number and syncs them to Redis/Kamailio.
Existing deployments can run the idempotent backfill script backfill-team-defaults-and-egress (from the API package) to stamp team defaults and ensure a global fallback route exists. Set DEFAULT_EGRESS_ROUTE_ID, DEFAULT_EGRESS_TRUNK_ID, and related env vars as needed before running it against the target database.
Telephony fix
TOBi DTMF forwarding — On calls routed through SIP extensions, keypad digits were not consistently forwarded to the managed TOBi LLM. The patch introduces a dedicated TOBi-only DTMF buffer with single-layer SIP deduplication so digits flush to processText(channelOrigin=dtmf) after a short inter-digit timeout or when the buffer fills.
Modular and realtime flows that collect keypad input through sandbox collectDtmf() or Flow Builder dtmf_collect nodes are unchanged.
Operators
Database migration
Run the standard voiceai-db-migrate one-shot before restarting application services:
- Adds
TeamApiKey.systemManagedand marks existing System WebRTC Call Token Key rows as system-managed so they are excluded from customer API-key counts.
Then run ./delphi-setup.sh --apply-missing if the environment has not yet completed the new first-use egress step.
Kamailio / Redis TLS
The TelPro image now builds ndb_redis against libhiredis_ssl, which Kamailio requires for the tls=1 Redis server parameter.
When REDIS_TLS_ENABLED=true:
- Kamailio keeps the Redis hostname (instead of resolving to IP) so TLS certificate SAN validation succeeds.
- The Redis CA PEM at
REDIS_TLS_CA_FILEis injected intokamailio.cfgforndb_redis. - An upstream Kamailio/hiredis quirk is patched so the CA file path is passed correctly to OpenSSL.
Rebuild and redeploy TelPro after upgrade. Deployments using plaintext Redis are unaffected.
Release workflow
The release retag workflow supports manual dispatch for patch retags.
Upgrade checklist
- Run
voiceai-db-migrateon the Ops host before rolling application containers tov0.9.13-patch1. - Run
./delphi-setup.sh --apply-missingto pick up the first-use egress setup step on fresh or incomplete installs. - Review Admin Settings → Egress defaults and set a default global egress route ID if transfers should fall back when flows omit a pool.
- For existing environments, consider the
backfill-team-defaults-and-egressscript to stamp platform-managed team secrets and the global fallback route. - Add team variables
geminiDefaultKey,inworldDefaultKey, andxaiDefaultKeybefore enabling the new providers in flows. - Redeploy TelPro — required for Kamailio Redis TLS fixes.
- Redeploy TelPhi, TelWeb, and TelAPI for provider, egress, DTMF, and flow-sync changes.
- After egress trunk or route changes, verify Redis egress state as documented in Egress routing.
SDK compatibility
| Component | Version |
|---|---|
| Platform | v0.9.13-patch1 |
| Recommended TelPhi SDK | v0.1.3 |
| Supported SDK range | >=0.1.2 <0.2.0 |
See the SDK section for installation and the per-version compatibility matrix. Patch releases do not change the TelPhi SDK contract; stay on the v0.9.13 SDK compatibility range.