首頁
>>
廠商
>>
CT中間件廠商
>>
朗深技術
使用Java應用程序快速實現自己的專用IVR
2009/06/04
1.涉及的組件
Jcom.jar
2.應用環(huán)境
使用Java Application開發(fā)固定流程的IVR。
3.目標功能
來話后放音,放音完成后掛機。
4.主要代碼片段
///////////////////////////////////////////////////////////////////////////////
Part 1: 主處理類
package examples;
import lioncen.cti.jcom.engine.*;
import lioncen.cti.jcom.object.*;
import java.awt.*;
import java.awt.event.*;
/**
* 全局事件處理器
* 從CTIEventAdapter繼承,用來實現CTI全局消息處理
*/
class MyCTIEventHandler extends CTIEventAdapter
{
/**
* 來話通知,產生單獨的線程去處理邏輯
*/
public void callIncome(int pid, CALL call, String ano, String bno)
{
SCPMANAGER.ctiLog.Debug("MainEventHandler",
"PID=" + pid + " CallIncome: Ano=" + ano
+ " Bno=" + bno + " CallID=" + call.callID);
JComDemoThread teleThd = new JComDemoThread(call);
teleThd.start();
}
/**
* 掛機通知,輸出日志
*/
public void callEnd(int pid, CALL call)
{
SCPMANAGER.ctiLog.Debug("MainEventHandler",
"PID=" + pid + " CallEnd: CallID=" + call.callID);
}
}
/** 主處理類,應用入口
* 收到來話事件后,產生單獨的處理線程處理話務邏輯
*/
public class JComTest
{
//定義靜態(tài)的管理器對象
static SCPMANAGER mgr = new SCPMANAGER();
public static void main(String Args[])
{
Frame mywin = new Frame("JCom Test");
mywin.setSize(300, 300);
mywin.setBackground(Color.BLUE);
mywin.setVisible(true);
mywin.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
SCPMANAGER.ctiEngine.stop();
SCPMANAGER.ctiLog.Notify("Main", "程序正常退出");
System.exit(0);
}
});
//設置管理器對象的消息處理器
mgr.ctiEventListener = new MyCTIEventHandler();
}
}
///////////////////////////////////////////////////////////////////
Part 2: 電話處理線程類
package examples;
import lioncen.cti.jcom.*;
import lioncen.cti.jcom.object.*;
import lioncen.cti.jcom.engine.*;
/**
* 線程事件處理函數
* 從CTIThreadEventAdapter繼承,用來實現線程消息處理
*
*/
class MyThreadEventHandler extends CTIThreadEventAdapter
{
/**
* 來話通知
*/
public void callIncome(CTITeleThread thd, CALL call, String ano, String bno)
{
SCPMANAGER.ctiLog.Debug("ThreadEventHandler", "PID=" + thd.processID
+ " CallIncome: Ano=" + ano + " Bno=" + bno);
}
/**
* 掛機通知
*/
public void callEnd(CTITeleThread thd, CALL call)
{
SCPMANAGER.ctiLog.Debug("ThreadEventHandler", "PID=" + thd.processID
+ " CallEnd: CallID=" + call.callID);
thd.terminate = true;
}
// 其它消息與本例子無關,請參考JCOM API
}
/**
*
* 處理電話邏輯的線程類
* 一個簡單的例子
* 收到電話后應答,并開始循環(huán)播放Welcome.vox文件,播放30秒后掛機
*/
public class JComDemoThread extends CTITeleThread
{
public JComDemoThread(CALL call)
{
//構造基類
super(call);
//設置線程中管理器對象對應的時間處理器
thdSCPManager.thdEventListener = new MyThreadEventHandler();
}
public void Sleep(int msec)
{
try
{
sleep(msec);
}
catch (InterruptedException e)
{
}
}
public void run()
{
//應答電話
int ret = originalCall.answer();
if (ret == CTIConst.RET_FAIL)
{
System.out.println("應答失敗");
return;
}
//設置關聯的線程ID,后續(xù)關于此線程的消息將直接通知線程
originalCall.attachProcessID(processID);
//顯示來話信息
System.out.println("來話:主叫="
+ originalCall.getAno()
+ " 被叫=" + originalCall.getBno()
+ " 時間=" + originalCall.getOccurTime());
//循環(huán)異步放音,播放CTI服務器上的D:\\vox\\welcome.vox文件
int taskid = originalCall.play(true, true, "D:\\vox\\welcome.vox");
//放音等待30秒
Sleep(30000);
//停止放音
originalCall.stopOP(taskid);
//掛機
originalCall.onHook();
//等待掛機消息,掛機消息處理函數中設置terminate為true
while (terminate == false)
{
Sleep(1000);
}
//線程清理,很重要!
finalize();
}
}
CTI論壇報道
相關鏈接:
使用C++Builder快速實現自己的專用IVR
2009-06-05
UniMedia Script++常用對象及使用
2009-06-03
UniMedia MSIX座席控件的使用
2009-06-02
UniMedia MSIX座席控件Delphi調用實例解析
2009-06-01
UniMedia IDE集成環(huán)境文件操作實例解析
2009-05-22
靖宇县
|
普宁市
|
河池市
|
大名县
|
东阳市
|
布尔津县
|
芜湖县
|
潞西市
|
伽师县
|
平邑县
|
栾城县
|
勃利县
|
清水县
|
夏邑县
|
淅川县
|
高邑县
|
延安市
|
青岛市
|
霍山县
|
惠安县
|
郧西县
|
普兰店市
|
香港
|
福鼎市
|
黔南
|
长沙县
|
陆河县
|
巴林右旗
|
巴彦淖尔市
|
沁阳市
|
威海市
|
扬州市
|
楚雄市
|
西林县
|
承德县
|
湛江市
|
黄龙县
|
怀柔区
|
临颍县
|
富裕县
|
澳门
|