freeswitch 使用mod_xml_curl实现动态认证以及动态配置

Song • 1416次浏览 • 0个评论 • 2018-10-24 12:02:09

一、mod_xml_curl的安装

进入项目源码编辑文件modules.conf,取消掉xml_int/mod_xml_curl的注释。

make mod_xml_curl-install

如果你要默认启动模块,可以尝试在/usr/local/freeswitch/conf/autoload_configs/modules.conf.xml设置默认启动,也可以在freeswitch服务器load mod_xml_curl

二、mod_xml_curl的使用

该模块分为4个不同的部分,它们是;

您可以根据需要在多个不同的网关上指定绑定某一个配置,也可以绑定多个在一个API中。

1、修改

./freeswitch/conf/autoload_configs/xml_curl.conf.xml中修改配置:

<configuration name="xml_curl.conf" description="cURL XML Gateway">
  <bindings> 
    <!-- 拨号计划 --> 
    <binding name="dialplan">
      <param name="gateway-url" value="http://example1.com:80/fsapi" bindings="dialplan"/> 
    </binding>

    <!-- 上一个拨号计划报错或者无返回就调用这个,还没有就调用系统配置 -->
    <binding name="dialplan backup"> 
      <param name="gateway-url" value="http://example2.com:80/fsapi" bindings="dialplan"/>
    </binding> 

    <!-- 配置用户目录 --> 
    <binding name="directory"> 
      <param name="gateway-url" value="http://example1:80/fsapi" bindings="directory"/> 
    </binding> 

    <!-- 配置项 -->
    <binding name="configuration"> 
      <param name="gateway-url" value="http://example1:80/fsapi" bindings="configuration"/> 
    </binding> 

    <!-- 语音短语管理 -->
    <binding name="phrases">
      <param name="gateway-url" value="http://example1:80/fsapi" bindings="phrases"/> 
    </binding> 
  </bindings> 
</configuration>

也可以合并到一起:

<configuration name="xml_curl.conf" description="cURL XML Gateway">
  <bindings>
    <binding name="all configs">
      <param name="gateway-url" value="http://example1.com:80/fsapi" bindings="dialplan|configuration|directory|phrases"/>
    </binding>
    <binding name="all configs backup">
      <param name="gateway-url" value="http://example2.com:80/fsapi" bindings="dialplan|configuration|directory|phrases"/>
    </binding>
  </bindings>
</configuration>

您还可以提供一些其它的参数,比如登陆账号密码,方便接口安全认证:

<configuration name="xml_curl.conf" description="cURL XML Gateway">
  <bindings>
    <binding name="all configs">
      <param name="gateway-url" value="http://example1.com:7111/fsapi" bindings="dialplan|configuration|directory|phrases"/>

      <param name="gateway-credentials" value="muser:mypass"/>

      <param name="auth-scheme" value="basic"/> 
    </binding>
  </bindings>
</configuration>

auth-scheme默认为basic即可,name可以随意定义。比如你想传nameauth,账号密码为root:123就用<param name="auth" value="root:123"/>

三、API提示和技巧

您可以使用以下freeswitch命令来帮助调试配置。它将返回一个文件名,其中包含每个xml_curl查询的结果XML。

xml_curl debug_on

如果要从磁盘包含本地文件,可以使用以下方法;

<param name="dialplan" value="XML,XML:/path/to/custom/dialplan.xml"/>

这里要注意的一点是在xml_curl配置中使用timeout param来防止sofia配置文件对REGISTER请求没有响应。

提交评论
要回复文章请先登录注册
用户评论
  • 2018-11-16 07:55:24 回复

    api返回的xml需要按照格式拼接,如:

    &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
    
    公告
    中国晚上好,随时随地分享前沿科技,好吃好玩,有趣有料的新鲜事;本站可以分享资源,技术,观点,态度;同时希望大家做一个文明的分享者!
    广告
    pytorch中文网