首页 > 新闻 > 专家观点 >

《FreeSWITCH 1.2》:探讨XML高级配置

2014-04-28 15:41:13   作者:   来源:CTI论坛   评论:0  点击:


  到目前为止,我们一直在使用FreeSWITCH默认安装的静态XML实例配置文件。在这个章节,我们将进一步演示如何在使用最少静态XML的情况下,来灵活配置FreeSWITCH。FreeSWITCH 提供了多种方法让用户可以对FreeSWITCH实行动态控制。每一种方法关注的领域不同,一些函数的功能可能有所重叠。例如,mod_xml_curl 和语言绑定都支持用户创建动态的配置文件。在这一章节,我们将涵盖以下几种方法:

  · mod_xml_curl: 这个模块支持从web服务器提取一个配置文件。配置文件包括拨号规则,用户目录,和基本配置文件。在服务器出现问题时,它也可以通过一个静态的回退形式来支持一个动态的配置。

  · Language bindings: 工作方法类似于mod_xml_curl,  用户可以使用系统支持的脚本语言(Lua, Perl, Java, Python, 和其他语言)来生成一个动态配置。

  · originate API: originate API工作的方式比较独特,它可以在系统中创建一个新的电话呼叫,因此取名为originate. 我们将通过fs_cli 简单演示如何通过originate API创建一个呼叫。

  Event Socket/ESL: Event Socket和ESL(Event Socket Library)提供了一个强大的机制,可以对FreeSWITCH进行控制。在这一章节,我们将简要介绍Event Socket,在第十章,通过外部手段控制FreeSWITCH中,我们将做详细讨论。

  mod_xml_curl基础

  mod_xml_curl模块借用了着名的cURL库 (curl.haxx.se)从web 服务器提取XML配置文件。FreeSWITCH 可以及时解析这些文件,作为静态XML配置文件使用。因为用户可以控制web服务器,用户可以从请求中的获得XML,然后修改这些XML文件。当用户需要从同一台web 服务器配置多台FreeSWITCH时,这种方式对用户来说非常有帮助。这样设置的好处是可以通过修改一个地方来控制整个服务器集群。

  所有在这一章节的mod_xml_curl举例以前web 服务器可以运行PHP脚本。这些举例已经在Apache2 和mod_php测试,因此可以在Linux/UNIX 和Windows运行。

  为了让mod_xml_curl 在FreeSWITCH 启动时成功加载,需要完成以下几步:

  1.使用编辑器,打开conf/autoload_configs/modules.conf.xml 文件,添加mod_ xml_curl 模块:

  <load module="mod_xml_curl"/>

  2.保存文件。

  就像用户想象的那样,我们必须对FreeSWITCH 提供一个URL,确保可以通过这个URL 提取需要的配置文件。我们可以编辑文件xml_curl.conf.xml 来实现,执行以下几步。

  3.使用编辑器,打开文件conf/autoload_configs/xml_curl.conf.xml,添加下面的配置:

  <configuration name="xml_curl.conf" description="curl

  conf">

  <bindings>

    <binding name="arbitrary_name">

      <param name="gateway-url"

      value="http://localhost/xml_curl/index.php"

      bindings="configuration|dialplan|directory"/>

    </binding>

   </bindings>

  </configuration>

  4. 保存文件。

  5. 重新启动FreeSWITCH。

  用户可以自定义binding name 属性,建议这个属性具有可读性。在binding中的param支持一个URL值,这个URL获得名次请求的配置文件内容。在我们的例子中,使用了本地的PHP脚本,但是,用户可以使用一个公网的web服务器。就像用户看到的一样,我们选择了FreeSWITCH 环境的configuration,dialplan和directory 作为web服务器的一个页面请求。

  非常关键的地方是,当FreeSWITCH 从用户的基本获得一个请求时,这个脚本可能不知道如何做出回复。使用以下的回复来告诉FreeSWITCH ,脚本不知道如何处理这个请求,用户可以通过在本地配置文件设置:

  <?xml version="1.0" encoding="UTF-8" standalone="no"?>

  <document type="freeswitch/xml">

   <section name="result">

    <result status="not found"/>

   </section>

  </document>

  这样的方式非常有助于我们问题的处理,例如,用户想在拨号规则中处理几个Extensions或者contexts,或用户仅想对几个模块支持一些特别的选项。在接下来的部分,我们将演示一些完全可以按照我们要求来执行的例子。首先,我们将介绍index.php文件,这个文件负责对所有请求的驱动。把以下文件保存为index.php, 保存在服务器上一个正确的路径······

  未完待续······

相关阅读:

分享到: 收藏

专题