本發(fā)明涉及呼叫系統(tǒng)技術(shù)領(lǐng)域,尤其涉及一種呼叫服務(wù)的分布式均衡負載控制方法及呼叫系統(tǒng)。
背景技術(shù):
隨著業(yè)務(wù)的發(fā)展,呼叫通話需求逐漸增多,在這樣的情況下,單臺呼叫服務(wù)器已經(jīng)不能支撐業(yè)務(wù)的擴展,急需橫向擴展;在擴展呼叫服務(wù)器之后,那么會存在這樣的情況,每臺FreeSWITCH(簡稱FS)的坐席注冊數(shù)不均衡;或者每臺機器上注冊量即使均衡,每個話務(wù)員的打打電話時間和頻率不一樣,那么也不會能保證每臺機器的上坐席通話數(shù)均衡。并且還存在每臺服務(wù)器的性能不一樣,也就是能承受的性能消耗存在差異,這樣就需要一個算法來控制每臺機器的負載占比。
現(xiàn)在的呼叫系統(tǒng)存在以下缺點:
(1)單臺FreeSWITCH實現(xiàn)呼叫系統(tǒng)方式,坐席通話時,錄音操作是在FreeSWITCH上進行;普通橫向擴展后,由于坐席通話建立模式為phone-FreeSWITCH-gateway-client,坐席通話的錄音是在注冊的FreeSWITCH的上進行,當一臺FreeSWITCH上的坐席呼叫量增多時,不能分配一些錄音操作到另一些空閑的FreeSWITCH上,導(dǎo)致資源浪費。
(2)當一臺FreeSWITCH因負載過大而導(dǎo)致宕機時,原先注冊的坐席會自動注冊到可用的FreeSWITCH上,會加重可用的FreeSWITCH的負載,甚至出現(xiàn)連鏈式系統(tǒng)崩潰。
以上兩點缺陷對系統(tǒng)的健壯性和擴展性都是一個致命的問題。那么解決以上的問題,就需要做到系統(tǒng)的負載均衡。在性能消耗占比中,坐席注冊管理所消耗的性能占比相對較小,而錄音操作性能消耗占比最大的情況下,有效地分布錄音操作尤為重要,在這里要求系統(tǒng)實現(xiàn)以下三點:
(1)坐席通話時,不限制進行錄音操作FreeSWITCH;
(2)錄音操作放在FreeSWITCH集群中性能消耗相對最少的FreeSWITCH上進行;
(3)實現(xiàn)可控制FreeSWITCH的相對負載占比設(shè)置。
因此,本領(lǐng)域的技術(shù)人員亟需研究出一種靈活設(shè)置FreeSWITCH的最大負載能力,可控制地進行FreeSWITCH的相對負載占比設(shè)置,均衡分布最消耗性能的呼叫操作,均衡分配呼叫任務(wù)、減少資源的浪費、增強呼叫系統(tǒng)的穩(wěn)定性的呼叫服務(wù)的分布式均衡負載控制方法。
技術(shù)實現(xiàn)要素:
本發(fā)明要解決的技術(shù)問題是提供一種呼叫服務(wù)的分布式均衡負載控制方法及呼叫系統(tǒng),該呼叫服務(wù)的分布式均衡負載控制方法及系統(tǒng)能靈活設(shè)置FreeSWITCH的最大負載能力,可控制地進行FreeSWITCH的相對負載占比設(shè)置,均衡分布最消耗性能的呼叫操作,均衡分配呼叫任務(wù)、減少資源的浪費、增強呼叫系統(tǒng)的穩(wěn)定性。
為解決上述技術(shù)問題,本發(fā)明提供了一種呼叫服務(wù)的分布式均衡負載控制方法,提供WEB管理模塊、數(shù)據(jù)校驗進程控制模塊、呼叫接口服務(wù)模塊、呼叫流程管理進程模塊、若干FreeSWITCH服務(wù)器、若干坐席端、數(shù)據(jù)庫及zookeeper集群組件,所述呼叫服務(wù)的分布式均衡負載控制方法包括以下步驟:
步驟S1:所述WEB管理模塊分別設(shè)置坐席端、分機和FreeSWITCH服務(wù)器的屬性和配置信息,并將配置修改的信息更新到數(shù)據(jù)庫,數(shù)據(jù)庫更新成功后,通過zookeeper客戶端發(fā)送不同的信息到zookeeper集群上通知各個進程數(shù)據(jù)變更;
步驟S2:所述數(shù)據(jù)校驗進程控制模塊預(yù)先加載數(shù)據(jù)表的數(shù)據(jù),并解析所述加載的數(shù)據(jù)存儲到數(shù)據(jù)校驗進程控制模塊的內(nèi)存中,連接所述zookeeper集群組件、公共緩存區(qū)及各臺FreeSWITCH服務(wù)器,監(jiān)聽所述zookeeper集群組件及各種連接狀態(tài),定時刷新所述數(shù)據(jù)校驗進程控制模塊的內(nèi)存數(shù)據(jù),如果監(jiān)聽到FreeSWITCH服務(wù)器連接失敗,把失敗的所述FreeSWITCH服務(wù)器標示為不可用狀態(tài),并將不可用狀態(tài)標識存入到所述公共緩存內(nèi);
步驟S3:所述呼叫接口服務(wù)模塊預(yù)先加載數(shù)據(jù)表的數(shù)據(jù),并解析所述加載的數(shù)據(jù)存儲到所述呼叫接口服務(wù)模塊的內(nèi)存中,連接并監(jiān)聽zookeeper集群組件,隨時準備刷新所述呼叫接口服務(wù)模塊的內(nèi)存數(shù)據(jù),開啟所述呼叫服務(wù)的端口,等待呼叫請求,當坐席端進行注冊請求時,當坐席主動請求呼叫時,從所述公共緩存中獲取各個FreeSWITCH服務(wù)器的錄音數(shù)據(jù),根據(jù)FreeSWITCH系統(tǒng)空閑占比計算公式計算出最大空閑占比的FreeSWITCH服務(wù)器,向所述FreeSWITCH服務(wù)器發(fā)送綁定UUID的呼叫坐席命令,并通過UUID記錄本次通話流程的信息到所述公共緩存中,當預(yù)測外呼時,從所述公共緩存中獲取各個FreeSWITCH服務(wù)器的通話錄音數(shù),并根據(jù)FreeSWITCH系統(tǒng)空閑占比計算公式計算出最大空閑占比的FreeSWITCH服務(wù)器,接著向該系統(tǒng)發(fā)送綁定UUID的呼叫坐被叫方命令,
其中,所述呼叫接口服務(wù)模塊配置有FreeSWITCH系統(tǒng)空閑占比計算公式;
步驟S4:所述數(shù)據(jù)校驗進程控制模塊預(yù)先加載數(shù)據(jù)表的數(shù)據(jù),并解析所述加載的數(shù)據(jù)存儲到數(shù)據(jù)校驗進程控制模塊的內(nèi)存中,連接所述zookeeper集群組件、公共緩存區(qū)及各臺FreeSWITCH服務(wù)器,監(jiān)聽所述zookeeper集群組件及各種連接狀態(tài),并注冊呼叫、接聽、掛件事件,解析事件的UUID,從所述公共內(nèi)存中取出通話流程記錄數(shù)據(jù),判斷呼叫類型,根據(jù)不同請求進行操作,如果是主動呼叫,呼叫方接聽,發(fā)送命令呼叫被叫方;如果是主動呼叫,被叫方接聽,橋接雙方通話;如果是預(yù)測外呼,坐席方接聽,橋接雙方通話;如果是預(yù)測外呼,被叫方接聽,發(fā)送命令呼叫坐席方;
其中,F(xiàn)reeSWITCH系統(tǒng)空閑占比計算公式為
Fs=(M-C+Q(x))/M;
其中,F(xiàn)s為,FreeSWITCH系統(tǒng)空閑占比,M為最大隨錄音數(shù)據(jù),C為目前錄音數(shù),Q(x)為加分數(shù)。
優(yōu)選地,當用戶主動呼叫電話時,所述步驟S3的實現(xiàn)步驟包括:
301:系統(tǒng)收到電話端的呼叫請求后,開始計算出系統(tǒng)空閑占比最大的FreeSWITCH服務(wù)器,如果最大的FreeSWITCH服務(wù)器是坐席所注冊的FreeSWITCH服務(wù)器,則直接建立第一端的通話連接,如果最大的FreeSWITCH服務(wù)器不是坐席所注冊的FreeSWITCH服務(wù)器,那么先建立與坐席所注冊的FreeSWITCH服務(wù)器連接,再由所注冊的FreeSWITCH服務(wù)器連接到坐席上,第一端連接建立成功;
302:開始建立最大空閑占比的FreeSWITCH服務(wù)器與被呼叫方的通話連接,即第二端的連接;
303:把兩端進行橋接,完成整個流程的通話連接;
304:在最大空閑的FreeSWITCH服務(wù)器上進行錄音操作。
優(yōu)選地,當呼叫方式為預(yù)測外呼時,所述步驟S3的實現(xiàn)步驟包括:
301:呼叫被呼叫方,待被叫方接聽后,計算出最大空閑占比的FreeSWITCH服務(wù)器;建立最大空閑占的FreeSWITCH服務(wù)器與被呼叫方的連接,完成第一端的連接;
302:找出空閑的坐席,建立接聽方坐席到FreeSWITCH服務(wù)器的連接,如果坐席注冊的FreeSWITCH服務(wù)器與最大空閑占比的FreeSWITCH服務(wù)器相同,則直接建立通話連接,如果坐席注冊的FreeSWITCH服務(wù)器與最大空閑占比的FreeSWITCH服務(wù)器不同,先建立坐席注冊的FreeSWITCH服務(wù)器連接,再連接到呼叫坐席上,完成第二端的連接;
303:將兩端通話進行橋接;
304:在最大空閑的FreeSWITCH服務(wù)器上對通話進行錄音操作。
優(yōu)選地,所述WEB管理模塊包括坐席管理單元、分機管理單元、網(wǎng)關(guān)管理單元及FreeSWITCH管理單元。
優(yōu)選地,所述數(shù)據(jù)校驗進程控制模塊包括:第一數(shù)據(jù)加載解析單元、第一數(shù)據(jù)存儲單元、第一數(shù)據(jù)收發(fā)單元、第一狀態(tài)監(jiān)控單元及數(shù)據(jù)校驗匹配單元,所述步驟S2的實現(xiàn)步驟包括:所述第一數(shù)據(jù)加載解析單元預(yù)先加載數(shù)據(jù)表的數(shù)據(jù)并解析所述加載的數(shù)據(jù),第一數(shù)據(jù)加載解析單元將解析完成的數(shù)據(jù)發(fā)送給所述第一數(shù)據(jù)存儲單元進行存儲,所述第一數(shù)據(jù)收發(fā)單元連接所述zookeeper集群組件、公共緩存區(qū)、各臺FreeSWITCH服務(wù)器,所述第一狀態(tài)監(jiān)控單元監(jiān)聽所述zookeeper集群組件及各種連接狀態(tài),定時刷新所述第一數(shù)據(jù)存儲單元的內(nèi)存數(shù)據(jù),如果所述第一狀態(tài)監(jiān)控單元監(jiān)聽到FreeSWITCH服務(wù)器連接失敗,所述數(shù)據(jù)校驗匹配單元把失敗的所述FreeSWITCH服務(wù)器標示為不可用狀態(tài),并將不可用狀態(tài)標識存入到所述公共緩存內(nèi)。
優(yōu)選地,所述呼叫接口服務(wù)模塊包括:第二數(shù)據(jù)加載解析單元、第二數(shù)據(jù)存儲單元、第二數(shù)據(jù)收發(fā)單元、第二狀態(tài)監(jiān)控單元、呼叫請求接收單元、呼叫命令發(fā)送單元、FreeSWITCH服務(wù)器任務(wù)計算單元及動態(tài)數(shù)據(jù)獲取單元;所述步驟S3包括:所述第二數(shù)據(jù)加載解析單元預(yù)先加載數(shù)據(jù)表的數(shù)據(jù)并解析所述加載的數(shù)據(jù),第二數(shù)據(jù)加載解析單元將解析完成的數(shù)據(jù)發(fā)送給所述第二數(shù)據(jù)存儲單元進行存儲,所述第二數(shù)據(jù)收發(fā)單元連接所述zookeeper集群組件、公共緩存區(qū)及各臺FreeSWITCH服務(wù)器,所述第二狀態(tài)監(jiān)控單元監(jiān)聽所述zookeeper集群組件及各種連接狀態(tài),定時刷新所述第二數(shù)據(jù)存儲單元的內(nèi)存數(shù)據(jù),
所述第二數(shù)據(jù)收發(fā)單元開啟所述呼叫服務(wù)的端口,等待呼叫請求,當坐席端進行注冊請求或者主動請求呼叫時,所述動態(tài)數(shù)據(jù)獲取單元從所述公共緩存中獲取各個FreeSWITCH服務(wù)器的錄音數(shù)據(jù),所述動態(tài)數(shù)據(jù)獲取單元將獲取的FreeSWITCH服務(wù)器的錄音數(shù)據(jù)發(fā)送給所述FreeSWITCH服務(wù)器任務(wù)計算單元,所述FreeSWITCH服務(wù)器任務(wù)計算單元根據(jù)所述FreeSWITCH系統(tǒng)空閑占比計算公式計算最大空閑占比的FreeSWITCH服務(wù)器,所述FreeSWITCH服務(wù)器任務(wù)計算單元將計算出來的最大空閑占比的FreeSWITCH服務(wù)器數(shù)據(jù)發(fā)送給所述呼叫命令發(fā)送單元,所述呼叫命令發(fā)送單元向所述FreeSWITCH服務(wù)器發(fā)送綁定UUID的呼叫坐席命令,并通過UUID記錄本次通話流程的信息到所述公共緩存中,當預(yù)測外呼時,所述動態(tài)數(shù)據(jù)獲取單元從所述公共緩存中獲取各個FreeSWITCH服務(wù)器的通話錄音數(shù),所述動態(tài)數(shù)據(jù)獲取單元將獲取的FreeSWITCH服務(wù)器的錄音數(shù)據(jù)發(fā)送給所述FreeSWITCH服務(wù)器任務(wù)計算單元,所述FreeSWITCH服務(wù)器任務(wù)計算單元根據(jù)所述FreeSWITCH系統(tǒng)空閑占比計算公式計算最大空閑占比的FreeSWITCH服務(wù)器,所述FreeSWITCH服務(wù)器任務(wù)計算單元將計算出來的最大空閑占比的FreeSWITCH服務(wù)器數(shù)據(jù)發(fā)送給所述呼叫命令發(fā)送單元,所述呼叫命令發(fā)送單元發(fā)送綁定UUID的呼叫坐席被叫方命令給所述最大空閑占比的FreeSWITCH服務(wù)器。
優(yōu)選地,所述呼叫流程管理進程模塊包括第三數(shù)據(jù)加載解析單元、第三數(shù)據(jù)存儲單元、第三數(shù)據(jù)收發(fā)單元、第三狀態(tài)監(jiān)控單元及事件均衡安排處理單元,所述步驟S4的實現(xiàn)步驟包括:所述第三數(shù)據(jù)加載解析單元預(yù)先加載數(shù)據(jù)表的數(shù)據(jù)并解析所述加載的數(shù)據(jù),第三數(shù)據(jù)加載解析單元將解析完成的數(shù)據(jù)發(fā)送給所述第三數(shù)據(jù)存儲單元進行存儲,所述第三數(shù)據(jù)收發(fā)單元連接所述zookeeper集群組件,連接到各臺所述FreeSWITCH服務(wù)器,所述事件均衡安排處理單元注冊呼叫、接聽、掛件事件,解析事件的UUID,從所述公共內(nèi)存中取出通話流程記錄數(shù)據(jù),所述事件均衡安排處理單元判斷呼叫類型,根據(jù)不同請求進行注冊事件均勻排列處理操作,如果是主動呼叫,呼叫方接聽,發(fā)送命令呼叫被叫方;如果是主動呼叫,被叫方接聽,橋接雙方通話;如果是預(yù)測外呼,坐席方接聽,橋接雙方通話;如果是預(yù)測外呼,被叫方接聽,發(fā)送命令呼叫坐席方。
為解決上述技術(shù)問題,本發(fā)明還提供一種用于實現(xiàn)上述的呼叫服務(wù)的分布式均衡負載控制方法的呼叫服務(wù)的分布式均衡負載控制系統(tǒng)。
采用了上述方法及系統(tǒng)之后,采用了上述方法及系統(tǒng)之后,所述WEB管理模塊分別設(shè)置坐席端、分機和FreeSWITCH服務(wù)器的屬性和配置信息,并將配置修改的信息更新到數(shù)據(jù)庫,數(shù)據(jù)庫更新成功后,通過zookeeper客戶端發(fā)送不同的信息到zookeeper集群上通知各個進程數(shù)據(jù)變更;所述數(shù)據(jù)校驗進程控制模塊預(yù)先加載數(shù)據(jù)表的數(shù)據(jù),并解析所述加載的數(shù)據(jù)存儲到數(shù)據(jù)校驗進程控制模塊的內(nèi)存中,連接所述zookeeper集群組件、公共緩存區(qū)及各臺FreeSWITCH服務(wù)器,監(jiān)聽所述zookeeper集群組件及各種連接狀態(tài),定時刷新所述數(shù)據(jù)校驗進程控制模塊的內(nèi)存數(shù)據(jù),如果監(jiān)聽到FreeSWITCH服務(wù)器連接失敗,把失敗的所述FreeSWITCH服務(wù)器標示為不可用狀態(tài),并將不可用狀態(tài)標識存入到所述公共緩存內(nèi);所述呼叫接口服務(wù)模塊預(yù)先加載數(shù)據(jù)表的數(shù)據(jù),并解析所述加載的數(shù)據(jù)存儲到所述呼叫接口服務(wù)模塊的內(nèi)存中,連接并監(jiān)聽zookeeper集群組件,隨時準備刷新所述呼叫接口服務(wù)模塊的內(nèi)存數(shù)據(jù),開啟所述呼叫服務(wù)的端口,等待呼叫請求,當坐席端進行注冊請求時,當坐席主動請求呼叫時,從所述公共緩存中獲取各個FreeSWITCH服務(wù)器的錄音數(shù)據(jù),根據(jù)FreeSWITCH系統(tǒng)空閑占比計算公式計算出最大空閑占比的FreeSWITCH服務(wù)器,向所述FreeSWITCH服務(wù)器發(fā)送綁定UUID的呼叫坐席命令,并通過UUID記錄本次通話流程的信息到所述公共緩存中,當預(yù)測外呼時,從所述公共緩存中獲取各個FreeSWITCH服務(wù)器的通話錄音數(shù),并根據(jù)FreeSWITCH系統(tǒng)空閑占比計算公式計算出最大空閑占比的FreeSWITCH服務(wù)器,接著向該系統(tǒng)發(fā)送綁定UUID的呼叫坐被叫方命令,其中,所述呼叫接口服務(wù)模塊配置有FreeSWITCH系統(tǒng)空閑占比計算公式,所述數(shù)據(jù)校驗進程控制模塊預(yù)先加載數(shù)據(jù)表的數(shù)據(jù),并解析所述加載的數(shù)據(jù)存儲到數(shù)據(jù)校驗進程控制模塊的內(nèi)存中,連接所述zookeeper集群組件、公共緩存區(qū)及各臺FreeSWITCH服務(wù)器,監(jiān)聽所述zookeeper集群組件及各種連接狀態(tài),并注冊呼叫、接聽、掛件事件,解析事件的UUID,從所述公共內(nèi)存中取出通話流程記錄數(shù)據(jù),判斷呼叫類型,根據(jù)不同請求進行操作,如果是主動呼叫,呼叫方接聽,發(fā)送命令呼叫被叫方;如果是主動呼叫,被叫方接聽,橋接雙方通話;如果是預(yù)測外呼,坐席方接聽,橋接雙方通話;如果是預(yù)測外呼,被叫方接聽,發(fā)送命令呼叫坐席方;該呼叫服務(wù)的分布式均衡負載控制方法及系統(tǒng)能靈活設(shè)置FreeSWITCH的最大負載能力,可在FreeSWITCH集群中性能消耗相對最少的FreeSWITCH上進行錄音操作,可控制地進行FreeSWITCH的相對負載占比設(shè)置,均衡分布最消耗性能的呼叫操作,均衡分配呼叫任務(wù)、減少資源的浪費、增強呼叫系統(tǒng)的穩(wěn)定性、靈活地處理呼叫過程中的各種事件,大容量有序地處理呼叫任務(wù)。
附圖說明
圖1是本發(fā)明的一種呼叫服務(wù)的分布式均衡負載控制方法的整體模型示意圖;
圖2是當坐席主動請求呼叫,最大空閑與注冊FreeSWITCH相同時,圖1的整體模型示意圖對應(yīng)的呼叫接口服務(wù)模塊計算最大空閑占比的FreeSWITCH服務(wù)器的示意圖;
圖3是當坐席主動請求呼叫,最大空閑與注冊FreeSWITCH不同時,圖1的整體模型示意圖對應(yīng)的呼叫接口服務(wù)模塊計算最大空閑占比的FreeSWITCH服務(wù)器的示意圖;
圖4是當預(yù)測外呼,最大空閑與注冊FreeSWITCH相同時,圖1的整體模型示意圖對應(yīng)的呼叫接口服務(wù)模塊計算最大空閑占比的FreeSWITCH服務(wù)器的示意圖;
圖5是當預(yù)測外呼,最大空閑與注冊FreeSWITCH不同時,圖1的整體模型示意圖對應(yīng)的呼叫接口服務(wù)模塊計算最大空閑占比的FreeSWITCH服務(wù)器的示意圖。
具體實施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進行進一步詳細說明。應(yīng)當理解,此處所描述的具體實施例僅用于解釋本發(fā)明,并不用于限定本發(fā)明。
實施例1
請參閱圖1至圖2,
圖1是本發(fā)明的一種呼叫服務(wù)的分布式均衡負載控制方法的整體模型示意圖;
本發(fā)明公開了一種呼叫服務(wù)的分布式均衡負載控制方法,提供WEB管理模塊、數(shù)據(jù)校驗進程控制模塊、呼叫接口服務(wù)模塊、呼叫流程管理進程模塊、若干FreeSWITCH服務(wù)器、若干坐席端、數(shù)據(jù)庫及zookeeper集群組件,所述呼叫服務(wù)的分布式均衡負載控制方法包括以下步驟:
步驟S1:所述WEB管理模塊分別設(shè)置坐席端、分機和FreeSWITCH服務(wù)器的屬性和配置信息,并將配置修改的信息更新到數(shù)據(jù)庫,數(shù)據(jù)庫更新成功后,通過zookeeper客戶端發(fā)送不同的信息到zookeeper集群上通知各個進程數(shù)據(jù)變更;
步驟S2:所述數(shù)據(jù)校驗進程控制模塊預(yù)先加載數(shù)據(jù)表的數(shù)據(jù),并解析所述加載的數(shù)據(jù)存儲到數(shù)據(jù)校驗進程控制模塊的內(nèi)存中,連接所述zookeeper集群組件、公共緩存區(qū)及各臺FreeSWITCH服務(wù)器,監(jiān)聽所述zookeeper集群組件及各種連接狀態(tài),定時刷新所述數(shù)據(jù)校驗進程控制模塊的內(nèi)存數(shù)據(jù),如果監(jiān)聽到FreeSWITCH服務(wù)器連接失敗,把失敗的所述FreeSWITCH服務(wù)器標示為不可用狀態(tài),并將不可用狀態(tài)標識存入到所述公共緩存內(nèi);
步驟S3:所述呼叫接口服務(wù)模塊預(yù)先加載數(shù)據(jù)表的數(shù)據(jù),并解析所述加載的數(shù)據(jù)存儲到所述呼叫接口服務(wù)模塊的內(nèi)存中,連接并監(jiān)聽zookeeper集群組件,隨時準備刷新所述呼叫接口服務(wù)模塊的內(nèi)存數(shù)據(jù),開啟所述呼叫服務(wù)的端口,等待呼叫請求,當坐席端進行注冊請求時,當坐席主動請求呼叫時,從所述公共緩存中獲取各個FreeSWITCH服務(wù)器的錄音數(shù)據(jù),根據(jù)FreeSWITCH系統(tǒng)空閑占比計算公式計算出最大空閑占比的FreeSWITCH服務(wù)器,向所述FreeSWITCH服務(wù)器發(fā)送綁定UUID的呼叫坐席命令,并通過UUID記錄本次通話流程的信息到所述公共緩存中,當預(yù)測外呼時,從所述公共緩存中獲取各個FreeSWITCH服務(wù)器的通話錄音數(shù),并根據(jù)FreeSWITCH系統(tǒng)空閑占比計算公式計算出最大空閑占比的FreeSWITCH服務(wù)器,接著向該系統(tǒng)發(fā)送綁定UUID的呼叫坐被叫方命令,
其中,所述呼叫接口服務(wù)模塊配置有FreeSWITCH系統(tǒng)空閑占比計算公式;
步驟S4:所述數(shù)據(jù)校驗進程控制模塊預(yù)先加載數(shù)據(jù)表的數(shù)據(jù),并解析所述加載的數(shù)據(jù)存儲到數(shù)據(jù)校驗進程控制模塊的內(nèi)存中,連接所述zookeeper集群組件、公共緩存區(qū)及各臺FreeSWITCH服務(wù)器,監(jiān)聽所述zookeeper集群組件及各種連接狀態(tài),并注冊呼叫、接聽、掛件事件,解析事件的UUID,從所述公共內(nèi)存中取出通話流程記錄數(shù)據(jù),判斷呼叫類型,根據(jù)不同請求進行操作,如果是主動呼叫,呼叫方接聽,發(fā)送命令呼叫被叫方;如果是主動呼叫,被叫方接聽,橋接雙方通話;如果是預(yù)測外呼,坐席方接聽,橋接雙方通話;如果是預(yù)測外呼,被叫方接聽,發(fā)送命令呼叫坐席方;
其中,F(xiàn)reeSWITCH系統(tǒng)空閑占比計算公式為
Fs=(M-C+Q(x))/M;
其中,F(xiàn)s為,FreeSWITCH系統(tǒng)空閑占比,M為最大隨錄音數(shù)據(jù),C為目前錄音數(shù),Q(x)為加分數(shù)。
請參閱圖2及圖3,
圖2是當坐席主動請求呼叫,最大空閑與注冊FreeSWITCH相同時,圖1的整體模型示意圖對應(yīng)的呼叫接口服務(wù)模塊計算最大空閑占比的FreeSWITCH服務(wù)器的示意圖;
圖3是當坐席主動請求呼叫,最大空閑與注冊FreeSWITCH不同時,圖1的整體模型示意圖對應(yīng)的呼叫接口服務(wù)模塊計算最大空閑占比的FreeSWITCH服務(wù)器的示意圖;
當用戶主動呼叫電話時,所述步驟S3的實現(xiàn)步驟包括:
301:系統(tǒng)收到電話端的呼叫請求后,開始計算出系統(tǒng)空閑占比最大的FreeSWITCH服務(wù)器,如果最大的FreeSWITCH服務(wù)器是坐席所注冊的FreeSWITCH服務(wù)器,則直接建立第一端的通話連接,如果最大的FreeSWITCH服務(wù)器不是坐席所注冊的FreeSWITCH服務(wù)器,那么先建立與坐席所注冊的FreeSWITCH服務(wù)器連接,再由所注冊的FreeSWITCH服務(wù)器連接到坐席上,第一端連接建立成功;
302:開始建立最大空閑占比的FreeSWITCH服務(wù)器與被呼叫方的通話連接,即第二端的連接;
303:把兩端進行橋接,完成整個流程的通話連接;
304:在最大空閑的FreeSWITCH服務(wù)器上進行錄音操作。
請再參閱圖4及圖5,
圖4是當預(yù)測外呼,最大空閑與注冊FreeSWITCH相同時,圖1的整體模型示意圖對應(yīng)的呼叫接口服務(wù)模塊計算最大空閑占比的FreeSWITCH服務(wù)器的示意圖;
圖5是當預(yù)測外呼,最大空閑與注冊FreeSWITCH不同時,圖1的整體模型示意圖對應(yīng)的呼叫接口服務(wù)模塊計算最大空閑占比的FreeSWITCH服務(wù)器的示意圖;
當呼叫方式為預(yù)測外呼時,所述步驟S3的實現(xiàn)步驟包括:
301:呼叫被呼叫方,待被叫方接聽后,計算出最大空閑占比的FreeSWITCH服務(wù)器;建立最大空閑占的FreeSWITCH服務(wù)器與被呼叫方的連接,完成第一端的連接;
302:找出空閑的坐席,建立接聽方坐席到FreeSWITCH服務(wù)器的連接,如果坐席注冊的FreeSWITCH服務(wù)器與最大空閑占比的FreeSWITCH服務(wù)器相同,則直接建立通話連接,如果坐席注冊的FreeSWITCH服務(wù)器與最大空閑占比的FreeSWITCH服務(wù)器不同,先建立坐席注冊的FreeSWITCH服務(wù)器連接,再連接到呼叫坐席上,完成第二端的連接;
303:將兩端通話進行橋接;
304:在最大空閑的FreeSWITCH服務(wù)器上對通話進行錄音操作。
在本實施例,所述WEB管理模塊包括坐席管理單元、分機管理單元、網(wǎng)關(guān)管理單元及FreeSWITCH管理單元。
在本實施例,所述數(shù)據(jù)校驗進程控制模塊包括:第一數(shù)據(jù)加載解析單元、第一數(shù)據(jù)存儲單元、第一數(shù)據(jù)收發(fā)單元、第一狀態(tài)監(jiān)控單元及數(shù)據(jù)校驗匹配單元,所述步驟S2的實現(xiàn)步驟包括:所述第一數(shù)據(jù)加載解析單元預(yù)先加載數(shù)據(jù)表的數(shù)據(jù)并解析所述加載的數(shù)據(jù),第一數(shù)據(jù)加載解析單元將解析完成的數(shù)據(jù)發(fā)送給所述第一數(shù)據(jù)存儲單元進行存儲,所述第一數(shù)據(jù)收發(fā)單元連接所述zookeeper集群組件、公共緩存區(qū)、各臺FreeSWITCH服務(wù)器,所述第一狀態(tài)監(jiān)控單元監(jiān)聽所述zookeeper集群組件及各種連接狀態(tài),定時刷新所述第一數(shù)據(jù)存儲單元的內(nèi)存數(shù)據(jù),如果所述第一狀態(tài)監(jiān)控單元監(jiān)聽到FreeSWITCH服務(wù)器連接失敗,所述數(shù)據(jù)校驗匹配單元把失敗的所述FreeSWITCH服務(wù)器標示為不可用狀態(tài),并將不可用狀態(tài)標識存入到所述公共緩存內(nèi)。
在本實施例,所述呼叫接口服務(wù)模塊包括:第二數(shù)據(jù)加載解析單元、第二數(shù)據(jù)存儲單元、第二數(shù)據(jù)收發(fā)單元、第二狀態(tài)監(jiān)控單元、呼叫請求接收單元、呼叫命令發(fā)送單元、FreeSWITCH服務(wù)器任務(wù)計算單元及動態(tài)數(shù)據(jù)獲取單元;所述步驟S3的實現(xiàn)步驟包括:所述第二數(shù)據(jù)加載解析單元預(yù)先加載數(shù)據(jù)表的數(shù)據(jù)并解析所述加載的數(shù)據(jù),第二數(shù)據(jù)加載解析單元將解析完成的數(shù)據(jù)發(fā)送給所述第二數(shù)據(jù)存儲單元進行存儲,所述第二數(shù)據(jù)收發(fā)單元連接所述zookeeper集群組件、公共緩存區(qū)及各臺FreeSWITCH服務(wù)器,所述第二狀態(tài)監(jiān)控單元監(jiān)聽所述zookeeper集群組件及各種連接狀態(tài),定時刷新所述第二數(shù)據(jù)存儲單元的內(nèi)存數(shù)據(jù),所述第二數(shù)據(jù)收發(fā)單元開啟所述呼叫服務(wù)的端口,等待呼叫請求,當坐席端進行注冊請求或者主動請求呼叫時,所述動態(tài)數(shù)據(jù)獲取單元從所述公共緩存中獲取各個FreeSWITCH服務(wù)器的錄音數(shù)據(jù),所述動態(tài)數(shù)據(jù)獲取單元將獲取的FreeSWITCH服務(wù)器的錄音數(shù)據(jù)發(fā)送給所述FreeSWITCH服務(wù)器任務(wù)計算單元,所述FreeSWITCH服務(wù)器任務(wù)計算單元根據(jù)所述FreeSWITCH系統(tǒng)空閑占比計算公式計算最大空閑占比的FreeSWITCH服務(wù)器,所述FreeSWITCH服務(wù)器任務(wù)計算單元將計算出來的最大空閑占比的FreeSWITCH服務(wù)器數(shù)據(jù)發(fā)送給所述呼叫命令發(fā)送單元,所述呼叫命令發(fā)送單元向所述FreeSWITCH服務(wù)器發(fā)送綁定UUID的呼叫坐席命令,并通過UUID記錄本次通話流程的信息到所述公共緩存中,當預(yù)測外呼時,所述動態(tài)數(shù)據(jù)獲取單元從所述公共緩存中獲取各個FreeSWITCH服務(wù)器的通話錄音數(shù),所述動態(tài)數(shù)據(jù)獲取單元將獲取的FreeSWITCH服務(wù)器的錄音數(shù)據(jù)發(fā)送給所述FreeSWITCH服務(wù)器任務(wù)計算單元,所述FreeSWITCH服務(wù)器任務(wù)計算單元根據(jù)所述FreeSWITCH系統(tǒng)空閑占比計算公式計算最大空閑占比的FreeSWITCH服務(wù)器,所述FreeSWITCH服務(wù)器任務(wù)計算單元將計算出來的最大空閑占比的FreeSWITCH服務(wù)器數(shù)據(jù)發(fā)送給所述呼叫命令發(fā)送單元,所述呼叫命令發(fā)送單元發(fā)送綁定UUID的呼叫坐席被叫方命令給所述最大空閑占比的FreeSWITCH服務(wù)器。
在本實施例,所述呼叫流程管理進程模塊包括第三數(shù)據(jù)加載解析單元、第三數(shù)據(jù)存儲單元、第三數(shù)據(jù)收發(fā)單元、第三狀態(tài)監(jiān)控單元及事件均衡安排處理單元,所述步驟S4的實現(xiàn)步驟包括:所述第三數(shù)據(jù)加載解析單元預(yù)先加載數(shù)據(jù)表的數(shù)據(jù)并解析所述加載的數(shù)據(jù),第三數(shù)據(jù)加載解析單元將解析完成的數(shù)據(jù)發(fā)送給所述第三數(shù)據(jù)存儲單元進行存儲,所述第三數(shù)據(jù)收發(fā)單元連接所述zookeeper集群組件,連接到各臺所述FreeSWITCH服務(wù)器,所述事件均衡安排處理單元注冊呼叫、接聽、掛件事件,解析事件的UUID,從所述公共內(nèi)存中取出通話流程記錄數(shù)據(jù),所述事件均衡安排處理單元判斷呼叫類型,根據(jù)不同請求進行注冊事件均勻排列處理操作,如果是主動呼叫,呼叫方接聽,發(fā)送命令呼叫被叫方;如果是主動呼叫,被叫方接聽,橋接雙方通話;如果是預(yù)測外呼,坐席方接聽,橋接雙方通話;如果是預(yù)測外呼,被叫方接聽,發(fā)送命令呼叫坐席方。
實施例2
本實施提供了一種用于實現(xiàn)上述的呼叫服務(wù)的分布式均衡負載控制方法的呼叫服務(wù)的分布式均衡負載控制系統(tǒng),包括WEB管理模塊、數(shù)據(jù)校驗進程控制模塊、呼叫接口服務(wù)模塊、呼叫流程管理進程模塊、若干FreeSWITCH服務(wù)器、若干座席端、數(shù)據(jù)庫及zookeeper集群組件,所述WEB管理模塊分別設(shè)置坐席端、分機和FreeSWITCH服務(wù)器的屬性和配置信息,并將配置修改的信息更新到數(shù)據(jù)庫,數(shù)據(jù)庫更新成功后,通過zookeeper客戶端發(fā)送不同的信息到zookeeper集群上通知各個進程數(shù)據(jù)變更;所述數(shù)據(jù)校驗進程控制模塊預(yù)先加載數(shù)據(jù)表的數(shù)據(jù),并解析所述加載的數(shù)據(jù)存儲到數(shù)據(jù)校驗進程控制模塊的內(nèi)存中,連接所述zookeeper集群組件、公共緩存區(qū)及各臺FreeSWITCH服務(wù)器,監(jiān)聽所述zookeeper集群組件及各種連接狀態(tài),定時刷新所述數(shù)據(jù)校驗進程控制模塊的內(nèi)存數(shù)據(jù),如果監(jiān)聽到FreeSWITCH服務(wù)器連接失敗,把失敗的所述FreeSWITCH服務(wù)器標示為不可用狀態(tài),并將不可用狀態(tài)標識存入到所述公共緩存內(nèi);所述呼叫接口服務(wù)模塊預(yù)先加載數(shù)據(jù)表的數(shù)據(jù),并解析所述加載的數(shù)據(jù)存儲到所述呼叫接口服務(wù)模塊的內(nèi)存中,連接并監(jiān)聽zookeeper集群組件,隨時準備刷新所述呼叫接口服務(wù)模塊的內(nèi)存數(shù)據(jù),開啟所述呼叫服務(wù)的端口,等待呼叫請求,當坐席端進行注冊請求時,當坐席主動請求呼叫時,從所述公共緩存中獲取各個FreeSWITCH服務(wù)器的錄音數(shù)據(jù),根據(jù)FreeSWITCH系統(tǒng)空閑占比計算公式計算出最大空閑占比的FreeSWITCH服務(wù)器,向所述FreeSWITCH服務(wù)器發(fā)送綁定UUID的呼叫坐席命令,并通過UUID記錄本次通話流程的信息到所述公共緩存中,當預(yù)測外呼時,從所述公共緩存中獲取各個FreeSWITCH服務(wù)器的通話錄音數(shù),并根據(jù)FreeSWITCH系統(tǒng)空閑占比計算公式計算出最大空閑占比的FreeSWITCH服務(wù)器,接著向該系統(tǒng)發(fā)送綁定UUID的呼叫坐被叫方命令,其中,所述呼叫接口服務(wù)模塊配置有FreeSWITCH系統(tǒng)空閑占比計算公式;所述數(shù)據(jù)校驗進程控制模塊預(yù)先加載數(shù)據(jù)表的數(shù)據(jù),并解析所述加載的數(shù)據(jù)存儲到數(shù)據(jù)校驗進程控制模塊的內(nèi)存中,連接所述zookeeper集群組件、公共緩存區(qū)及各臺FreeSWITCH服務(wù)器,監(jiān)聽所述zookeeper集群組件及各種連接狀態(tài),并注冊呼叫、接聽、掛件事件,解析事件的UUID,從所述公共內(nèi)存中取出通話流程記錄數(shù)據(jù),判斷呼叫類型,根據(jù)不同請求進行操作,如果是主動呼叫,呼叫方接聽,發(fā)送命令呼叫被叫方;如果是主動呼叫,被叫方接聽,橋接雙方通話;如果是預(yù)測外呼,坐席方接聽,橋接雙方通話;如果是預(yù)測外呼,被叫方接聽,發(fā)送命令呼叫坐席方;
其中,F(xiàn)reeSWITCH系統(tǒng)空閑占比計算公式為
Fs=(M-C+Q(x))/M;
其中,F(xiàn)s為,FreeSWITCH系統(tǒng)空閑占比,M為最大隨錄音數(shù)據(jù),C為目前錄音數(shù),Q(x)為加分數(shù)。
采用了上述方法及系統(tǒng)之后,所述WEB管理模塊分別設(shè)置坐席端、分機和FreeSWITCH服務(wù)器的屬性和配置信息,并將配置修改的信息更新到數(shù)據(jù)庫,數(shù)據(jù)庫更新成功后,通過zookeeper客戶端發(fā)送不同的信息到zookeeper集群上通知各個進程數(shù)據(jù)變更;所述數(shù)據(jù)校驗進程控制模塊預(yù)先加載數(shù)據(jù)表的數(shù)據(jù),并解析所述加載的數(shù)據(jù)存儲到數(shù)據(jù)校驗進程控制模塊的內(nèi)存中,連接所述zookeeper集群組件、公共緩存區(qū)及各臺FreeSWITCH服務(wù)器,監(jiān)聽所述zookeeper集群組件及各種連接狀態(tài),定時刷新所述數(shù)據(jù)校驗進程控制模塊的內(nèi)存數(shù)據(jù),如果監(jiān)聽到FreeSWITCH服務(wù)器連接失敗,把失敗的所述FreeSWITCH服務(wù)器標示為不可用狀態(tài),并將不可用狀態(tài)標識存入到所述公共緩存內(nèi);所述呼叫接口服務(wù)模塊預(yù)先加載數(shù)據(jù)表的數(shù)據(jù),并解析所述加載的數(shù)據(jù)存儲到所述呼叫接口服務(wù)模塊的內(nèi)存中,連接并監(jiān)聽zookeeper集群組件,隨時準備刷新所述呼叫接口服務(wù)模塊的內(nèi)存數(shù)據(jù),開啟所述呼叫服務(wù)的端口,等待呼叫請求,當坐席端進行注冊請求時,當坐席主動請求呼叫時,從所述公共緩存中獲取各個FreeSWITCH服務(wù)器的錄音數(shù)據(jù),根據(jù)FreeSWITCH系統(tǒng)空閑占比計算公式計算出最大空閑占比的FreeSWITCH服務(wù)器,向所述FreeSWITCH服務(wù)器發(fā)送綁定UUID的呼叫坐席命令,并通過UUID記錄本次通話流程的信息到所述公共緩存中,當預(yù)測外呼時,從所述公共緩存中獲取各個FreeSWITCH服務(wù)器的通話錄音數(shù),并根據(jù)FreeSWITCH系統(tǒng)空閑占比計算公式計算出最大空閑占比的FreeSWITCH服務(wù)器,接著向該系統(tǒng)發(fā)送綁定UUID的呼叫坐被叫方命令,其中,所述呼叫接口服務(wù)模塊配置有FreeSWITCH系統(tǒng)空閑占比計算公式,所述數(shù)據(jù)校驗進程控制模塊預(yù)先加載數(shù)據(jù)表的數(shù)據(jù),并解析所述加載的數(shù)據(jù)存儲到數(shù)據(jù)校驗進程控制模塊的內(nèi)存中,連接所述zookeeper集群組件、公共緩存區(qū)及各臺FreeSWITCH服務(wù)器,監(jiān)聽所述zookeeper集群組件及各種連接狀態(tài),并注冊呼叫、接聽、掛件事件,解析事件的UUID,從所述公共內(nèi)存中取出通話流程記錄數(shù)據(jù),判斷呼叫類型,根據(jù)不同請求進行操作,如果是主動呼叫,呼叫方接聽,發(fā)送命令呼叫被叫方;如果是主動呼叫,被叫方接聽,橋接雙方通話;如果是預(yù)測外呼,坐席方接聽,橋接雙方通話;如果是預(yù)測外呼,被叫方接聽,發(fā)送命令呼叫坐席方;該呼叫服務(wù)的分布式均衡負載控制方法及系統(tǒng)能靈活設(shè)置FreeSWITCH的最大負載能力,可在FreeSWITCH集群中性能消耗相對最少的FreeSWITCH上進行錄音操作,可控制地進行FreeSWITCH的相對負載占比設(shè)置,均衡分布最消耗性能的呼叫操作,均衡分配呼叫任務(wù)、減少資源的浪費、增強呼叫系統(tǒng)的穩(wěn)定性、靈活地處理呼叫過程中的各種事件,大容量有序地處理呼叫任務(wù)。
同時,應(yīng)當理解的是,以上僅為本發(fā)明的優(yōu)選實施例,不能因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效實現(xiàn)方法,或直接或間接運用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護范圍內(nèi)。