FreeSWITCH在虚拟机中的安装。

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~H2641.7版本
  1. $ sudo vim /usr/local/freeswitch/etc/freeswitch/autoload_configs/modules.conf.xml<load module="mod_h26x"/>去掉注释
  2. $ 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
  1. $ sudo vim /usr/local/freeswitch/etc/freeswitch/autoload_configs/modules.conf.xml<load module="mod_xml_curl"/>去掉注释
  2. $ 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>
  1. 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>

相关命令

  1. 显示哪些用户已注册 sofia status profile internal reg
  2. 控制台显示info级别日志 fs_cli -l info


作者:Jetsly
链接:https://www.jianshu.com/p/61ce097c9026#11-
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值