Origination & termination
| Feature | Yes / How |
|---|---|
| Outbound PSTN dialing | Yes. Originate RPC. E.164 destinations or full SIP URIs. |
| Inbound PSTN handling | Yes. Configure per-trunk via SetInboundRouting (REJECT / PLAY-AND-HANGUP / NOTIFY-AND-HANGUP / HANDLE-AI). |
| Bulk / predictive dialing | Yes. OriginateBulk reads CSV, paces at user-set CPS, caps concurrent channels. AbortBulk cancels mid-flight. |
| Click-to-call | Yes. Originate with default_app=ANSWER and the agent’s softphone as the call_from. |
| Multi-trunk LCR | Yes via AddTrunk per carrier; the gateway picks the cheapest healthy trunk per destination prefix. |
| Failover / circuit breaker | Yes. Per-trunk circuit breaker trips on consecutive 5xx; surfaces in ApiTrunkConfig.is_cb_tripped. |
| Number portability lookups | On request — depends on carrier integration. |
Call control
| Feature | Yes / How |
|---|---|
| Hangup (any leg) | Terminate RPC. |
| Park | ExecuteDialplan(action=PARK). |
| Music on hold | ExecuteDialplan(action=MUSIC_ON_HOLD, app_args=<url>). |
| Playback prompt | ExecuteDialplan(action=PLAYBACK, app_args=<url>). |
| Unpark | ExecuteDialplan(action=UNPARK_AND_BRIDGE) reattaches a parked call to its bridge partner. |
| Hold / resume | CHANNEL_HOLD / CHANNEL_RESUME events. From the SDK, use ExecuteDialplan(MUSIC_ON_HOLD) then ExecuteDialplan(UNPARK_AND_BRIDGE). |
| Call screening | Inbound rule = NOTIFY_AND_HANGUP fires a webhook before answering, letting your app decide. |
| Barge (AI barge-in) | Barge RPC. The platform’s headline AI-network unblocker — when the AI is talking, the gateway watches the inbound leg for the human’s voice (energy / VAD / semantic, configurable per trunk via auto_bargein_mode). When the human starts talking the AI’s outbound audio is gated within barge_in_patience_ms (default 250 ms) so the human is heard immediately. Without it AI voicebots feel deaf. Trunk knobs: auto_bargein_mode, auto_bargein_aggressiveness. Per-call knobs on OriginateRequest: auto_barge_in, barge_in_patience_ms. |
| Stuck-call cleanup (bucket actions) | GetActiveBuckets / GetBucketCalls / ExecuteBucketAction enumerate calls stuck in a bucket (parked, abandoned, orphaned) and bulk-act on them — typically 0=hangup to clear stuck calls during ops incidents. Not a transfer or conferencing primitive. |
| Transfer (blind / attended) | Not supported. Out of scope on this platform. |
| Conference (3+ parties) | Not supported. Out of scope on this platform. |
| Whisper / coach | Not supported. Out of scope on this platform. |
Audio handling
| Feature | Yes / How |
|---|---|
| Codec support | PCMU, PCMA (G.711); PCM16; Opus; G.722. Per-trunk preference list. |
| Transcoding | Automatic on egress (e.g. linear16 from AI → PCMU to PSTN). SIMD path inside the C++ core. |
| AEC / AGC / NS | WebRTC-grade pipeline runs on every WebRTC leg. Configurable per call. |
| VAD-based barge-in | Yes. OriginateRequest.auto_barge_in + barge_in_patience_ms. |
| DTMF (RFC 2833) | Yes. Default. |
| DTMF (SIP INFO) | Yes. Falls back when 2833 isn’t negotiated. |
| DTMF (in-band) | Detected; not preferred. |
| DTMF masking | For PCI-DSS: redact DTMF tones from the recording stream while passing them to the dialplan. |
| Pre-answer / early media | Pass-through. |
| Comfort noise | Generated when the far end transmits silence. |
| Echo reference | Per-leg AEC reference; ERL > 20 dB target. |
AI / agent integration
| Feature | Yes / How |
|---|---|
| AI websocket bridge | OriginateRequest.ai_websocket_url. Audio bidirectional; framing per the AI vendor (OpenAI Realtime, Deepgram, ElevenLabs, etc). |
| AI QUIC bridge | OriginateRequest.ai_quic_url. Lower-latency option for first-party AI services. |
| Inbound AI handoff | SetInboundRouting(rule=HANDLE_AI) + inbound_ai_websocket_url. |
| Agent DAGs | Yes — multi-step orchestration (TTS → STT → LLM → tool call → branch). Published via admin API. Versioned. |
| Live transcription | Pipe on_audio_frame to your STT. TeleQuick doesn’t bundle an STT — you pick. |
| Streaming TTS | Pipe TTS PCM into push_audio. TeleQuick resamples to the trunk codec. |
| Tool / function calling | Driven by your AI; the gateway just shuttles audio and DTMF. |
| Human-in-the-loop transfer | Mid-call: pause the AI, originate a human leg, bridge. |
Reliability & scale
| Feature | Yes / How |
|---|---|
| Active-active multi-region | Multi-region deployment supported. Calls pinned to ingress region; CDR replicated globally. |
| Per-tenant CPS quotas | Enforced. Excess returns ERR_RATE_LIMITED. |
| Per-trunk channel caps | AddTrunk.channel_limit. New attempts past the cap fail closed. |
| Circuit-breaker | Per-trunk; trips on consecutive carrier 5xx. |
| Hot certificate reload | ReloadCertificates admin RPC. No connection drops. |
| Zero-downtime upgrades | Single-binary rolling deploy; QUIC connection migration keeps in-flight calls. |
| Rate-limited admin | Admin RPCs throttled separately from call-control. |
Compliance & regulation
| Feature | Yes / How |
|---|---|
| STIR/SHAKEN signing | Outbound INVITEs signed with the configured PASSporT cert. Attestation A/B/C selectable per trunk. |
| STIR/SHAKEN validation | Inbound Identity headers verified; result surfaces in CallEvent.status. |
| P-Asserted-Identity | Set per trunk. |
| PIDF-LO / E911 location | Trunk-default civic address; per-call override via ExecuteDialplan(ANSWER, app_args=<json>). |
| DNC suppression | Upload list per campaign; checked before each Originate. |
| Recording consent prompts | Playback prompt on connect (jurisdiction-dependent). |
| Recording encryption | Recordings written to your storage encrypted at rest (AES-256). |
| Retention controls | Per-tenant retention window applied to CDRs and recordings. |
| HIPAA | BAA available; recording storage encryption mandatory. |
| PCI-DSS | DTMF masking + per-stream redaction tags. |
| GDPR / CCPA | Right-to-be-forgotten ⇒ purge tenant CDRs + recordings older than the retention window. |
| CALEA | Honoured at the carrier upstream of TeleQuick; not a TeleQuick-side feature. |
Observability
| Feature | Yes / How |
|---|---|
| CDRs | Pushed to ClickHouse; full schema in Telemetry. |
| Live event stream | StreamEvents RPC; CallEvent per state transition. |
| Prometheus metrics | /metrics on every gateway shard. |
| OpenTelemetry traces | OTLP HTTP/gRPC exporter; tenant.id and call.sid on every span. |
| SIP packet capture | HEPv3 to Homer / heplify. |
| Recording | Per-call. Stored at the trunk-configured URL or in your S3. |
| Audit log | All admin RPCs logged with the issuing service-account kid. |
WebRTC
Browser-side and vendor-bridge surface area:| Feature | Yes / How |
|---|---|
| DTLS-SRTP media | Mandatory; full key-exchange via the standard a=fingerprint SDP attribute. |
| ICE / STUN / TURN | ICE-lite gateway-side. The platform publishes host and srflx candidates; clients TURN-relay through their own server when needed. |
| Codec negotiation | Opus + PCMU offered by default; PCMA, G.722 negotiable. Transcoded to the trunk codec on bridge. |
| Audio processing pipeline | AEC + AGC + NS run on every WebRTC leg, per direction. |
| Browser SDK | TypeScript/WASM. Audio surfaced as a standard MediaStreamTrack. |
| LiveKit adapter | Joins as a participant, subscribes to one track, bridges to the matching call_sid. JWT-authenticated. |
| Daily adapter | JSON text-frame signaling, hidden participant join. |
| Chime adapter | AWS SigV4 + Chime JoinToken; meeting must be created out-of-band. |
| Twilio Media Streams | PCMU 8 kHz pass-through; X-Twilio-Signature HMAC-validated. |
| Vapi adapter | Linear16 16 kHz ingress, resampled to PCMU on egress. |
| getStats() exposure | Every WebRTC leg’s RTCStats (jitter, loss, ICE candidate type, REMB, NACK rate) surfaces in the per-leg event stream. |
| simulcast / SVC | Audio-only platform — N/A. |
| Datachannels | Not exposed; SDK uses WebTransport for control instead. |
Other transports
| Feature | Yes / How |
|---|---|
| WebTransport | Browser control plane (RPC envelopes); same QUIC port as native SDKs. |
| QUIC (native SDKs) | Direct binary RPC for Python / Go / Rust / Java / .NET. |
| Generic SIP | Yes. Carrier-agnostic. |
| HTTP/3 fallback | Optional; verification endpoint only. Not a media transport. |
Out of scope
Capabilities the platform deliberately does not implement:- Video. Audio-only.
- Fax / T.38. Pass-through only via raw SIP; no T.38 stack.
- On-prem PBX replacement. TeleQuick is a gateway/orchestrator. It runs alongside Asterisk / Cisco UCM, not in place of them.
- First-party STT / TTS / LLM. Bring-your-own; the platform provides the audio pipe and the agent-DAG runner.
- First-party DID procurement. DIDs are obtained from a carrier and then attached to a trunk via
AddTrunk. - CRM-side dashboards. CDRs and events are emitted; consumers wire them into Salesforce / HubSpot / etc.