吴伟贤のBlog

Feed Rss

freeswitch cookbook 第5章(五) Music on hold 保持音乐

07.20.2013, freeswitch, by .

转自: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}"/>

——————————————————————————————————————-

评论已关闭。