大家都知道,F(xiàn)reeSWITCH默認是從磁盤中xml文件,決定系統(tǒng)中有哪些用戶的。
靈璧網(wǎng)站建設公司成都創(chuàng)新互聯(lián)公司,靈璧網(wǎng)站設計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為靈璧上1000家提供企業(yè)網(wǎng)站建設服務。企業(yè)網(wǎng)站搭建\外貿(mào)營銷網(wǎng)站建設要多少錢,請找那個售后服務好的靈璧做網(wǎng)站的公司定做!
對于一個常規(guī)的信息系統(tǒng),用戶信息都是存儲在數(shù)據(jù)庫中。
以下非常簡單的演示了,F(xiàn)reeSWITCH中的用戶如何使用數(shù)據(jù)庫注冊。
準備工作:
一套LAMP或LNMP環(huán)境
編譯FreeSWITCH 的mod_xml_curl 模塊
Apache + php7 + MySQL 5.7 中的php腳本
根據(jù)實際情況,修改相關參數(shù)
zhouss@zhouss/var/www/html$ cat chunli_test.php
<?php
/*
* 作者:李春利
* 功能:演示接收FreeSWITCH注冊請求,連接到遠程MySQL數(shù)據(jù)庫檢索用戶密碼,返回XML文件
* 備注:PHP 7.0 版本程序,注意MySQL函數(shù)發(fā)生了變化
* MySQL數(shù)據(jù)庫表快速創(chuàng)建:
CREATE DATABASE IF NOT EXISTS `freeswitch` DEFAULT CHARACTER SET utf8;
USE `freeswitch`;
DROP TABLE IF EXISTS `authentication`;
CREATE TABLE `authentication` (
`user_name` varchar(100) NOT NULL,
`user_password` varchar(100) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `authentication` VALUES ('lao_wang','tiger'),('1234','4321'),('chunli','chunli'),('1030','123456'),('1019','1234'),('2222','12345678');
*/
$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數(shù)據(jù)庫連接失敗\n";
exit();
}
if(!mysqli_select_db($link,$db_name))
{
echo"MySQL 數(shù)據(jù)庫選擇失敗\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怎么設置的,自己加上原先的參數(shù)。
使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優(yōu)先,如果請求失敗了,再到本地磁盤找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'), 注冊
互相撥打電話,試試
調(diào)錯技巧:
按F8,打開 debug級別日志。
撥打電話,打不通,如果出現(xiàn)以下情況,說明HTTP請求是失敗的,檢查php腳本的ip,user,password參數(shù)
2017-06-29 01:21:40.705900 [WARNING] mod_voicemail.c:3487 Can't find user [1000@172.16.66.88]
如果出現(xiàn)以下情況,說明HTTP請求被拒絕,tcpdump 查看發(fā)來的包結(jié)構(gòu)。
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

lao_wang的電話顯示1234來電了

當前題目:freeswitch使用外部directory代替磁盤xml文件
鏈接分享:http://chinadenli.net/article40/goidho.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供用戶體驗、網(wǎng)站建設、網(wǎng)站策劃、軟件開發(fā)、外貿(mào)建站、建站公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)