Classify the exact path that reached voicemail
Record the affected public number, calling identity, timestamp and timezone, mailbox that answered, whether the symptom occurs on every inbound call, and whether an internal call to the same extension behaves differently. A greeting and saved message prove that some call path answered in voicemail; they do not prove that the intended extension was attempted first. Distinguish immediate voicemail, ringing followed by voicemail, a busy greeting, an unavailable greeting and a mobile carrier mailbox.
Compare one affected outside call with one authorized internal call and, where possible, another public number using the same trunk. If no inbound INVITE reaches FreePBX, continue upstream. If the PBX rejects the trunk before routing, use the inbound-trunk identification guide. Do not disable voicemail merely to make the symptom disappear; that can convert a routed call into a hangup while preserving the original fault.
Prove the inbound route and every schedule decision
Preserve the received Request-URI, To, any Diversion or History-Info value, matched inbound route and selected destination for the affected timestamp. Then follow time conditions, call-flow controls, IVR choices, ring groups and queues until the path reaches an extension or voicemail destination. A correct DID match does not prove that the open-hours branch ran, and the mailbox heard by the caller may be the intentional closed, holiday or fallback destination.
Inspect the configured time zone, calendar or time group and the effective state at the call time before toggling it. Compare the current GUI values with the generated dialplan through supported read-only inspection; do not edit FreePBX-generated dialplan files. Retain screenshots or redacted exports of the original destinations and define a rollback before changing routing.
Determine whether FreePBX created an endpoint call
Use a short, authorized Asterisk console window and correlate one call by timestamp, channel and linked identifier. Prove whether the dialplan invoked Dial for the intended extension, which PJSIP channel or contact it selected, whether the endpoint produced ringing, busy, unavailable, forward or answer behavior, and which next destination executed. A mailbox can answer after a genuine no-answer timer or without an endpoint channel ever being created.
Asterisk documents that Dial stops when a requested channel answers and exposes timing, forwarder and DIALSTATUS information. Those values are evidence for that dial attempt, not a reconstruction of every upstream SIP leg. Keep the original SIP response and per-channel cause where available. Turn protocol logging off immediately after the bounded call and protect captures because they can contain numbers, credentials, message metadata and SDP addresses.
core show version
pjsip show endpoint <extension-endpoint>
pjsip show aor <extension-aor>
pjsip show contacts
core set verbose 5
pjsip set logger on
# Place one authorized affected call and retain only its correlated signaling and console lines.
pjsip set logger off
core set verbose 0Keep DND, busy, forwarding and Follow Me separate
Sangoma's inbound-call checklist identifies DND, Call Forward Busy, Call Forwarding and Follow Me as distinct reasons a phone may not ring. Record each feature's effective state, destination, owner and activation method before changing it. The older direct-to-voicemail note gives *76 as a default DND toggle, but the Feature Codes module exists specifically to enable, disable and change local codes. Inspect the installed module rather than assuming that historic default.
Determine whether DND is PBX-side, a phone-local reject mode or both. Check call waiting and busy handling separately from DND. For Follow Me or forwarding, preserve the target sequence, ring time, confirmation behavior and unreachable destination. A forwarded mobile mailbox can answer immediately even when the desk extension and FreePBX voicemail are healthy. Change only the state shown by the affected call.
Treat registration and call acceptance as different states
Sangoma's historic troubleshooting page pairs DND with an unregistered phone, but its screenshots and peer terminology predate the current PJSIP baseline. On FreePBX 17, identify the installed Asterisk and module versions, then inspect the PJSIP endpoint, AOR and contact that the extension actually uses. No contact can explain why no endpoint leg is created; a current contact proves only a binding and destination, not that the device will accept this INVITE.
If the contact is absent or stale, investigate provisioning, credentials, DNS, transport, NAT and expiry through the extension-registration path. If it is reachable, preserve the actual INVITE and response. A 486 Busy Here, timeout, local rejection, unreachable contact and answered-elsewhere cancellation lead to different voicemail behavior and should not be collapsed into a generic registration fix.
Correct the demonstrated owner and retest the matrix
Repair the smallest demonstrated owner: inbound destination, schedule state, extension timer, DND, call waiting, forwarding, Follow Me, endpoint registration or voicemail fallback. Submit and Apply Config through supported FreePBX controls, while keeping the previous values and a tested management path. Avoid factory resets, broad catch-all routes and simultaneous feature-code changes; each can erase the evidence needed to verify the cause.
Retest the affected public number and one unaffected number with the extension idle, busy, in approved DND state, unreachable, unanswered through the documented timer and answered. Verify the intended ring, caller experience, final destination, mailbox ownership, message deposit and recovery after restart or reprovision where relevant. No PBX, route, schedule, extension, phone, forwarding state, mailbox, provider or live call was tested for this guide.
Sources & applicability
Primary references for the technical details above. Operational examples and planning checklists are VoIP.info editorial guidance.
- Sangoma: inbound calls go directly to voicemail ↗
- Sangoma: incoming call does not ring phone ↗
- Sangoma: Feature Codes module ↗
- Sangoma: Follow Me user guide ↗
- Sangoma: Voicemail reference ↗
- Asterisk Dial application ↗
- Asterisk device state ↗
- Asterisk PJSIP troubleshooting guide ↗
Examples require adaptation to your topology. No live PBX or hardware testing is claimed.