I have an application that I collect audio stream from a call. I have a dmcc extension. When I detect a call, I call first registerTerminal of this extension. Then I call singleStepConference call to join to the call. Then I call selectiveListeningHold method. This works if there is only 3 extensions (one of them is my dmcc extension).
But, it fails in a certain scenario. After I this call, another extension is added to the call. So, there is 4 extension at this point. After that, one of the extension in first two is dropped the call. Then, I unregister the dmcc extension. So, 2 extension remains in the call. Then, I call registerTerminal with an another dmcc extension, and join it to the call. I call singleStepConference. it works fine. Then I call selectiveListeningHold, and I get exception.
As a summary, this flow happens:
Extension A calls Extension B (callId1)
run registerTerminalExtension with Extension C
call singleStepConference Extension C + callId1
call selectiveListeningHold for Extension B
Extension D joins to the call (callId1 changes to callId2)
Extension A drops the call
call unregisterTerminal with Extension C
call registerTerminalExtension with Extension E
call singleStepConference with Extension E + callId2
call selectiveListeningHold for Extension D => and error occurs
Client Exception is:
ch.ecma.csta.errors.OutstandingReqLimitExceededException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at java.lang.Class.newInstance(Class.java:442)
at com.avaya.mvcs.proxy.ClientNegAckToException.convertErrorToException(ClientNegAckToException.java:130)
at com.avaya.mvcs.proxy.XmlGatewayClient.handleRequest(XmlGatewayClient.java:250)
at com.avaya.mvcs.proxy.Pipeline.handleRequest(Pipeline.java:346)
at com.avaya.mvcs.proxy.ClientProxy.routeRequest(ClientProxy.java:627)
at com.avaya.mvap.svcproxy.ServiceProxy.marshallRequest(ServiceProxy.java:131)
at com.avaya.mvap.svcproxy.CallControlServicesProxy.selectiveListeningHold(CallControlServicesProxy.java:405)
I see this error in dmcc-error.log in server
ServiceMethod: com.avaya.platform.broker.impl.AsyncServiceMethodImpl@1337245[com.avaya.cmapi.extsvc.CallControlServicesImpl@1f0d277, public void com.avaya.cmapi.extsvc.CallControlServicesImpl.selectiveListeningHold(com.avaya.csta.binding.SelectiveListeningHold,com.avaya.api.async.AsynchronousCallback) throws ch.ecma.csta.errors.CstaException]
Exception: ch.ecma.csta.errors.OutstandingReqLimitExceededException: The client attempted to put athird party (activeCall) on hold (two parties are on hold already) on an analog station44
Request: session[session 8745264E1D9BBA9701A02F34C0708E36-110] com.avaya.csta.binding.SelectiveListeningHold@1764a13
ch.ecma.csta.errors.OutstandingReqLimitExceededException: The client attempted to put athird party (activeCall) on hold (two parties are on hold already) on an analog station44
at com.avaya.cs.callcontrol.handlers.CallControlConfHandler.getCstaException(CallControlConfHandler.java:318)
at com.avaya.cs.callcontrol.handlers.SelectiveListeningHoldConfHandler.getCstaException(SelectiveListeningHoldConfHandler.java:76)
at com.avaya.cs.callcontrol.handlers.CallControlConfHandler.handleConf(CallControlConfHandler.java:137)
at com.avaya.jtapi.tsapi.tsapiInterface.TSInvokeID.setConf(TSInvokeID.java:54)
at com.avaya.jtapi.tsapi.tsapiInterface.TsapiEventDistributor.handleEvent(TsapiEventDistributor.java:103)
at com.avaya.jtapi.tsapi.tsapiInterface.TsapiEventQueue.run(TsapiEventQueue.java:104)
it seems a timing problem, but even I wait quite long time (seconds) and then call selectiveListeningHold, it still gives this error. what can be the reason?