Freeze one prompt on one exact call path
Record the timestamp and timezone, Asterisk linked identifier, ingress or originating extension, matched FreePBX destinations, exact prompt ID, expected spoken language, observed result and authorized listener. Classify whether the prompt is consistently wrong, mixed with the default language, absent or silent, distorted, stale after an update, or wrong only on one route, user or node.
Preserve one known-good prompt on the same call and, when safe, the same prompt on a known-good path. Do not change the global default, reinstall all packs or overwrite recordings before the failing branch is identified.
Prove the effective channel language before playback
Follow the live call through each language owner: global default, inbound-route selection, user or extension attribute, Languages destination and any later dialplan change. Current FreePBX 17 Languages source generates a destination that sets the channel language and continues, and also supplies managed route and user hooks. A saved GUI value or installed pack is not runtime channel evidence.
Inspect the generated and loaded dialplan through supported tools and correlate the effective language with the exact channel immediately before playback. If the intended branch never ran or a later boundary overwrote it, remain at call-flow selection rather than changing audio files.
Expand the exact lookup and fallback chain
Starting from the effective channel language and requested prompt ID, enumerate Asterisk's documented progressive lookup for underscore-separated codes and the final base-directory search. Compare the first existing candidate with the language the listener heard. A broader fallback can produce valid audio in the wrong language, while a missing base prompt can produce silence or an application error.
Keep core, extra and custom prompts distinct. Sangoma documents language-specific custom directories and a System Recordings custom location; a custom file in the wrong tree is not repaired by renaming a packaged core prompt. Record the selected fallback rather than treating it as random behavior.
Reconcile the installed pack, file and format
Verify the installed Sound Languages module and signature, selected language, core or extra package, package version and installed formats on the same PBX node. Then prove the expected file exists in the effective sounds tree with appropriate ownership and readability. Repository metadata and a successful package transaction do not establish local file state.
Compare the available file formats with the call codec, loaded format and codec modules and current translation path. A present file can still be unusable or silent, and an available language-format pair does not prove that playback chose it. Avoid installing every format or broadening filesystem permissions as a diagnostic shortcut.
Prove selected media and audible delivery
Correlate the exact channel, application or media URI, requested prompt, selected candidate, playback start and completion, delivered media frames and authorized listener result. If the chosen file is correct but no useful audio is delivered, move to codec, translation, bridge and endpoint media evidence. If audio is delivered but the words are wrong, compare the file content and release manifest under the organization's recording approval process.
Do not infer spoken content from a filename, optional text label or package description. Retain only the minimum call and audio evidence allowed by privacy policy, and do not place caller data or recordings in general-purpose tickets.
Repair the smallest boundary and retest fallback
Correct only the demonstrated owner: language code, route or user override, Languages destination order, installed pack, missing file, custom-recording placement, file access, format support or playback path. Submit and Apply Config through the supported FreePBX workflow when managed state changes; do not edit generated dialplan as the durable fix.
Retest the original prompt, a common packaged prompt, the intended explicit language, default language, one deliberate missing-localization fallback and an unaffected route. Record rollback and remove temporary logging. No PBX, module, prompt, channel, file, playback or call was inspected or tested for this guide.
Separate prompt-pack lookup from a reusable System Recording
When the failing media is a named FreePBX System Recording, use the recording-specific diagnostic to preserve its consumer, ordered media and replacement history. Continue here when the failure belongs to channel language, installed prompt packs or Asterisk fallback.
Sources & applicability
Primary references for the technical details above. Operational examples and planning checklists are VoIP.info editorial guidance.
- Sangoma Sound Languages user guide (PBX GUI 13) ↗
- Sangoma Languages module user guide (PBX GUI 13) ↗
- FreePBX Sound Languages release/17.0 metadata ↗
- FreePBX Languages release/17.0 metadata ↗
- FreePBX Languages release/17.0 dialplan source ↗
- Asterisk sound-prompt search by channel language ↗
- Sangoma FreePBX System Recordings module ↗
- Sangoma System Recordings Module User Guide ↗
- Sangoma System Recordings GraphQL APIs ↗
- FreePBX System Recordings source ↗
- FreePBX IVR release/17.0 metadata ↗
- Asterisk Playback application ↗
- Asterisk BackGround application ↗
Examples require adaptation to your topology. No live PBX or hardware testing is claimed.