东进数字卡会议编程
以挑剔的眼光來看,東進語音卡的接口缺乏一致性,應用程序員被迫了解底層細節(jié),會議接口尤甚。
先說說應用背景,64座席的呼叫中心,雙E1接入,最開始的配置是D641數(shù)字語音卡1塊,再加上D161A模擬座席卡4塊。
外線和座席的通話用會議方式來完成,一次通話至少需要3個會議資源,即通話的雙方,再加上錄音。
數(shù)字卡和模擬卡上都有會議資源,可不能統(tǒng)一使用,只能用D641數(shù)字卡上的會議資源。在座席少的時候沒問題,但電話多了就有問題,沒辦法創(chuàng)建會議。D641卡上有64個會議資源,按我們的應用,最多只能同時創(chuàng)建64/3=21個會議,而且這64個資源分成了上下兩半,如果未加處理地使用,可用數(shù)將減半,出現(xiàn)最壞的結果:
會議組編號從0-32,如果按順序使用的話,會很快出現(xiàn)沒有會議資源的情況,因為上半?yún)^(qū)和下半?yún)^(qū)的資源不能通用。
這時候應該這樣處理:
1.將會議組分成兩半:left: 0-15; right: 16-31
2.取得上半?yún)^(qū)的可用資源數(shù):lRes = DJConf_GetAvailResNum(0);
? 下半?yún)^(qū)的可用資源數(shù):rRes = DJConf_GetAvailResNum(1);
3.取最空閑的半?yún)^(qū)來工作,即lRes和rRes最大的一個,如lRes大,則到0-15中取空閑的一個做id,反之亦然。
即使這樣,也只能同時創(chuàng)建最多21個會議,即只能21個座席同時工作,離60多個座席相距甚遠。沒辦法,只好加了一塊DCB2560會議卡,會議卡采用另外一套接口,叫新會議函數(shù)進行編程。卡上有256個會議資源,按每個通話占用3個資源計算,則可同時進行256/3=85個通話。
但后來進行的壓力測試,只能同時創(chuàng)建20多個會議,DJConf_JoinConfGroup()函數(shù)返回-2,百思不得其解,來在與東進技術支持工程師robo的交談中得到啟發(fā),加入會議的DJConf_JoinConfGroup()函數(shù)會自動調用創(chuàng)建會議的函數(shù)DJConf_CreateConfGroup(),東進DCB2560的手冊上說:
在創(chuàng)建會議時,該函數(shù)會自動查找有足夠空閑資源的邏輯板卡創(chuàng)建會議,如果找不到將返回失敗,另外,該函數(shù)會自動為該會議預留會議資源,這樣,其他會議就不能占用這預留的資源。預留資源數(shù) = 會議最大說話人數(shù)
查TCE1-32.INI配置文件[NewConf]一節(jié),有下面這個配置:
GroupMaxSpeaker=10
#默認最大可說話成員數(shù)。應小于等于64
該值為10,意味著每創(chuàng)建一個會議需預留10個會議資源,256個資源只能同時創(chuàng)建25個會議。將參數(shù)改為GroupMaxSpeaker=4后,一切正常。
總結
- 上一篇: g723源码详细分析-11-多脉码激励编
- 下一篇: JAVA单元测试——常用注解(案例源码分