Author Message
DanielB
Joined: May 11, 2015
Messages: 20
Offline
Breeze version 3.2.0.1
SnapIn-A and SnapIn-B are both on the smae Breeze server.

SnapIn-A calls a WebService of SnapIn-B.
SnapIn-B creates a call via CallFactory.create().
SnapIn-B starts the call via call.initiate().
SnapIn-B returns the UCID to SnapIn-A using call.getUCID().
SnapIn-A tries to get the call via CallFactory.getCall(ucid) resulting in following Exception:
java.lang.IllegalStateException: No call associated with id=00002000321503047579

SnapIn-B using CallFactory.getCall(ucid) works without any problems.


Why does this happen?
Should this scenario work?

Thanks and regards,
Daniel B
JoelEzell
Joined: Nov 15, 2013
Messages: 780
Offline
Hi Daniel, the short answer is that this is unfortunately expected and will one day be remedied.

The long answer:

Most snap-ins using our Call Manipulation API are native SIP applications as seen by the converged container inside of Breeze. They can become directly involved in the SIP signaling path in several different ways:
- Snap-ins can be invoked as a Call Intercept application for calls destined for a different person / application
- Snap-ins can be invoked as a Callable application for calls that are explicitly addressed to the snap-in
- Snap-ins can initiate outbound calls.

We have always intended to allow snap-ins to perform call and media operations on calls in which they were not directly involved via SIP signaling. Unfortunately, we're in a bit of a halfway state right now. We have a snap-in called CallEventControl (we refer to it internally as CECS). This snap-in is invoked prior to any Call Intercept snap-ins being invoked. It then:
- Sends asynchronous call events that snap-ins can listen for
- Stands ready to receive any call control requests from other snap-ins


The thinking is that the only real reason for snap-ins to be explicitly sequenced is if they want to take some action on a call prior to it reaching its intended destination. If they just want to monitor a call or do mid-call features, they shouldn't have to be sequenced. There are some limitations with our current implementation, however:
- CECS is not sequenced on outbound calls from Breeze (your scenario)
- CECS is not sequended on calls to Callable services
- CECS cannot support any media operations

In the future, we expect for these issues to be remedied such that any authorized application will be able to influence any call at any stage, no matter how it came to know of that call. I can't tell you what release that will be though.

A few options that are available to you:
- Snap-in A could ask Snap-in B to take action on the call
- Snap-in A could be sequenced as a Call Intercept snap-in for the call initiated by Snap-in B

I told you it was a long answer. :-)

Joel
DanielB
Joined: May 11, 2015
Messages: 20
Offline
Hello Joel,

thanks for the comprehensive response.

Adding this information to the JavaDoc/Documentation would be really helpful.

Regards,
Daniel
JoelEzell
Joined: Nov 15, 2013
Messages: 780
Offline
I agree. I'll open a documentation issue in our tracking system and we'll get this info added for our next release. Thanks Daniel.
Go to:   
Mobile view