Centos8.5 编译安装 freeswitch1.10.7 指南

前期yum源的安装

yum -y install make gettext-devel expat-devel curl-devel zlib-devel openssl-devel bzip2 readline-devel
yum install -y epel-release
yum install -y --skip-broken git 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 pcre-devel perl perl-ExtUtils-Embed pkgconfig portaudio-devel postgresql-devel python26-devel python-devel soundtouch-devel speex speex-devel sqlite-devel unbound-devel unixODBC-devel libuuid-devel which yasm zlib-devel libatomic hiredis-devel diffutils
yum install -y https://download1.rpmfusion.org/free/el/rpmfusion-free-release-8.noarch.rpm
yum install -y http://rpmfind.net/linux/epel/7/x86_64/Packages/s/SDL2-2.0.10-1.el7.x86_64.rpm
yum install -y ffmpeg ffmpeg-devel

安装opus

yum install -y opus-devel
#安装完成之后要
cp /usr/local/lib/pkgconfig/opus.pc /usr/lib64/pkgconfig/
ln -s /usr/lib64/pkgconfig/opus.pc /usr/lib64/pkgconfig/libopus.pc

安装编译需要的库

dnf install -y speex.x86_64 baresip-speex_pp.x86_64 speexdsp.x86_64
dnf install -y http://repo.okay.com.mx/centos/8/x86_64/release/speex-devel-1.2.0-1.el8.x86_64.rpm
dnf install -y http://mirror.centos.org/centos/8/PowerTools/x86_64/os/Packages/speexdsp-devel-1.2-0.13.rc3.el8.x86_64.rpm
dnf install -y http://mirror.centos.org/centos/8/PowerTools/x86_64/os/Packages/ldns-devel-1.7.0-21.el8.x86_64.rpm
dnf install -y http://mirror.centos.org/centos/8/PowerTools/x86_64/os/Packages/libedit-devel-3.1-23.20170329cvs.el8.x86_64.rpm
dnf install -y http://mirror.centos.org/centos/8/PowerTools/x86_64/os/Packages/yasm-1.3.0-7.el8.x86_64.rpm
dnf install http://mirror.centos.org/centos/8/BaseOS/x86_64/os/Packages/pcre-devel-8.42-4.el8.x86_64.rpm
dnf install -y http://mirror.centos.org/centos/8/PowerTools/x86_64/os/Packages/lua-devel-5.3.4-11.el8.x86_64.rpm
dnf install libpq-devel
dnf install -y http://mirror.centos.org/centos/8/PowerTools/x86_64/os/Packages/libsndfile-devel-1.0.28-10.el8.x86_64.rpm

加载环境变量

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig/:/usr/local/lib64/pkgconfig/:/usr/lib64/pkgconfig/

安装spandsp3

#centos8需要

yum install libtiff libtiff-devel  libjpeg-devel
cd /usr/src/
git clone https://github.com/freeswitch/spandsp.git
cd spandsp
./bootstrap.sh -j
./configure
make
make install
ldconfig

安装sofia-sip

   cd /usr/src/
git clone https://github.com/freeswitch/sofia-sip.git
cd sofia-sip
./bootstrap.sh -j
./configure
make
make install
ldconfig

安装signalwire

dnf install -y cmake
安装libks
yum install libatomic
cd /usr/local/src
git clone https://github.com/signalwire/libks.git
cd libks
cmake .
make
make install

安装signalwire-c

cd /usr/local/src
git clone https://github.com/signalwire/signalwire-c.git
cd signalwire-c/
cmake .
make
make install

开始编译

如果需要设置代理
cd /usr/local/src/
git config --global https.proxy http://127.0.0.1:10808
git config --global http.proxy http://127.0.0.1:10808
git clone https://github.com/signalwire/freeswitch
git config --global --unset https.proxy
git config --global --unset http.proxy
下面就可以编译了
cd freeswitch
./bootstrap.sh
./configure --enable-core-pgsql-support
make -j
make install

语音包安装

1、make sounds-install

2、make moh-install

3 make cd-sounds-install

4 make cd-moh-install

修改Linux内核最大并发连接数

 vim /etc/security/limits.conf

文件末尾添加:

* soft nofile 65530
* hard nofile 65530

安装中文语音

fs默认不加载中文语音。需要在fs的src中首先编译中文模块。

1.编译:

a.在 configure 之前, 编辑 modules.conf,  取消 "#say/mod_say_zh"  这行的注释 ->"say/mod_say_zh"

b.补救安装 `make mod_say_zh-install` 

2.加载(不重启fs

在fs控制台上加载该模块 `load mod _say_zh` 
若想fs在每次启动的时候都加载该模块,就在`autoload_configs/modules.conf.xml`中`<load module="mod_say_zh">`的注释去掉即可。

也可以这样:

sed -i 's#<!-- <load module="mod_say_zh"/> -->#<load module="mod_say_zh"/>#g' autoload_configs/modules.conf.xml

3.修改 `var.xml`中的配置 

`<X-PRE-PROCESS cmd="set" data="sound_prefix=$${sounds_dir}/en/us/callie"/>`修改为中文语音文件的目录
`<X-PRE-PROCESS cmd="set" data="sound_prefix=$${sounds_dir}/zh/cn/link"/>`
加入以下几行(也可以不加)

<X-PRE-PROCESS cmd="set" data="default_language=zh"/>
<X-PRE-PROCESS cmd="set" data="default_dialect=cn"/>
<X-PRE-PROCESS cmd="set" data="default_voice=sue"/>

4.加入中文语音配置

cd conf/lang

cp -R en zh

mv zh/en.xml zh/zh.xml

vim zh/zh.xml

(替换路径`en/us/callie`和 `en`等:第二行修改为)

<language name="zh" say-module="zh" sound-prefix="$${sounds_dir}/zh/cn/link" tts-engine="cepstral" tts-voice="link">

或者修改zh.xml
  <language name="zh" say-module="zh" sound-prefix="$${sound_prefix}/zh/cn/link" tts-engine="mod_tts_commandline" tts-voice="link">
7、/usr/local/freeswitch/
conf/freeswitch.xml
  在61行增加   <X-PRE-PROCESS cmd="include" data="lang/zh/*.xml"/>
8
、控制台 reloadxml
 

5. 载入中文配置

在`freeswitch.xml`的`<section name="languages" `节点中增加一行 (或那一行取消注释)

` <X-PRE-PROCESS cmd="include" data="lang/zh/*.xml"/>`

解决ESL拒绝连接问题

默认是只接受本机连接的,稍一改动就 内外都不能连接了,或者只能接受内外之一连接 

解决方法:

1. event_socket.conf.xml 加入:

<param name="apply-inbound-acl" value="domains"/>

2. acl.conf.xml 加入:

<list name="domains" default="deny">

<node type="allow" domain="$${domain}"/>

<node type="allow" cidr="192.168.1.0/24"/>

<node type="allow" cidr="127.0.0.1/24"/>

</list>

FreeSwitch开启录音功能

修改拨码计划

打开文件../freeswitch/conf/dialplan/default.xml

找到Local_Extension节点

<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="$${base_dir}/recordings/archive/${strftime(%Y-%m-%d-%H-%M-%S)}_${destination_number}_${caller_id_number}.wav"/>

freeswitch呼叫慢的问题

安装完freeswitch后,测试中发现呼叫请求服务器处理的特别慢,后来跟踪发现在/usr/local/freeswitch/conf/dialplan/default.xml中有个sleep 10s的处理,

<condition field="${default_password}" expression="^1234$" break="never">

        <action application="log" data="CRIT WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING "/>

        <action application="log" data="CRIT Open $${conf_dir}/vars.xml and change the default_password."/>

        <action application="log" data="CRIT Once changed type 'reloadxml' at the console."/>

配置profile

1、外呼和接入:/usr/local/freeswitch/conf/sip_profiles

三个文件:external robotv3.xml robotv4.xml

每个profiles相当于一个语音的实例。

2、编辑robotv3.xml,robotv4.xml修改数据库密码:

原先:<param name="odbc-dsn" value="freeswitch3:root:tydic2020@AbcDic"/>
改为:<param name="odbc-dsn" value="freeswitch:root:tydic2017AbcDic"/>
盲注册、盲校验
<param name="accept-blind-auth" value="true" />
<param name="accept-blind-reg" value="true" />
其中设置context在修改拨号计划进行关联
<param name="context" value="robotv4"/>
端口号在:<param name="sip-port" value="5080"/>
指定实例不同的域:<param name="dbname" value="share_presence"/>
在directory中difault文件也有更改IP地址:
 <param name="rtp-ip" value="172.29.50.60"/>    <!-- ip address to bind to, DO NOT USE HOSTNAMES ONLY IP ADDRESSES -->    <param name="sip-ip" value="172.29.50.60"/>    <param name="ext-rtp-ip" value="172.29.50.60"/>    <param name="ext-sip-ip" value="172.29.50.60"/>

分机设置

/usr/local/freeswitch/conf/directory/default

启动freeswitch

1、做软连接,第一个真实地址

ln /usr/local/freeswitch/bin/freeswitch /usr/bin/freeswitch

2、启动:不做nat检测,不在内核启动

freeswitch -nonat -nosql

3、查看实例端口

sofia status

然后按照实例注册软电话。

4、拨打9196放音。

5、查看某个实例的状态:sofia status profile robotv3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值