Skip to main content

Delphi v0.9.13-patch3

KI Kombinat GmbH

Delphi v0.9.13-patch3 moves TelAPI server protection into Admin Settings → API Server Config with IP-based tiers, adds a Send test email control under Platform Settings, hardens modular voice pipelines (STT-first link format and deferred Azure STT recovery), refreshes the TelAPI OpenAPI snapshot (clearer error models), wires password-expiry policy env vars to Tasker, and fixes Kamailio rewriting for legacy egress Refer-To URIs.

Platform0.9.13Recorded SDK recommendation0.1.3Recorded SDK range>=0.1.2 <0.2.0

Highlights​

  • Replaced TelAPI RATE_LIMIT_* environment variables and the Per API Key toggle with tiered IP-based limits stored in ApiServerConfig and reloaded through Redis.
  • Added API rate-limit fields in Admin Settings → API Server Config, with clearer 429 responses (RATE_LIMIT_EXCEEDED plus optional details).
  • Added Send test email on Admin Settings → Platform Settings — queues an EMAIL_SEND Tasker job to verify SMTP/SES delivery before go-live.
  • Hardened modular voice pipelines: Asterisk ↔ TelPhi link format now prefers the STT listen-side sample rate; TTS output aligns to STT when the provider supports it; Azure STT resets are deferred with jitter instead of reconnecting after every playback.
  • Refreshed stored TelAPI OpenAPI contracts and WebRTC-aware component registration.
  • Plumbed PASSWORD_MAX_AGE_DAYS, PASSWORD_WARNING_DAYS, and NEXTAUTH_URL to Tasker so password-expiry reminder emails use the same policy as TelWeb.
  • Fixed Kamailio legacy egress Refer-To rewriting when TelPhi stamps x-delphi-egress-route on loopback URIs whose host fell back to the EC2 instance name instead of DOMAIN_TELPRO / REFER_TARGET_HOST.

TelAPI rate limiting​

Server protection is now configured entirely from Admin Settings → API Server Config (see API server config):

TierRoutesDefault (when enabled)Configurable in TelWeb
Health/health, /metricsExempt—
APIAuthenticated REST (/api/v1/sessions/*, /api/v1/runtime/*, /api/v1/endpoints, …)600 requests / minute / client IPAPI Rate Limit Max + Window (ms)
Auth/api/v1/auth/*20 requests / minute / client IPFixed preset (UI fields coming later)

TelAPI loads limits from Postgres, caches them in Redis, and bumps revision key voiceai:api-server-config:rev whenever a SUPERUSER saves the config. No TelAPI restart is required for limit changes to take effect.

Remove deprecated TelAPI env vars

RATE_LIMIT_MAX and RATE_LIMIT_WINDOW_MS are no longer read by TelAPI. Delete them from API service vars.yaml / SSM after upgrade. Limits belong in API Server Config only.

Team daily API quotas (per-team request caps in Users and teams → API Access Configuration) are unchanged — they are a separate layer from this server-protection throttle.

When a tier limit is exceeded, TelAPI returns HTTP 429 with:

{
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "Too many requests",
"details": {"max": 600, "after": "1 minute", "ttlMs": 42000},
"requestId": "…"
}
}

TelAPI OpenAPI​

The public interactive reference at /api/reference includes the WebRTC/API snapshot:

  • WebRTC enabled — /openapi/telapi-webrtc.html

Platform settings — test email​

SUPERUSERs can queue a one-off EMAIL_SEND job from Admin Settings → Platform Settings → Send test email. Use it after configuring Tasker mail transport (EMAIL_TRANSPORT, SMTP or SES env vars) and before enabling password-expiry or notification templates.

  1. Enter recipient, optional subject/body → Send test email.
  2. Open Job History, filter EMAIL_SEND, confirm COMPLETED.
  3. For SES sandbox accounts, verify both sender and recipient identities in the AWS console.

See Platform settings and Tasker (Ops).

Modular voice audio​

For flows using separate STT and TTS providers (not unified realtime), TelPhi now:

  • Picks the Asterisk websocket link format from the STT input sample rate when audio.linkFormat is auto (e.g. slin16 for 16 kHz Azure STT).
  • Downgrades TTS output to the STT sample rate when the TTS vendor natively supports it, avoiding per-chunk resampling on playback.
  • Schedules deferred Azure STT recognizer resets after TTS playback (with grace window and jitter) instead of forcing a full reconnect on every turn — reducing load while still recovering stuck VAD.

Unified realtime providers (OpenAI Realtime, etc.) are unchanged. Operators can still pin audio.linkFormat in flow source view.

Password expiry and Tasker​

The daily PASSWORD_EXPIRY_CHECK cron job (Tasker) now reads the same policy env vars as TelWeb:

  • PASSWORD_MAX_AGE_DAYS (default 90) — must match on TelWeb and Tasker.
  • PASSWORD_WARNING_DAYS (default 10) — reminder window before expiry.
  • NEXTAUTH_URL on Tasker — base URL embedded in password-expiry email links (must point at the public TelWeb hostname).

Telephony​

REFER_TARGET_HOST (TelPro) sets Kamailio REFER_SBC_HOST for loopback Refer-To detection. It defaults to DOMAIN_TELPRO in the TelPro entrypoint. Set it explicitly when carrier REFER targets must align with your public SIP hostname rather than the EC2 internal hostname.

Kamailio now rewrites legacy PSTN-offload Refer-To URIs that carry x-delphi-egress-route even when the Refer-To host is the instance HOSTNAME (ip-10-…), preventing transfers from stalling when the URI is still a telpro loopback target.

Operators​

Database migration​

Run voiceai-db-migrate before restarting application services:

  • Drops rateLimitPerApiKey from ApiServerConfig.
  • Raises the default rateLimitMax baseline to 600.

Baseline seeding creates the default API Server Config row when missing. Existing deployments keep their saved limits except for the removed per-key flag.

Upgrade checklist​

  1. Run voiceai-db-migrate on the Ops host before rolling to v0.9.13-patch3.
  2. Remove RATE_LIMIT_MAX and RATE_LIMIT_WINDOW_MS from the API service env bundle.
  3. Review Admin Settings → API Server Config — confirm the API tier suits your traffic profile (default: 600/min API per client IP).
  4. Set PASSWORD_MAX_AGE_DAYS, PASSWORD_WARNING_DAYS, and NEXTAUTH_URL on Tasker to match TelWeb.
  5. Set REFER_TARGET_HOST on TelPro when DOMAIN_TELPRO alone does not match the hostname carriers use in REFER targets.
  6. Send a test email from Platform Settings and confirm the EMAIL_SEND job completes in Job History.
  7. Redeploy TelAPI, TelWeb, TelPro, Tasker, and TelPhi (Voice).
  8. Spot-check the stored generic API reference for the updated snapshot.

SDK compatibility​

ComponentVersion
Platformv0.9.13-patch3
Recommended TelPhi SDKv0.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.