Sun公司的Java 电话应用程序接口JTAPI Sun公司与Intel、Lucent、Nortel 和Novell一起开发了JTAPI规范。JTAPI本质上是一套可重用的语音呼叫控制对象,应用程序能够运行在任何带有Java虚拟机和JTAPI子系统的计算机上,独立于任何操作系统和硬件平台,从而支持跨平台的应用。它定义了一套类库,包含一套电话功能和扩充功能,例如呼叫路由、在多个呼叫者之间建立电话会议等。
JTAPI(Java电话应用程序接口)是一种为电脑电话应用程序而设的基于Java的应用编程接口(API)。JTAPI由一组语言包组成。核心包为简单的电话过程提供了一个基本的框架,例如:打电话,接电话,还有挂电话等。一些扩展包提供了附加的电话特性。JTAPI在不同的电脑平台下可以共同使用。JTAPI与Microsoft和Intel的电话应用编程接口(TAPI)相类似。
JTAPI是由一个电脑和电信公司的工作组在1996年共同开发出来的,这些公司包括Intel,Lucent,NortelNetworks,Novell,以及Sun微系统。
一些资料
我用的是AVAYA的Lucent交换机及他们提供的JTAPI类库。
1. 在ACDAddress目标中已经加上了ACDAddressObserver, 但Agent的Logon/off事件常常没有被触发,如:连续Logon/off 10次,有时仅被触发8次,甚至更少!
2. Provider常常收到Shutdown信息,但CTI和PBX运行都很正常。(时间间隔不定,但电话使用越频繁,出现次数越多)
3. 采用预拨号系统先拨通外线,然后转入ACDAddress的Agent时,总收到当前Call的所有Address连接的Disconnection事件(每个Address都加了相应的CallObserver),这时用Address.getConnections()方法的返回值为空,重新创建一个Provider,并调用Provider.getAddress(...).getConnections(), 能正确返回连接,但用原来的Provider检查连接数仍返回空!如果这时电话被挂段,却没有任何事件被触发!!!(100%出现)
1.OBSERVER确实有可能有这种不稳定的问题。不过你可以换一种方法来检测AGENT的IN/OFF事件。可以通过获取AGENT调用LOGIN方法“成功与否”的返回值来判断AGENT是否登录。
2.当CTI 和PBX都没问题的时候,从CTI PING MAPD ,是否能PING通?
3.当外拨转回时有DISCONNECT事件是正常的,另外,你拿不到CONNECTION是因为JTAPI对外线电话无法控制,你第二次拿到CONNECTION是因为转入ACD后,属于内部电话,JTAPI又可以控制了。
1. Agent处于Logoff状态时,用什么办法能够获取AGENT的调用?
2. 我的程序通过一个线程循环检测Provider连接状态的,(用getSwitchDateTime()方法),如果通讯失败连续3次,系统将自动重新连接,并获得一个新的Provider引用,每次的自恢复都可正常,说明网络通讯没问题,同时我也咨询过,我们的系统中没有使用CV/LAN,因此与AVAYA的技术支持中说的Heartbeat设置无关!如果同时的网络中启动两个程序(在不同的PC机上),系统将同时收到Shutdown事件,从这点上猜测,问题是出在CTI Server上,难道CTI或JTAPI如此不稳定?
3. 对于这个问题的回答,我觉得很有道理,I beleve you! 但我觉得这应是一个系统的Bug,因为在外线回拨到ACD后已经能被控制,起码应该再产生一个Connection事件和Establish事件!!! 不知数字中继是否存在同样问题?