0

我有代码:

        CiscoJtapiPeer peer = (CiscoJtapiPeer) JtapiPeerFactory.getJtapiPeer(null);
    CiscoProvider provider = (CiscoProvider) peer.getProvider(host+";login="+ login +";passwd=" + pass);
    provider.addObserver(new ProviderObserver() {
                    @Override
        public void providerChangedEvent (ProvEv [] eventList) {
            if (eventList == null) return;
            for (int i = 0; i < eventList.length; ++i) {
                if (eventList[i] instanceof ProvInServiceEv) {
                    inService.set();
                }
            }
        }
    });
    inService.waitTrue();
    System.out.println("In servise.");
        CiscoAddress srcAddr = (CiscoAddress) provider.getAddress(dn);
        srcAddr.addCallObserver(new MyCallControlCallObserver(dn, provider))

和地址上的观察员:

        @Override
public void callChangedEvent(CallEv[] evlist)throws Exception{
    for (CallEv evlist1 : evlist) {

        if (evlist1.getID() == CiscoTermConnRecordingEndEv.ID) {
            call = provider.getCall(callid);
            if (call != null) {
                System.out.println("From: " + call.getCallingAddress() + "   To: " + call.getCalledAddress());
            }
            else {System.out.println("Call is null");}
        }
    }
}

函数 provider.getCall(callid) 返回的对象不稳定。像这样 -

From: 4403   To: 5215 
Call is null
Call is null
From: 4403   To: 5215
From: 4403   To: 5215
Call is null
Call is null
From: 4403   To: 5215

通话间隔 5 - 15 秒,持续时间 3 - 7 秒。我试图改变来处理事件 - 结果相同。我究竟做错了什么?也许是因为 CUCM 是一个集群?并且 CiscoProvider 对于每个呼叫都不同?

4

1 回答 1

0
if (evlist1.getID() == CiscoTermConnRecordingEndEv.ID) {
            call = provider.getCall(callid);
            if (call != null) {
                System.out.println("From: " + call.getCallingAddress() + "   To: " + call.getCalledAddress());
            }
            else {System.out.println("Call is null");}
        }

您接到的电话录音选项为真。您只会收到RECORDED电话。这就是为什么你的功能不稳定。如果您想获得所有呼叫而不是CiscoTermConnRecordingEndEv,如果您想在活动状态下获得呼叫,请使用TermConnActiveEv ,如果您想在振铃状态下获得呼叫,请使用TermConnRingingEv 。

于 2015-05-29T12:50:47.757 回答