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.
- Sangoma FreePBX Directory module user guide ↗
- FreePBX Directory release/17.0 metadata ↗
- FreePBX Directory release/17.0 source ↗
- Asterisk 23 Directory application ↗
Examples require adaptation to your topology. No live PBX or hardware testing is claimed.