VoIP.info Troubleshooting

Asterisk silence or noise wait never finishes, times out or advances early

Find the first divergence among loaded application, channel leg, received media, duration units, iterations, timeout, status handling and downstream dialplan.

Reviewed 2026-10-15Current Asterisk branch-23-generated WaitForSilence, WaitForNoise and BackgroundDetect references plus branch 22 WaitForSilence and WaitForNoise references reviewed October 15, 2026; installed branch, app_waitforsilence availability, exact channel, answered state, received voice frames, DSP classification, duration, iterations, timeout, return-variable contract and final call flow remain deployment specific; no host, module, dialplan, channel, packet, media frame, detector, endpoint or live call was inspected or testedAdvancedDocumentation based · not lab tested

Capture one wait and classify its actual symptom

Record timestamp and timezone, installed Asterisk branch, executed application, channel name, unique identity, linked identity, answer and bridge state, all arguments with units, start and end time, immediate status value, next priority and the caller-visible result. Redact caller data and secrets.

Classify the symptom as no return, timeout, early advance, late advance, wrong channel, missing or unexpected status, hangup, or correct classification followed by wrong downstream routing. Do not group all of these under detector sensitivity.

Prove module availability and loaded dialplan

Confirm the installed system exposes the selected application and inspect its local help. Then prove the running dialplan entered the expected context, extension and priority with the intended arguments. A line in a saved file is not proof that the loaded dialplan executed it.

Keep WaitForSilence() and WaitForNoise() distinct even though the generated documentation places both under app_waitforsilence. If the application or target priority is absent, correct that boundary before changing media or timing.

Follow media to the exact waiting channel

Establish whether relevant voice frames arrived on the channel while the application was active. Map caller and callee legs, Local-channel halves, direct-media state, bridges and any external media owner. Use bounded channel and RTP evidence appropriate to the deployment.

If no expected frames arrived, stay with negotiation, routing, address, firewall, codec, bridge or application ownership. A longer timeout or shorter required interval cannot classify frames that are not present on that channel.

Recalculate duration, iterations and timeout

Write the first argument in milliseconds, the iteration count as a separate integer and the optional timeout in seconds. Compare the configured values with observed start and end timestamps. Verify that copied variables contain the intended units and were not empty, inherited from another channel or changed by a subroutine.

A timeout bounds the application; it does not guarantee that every requested iteration completed. An early result can reflect a genuinely continuous classified interval, the wrong media leg or different effective values. A late result can reflect repeated interruption of the required continuous interval rather than a stalled dialplan.

Separate classification from speech and voicemail meaning

Compare the channel media interval with the actual business event. Continuous background tone, comfort noise, clipping, transcoding artifacts, echo, a muted source or a voicemail greeting can diverge from human notions of quiet or speech. Do not label a signal interval as a person, beep or completed announcement without separate evidence.

If the workflow needs talk-duration bounds during playback, inspect BackgroundDetect(). If it needs event notifications, inspect TALK_DETECT(). If it needs answering-machine classification, keep that decision and its application-specific result separate from a basic silence or noise wait.

Correct the first proved owner and repeat a bounded matrix

Correct only the first demonstrated divergence: loaded application, dialplan target, channel leg, media path, argument units, iteration count, timeout or status branch. Preserve rollback and remove temporary high-volume logging.

Repeat quiet, speech, background-noise, muted, one-way-audio and hangup cases as authorized, logging the exact channel and immediate result. Accept classification timing separately from downstream routing and listener outcome. No host, module, dialplan, channel, packet, media frame, detector, endpoint or live call was inspected or tested for this diagnostic.

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.