Music On Hold in mod_callcenter in FreeSWITCH - Omid-Mohajerani/freeswitch GitHub Wiki
Queues in FreeSWITCH are defined in conf/autoload_configs/callcenter.conf.xml
vim /etc/freeswitch/autoload_configs/callcenter.conf.xml
A sample Queue defintion
<queues>
<queue name="support@default">
<param name="strategy" value="longest-idle-agent"/>
<param name="moh-sound" value="$${hold_music}"/>
<!--<param name="record-template" value="$${recordings_dir}/${strftime(%Y-%m-%d-%H-%M-%S)}.${destination_number}.${caller_id_number}.${uuid}.wav"/>-->
<param name="time-base-score" value="system"/>
<param name="max-wait-time" value="10"/>
<param name="max-wait-time-with-no-agent" value="0"/>
<param name="max-wait-time-with-no-agent-time-reached" value="5"/>
<param name="tier-rules-apply" value="false"/>
<param name="tier-rule-wait-second" value="300"/>
<param name="tier-rule-wait-multiply-level" value="true"/>
<param name="tier-rule-no-agent-no-wait" value="false"/>
<param name="discard-abandoned-after" value="60"/>
<param name="abandoned-resume-allowed" value="false"/>
</queue>
</queues>
Music On Hold is defined with moh-sound parameter
<param name="moh-sound" value="$${hold_music}"/>
$${hold_music} is defined in the conf/vars.xml
<X-PRE-PROCESS cmd="set" data="hold_music=local_stream://moh"/>
which points to sound files defined in conf/autoload_configs/local_stream.conf.xml
vim /etc/freeswitch/autoload_configs/local_stream.conf.xml
<configuration name="local_stream.conf" description="stream files from local dir">
<!-- fallback to default if requested moh class isn't found -->
<directory name="default" path="$${sounds_dir}/music/8000">
<param name="rate" value="8000"/>
<param name="shuffle" value="true"/>
<param name="channels" value="1"/>
<param name="interval" value="20"/>
<param name="timer-name" value="soft"/>
<!-- list of short files to break in with every so often -->
<!--<param name="chime-list" value="file1.wav,file2.wav"/>-->
<!-- frequency of break-in (seconds)-->
<!--<param name="chime-freq" value="30"/>-->
<!-- limit to how many seconds the file will play -->
<!--<param name="chime-max" value="500"/>-->
</directory>
<directory name="moh/8000" path="$${sounds_dir}/music/8000">
<param name="rate" value="8000"/>
<param name="shuffle" value="true"/>
<param name="channels" value="1"/>
<param name="interval" value="20"/>
<param name="timer-name" value="soft"/>
</directory>
<directory name="moh/16000" path="$${sounds_dir}/music/16000">
<param name="rate" value="16000"/>
<param name="shuffle" value="true"/>
<param name="channels" value="1"/>
<param name="interval" value="20"/>
<param name="timer-name" value="soft"/>
</directory>
<directory name="moh/32000" path="$${sounds_dir}/music/32000">
<param name="rate" value="32000"/>
<param name="shuffle" value="true"/>
<param name="channels" value="1"/>
<param name="interval" value="20"/>
<param name="timer-name" value="soft"/>
</directory>
<directory name="moh/48000" path="$${sounds_dir}/music/48000">
<param name="rate" value="48000"/>
<param name="shuffle" value="true"/>
<param name="channels" value="1"/>
<param name="interval" value="10"/>
<param name="timer-name" value="soft"/>
</directory>
</configuration>
$${sounds_dir} = /usr/share/freeswitch/sounds/
root@uatserver:/usr/share/freeswitch/sounds/music$ tree
.
├── 16000
│ ├── danza-espanola-op-37-h-142-xii-arabesca.wav
│ ├── partita-no-3-in-e-major-bwv-1006-1-preludio.wav
│ ├── ponce-preludio-in-e-major.wav
│ └── suite-espanola-op-47-leyenda.wav
├── 32000
│ ├── danza-espanola-op-37-h-142-xii-arabesca.wav
│ ├── partita-no-3-in-e-major-bwv-1006-1-preludio.wav
│ ├── ponce-preludio-in-e-major.wav
│ └── suite-espanola-op-47-leyenda.wav
├── 48000
│ ├── danza-espanola-op-37-h-142-xii-arabesca.wav
│ ├── flac
│ │ ├── danza-espanola-op-37-h-142-xii-arabesca.flac
│ │ ├── partita-no-3-in-e-major-bwv-1006-1-preludio.flac
│ │ ├── ponce-preludio-in-e-major.flac
│ │ └── suite-espanola-op-47-leyenda.flac
│ ├── partita-no-3-in-e-major-bwv-1006-1-preludio.wav
│ ├── ponce-preludio-in-e-major.wav
│ └── suite-espanola-op-47-leyenda.wav
└── 8000
├── danza-espanola-op-37-h-142-xii-arabesca.wav
├── partita-no-3-in-e-major-bwv-1006-1-preludio.wav
├── ponce-preludio-in-e-major.wav
└── suite-espanola-op-47-leyenda.wav
cc_moh_override overrides the queue's default Music On Hold.
example usage
<action application="set" data="cc_moh_override=/usr/share/freeswitch/sounds/en/us/callie/misc/48000/misc-chicago_each_summer.wav" />