• <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>
    您當(dāng)前的位置是:  首頁 > 新聞 > 國內(nèi) >
     首頁 > 新聞 > 國內(nèi) >

    Kamailio/OpenSIPS學(xué)習(xí)筆記-如何使用數(shù)據(jù)庫實(shí)現(xiàn)撥號規(guī)則控制

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


      在我們前面的系列筆記中,我們的撥號規(guī)則是使用腳本寫死的代碼。這樣的代碼不利于管理維護(hù)。現(xiàn)在我們介紹如何通過撥號控制模塊來實(shí)現(xiàn)撥號管理。
      這里,為了實(shí)現(xiàn)撥號規(guī)則模塊化管理,我們需要引用兩個(gè)概念來支持撥號規(guī)則的管理。一個(gè)概念是使用AUTH_DB的參數(shù)dpid(Dialplan Identification),我們可以設(shè)置不同的用戶走不同的路由。另外一個(gè)概念是通過DIALPLAN模塊來管理路由,通過一個(gè)腳本管理不同用戶位置,不同路由和不同媒體服務(wù)器轉(zhuǎn)發(fā)設(shè)置。
      1、我們需要通過幾個(gè)步驟來實(shí)現(xiàn)以上管理功能。首先,我們需要在subscriber表中添加dpid,通過以下命令執(zhí)行:
      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"
      設(shè)置模塊加載參數(shù):
      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")
      添加撥號規(guī)則處理流程:
      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、設(shè)置cfg腳本以后,用戶需要通過源代碼添加幾個(gè)路由設(shè)置:使用文本編輯器,vi,執(zhí)行 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"),
      通過界面設(shè)置撥號規(guī)則的路由表,在設(shè)置界面時(shí),需要注意以下幾個(gè)撥號匹配方式的不同, 另外,這里的屬性就是在上面代碼中所添加到用戶location, routing和媒體服務(wù)器路由設(shè)置。
      這里的路由規(guī)則通過號碼匹配和屬性實(shí)現(xiàn)了統(tǒng)一管理:
    • 如果用戶撥打了國際長途(011),國內(nèi)長途(01),本地號碼(7位匹配),則通過路由屬性4出局。
    • 如果撥打的1XXXX則通過屬性3呼叫,查詢user location。
    • 如果用戶撥打以×為前綴的號碼,或者熱鍵撥號功能,則通過屬性5媒體服務(wù)器出局。
      3、保存以上設(shè)置以后,如果配置成功的話,用戶可以分別測試呼叫流程:
    • 從PSTN呼叫,撥打以011為前綴的號碼,呼叫到PSTN網(wǎng)關(guān)出局。
    • 任何內(nèi)部號碼,呼叫以1XXX測試。
    • 任何以功能熱鍵×開始的撥號,都發(fā)送到媒體服務(wù)器。
      4、在本章節(jié)的分享中,我們討論了如何使用數(shù)據(jù)庫存儲(chǔ)來實(shí)現(xiàn)呼叫路由的管理。大家知道,通過數(shù)據(jù)庫管理會(huì)比強(qiáng)行在代碼中寫死路由規(guī)則更加方便管理和維護(hù)。但是,在創(chuàng)建數(shù)據(jù)庫管理時(shí),用戶需要添加幾個(gè)相應(yīng)的數(shù)據(jù)庫表單,軟交換通過表單查詢獲得用戶的location信息,并且需要修改php代碼來支持3種路由屬性。完成這些工作后,用戶需要通過界面來設(shè)置不同的路由屬性對撥號規(guī)則進(jìn)行一定的規(guī)范。通過以上步驟,用戶基本上完成了通過數(shù)據(jù)庫配置路由管理的方式,用戶可以通過撥號規(guī)則來做進(jìn)一步的測試驗(yà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
    【免責(zé)聲明】本文僅代表作者本人觀點(diǎn),與CTI論壇無關(guān)。CTI論壇對文中陳述、觀點(diǎn)判斷保持中立,不對所包含內(nèi)容的準(zhǔn)確性、可靠性或完整性提供任何明示或暗示的保證。請讀者僅作參考,并請自行承擔(dān)全部責(zé)任。

    專題

    亚洲精品网站在线观看不卡无广告,国产a不卡片精品免费观看,欧美亚洲一区二区三区在线,国产一区二区三区日韩 石狮市| 华宁县| 武汉市| 江都市| 龙游县| 调兵山市| 通河县| 开远市| 沁源县| 扶沟县| 顺平县| 长子县| 封开县| 若尔盖县| 尚志市| 蓝山县| 河源市| 永定县| 陆河县| 临安市| 宁都县| 邯郸市| 三都| 怀柔区| 灵武市| 咸丰县| 北票市| 夹江县| 东山县| 中宁县| 禹城市| 太谷县| 吴川市| 台东县| 方城县| 潞城市| 闽清县| 高陵县| 白山市| 河南省| 翁源县| http://444 http://444 http://444 http://444 http://444 http://444