• <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)前的位置是:  首頁(yè) > 新聞 > 國(guó)內(nèi) >
     首頁(yè) > 新聞 > 國(guó)內(nèi) >

    Kamailio/OpenSIPS學(xué)習(xí)筆記-如何通過(guò)軟交換呼叫PSTN

    2018-04-08 10:31:03   作者:james.zhu    來(lái)源:CTI論壇   評(píng)論:0  點(diǎn)擊:


      通過(guò)軟交換呼叫PSTN是非常普遍的一個(gè)功能,但是呼叫不同的目的地號(hào)碼需要對(duì)其分機(jī)權(quán)限做一個(gè)簽權(quán)管理。一般的業(yè)務(wù)控制包括,系統(tǒng)僅允許某些分機(jī)呼叫本地,系統(tǒng)允許其他特別分機(jī)呼叫外地長(zhǎng)途,系統(tǒng)也可能還允許一些特殊用戶可以呼叫某些國(guó)家的國(guó)際長(zhǎng)途。如何實(shí)現(xiàn)對(duì)分機(jī)的呼叫控制是一個(gè)軟交換和媒體服務(wù)器必須具有的一個(gè)功能。在媒體服務(wù)器中,我們可以通過(guò)撥號(hào)規(guī)則對(duì)其撥號(hào)位段進(jìn)行判斷來(lái)進(jìn)行呼叫權(quán)限控制,在軟交換的呼叫流程中也可以支持類似的功能。今天,我們就通過(guò)一個(gè)配置實(shí)例來(lái)實(shí)現(xiàn)對(duì)其呼叫權(quán)限的控制。
      1、在Kamalio或者OpenSIPS中,如果需要實(shí)現(xiàn)對(duì)其呼叫路由進(jìn)行權(quán)限控制,可以通過(guò)兩個(gè)模塊來(lái)實(shí)現(xiàn)。這兩個(gè)模塊是:Permission 和 Group 模塊。
      Permission 模塊主要負(fù)責(zé)提供基于ACL的權(quán)限管理,例如呼叫路由,注冊(cè)權(quán)限,URL權(quán)限,地址權(quán)限,可信任請(qǐng)求等進(jìn)行權(quán)限判斷管理。
      Group 模塊主要對(duì)成員屬性進(jìn)行管理,通過(guò)數(shù)據(jù)庫(kù)對(duì)其成員進(jìn)行管理。
      通過(guò)以上兩個(gè)主要的模塊就可以實(shí)現(xiàn)分機(jī)管理,可以判斷是否允許本地呼叫,長(zhǎng)途呼叫或國(guó)際長(zhǎng)途呼叫等功能。測(cè)試環(huán)境包括:opensips 軟交換, Asterisk 和語(yǔ)音卡配置的freepbx或Asterisk媒體服務(wù)器。
      2、為了通過(guò)以上兩個(gè)模塊對(duì)呼叫路由權(quán)限進(jìn)行管理,我們需要設(shè)置一些配置,加載相應(yīng)的模塊測(cè)試來(lái)支持具體的業(yè)務(wù)設(shè)置。
      首先,管理員需要在配置文件中加載需要的模塊:
      loadmodule "permissions.so"
      loadmodule "group.so"
      然后加載模塊以后,用戶需要配置相應(yīng)的模塊參數(shù):
      modparam("permissions", "db_url",
      "mysql://opensips:opensipsrw@localhost/opensips")
      modparam("group", "db_url",
      "mysql://opensips:opensipsrw@localhost/opensips")
      注意,以上配置文件是筆者配置的數(shù)據(jù)庫(kù)用戶和密碼,用戶需要修改為自己的配置賬號(hào),否則會(huì)出現(xiàn)數(shù)據(jù)庫(kù)連接錯(cuò)誤。
      cfg配置文件需要添加到配置,檢查呼叫源地址狀態(tài):
      if(!check_source_address(“0”)){
      if (!proxy_authorize("", "subscriber")) {
      proxy_challenge("", "0");
      exit;
      }
      if (!db_check_from()) {
      sl_send_reply("403","Forbidden auth ID");
      exit;
      }
      }
      最后,在本cfg的配置中,檢查呼出的號(hào)碼匹配,判斷是否允許本地呼叫,外地長(zhǎng)途呼叫和國(guó)際長(zhǎng)途呼叫業(yè)務(wù)。注意,此代碼中的通配符用戶可以根據(jù)自己的呼叫撥號(hào)規(guī)則來(lái)進(jìn)行修改,以便支持用戶自己的呼叫號(hào)碼匹配。
      #撥打一個(gè)7位數(shù)的本地號(hào)碼, 這里的本地城市是0755,用戶可以修改為自己的城市區(qū)號(hào),如果其他位數(shù)本地號(hào)碼的話,
      if ($rU=~"^[2-9][0-9]{6}$") {
      if (db_is_user_in("credentials","local")) {
      prefix(“0755”);
      route(4); // 路由到route(4)
      exit;
      } else {
      sl_send_reply("403", "No permissions for local calls");
      exit;
      }
      }
      # 允許呼叫長(zhǎng)途電話,例如1+區(qū)號(hào)+用戶號(hào)碼
      if (uri=~"^sip:1[0-9][0-9][0-9][2-9][0-9]{6}@") {
      if (db_is_user_in("credentials","ld")) {
      route(4); // 路由到 route(4)
      exit;
      } else {
      sl_send_reply("403", "No permissions for long distance");
      exit;
      }
      }
      #國(guó)際呼叫,允許呼叫011國(guó)際區(qū)號(hào)號(hào)碼
      if (uri=~"^sip:011[0-9]*@") {
      if (db_is_user_in("credentials","int")) {
      strip(3);
      route(4); // 路由到route(4)
      exit;
      } else {
      sl_send_reply("403", "No permissions for international
      calls");
      exit;
      }
      }
      ## 通過(guò)網(wǎng)關(guān)呼出的路由規(guī)則
      route[4] {
      # 路由到網(wǎng)關(guān)地址,測(cè)試環(huán)境中,這里的地址是Asterisk+sangoma 語(yǔ)音板卡的地址,用戶也可以使用其他的媒體服務(wù)器呼出。
      rewritehostport("ip_and_port_of_the_gateway");
      route(1);
      }
      完成相關(guān)cfg文件后,用戶需要通過(guò)ACL添加不同分機(jī)(1000和1001)來(lái)進(jìn)行呼叫測(cè)試。具體的執(zhí)行步驟如下:
    • opensipsctl acl grant 1000@domain local // 本地呼叫
    • opensipsctl acl grant 1000@domain ld // 長(zhǎng)途呼叫
    • opensipsctl acl grant 1000@domain int // 國(guó)際呼叫
    • opensipsctl acl grant 1001@domain local // 僅允許本地呼叫
      3、配置成功以后,用戶就可以使用分機(jī)1000進(jìn)行測(cè)試,分機(jī)1000可以分別撥打本地電話,長(zhǎng)途電話,和國(guó)際長(zhǎng)途來(lái)進(jìn)行測(cè)試。如果配置成功,媒體服務(wù)器或者IPPBX呼出配置正常的話,用戶可以聽(tīng)到對(duì)端的語(yǔ)音響應(yīng)。用戶也可以使用分機(jī)1001進(jìn)行呼叫測(cè)試,撥打本地號(hào)碼和其他的長(zhǎng)途號(hào)碼。如果配置成功的話,分機(jī)1001 僅能允許實(shí)現(xiàn)本地呼叫,因?yàn)樵贏CL設(shè)置中,此號(hào)碼僅允許實(shí)現(xiàn)local call的呼叫。
      筆者再次提醒讀者,我們使用的是e164的N7規(guī)范,本地號(hào)碼一般視為七位數(shù)號(hào)碼。另外,用戶呼叫到asterisk IPPBX以后,筆者做了一個(gè)撥號(hào)規(guī)則的調(diào)整,對(duì)國(guó)際長(zhǎng)途業(yè)務(wù)進(jìn)行語(yǔ)音播放,沒(méi)有真正呼叫國(guó)際長(zhǎng)途號(hào)碼。
      另外,此實(shí)例僅是一個(gè)根據(jù)不同號(hào)碼實(shí)現(xiàn)的呼叫權(quán)限管理的cfg配置路由。用戶可以根據(jù)實(shí)際的業(yè)務(wù)需求做進(jìn)一步的拓展來(lái)滿足不同用戶不同國(guó)家的呼叫。實(shí)際生產(chǎn)環(huán)境中,用戶可以根據(jù)一些用戶的需求實(shí)現(xiàn)幾種部署方式:
      根據(jù)號(hào)碼權(quán)限或均衡負(fù)載的要求,軟交換可以路由到不同的IPPBX IP地址。
      可以根據(jù)時(shí)間和資費(fèi)不同路由到不同的落地資源
      ippbx或者媒體服務(wù)器可以支持其他的解決方案,例如freepbx+sangoma 語(yǔ)音板卡或sangoma 網(wǎng)關(guān),freeswitch加sangoma 語(yǔ)音板卡或網(wǎng)關(guān)都可以實(shí)現(xiàn)落地呼叫。
      4、在本章節(jié)的介紹中,我們結(jié)合開(kāi)源軟交換和媒體服務(wù)器或IPPBX實(shí)現(xiàn)對(duì)不同分機(jī)號(hào)碼進(jìn)行呼叫權(quán)限管理的實(shí)例。在本實(shí)例中,我們使用了兩個(gè)軟交換重要的模塊permission和group來(lái)分別實(shí)現(xiàn)ACL管理和成員的管理。在配置文件中,用戶需要針對(duì)不同的號(hào)碼進(jìn)行號(hào)碼匹配,然后路由到落地的Asterisk服務(wù)器。在實(shí)際生產(chǎn)環(huán)境中,用戶也可能添加不同的媒體服務(wù)器實(shí)現(xiàn)更多的業(yè)務(wù)拓展和均衡負(fù)載的要求,用戶可以針對(duì)不同的策略添加最終媒體服務(wù)器的IP地址來(lái)實(shí)現(xiàn)。
      總之,使用permission和group可以輕松實(shí)現(xiàn)對(duì)分機(jī)號(hào)碼的權(quán)限管理,而且也相對(duì)比較靈活,支持更好的拓展。筆者希望本實(shí)例可以給讀者提供一個(gè)正確的思路,讀者可以根據(jù)自己的實(shí)際環(huán)境結(jié)合業(yè)務(wù)的需求做進(jìn)一步的研究。
      參考資料:
      http://www.kamailio.org.cn/doku.phpid=group_user-groups_module_with_db-backend_released
      http://www.kamailio.org.cn/doku.phpid=permissions_permissions_control_module_released
      關(guān)注微信公眾號(hào):asterisk-cn,獲得有價(jià)值的行業(yè)分享
      freepbx 技術(shù)論壇:www.ippbx.org.cn
      Asterisk, freepbx技術(shù)文檔: www.freepbx.org.cn
      融合通信商業(yè)解決方案,協(xié)同解決方案首選產(chǎn)品:www.hiastar.com
    【免責(zé)聲明】本文僅代表作者本人觀點(diǎn),與CTI論壇無(wú)關(guān)。CTI論壇對(duì)文中陳述、觀點(diǎn)判斷保持中立,不對(duì)所包含內(nèi)容的準(zhǔn)確性、可靠性或完整性提供任何明示或暗示的保證。請(qǐng)讀者僅作參考,并請(qǐng)自行承擔(dān)全部責(zé)任。

    專題

    亚洲精品网站在线观看不卡无广告,国产a不卡片精品免费观看,欧美亚洲一区二区三区在线,国产一区二区三区日韩 高陵县| 枞阳县| 井冈山市| 莫力| 兴文县| 景德镇市| 自贡市| 沧源| 杭州市| 额尔古纳市| 沅陵县| 洪雅县| 武胜县| 郴州市| 蒲江县| 池州市| 清流县| 石嘴山市| 三穗县| 小金县| 湖州市| 四平市| 沧州市| 隆子县| 辽阳县| 香河县| 贡觉县| 庆元县| 疏附县| 江阴市| 广汉市| 博乐市| 滁州市| 横峰县| 和平县| 承德市| 平昌县| 大方县| 恩平市| 永安市| 响水县| http://444 http://444 http://444 http://444 http://444 http://444