Call stayed in dialing or
ringing, then landed on no_answer or failed. Audio never bridged. Each
of these outcomes means the same thing: the call never reached
in_progress. That is the only status that guarantees a live media path.
This page is a symptom → cause → fix map for that window. It covers causes
from “the trunk is not registered” to “the carrier rejected the number”. It
also lists the Q.850 cause codes that tell you exactly why.
Start from the outcome. Identify the status the call ended on. Then find
that row below. no_answer and failed have different causes, so the ending
status already cuts the search in half.
This page is about calls that never connect. If the call reaches
in_progress
but you cannot hear anything, that is a media problem, not a signalling
problem. Go to one-way audio.
If the trunk itself does not come up at all, start at
SIP trunk issues.First, read the ending status
Before anything else, look at where the call ended. The call lifecycle explains how each status maps to a SIP moment. For triage, this is the short version:completed means the call did connect and then ended. That is not this
page. no_answer and failed both mean the call never connected, and the
split matters. failed is almost always a rejection that you can fix (auth,
format, ACL). no_answer is usually the far end (busy, no person there, ring
timeout).
Symptom → cause → fix
You do not read raw SIP off the wire in normal use. The gateway speaks SIP for
you and collapses it into
CallStatus. The SIP codes below appear in the
per-call event timeline and CDR (via the cleared event’s Q.850 cause). Read
them in call traces. Use them
to find the correct row, not as something you handle in code.Q.850 cause codes
When a call clears, the gateway records an ITU-T Q.850 cause code with the status. It is the most precise “why” you have. It rides thecleared
lifecycle event and the CDR. Read it in
call traces. These are the
codes you will see on a call that never connected:
Step-by-step: isolate a call that won’t connect
1
Read the ending status and Q.850 cause
Pull the call’s timeline in
call traces (or the
cleared event / CDR). Note the terminal CallStatus and the Q.850
cause. That pair alone points you at a row above. failed + cause 21/28
→ your side (format or auth). no_answer + 17/18/19 → the far end.2
Confirm the call left the building
If the call never got past
dialing, the INVITE did not route. For
outbound, check that the
trunk is registered / IP-authed
and that the trunk resolved. For inbound, check that the
DID is provisioned
and that the source IP matches a known trunk. The gateway refuses unknown
sources before routing.3
Check the number format
Dial E.164 (
+<country><number>). A 484/404/28 almost always
means the digit string was wrong for that carrier. Set a technical prefix
or +-stripping on the trunk’s dial rules. Do not edit the number in your
app.4
Rule out auth and ACL
A
401/407 loop that ends in a give-up is digest auth. Enter the trunk
sip_username / sip_password again. They are sealed — set them again,
you cannot read them back. An inbound INVITE that vanishes with no
response is usually the source-IP ACL. Add the carrier’s signalling IP.
See SIP trunk issues.5
Right-size the ring timeout
If the call rings and dies at a fixed second count, that is
ringTimeoutSec (default 30, clamp 5–120). Raise it for destinations that
answer slowly. If the call hits the timeout every time, the far end
black-holes the INVITE. Go back to routing, not the timeout.6
For campaigns, back off the pacing
Bulk
failed results with cause 34 (no channel) mean a concurrency
ceiling. Lower calls_per_second and max_concurrent_calls on the
paced dialer to stay
under the trunk’s licensed channels.Setting a sane ring timeout
ringTimeoutSec caps the ringing stage. If no 200 OK arrives in time, the
gateway stops the wait, and the call lands on no_answer instead of a ring
that never ends. You get a deterministic terminal status that you can branch
on.
- TypeScript
- Python
Related
Call lifecycle
How SIP signalling maps to each CallStatus, and where media comes up.
SIP trunk issues
When the trunk does not register, authenticate, or route.
One-way audio
The call connected, but audio flows in one direction only.
Number provisioning
Provision a DID and map it to a trunk, agent, or flow.
SIP trunking
Bring your own trunk or use a managed one; registration and IP auth.
Call traces
Read the per-call event timeline and Q.850 cause after the fact.

