Music on Hold Sources Module Documentation
Table of Contents
- Module Overview (Technical)
- Module Overview (Commercial/Business)
- Module Overview (End User/Administrator)
- Configuration Sections
- Settings Reference
- Common Scenarios & Examples
- Limitations & Important Notes
- Troubleshooting Tips
- Glossary
---
1. Module Overview (Technical)
What Are Music on Hold Sources?
Music on Hold (MOH) Sources is a hold music configuration module that manages audio played when callers are placed on hold. It supports uploaded files, external streams, and chime intervals with configurable play modes.
Architecture
Key Tables
| Table | Purpose |
|---|---|
public.moh_sources | MOH source definitions |
Key Files
| File | Description | |
|---|---|---|
modules/mohSources/ | Frontend module | |
/var/lib/freeswitch/storage/... | Uploaded audio files |
2. Module Overview (Commercial/Business)
Business Value
MOH Sources provides customized hold experience:
| Without MOH Sources | With MOH Sources | |
|---|---|---|
| Default silence | Custom music | |
| No branding | Branded audio | |
| Single track | Multiple playlists | |
| No announcements | Chime intervals |
Use Cases
- Branded Hold Music
- Professional image
- Multiple Playlists
- Various customer segments
- Announcement Chimes
- Wait time updates
- External Streams
- Live content
Feature Highlights
| Feature | Benefit | |
|---|---|---|
| File Upload | Custom audio files | |
| External Streams | Live radio/podcast | |
| Chime Intervals | Periodic announcements | |
| Play Modes | Linear, shuffle, random | |
| Priority | Source ordering | |
| Multi-format | WAV, MP3, OGG |
3. Module Overview (End User/Administrator)
What Can You Do?
- Upload audio files (WAV, MP3, OGG)
- Configure external stream URLs
- Set chime intervals for announcements
- Choose play modes (linear, shuffle, random)
- Set source priority
- Enable/disable sources
- Test streams in browser
MOH Sources Interface
Create/Edit View
Quick Tips
TIP
Class Name: Use in local_stream://domains/${domain}/${class}.TIP
Shuffle Mode: Randomly orders playlist on each call.NOTE
File Limits: Max 100MB per file, WAV/MP3/OGG formats.---
4. Configuration Sections
Basic Information
| Field | Description | |
|---|---|---|
| Name | Friendly display name | |
| Class Name | Stream identifier | |
| Description | Optional notes | |
| Priority | Lower = plays first | |
| Enabled | Active/inactive | |
| Source Type | File, Music, Stream, Chime |
Source Types
| Type | Description | |
|---|---|---|
| File | Single uploaded audio file | |
| Music | Multiple files with play mode | |
| Stream | External HTTP/Icecast/Shoutcast | |
| Chime | Periodic jingle insertions |
Play Modes
| Mode | Description | |
|---|---|---|
| Linear | Play in order | |
| Shuffle | Random order per session | |
| Random | Random each play |
5. Settings Reference
File/Music Source
| Setting | Description | |
|---|---|---|
| Audio Files | Uploaded audio files | |
| Mode | Linear, Shuffle, Random | |
| Interval | Seconds per track (1-120) |
Stream Source
| Setting | Description | |
|---|---|---|
| Stream URL | HTTP/HTTPS/Icecast URL | |
| Test Stream | Browser playback test |
Chime Source
| Setting | Description | |
|---|---|---|
| Chime List | Comma-separated jingle files | |
| Chime Frequency | Seconds between chimes (10-600) |
Supported Formats
| Format | Extension | Notes | |
|---|---|---|---|
| WAV | .wav | Best quality | |
| MP3 | .mp3 | Compressed | |
| OGG | .ogg | Open format |
6. Common Scenarios & Examples
Scenario 1: Simple Hold Music
- Create new MOH source
- Name = "Default Hold"
- Class = "default"
- Type = File
- Upload audio file
- Enable and save
Scenario 2: Music Playlist
- Create new MOH source
- Name = "Sales Playlist"
- Class = "sales"
- Type = Music
- Upload multiple files
- Mode = Shuffle
- Interval = 30 seconds
- Save
Scenario 3: Internet Radio
- Create new MOH source
- Name = "Jazz Radio"
- Class = "radio"
- Type = Stream
- Stream URL = http://example.com/stream.mp3
- Test stream
- Enable and save
Scenario 4: Position Announcements
- Create new MOH source
- Name = "Queue Position"
- Class = "announce"
- Type = Chime
- Chime List = position.wav,thankyou.wav
- Chime Frequency = 60 seconds
- Save
---
7. Limitations & Important Notes
Technical Notes
NOTE
Stream Address: local_stream://domains/${domain}/${class}NOTE
mod_local_stream: Uses FreeSWITCH local stream module.WARNING
File Size: Maximum 100MB per file.Best Practices
- Optimize Audio: Convert to 8kHz mono for bandwidth
- Test Streams: Verify external URLs work
- Reasonable Intervals: 15-60 seconds typical
- Priority Planning: Lower numbers play first
- Backup Files: Keep originals
Stream URL Formats
| Type | Example | |
|---|---|---|
| HTTP | http://server.com/stream.mp3 | |
| HTTPS | https://server.com/stream.mp3 | |
| Icecast | http://icecast.server:8000/stream | |
| Shoutcast | http://shout.server:8000/stream |
8. Troubleshooting Tips
Common Issues
| Symptom | Possible Cause | Solution | |
|---|---|---|---|
| No audio | Source disabled | Enable source | |
| Wrong music | Wrong class | Check class name | |
| Upload fails | File too large | Reduce file size | |
| Stream fails | Bad URL | Test stream in browser | |
| Silence | Invalid format | Convert to WAV/MP3 |
Test MOH Stream
Check Uploaded Files
---
9. Glossary
| Term | Definition | |
|---|---|---|
| MOH | Music on Hold | |
| Class | Stream identifier | |
| local_stream | FreeSWITCH streaming module | |
| Chime | Periodic announcement | |
| Shuffle | Random play order | |
| Icecast | Open source streaming server |
Lua Script Status ℹ️
Configuration Module
| Component | Status |
|---|---|
| MOH Sources | ℹ️ Configuration module - audio played via local_stream |
---
Documentation last updated: January 2026