FreeSWITCH的默认配置就是一个小型的企业通信PBX,因而,配置起来相当简单。
FreeSWITCH是跨平台的,因而大家可以选用适合自己的平台。
Windows平台是大家在平时办公应用中使用最广泛的平台,FreeSWITCH在Windows上安装最简单:
完成后,选择”开始菜单”->“所有程序”->“FreeSWITCH”->“FreeSWITCH”便可以启动FreeSWITCH了,启动后的界面如图所示:
如果安装过程中你没有修改默认安装路径的话,那么FreeSWITCH的实际安装路径是:c:\ProgramFiles\FreeSWITCH,配置文件在该目录的conf目录下。
在Linux上安装要稍微复杂一些,但对于有经验的Linux系统管理员来说,这都不是事。首先,FreeSWITCH有基于Debian和Centos/Redhat的安装包,可以很方便的安装。当然,如果喜欢折腾的管理员也可以自己从源代码编译。
下面,我们以Debian为例讲一个基本的安装方法:
虽然FreeSWITCH可以装在类似Ubuntu、CentOS、Redhat、等Linux发行版上,但是,Debian是官方推荐的系统,安装起来都更方便一些。
1)首先更新源列表
apt-getupdate2)然后安装所需依赖包
apt-getinstallautoconfautomakedevscriptsgawkg++git-corelibjpeg-dev\libncurses5-devlibtoolmakepython-devgawkpkg-configlibtiff5-dev\libperl-devlibgdbm-devlibdb-devgettextlibssl-devlibcurl4-openssl-dev\libpcre3-devlibspeex-devlibspeexdsp-devlibsqlite3-devlibedit-devlibldns-dev3)安装FreeSWITCH
方法一、使用deb包安装
1)从git地址下载源码
./bootstrap.sh./configuremakeinstallln-sf/usr/local/freeswitch/bin/freeswitch/usr/bin/ln-sf/usr/local/freeswitch/bin/fs_cli/usr/bin/启动FreeSWITCH安装完成后,可以使用以下命令来启动FreeSWITCH:
freeswitch-nc以下命令可以连接到FreeSWITCH控制台,进行各种操作:
以潮流(GrandStream)话机GXP2130(型号)为例,它的配置界面如下图所示。其中“账号名”可以随便填,“SIP服务器”中输入你的IP地址,“SIP用户ID”、“认证ID”及“名称”都填入1003,“密码”也是默认的1234。点击保存并提交后即可注册。潮流话机的注册状态是在单独的“状态”页面中显示的。
这里面要填写的账号信息有以下几个选项:
FreeSWITCH默认的配置就具备比较完善的PBX功能,下面介绍下我们注册多个话机后,体验以下话机功能。
呼叫转移功能是在办公应用中经常用到的功能。转移分为盲转和协商转两种。
所谓盲转,是指下面这种场景:首先A与B已建立通话,这时候B想把A转接给C。这里,B称为Transferor,它是转接的发起者;而A称为Transferee,它是被转接的一方;C称为Target,是转接的目的地。转接成功后B与C通话。
潮流话机(GXP2130)上的操作:
1)用户A与用户B建立通话。2)用户A按TRANSFER键,输入用户C的号码后按SEND键发送呼叫。3)当前通话被无条件转移至用户C。
此时B如果想退出A与C的通话,则可以发送REFER消息,让服务器把通话中的B替换为C。该消息与盲转不同的是,它带了Replaces参数,如下:
Refer-To:sip:1002@192.168.1.118Replaces=1388923627@192.168.1.110;to-tag=NDj261X80jpKF;from-tag=1013380895>潮流话机(GXP2130)上的操作:
开始会议
方法一:步骤1.会议发起者使用一条线路与参与者A建立通话连接。步骤2.按另一路线路按键,选择相同账号,与参与者B建立通话连接,此时参与者A的通话被保持。步骤3.按CONF键发起会议。步骤4.按线路按键将相应的线路加入会议。步骤5.重复步骤2到步骤4,可以将更多的参与者添加到会议。
方法二:步骤1.会议发起者使用一条线路与参与者A建立通话连接。步骤2.按CONF键发起会议,输入参与者B的号码并发送。步骤3.与参与者B建立通话后按CONF键或根据屏幕提示按下“会议呼叫”对应的软按键。步骤4.重复步骤2和步骤3,可以将更多的参与者添加到会议。
取消会议
按CONF后,如果用户决定不添加任何参与者进入会议,则再次按CONF,就恢复到正常通话状态了。
分裂和重建会议
会议过程中发起者按下HOLD键将会议成员置为保持状态,此时会议分裂,屏幕上出现“重建会议”选项。按下“重建会议”对应的软按键后会议恢复或者按下保持中的线路键与其他成员单独通话。
结束会议
步骤1.会议发起者按HOLD键结束会议,发起者与参与者之间的通话转为呼叫保持。按线路按键可以与相应的参与者进行单独通话。步骤2.会议发起者结束通话,则会议中的各方均断开通话连接。
GXW4216网关有一个简单的Web配置界面,如下图所示:
a)启用模板:是。b)SIP服务器:填入FreeSWITCH服务器的IP地址。c)次SIP服务器:这里是一个备份服务器,可以不填。
2)切换到“FXS端口”配置页面,配置端口的账号注册信息。
a)SIP用户ID:填入注册的账号,在这里使用FreeSWITCH默认提供的账号1000。b)认证ID:一般跟账号一样。c)密码:填入账号的密码。d)用户名:即SIP中显示的名字,可以随便填写。e)模板:这里我们以模板一为例,所以选择“模板一”。
这里有一个配置要介绍下,潮流网络近日针对中国呼叫中心及企业通讯市场的语音网关需求和使用环境特点,推出1.0.5.5软件版本。本次软件版本充分考虑到中国企业网络接入及高并发的呼叫中心应用场景,量身定制做了全面优化工作,以符合中国呼叫中心及企业大容量的并发呼叫使用需求,并且针对中国用户提出配置操作复杂问题,进行了统一优化工作,提供一键优化的简洁配置方法,用户只需选择ChinaITSP模式,即可轻松完成中国制式配置,这将大大改善国内模拟话机的兼容使用。
配置方式:
1)进入GXW42XX的高级配置—>系统功能配置页面,修改定制部署方案为“ChinaITSP”模式,保存应用,如下图所示:
2)保存修改信息,并重启设备应用修改。
首先在FreeSWITCH里的dialplan下设置路由,默认路径:/usr/local/freeswitch/conf/dialplan/default.xml,以9为出局码,网关地址:192.168.1.10,具体如下:
我们使用的是潮流单口网关HT503,HT503的FXO端口注册到FreeSWITCH服务器上,当出局呼叫通过FXO端口时,通话将会从FreeSWITCH呼叫到外部。下面我们来看下HT503如何对接FreeSWITCH。
一般情况下,配置账号注册需要配置以下选项,具体说明如下:
IVR系统默认的配置文件为conf/autoload_configs/ivr.conf.xml,它装入conf/ivr_menus/目录下所有的XML文件。系统有一个示例的IVR配置,叫demo_ivr,也就是我们刚才拨5000听到的那个。为了实现我们的目标菜单,我们创建一个XML配置文件conf/ivr_menus/welcome.xml,内容如下:
以上菜单设定好后,需要在控制台中执行reloadxml(或按F6键)使配置生效。
配置完成后就可以在控制台上进行如下测试(呼叫1001,接听后进入ivr菜单):
freeswitch>originateuser/1001&ivr(welcome)测试成功后,你就可以配置Dialplan把并户来话转接到菜单了,在Dialplan中加入一个extension(请注意,你需要加到正确的DialplanContext中,如果不确定应该加到哪个Context中的话,在default和public中都加上会比较保险。):
在实现应用中,FreeSWITCH默认提供的20个账号可能不够用;或者,我们需要不同的号码段(如使用600~699号码段)作为分机号。这时,就需要添加一个新的账号。
我们已经了解现有的用户配置文件是存放在FreeSWITCH安装目录的conf/directory/default目录下,每个用户对应一个XML配置文件,如1000.xml即包含了1000这个用户的配置文件。例如我们要添加6001这个用户,只需以1000.xml为模板,将该文件中的内容复制为6001.xml,然后把6001.xml文件中的所有出现1000的地方全部替换成6001即可。
当然,除了手工的复制和替换外,上述步骤可以在UNIX系统上的Shell中使用下列命令完成:
#sed-e"s/1000/6001/"1000.xml>6001.xml批量添加账号如果需要添加很多账号,很显然一个一个的添加是不现实的。
其实也很简单,如果在Linux系统下,我们只需要用一下Shell中的for循环就可以了。比如我们要创建6020~6039这20个用户,具体的Shell命令如下:
#foriin`seq60206039`;dosed-e"s/1000/$i/"1000.xml>$i.xml;done使用Windows平台的人,可以安装UnxUtils,就可以使用大部分的UNIX命令了。如我们可以使用如下“.bat”脚本完成同样的添加用户的功能(将下列内容存到与1000.xml相同的目录下的扩展名为“.bat”的文件中,用鼠标双击即可执行):
for/L%%iin(6020,16039)dosed-e"s/1000/%%i"1000.xml>%%i.xml创建完用户配置文件后就可以在FreeSWITCH中使用reloadxml命令使之生效了。配置生效后,使用这些用户注册和呼出都没有问题,如果这些用户也需要做被叫的话,那就需要修改Dialplan,增加到这部分用户的路由。如,我们增加了6020~6039这20个用户后,可以简单地将默认的Dialplan中的正则表达式“10[01][0-9]$”改为“60[0-3][0-9]$”,就可以包含我们新创建的用户了。更改后的部分内容如下:
1)配置视频通话:
目前FreeSWITCH支持的视频编解码有H261、H263、H263-1998(H263+)、H263-2000(H263++)、H264、VP8等。具体应该使用哪种或哪几种编解码需要看SIP终端的支持。需要注意的是,与音频编解码不同,FreeSWITCH中的视频编解码目前仅支持透传,即FreeSWITCH仅将通话中一方的视频原样送到另一方去,而不做任何编码转换。这就要求进行视频通信的双方要使用一致的编解码。
FreeSWITCH支持的媒体编码默认是在conf/vars.xml中定义的,读者可以在该文件中找到类似下面的配置:
配置完毕后可以使用如下命令查看是否生效(其中“CODECSIN”和“CODECSOUT”分别代表入局和出局时使用的编解码):
freeswitch>sofiastatusprofileinternal===========================================================================================================NameinternalCODECSING722,PCMU,PCMA,GSM,G729,H264CODECSOUTPCMU,PCMA,GSM,G729,H264配置了正确的视频编解码后,就可以在视频话机之间进行视频通话了。
2)视频录像与回放
FreeSWITCH中支持录音,有了视频通话后,大家就希望支持录像。与录音相比,录像要复杂一些。录像数据要按一定的格式存储在文件中,而这些文件格式有好多种。不同的文件格式称为不同的容器(Container),在这些容器中,通常会包含多个音频轨道(Track)和视频轨道,有的还含有同步信息。
目前,处理视频格式最好的开源软件就是ffmpeg,暂时还没有人将它与FreeSWITCH集成(这样说也不全对,因为笔者已经在做了)。FreeSWITCH中实现了一个简单的mod_fsv模块,提供FreeSWITCH中的录像及回放支持。它不依赖于任何其他的视频处理库,而是自己定义了一种私有的格式,将音频轨道用L16编码的数据保存,视频轨道则将整个RTP原始包都保存进去。
在默认的Dialplan中,也提供了录像与回放的例子。拨打9193可以通过record_fsvApp进行录像,Dialplan的设置如下:
录制完成后,就可以拨打9194播放刚刚录制的录像了,它是使用play_fsvApp实现的: