UniMedia 6S級電話語音中間件典型應(yīng)用-自動人工互轉(zhuǎn) 
                    [附源碼]
                  
                   2009/05/15
                  1.應(yīng)用場景
                  
                    在呼叫中心系統(tǒng),在對客戶提供IVR自動語音服務(wù)過程中,可以根據(jù)需要中斷自動流程,轉(zhuǎn)入人工進行服務(wù),在人工服務(wù)完成后,可以再次轉(zhuǎn)入IVR,并且,能夠從中斷的位置繼續(xù)自動服務(wù)流程。目前其他中間件從人工轉(zhuǎn)入自動后,將重新開始新的IVR交互或從指定位置繼續(xù),其中的過程數(shù)據(jù)均已丟失。
                  
                  2.源碼片段
                  
                  //假定CTI引擎的人工服務(wù)結(jié)束通知開關(guān)已經(jīng)打開,即CTI引擎的system.config中的參數(shù)AGENTOVETOIVR=1,缺省是AGENTOVETOIVR=0
                  /////////////////////////////
                  
                  //全局變量聲明
                  SCPMANAGER g_SCPManager
                  
                  //進程主函數(shù)
                  sub main(LIST& cpl)
                  {
                  int iCallID, iTaskID, iRet
                  CALL callOriginal
                  bool isTimeout
                  
                  //注冊系統(tǒng)錯誤事件處理函數(shù)
                  EventMap(INF_SYS_ERROR, OnSysError, 0)
                  //注冊CALL掛機事件處理函數(shù)
                  EventMap(INF_CTI_ONHOOK, OnCallEndInform, 0)
                  
                  //在BOOT進程啟動該進程時,參數(shù)是按照CALLID、ANO、BNO,UUD順序先后存放在參數(shù)列表cpl中
                  //根據(jù)業(yè)務(wù)需要取出參數(shù)值
                  
                  //獲取進程命令行參數(shù)中的CallID
                  cpl.GetItem(0, iCallID, iRet)
                  
                  Log(DBG, "Call Income: CallID=", iCallID)
                  
                  //根據(jù)對象ID獲得當(dāng)前Call對象
                  g_SCPManager.FindCallByID(iCallID, callOriginal, iRet)
                  //設(shè)置Call對象的業(yè)務(wù)處理進程ID為當(dāng)前進程
                  callOriginal.AttachCurrentProcess(iRet)
                  //應(yīng)答CALL
                  callOriginal.Answer(iRet)
                  
                  callOriginal.Play(false,false,"welcome.vox", iTaskID, iRet)
                  
                  //來話轉(zhuǎn)換2000ACD隊列,等候人工座席服務(wù)
                  callOriginal.Forward("2000",-1,"",iRet)
                  if (iRet == RET_SUCC)
                  {
                  Log(DBG,"轉(zhuǎn)ACD隊列成功")
                  }
                  
                  //等待人工服務(wù)結(jié)束事件
                  EventWait(INF_CTI_AGENTSERVICEOVER,callOriginal.CallID,-1,isTimeout)
                  //等到后繼續(xù)其它流程處理
                  callOriginal.Play(false,false,"musichold.vox", iTaskID, iRet)
                  //...
                  
                  //等待用戶掛機事件
                  Wait(-1)
                  }
                  
                  //掛機通知處理函數(shù)
                  sub OnCallEndInform(int tag, CALL& call)
                  {
                  Log(INF, "OnHooked. CallID=", call.CallID)
                  Log(INF, "Exit...")
                  
                  //腳步進程因用戶掛機結(jié)束
                  Exit("OnHook")
                  }
                  
                  //錯誤處理函數(shù)
                  sub OnSysError(int tag)
                  {
                  Log(ERR, "System error: ", __LASTERRSTR__)
                  
                  //腳步進程因命令調(diào)用失敗結(jié)束
                  Exit("Error")
                  } 
                  CTI論壇報道
                  
相關(guān)鏈接:
上林县|
澄江县|
金平|
洛宁县|
巴中市|
乐山市|
南康市|
新乡县|
肃南|
平乡县|
雷州市|
福鼎市|
玉田县|
锦屏县|
洪洞县|
克东县|
贵阳市|
邻水|
湖口县|
赫章县|
大城县|
章丘市|
西平县|
商河县|
潼关县|
石城县|
平凉市|
萨迦县|
黔江区|
东莞市|
金坛市|
舒城县|
织金县|
三江|
垦利县|
扎赉特旗|
枞阳县|
阿图什市|
遵化市|
鄂州市|
黄石市|