Freeze one call and classify the first divergence
Record one authorized occurrence with timestamp and timezone, Asterisk branch, channel name, uniqueid, linked call identifier, endpoint or trunk, negotiated media, active context, prompt list and expected digit. Classify the first symptom: prompt missing, prompt plays but no DTMF event arrives, event arrives but does not interrupt, wrong digits are collected, no extension matches, wrong extension wins, or i or t executes.
Preserve logs and channel state before reloading, changing DTMF mode, lengthening every timeout or adding a catch-all pattern. A later hangup does not identify the first failed boundary.
Prove audio and DTMF transport independently
Confirm that the channel reached the intended answer or early-media state and that the requested prompt file was found. Then capture whether Asterisk received the caller key as a DTMF event using the method negotiated for that channel. Audible prompt playback and DTMF delivery use different evidence paths.
If no event arrives, continue with the endpoint, trunk, RTP or signaling DTMF investigation. Do not alter dialplan patterns to compensate. If the event arrives correctly, freeze transport settings and continue at the application and context boundary.
Inspect BackGround options and completion status
Inspect the loaded BackGround() arguments rather than only the source template. The p option deliberately blocks digit interruption. The m option interrupts only when the pressed digit matches a one-digit extension in the destination context. The n and s options alter answer and skip behavior.
Record BACKGROUNDSTATUS and whether the file list completed, failed or was interrupted. A SUCCESS result is not proof that the digit matched or that the destination priority later completed.
Resolve the exact destination context and winning match
Record the channel context at playback and any context supplied to BackGround(). Inspect the loaded explicit extensions, patterns and includes that can accept the observed digit sequence. Use the actual matching order; do not assume the visually nearest pattern or file order wins.
For multi-digit choices, capture each partial sequence and whether it was already an exact valid extension, could match a longer pattern or became invalid. Avoid adding _.! or another broad wildcard until the authorization impact and input filtering are understood.
Reconstruct playback, WaitExten and timeout timing
Place prompt start and end, every received digit, application return, WaitExten() start and end, digit timeout, response timeout and i or t entry on one timeline. A digit during playback, a first digit after playback and a late second digit can take different branches.
Read the channel values instead of assuming the current documented defaults. If WaitExten() is absent, there may be no intended post-prompt window. If i or t is absent, Asterisk can terminate rather than play a designed recovery message.
Correct the first divergence and retest bounded cases
Correct only the demonstrated boundary: missing sound, answer-state option, interrupt option, destination context, exact extension or pattern, include order, post-prompt wait, digit or response timeout, or missing i or t handling. Keep the previous dialplan and use the supported reload path.
Retest valid one- and multi-digit choices, invalid input, no input, input during and after playback, slow digits and repeated attempts. Verify destination behavior separately from selection. This workflow is documentation-derived and was not reproduced on an installed or laboratory Asterisk system.
Inspect special-extension precedence after digit collection
The exception-handler diagnostic checks the executing context and whether a local i, t or T path takes precedence over e.
Sources & applicability
Primary references for the technical details above. Operational examples and planning checklists are VoIP.info editorial guidance.
- Asterisk 24 BackGround application ↗
- Asterisk latest WaitExten application ↗
- Asterisk latest TIMEOUT function ↗
- Asterisk dialplan pattern matching ↗
- Asterisk contexts, extensions and priorities ↗
- Asterisk special dialplan extensions ↗
- Asterisk 23 RaiseException application ↗
- Asterisk 23 EXCEPTION function ↗
- Asterisk 23 TryExec application ↗
Examples require adaptation to your topology. No live PBX or hardware testing is claimed.