a级片网址,www.一级毛片,日批国产,中文字幕日韩精品有码视频,黄色毛片免费网站,久久久精品午夜免费不卡,天堂福利视频

您當(dāng)前的位置是:  首頁 > 資訊 > 文章精選 >
 首頁 > 資訊 > 文章精選 >

OpenSIPS學(xué)習(xí)筆記-如何通過OpenSIPS-媒體服務(wù)器-語音網(wǎng)關(guān)實現(xiàn)落地呼叫

2021-02-07 13:35:12   作者: james.zhu    來源:Asterisk開源派   評論:0  點擊:


  一般來說,OpenSIPS通過SIP trunk進行純SIP網(wǎng)絡(luò)的呼叫的話,OpenSIPS平臺用戶之間的呼叫都無需落地。但是,如果用戶想通過OpenSIPS進行落地呼叫的話,OpenSIPS必須對接一個網(wǎng)關(guān)或者媒體服務(wù)器來支持落地呼叫。這里,因為OpenSIPS對接語音網(wǎng)關(guān)的話,網(wǎng)關(guān)支持的業(yè)務(wù)功能相對比較少并且缺乏媒體服務(wù)器的支持,語音提示和編碼轉(zhuǎn)換都存在一定的問題。因此,很多呼叫功能通過OpenSIPS對接一個媒體服務(wù)器的方式實現(xiàn),然后,媒體服務(wù)器再對接語音網(wǎng)關(guān)或者語音板卡出局。用戶如果需要測試通過OpenSIPS加媒體服務(wù)器落地的呼叫流程,用戶需要經(jīng)過幾個步驟來實現(xiàn),它們分別是修改cfg 配置文件,通過界面添加媒體網(wǎng)關(guān)服務(wù)器,修改界面配置文件,通過界面添加ACL組,不同SIP賬號呼叫測試。以下是一個簡單的呼叫測試流程,包括SIP終端,OpenSIPS,Asterisk媒體服務(wù)器和網(wǎng)關(guān)設(shè)備。
  說明,因為本文重點是介紹opensips中ACL配置,所以忽略了Asterisk和網(wǎng)關(guān)配置的流程。在本文章中,筆者已經(jīng)假設(shè)用戶安裝好了opensips,其控制界面,asterisk和網(wǎng)關(guān)設(shè)備。如果讀者沒有安裝此環(huán)境,請按照歷史文檔中的介紹安裝OpenSIPS,控制界面和asterisk以及網(wǎng)關(guān)配置。
  1opensips cfg文件配置
  如果用戶要實現(xiàn)opensips呼叫媒體服務(wù)器進行落地處理的話,需要添加配置文件,修改必要的設(shè)置。首先,添加權(quán)限模塊:
  loadmodule "permissions.so"
  modparam("permissions", "db_url",
  "mysql://opensips:opensipsrw@localhost/opensips")
  loadmodule "group.so"
  modparam("group", "db_url",
  "mysql://opensips:opensipsrw@localhost/opensips")
  添加了權(quán)限模塊和組模塊的處理以后,用戶需要在撥號規(guī)則中對呼出號碼進行判斷來決定媒體服務(wù)器的動作或者是否有權(quán)限呼出的規(guī)則設(shè)置。注意,這里的通配符是一個示例的通配符,用戶需要根據(jù)自己本地號碼和國際長途的設(shè)置來進行處理,包括前綴號碼設(shè)置等。在這里處理了這些流程以后,此呼叫抵達媒體服務(wù)器以后就無需再進行判斷驗證。當(dāng)然,如果用戶仍然想在媒體服務(wù)器做號碼處理,也可以根據(jù)自己的業(yè)務(wù)邏輯在媒體服務(wù)器進行處理。這里,在主路由邏輯中添加一個簽權(quán)認證的流程:
  ## authenticate and authorize
  if (check_source_address(0)) {
  # caller is a gateway
  } else
  if (is_from_local()) {
  # caller is local
  # authenticate if from local subscriber
  # authenticate all initial non-REGISTER request that pretend to be
  # generated by local subscriber (domain from FROM URI is local)
  if (!proxy_authorize("", "subscriber")) {
  proxy_challenge("", "auth");
  exit;
  }
  if (!$au==$fU) {
  send_reply(403,"Forbidden auth ID");
  exit;
  }
  consume_credentials();
  # caller authenticated
  } else {
  # if caller is not local, then called number must be local
  if (!is_uri_host_local()) {
  send_reply(403,"Rely forbidden");
  exit;
  }
  }
  然后分別添加local 呼叫,國際長途呼叫和號碼格式的判斷:
  if ($rU=~"^[5-9][0-9]{6}$") {  // 是否是本地號碼,用戶根據(jù)本地號碼位數(shù)做調(diào)整。
  if (db_is_user_in("credentials","local")) {
  prefix("0075"); // 前綴是0755 或者其他的號碼前綴
  route(to_pstn);
  } else {
  send_reply(403, "No permissions for local calls");
  exit;
  }
  }
  國內(nèi)長途的判斷,通過區(qū)號加號碼位數(shù)判斷:
  # 長途電話區(qū)號+號碼位數(shù),具體位數(shù)修改通配符設(shè)置
  if ($rU=~"^[0-9][0-9][0-9][2-9][0-9]{6}$") {
  if (db_is_user_in("credentials","ld")) {
  prefix("1");
  route(to_pstn);
  } else {
  send_reply(403, "No permissions for long distance");
  exit;
  }
  國際長途呼叫是否符合E164的號碼格式的判斷,例如呼叫日本長途電話,或者其他的國家號碼,具體號碼位數(shù)需要自己修改。
  if ($rU=~"^081[0-9]*$") {
  if (db_is_user_in("credentials","int")) {
  strip(3);
  route(to_pstn);
  } else {
  send_reply(403, "No permissions for international calls");
  exit;
  }
  }
  在路由到PSTN的模塊中添加一個呼叫媒體服務(wù)器的路由規(guī)則。保存配置文件以后,然后重新啟動OpenSIPS服務(wù)器。
  route[to_pstn] {
  # routing to the pstn (Use the IP address of the gateway)
  # Please use as the IP address one of the gateways provided
  sethostport("sip.freesbc.cn:5600"); // 這里也可以是媒體服務(wù)器的IP地址。
  t_relay();
  exit;
  }
  2通過opensips 操作界面添加媒體服務(wù)器
  完成了cfg文件的配置以后,在opensips的控制界面添加一個路由規(guī)則。
  3修改opensips 操作界面的配置
  因為OpenSIPS作為一個運營級的軟交換,它要實時處理幾千或者上萬次的呼叫,每一個呼叫都要經(jīng)過呼叫簽權(quán)認證。為了控制呼叫的認證流程,OpenSIPS使用ACL來對呼叫認證進行管理。ACL本身可以支持非?焖俚膶崟r處理流程。在ACL管理的模塊中修改配置文件,支持grp表的配置設(shè)置。用戶然后修改control panel的PHP代碼,增加本地呼叫,長途呼叫和國際長途的規(guī)則設(shè)置。
  讀者使用ACL時要注意,前面筆者已經(jīng)說明。OpenSIPS作為一個運營級的平臺,它可以支持上千或者上萬的呼叫并發(fā)。而且一個SIP用戶如果需要執(zhí)行ACL的話,賬號本身可能涉及多個SQL 查詢流程。因此,ACL可能會引起數(shù)據(jù)庫查詢帶來的效率問題,ACL頻繁訪問會使得數(shù)據(jù)庫負載增加,從而會一致影響OpenSIPS的性能。為了提高ACL的執(zhí)行性能,ACL模塊引入了group的概念,通過ACL grp來提高查詢用戶的速度和優(yōu)化ACL的查詢性能。具體語法如下:
  4添加ACL 控制組
  通過控制界面,修改ACL的呼叫權(quán)限控制。針對不同的SIP 賬號做不同的處理設(shè)置。ld表示僅支持長途呼叫,local表示僅支持本地呼叫,int表示僅支持國際長途呼叫。
  這里,1000 用戶可以呼叫本地用戶,呼叫長途;1001用戶可以呼叫本地和國際長途電話。對用戶ACL設(shè)置中,ACL支持了多種用戶驗證的查詢方式,cfg腳本可以通過這幾種方式實現(xiàn)快速查詢,無需通過數(shù)據(jù)庫訪問來實現(xiàn)查詢,所以,這些查詢方式可能更加高效。它們都可以通過avpops,aaa_radius, 和ldap模塊實現(xiàn)支持。首先,ACL支持了binary code方式,使用一個bit就可以表示用戶的認證權(quán)限,通過bitmask支持多種呼叫權(quán)限的設(shè)置。第一個bit表示賬號停用,第二個bit表示允許voip呼叫,第三個bit表示允許PSTN國內(nèi)呼叫,第四個bit表示允許國際呼叫。在cfg中對avp操作實現(xiàn)ACL流程的處理:
  相當(dāng)于binary code來說,使用access level coding方式,用戶可能更加容易明白。ACL支持了Level encoding(0,1,2,3),這里0表示賬號停用,1表示使用VOIP呼叫,2表示允許國內(nèi)PSTN呼叫,3表示允許國際呼叫等。
  但是,如果使用binary code或者access level設(shè)置呼叫權(quán)限的話,它仍然對用戶來說不是非常友好,畢竟,binary code 相對比較難以理解。具有一定含義的字符串對于大部分用戶來說是非常易懂的,而且也可以支持腳本執(zhí)行檢測。使用字符串的ACL 方式中,d表示SIP用戶停用,v表示允許voip呼叫,n表示允許國內(nèi)PSTN呼叫,i表示允許用戶執(zhí)行國際呼叫。
  5媒體服務(wù)器設(shè)置以及呼叫測試
  這里的媒體服務(wù)器是一個Asterisk服務(wù)器,通過IP呼叫到Asterisk以后,Asterisk做路由處理,然后呼叫鼎信的FXO語音網(wǎng)關(guān),最后語音網(wǎng)關(guān)呼叫落地運營商的PSTN線路,直到最終用戶終端。如果用戶安裝FreePBX作為一個IPPBX的話,用戶可以通過界面直接配置一個pjsip的IP呼叫 trunk,直接對接到鼎信網(wǎng)關(guān)地址。然后再通過呼出路由規(guī)則做一個呼出路由就可以實現(xiàn)完整的通過OpenSIPS網(wǎng)關(guān)媒體服務(wù)器落地的流程。注意,Asterisk服務(wù)器也可以不經(jīng)過PSTN落地,呼叫真實運營商的線路,也可以播放一個語音提示來做不同呼叫路由的測試。
  OpenSIPS的SIP賬號可以首先注冊(使用1000用戶/1001用戶分別測試不同號碼)到OpenSIPS服務(wù)器,然后通過呼叫本地號碼,長途號碼和國際長途來實現(xiàn)測試流程。如果asterisk媒體服務(wù)器設(shè)置為一個偽落地環(huán)境,對SIP 賬號播放語音的話,成功的呼叫就會聽到不同的語音提示音。如果媒體服務(wù)器對接了語音網(wǎng)關(guān)的話,根據(jù)號碼位數(shù)和格式,運營商會呼叫到本地,國內(nèi)或者國際用戶終端。
  6總結(jié)
  OpenSIPS作為一個運營級的軟交換,它本身需要一個ACL模塊對用戶呼叫進行認證設(shè)置。根據(jù)不同的用戶路由到不同的媒體服務(wù)器和落地網(wǎng)關(guān)。本文章通過OpenSIPS對接Asterisk和網(wǎng)關(guān)的方式說明如何在OpenSIPS平臺通過ACL來對用戶進行認證流程。其中,ACL通過界面,組設(shè)置和ACL設(shè)置實現(xiàn)SIP賬號呼叫的驗證。在本文章中,筆者介紹了如何修改cfg文件對呼叫做不同的判斷,同時介紹了通過OpenSIPS界面做路由和ACL設(shè)置。另外,針對ACL策略的設(shè)置方式,筆者做了一些深入的分析,包括各種設(shè)置方式的優(yōu)缺點。
  OpenSIPS用戶通過物理終端可以對ACL設(shè)置進行呼叫測試。通過撥打不同的號碼來檢測ACL的正確性。
  參考資料:
  www.opensips.org
  www.freesbc.cn
  www.freepbx.org.cn
  • 融合通信/IPPBX/FreePBX商業(yè)解決方案:www.hiastar.com
  • 最新Asterisk完整中文用戶手冊詳解:www.asterisk.org.cn
  • Freepbx/FreeSBC技術(shù)文檔: www.freepbx.org.cn
  • 如何使用免費會話邊界控制器-FreeSBC,qq技術(shù)分享群:334023047
  • 關(guān)注微信公眾號:asterisk-cn,獲得有價值的通信行業(yè)技術(shù)分享
【免責(zé)聲明】本文僅代表作者本人觀點,與CTI論壇無關(guān)。CTI論壇對文中陳述、觀點判斷保持中立,不對所包含內(nèi)容的準(zhǔn)確性、可靠性或完整性提供任何明示或暗示的保證。請讀者僅作參考,并請自行承擔(dān)全部責(zé)任。

專題

CTI論壇會員企業(yè)

天气| 玉林市| 温宿县| 翼城县| 安阳县| 碌曲县| 翁源县| 张家口市| 嘉义县| 和平区| 肥东县| 舒城县| 冷水江市| 砚山县| 辰溪县| 汉中市| 万州区| 五台县| 勐海县| 沙雅县| 万年县| 武鸣县| 马边| 营口市| 洛浦县| 文化| 门源| 屯留县| 五指山市| 防城港市| 岑巩县| 逊克县| 健康| 四川省| 金坛市| 澄江县| 洪雅县| 秦皇岛市| 达拉特旗| 图木舒克市| 边坝县|