文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

freeswitch 使用外部directory 代替磁盘xml文件

2024-04-02 19:55

关注


大家都知道,FreeSWITCH默认是从磁盘中xml文件,决定系统中有哪些用户的。


对于一个常规的信息系统,用户信息都是存储在数据库中。


以下非常简单的演示了,FreeSWITCH中的用户如何使用数据库注册。



准备工作:

一套LAMP或LNMP环境

编译FreeSWITCH 的mod_xml_curl 模块



Apache + php7 + MySQL 5.7 中的php脚本

根据实际情况,修改相关参数

zhouss@zhouss/var/www/html$ cat chunli_test.php
<?php


$user   = $_POST['user'];
$domain = $_POST['domain'];
$password = "";

$db_host = "172.16.66.111";
$db_user = "root";
$db_pwd  = "root";
$db_name = "freeswitch";

function getlink($db_host,$db_user,$sb_pwd,$db_name)
{
    $link=mysqli_connect($db_host,$db_user,$sb_pwd);
    if(!$link)
    {
        echo"MySQL数据库连接失败\n";
        exit();
    }
    if(!mysqli_select_db($link,$db_name))
    {
        echo"MySQL 数据库选择失败\n";
        exit();
    }
    mysqli_query($link, "setnames utf8");

    return $link;
}


$link=getlink($db_host,$db_user,$db_pwd,$db_name);
$result=mysqli_query($link, "select user_password  from authentication where user_name = '${user}'");

if(mysqli_num_rows($result) > 0)
{
    while($row=$result->fetch_row())
    {  
        foreach($row as $key=>$val)
        {  
            $password = $val;
        }  
    }  
    $result->free(); 
}
else
{
    echo"查无此人{$user}\n";
    exit();
}
mysqli_close($link);
?>
<document type="freeswitch/xml">
  <section name="directory">
    <domain name="<?php echo $domain;?>">
      <params>
        <param name="dial-string" value="{presence_id=${dialed_user}@${dialed_domain}}${sofia_contact(${dialed_user}@${dialed_domain})}"/>
      </params>
      <groups>
        <group name="default">
          <users>
            <user id="<?php echo $user; ?>">
              <params>
                <param name="password" value="<?php echo $password; ?>"/>
                </params>
              <variables>
                <variable name="user_context" value="default"/>
              </variables>
            </user>
          </users>
        </group>
      </groups>
    </domain>
  </section>
</document>
zhouss@zhouss/var/www/html$



编译FreeSWITCH 相关模块

[root@CentOS ~]# iptables -F

[root@CentOS ~]# iptables -X



编译mod_xml_curl,默认不编译

[root@CentOS 01_install]# vim freeswitch-1.6.17/modules.conf 
将
#xml_int/mod_xml_curl
改为
xml_int/mod_xml_curl

编译 ./configure && make && make mod_xml_curl-install
具体你的configure怎么设置的,自己加上原先的参数。


使FreeSWITCH自动加载mod_xml_curl

[root@CentOS freeswitch]# vim ./autoload_configs/modules.conf.xml
将
    <!-- <load module="mod_xml_curl"/> -->
改为
	<load module="mod_xml_curl"/>
	


修改FreeSWITCH用户注册的方式,HTTP优先,如果请求失败了,再到本地磁盘找xml文件


[root@CentOS freeswitch]# vim autoload_configs/xml_curl.conf.xml
<configuration name="xml_curl.conf" description="cURL XML Gateway">
  <bindings>
    <binding name="directory">
       <param name="gateway-url" value="http://172.16.20.17/chunli_test.php" bindings="directory"/>
    </binding>
  </bindings>
</configuration>


修改拨号计划,添加通话路由

[root@CentOS freeswitch]# vim dialplan/default.xml 
<condition field="destination_number" expression="^(10[01][0-9]|1234|lao_wang)$">




启动FreeSWITCH

一个SIP 使用 ('lao_wang','tiger'),注册

一个SIP 使用('1234','4321'), 注册


互相拨打电话,试试





调错技巧:

按F8,打开 debug级别日志。



拨打电话,打不通,如果出现以下情况,说明HTTP请求是失败的,检查php脚本的ip,user,password参数

2017-06-29 01:21:40.705900 [WARNING] mod_voicemail.c:3487 Can't find user [1000@172.16.66.88]



如果出现以下情况,说明HTTP请求被拒绝,tcpdump 查看发来的包结构。

2017-06-29 00:22:38.681206 [WARNING] mod_xml_curl.c:294 CURL returned error:[52] Server returned nothing (no headers, no data)


用户1234 拨打 lao_wang

freeswitch 使用外部directory 代替磁盘xml文件



lao_wang的电话显示1234来电了

freeswitch 使用外部directory 代替磁盘xml文件







阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯