話務(wù)系統(tǒng)平臺是典型的LNMP架構(gòu),架設(shè)在AWS云服務(wù)上,前端使用AWS ELB作為負(fù)載均衡,為業(yè)務(wù)方和供應(yīng)商提供接入口,流量分發(fā)到后端多臺Server上,Server可以很方便地水平擴(kuò)展。ELB和Server之間有TCP健康檢查。
存儲采用MySQL,呼叫中心外呼系統(tǒng)用以保存號碼綁定關(guān)系、會話關(guān)系、可分配號碼號池,以及通話記錄。通話記錄歷史數(shù)據(jù)會定期歸檔。旁路有一個控制臺UI,用來做數(shù)據(jù)報表展示,以及控制號池調(diào)度??蛻艟烤故窃鯓油ㄟ^撥打虛擬號聯(lián)系到經(jīng)紀(jì)人的呢?
1. 綁定。首先客戶要拿到被叫經(jīng)紀(jì)人的虛擬號??蛻粼L問業(yè)務(wù)線產(chǎn)品,業(yè)務(wù)線產(chǎn)品調(diào)用話務(wù)平臺綁定接口,傳遞經(jīng)紀(jì)人真實號,話務(wù)平臺從號池中取出一個儲備虛擬號,建立綁定關(guān)系,并將虛擬號返回給業(yè)務(wù)線產(chǎn)品。在這里,綁號接口同時也是查詢虛號接口,如果真實號已經(jīng)有綁定關(guān)系,則直接返回已綁定虛號,如果尚未綁定,則綁定后再返回虛號。虛擬號是按需分配,并非所有經(jīng)紀(jì)人都預(yù)先分配一遍,這樣可以節(jié)約號碼。
2. 撥打??蛻魮艽蛱撎枺蛘咄ㄟ^APP自動調(diào)用號盤撥號。通話流程轉(zhuǎn)到運營商,運營商再將通話流程轉(zhuǎn)到與之有合作關(guān)系的供應(yīng)商,可以理解為供應(yīng)商在運營商處注冊了路由。因為撥打的是虛號,而虛號的綁定關(guān)系存儲在話務(wù)平臺,故供應(yīng)商調(diào)用話務(wù)平臺查詢虛號的綁定關(guān)系。
3. 轉(zhuǎn)接。供應(yīng)商通過話務(wù)平臺接口查到虛號對應(yīng)的真實號,然后做轉(zhuǎn)呼。雙方建立通話。電話銷售呼叫系統(tǒng),在這里,供應(yīng)商可能查到多個真實號,按照約定,供應(yīng)商按順序逐個轉(zhuǎn)呼真實號,直到某一個接通或者都未接通。每次轉(zhuǎn)呼有一定的超時時間,這樣既保證用戶不用等太久,又避免經(jīng)紀(jì)人漏接電話。
4. 推送話單。當(dāng)通話結(jié)束之后,供應(yīng)商將話單數(shù)據(jù)推送至話務(wù)系統(tǒng)平臺,話單包含號碼、時長、計費、通話狀態(tài)等關(guān)鍵信息。話務(wù)平臺存儲話單,并推送給業(yè)務(wù)方。在這里,可能受到網(wǎng)絡(luò)抖動等因素影響而推不成功,我們的解決方案是:
A、供應(yīng)商重復(fù)推送,當(dāng)出現(xiàn)超時、503等狀況時,供應(yīng)商標(biāo)記該條話單為“未同步成功”狀態(tài),并在一定時間后重新發(fā)起推送,如果仍然不成功,則拉長時間間隔后再次推送;
B、話務(wù)平臺定期拉取話單,和本地數(shù)據(jù)check,若發(fā)現(xiàn)丟單則補單。
以上通過重復(fù)推送和推拉結(jié)合的方式保證話單數(shù)據(jù)及時、正確地同步。這一設(shè)計在其他數(shù)據(jù)同步的設(shè)計中已被證明為一種行之有效的方法,比如支付行業(yè),第三方支付平臺通知商戶支付訂單狀態(tài)就是采用這種方法。