FreeSwitch配置文件简述
前言
上篇文章简述了fs的作用和安装,本篇文章将继续介绍最重要的配置文件
一、简述
配置文件由许多 XML 文件组成。在系统装载时,XML解析器会将所有XML文件组织在一起,并读入内存,称为XML注册表。这种设计的好处在于其非常高的可扩展性。由于XML文档本身非常适合描述复杂的数据结构,在 FreeSWITCH 中 就可以非常灵活的使用这些数据。并且,外部应用程序也可以很简单地生成XML,FreeSWITCH 在需要时可以动态的装载这些 XML。另外,系统还允许在某些 XML 节点上安装回调程序(函数),当这些节点的数据变化时,系统便自动调用这些回调程序。
1.配置文件路径
安装路径下的 /conf 目录下
2.目录结构
最主要的配置文件为 freeswitch.xml,它是主配置文件,把所有配置文件“粘合”到一起,整个XML文件分为几个重要的部分:configuration (配置)、dialplan (拨号计划)、directory(用户目录)及phrase(分词)。
3. freeswitch.xml
默认XML:
<?xml version="1.0"?>
<document type="freeswitch/xml">
<!--系统常量 -->
<X-PRE-PROCESS cmd="include" data="vars.xml"/>
<!--系统配置 -->
<section name="configuration" description="Various Configuration">
<X-PRE-PROCESS cmd="include" data="autoload_configs/*.xml"/>
</section>
<!--载入拨号规则配置 -->
<section name="dialplan" description="Regex/XML Dialplan">
<X-PRE-PROCESS cmd="include" data="dialplan/*.xml"/>
</section>
<!--聊天规则配置 -->
<section name="chatplan" description="Regex/XML Chatplan">
<X-PRE-PROCESS cmd="include" data="chatplan/*.xml"/>
</section>
<!-- 分机号和注册相关 -->
<section name="directory" description="User Directory">
<X-PRE-PROCESS cmd="include" data="directory/*.xml"/>
</section>
<!-- 语言类 -->
<section name="languages" description="Language Management">
<X-PRE-PROCESS cmd="include" data="lang/de/*.xml"/>
<X-PRE-PROCESS cmd="include" data="lang/en/*.xml"/>
<X-PRE-PROCESS cmd="include" data="lang/fr/*.xml"/>
<X-PRE-PROCESS cmd="include" data="lang/ru/*.xml"/>
<X-PRE-PROCESS cmd="include" data="lang/he/*.xml"/>
<X-PRE-PROCESS cmd="include" data="lang/es/es_ES.xml"/>
<X-NO-PRE-PROCESS cmd="include" data="lang/es/es_MX.xml"/>
<X-PRE-PROCESS cmd="include" data="lang/pt/pt_BR.xml"/>
<X-NO-PRE-PROCESS cmd="include" data="lang/pt/pt_PT.xml"/>
<X-NO-PRE-PROCESS cmd="include" data="lang/sv/*.xml"/>
</section>
</document>
freeswitch.xml的根是document,在根下有5个section,每个section对应一部分功能(上文已经进行简单注解),其中有一个X-PRE-PROCESS预处理指令,它的作用是把对应xml中的参数包含到本xml文件中。fs只是在加载阶段进行简单key-value进行赋值。
4. vars.xml
截取部分内容:
<include>
<X-PRE-PROCESS cmd="set" data="default_password=1234"/>
</include>
vars.xml中存储的是系统变量(全局变量),在其他xml中可以使用 $${default_password} 来获取对应的1234这个值。这里面大部分变量均在在系统运行时自动获取,例如domain=$${local_ip_v4}即自动获取主机的ipv4地址。由于这些变量在加载的时候就载入内存中,因此我们可以手动改成我们需要的内容,也可以进行增加,实际生产中这样的操作是很常见的
<X-PRE-PROCESS cmd="set" data="default_password=567"/>
5.autoload_configs目录
此目录下的配置文件大部分是每个模块一个,命名规则为 模块名.conf.xml,各个模块的配置文件各不相同。同时也包含一些其他的配置文件比如modules.conf.xml,这个配置文件配置启动freeswitch时需要加载那些模块
<configuration name="modules.conf" description="Modules">
<modules>
<!-- Loggers (I'd load these first) -->
<load module="mod_console"/>
<load module="mod_logfile"/>
<load module="mod_enum"/>
<!-- 想要开启mod_xml_rpc模块只要吧注释去掉即可! -->
<!-- <load module="mod_xml_rpc"/> -->
<load module="mod_xml_curl"/>
</modules>
</configuration>
这个配置文件比较简单,首先定义configuration标签,其中name是名字,description是简单描述。特别注意这个name,在启动时会向xml注册表中查找name为"Modules"的configuration,然后访问它的对应配置。
6.其它
前面我们说过一些配置文件,下面还要写比较重要的我们先列出来,后续我们会分章节详细讲解我们用的到的配置文件,下面简单介绍下
-
dialplan目录
此目录主要定义了拨号计划,它是电话的路由器,我们拨打给谁,由它的规则来确定 -
ivr_menues目录
此目录定义ivr的菜单,以及处理的方案 -
directory目录
此目录主要定义分机号,也就是哪些帐号可以注册到fs中,包括用户的分组等方案 -
sip_profiles目录
此目录主要是定义SIP配置文件,主要是配置sip帐号