• <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è) > 新聞 > 國內 >

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

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


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

    專(zhuān)題

    CTI論壇會(huì )員企業(yè)

    亚洲精品网站在线观看不卡无广告,国产a不卡片精品免费观看,欧美亚洲一区二区三区在线,国产一区二区三区日韩 房产| 长阳| 渭源县| 丹凤县| 高雄县| 德惠市| 枣庄市| 襄城县| 淅川县| 乐平市| 兰西县| 延庆县| 汝城县| 溧阳市| 峨山| 南陵县| 平阳县| 皮山县| 虞城县| 黄龙县| 罗源县| 城固县| 南涧| 长治县| 广西| 漾濞| 南木林县| 九江市| 湘阴县| 佛山市| 乐平市| 青浦区| 峡江县| 工布江达县| 志丹县| 沐川县| 金昌市| 江门市| 洛阳市| 富川| 海林市| http://444 http://444 http://444 http://444 http://444 http://444