一同仆、前言
freeswitch 各個版本路徑:https://files.freeswitch.org/freeswitch-releases/
freeswitch 依賴庫離線下載地址:https://files.freeswitch.org/downloads/libs/
- 1裙品、先關(guān)閉防火墻,以免造成不可抗拒的問題
//臨時關(guān)閉
systemctl stop firewalld
//禁止開機(jī)啟動
systemctl disable firewalld
二扶镀、安裝必要依賴
- 1焰轻、安裝基礎(chǔ)依賴
yum install -y https://files.freeswitch.org/repo/yum/centos-release/freeswitch-release-repo-0-1.noarch.rpm epel-release
yum install -y git alsa-lib-devel autoconf automake bison broadvoice-devel bzip2 curl-devel libdb4-devel e2fsprogs-devel erlang flite-devel g722_1-devel gcc-c++ 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 libtheora-devel libtiff-devel libtool libuuid-devel 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 python-devel python-devel soundtouch-devel speex-devel sqlite-devel unbound-devel unixODBC-devel wget which yasm zlib-devel libshout-devel libmpg123-devel lame-devel
- 2辱志、安裝mod_av支持的lib
mod_av 依賴libav, libav需要 x264 lib才能支持h264
# download and install libx264
wget -c http://files.freeswitch.org/downloads/libs/libx264.tar.bz2
tar -jxvf libx264.tar.bz2
./configure --enable-static --enable-shared --prefix=/usr
make
make install
cp /usr/lib/pkgconfig/x264.pc /usr/lib64/pkgconfig/
cp /usr/lib/libx264.so /usr/lib64/
cp /usr/lib/libx264.a /usr/lib64/
# download and install libav
wget -c http://files.freeswitch.org/downloads/libs/libav-12.tar.bz2
tar -jxvf libav-12.tar.bz2
./configure --enable-pic --enable-shared --enable-libx264 --enable-gpl --extra-libs="-ldl" --extra-cflags=-I/usr/include --extra-ldflags=-L/usr/lib64
make # make CXXFLAGS="-fPIC"
make install
cp /usr/local/lib/pkgconfig/libavcodec.pc /usr/local/lib/pkgconfig/libavdevice.pc /usr/local/lib/pkgconfig/libavfilter.pc /usr/local/lib/pkgconfig/libavformat.pc /usr/local/lib/pkgconfig/libavresample.pc /usr/local/lib/pkgconfig/libavutil.pc /usr/local/lib/pkgconfig/libswscale.pc /usr/lib64/pkgconfig/
# 執(zhí)行刷新揩懒,以讓FreeSWITCH運(yùn)行時可以找到庫
ldconfig
- 3、安裝 libpng
git clone https://freeswitch.org/stash/scm/sd/libpng.git
cd libpng
./configure
make
make install
cp /usr/local/lib/pkgconfig/libpng* /usr/lib64/pkgconfig/
- 4臣镣、安裝cmake
#卸載yum安裝的版本智亮,若無安裝則忽略
yum remove cmake
wget https://cmake.org/files/v3.14/cmake-3.14.0.tar.gz
tar -zxvf cmake-3.14.0.tar.gz
cd cmake-3.14.0
./configure
make
make install
- 5阔蛉、安裝libks
# 先安裝libatomic依賴
yum install libatomic
git clone https://github.com/signalwire/libks.git
cd libks
cmake .
make
make install
- 6、安裝signalwire-c
git clone https://github.com/signalwire/signalwire-c.git
cd signalwire-c/
cmake .
make
make install
ln -sf /usr/local/lib64/pkgconfig/signalwire_client.pc /usr/lib64/pkgconfig/signalwire_client.pc
#若是沒有找到signalwire_client.pc聋呢,可以全局搜索颠区,搜索到之后,替換對應(yīng)的路徑 find / -name signalwire_client.pc
- 7器贩、安裝odbc
yum install -y unixODBC unixODBC-devel mysql-connector-odbc
安裝完成后:
編輯/etc/odbcinst.ini
# Example driver definitions
# Driver from the postgresql-odbc package
# Setup from the unixODBC package
[PostgreSQL]
Description=ODBC for PostgreSQL
Driver=/usr/lib/psqlodbcw.so
Setup=/usr/lib/libodbcpsqlS.so
Driver64=/usr/lib64/psqlodbcw.so
Setup64=/usr/lib64/libodbcpsqlS.so
FileUsage=1
# Driver from the mysql-connector-odbc package
# Setup from the unixODBC package
[MySQL]
Description=ODBC for MySQL
Driver=/usr/lib64/libmyodbc5.so
Setup=/usr/lib64/libodbcmyS.so
Driver64=/usr/lib64/libmyodbc5.so
Setup64=/usr/lib64/libodbcmyS.so
FileUsage=1
編輯/etc/odbc.ini
[freeswitch]
Description=MySQL realtime database
Driver=/usr/lib64/libmyodbc5.so
SERVER=127.0.0.1
PORT=3306
DATABASE=freeswitch
OPTION =67108864
CHARSET=UTF8
USER=數(shù)據(jù)庫賬號
PASSWORD=數(shù)據(jù)庫密碼
Threading=0
輸入:isql -v freeswitch測試是否能夠連通磨澡,正常如下:
三稳摄、FreeSwitch編譯源碼安裝
- 1、安裝
wget https://files.freeswitch.org/freeswitch-releases/freeswitch-1.10.3.-release.tar.gz
tar vzxf freeswitch-1.10.3.tar.gz
cd freeswitch-1.10.3
#如果不想使用mysql管理胆描,只需要執(zhí)行./configure即可
./configure --enable-core-odbc-support
make
make install
#安裝聲音文件
make cd-sounds-install
make cd-moh-install
#設(shè)置鏈接符號,便于使用
ln -sf /usr/local/freeswitch/bin/freeswitch /usr/local/bin/
ln -sf /usr/local/freeswitch/bin/fs_cli /usr/local/bin/
- 2仗阅、部署成服務(wù)
vi /usr/lib/systemd/system/freeswitch.service
編輯以下內(nèi)容:
[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
- 3减噪、配置MySQL管理Freeswitch
<!-- vi conf/autoload_configs/db.conf.xml -->
<param name="odbc-dsn" value="freeswitch:root:123456"/>
<!-- vi conf/autoload_configs/switch.conf.xml -->
<param name="core-db-dsn" value="freeswitch:root:123456" />
<param name="odbc-dsn" value="freeswitch:root:123456"/>
<!-- vi conf/autoload_configs/voicemail.conf.xml -->
<param name="odbc-dsn" value="freeswitch:root:123456"/>
<!-- vi conf/autoload_configs/callcenter.conf.xml -->
<param name="odbc-dsn" value="freeswitch:root:123456"/>
<!-- vi conf/sip_profiles/external.xml -->
<param name="odbc-dsn" value="freeswitch:root:123456"/>
<!-- vi conf/sip_profiles/internal.xml -->
<param name="odbc-dsn" value="freeswitch:root:123456"/>
<!-- vi conf/sip_profiles/internal-ipv6.xml -->
<param name="odbc-dsn" value="freeswitch:root:123456"/>
<!-- vi conf/sip_profiles/external-ipv6.xml -->
<param name="odbc-dsn" value="freeswitch:root:123456"/>
<!-- vi conf/autoload_configs/fifo.conf.xml -->
<settings>
<param name="delete-all-outbound-member-on-startup" value="false"/>
<param name="odbc-dsn" value="freeswitch:root:123456"/>
</settings>
<!-- vi conf/vars.xml -->
<X-PRE-PROCESS cmd="set" data="json_db_handle=odbc://freeswitch:root:123456"/>
- 4筹裕、開啟錄音功能
修改撥碼計(jì)劃
打開文件../freeswitch/conf/dialplan/default.xml
找到Local_Extension節(jié)點(diǎn)
<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"/>
完成后证逻,進(jìn)入FS_CLI中運(yùn)行 reloadxml
以上../freeswitch/conf/dialplan/default.xml抗斤,如果有其它的部分撥號方案需要錄音瑞眼,找到對應(yīng)的撥號方案配置文件加入上述內(nèi)容即可。
四烦衣、配置文件介紹
conf\sip_profiles\internal.xml 配置sip信息
默認(rèn)路由文件:/usr/local/freeswitch/comf/dialplan/default.xml 掩浙,可以修改他
添加新的路有也可以修改文件:/usr/local/freeswitch/comf/dialplan/default
外線來電路有配置文件:/usr/local/freeswitch/comf/dialplan/public.xml
FreeSwitch的配置文件默認(rèn)是放在 FreeSwitch\Conf\ 下秸歧,最頂層是的 FreeSwitch.xml,也就是說最先加載的就是這個 XML谬墙, FreeSwitch 根據(jù)這個 XML 依次加載 Conf 目錄下的其它配置文件。
- 1部默、conf根目錄下的文件
freeswitch.xml:主配置文件造虎,它會使用include語句裝入其它文件。
vars.xml:一些常用變量份蝴,都在這個配置文件中定義氓轰。
- 2、conf下的文件夾
|-- autoload_configs:存放自動加載的配置文件案糙。
|-- 此文件夾下的modules.conf.xml:配置當(dāng)freeswitch啟動時自動裝載哪些模塊靴庆。
|-- 此文件夾下其它xml:一般來說都是對應(yīng)每個模塊的配置文件撒穷。
|-- chatplan文件夾:存放的是聊天計(jì)劃配置文件。
|-- dialplan文件夾:存放的是撥號計(jì)劃配置文件禽笑。
|-- directory文件夾:用戶目錄蛤奥,存儲跟用戶相關(guān)的信息。
|-- 此文件夾下的的defalut目錄是默認(rèn)的用戶目錄配置凡桥,default下的xml文件是對應(yīng)每個sip用戶的,每個sip用戶都有一個配置文件缅刽。
|-- ivr_menus文件夾:IVR菜單配置文件衰猛。
|-- jingle_profiles文件夾:連接Google Talk的相關(guān)配置文件。
|-- lang文件夾:多語言支持配置文件啡省。
|-- 此文件夾下的en為英語,fr文件夾是法語畦戒。
|-- mrcp_profiles文件夾:MRCP的相關(guān)配置障斋,用于跟第三方語音合成和語音識別系統(tǒng)對接。
|-- sip_profiles文件夾:sip配置文件
|-- 此文件夾下的internal.xml:一個SIP profile酪穿,或稱作一個SIP-UA晴裹,監(jiān)聽在本地IP及端口5060。
|-- 此文件夾下的externa.xml:另一個SIP-UA只磷,用作外部連接泌绣,端口5080。
|-- 在 /usr/local/freeswitch/comf/directory/default 下有默認(rèn)的1000-1019共20個賬號元媚,可以通過 copy 并修改其中的 user_id 來實(shí)現(xiàn)增加新的賬號
五苗沧、常用命令
# 啟動freeswitch
freeswitch
# 關(guān)閉freeswitch
shutdown
# 后臺啟動
freeswitch -nc
# 關(guān)閉后臺freeswitch
freeswitch -stop
# 查看FreeSWITCH是否正常啟動
netstat -anp | grep freeswitch
# 查看狀態(tài)
sofia status
# 顯示哪些用戶已注冊
sofia status profile internal reg
# 控制臺顯示info級別日志
fs_cli -l info
# 開啟sip消息顯示/關(guān)閉
sofia global siptrace on/off
# 退出fs_cli(不關(guān)閉fs)
/exit
六待逞、防火墻開放端口
FireWall Ports Network Protocol Application Protocol Description
1719 UDP H.323 Gatekeeper RAS port
1720 TCP H.323 Call Signaling
3478 UDP STUN service Used for NAT traversal
3479 UDP STUN service Used for NAT traversal
5002 TCP MLP protocol server
5003 UDP Neighborhood service
5060 UDP & TCP SIP UAS Used for SIP signaling (Standard SIP Port, for default Internal Profile)
5070 UDP & TCP SIP UAS Used for SIP signaling (For default "NAT" Profile)
5080 UDP & TCP SIP UAS Used for SIP signaling (For default "External" Profile)
8021 TCP ESL Used for mod_event_socket *
16384-32768 UDP RTP/ RTCP multimedia streaming Used for audio/video data in SIP and other protocols
5066 TCP Websocket Used for WebRTC
7443 TCP Websocket Used for WebRTC