中文字幕无码久久精品,13—14同岁无码A片,99热门精品一区二区三区无码,菠萝菠萝蜜在线观看视频高清1

您當(dāng)前的位置是:  首頁 > 新聞 > 國內(nèi) >
 首頁 > 新聞 > 國內(nèi) >

FreeSWITCH使用經(jīng)驗(yàn):解決一個詭異的呼叫問題

2019-01-07 13:52:10   作者:Seven Du   來源:CTI論壇   評論:0  點(diǎn)擊:


  今天,處理了一個比較特殊的FreeSWITCH對接問題。
  事情的經(jīng)過是這樣的。
  有人聯(lián)系我們想幫忙解決個問題,并給出了問題的簡單描述:
  8根線不穩(wěn)定半小時就得重啟FreeSWITCH。
  問題描述太過簡略,因此我們建議用戶交納一定的費(fèi)用,我們進(jìn)一步溝通后再決定具體價格,為了便于理解,我們管這個費(fèi)用叫掛號費(fèi)。
  但是客戶不太接受這個方案,不過愿意出更高的價格只要我們能夠保證解決。
  其實(shí)客戶的這種方案對雙方風(fēng)險都很大。我們最近挺忙,不想接這樣的單子。
  不過,經(jīng)不住客戶再三溝通,最后簡單問了一下客戶使用的什么網(wǎng)關(guān)評估了一下可能出現(xiàn)的問題。
  其中有一個可能是迅時根本沒掛斷電話,可能是信號音檢測問題,也可能是NAT穿越問題導(dǎo)致FreeSWITCH掛機(jī)后BYE消息沒到達(dá)迅時因此電話未掛機(jī),所以導(dǎo)致所有端口都被占用因此打不通電話。
  但是為什么重啟FreeSWITCH就能解決我們還不得而知。
  這也是為什么我們要收掛號費(fèi),我們需要一些時間做進(jìn)一步檢測以便確認(rèn)問題。多數(shù)情況下,如果解決方法極其簡單,我們也就不再多收費(fèi)用了;蛘吒嬖V用戶我們解決不了,去其它大醫(yī)院看看。當(dāng)然,如果我們認(rèn)為還得進(jìn)一步治療則評估下一步治療的價格。我們一直是這么做的。
  不過,這次不同,客戶給了我們一些錢讓我們保證解決問題。好吧,藝高人膽大,把單子接下了。
  事實(shí)證明這是個坑。
  事實(shí)跟我們想象的完全不同。
  1)客戶用Windows版的FreeSWITCH。我們更熟悉Linux,一般都默認(rèn)是Linux,在Linux上處理問題一般比Windows上快很多;
  2)客戶的Windows只能用Teamviewer訪問,而Linux如果SSH訪問效率會高很多
  3)客戶使用迅時MX8全FXS口網(wǎng)關(guān),而我們之前一直以為是FXO口網(wǎng)關(guān)
  4)客戶使用SIP中繼對接到某運(yùn)營商,但之前客戶根本就沒跟我們提到這個問題
  5)客戶實(shí)際上是為客戶的客戶服務(wù),客戶也是用Teamviewer連接到客戶的客戶的Windows上,而客戶的客戶描述問題很不清
  但騎上虎了也不能輕易就下來,硬新頭皮看看?蛻粢辉俾暦Q摘機(jī)聽忙音,但從我們檢測后判斷是客戶撥號后才聽忙音的。而且問題原因是SIP中繼側(cè)不通,跟迅時網(wǎng)關(guān)關(guān)系不大。
  后來發(fā)現(xiàn),外呼流程是這樣的:
  客戶FSX話機(jī)通過迅時呼到FreeSWITCH,F(xiàn)reeSWITCH再通過SIP中繼呼出去,而問題就出現(xiàn)在SIP中繼方面,F(xiàn)reeSWITCH剛啟動時是好的,但過一陣再外呼是就回480,只有重啟FreeSWITCH才能恢復(fù)正常狀態(tài)。
  后來我們檢查了一番,決定不重啟FreeSWITCH,而是重新注冊一下網(wǎng)關(guān):
  sofia profile external register 010-NNNNNNNN
  其中010-NNNNNNNN是客戶設(shè)置的網(wǎng)關(guān)的名字。本來是一串?dāng)?shù)字,保護(hù)隱私我們打了馬賽克。
  果然,注冊后呼叫正常。
  再查看網(wǎng)關(guān)配置,注冊周期為默認(rèn)值,嘗試把注冊周期改小一點(diǎn):
  
  告訴客戶問題解決了,收工。
  此處省力一萬字。
  客戶周末都在上班,也夠拼的。
  客戶說問題并沒實(shí)際解決,而是出問題的周期縮短了。好像每次自動注冊后打電話是好的,很短時間內(nèi)就不好。
  好吧,我們告訴客戶,對方回480這么詭異的問題,應(yīng)該去找對方。
  從SIP概念上講,4開頭的響應(yīng)碼是客戶端錯誤,應(yīng)該在客戶端修正然后重新發(fā)起呼叫可能就好了。
  是的,注意上句中的可能。
  我們已經(jīng)在嘗試修正了,比如改User Agent,開啟Ping等。問題是這種錯誤要是有對端配合,可能很快就找到原因改好了,但是,如果對端不配合,你可能需要嘗試一萬種組合才可能解決問題。
  果然,我們所有的嘗試都失敗了。要知道,這種嘗試是非常花費(fèi)時間的。你改了,必須等待它再次出現(xiàn),再改,再等……死循環(huán)
  所以事實(shí)往往是很悲催的——對端如果是大運(yùn)營商的話,你能找到的所有人幾乎都不懂技術(shù);對端如果是小的“運(yùn)營商”(姑且稱之為是運(yùn)營商吧)的話,往往也沒有幾個是懂技術(shù)的,他們往往只會告訴你一句話,人家別人用的都是好的……
  說到別人,還真有。后來客戶又告訴我們一個線索,人家迅時網(wǎng)關(guān)直接用這個SIP中繼注冊上去,打電話就沒有問題!
  也算是個線索吧,抓包,對比,直到我們的包改的跟迅時的一模一樣我們也是不能解決問題。
  而且我們發(fā)現(xiàn)迅時發(fā)的REGISTER消息Expire域?yàn)?00,對方回的是60,但我們在FreeSWITCH里也寫了600,對方回的就是1800。沒頭緒。
  留給我們的時間已經(jīng)不多了。
  好吧,即然迅時好,那就讓迅時做這個工作就好了。
  改方案。
  直接讓迅時注冊這個SIP中繼。FSX口的話機(jī)打電話時,先送到FreeSWITCH,F(xiàn)reeSWITCH再送到迅時,再通過這個中繼出去。有點(diǎn)繞,但是這也算是一種解決方案吧。
  迅時跟FreeSWITCH對接可以簡單的通過IP對接,即將呼叫送到FreeSWITCH的5080端口,不過,這樣有點(diǎn)不安全不是。所以,我們需要FSX口發(fā)起的電話呼叫到達(dá)FreeSWITCH時,F(xiàn)reeSWITCH對迅時網(wǎng)關(guān)進(jìn)行認(rèn)證。
  認(rèn)證方式有兩種:
  1)在FreeSWITCH中設(shè)置ACL,允許ACL中指定的IP(即迅時網(wǎng)關(guān)的IP)呼叫5060端口。這種方式需要改ACL及Profile的一些配置,客戶沒采用這種方式。
  雖然沒有采用,我們簡單說一下配置方案,供參考。
  在ACL中添加迅時的IP。這樣,迅時網(wǎng)關(guān)過來的呼叫就直接信任,不再發(fā)Challenge。但FreeSWITCH默認(rèn)還是走public Dialplan,可以在internal.xml里設(shè)置將默認(rèn)的 context = public 設(shè)成 context = default 以及任何其它值。
  2)在FreeSWITCH中添加跟SIP中繼網(wǎng)關(guān)上一樣的用戶名和密碼,當(dāng)迅時來的呼叫到達(dá)FreeSWITCH 5060端口時發(fā)起Challenge,此時,由于迅時注冊到遠(yuǎn)端的SIP中繼上,因此會用遠(yuǎn)端的SIP中繼提供的用戶名和密碼回應(yīng)FreeSWITCH,即用戶010NNNNNNNN和密碼PPPPPPPP。
  因此,我們就在FreeSWITCH中添加了一個用戶,用戶名是010NNNNNNNN密碼是PPPPPPPP。
  這樣,迅時網(wǎng)關(guān)就能呼叫FreeSWITCH的5060端口并正確的認(rèn)證(僅在呼叫INVITE時認(rèn)證,不注冊)。
  好了,在迅時網(wǎng)關(guān)上的路由是這么設(shè)的
  FXS x ROUTE IP 192.168.1.100   # 任何來自FSX的呼叫都路由到FreeSWITCH
  IP 1001 ROUTE FSX 1                  # 來自FreeSWITCH的呼到,如果被叫號碼是1001,則路由到第一個電話口
  IP 1002 ROUTE FSX 2                  # 以此類推
  IP 1003 ROUTE FSX 3                  # 以此類推
  IP 1004 ROUTE FSX 4                  # 以此類推
  IP 1005 ROUTE FSX 5                  # 以此類推
  IP 1006 ROUTE FSX 6                  # 以此類推
  IP 1007 ROUTE FSX 7                  # 以此類推
  IP 1008 ROUTE FSX 8                  # 以此類推
  IP 010NNNNNNNN ROUTE IP 192.168.1.100:5080   #來自SIP中繼的呼叫,如果呼入,則路由到FreeSWITCH,放IVR
  IP x ROUTE IP 1.2.3.4                  # 其它任何號碼都路由到SIP中繼網(wǎng)關(guān),以1.2.3.4為例
  測試撥打一切正常。
  以前,迅時網(wǎng)關(guān)是直接注冊到FreeSWITCH上的,因此,一個回呼命令類似如下的樣子:
  originate user/1001 &bridge(sofia/gateway/010-NNNNNNNN/18612345678)
  其中,010-NNNNNNNN是SIP中繼網(wǎng)關(guān)的名字。
  但經(jīng)我們改動后,迅時不再向FreeSWITCH注冊,因此沒有了本地用戶,所以,呼叫命令改成:
  originate sofia/gatewayxunshi/1001 &bridge(sofia/gateway/xunshi/18612345678)
  其中xunshi時迅時對應(yīng)的網(wǎng)關(guān)的名字。
  小結(jié):
  1. 我們堅(jiān)持的掛號費(fèi)是對的,對雙方都是有利的
  2. 不要低估問題的復(fù)雜性,顯然很多問題也可以分分鐘解決,但不可否認(rèn),大部分問題都會有意外
  3. 有些問題不一定非得在FreeSWITCH里解決,本例就是一個例子
【免責(zé)聲明】本文僅代表作者本人觀點(diǎn),與CTI論壇無關(guān)。CTI論壇對文中陳述、觀點(diǎn)判斷保持中立,不對所包含內(nèi)容的準(zhǔn)確性、可靠性或完整性提供任何明示或暗示的保證。請讀者僅作參考,并請自行承擔(dān)全部責(zé)任。

專題

CTI論壇會員企業(yè)