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