FreeSWITCH是一个开源的电话软交换平台,主要开发语言是C,某些模块中使用了C++,以 MPL1.1发布。更多的说明请参考 什么是FreeSWITCH?和FreeSWITCH新手指南。您也可以阅读这本 《FreeSWITCH权威指南》。
准备相关的环境:ubuntu14.04系统
首先安装Git从它的库中下载代码安装FreeSWITCH 默认位置为/usr/local/freeswitch
apt-get install git-core
安装基础包
$ sudo yum install epel-release vim -y
$ curl -O http://files.freeswitch.org/freeswitch-releases/freeswitch-1.6.6.tar.bz2
$ sudo yum install bzip2 -y
$ tar xvjf freeswitch-1.6.6.tar.bz2
安装依赖包
$ sudo yum install gcc-c++ sqlite-devel zlib-devel libcurl-devel pcre-devel speex-devel ldns-devel libedit-devel openssl-devel -y
$ sudo yum install libjpeg-devel lua-devel libsndfile-devel libyuv-devel git libtool -y
代码依赖包
$ cd freeswitch-1.6.6
$ cd libs/
$ git clone https://freeswitch.org/stash/scm/sd/libyuv.git
$ cd libyuv/
$ make -f linux.mk CXXFLAGS="-fPIC -O2 -fomit-frame-pointer -Iinclude/"
$ sudo make install
$ sudo cp /usr/lib/pkgconfig/libyuv.pc /usr/lib64/pkgconfig/
$ cd ..
$ git clone https://freeswitch.org/stash/scm/sd/libvpx.git
$ cd libvpx/
$ sudo yum install yasm -y
$ ./configure --enable-pic --disable-static --enable-shared
$ make
$ sudo make install
$ sudo cp /usr/local/lib/pkgconfig/vpx.pc /usr/lib64/pkgconfig/
$ cd ..
$ git clone https://freeswitch.org/stash/scm/sd/opus.git
$ cd opus/
$ ./autogen.sh
$ ./configure
$ make
$ sudo make install
$ sudo cp /usr/local/lib/pkgconfig/opus.pc /usr/lib64/pkgconfig
$ cd ..
$ git clone https://freeswitch.org/stash/scm/sd/libpng.git
$ cd libpng/
$ ./configure
$ make
$ sudo make install
$ sudo cp /usr/local/lib/pkgconfig/libpng* /usr/lib64/pkgconfig/
编译
$ cd freeswitch-1.6.6
$ ./configure
$ make
$ sudo make install
安装声音文件
$ sudo make cd-sounds-install
$ sudo make cd-moh-install
新版本安装 上面的安装依赖包不用git到工程文件夹
$ git clone https://freeswitch.org/stash/scm/fs/freeswitch.git
$ cd freeswitch
$ sh support-d/prereq.sh
$ sh bootstrap.sh
$ ./configure --prefix=/usr/local/freeswitch
$ make
$ sudo make install
设置链接符号,便于使用
$ sudo ln -sf /usr/local/freeswitch/bin/freeswitch /usr/local/bin/
$ sudo ln -sf /usr/local/freeswitch/bin/fs_cli /usr/local/bin/
部署成服务
sudo vim /usr/lib/systemd/system/freeswitch.service
[Unit]
Description=freeswitch
After=syslog.target
After=network.target
[Service]
Type=simple
User=root
Group=root
WorkingDirectory=/home/mintcode
ExecStart=/usr/local/freeswitch/bin/freeswitch
ExecStop=/usr/local/freeswitch/bin/freeswitch -stop
Restart=always
[Install]
WantedBy=multi-user.target
配置文件
conf\sip_profiles\internal.xml
配置sip信息
1 添加H263
~H264
1.7版本
$ sudo vim /usr/local/freeswitch/etc/freeswitch/autoload_configs/modules.conf.xml
的<load module="mod_h26x"/>
去掉注释$ sudo vim /usr/local/freeswitch/etc/freeswitch/vars.xml
<X-PRE-PROCESS cmd="set" data="global_codec_prefs=OPUS,G722,PCMU,PCMA,VP8,VP9,H263,H263-1998,H263-2000,H264"/>
<X-PRE-PROCESS cmd="set" data="outbound_codec_prefs=OPUS,G722,PCMU,PCMA,VP8,VP9,H263,H263-1998,H263-2000,H264"/>
2 添加授权注册 需要编译mod_xml_curl
$ sudo vim /usr/local/freeswitch/etc/freeswitch/autoload_configs/modules.conf.xml
的<load module="mod_xml_curl"/>
去掉注释$ sudo vim /usr/local/freeswitch/etc/freeswitch/autoload_configs/xml_curl.conf.xml
<binding name="directory">
<param name="gateway-url" value="http://192.168.1.173:20501/freeswitch/dicectory" bindings="directory"/>
</binding>
MSB
配置
<?xml version="1.0" encoding="UTF-8" ?>
<routes xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="netty4-http:http://{{msb.hostName}}:20501/freeswitch/dicectory"
/>
<setHeader headerName="dial-string">
<constant>
{presence_id=${dialed_user}@${dialed_domain}}${sofia_contact(${dialed_user}@${dialed_domain})}
</constant>
</setHeader>
<setHeader headerName="user">
<javaScript>
decodeURIComponent(request.headers.get('user'))
</javaScript>
</setHeader>
<transform>
<simple>
<![CDATA[ <document type="freeswitch/xml">
<section name="${header.section}">
<domain name="${header.domain}">
<params>
<param name="dial-string" value="${header.dial-string}"/></params>
<groups>
<group name="default">
<users>
<user id="${header.user}">
<params><param name="password" value="1234"/></params>
</user>
</users>
</group>
</groups>
</domain></section></document>
]]>
</simple>
</transform>
<removeHeaders pattern="*" />
<setHeader headerName="Content-Type">
<simple>
text/xml
</simple>
</setHeader>
</route>
</routes>
相关命令
- 显示哪些用户已注册
sofia status profile internal reg
- 控制台显示
info
级别日志fs_cli -l info
作者:Jetsly
链接:https://www.jianshu.com/p/61ce097c9026#11-
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。