AI call QA for Twilio Media Streams.
First-class adapter for Twilio's Media Streams WebSocket. Live transcription with speaker separation, scoring against your own scorecard, mid-call breach detection within 30 seconds, and HMAC-signed webhooks back to your CRM or supervisor screen. No middleware, no Lambda bridge.
Point Twilio at our endpoint. That's the integration.
Twilio Media Streams sends audio over a JSON-framed WebSocket as μ-law 8kHz mono. CallGuard's Twilio adapter parses the protocol natively, so you point your Twilio Voice TwiML at our streaming URL and we do the rest. No Lambda bridge, no middleware container, no audio re-encoding step.
Point your TwiML at us
Add a <Start><Stream> verb to your Voice TwiML pointing at our streaming endpoint, with your CallGuard API key in the custom parameters. Takes a few minutes.
We score in real time
The adapter consumes Twilio's media frames, runs live transcription with speaker separation, and feeds the rolling transcript into Claude every 30 seconds for breach detection at over 75% confidence.
Webhooks fire back
HMAC-SHA256 signed POST to your endpoint within 30 seconds of a breach being detected, plus a final scored event when the call ends. Retry with exponential backoff. Full audit log in the dashboard.
Twilio's calls in. Compliance evidence out.
Native Twilio frame parsing
Our adapter parses Twilio's connected, start, media and stop events natively. start.callSid is captured as the external ID so calls match back to your CRM. Custom parameters are surfaced as session metadata.
Live transcription with diarisation
Speaker separation distinguishes agent and customer turns. Production-grade speech recognition with keyterm boosting for product names, regional accents and acronyms.
30-second breach cadence
Mid-call breach detection runs every 30 seconds against the rolling transcript. Only emits a breach when the AI is over 75% confident a criterion has clearly already failed. No alert fatigue.
HMAC-SHA256 signed webhooks
Every webhook is signed so your endpoint can verify the payload came from CallGuard. Headers include X-CallGuardAI-Event and X-CallGuardAI-Signature: sha256=.... Retries on failure with exponential backoff.
Final scored event
When the call ends, a final webhook fires with the overall score, pass/fail per scorecard criterion, evidence quotes, breach list and coaching draft. Same payload as the REST result endpoint.
Encryption at rest
Recorded audio (if retained) is encrypted at rest with AES-256-GCM. Transport is TLS 1.2+. UK GDPR Article 28 DPA published; sub-processor list public.
Common questions, answered.
Do we need to deploy any middleware between Twilio and CallGuard?
No. The Twilio adapter is built into CallGuard. Your Twilio TwiML points directly at our streaming URL with your API key in custom parameters. No Lambda bridge, no middleware, no audio re-encoding.
What audio format does the adapter handle?
Twilio Media Streams sends μ-law 8kHz mono. Our adapter handles this natively. No transcoding required on your side. If you also need to support Twilio Programmable Voice recordings (post-call upload), the same scorecard works via our REST ingest API.
How do calls map back to records in our CRM?
Twilio's start.callSid is captured as the external ID on the CallGuard call record. You can also pass any number of custom parameters in the <Stream> TwiML verb (agent ID, lead ID, campaign ID) which are stored as session metadata and returned in webhooks.
Can we still use post-call recordings (Programmable Voice) instead of streaming?
Yes. Push the Twilio recording URL or the audio file into our REST ingest endpoint after the call ends. You get the same scoring output, just without the mid-call breach webhooks. You can run streaming for compliance-critical campaigns and post-call ingest for the rest.
How do we handle consent capture?
The streaming protocol takes a consent.captured event before scoring proceeds, with the consent excerpt and timestamp captured in the call record. For Twilio specifically, you can inject the consent event from your TwiML <Say> or <Play> flow when the customer's "yes" is recorded.
What happens if the WebSocket disconnects mid-call?
The session enters a graceful-disconnect state. Whatever has been transcribed and scored up to that point is preserved as the call record. When the WebSocket re-connects (Twilio retries automatically), the session resumes against the same external ID.