當(dāng)一個(gè)用戶(hù)132********撥打95311的時(shí)候,智能云調(diào)度系統(tǒng)會(huì)根據(jù)被叫95311去數(shù)據(jù)庫(kù)取出95311的所有配置信息。系統(tǒng)再根據(jù)主叫號(hào)碼132********再去數(shù)據(jù)庫(kù)找到其所屬的地域,如深圳、廣州、東莞等。系統(tǒng)根據(jù)此地域信息再去找與之匹配的所有呼叫中心,依次比較呼叫中心的服務(wù)時(shí)間是否包含當(dāng)前的系統(tǒng)時(shí)間,如果包含,那么就確定將通話轉(zhuǎn)到該呼叫中心。
如此的設(shè)計(jì),能確保將呼叫轉(zhuǎn)到就近的呼叫中心,這樣能確保通話質(zhì)量,節(jié)約用戶(hù)的成本。同時(shí),通過(guò)比較時(shí)間,我們可以選擇服務(wù)時(shí)間相匹配的呼叫中心,確保通話能合理的分配。
智能云調(diào)度系統(tǒng)是否對(duì)每條中繼設(shè)有呼叫上限?
智能云調(diào)度系統(tǒng)對(duì)每條中繼有呼叫上限限制,此上限值是用戶(hù)在后臺(tái)配置的,目的是避免一條中繼線路經(jīng)常滿(mǎn)線,如果經(jīng)常滿(mǎn)線的話,很可能影響通話體驗(yàn)。
當(dāng)一個(gè)invite呼叫請(qǐng)求到達(dá)智能云調(diào)度系統(tǒng)后,系統(tǒng)會(huì)根據(jù)此sip消息的callid分配一個(gè)會(huì)話唯一表示uuid,保存到本地內(nèi)存。同時(shí)系統(tǒng)會(huì)根據(jù)被叫(如95311)去數(shù)據(jù)庫(kù)取出相關(guān)的數(shù)據(jù),如該呼叫中心的所有中繼線配置,根據(jù)中繼線的權(quán)重配置,取出當(dāng)前權(quán)重最大的中繼線路和它的并發(fā)上限,如中繼編號(hào)0001,上限999.所有相關(guān)的數(shù)據(jù)取出來(lái)以后,系統(tǒng)會(huì)再發(fā)起一個(gè)tcp請(qǐng)求到計(jì)數(shù)服務(wù)器,將中繼編號(hào)和上限值傳給計(jì)數(shù)服務(wù)器。
計(jì)數(shù)服務(wù)器收到此請(qǐng)求就會(huì)去本地?cái)?shù)據(jù)庫(kù)查找該中繼的數(shù)據(jù),如果沒(méi)有相應(yīng)的記錄,那么就增加一條新記錄,并且將其并發(fā)量參數(shù)加一。如果已經(jīng)存在該中繼對(duì)應(yīng)的數(shù)據(jù),那么直接將其并發(fā)量參數(shù)加一,若此發(fā)量參數(shù)已經(jīng)超過(guò)并發(fā)上限,那么計(jì)數(shù)服務(wù)器返回錯(cuò)誤消息,此消息表示當(dāng)前中繼已經(jīng)達(dá)到上限,資源耗盡。智能云調(diào)度系統(tǒng)收到這個(gè)錯(cuò)誤消息后,并不會(huì)因此掛斷通話,而是繼續(xù)選擇下一條可用的中繼線路,再發(fā)起一個(gè)tcp請(qǐng)求到計(jì)數(shù)服務(wù)器,把該中繼的中繼編號(hào)和對(duì)應(yīng)的上限值傳到計(jì)數(shù)服務(wù)器。如果還失敗,那么再繼續(xù)選擇下一條,如此循環(huán),直到計(jì)數(shù)服務(wù)返回成功的響應(yīng)為止。如果所有的中繼線路都占用滿(mǎn)了,那么智能云調(diào)度系統(tǒng)會(huì)將此通話轉(zhuǎn)到一個(gè)自動(dòng)代答的放音服務(wù)器,該服務(wù)器會(huì)向用戶(hù)播放語(yǔ)音(如“坐席繁忙,請(qǐng)稍后再撥”),確保用戶(hù)有很好的心理體驗(yàn)。智能云調(diào)度系統(tǒng)收到計(jì)數(shù)服務(wù)器成功的響應(yīng)后,會(huì)記錄當(dāng)前的中繼編號(hào)到本地內(nèi)存,當(dāng)掛機(jī)消息來(lái)到的時(shí)候,系統(tǒng)會(huì)取出該中繼編號(hào)。
當(dāng)一個(gè)bye消息請(qǐng)求到達(dá)智能云調(diào)度系統(tǒng)后,系統(tǒng)會(huì)根據(jù)此sip消息的callid查找到會(huì)話唯一表示uuid,根據(jù)此uuid,系統(tǒng)利用此uuid發(fā)起一個(gè)tcp請(qǐng)求到計(jì)數(shù)服務(wù)器,計(jì)數(shù)服務(wù)器收到此請(qǐng)求后,會(huì)去數(shù)據(jù)庫(kù)找到與之對(duì)應(yīng)的中繼編號(hào)數(shù)據(jù),將該中繼編號(hào)的并發(fā)數(shù)據(jù)參數(shù)減一。
那么智能云調(diào)度系統(tǒng)如何保證一個(gè)中繼不會(huì)重復(fù)計(jì)數(shù)加一或者重復(fù)釋放減一呢?
前面已經(jīng)提到過(guò),智能云調(diào)度系統(tǒng)在收到一個(gè)invite呼叫請(qǐng)求的時(shí)候,會(huì)在內(nèi)存中保存一個(gè)會(huì)話唯一標(biāo)識(shí)uuid,此標(biāo)識(shí)一直存在知道通話掛斷。智能云調(diào)度系統(tǒng)在發(fā)數(shù)據(jù)給計(jì)數(shù)服務(wù)器的時(shí)候也會(huì)帶上此uuid。計(jì)數(shù)服務(wù)器會(huì)針對(duì)此uuid和該請(qǐng)求的中繼編號(hào),建立一個(gè)鍵值對(duì),如uuid----trunkid,再增加中繼的使用計(jì)數(shù)。因?yàn)槊總(gè)會(huì)話的uuid都是唯一的,所以相當(dāng)于每個(gè)會(huì)話只發(fā)出一個(gè)增加計(jì)數(shù)的請(qǐng)求,所以也就不存在前面提到的重復(fù)計(jì)數(shù)的情況。而當(dāng)智能云調(diào)度收到一個(gè)bye的sip消息后,系統(tǒng)會(huì)根據(jù)此sip消息的callid查找到會(huì)話唯一表示uuid,會(huì)將此uuid傳給計(jì)數(shù)服務(wù)器,計(jì)數(shù)服務(wù)器收到釋放中繼計(jì)數(shù)的請(qǐng)求后,會(huì)根據(jù)此uuid和鍵值對(duì)uuid----trunkid,找到相應(yīng)的中繼編號(hào)trunkid,然后將該中繼編號(hào)的并發(fā)參數(shù)減一,最后釋放鍵值對(duì)uuid----trunkid。那么如果下一個(gè)同樣的uuid釋放請(qǐng)求到達(dá)后,就無(wú)法找到相應(yīng)的鍵值對(duì),也就無(wú)法再對(duì)該中繼編號(hào)的并發(fā)參數(shù)減一,從而達(dá)到準(zhǔn)確計(jì)數(shù)的功能。
智能云調(diào)度系統(tǒng)為何要增加一個(gè)自動(dòng)代答的功能?
試想一下,你如果撥打一個(gè)服務(wù)熱線,一直沒(méi)有任何聲音提示,最后呼叫失敗而掛機(jī),那么你肯定一臉茫然,不知道是這個(gè)號(hào)碼的問(wèn)題還是你自己手機(jī)的問(wèn)題。
所以,如果當(dāng)一個(gè)呼叫中心的所有運(yùn)營(yíng)商中繼線路都走不通,或者中繼的呼叫量達(dá)到上限的時(shí)候,智能云調(diào)度系統(tǒng)不會(huì)在沒(méi)有任何提示的情況下給客戶(hù)掛機(jī),而是把該通話轉(zhuǎn)到一個(gè)語(yǔ)言服務(wù)器,此語(yǔ)言服務(wù)器會(huì)提示用戶(hù)“當(dāng)前呼叫中心正忙,請(qǐng)稍后再撥”的提示,如此,用戶(hù)會(huì)有比較好的體驗(yàn)。