• <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>

    FreeSWITCH小結:呼叫的發(fā)起與跟蹤

    2014-11-12 09:04:11   作者:   來(lái)源:CTI論壇   評論:0  點(diǎn)擊:


      需求描述

      雖然現有的FreeSWITCH功能已經(jīng)很強大,但是很多情況下,為了配合業(yè)務(wù)上的功能,還需要做一些定制開(kāi)發(fā)。

      有一個(gè)基本需求是:如何控制fs外呼,并跟蹤外呼后的一系列狀態(tài)。

      解決方案
      
      下面我就把自己現有的解決方案跟大家分享下,以便拋磚引玉,引出大家更好的方案。

      我的方案也簡(jiǎn)單,在呼叫之前,指定呼叫的uuid,然后根據該uuid跟蹤呼叫到完整狀態(tài)。

      1.獲取可用的通道UUID

      所以說(shuō)FreeSWITCH考慮比較周到,連獲取uuid的方法都提供了!

      當然,你也可以使用自己到方式來(lái)生成uuid。不過(guò),一旦uuid出現重復,可是會(huì )出現比較麻煩的問(wèn)題,所以還是使用FreeSWITCH的官方提供的方法比較靠譜。

      命令如下:

      create_uuid
      該命令會(huì )返回一個(gè)可用的uuid。

      2.發(fā)起呼叫

      無(wú)需多說(shuō),此處originate命令登場(chǎng),不過(guò)和平時(shí)使用區別的地方是需要指定呼叫的uuid。

      下面是兩種指定方法,可選擇性試用:

      方案一:在呼叫時(shí),指定A腿uuid
      originate {origination_uuid=xxxxx}user/60401 60402

      方案二:在呼叫時(shí),同時(shí)指定A腿和B腿的uuid
      originate {origination_uuid=xxxxx}user/60401 &bridge({origination_uuid=yyyyy}user/60402)

      在使用該命令后,通過(guò)命令show channels就可看到兩個(gè)新創(chuàng )建的通道和指定的通道uuid,xxxxx和yyyyy。

      此處留給大家自己去驗證了!

      同時(shí)也感謝杜老大的書(shū),這條命令是從他的書(shū)上學(xué)來(lái)的。

      3.跟蹤呼叫

      跟蹤呼叫,說(shuō)白了,其實(shí)很簡(jiǎn)單,只是有的人可能沒(méi)留意到而已,就是利用FreeSWITCH的事件機制進(jìn)行跟蹤。關(guān)于事件如何訂閱,不是這里的重點(diǎn),略去不說(shuō)。

      下面先說(shuō)說(shuō)一些基本常識:

      1、跟呼叫相關(guān)的通道事件有如下幾個(gè):

      Channel _ Create:通道創(chuàng )建事件
      Channel _ Progress:通道振鈴事件
      Channel _ Answer:通道應答事件
      Channel _ Bridge:通道橋接事件
      Channel _ Hangup:通道掛斷事件

      2、通道事件的Unique_ID字段與我們呼叫前指定的uuid相同,這個(gè)也是我們能跟蹤的前提。

      有了上面兩個(gè)條件之后,跟蹤就變得簡(jiǎn)單和美妙起來(lái)!在呼叫開(kāi)始前,將呼叫對象與uuid的對應關(guān)系存到數據庫中,在收到不同的事件后,根據事件的Unique_ID找到對應的呼叫對象,然后更新它的呼叫狀態(tài)即可。

      4.注意事項

     1、Channel _ Create事件比較特殊,含有的內容比較少,所以處理起來(lái)要特別注意。

      該事件是在呼叫開(kāi)始Routing之前就被拋出來(lái),換句話(huà)說(shuō),你在dialplan中定義的任何變量都不會(huì )被讀取到。如果這點(diǎn)沒(méi)注意到的話(huà),會(huì )導致判斷邏輯出現問(wèn)題。

      2、Channel _ Bridge事件中同時(shí)含有A腿和B腿的uuid,具體字段我是不打了,感興趣的可以自己看看。

    分享到: 收藏

    專(zhuān)題

    亚洲精品网站在线观看不卡无广告,国产a不卡片精品免费观看,欧美亚洲一区二区三区在线,国产一区二区三区日韩 哈巴河县| 启东市| 潜山县| 南召县| 普兰县| 南阳市| 清丰县| 顺昌县| 淮安市| 德江县| 荔浦县| 永修县| 大同县| 剑河县| 金坛市| 清镇市| 鸡东县| 洛川县| 威海市| 乌鲁木齐县| 隆回县| 曲阳县| 新沂市| 岐山县| 梅河口市| 济源市| 合阳县| 都匀市| 射洪县| 施秉县| 丰都县| 积石山| 大田县| 宁津县| 陇西县| 贡嘎县| 禄劝| 浪卡子县| 若尔盖县| 樟树市| 桃园市| http://444 http://444 http://444 http://444 http://444 http://444