部署FreeSWITCH + FusionPBX
- 格式:doc
- 大小:41.50 KB
- 文档页数:5
FreeSwitch配置和使用手册目录1. FreeSwitch简介 (1)2. 获取FreeSwitch (2)3. FreeSwitch的配置 (3)4. 软电话连接FreeSwitch使用 (3)4.1. 语音通话 (4)4.2. 发送SMS (8)1.FreeSwitch简介FreeSwitch是一个开源的电话软交换平台,从一个简单的软电话客户端到运营商的软交换设备几乎无所不能,FreeSwitch 可以用作交换机引擎、PBX、多媒体网关以及多媒体服务器等。
FreeSwitch具有很强的伸缩性。
旨在为音频、视频、文字或任何其他形式的媒体,提供路由和互连通信协议。
它创建于2006年,填补了许多商业解决方案的的空白。
FreeSWITCH 的也提供了一个稳定的电话平台,许多广泛使用的免费电话就是在使用它开发的,但是它不支持视频通话。
FreeSwitch能原生地运行在Windows、Max OS X、Linux、BSD 及solaris 等诸多32/64位平台,可以用作一个简单的交换引擎、一个PBX,一个媒体网关或媒体支持IVR的服务器等。
它支持SIP、H323、Skype、Google Talk等协议,并能很容易地与各种开源的PBX系统如sipXecs、Call Weaver、Bayonne、YATE及Asterisk等通信。
FreeSWITCH 遵循RFC并支持很多高级的SIP特性,如presence、BLF、SLA以及TCP、TLS和sRTP等。
它也可以用作一个SBC 进行透明的SIP代理(proxy)以支持其它媒体如T.38等。
FreeSWITCH 支持宽带及窄带语音编码,电话会议桥可同时支持8、12、16、24、32及48kHZ的语音. 而在传统的电话网络中,要做到三方通话或多方通话需要通过专门的芯片来处理,其它像预付费,彩铃等业务在PSTN 网络中都需要依靠智能网(IN)才能实现,而且配置起来相当不灵活。
FreeSwitch 配置和使用手册FreeSwitch 配置和使用手册目录1. 2. 3. 4.FreeSwitch 简介 ..................................................................................................... 1 获取 FreeSwitch ..................................................................................................... 2 FreeSwitch 的配置 ................................................................................................. 3 软电话连接 FreeSwitch 使用 ................................................................................ 34.1. 4.2. 语音通话....................................................................................................................... 4 发送 SMS...................................................................................................................... 81. FreeSwitch 简介FreeSwitch 是一个开源的电话软交换平台,从一个简单的软电话客户端到运营商的软 交换设备几乎无所不能,FreeSwitch 可以用作交换机引擎、PBX、多媒体网关以及多媒体服 务器等。
Centos7.2 安装freeswitch1.6Freeswitch是著名的软交换通讯平台,可以作为PBX或IPPBX设备,callcenter设备使用。
至于为什么写这个教程,因为我也从网上找了很多资料安装,但是都是失败的,所以自己摸索安装,最终成功了,考虑到很多人也会遇到这个情况,就拿出来分享大家使用。
下面就介绍freeswitch安装步骤,系统是centos 7,,64位的版本,我用的是CentOS-7-x86_64-DVD-1511.iso,可以从网上下载使用。
可以登录feeswitch 查看相关资料https://。
一、操作系统安装:1、载入ISO文件开始安装2、安装选择中文即可,如果英文可以的话也可以直接装英文版,毕竟在命令行下操作。
3、安装之前就可以关闭防火墙,如果这里不选择关闭也可以,安装完成后关闭也行或者开放freeswitch需要的端口,这里我们选择关闭。
4、关闭后选择完成5、Centos7提供了在单一的安装向导界面里配置绝大部分参数,非常方便,下面配置分区和网络6、分区选择自动分区即可7、网络配置完成后保存完成8、然后开始安装,安装选择最小安装即可9、安装过程中可以配置root密码,这样安装完成后可以用root密码登录10、安装完成后重启进入系统,然后开始安装freeswitch,截止到现在freeswitch 最新稳定版本是1.611、安装freeswitch源:yum install -y /freeswitch-release-1-6.noarch.rpm epel-release开始安装安装完成12、安装依赖包:yum install -y git gcc-c++ autoconf automake libtool wget python ncurses-devel zlib-devel libjpeg-devel openssl-devel e2fsprogs-devel sqlite-devel libcurl-devel pcre-devel speex-devel ldns-devel libedit-devel libxml2-devel libyuv-devel opus-devel libvpx-devel libvpx2* libdb4* libidn-devel unbound-devel libuuid-devel lua-devel libsndfile-devel yasm-devel安装完成13、获得freeswitch源码cd /usr/local/srcgit clone -b v1.6 https:///stash/scm/fs/freeswitch.git14、源码下载完成15、开始编译和安装,因安装包108MB,编译安装要过段时间,这个时候可以休息下。
交叉编译是指在一台主机上使用特定工具链,将源代码编译成可以在另一个不同架构或操作系统的目标平台上执行的可执行文件。
对于freeswitch来说,交叉编译通常包括以下步骤:
1.准备交叉编译工具链:这包括交叉编译所需的编译器、链接器和其他工具。
通
常,您可以下载并安装适用于目标架构或操作系统的交叉编译工具链。
2.配置freeswitch源代码:在进行交叉编译之前,您需要正确配置freeswitch
源代码。
这包括设置适当的编译器和链接器选项,以确保生成的二进制文件可以在目标平台上运行。
3.执行交叉编译:使用配置好的工具链和freeswitch源代码,执行交叉编译命令。
这将生成可在目标平台上运行的可执行文件。
4.安装和测试:将生成的可执行文件复制到目标平台上,并进行安装和测试。
确
保生成的二进制文件与目标平台上的操作系统和硬件兼容,并且能够正常工作。
需要注意的是,freeswitch的交叉编译过程可能会因目标平台和工具链的不同而有所差异。
在进行交叉编译之前,请确保您已经仔细阅读了freeswitch的官方文档,并按照其中的说明进行操作。
同时,如果您遇到任何问题,可以参考相关的技术论坛或社区寻求帮助。
freeswitch 编译Freeswitch是一款性能强大、灵活多变的软交换系统,它可以实现语音和视频通讯、电话会议、信号路由以及媒体处理等功能,同时支持多种协议与平台。
本文将介绍如何编译Freeswitch,以供使用者参考。
一、准备工作在开始编译Freeswitch前,首先需要在操作系统上安装一些必要的软件,包括Git、GCC编译器、libjpeg库等。
具体的安装方式根据不同的操作系统可能会有所不同。
二、获取源代码获取Freeswitch源代码可以通过两种方式实现:从官方网站下载或从GitHub仓库克隆。
选择哪种方式取决于个人需要,但从GitHub仓库克隆即可使更新更加及时,也更方便。
三、配置和编译1. 配置Freeswitch在获取到源代码后,需要在本地电脑上创建一个存放源代码的目录,并将源代码解压到此目录中。
然后进入Freeswitch目录,并执行以下命令以创建配置文件:$ ./configure这将执行configure文件,其作用是根据本地电脑的硬件和软件配置创建生成Makefile,为Freeswitch的编译提供依据。
2. 执行make完成配置后,进入Freeswitch目录并执行make命令即可开始编译Freeswitch:$ make该命令将编译Freeswitch,生成Freeswitch可执行文件。
编译时间取决于本地电脑的硬件配置和源代码的大小。
3. 安装Freeswitch在编译完成后,运行以下命令安装Freeswitch:$ make install该命令将会在本地电脑上创建与Freeswitch相关的目录,并拷贝Freeswitch可执行文件和配置文件到相应目录下。
四、测试Freeswitch完成以上步骤后,可以测试Freeswitch是否成功安装和配置。
可以使用以下命令启动Freeswitch:$ freeswitch使用以下命令关闭Freeswitch:$ freeswitch -stop使用以下命令测试Freeswitch是否正常:$ fs_cli输入以上命令后,应会出现Freeswitch的CLI界面,若显示正常即表示Freeswitch已成功安装和配置。
FreeSwitch安装在云服务器禁⽌国外IP访问项⽬上使⽤到FreeSwitch放到阿⾥云上,但是不可避免,被扫描盗打,运⽓不好,第⼀天放上去测试,就被打了2K+话费。
不管是阿⾥云,腾讯云,华为云等等,他们的ACL规则都是⽐较弱的,有项⽬曾经⽤过SBC来管制当然简单多了,不过也要⼀笔不⼩的费⽤,于是只有在系统防⽕墙上下⼿。
⾸先,扫描的基本上都是国外的IP,我们先禁⽌他们的访问,这⾥⽤到了iptables和ipset,本来我们的系统环境是CentOS7,没有iptables 的,因为7开始已经改为firewalld了。
iptables和ipset的配合使⽤先检查安装环境:yum install ipsetyum install iptables-services#建表ipset create china hash:net hashsize 1024 maxelem 65536#批量增加中国IP到ipset的china表#以下内容保存成脚本执⾏即可,执⾏需要更改权限#!/bin/bashrm -f cn.zonewget /ipblocks/data/countries/cn.zonefor i in `cat cn.zone`doipset add china $idoneipset list china #查看⼀下ipset save#ipset命令建表和插IP数据都是直接写内存,所以需要让内存的数据持久化,各发⾏版的服务调⽤命令可能不太⼀样,这⾥⽤Redhat系列的命令#iptables的filter表INPUT链根据需求加⼊相应的规则,以下是实例#全部接受中国IP-A INPUT -m set --match-set china src -j ACCEPT#接受中国IP访问本机特定端⼝特定协议(例如5060UDP协议),freeswitch⼀般要⽤这条,直接具体到端⼝协议-A INPUT -m set --match-set china src -p udp -m udp --dport 5060 -j ACCEPT#接受中国IP的ping响应-A INPUT -m set --match-set china src -p icmp -j ACCEPTservice iptables save————————————————如果对命令不是太熟悉,可以把以下内容写到 /etc/sysconfig/iptables ⽂件⾥,增加或者修改对应的端⼝*filter:INPUT DROP [0:0]:FORWARD DROP [0:0]:OUTPUT ACCEPT [0:0]-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT-A INPUT -m set --match-set china src -p tcp -m tcp --dport 80 -j ACCEPT-A INPUT -m set --match-set china src -p tcp -m tcp --dport 443 -j ACCEPT-A INPUT -m set --match-set china src -p udp -m udp --dport 5060 -j ACCEPT-A INPUT -p udp -m udp --dport 16384:32768 -j ACCEPT-A INPUT -s 172.18.0.0/16 -j ACCEPT-A INPUT -s 47.107.xxx.xxx/32 -j ACCEPT-A INPUT -p icmp -j ACCEPT-A INPUT -i lo -j ACCEPT-A OUTPUT -o lo -j ACCEPTCOMMITsystemctl restart iptables重启就⽣效。
一、概述FreeSWITCH是一个开源的通联方式交换评台,它可以用于构建实时通信应用。
在使用FreeSWITCH进行开发时,我们需要了解其开发调用方式,以便更好地利用其功能和特性。
二、 FreeSWITCH的开发调用方式1. API调用:FreeSWITCH为开发者提供了丰富的API接口,可以用于呼叫控制、媒体处理、事件处理等功能。
开发者可以通过API调用实现自定义的通联方式呼叫逻辑,处理音频和视瓶流等操作。
2. 事件订阅:FreeSWITCH支持事件驱动的方式进行开发,开发者可以订阅各种事件,例如呼叫建立、呼叫挂断、音频流变更等,从而实现对通信过程的实时监控和处理。
3. 脚本扩展:FreeSWITCH支持脚本扩展,开发者可以使用Lua、Python等脚本语言编写扩展模块,实现特定的功能和定制化需求。
4. 原生模块开发:FreeSWITCH提供了丰富的C语言API,开发者可以基于这些API开发原生模块,实现高性能的通信处理和定制化功能。
5. 第三方库集成:FreeSWITCH支持与第三方库进行集成,开发者可以利用第三方库实现特定的功能,例如音频编解码、媒体处理等。
三、开发实例1. 呼叫控制:通过API调用,开发者可以实现呼叫的发起、接听、挂断等操作,从而实现通联方式呼叫的自动化处理。
2. 媒体处理:开发者可以利用API进行音频和视瓶流的处理,实现录音、播放、转码等功能。
3. 事件处理:通过订阅各种事件,开发者可以实现对通信过程的实时监控和处理,例如实时呼叫状态展示、异常处理等。
4. 定制化功能:通过开发原生模块或脚本扩展,开发者可以实现特定的定制化功能,满足业务需求。
四、开发调用方式的优势1. 灵活性:FreeSWITCH提供多种开发调用方式,能够满足不同需求的开发者,具有较高的灵活性。
2. 定制化能力:开发者可以基于FreeSWITCH进行二次开发,实现定制化的通信应用,满足特定的业务需求。
3. 高性能:原生模块开发和第三方库集成可以实现高性能的通信处理,满足高并发、低延迟的需求。
linux编译freeswitch简书编译 FreeSWITCH 是在 Linux 系统上构建和安装 FreeSWITCH通信服务器的过程。
下面是在 Linux 上编译 FreeSWITCH 的简要步骤:安装编译依赖:在开始编译之前,需要安装一些编译FreeSWITCH 所需的依赖项。
这些依赖项包括 GCC、autoconf、automake、libtool、pkg-config、libjpeg、libsqlite3、libcurl 等。
使用适合你 Linux 发行版的包管理器(如 apt、yum、dnf 等)安装这些依赖项。
获取源代码:从 FreeSWITCH 官方网站下载最新的源代码压缩包,或者使用 Git 克隆源代码仓库。
如果使用 Git,请执行以下命令:git clone URL/freeswitch.git配置编译选项:进入源代码目录,运行以下命令来生成编译配置:./bootstrap.sh配置编译选项:运行以下命令以配置编译选项:./configure在这一步,你可以根据需要添加或删除一些模块,并进行其他自定义配置。
例如,你可以通过添加 --enable-core-uuid 选项启用UUID 支持,或者通过 --disable-all-core 禁用所有核心模块。
编译和安装:运行以下命令编译并安装 FreeSWITCH:make && make install这会编译 FreeSWITCH 并将二进制文件和其他相关文件安装到系统中。
你可以使用 make install 命令的 PREFIX 参数来指定安装路径,例如:make install PREFIX=/usr/local/freeswitch。
配置和启动 FreeSWITCH:在编译和安装完成后,进入安装目录,进行配置和启动 FreeSWITCH:cd /usr/local/freeswitchcp conf/vanilla/vars.xml conf/sip_profiles/external/./bin/freeswitch -nc运行 ./bin/freeswitch -nc 命令来启动 FreeSWITCH。
freeswitch 编译模块
FreeSWITCH是一个开源的电话系统平台,它的灵活性和可扩展性使得它成为了许多企业和组织的首选。
而编译模块则是定制化FreeSWITCH的关键所在。
编译FreeSWITCH模块的基本流程如下:
1. 下载FreeSWITCH源码,解压到本地目录。
2. 进入源码目录,执行./configure命令,生成makefile。
3. 编写自定义模块,将模块代码复制到FreeSWITCH源码目录下的src/mod目录。
4. 修改FreeSWITCH源码目录下的modules.conf文件,添加自定义模块的名称。
5. 进入FreeSWITCH源码目录下的src/mod目录,执行make命令,编译模块。
6. 将编译出的模块文件复制到FreeSWITCH的安装目录下的
lib/freeswitch/mod目录下。
7. 重启FreeSWITCH服务,使修改生效。
需要注意的是,编译FreeSWITCH模块需要掌握C/C++编程语言,并熟悉FreeSWITCH的模块开发规范。
同时,开发者还需要了解FreeSWITCH的模块加载机制与模块功能,以便进行模块编写和调试。
总之,编译FreeSWITCH模块对于自定义FreeSWITCH功能和提升系统性能都具有重要意义,开发者可以根据自己的需求进行模块编写和调试,以实现更加灵活和高效的通信方案。
部署freeswitch+fusionpbx前言:freeswitch是目前开源最火的软交换系统,fusionpbx则是其gui管理界面(只有E文版本),同样也是开源。
freeswitch相比asterisk功能和性能都要强大很多,毕竟freeswitch是一个开源的软交换系统,而asterisk只是一个开源的PBX系统,具体的一些特性不了解的同学可以看维基百科。
在无线路由器上不是freeswitch不是很麻烦,openwrt都有编译好的包,直接通过opkg安装就可以,但是如果需要GUI界面,这个就比较麻烦了,首先要解决的一个问题是无线路由器的flash容量不够,其次是fusionpbx是php开发的web程序,调试起来还是有点麻烦。
解决无线路由器flash容量不够的办法很多,dd-wrt和tomato一般是使用opt挂载U盘来解决,openwrt一般则是block-extroot方式将U盘挂载到/overlay目录,我所使用的openwrt本身集成了block-extroot功能,直接将一个4G的U盘挂载到/overlay 目录,很好解决了flash容量不够的问题。
具体操作办法我这里不累赘了,以前有很多相关的帖子,大家随便搜一下就能找到很多。
fusionpbx调试的时候,以前有一篇关于fusionpbx的文章,全E文的,不过很简单就能读明白,其使用的环境是php5,web服务利用openwrt的uhttp,数据库使用的是sqlite,但是我按照其指导,一步一步来,最后还是失败。
于是我寻求其他办法,几经失败,最后在php+lighttpd+mysq组合下成功了。
我的硬件环境是tp-link TL-845N改8M flash/64M RAM/刮U加USB口,软件环境是我以前发布的一个帖子内的,帖子名:【补充】841N V8 843N 845N 等AR9341 8M uboot(带httpd)+art ,(链接经过几个日夜的调试,终于把freeswitch+fusionpbx部署完成,不敢独享,特将笔记贴出来给有同样兴趣的同学参考一下。
好了,废话已经很多了,下面正式开始在openwrt无线路由器上部署freeswitch+fusionpbx。
一、基本配置及检出fusionpbxopkg updateopkg install zoneinfo-core zoneinfo-asiaopkg install subversion-client openssh-sftp-server unzip修改/etc/config/system 时区为:Asia/ShangHai /*先略去此步骤,如fusionpbx页面报时区错误时再修改*/检出fusionpbx版本cd /usr/share二、安装应用php部分opkg install php5opkg install php5-cgiopkg install php5-cliopkg install php5-fastcgiopkg install php5-mod-calendaropkg install php5-mod-curlopkg install php5-mod-domopkg install php5-mod-gdopkg install php5-mod-iconvopkg install php5-mod-jsonopkg install php5-mod-mbstringopkg install php5-mod-mcryptopkg install php5-mod-mysqlopkg install php5-mod-mysqliopkg install php5-mod-opensslopkg install php5-mod-pdoopkg install php5-mod-pdo-mysqlopkg install php5-mod-sessionopkg install php5-mod-simplexmlopkg install php5-mod-socketsopkg install php5-mod-xmlopkg install php5-mod-xmlreaderopkg install php5-mod-xmlwritermysql部分opkg install mysql-server libmysqlclient libncursesw libncurses libreadline terminfo uclibcxx zlib lighttpd部分opkg install lighttpdopkg install lighttpd-mod-accessopkg install lighttpd-mod-accesslogopkg install lighttpd-mod-aliasopkg install lighttpd-mod-authopkg install lighttpd-mod-cgiopkg install lighttpd-mod-evasiveopkg install lighttpd-mod-fastcgiopkg install lighttpd-mod-magnetopkg install lighttpd-mod-redirectopkg install lighttpd-mod-rewriteopkg install lighttpd-mod-scgiopkg install lighttpd-mod-simple-vhost创建软链接ln -s /usr/bin/php-cli /usr/bin/php三、MySQL配置创建数据库文件夹mkdir /mnt/data /mnt/data/tmp修改/etc/fbind-address = 0.0.0.0创建默认的数据库/usr/bin/mysql_install_db --force启动mysql/etc/init.d/mysqld start输入如下命令创建mysql的密码/usr/bin/mysqladmin -u root password ligen119登陆数据库连接上mysql之后,创建数据库create database fusionpbx\g查看当前可用数据库show databases\g授权任何位置访问(sql命令)flush privileges;四、配置php.ini和lighttpd.conf1、修改配置文件php.ini修改short_open_tag = On修改站点目录doc_root = "/usr/share/fusionpbx" 修改upload_max_filesize = 20M将Dynamic Extensions段修改为extension=ctype.soextension=curl.soextension=dom.soextension=gd.soextension=iconv.soextension=json.soextension=mbstring.soextension=mcrypt.soextension=mysql.soextension=openssl.soextension=pdo.soextension=pdo-mysql.soextension=session.soextension=sockets.soextension=tokenizer.soextension=xml.soextension=xmlreader.soextension=xmlwriter.soextension=simplexml.so修改时区 date.timezone = Asia/Shanghai注释掉; ;sqlite3.extension_dir =2、修改配置文件lighttpd.conf修改server.modules段或添加以下信息server.modules = ("mod_scgi","mod_simple_vhost","mod_auth","mod_rewrite","mod_redirect","mod_access","mod_alias","mod_fastcgi","mod_evasive")修改 server.document-root = "/usr/share/fusionpbx/"修改 s = ( "index.php", "login.php", "index.htm", "default.htm" )去注释或添加 server.port = 81添加以下配置信息或修改fastcgi配置fastcgi.server = (".php" => ("localhost" => ("socket" => "/tmp/php-fastcgi.socket","bin-path" => "/usr/bin/php-cgi","max-procs" => 2,"max-load-per-proc" => 4,"idle-timeout" => 20,"bin-environment" =>("PHP_FCGI_CHILDREN" => "4","PHP_FCGI_MAX_REQUESTS" => "2000"),"bin-copy-environment" => ("PATH","SHELL","USER"))))任意空白位置添加一行: evasive.max-conns-per-ip = 8五、安装配置freeswitch修改软件源为opkg updateopkg install freeswitch-collection-minimal freeswitch-sounds-en freeswitch-sounds-moh freeswitch-mod-valet-parkingopkg install freeswitch-mod-voicemail freeswitch-mod-say-en freeswitch-mod-xml-cdr freeswitch-mod-loopback freeswitch-mod-lua freeswitch-mod-cdr-csv freeswitch-mod-voicemail freeswitch-mod-logfile创建软链接ln -s /etc/freeswitch/ /usr/share/freeswitch/confln -s /etc/freeswitch/ /conf修改/etc/default/freeswitch文件,将/tmp/ /var/lib 更换为/usr/share/修改/etc/freeswitch/vars.xml 将/var/lib 更换为usr/share修改/etc/freeswitch/autoload_configs/voicemail.conf.xml 靠近57行位置将/var/lib 更换为/usr/share了修改/etc/freeswitch/sip_profiles/internal.xml 将以下两个位置修改为路由器内网的IP地址如我的路由器内网(LAN)地址为192.168.1.1 <param name="rtp-ip" value="$${local_ip_v4}"/>修改为<param name="rtp-ip" value="192.168.1.1"/><param name="sip-ip" value="$${local_ip_v4}"/>修改为<param name="sip-ip" value="192.168.1.1"/>六、启动程序命令集合启动/etc/init.d/mysqld start/etc/init.d/php5-fastcgi start/etc/init.d/lighttpd start/etc/init.d/freeswitch start关闭(这里只是顺带列举关闭命令)/etc/init.d/mysqld stop/etc/init.d/php5-fastcgi stop/etc/init.d/lighttpd stop/etc/init.d/freeswitch stop七、配置fusionpbx配置时选择数据库类型为mysql用户名密码为fusionpbx登录用户名和密码第二页填写数据库名为开始创建的数据库名,我的数据库名是fusionpbx新建数据库用户名和密码均为空点击下一步即可在mysql中数据库创建fusionpbx相关表和数据登陆后点击“高级”->"默认设置"将swicth区域的"conf","db"等等所指目录在前面添加:“/usr/share/freeswitch”(这里全部是E文的,并不是什么“高级”“默认设置”之类的),完了保存一些。