1.批量创建用户
用户配置文件在conf/directory/default/目录下, 每个用户对应一个XML配置文件
Freeswitch默认提供了1000~1019这20个用户, 如果手动创建另一个用户如2000,只需以1000位模板, 将该文件复制到1020.xml
把1020.xml中出现1000的地方都替换成1020即可
sed -e "s/1000/1020" 1000.xml > 1020.xml
如果要创建一批用户怎么办?
for i in `seq 1020 1039`; do sed -e "s/1000/$i" 1000.xml > $i.xml ; done
seq 产生一个序列, 两个参数分别是序列的起止点, for循环一次取得每个值,并赋给i,
Freeswitch源代码目录script/perl目录有个add_user脚本
./add_user 1020
2.用Freeswitch实现IVR
IVR(交互式语音响应), 电话语音菜单
使用分机, 拨打5000,
欢迎来到Freeswitch, 1 进入Freeswitch会议, 2 进入回音, 3 等待会议, 4 转到开发者...
1)最简单的菜单
一些廉价的小企业交换机通常提供这样的功能, 当电话接入时, 会播放:
欢迎致电某某公司, 请直拨分机号, 查号请拨0
IVR默认的配置文件为 conf/autoload_configs/ivr.conf.xml
它装入conf/ivr_menus/目录下所有的XML文件
系统有个示例的IVR配置, 叫demo_iver, 也就是我们听到的5000
<include>
<menus>
<menu name="welcome"
greet-long="welcome.wav"
greet-short="welcome_short.wav"
invalid-sound="ivr/ivr-that_was_an_invalid_entry.wav"
exi-sound="voicemail/vm-goodbye.wav"
timeout="15000"
max-failures="3"
max-timeouts="3"
inter-digit-timeout="2000"
digit-len="4">
</menu>
</menus>
</include>
3.按时间进行路由
上班时间路由到一个IVR, IVR报完欢迎语后,可以引导转入人工总机
下班后, 来电转到另一个IVR, 工作全部电脑自动处理
4.配置中文语音提示
Freeswitch默认提示音都是英文的
中文语音包
http://wiki.freeswitch.org/wiki/Language_Files#Chinese。
1)最简单的实现方案
在Freeswitch中, 默认的声音文件放在Freeswitch安装目录sounds下, 不同语种的文件以不同的目录分类存放
/usr/share/freeswitch/sounds
en/us: 美国英语
callie 是人名,这些录音由callie录
ascii: 代表ASCII字符
digits 代表数字
8000Hz 说明这些文件以8000Hz的采样率存放的
最简单的方式,就是将这些文件直接用中文语音包对应的文件替换
2)使用sound_prefix
在Freeswitch配置文件中, 有个sound_prefix变量用于定义声音文件的具体路径,在vars.xml
<X-PRE-PROCESS cmd="set" data="sound_prefix=$${sounds_dir}/en/us/callie"/>
改变变量的值也能改变大部分声音文件的参考位子
<X-PRE-PROCESS cmd="set" data="sound_prefix=$${sounds_dir}/zh/cn/link"/>
也可以在Dialplan对每个Channel进行改变
<action application="set" data="sound_prefix=$${sounds_dir}/zh/cn/link"/>
另外该变量可以设置到用户目录中, 当特定的用户拨打电话时,就使用该变量, 修改1002.xml
<variable name="sound_prefix" value="$${sounds_dir}/zh/cn/link"/>
拨打1002,就会听到1234, 其他用户,听到one two three
3)使用Phrase
上面的方式只能改变playback使用的声音,而Freeswitch大部分的语音提示,如IVR和Voicemail都使用Phrase实现
1.认识Phrase
为了屏蔽各种不同语言提示的差异性, Freeswitch实现了Phrase(短语)框架
可以将不同语言的日期, 时间, 货币及数字等以相同语法表示, 并在必要时结合TTS实现更强大的语音提示
在默认的IVR配置中, 就使用了Phrase, 如在ivr_menus/demo_ivr.xml中
greet-long="phrase:demo_ivr_main_menu"
该Phrase是在conf/lang/en/demo/demo_ivr.xml中定义的一个宏,
可以拨打9386将播放一些有意思的声音, 这些声音都是在funny_prompts这个Phrase实现的
2.中文配置Phrase
复制整个目录到zh
cd conf/lang
cp -R en zh
cd zh
mv en.xml zh.xml
中文框架配置完成, 修改zh.xml
将其中的name和say-module都修改为zh,并把sound-prefix修改为中文录音文件的路径
<language name="zh" sya-module="zh"
sound-prefix="$${sounds-dir}/zh/cn/link"
tts-engine="mod_tts_commandline" tts-voice="Ting-Ting">
告诉Freeswitch, 中文配置, conf/freeswitch.xml
<X-PRE-PROCESS cmd="include" data="lang/en/*.xml"/>
在该行后面加入如下行
<X-PRE-PROCESS cmd="include" data="lang/zh/*.xml"/>
3.说中文
Freeswitch的Say接口, 可以通过一些预先录制的声音说出一些常用的词语组合, 日期,时间,货币,数字等
如果需要支持中文, 就需要mod_say_zh模块, 该模块默认不被编译也不加载,需要我们先编译,到Freeswitch源代码目录
make mod_say_zh-install
load mod_say_zh
为了让Freeswitch启动时自动加载该模块,需要在conf/autoload_configs/modules将下列注释去掉,让Freeswitch自动加载该模块
<load module="mod_say_zh"/>
4.使用中文语音提示
为了能播放中文提示,还需要在Dialplan中指定language或default_language通道变量
修改5000对应的Dialplan
<action application="set" data="language=zh"/>
<extension name="ivr_demo">
<condition field="destination_number" expression="^5000$">
<action application="set" data="language=zh"/>
<aciton application="answer"/>
<action application="sleep" data="2000"/>
<action application="ivr" data="demo_ivr"/>
</condition>
</extension>
该变量也可以加到用户目录, 比如,我们可以在1002的用户配置文件1002.xml的variables标签添加如下配置
<variable name="language" value="zh"/>
<variable name="default_language" value="zh"/>
也可以将上述文件添加到conf/directory/default.xml中, 对该域的所有用户生效
5.录音
1.单腿录音
呼叫1000, 1000接听后直接录音
originate user/1000