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

Overriding Music on Hold:

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" />
⚠️ **GitHub.com Fallback** ⚠️