• <strike id="fdgpu"><input id="fdgpu"></input></strike>
    <label id="fdgpu"></label>
    <s id="fdgpu"><code id="fdgpu"></code></s>

  • <label id="fdgpu"></label>
  • <span id="fdgpu"><u id="fdgpu"></u></span>

    <s id="fdgpu"><sub id="fdgpu"></sub></s>
    您當前的位置是:  首頁(yè) > 新聞 > 國內 >
     首頁(yè) > 新聞 > 國內 >

    Kamailio/OpenSIPS學(xué)習筆記-如何使用數據庫實(shí)現撥號規則控制

    2018-04-17 11:01:12   作者:james.zhu    來(lái)源:Asterisk開(kāi)源派   評論:0  點(diǎn)擊:


      在我們前面的系列筆記中,我們的撥號規則是使用腳本寫(xiě)死的代碼。這樣的代碼不利于管理維護。現在我們介紹如何通過(guò)撥號控制模塊來(lái)實(shí)現撥號管理。
      這里,為了實(shí)現撥號規則模塊化管理,我們需要引用兩個(gè)概念來(lái)支持撥號規則的管理。一個(gè)概念是使用AUTH_DB的參數dpid(Dialplan Identification),我們可以設置不同的用戶(hù)走不同的路由。另外一個(gè)概念是通過(guò)DIALPLAN模塊來(lái)管理路由,通過(guò)一個(gè)腳本管理不同用戶(hù)位置,不同路由和不同媒體服務(wù)器轉發(fā)設置。
      1、我們需要通過(guò)幾個(gè)步驟來(lái)實(shí)現以上管理功能。首先,我們需要在subscriber表中添加dpid,通過(guò)以下命令執行:
      mysql –u root –p // 登錄mysql 服務(wù)器
      >use opensips
      >alter table subscriber add column dpid int default 0; // 添加dpid
      然后在cfg文件中,添加以下兩個(gè)模塊:
      loadmodule "avpops.so"
      loadmodule "dialplan.so"
      設置模塊加載參數:
      modparam("avpops", "db_url", "mysql://opensips:opensipsrw@localhost/opensips")
      modparam("avpops", "avp_table", "usr_preferences")
      #------ load the dpid field to a pseudo-variable $avp(dpid) ------
      modparam("auth_db", "load_credentials", "$avp(rpid)=rpid ;$avp(dpid)= dpid")
      modparam("dialplan", "db_url","mysql://opensips:opensipsrw@localhost/opensips")
      添加撥號規則處理流程:
      if( !is_avp_set("$avp(dpid)") ) {
      $avp(dpid)=0;
      }
      if(!dp_translate("$avp(dpid)",("$ruri.user/$ruri.user"),"$avp(dest)") {
      sl_send_reply("420", "Invalid Extension");
      exit;
      }
      xlog("Dialplan: Subscriber’s dpid: $(avp(dpid))");
      xlog("Dialplan: Destination: $avp(dest)");
      if ($avp(dest)=="3") {
      #Route to usrloc
      route(3);
      }
      if ($avp(dest)=="4") {
      #route to drouting
      route(4);
      }
      if ($avp(dest)=="5") {
      #route to media server
      route(5);
      }
      sl_send_reply("420", "Invalid Extension");
      exit;
      添加最終路由管理策略:
      route[3]{
      if (!lookup("location")) {
      switch ($retcode) {
      case -1:
      case -3:
      t_newtran();
      t_reply("404", "Not Found");
      exit;
      case -2:
      sl_send_reply("405", "Method Not Allowed");
      exit;
      }
      }
      # when routing via usrloc, log the missed calls also
      setflag(2);
      route(1);
      }
      route[5] {
      rewritehostport("媒體服務(wù)器IP:5061");
      route(1);
      }
      2、設置cfg腳本以后,用戶(hù)需要通過(guò)源代碼添加幾個(gè)路由設置:使用文本編輯器,vi,執行 vi /var/www/opensips-cp/config/tools/system/dialplan/local.inc.php,修改后保存。
      $config->attrs_cb=array(
      // name , description
      array("3","usrloc"),
      array("4","routing"),
      array("5","service"),
      #array("d","Descr d"),
      #array("e","Descr e"),
      #array("f","Descr f"),
      通過(guò)界面設置撥號規則的路由表,在設置界面時(shí),需要注意以下幾個(gè)撥號匹配方式的不同, 另外,這里的屬性就是在上面代碼中所添加到用戶(hù)location, routing和媒體服務(wù)器路由設置。
      這里的路由規則通過(guò)號碼匹配和屬性實(shí)現了統一管理:
    • 如果用戶(hù)撥打了國際長(cháng)途(011),國內長(cháng)途(01),本地號碼(7位匹配),則通過(guò)路由屬性4出局。
    • 如果撥打的1XXXX則通過(guò)屬性3呼叫,查詢(xún)user location。
    • 如果用戶(hù)撥打以×為前綴的號碼,或者熱鍵撥號功能,則通過(guò)屬性5媒體服務(wù)器出局。
      3、保存以上設置以后,如果配置成功的話(huà),用戶(hù)可以分別測試呼叫流程:
    • 從PSTN呼叫,撥打以011為前綴的號碼,呼叫到PSTN網(wǎng)關(guān)出局。
    • 任何內部號碼,呼叫以1XXX測試。
    • 任何以功能熱鍵×開(kāi)始的撥號,都發(fā)送到媒體服務(wù)器。
      4、在本章節的分享中,我們討論了如何使用數據庫存儲來(lái)實(shí)現呼叫路由的管理。大家知道,通過(guò)數據庫管理會(huì )比強行在代碼中寫(xiě)死路由規則更加方便管理和維護。但是,在創(chuàng )建數據庫管理時(shí),用戶(hù)需要添加幾個(gè)相應的數據庫表單,軟交換通過(guò)表單查詢(xún)獲得用戶(hù)的location信息,并且需要修改php代碼來(lái)支持3種路由屬性。完成這些工作后,用戶(hù)需要通過(guò)界面來(lái)設置不同的路由屬性對撥號規則進(jìn)行一定的規范。通過(guò)以上步驟,用戶(hù)基本上完成了通過(guò)數據庫配置路由管理的方式,用戶(hù)可以通過(guò)撥號規則來(lái)做進(jìn)一步的測試驗證。
      關(guān)注微信公眾號:asterisk-cn,獲得有價(jià)值的行業(yè)分享
      freepbx 技術(shù)論壇:www.ippbx.org.cn
      Asterisk, freepbx技術(shù)文檔: www.freepbx.org.cn
      歐米(Omni)智能客服解決方案
      融合通信商業(yè)解決方案,協(xié)同解決方案首選產(chǎn)品:www.hiastar.com
    【免責聲明】本文僅代表作者本人觀(guān)點(diǎn),與CTI論壇無(wú)關(guān)。CTI論壇對文中陳述、觀(guān)點(diǎn)判斷保持中立,不對所包含內容的準確性、可靠性或完整性提供任何明示或暗示的保證。請讀者僅作參考,并請自行承擔全部責任。

    專(zhuān)題

    亚洲精品网站在线观看不卡无广告,国产a不卡片精品免费观看,欧美亚洲一区二区三区在线,国产一区二区三区日韩 永安市| 调兵山市| 承德市| 博罗县| 尼木县| 海口市| 额济纳旗| 华亭县| 玉山县| 米泉市| 阜宁县| 名山县| 伊宁市| 稷山县| 城口县| 三原县| 乐东| 山东| 安岳县| 湖口县| 永安市| 寿宁县| 宁安市| 廊坊市| 新和县| 乐都县| 偃师市| 莱州市| 张家港市| 林西县| 常宁市| 静海县| 旬邑县| 高碑店市| 始兴县| 容城县| 鹤壁市| 定边县| 靖远县| 庆安县| 石城县| http://444 http://444 http://444 http://444 http://444 http://444