转自:http://www.8000hz.com/archives/89.html
Music on hold
保持音乐
保持音乐(MOH)是现代电话系统中常见的功能. FreeSWITCH可以让你有许多不同的保持音乐选择.
Getting ready
如果你需要自定义MOH, 你需要一些音乐文件. 而且, 如果你想用在保持音乐中的文件格式是MP3,那么你需要一个可以把MP3转成标准WAV文件的工具. 网站 http://www.mpg123.de上有一个免费的工具. 你还需要一个文件编辑器以及一个注册到你FreeSWITCH上的电话.
How to do it…
首先从FreeSWITCH的下载站点安装默认的保持音乐. Linux/unix用户在FreeSWITCH的源码目录中执行以下命令:
make cd-moh-install
在windows上, 声音文件已经作为MSVC解决方案文件的一部分且编译时自动安装好了.
一旦声音文件安装完毕, 你可以通过拨打9664来确定他们是否安装正常.(不需要reloadxml或系统重启).
How it works…
刚才执行的make命令安装了8KHz, 16kHZ, 32kHZ和48kHZ采样率的保持音乐文件(windows编译时同样安装了).
default拨号方案中的extension 9664会播放默认的保持音乐给主叫. 音乐是由模块mod_file_stream提供的. 通过添加其他的流就可以在你的系统上自定义保持音乐了.
There’s more…
让我们创建一个可选的保持音乐源和测试它.
把你想使用的MP3或WAV文件拷贝到FreeSWITCH服务器上的一个新子目录中.
在这个例子中, 我们会下载几首无版权费用的音乐以及一个声音片断, 还有我们会使用mpg123工具把它们转换为WAV格式.
首先创建一个保存我们新声音文件的目录. 在Linux/Unix做法如下:
mkdir /usr/local/freeswitch/sounds/music/custom1 cd /usr/local/freeswitch/sounds/music/custom1
拷贝你的MP3文件到这个目录中. 或者你可以下载一些免版权的音乐:
wget http://music.incompetech.com/royalty-free/Skye%20Cuillin.mp3 wget http://music.incompetech.com/royalty-free/Parisian.mp3 wget http://music.incompetech.com/royalty-free/credits%20sounder.mp3
现在转换MP3文件到WAV文件格式和删除原始的MP3文件.
for i in *.mp3; do mpg123 -m -r 8000 -w "`basename "$i" .mp3`".wav "$i"; done rm *.mp3
现在你有了一些可以用作声音源的8kHz的WAV文件. 下一步就是创建实际文件流.
打开文件conf/autoload_configs/local_stream.conf.xml, 然后添加以下新的流定义”
<directory name="custom1" path="$${sounds_dir}/music/custom1"> <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>
保存文件退出.打开conf/dialplan/default/01_Custom.xml和添加以下extension:
<extension name="hold_music"> <condition field="destination_number" expression="^96642$"> <action application="playback" data="${custom1}"/> </condition> </extension>
保存文件退出. 最后我们需要创建一个全局变量${custom1},在任何地方播放我们自定义的保持音乐时都可以使用它. 打开conf/vars.xml文件, 添加以下行:
<X-PRE-PROCESS cmd="set" data="custom1=local_stream://custom1"/>
保存文件退出. 进入fs_cli然后执行reloadxml或按F6.
当改动本地流定义时你需要重新加载local_stream模块, 在fs_cli中执行:
reload mod_local_stream
模块重新加载好, 执行以下命令:
show_local_stream
在本地流列表中应该会有你的新”custom1”流:
custom1,/usr/local/freeswitch/sounds/music/custom1
现在你可以拨打 96642, 然后你可以听到你的新音乐源.
你可以使用 ${custom1} 作为保持音乐(MOH),回铃音和呼转回铃音的源.
例子:
<action application="set" data="ringback=${custom1}"/> <action application="set" data="transfer_ringback=${custom1}"/> <action application="set" data="hold_music=${custom1}"/>
——————————————————————————————————————-