Browse the documentation

Documentation

Concepts

Updated 12 min read

Ask AI about this page

A call routed through Open Voice Shield is relayed to your destination and recorded on the way. After hangup it is transcribed on separate channels and assessed by a language model. One record per call: a probability, a category, red flags, a TCPA comment, a summary and a block, review or allow recommendation.

A call has two halves#

Everything that touches the live call is synchronous and fast: authorize, anchor the media, relay, tear down. Everything that produces a verdict happens after the BYE, on a worker. A failure in the second half marks the analysis failed and leaves the call itself untouched.

Signalling and media path through Open Voice Shield Two lanes leave your switch: the SIP signalling lane passes through the Open Voice Shield SIP proxy and the same INVITE is relayed, unchanged, to your destination; the RTP media lane flows in both directions through the media server, where a pcap tap records it. Nothing is injected into the live audio. Below a dividing line marked “after the BYE”, an asynchronous pipeline decodes the pcap to a stereo WAV, transcribes it with one channel per party, runs language-model analysis and ends in one verdict: block, review or allow. Your switch, SBC or PBX the trunk you already run INVITE RTP Open Voice Shield ingress SIP proxy IP auth, routing no B2BUA in path anchors the media Media server RTP in and out pcap tap same INVITE, unchanged RTP, nothing injected Your destination or carrier wherever your rules send it AFTER THE BYE a fault down here can never touch a live call pcap decoded to stereo WAV transcribed, channel per party language-model analysis BLOCK REVIEW ALLOW
The live call above the line, the post-hangup pipeline below it. Nothing is injected into the audio, and neither party hears anything added.

While the call is up#

  1. Admission. The source address must be whitelisted, the account active and not blocked for that caller ID, the balance sufficient and a port free. Each check has its own SIP response, listed in the SIP integration guide.
  2. Routing. A destination is chosen from your rules and the call is relayed there unchanged, apart from a tech prefix if the destination carries one.
  3. Media. The RTP is anchored, so it flows through us in both directions for the whole call. This is what makes a recording possible, and it means your audio traverses our media path.
  4. Teardown. A BYE from either side ends the call. A call can also be ended by the credit cut-off or the maximum lifetime, in which case BYE goes to both parties.

The record starts before the verdict does

The call record exists from the moment the call is authorized. Duration, billed seconds, SIP code, end reason, the destination chosen, the route prefix and the SIP log are all there whether or not an analysis is ever produced.

Watching a call while it is up#

On the Live page every licensed port is an indicator. Click a lit one and a line inspector opens beneath the bank for that call, polling every two seconds while the call is up:

  • Signalling: the SIP ladder as the proxy traces it, one row per message, and the codec, post-dial delay and answer delay read from it the moment the 180/183 and 200 arrive.
  • Media: the two RTP legs from the relay's own counters, packets and packet rate per leg; jitter, loss, round-trip time and a MOS when the far end reports them in RTCP, shown as not yet reported when it does not.
  • After hang-up: the same panel shows decode, transcription and analysis completing, the quality measured from the recording per leg, who ended the call with the Q.850 cause, and the verdict.
The line inspector for a connected call: clocks, the media path with packets flowing, per-leg counters, the SIP ladder and the signalling facts.
The inspector on a connected call. The "open full" control puts the same panel on its own page for a wall screen.

The panel reads GET /calls/{id}/inspect, which bundles the ladder, the live timings, the relay's per-leg statistics, the pipeline state and the verdict; see the API reference.

Recording#

The relayed audio is captured as it passes and, after the call, decoded into a single stereo WAV at 8 kHz: one channel per direction. That separation is physical, not statistical: the caller's channel is the caller's RTP stream, so there is no speaker diarization to get wrong.

  • G.711 (A-law and µ-law), G.722, G.729 and G.723.1 can be decoded; other codecs relay fine but leave nothing to transcribe.
  • Comfort-noise and telephone-event payloads are ignored when decoding speech.
  • The finished WAV is downloadable from the call record and included in the export bundle.
  • Calls shorter than the minimum analysis length, 5 seconds by default, are recorded and billed but not analyzed.

Call quality (QoS)#

Alongside the verdict, each analyzed call records how the media actually travelled. The metrics are computed from the RTP capture at decode time, per leg (caller and callee), and the worst leg becomes three fields on the call record, shown in the portal and quoted in the alert email:

mosEstimated MOS (1.00 to 4.50) via the E-model, derived from packet loss and jitter. A transport-quality estimate, not a perceptual audio score.
jitter_msRFC 3550 interarrival jitter in milliseconds, worst-leg average.
packet_loss_pctPackets lost as a percentage of packets expected, worst leg.

Calls from before the feature, or whose media capture had already expired under retention, carry no values: an empty field means not measured, never zero.

An alert rule can fire on this figure: set it to alert on poor call quality, or on fraud or poor quality, with the estimated MOS ceiling you choose. A call that was not measured never triggers it.

Signalling on the record#

The same call record also carries what the signalling showed, taken from the SIP messages the proxy traced and from what it saw at hangup. These answer the second question after a bad MOS: was the route slow to ring, did the far end play early media, and who ended the call.

, q850_text
codecThe negotiated audio codec (PCMU, PCMA, G722, G729, G723, mixed, or the payload type when unnamed). From the RTP the decode stage parsed, else from the answer SDP. Explains a missing verdict and a low MOS in one glance.
pdd_msPost-dial delay: INVITE to the first 180 or 183, in milliseconds. The figure route buyers compare vendors on.
answer_delay_msINVITE to 200 OK, in milliseconds.
early_mediaWhether a 183 with SDP arrived before the answer. A known signal in delayed-playback FAS.
hangup_bycaller, callee or system: the side that sent the BYE, or the platform for a credit cut-off, a lifetime limit or a failure it generated itself.
q850_causeThe Q.850 cause and text from the Reason header of the BYE or the final response, when the party sent one.

Every one of these is empty when it could not be measured: a call traced before the feature, or a trace that retention has already pruned. Empty means not measured, never zero.

Transcription#

Each channel is transcribed on its own and the timed segments of both are merged by start time into one speaker-labelled text:

the transcript text, as stored

CALLER: Hi, I'm calling from the card services department about your account.
CALLEE: Which account is that?
CALLER: The one ending in the last four digits you'll confirm for me now.
Fields on the transcript record.
FieldMeans
textThe merged, speaker-labelled transcript shown above.
segmentsEach utterance with its speaker (caller or callee) and its start and end in seconds.
languageDetected language of the speech, as an ISO 639-1 code.
audio_secondsSeconds of audio actually transcribed.
locationWhere the stage ran: local (on the server) or cloud.

A channel that carries only digital silence is skipped, which is why a leg that never speaks produces a one-sided transcript rather than an error.

The analysis#

The transcript is assessed against a fraud and telemarketing-compliance prompt and returned as a fixed set of fields. Every field is always present. A field with nothing to say is an empty string or an empty list.

Every field on the analysis, and what to do with it.
Field What it is How to use it
title A short headline for the call. The line in a queue or an alert. Never the basis for a decision.
probability 0–100: how likely this call is a scam or illegal/abusive telemarketing. The number you threshold on for automation and alerting.
category One of a fixed list, see categories. Grouping and reporting: which kind of abuse is on your network.
entity The organization the caller claimed to represent, or empty. Impersonation signal. A bank's name here on a 90-probability call is the story. Click it on the calls list to see every call that named it.
caller_identity How the caller identified themselves, name, role, or empty. Compare with the ANI and with what the entity would actually use.
red_flags Numbered, concrete observations taken from the transcript. The evidence. Read these before acting; they are what you quote to the customer.
tcpa_comment Assessment against TCPA and the FTC Telemarketing Sales Rule, identification, opt-out, consent, robocall. Compliance review of legitimate campaigns, as well as fraud.
summary Two to five sentences on what happened. What a reviewer reads first, and what goes into a case.
recommendation block review allow The suggested action. Automation rules match on it.
language Primary spoken language, ISO 639-1. Routing a review queue to someone who speaks it.
keywords Three to ten short keywords characterizing the call. Search and clustering across many calls. Click one on the calls list to filter by it; the most frequent ones are offered under the search.
location local or cloud, where the assessment ran. Data-handling questions. Vendor and model names are not exposed on a call.

Reading the probability#

The probability and the recommendation are related but different. The score is how confident the assessment is that the call is abusive, and the recommendation is what to do about it. When a model returns no usable recommendation, the score decides it: 70 and above is block, 40 and above is review, below that allow.

A workable first policy. Tune it on your own traffic before you automate.
BandTypicallyOperations response
90–100blockAlert, and let an automation rule hold the ANI while a human confirms.
70–89block or reviewSame-day human review. Open a case if the red flags hold up.
40–69reviewSample it. This band is where compliance problems live, not outright fraud.
0–39allowNothing. Keep it for reporting and for trend lines.

Categories#

The category is one of a fixed list, so it can be counted and charted:

  • credit_card_scam
  • tech_support_scam
  • government_impersonation
  • bank_impersonation
  • debt_collection
  • prize_lottery_scam
  • utility_scam
  • telemarketing_compliant
  • telemarketing_noncompliant
  • robocall
  • legitimate_business
  • personal
  • unknown

unknown is what you get when the call gave the assessment nothing to go on, a wrong number, an IVR, thirty seconds of hold music.

When there is no verdict#

Two fields on the call say where the pipeline got to: transcript_status and analysis_status.

Status values and what they mean for you.
ValueMeans
pendingQueued or waiting for a retry. Normal for the first minute after hang-up.
processingRunning now.
doneThere is a result.
skippedNothing to analyze: the call was never answered, or was shorter than the minimum analysis length.
failedEvery attempt failed. processing_error on the call says why.

One more case: when the assessment runs but returns nothing usable, the call gets a deliberate fail-safe result instead of a missing one, probability 50, category unknown, recommendation review, and a red flag saying the analysis could not be completed. It never fails towards allow.

Acting on a verdict#

A verdict is an aid to a reviewer, not a judgment. Read the transcript before acting on a score. What is available to act with:

From verdict to action.
MechanismWhat it does
Alert rules E-mail, a Slack channel, or both, on a threshold. Every new account starts with one enabled: probability 90 or above and a block recommendation. A rule can also fire on call quality, when the call's estimated MOS is at or below a ceiling you set, or on either condition.
Automation rules Match a minimum probability and a set of recommendations, then either block the caller ID or divert it to another destination, for a set number of hours. Enforcement happens on the next call from that ANI, at admission.
Webhooks A signed call.analyzed event, so your own systems act without polling.
Export bundle One zip per call, the analysis as JSON, the transcript, the recording, the SIP log and a readable report, openable by someone with no account.

A blocked caller ID is enforced at admission

While a block control is in force, the next call from that ANI is refused with 403 Blocked by rule before it is routed anywhere, and unlike other refusals it is written to your call records, so you can see what the rule stopped.

What is kept, and for how long#

Retention is set platform-wide, not per call, and is not something you configure. The windows in force:

Retention windows. Write to support if you need different ones.
ArtifactDefault
Recording (WAV)30 days
Source media capturesDiscarded as soon as the recording has been decoded from them
Transcript, analysis, call recordKept with the call record
SIP logPruned on a platform schedule

The audio of every analyzed call passes through Open Voice Shield and is written to storage. There is no analysis without a recording. If your audio must never leave your own network, this is not the right tool for the job.

Frequently asked questions#

What does the fraud probability mean?

An integer from 0 to 100 for how likely the call is a scam or illegal or abusive telemarketing. It is the number you threshold on for alerts and automation. When a model returns no usable recommendation, the score decides it: 70 and above is block, 40 and above is review, below that allow.

What is the difference between the probability and the recommendation?

The probability is how confident the assessment is that the call is abusive. The recommendation, block, review or allow, is what to do about it. Automation rules match on the recommendation and a minimum probability together.

What happens when the analysis cannot produce a verdict?

The call gets a deliberate fail-safe result instead of a missing one: probability 50, category unknown, recommendation review, and a red flag saying the analysis could not be completed. It never fails towards allow.

Why is the transcript split by speaker so reliably?

Because the separation is physical, not statistical: each direction of the call is its own RTP stream, decoded to its own channel and transcribed on its own, so there is no speaker diarization to get wrong.

How long are recordings and transcripts kept?

Recordings are kept 30 days by default, and source media captures are discarded as soon as the recording has been decoded from them. The transcript, the analysis and the call record are kept with the call. SIP logs are pruned on a platform schedule.

Next: the API reference for the exact request and response shapes, or Security for isolation, access and deletion.