环境
linux 7.0
freeswitch版本:1.8.2
功能
-
转码:
当需要将两条腿分别使用不同的编码,需要经过一个转码过程分别转变成对方需要的编码,Freeswitch会将收到的音频数据转成一种中间格式,称为L16,即线性16位编码,这种格式可以与其他各种编码进行转换。
案例: 主被叫采用不同编码方式,使freeswitch实现转码功能,分机1000使用PCMA编码,分机1001使用PCMU编码。
方法:修改文件vars.xml,添加如下一行:
<X-PRE-PROCESS cmd="set" data="media_mix_inbound_outbound_codecs=true"/>
reloadxml
其他:杜金房老师的Freeswitch权威指南一书中指出只需将如下一行注释掉即可<param name="inbound-zrtp-passthru" value="true"/>
,但经过测试,协商失败,返回488。
网上翻阅其他博客有说需要将internal.xml两处修改为false,测试结果同样为488.<param name="inbound-late-negotiation" value="true"/> <param name="inbound-zrtp-passthru" value="true"/>
-
添加录音功能
FreeSwitch录音功能默认是关闭的,需要修改配置开启录音功能。
编辑/usr/localfreeswitch/conf/dialplan/default.xml
在<extension name="Local_Extension"> <condition field="destination_number" expression="^(10[01][0-8])$">
下面添加如下配置即可
<action application="set" data="RECORD_TITLE=Recording ${destination_number} ${caller_id_number} ${strftime(%Y-%m-%d %H:%M)}"/> <action application="set" data="RECORD_COPYRIGHT=(c) 2011"/> <action application="set" data="RECORD_SOFTWARE=FreeSWITCH"/> <action application="set" data="RECORD_ARTIST=FreeSWITCH"/> <action application="set" data="RECORD_COMMENT=FreeSWITCH"/> <action application="set" data="RECORD_DATE=${strftime(%Y-%m-%d %H:%M)}"/> <action application="set" data="RECORD_STEREO=true"/> <action application="record_session" data="/usr/local/freeSwitch/recordings/${strftime(%Y-%m-%d-%H-%M-%S)}_${destination_number}_${caller_id_number}.wav"/>
保存退出,F6重载配置生效。
-
增加会议室密码功能
编辑conf/autoload_configs/conference.conf.xml,取消如下两行注释
重新加载配置文件reloadxml reload mod_conference -
启用会议密码验证
编辑/usr/local/freeswitch/conf/dialplan/default.xml
<extension name="nb_conferences"> <condition field="destination_number" expression="^(30\d{2})$"> <action application="answer"/> **<action application="set" data="conference_enforce_security=true"/>** ‘default.xml增加此行’ <action application="conference" data="$1-${domain_name}@default"/> </condition> </extension>
-
新增用户,并将用户名设置为Jack
将1000.xml复制到1234.xml中。打开1234.xml,将所有1000都改为1234。并把effective_caller_id_name的值改为Jack,命令如下:
接下来,打开conf/dialplan/default.xml,找到下面一行,增加1234字段<condition field="destination_number" expression="^(10[01][0-9]|1234)$">
新增完成以后reloadxml文件,或者按F6使新的配置生效。
-
配置SIP网关拨打外部电话
配置外呼时,需要修改两个地方,路由规则以及出局规则。
路由规则路径为:/usr/local/freeswitch/conf/sip_profiles/external
新建xml文件,本文为:AC_243.xml<include> <gateway name="AC_243"> <param name="realm" value="172.20.8.243"/> <param name="proxy" value="172.20.8.243"/> <param name="register" value="false"/> <param name="register-transport" value="udp"/> </gateway> </include>
172.20.8.243为SBC或者语音网关的地址,还需要再SBC上添加对应的freeswitch的地址
出局规则(diaplan)路径为:/usr/local/freeswitch/conf/dialplan/
目录下有俩个文件:default.xml——-外呼规则
Public.xml———呼入规则
编辑default.xml,添加一条规则:加前缀9外呼,打外线。默认输入为呼内线<extension name="AC_243"> <condition field="destination_number" expression="^9(.*)$"> <action application="bridge" data="sofia/gateway/AC_243/$1"/> </condition> </extension>
-
配置呼入
奥科SBC+freeswitch的呼入。
SBC添加项
修改或添加SBC的呼入lan。IP修改为freeswitch的IP地址,freeswitch默认对应端口是5080,应添加SRD和sipinterface。切记语音编码改成711.729不支持
Freeswitch修改项
默认SBC和freeswitch添加trunk后。默认应该是不通的。会报如下错误
这是因为sbc默认是开着呼叫鉴权的,可以看到sbc的报错如下:
修改freeswitch的配置文件,将auth_calls改为false
路径为:/usr/local/freeswitch/conf/vars.xml
修改完成后,查看sbc还是会报错:Rejected by acl “domains”. Falling back to Digest auth.
这是因为freeswitch不接受外来域的请求,需要添加类似于白名单。
配置文件路径:/usr/local/freeswitch/conf/autoload_configs/acl.conf.xml -
新增呼叫组
先在conf\directory 目录下的default.xml文件定义一个组,比如下面的salse组:
<group name="sales"> <users> <user id="1000" type="pointer"/> <user id="1001" type="pointer"/> <user id="1002" type="pointer"/> <user id="1003" type="pointer"/> <user id="1004" type="pointer"/> </users> </group>
然后在conf\dialplan 目录下的default.xml 拨号计划里面加上:
<extension name="group_dial_sales"> <condition field="destination_number" expression="^2000$"> <action application="bridge" data="${group_call(sales@${domain_name})}"/> </condition> </extension>
这样用户拨打的时候整个组的人都会被呼叫。
-
Callcenter模块测试
1、在安装文件目录下,将modules.conf中的callcenter模块注释掉
2、安装callcenter模块
make mod_callcenter-install
安装过程遇到libtool版本不匹配,导致安装失败
wget http://mirrors.ustc.edu.cn/gnu/libtool/libtool-2.4.6.tar.gz
tar zxvf libtool-2.4.6.tar.gz && cd libtool-2.4.6
./configure —prefix=/usr
make && make install
make
autoconf -ivf
autoreconf —force —install
make
make install
make mod_callcenter-install
设置callcenter模块自动启动,取消注销callcenter模块
vim /usr/local/freeswitch/conf/autoload_configs/modules.conf.xml
3、编辑callcenter.conf.xml文件
vim /usr/local/freeswitch/conf/autoload_configs/callcenter.conf.xml
默认包含support@default队列
agent中的user后不能带@default,否则系统无法识别对应分机号码
tier:指定某一坐席归属哪一个队列
10.强制外显号码
在external/目录下添加网关配置文件规则
<include>
<gateway name="MRWG">
<param name="realm" value="192.168.1.231:5060"/>
<param name="register" value="false"/>
<param name="caller-id-in-from" value="true"/>
<param name="origination_caller_id_number" value="89113100"/>
<param name="origination_caller_id_name" value="89113100"/>
<param name="effective_caller_id_number" value="89113100"/>
<param name="effective_caller_id_name" value="89113100"/>
<param name="caller-id-in-from" value="false"/>
<param name="username" value="89113100"/>
<param name="password" value="not-used"/>
</gateway>
</include>
持续更新中…