freeswitch系列1概述

1、PBX与freeswitch

PBX是Private Branch eXchange的缩写形式,用户级交换机,即公司内部使用的电话业务网络,系统内部分机用户分享一定数量的外线。
FreeSwitch是一个开源的电环交换平台,是一个跨平台的/伸缩性极好的/免费的/多协议的电话软交换平台。
从下面两张拓扑图可以看出PBX的作用。
在这里插入图片描述
在这里插入图片描述
图一模式,公司内部只能有7部电话,使用7个运营商号码。图二模式,公司内部可以有N个内部号码,共享7个运营商号码,并且内部号码对打免费。

2、源码目录说明

2.1 根目录

在这里插入图片描述
这是freeswitch1.6版本的源码目录,其中比较重要的有:
conf:存放各种配置,freeswitch的配置非常多,很多业务流程也是通过修改配置,不用修改代码生效。
libs:第三方库目录,一般知道第三方库提供的接口就行。
srcipts:各种脚本,比如Lua。
src:代码核心和模块目录,需要重点理解的地方,特别是核心代码。
其它目录暂时没那么重要。
根目录下,除了各个目录,还有一个文件modules.conf特别重要,这个文件可以根据编译选项,或者检查系统库环境,决定编译哪些模块,前面有#的表示不编译。
在这里插入图片描述
接下来看看几个重要一级目录的子目录。

2.2 第三方库目录libs

在这里插入图片描述

第三方库也有很多,大部分不需要去深入理解,只需要知道这个库是干嘛的,比如srtp和libzrtp是用于媒体加密的,会调用接口就行。因为freeswitch主要用于sip通信,所以sofia-sip需要重点去了解。

2.3 核心目录

在这里插入图片描述
src下主要包括switch_xxx开头的核心代码,mod/目录下的模块代码两部分。其中switch开头的,我称它为大核心,switch_core开头的,称为小核心。大核心代码,是freeswitch最关键的代码,需要做到每个文件都去阅读。

2.4 模块目录

在这里插入图片描述
src/mod下的模块代码,进行了分类,每个分类的功能如下:
在这里插入图片描述
其中最重要的,还是sip相关的mod_sofia,属于端点endpoints分类。另外我们的AK业务,属于applications分类,在此分类下,新增mod_akcs。
下面再划出几个重要模块。
应用分类:mod_dptools实现了APP功能,mod_commands实现了API功能,这两个是什么东西,这篇暂时不展开,后面会有专门一篇细讲。mod_db实现跟数据库有关的,也很重要。
在这里插入图片描述
拨号规则分类
拨号规则主要对来电进行路由,规则可以通过xml来实现,也可以通过其它,但是一般使用xml。
在这里插入图片描述
端点分类
基本上是使用sip端点,其它协议我们不关心。
在这里插入图片描述
嵌入式脚本语言分类
freeswitch支持多种脚本语言,用得最多的还是lua。
在这里插入图片描述

3、部署目录

make install后,freeswitch会部署到—prefix=指定的目录,不指定默认安装到/usr/local,我这里部署到/home/hyq/workspace/deplay/freeswitch1.6。
在这里插入图片描述
部署根目录比较好理解,下面每个目录进行详细说明。

3.1 bin目录

freeswitch服务程序和各种工具,刚开始使用freeswitch就行。
在这里插入图片描述

3.2 配置conf目录

freeswitch的配置非常多,一开始接触经常会害怕,刚开始只要先抓住几个重要配置就行。
在这里插入图片描述
首先配置根目录下,有freeswitch.xml和vars.xml两个文件,这两个是全局的,其中freeswitch.xml没做什么具体的事,就是incllude各个子目录的配置文件和vars.xml。
vars.xml设置一些全局变量,比如下面两行,设置控制台日志等级变量为debug

1.<!-- various debug and defaults -->  
2.<X-PRE-PROCESS cmd="set" data="call_debug=false"/>  
3.<X-PRE-PROCESS cmd="set" data="console_loglevel=debug"/>  

autoload_configs目录是各个模块配置文件,dialplan目录是拨号规则文件,directory是用户文件,sip_profiles是sip配置文件。

3.2.1 模块配置autoload_configs

在这里插入图片描述
这个目录下是各个mod的配置文件,其中有两个跟具体mod无关的,或者可以理解为全局配置。其中switch.conf.xml就是全局配置,里面很多使用vars.xml中定义的全局变量,下面看下switch.conf.xml中的一段配置,全局默认日志等级为debug,当然也可以使用上面vars.xml定义的全局变量console_loglevel。注意两者的区别,vars.xml只是定义变量,不使用就没意义,switch.conf.xml才是全局配置,配置即生效。

1.<!-- Default Global Log Level - value is one of debug,info,notice,warning,err,crit,alert -->  
2.<param name="loglevel" value="debug"/>  

modules.conf.xml定义了哪些模块被加载,下面是一段配置示例。

1.<configuration name="modules.conf" description="Modules">  
2.  <modules>  
3.    <!-- Loggers (I'd load these first) -->  
4.    <load module="mod_console"/>  
5.    <!-- <load module="mod_graylog2"/> -->  
6.    <load module="mod_logfile"/>  
7.    <!-- <load module="mod_syslog"/> -->  

这里有4个日志模块,其中console和file两种日志模块加载。注意这个配置和编译根目录modules.conf的区别,当前这个表示哪些模块被加载,后面那个表示哪些模块被编译。一个模块要加载肯定要被编译,反过来则不一定。

3.3 var目录

一些动态生成的文件,比如数据库,其中最重要的是核心core.db,另外sip虽然有4个,但是原理是一样的,刚开始理解一个就行。另外,如果使用外部数据库,这边可忽略。
在这里插入图片描述
另一个是日志目录,这对我们调试很重要,控制台日志和文件日志是一定要掌握的。
在这里插入图片描述

3.4 share目录

share/freeswitch/scripts可以存放嵌入式脚本,比如lua,sounds可以存放下载的音频文件,比如回铃音,按照精度可以分为8000、16000、32000、48000,单位HZ。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值