freeswitch源码定制功能,Linux下编译安装和使用

环境准备

CentOS系统需要安装gcc
查看是否已安装:
rpm -qa | grep gcc
gcc -v

安装命令:
yum install -y subversion autoconf automake libtool gcc-c++
yum install -y ncurses-devel make libtiff-devel libjpeg-devel

freeswitch 源码包下载

下载地址:
https://files.freeswitch.org/freeswitch-releases/

或者通过以下命令下载,下载到任意位置,例如 root 文件夹下

wget https://files.freeswitch.org/releases/freeswitch/freeswitch-1.4.26.tar.bz2


解压:(可以下载其他类型文件解压,如 zip 文件,使用 unzip 解压)
tar xvjf freeswitch-1.4.26.tar.bz2

定制freeswitch功能

进入解压出来的文件夹,可以看到有一堆文件和文件夹,下面摘出了部分。

[root@iZbp1i0fg2swiwfhc4zzqnZ freeswitch-1.4.26]# pwd
/root/freeswitch-1.4.26
[root@iZbp1i0fg2swiwfhc4zzqnZ freeswitch-1.4.26]# ll
total 26752
drwxr-xr-x  9  500 mysql     4096 Jan 12  2016 conf
-rwxr-xr-x  1  500 mysql  1090366 Jan 12  2016 configure
-rw-r--r--  1  500 mysql    26486 Jan 12  2016 Makefile.am
-rw-r--r--  1  500 mysql   251242 Jan 12  2016 Makefile.in
-rw-r--r--  1  500 mysql     3702 Dec 11 23:39 modules.conf
..........

modules.conf文件夹中可以选择需要编译的模块,以及移除不需要的模块。具体模块的功能详见官方文档。

conf 文件夹是定制相关配置的关键位置,进入 conf 文件夹如下,freeswitch.xml 中默认配置的是使用 vanilla 文件夹内的相关配置,因此我们只需要修改该文件夹内的配置即可。

[root@iZbp1i0fg2swiwfhc4zzqnZ conf]# ll
total 32
drwxr-xr-x  3 500 mysql 4096 Jan 12  2016 curl
-rw-r--r--  1 500 mysql   61 Jan 12  2016 freeswitch.xml
drwxr-xr-x  7 500 mysql 4096 Jan 12  2016 insideout
drwxr-xr-x  5 500 mysql 4096 Jan 12  2016 minimal
drwxr-xr-x  7 500 mysql 4096 Jan 12  2016 rayo
drwxr-xr-x  5 500 mysql 4096 Jan 12  2016 sbc
drwxr-xr-x  3 500 mysql 4096 Jan 12  2016 softphone
drwxr-xr-x 13 500 mysql 4096 Jan 12  2016 vanilla
[root@iZbp1i0fg2swiwfhc4zzqnZ conf]# 

进入 vanilla 文件夹,相关文件如下,

[root@iZbp1i0fg2swiwfhc4zzqnZ vanilla]# ll
total 156
drwxr-xr-x  2 500 mysql  4096 Jan 12  2016 autoload_configs
drwxr-xr-x  2 500 mysql  4096 Jan 12  2016 chatplan
-rw-r--r--  1 500 mysql  2260 Jan 12  2016 config.FS0
drwxr-xr-x  5 500 mysql  4096 Jan 12  2016 dialplan
drwxr-xr-x  3 500 mysql  4096 Jan 12  2016 directory
-rw-r--r--  1 500 mysql   684 Jan 12  2016 extensions.conf
-rw-r--r--  1 500 mysql  3252 Jan 12  2016 freeswitch.xml
-rw-r--r--  1 500 mysql  1226 Jan 12  2016 fur_elise.ttml
drwxr-xr-x  2 500 mysql  4096 Jan 12  2016 ivr_menus
drwxr-xr-x  2 500 mysql  4096 Jan 12  2016 jingle_profiles
drwxr-xr-x 10 500 mysql  4096 Jan 12  2016 lang
-rw-r--r--  1 500 mysql 53640 Jan 12  2016 mime.types
drwxr-xr-x  2 500 mysql  4096 Jan 12  2016 mrcp_profiles
-rw-r--r--  1 500 mysql  1465 Jan 12  2016 notify-voicemail.tpl
-rw-r--r--  1 500 mysql  2791 Jan 12  2016 README_IMPORTANT.txt
drwxr-xr-x  4 500 mysql  4096 Jan 12  2016 sip_profiles
drwxr-xr-x  2 500 mysql  4096 Jan 12  2016 skinny_profiles
-rw-r--r--  1 500 mysql  1157 Jan 12  2016 tetris.ttml
-rw-r--r--  1 500 mysql 18815 Jan 12  2016 vars.xml
-rw-r--r--  1 500 mysql  1456 Jan 12  2016 voicemail.tpl
-rw-r--r--  1 500 mysql   359 Jan 12  2016 web-vm.tpl
drwxr-xr-x  2 500 mysql  4096 Jan 12  2016 yaml
[root@iZbp1i0fg2swiwfhc4zzqnZ vanilla]# 

autoload_configs 文件夹内的 modules.conf.xml 文件可以选择启用哪些模块,不启用哪些模块(注意,这里如果要启用那些没有被编译的模块,则需要从源码编译相关模块才能启用),其他 xml 配置文件均为对应模块的配置,相关配置参数详见官方文档。
dialplan 文件夹内是配置拨号计划的 xml 文件,我们只需要关注 default.xml 的配置。
directory 内是内部分机相关配置文件。sip_profiles 文件夹内是网关配置。
vars.xml 文件是用于配置全局参数,例如sip分机注册端口,对外网关注册端口,分机默认密码,相关音视频编码等等。
最后由 freeswitch.xml 文件将拨号计划,分机和全局参数整合到一起。

这里我们最终的目的是要配置一个多方会议的功能,并且能够根据数据库的对应关系自动外呼相关成员号码。因此这里需要进行配置的是 dialplan/default.xmlautoload_configs 下会议配置文件conference.conf.xml。这里先不展开讲,相关配置和脚本在下篇中详细说明。

编译安装 freeswitch

进入之前解压出的 freeswitch 源码文件夹下,例如:/root/freeswitch-1.4.26。先执行./rebootstrap.sh,无报错的情况下,再执行./configure,可能存在一些依赖找不到的情况,提示什么找不到就安装什么即可,相关依赖如下,使用yum install ...安装即可。

注意:执行命令前需要确保这些文件具有执行权限,通过chmod -x rebootstrap.sh给文件可执行权限。

gcc-c++ ,wget alsa-lib-devel, autoconf ,automake ,
bison ,broadvoice-devel ,bzip2 ,curl-devel, db-devel ,
e2fsprogs-devel, flite-devel ,g722_1-devel, gdbm-devel, 
gnutls-devel ,ilbc2-devel ,ldns-devel ,libcodec2-devel ,
libcurl-devel ,libedit-devel ,libidn-devel ,libjpeg-devel,
libmemcached-devel, libogg-devel ,libsilk-devel,libsndfile-devel ,
libtiff-devel ,libtheora-devel, libtool, libvorbis-devel ,
libxml2-devel ,lua-devel ,lzo-devel ,mongo-c-driver-devel,
ncurses-devel, net-snmp-devel ,openssl-devel ,opus-devel ,
pcre-devel ,perl perl-ExtUtils-Embed pkgconfig portaudio-devel ,
postgresql-devel, python26-devel ,python-devel ,soundtouch-devel,
speex-devel, sqlite-devel ,unbound-devel, unixODBC-devel ,
libuuid-devel ,which yasm zlib-devel。

./configure执行没有报错后,开始编译安装,执行make install,若提示缺少相关依赖编译失败,依旧按照上述方法安装即可。

安装成功后,再安装声音文件

make sounds-install
make moh-install

安装成功

默认安装为在/usr/local/freeswitch下,如果想要自定义安装位置,在编译安装时指定位置即可,如make install --prefix=/usr/local/freeswitch

[root@iZbp1i0fg2swiwfhc4zzqnZ freeswitch-1.4.26]# cd /usr/local/freeswitch/
[root@iZbp1i0fg2swiwfhc4zzqnZ freeswitch]# ll
total 68
drwxr-xr-x  2 root root 4096 Dec 12 09:29 bin
drwxr-xr-x  2 root root 4096 Dec 12 09:29 cache
drwxr-xr-x  2 root root 4096 Dec 12 10:07 certs
drwxr-xr-x 12 root root 4096 Dec 12 16:21 conf
drwxr-xr-x  2 root root 4096 Dec 12 21:41 db
drwxr-xr-x  2 root root 4096 Dec 12 09:29 grammar
drwxr-xr-x  3 root root 4096 Dec 12 09:29 htdocs
drwxr-xr-x  2 root root 4096 Dec 12 09:29 include
drwxr-xr-x  3 root root 4096 Dec 12 09:29 lib
drwxr-xr-x  4 root root 4096 Dec 12 17:37 log
drwxr-xr-x  2 root root 4096 Dec 12 09:35 mod
drwxr-xr-x  2 root root 4096 Dec 12 14:29 recordings
drwxr-xr-x  2 root root 4096 Dec 12 14:19 run
drwxr-xr-x  2 root root 4096 Dec 12 15:09 scripts
drwxr-xr-x  4 root root 4096 Dec 12 13:46 sounds
drwxr-xr-x  3 root root 4096 Dec 12 10:07 storage
drwxr-xr-x  2 root root 4096 Dec 12 16:37 voice_message

bin 文件夹下,执行./freeswitch可以启动 freeswitch,后台启动则执行./freeswitch -nc.

bin 文件夹下,执行./fs_cli可以连接至已经启动的 freeswitch。若出现连接不上的情况,有可能是修改了conf/autoload_configs/event_socket.conf.xml下的ip或端口,这时候可以根据配置的 ip 和端口,执行./fs_cli -H ip -P port来连接到 freeswitch

在控制台下(fs_cli),执行sofia status,可以查看相关端口。internal表示的是分机注册的ip和端口,可以在配置文件conf/vars.xml中修改。

freeswitch@internal> sofia status
                     Name	   Type	                                      Data	State
=================================================================================================
                 external	profile	          sip:mod_sofia@ip:50099	RUNNING (0)
    external::example.com	gateway	                   sip:[email protected]	NOREG
          external::vos01	gateway	         sip:FreeSWITCH@ip:5060	NOREG
             ip	  alias	                                  internal	ALIASED
                 internal	profile	          sip:mod_sofia@ip:50100	RUNNING (0)
=================================================================================================

相关命令:退出控制台/bye,控制台下关闭freeswitchshutdown

你可能感兴趣的:(freeswitch)