VoIP.info Diagnostic

FreePBX directory cannot find a name, reaches the wrong person or loops

Trace one caller through the selected Directory object, name entry, DTMF match, spoken announcement, dial target and invalid or IVR-return branch before editing extensions or prompts.

Reviewed 2026-10-11Sangoma FreePBX Directory guidance, FreePBX Directory 17.0.3 release/17.0 metadata and current module source, and Asterisk 23 Directory application documentation reviewed October 11, 2026; Sangoma screen guidance may reflect older PBX GUI releases, the FreePBX module uses its managed AGI path rather than establishing the standalone Asterisk Directory application contract, and no PBX, module, directory, IVR, entry, name, announcement, recording, DTMF event, dial target, extension, route or live call was inspected or testedIntermediateDocumentation based · not lab tested

Freeze one caller search and final result

Record timestamp and timezone, caller and called identity, source route or IVR, selected FreePBX Directory name and ID, prompt heard, letters and digits entered, expected entry, spoken match, confirmation key, announced extension, dialed destination and final result. Preserve the installed FreePBX, Directory and Asterisk versions plus the minimum authorized channel and dialplan evidence for that attempt.

Classify the first failed boundary: the call never entered the intended Directory, the entry is absent, the search name maps to unexpected digits, DTMF was not received, no match or too many matches were returned, the wrong announcement played, the caller selected a different result, the correct result dialed the wrong target, or the invalid path returned to an IVR and repeated. These are different owners.

Prove the route and exact FreePBX Directory object

Follow the call through its inbound route, time condition and IVR option into the intended managed Directory destination. Current FreePBX source exposes each saved directory as its own directory,<id>,1 destination, answers and waits, then invokes the module's directory.agi with that directory ID and Return-to-IVR state. Preserve the saved object, successful Apply Config, generated dialplan and loaded branch separately.

Do not infer the object from a familiar greeting. A shared announcement or similarly named directory can make the audio sound correct while the selected ID and entry set are wrong. Do not edit the generated directory context or AGI invocation as the durable repair.

Bind the searchable name, announcement and dial target

Inspect the entry inside the selected Directory. Current FreePBX source keeps Name, Name Announcement and Dial as separate fields, permits existing users or a custom entry, and says the search is based on the name rather than the number. Prove the stored name, the digits those letters produce, the selected announcement source and the final dial target independently.

The announcement can come from a voicemail greeting, text to speech, spelled name or System Recording. A correct spoken name does not prove the dial target, and a correct extension record does not prove that this Directory includes it or uses its current name. Treat privacy approval for public names and announced extension numbers as a separate publication decision.

Prove DTMF, match selection and retry state

Preserve the digits sent by the caller, the negotiated DTMF method, the events received by Asterisk and the characters the Directory evaluated. Reproduce one unique name, a similar-name collision, an unknown name and a caller exit. A keypad tone heard locally does not establish that the module received the intended digits.

Current FreePBX source exposes the entry announcement, invalid retries, retry recording and final invalid recording as separate controls. Record each prompt and loop count in order. Do not change trunk-wide DTMF settings or add every user merely to make one search return a result.

Separate invalid destination from Return to IVR

After an invalid or exhausted search, preserve the module's chosen branch. Current FreePBX source says Return to IVR applies only when the call passed through an IVR whose return behavior supports it; in that case the caller can be sent to the originating IVR instead of the configured invalid destination. Direct entry and IVR entry therefore require separate tests.

Map the IVR's directory option, its return context, retry or timeout handling and every route back to the Directory. A caller hearing the same greeting again may be following a configured return loop rather than experiencing a dropped call. Confirm a bounded escape to an operator, voicemail or other approved destination without exposing an internal feature to an untrusted context.

Correct one owner and replay a caller matrix

Correct only the demonstrated owner: source route, IVR option, Directory ID, included entry, searchable name, announcement source, dial target, retry count, invalid recording, invalid destination, Return-to-IVR choice or downstream extension route. Submit and Apply Config through supported FreePBX controls, then compare the generated and loaded state before replaying the call.

Retest a unique match, similar names, an unknown name, maximum retries, the approved exit, direct Directory entry, IVR entry, the correct dial target and one unaffected entry. Confirm the caller's audible result and final destination, then remove temporary logging. This workflow is documentation-derived and has not been reproduced on a customer or laboratory PBX.

Sources & applicability

Primary references for the technical details above. Operational examples and planning checklists are VoIP.info editorial guidance.

Examples require adaptation to your topology. No live PBX or hardware testing is claimed.