JTAPI求助:
最近公司做一个项目,做一套录音系统。用的Cisco的交换机。用JTAPI去获取Call Manager上面的信息,比如:主叫号码、被叫号码、开始时间、结束时间。
我现在的思路是:连接、动态监控事件、获取事件上面的信息。
在振铃事件上,我就可以获得主被叫了,在来话接起事件上或者开始时间、挂机事件上面获得结束时间。
我能正确连接,并能得到服务器上面的电话号码,附以下代码:
public Object getServerConnection() throws JtapiPeerUnavailableException, ResourceUnavailableException, MethodNotSupportedException, InterruptedException{
//抽象出硬件对象
JtapiPeer peer = JtapiPeerFactory.getJtapiPeer(null);
System.out.println("硬件对象-------------->"+peer);
System.out.println("返回的服务器名称---->"+peer.getServices());
System.out.println ( "Initializing Jtapi---------------->" );
//CCM服务器相关信息
String urlmessage="192.168.20.68;login=cti_1;passwd=123456;appinfo=CiscoSoftphone";
// 产生一个 Provider 实例
Provider myprovider;
CiscoTerminalObserver ciscoTerminalObserver;
/*
* 针对Terminal,有TerminalObserver,
* 它能汇报出一个Terminal的所有事件以及相关信息,
* CTI应用中非常重要的数据主叫号码、同步数据等就可以在这里得到
*
* 类似的,还有AddressObserver、CallObserver等多种Observer
*/
TerminalObserver terminalObserver;
//建立与服务器的连接
myprovider=peer.getProvider(urlmessage);
System.out.println("---------连接成功---------------");
System.out.println("------连接对象------->"+myprovider);
System.out.println("------连接成功,得到服务器IP----->"+myprovider.getName());
myprovider.addObserver(ProviderObserver);
// while(OutOfServiceException){
// Thread.sleep(500);
// }
Thread.sleep(500);
Address[] address=myprovider.getAddresses();
for(int i=0;i<address.length;i++){
System.out.println("地址----分机号码------->"+address[i]);
}
//myprovider.shutdown();
return myprovider;
}
现在的问题是,我连接成功之后该如何去监控,是监控哪个对象?
1.有的朋友说监控Call
Call mycall = null;
mycall.addObserver(new 一个实现返回信息的类);
2.有的朋友说监控Terminal
我不知道,没有JTAPI的经验。请问我该如何监控?
我只有实现监控事件,获取事件信息。
哪位大侠能给我个demo
(接收信息的时候可能还有多线程的问题,在100通电话打过来的时候,我获取信息的并发情况。不过这个不在现在实现的考虑范围之内)
上传一个附件:外拨情况下,扑捉事件信息