PS:工作4 年,也曾有過眾里尋它千百度的經歷。
如今驀然回首,發現自己雖然經歷過很多的開發工作,解決過一些自己曾經困惑的問題。卻什么也沒留下,如今幡然醒悟,開始了整理之路。
自動外呼是我2013年7月負責的項目,從設計、開發、維護一直到穩定運營,做了差不多半年之久,當時入職僅僅一年多,翻看以前的代碼和設計,發現還是有很多能夠重構和優化的結構。
這里只是從設計開始介紹當時是怎么把這個項目完成的。
各位看官輕噴。
- 相關需求
由於公司是平台類型的公司,每天都需要很多專門的客服電話通知客戶一些需要處理的事項。(客戶對於短信表示不能滿足及時通信的需求)
公司需要節省大量客服的人力成本(相關的客服人員砍了70%左右,我停止維護此項目的時候,砍了30多個。外呼使用的板卡當時聽說是5W,每年維護費用貌似3W左右)。
- 用例設計

外呼系統的用例圖。(當時剛畫出來自我感覺挺良好的,也不知道怎么想的)
- 網站:主要進行手動任務的發布、流程模板的設置以及相關報表展示。
- 掃描程序:作為自動任務的發布源,和業務邏輯集成在一起。
- 任務管理服務:創建外呼任務、推送流程模板(針對不同業務),以及觸發外呼任務的執行。
- 執行服務:加載業務流程模板、執行手動/自動任務(掃描和通知兩種模式觸發執行),依照流程模板的步驟,進行外呼和相關業務的操作。
- 呼叫中心服務:和通信板卡綁定的程序,使用板卡本身提供的底層API進行撥號,放音,收號等硬件底層操作。
- 模塊設計

由於外呼功能需要同時訪問生產環境和辦公環境的數據,部署上需要進行隔離,WCF通信是可以的越牆的,數據庫就不行了(主要是運維的限制)。
外呼系統從功能以及部署環境上分為兩個大模塊。
負責外網生產環境外呼任務數據推送,以及相應業務數據更新的外部模塊;內網辦公環境負責設置任務參數,生成外呼任務以及流轉執行任務的內部模塊。
- 外呼系統外部模塊:外呼系統的外部模塊的主要功能是從業務數據中提取需要外呼的數據,然后與外呼相關業務參數一並組織成外呼參數,通過統一調用自動外呼任務管理服務建立外呼任務,實現電話的撥打。
- 外呼系統內部模塊:外呼系統內部模塊的主要功能是設置外呼任務的執行參數、查看外呼情況,外呼任務管理,外呼任務流轉執行,以及與底層板卡通信執行呼出,放音等功能。
- 數據庫模塊:外呼系統的數據庫分為外網的外呼外部數據庫( ExtranetCallCenter),內網的外呼內部數據庫( IntranetCallCenter)、呼叫中心庫(CallCenter)。外呼外部數據庫的主要作用是存儲外呼系統業務相關的參數。外呼內部數據庫的主要作用是存儲外呼任務本身的數據。呼叫中心庫的主要作用是管理組信息和線路信息。