跨平臺(tái)CTIClient控制系統(tǒng)設(shè)計(jì)思路及實(shí)踐
陳豐玉 2005/10/09
1.基本思想:
由于CTI中間件產(chǎn)品的基本功能都大同小異,但是目前提供CTI中間件產(chǎn)品的廠商卻很多。集成商需要針對(duì)不同的用戶,不同的廠商重復(fù)開(kāi)發(fā)大量的功能類似的集成產(chǎn)品,且集成后的所謂產(chǎn)品復(fù)用度很低。針對(duì)一個(gè)用戶、一個(gè)項(xiàng)目開(kāi)發(fā)出來(lái)的產(chǎn)品很難在其它項(xiàng)目上直接使用,導(dǎo)致集成商的重復(fù)開(kāi)發(fā)。
本文嘗試針對(duì)不同的廠商、不同的用戶,提供相對(duì)統(tǒng)一的集成方法。基本思想如下:
將CTIClient控制系統(tǒng)劃分為三個(gè)層次:
- 控件封裝層;
控件封裝層要根據(jù)不同的廠商提供的CTIClient產(chǎn)品進(jìn)行封裝,形成一組接口統(tǒng)一的控件產(chǎn)品,供系統(tǒng)控制層調(diào)用。下面在"控件封裝層功能實(shí)現(xiàn)"部分會(huì)詳細(xì)說(shuō)明該部分的接口要求。
- 系統(tǒng)控制層;
系統(tǒng)控制層主要完成座席軟電話系統(tǒng)中座席操作界面與控件之間的交互。這種交互有兩種,一種是界面向控件發(fā)送方法調(diào)用請(qǐng)求;一種是控件向界面觸發(fā)事件。下面在"系統(tǒng)控制層功能實(shí)現(xiàn)"
部分會(huì)詳細(xì)說(shuō)明該部分的功能實(shí)現(xiàn)。
- 界面展現(xiàn)層;
界面展現(xiàn)層主要完成最終用戶界面的展現(xiàn)部分的處理。根據(jù)不同的用戶,該部分可以有很大的不同。該部分的開(kāi)發(fā)工作量只是一個(gè)頁(yè)面而已,工作量非常小。
2.設(shè)計(jì)詳細(xì)說(shuō)明:
2.1. 控件封裝層功能實(shí)現(xiàn);
該層主要根據(jù)設(shè)計(jì)好的接口在一個(gè)具體的平臺(tái)上實(shí)現(xiàn)對(duì)CTIClient功能的控制封裝。主要有以下幾類功能接口:
下面分別詳細(xì)說(shuō)明:
2.1.1. 屬性接口:
屬性接口可分為兩類:
- 服務(wù)器相關(guān)的屬性:
- CTI ServerIP地址;
- CTI Server服務(wù)端口號(hào);
- 座席相關(guān)的屬性:
- 座席號(hào);
- 登錄密碼;
- 登錄分機(jī)號(hào);
- 技能組號(hào);
屬性的賦值在控件載入時(shí)進(jìn)行,即在控件所在的頁(yè)面的onload事件中進(jìn)行。
2.1.2. 方法接口:
- 聯(lián)接類方法
- 聯(lián)接服務(wù)器
- 斷開(kāi)與服務(wù)器的聯(lián)接
- 座席狀態(tài)類方法
- 簽入
- 簽出
- 就緒
- 未就緒
- 工作就緒
- 工作未就緒
- 獲取最新?tīng)顟B(tài)代碼
- 呼叫處理類方法
- 摘機(jī)
- 掛機(jī)
- 候機(jī)
- 復(fù)機(jī)
- 轉(zhuǎn)接
- 單步轉(zhuǎn)接
- 會(huì)議
- 單步會(huì)議
- 咨詢(求助)
- 恢復(fù)
- 撥號(hào)
- 話后處理
- 管理員相關(guān)方法
- 監(jiān)聽(tīng)
- 強(qiáng)插
- 強(qiáng)拆
- 強(qiáng)行就緒
- 強(qiáng)行簽出
2.1.3. 事件接口:
- 聯(lián)接類事件
- 與服務(wù)器聯(lián)接成功事件
- 斷開(kāi)與服務(wù)器聯(lián)接事件
- 座席狀態(tài)類事件
- 簽入事件
- 簽出事件
- 就緒事件
- 未就緒事件
- 座席狀態(tài)變化事件
- 呼叫處理類事件
- 震鈴事件
- 呼叫建立事件
- 通話事件
- 候機(jī)事件
- 復(fù)機(jī)事件
- 掛機(jī)事件
- 話后處理事件
- 電話轉(zhuǎn)接事件
- 電話會(huì)議事件
- 咨詢成功事件
- 咨詢恢復(fù)成功事件
- 撥號(hào)事件
2.2.系統(tǒng)控制層功能實(shí)現(xiàn);
系統(tǒng)控制層主要實(shí)現(xiàn)控件與頁(yè)面之間的交互控制。主要有以下幾類:
2.2.1. 向控件發(fā)送方法調(diào)用請(qǐng)求;
在頁(yè)面載入、頁(yè)面關(guān)閉和用戶點(diǎn)擊頁(yè)面上相關(guān)的按鈕時(shí),向控件發(fā)送相應(yīng)的方法調(diào)用。如頁(yè)面載入時(shí),給控件的聯(lián)接屬性賦值并調(diào)用聯(lián)接方法;點(diǎn)擊就緒按鈕時(shí)調(diào)用就緒方法等。詳細(xì)說(shuō)明如下:
- 鏈接服務(wù)器的控制方法:
在頁(yè)面載入時(shí)調(diào)用。首先給控件相關(guān)屬性賦值(CTI ServerIP地址、CTI Server服務(wù)端口號(hào)),然后調(diào)用"聯(lián)接服務(wù)器"方法;
- 簽入的控制方法:
在用戶點(diǎn)擊"簽入"按鈕時(shí)調(diào)用。使當(dāng)前按鈕失效,調(diào)用控件的"簽入"方法,記錄相關(guān)日志;該方法調(diào)用成功后,系統(tǒng)會(huì)收到"簽入事件"
- 就緒的控制方法:
在用戶點(diǎn)擊"就緒"按鈕時(shí)調(diào)用。使當(dāng)前按鈕失效,調(diào)用控件的"就緒"方法,記錄相關(guān)日志;該方法調(diào)用成功后,系統(tǒng)會(huì)收到"就緒事件"
- 未就緒的控制方法:
在用戶點(diǎn)擊"未就緒"按鈕時(shí)調(diào)用。使當(dāng)前按鈕失效,調(diào)用控件的"未就緒"方法,記錄相關(guān)日志;該方法調(diào)用成功后,系統(tǒng)會(huì)收到"未就緒事件"
- 簽出的控制方法:
在用戶點(diǎn)擊"簽出"按鈕時(shí)調(diào)用。使當(dāng)前按鈕失效,調(diào)用控件的"簽出"方法,記錄相關(guān)日志,關(guān)閉主窗口。
- 應(yīng)答
座席來(lái)電時(shí),系統(tǒng)會(huì)收到了"震鈴"事件,在震鈴事件的控制邏輯中會(huì)點(diǎn)亮"應(yīng)答" 按鈕,在用戶點(diǎn)擊"應(yīng)答"按鈕時(shí)調(diào)用本處理過(guò)程。使當(dāng)前按鈕失效,調(diào)用控件的"應(yīng)答"方法,記錄相關(guān)日志;該方法調(diào)用成功后,系統(tǒng)會(huì)收到"通話事件"。
- 掛機(jī)
座席應(yīng)答成功后,系統(tǒng)會(huì)收到了"通話事件",在通話事件的控制邏輯中會(huì)點(diǎn)亮"掛機(jī)" 按鈕,在用戶點(diǎn)擊"掛機(jī)"按鈕時(shí)調(diào)用本處理過(guò)程。使當(dāng)前按鈕失效,調(diào)用控件的"掛機(jī)"方法,記錄相關(guān)日志;該方法調(diào)用成功后,系統(tǒng)會(huì)收到"座席狀態(tài)變化事件"。
- 候機(jī)
座席應(yīng)答成功后,系統(tǒng)會(huì)收到了"通話事件",在通話事件的控制邏輯中會(huì)點(diǎn)亮"候機(jī)" 按鈕,在用戶點(diǎn)擊"候機(jī)"按鈕時(shí)調(diào)用本處理過(guò)程。使當(dāng)前按鈕失效,調(diào)用控件的"候機(jī)"方法,記錄相關(guān)日志;該方法調(diào)用成功后,系統(tǒng)會(huì)收到"候機(jī)事件"。
- 復(fù)機(jī)
座席候機(jī)成功后,系統(tǒng)會(huì)收到了"候機(jī)事件",在候機(jī)事件的控制邏輯中會(huì)點(diǎn)亮"復(fù)機(jī)" 按鈕,在用戶點(diǎn)擊"復(fù)機(jī)"按鈕時(shí)調(diào)用本處理過(guò)程。使當(dāng)前按鈕失效,調(diào)用控件的"復(fù)機(jī)"方法,記錄相關(guān)日志;該方法調(diào)用成功后,系統(tǒng)會(huì)收到"座席狀態(tài)變化事件"。
- 轉(zhuǎn)接
座席應(yīng)答成功后,系統(tǒng)會(huì)收到了"通話事件",在通話事件的控制邏輯中會(huì)點(diǎn)亮"轉(zhuǎn)接" 按鈕,在用戶點(diǎn)擊"轉(zhuǎn)接"按鈕時(shí),系統(tǒng)打開(kāi)轉(zhuǎn)接對(duì)話框,輸入目標(biāo)號(hào)碼后,確定,調(diào)用本處理過(guò)程。使當(dāng)前按鈕失效,調(diào)用控件的"轉(zhuǎn)接"方法,記錄相關(guān)日志;該方法調(diào)用成功后,系統(tǒng)會(huì)收到"電話轉(zhuǎn)接事件"。
- 會(huì)議
座席應(yīng)答成功或外撥成功后,系統(tǒng)會(huì)收到了"通話事件",在通話事件的控制邏輯中會(huì)點(diǎn)亮"會(huì)議" 按鈕,在用戶點(diǎn)擊"會(huì)議"按鈕時(shí),系統(tǒng)打開(kāi)會(huì)議對(duì)話框,輸入目標(biāo)號(hào)碼后,確定,調(diào)用本處理過(guò)程。使當(dāng)前按鈕失效,調(diào)用控件的"會(huì)議"方法,記錄相關(guān)日志;該方法調(diào)用成功后,系統(tǒng)會(huì)收到"電話會(huì)議事件"。
- 外撥
座席處于就緒狀態(tài)或簽入未就緒狀態(tài)下或候機(jī)狀態(tài)下,可以進(jìn)行外撥,在用戶點(diǎn)擊"外撥"按鈕時(shí),系統(tǒng)打開(kāi)外撥對(duì)話框,輸入目標(biāo)號(hào)碼后,確定,調(diào)用本處理過(guò)程。使當(dāng)前按鈕失效,調(diào)用控件的"撥號(hào)"方法,記錄相關(guān)日志;該方法調(diào)用成功后,系統(tǒng)會(huì)收到"通話事件"。
- 內(nèi)線
座席處于就緒狀態(tài)或簽入未就緒狀態(tài)下或候機(jī)狀態(tài)下,可以進(jìn)行內(nèi)線,在用戶點(diǎn)擊"內(nèi)線"按鈕時(shí),系統(tǒng)打開(kāi)內(nèi)線對(duì)話框,選擇目標(biāo)座席后,確定,調(diào)用本處理過(guò)程。使當(dāng)前按鈕失效,調(diào)用控件的"撥號(hào)"方法,記錄相關(guān)日志;該方法調(diào)用成功后,系統(tǒng)會(huì)收到"通話事件"。
- 話后處理
座席處于通話狀態(tài)時(shí),點(diǎn)亮"話后處理"按鈕,在用戶點(diǎn)擊"話后處理"按鈕時(shí),調(diào)用本處理過(guò)程。使當(dāng)前按鈕失效,調(diào)用控件的"話后處理"方法,記錄相關(guān)日志;該方法調(diào)用成功后,系統(tǒng)在電話終止時(shí)收到"話后處理事件"。
- 臨時(shí)簽退
座席處于未就緒狀態(tài)時(shí),點(diǎn)亮"臨時(shí)簽退"按鈕,在用戶點(diǎn)擊"臨時(shí)簽退"按鈕時(shí),調(diào)用本處理過(guò)程。使當(dāng)前按鈕失效,調(diào)用控件的"簽出"方法,記錄相關(guān)日志;該方法調(diào)用成功后,系統(tǒng)會(huì)收到"簽出事件"。
2.2.2. 控件的事件處理;
系統(tǒng)聯(lián)接情況發(fā)生變化、座席狀態(tài)發(fā)生變化、呼叫狀態(tài)或信息發(fā)生變化時(shí),CTIServer會(huì)通過(guò)控件觸發(fā)相關(guān)的事件。該部分完成對(duì)各個(gè)事件的處理方法的調(diào)用。
- 與服務(wù)器聯(lián)接成功事件
在該事件中,點(diǎn)亮"簽入"按鈕。此時(shí)座席只能做簽入操作。
- 斷開(kāi)與服務(wù)器聯(lián)接事件
在該事件中,使所有按鈕失效。此時(shí)座席不能做任何操作。
- 簽入事件
在該事件中,點(diǎn)亮"就緒"、"簽出"、"臨時(shí)簽退"、"外撥"、"內(nèi)線"按鈕。此時(shí)座席可以做相關(guān)操作。
- 簽出事件
在該事件中,使所有按鈕失效,可以考慮關(guān)閉主窗口。
- 就緒事件
在該事件中,點(diǎn)亮"未就緒"、"外撥"、"內(nèi)線"按鈕。此時(shí)座席可以做相關(guān)操作。
- 未就緒事件
在該事件中,點(diǎn)亮"就緒"、"簽出"、"臨時(shí)簽退"、"外撥"、"內(nèi)線"按鈕。此時(shí)座席可以做相關(guān)操作。
- 座席狀態(tài)變化事件
在該事件中,根據(jù)座席最新的狀態(tài)碼,點(diǎn)亮相關(guān)的狀態(tài)按鈕。
- 震鈴事件
座席來(lái)電時(shí),觸發(fā)該事件。在該事件中,首先使所有按鈕失效,點(diǎn)亮"應(yīng)答" 按鈕,此時(shí)座席只能做應(yīng)答操作。
- 呼叫建立事件
呼叫到達(dá)時(shí)或外撥開(kāi)始時(shí)觸發(fā)該事件。在該事件中,可以做一些呼叫開(kāi)始的信息處理。
- 通話事件
在來(lái)電應(yīng)答或外撥接通時(shí)觸發(fā)該事件。在該事件中,點(diǎn)亮"掛機(jī)"、"轉(zhuǎn)接"、"會(huì)議"、"候機(jī)"、"求助"等按鈕。此時(shí)座席可以做相關(guān)操作。
- 候機(jī)事件
在座席候機(jī)成功時(shí)觸發(fā)該事件。在該事件中,點(diǎn)亮"復(fù)機(jī)"、"外撥"、"內(nèi)線"等按鈕。此時(shí)座席可以做相關(guān)操作。
- 復(fù)機(jī)事件
在座席復(fù)機(jī)成功時(shí)觸發(fā)該事件。在該事件中,點(diǎn)亮與通話事件相同的按鈕。此時(shí)座席可以做相關(guān)操作。
- 掛機(jī)事件
在客戶掛機(jī)或座席掛機(jī)成功時(shí)觸發(fā)該事件。在該事件中,處理呼叫結(jié)束相關(guān)的事情,并回到"就緒"或"未就緒"狀態(tài)。
- 話后處理事件
在座席與客戶通話期間,座席點(diǎn)擊了"話后處理"按鈕,該通話結(jié)束后,系統(tǒng)會(huì)收到"話后處理"事件,在該事件中,首先使所有按鈕失效,同時(shí)點(diǎn)亮"就緒"、"未就緒"按鈕,座席可以執(zhí)行相關(guān)操作,結(jié)束話后處理狀態(tài),也可以等待話后處理時(shí)間到達(dá)后,自動(dòng)結(jié)束話后處理狀態(tài)。
- 電話轉(zhuǎn)接事件
在座席成功發(fā)起轉(zhuǎn)接操作或接收到轉(zhuǎn)接到達(dá)電話時(shí),觸發(fā)該事件,系統(tǒng)可以根據(jù)兩種情況分別進(jìn)行處理。
- 電話會(huì)議事件
在座席成功發(fā)起會(huì)議操作或接收到會(huì)議到達(dá)電話時(shí),觸發(fā)該事件,系統(tǒng)可以根據(jù)兩種情況分別進(jìn)行處理。
- 咨詢成功事件
在座席成功發(fā)起求助操作時(shí),觸發(fā)該事件。
- 咨詢恢復(fù)成功事件
座席在求助狀態(tài)下,成功進(jìn)行"恢復(fù)"操作時(shí),觸發(fā)該事件。
- 撥號(hào)事件
座席在發(fā)起外撥或內(nèi)線電話操作時(shí),觸發(fā)該事件。
2.3. 界面展現(xiàn)層功能實(shí)現(xiàn);
界面展現(xiàn)層主要實(shí)現(xiàn)界面頁(yè)面的顯示并負(fù)責(zé)完成對(duì)控制層的調(diào)用。該部分的界面如下圖所示:
該部分的開(kāi)發(fā)主要有以下內(nèi)容:
- 頁(yè)面及風(fēng)格開(kāi)發(fā);
這是不同的用戶個(gè)性化要求最多的地方。針對(duì)不同的最終用戶可以開(kāi)發(fā)不同的頁(yè)面。
- 對(duì)控制層的調(diào)用;
對(duì)控制層的調(diào)用主要在頁(yè)面載入、頁(yè)面關(guān)閉和用戶點(diǎn)擊頁(yè)面上的按鈕時(shí)發(fā)生。該部分只要在相關(guān)頁(yè)面事件中對(duì)控制層提供的不同的方法進(jìn)行調(diào)用即可,與最終用戶的界面需求和不同廠商提供的產(chǎn)品沒(méi)有關(guān)系。
3.優(yōu)點(diǎn)介紹
按照本設(shè)計(jì)思想,針對(duì)不同的廠商提供的不同的CTI產(chǎn)品,只需要提供基本的控件層的封裝即可(控件開(kāi)發(fā));針對(duì)不同的用戶,只需要提供不同的展現(xiàn)層的實(shí)現(xiàn)即可(頁(yè)面開(kāi)發(fā))。對(duì)系統(tǒng)中最復(fù)雜的控制層功能實(shí)現(xiàn)成功實(shí)現(xiàn)了剝離,從而實(shí)現(xiàn)了功能的復(fù)用,并能夠靈活的滿足不同用戶的要求。
按照本設(shè)計(jì)思想進(jìn)行"CTIClient控制系統(tǒng)"的開(kāi)發(fā),可以極大的提高開(kāi)發(fā)效率,非常容易的將系統(tǒng)應(yīng)用到不同的廠商提供的產(chǎn)品平臺(tái)上,非常容易的滿足不同客戶對(duì)展現(xiàn)層不同風(fēng)格的個(gè)性需求;可以極大的降低系統(tǒng)后期維護(hù)的成本(頁(yè)面風(fēng)格的修改,不會(huì)影響到控件功能的實(shí)現(xiàn)和控制層腳本的調(diào)用),從而為公司節(jié)省可貴的人力資源。
按照本設(shè)計(jì)思路設(shè)計(jì)開(kāi)發(fā)的軟電話產(chǎn)品已經(jīng)成功的在北京農(nóng)行上線使用。
新晨科技供稿 CTI論壇編輯
相關(guān)鏈接: