cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
240
Views
0
Helpful
1
Replies

JTAPI: getLocalUUID() and getPeerUUID() do not behave as documented

kchrispens
Level 1
Level 1

Hi!

The method CiscoConnection.getLocalUUID() basically returns correct values. But the UUIDs are not available at an early stage in the lifecycle of the call.

I setup a simple call between TermA and TermB. The JTAP version is 12.5.1.16900-48. This is also the version of the CUCM.

According to the JTAPI developers guide (Message Sequence Charts - End to End Session ID for Calls) connB.getLocalUUID(termConnB) should return B's LocalUUID as soon as CallCtlTermConnRingingEv for TermB is received. But this is not the case, the method returns an empty string. Only after the call is answered by TermB connB.getLocalUUID(termConnB) returns the correct value.

CiscoConnection.getPeerUUID() doesn't work for us at all. It always throws a PrivilegeViolationException.

Here are the results for getLocalUUID() and getPeerUUID() for both connections logged after every Jtapi Call Event:

############################### Call ###########################################


Got event ConnCreatedEvImpl for connA
connA.getLocalUUID(null):
connA.getPeerUUID(null):

Got event ConnConnectedEvImpl for connA
connA.getLocalUUID(null):
connA.getPeerUUID(null):

Got event CallCtlConnInitiatedEvImpl for connA
connA.getLocalUUID(null):
connA.getPeerUUID(null):

Got event TermConnCreatedEvImpl for termConnA
connA.getLocalUUID(termConnA):
connA.getPeerUUID(null):

Got event TermConnActiveEvImpl for termConnA
connA.getLocalUUID(termConnA):
connA.getPeerUUID(null):

Got event CallCtlTermConnTalkingEvImpl for termConnA
connA.getLocalUUID(termConnA):
connA.getPeerUUID(null):

Got event CallCtlConnDialingEvImpl for connA
connA.getLocalUUID(termConnA):
connA.getPeerUUID(null):

Got event CallCtlConnEstablishedEvImpl for connA
connA.getLocalUUID(termConnA): 46dcccbb00105000a00000cae5417d17
connA.getPeerUUID(null):

Got event ConnCreatedEvImpl for connB
connA.getLocalUUID(termConnA): 46dcccbb00105000a00000cae5417d17
connA.getPeerUUID(null):
connB.getLocalUUID(null):
connB.getPeerUUID(termConnA): PrivilegeViolationExceptionImpl: Terminal Connection does not belong to the CCNVector

Got event ConnInProgressEvImpl for connB
connA.getLocalUUID(termConnA): 46dcccbb00105000a00000cae5417d17
connA.getPeerUUID(null):
connB.getLocalUUID(null):
connB.getPeerUUID(termConnA): PrivilegeViolationExceptionImpl: Terminal Connection does not belong to the CCNVector

Got event CallCtlConnOfferedEvImpl for connB
connA.getLocalUUID(termConnA): 46dcccbb00105000a00000cae5417d17
connA.getPeerUUID(null):
connB.getLocalUUID(null):
connB.getPeerUUID(termConnA): PrivilegeViolationExceptionImpl: Terminal Connection does not belong to the CCNVector

Got event ConnAlertingEvImpl for connB
connA.getLocalUUID(termConnA): 46dcccbb00105000a00000cae5417d17
connA.getPeerUUID(null):
connB.getLocalUUID(null):
connB.getPeerUUID(termConnA): PrivilegeViolationExceptionImpl: Terminal Connection does not belong to the CCNVector

Got event CallCtlConnAlertingEvImpl for connB
connA.getLocalUUID(termConnA): 46dcccbb00105000a00000cae5417d17
connA.getPeerUUID(null):
connB.getLocalUUID(null):
connB.getPeerUUID(termConnA): PrivilegeViolationExceptionImpl: Terminal Connection does not belong to the CCNVector

Got event TermConnCreatedEvImpl for termConnB
connA.getLocalUUID(termConnA): 46dcccbb00105000a00000cae5417d17
connA.getPeerUUID(termConnB): PrivilegeViolationExceptionImpl: Terminal Connection does not belong to the CCNVector
connB.getLocalUUID(termConnB):
connB.getPeerUUID(termConnA): PrivilegeViolationExceptionImpl: Terminal Connection does not belong to the CCNVector

Got event TermConnRingingEvImpl for termConnB
connA.getLocalUUID(termConnA): 46dcccbb00105000a00000cae5417d17
connA.getPeerUUID(termConnB): PrivilegeViolationExceptionImpl: Terminal Connection does not belong to the CCNVector
connB.getLocalUUID(termConnB):
connB.getPeerUUID(termConnA): PrivilegeViolationExceptionImpl: Terminal Connection does not belong to the CCNVector

Got event CallCtlTermConnRingingEvImpl for termConnB
connA.getLocalUUID(termConnA): 46dcccbb00105000a00000cae5417d17
connA.getPeerUUID(termConnB): PrivilegeViolationExceptionImpl: Terminal Connection does not belong to the CCNVector
connB.getLocalUUID(termConnB):
connB.getPeerUUID(termConnA): PrivilegeViolationExceptionImpl: Terminal Connection does not belong to the CCNVector

############################### Answer ###########################################


Got event ConnConnectedEvImpl for connB
connA.getLocalUUID(termConnA): 46dcccbb00105000a00000cae5417d17
connA.getPeerUUID(termConnB): PrivilegeViolationExceptionImpl: Terminal Connection does not belong to the CCNVector
connB.getLocalUUID(termConnB): 3804dd9e00105000a00000cae5417ac8
connB.getPeerUUID(termConnA): PrivilegeViolationExceptionImpl: Terminal Connection does not belong to the CCNVector

Got event CallCtlConnEstablishedEvImpl for connB
connA.getLocalUUID(termConnA): 46dcccbb00105000a00000cae5417d17
connA.getPeerUUID(termConnB): PrivilegeViolationExceptionImpl: Terminal Connection does not belong to the CCNVector
connB.getLocalUUID(termConnB): 3804dd9e00105000a00000cae5417ac8
connB.getPeerUUID(termConnA): PrivilegeViolationExceptionImpl: Terminal Connection does not belong to the CCNVector

Got event TermConnActiveEvImpl for termConnB
connA.getLocalUUID(termConnA): 46dcccbb00105000a00000cae5417d17
connA.getPeerUUID(termConnB): PrivilegeViolationExceptionImpl: Terminal Connection does not belong to the CCNVector
connB.getLocalUUID(termConnB): 3804dd9e00105000a00000cae5417ac8
connB.getPeerUUID(termConnA): PrivilegeViolationExceptionImpl: Terminal Connection does not belong to the CCNVector

Got event CallCtlTermConnTalkingEvImpl for termConnB
connA.getLocalUUID(termConnA): 46dcccbb00105000a00000cae5417d17
connA.getPeerUUID(termConnB): PrivilegeViolationExceptionImpl: Terminal Connection does not belong to the CCNVector
connB.getLocalUUID(termConnB): 3804dd9e00105000a00000cae5417ac8
connB.getPeerUUID(termConnA): PrivilegeViolationExceptionImpl: Terminal Connection does not belong to the CCNVector

Got event CiscoTermConnRecordingStartedEvImpl for termConnB
connA.getLocalUUID(termConnA): 46dcccbb00105000a00000cae5417d17
connA.getPeerUUID(termConnB): PrivilegeViolationExceptionImpl: Terminal Connection does not belong to the CCNVector
connB.getLocalUUID(termConnB): 3804dd9e00105000a00000cae5417ac8
connB.getPeerUUID(termConnA): PrivilegeViolationExceptionImpl: Terminal Connection does not belong to the CCNVector

Got event CiscoTermConnRecordingTargetInfoEvImpl for termConnB
connA.getLocalUUID(termConnA): 46dcccbb00105000a00000cae5417d17
connA.getPeerUUID(termConnB): PrivilegeViolationExceptionImpl: Terminal Connection does not belong to the CCNVector
connB.getLocalUUID(termConnB): 3804dd9e00105000a00000cae5417ac8
connB.getPeerUUID(termConnA): PrivilegeViolationExceptionImpl: Terminal Connection does not belong to the CCNVector

Got event CiscoTermConnRecordingStartedEvImpl for termConnA
connA.getLocalUUID(termConnA): 46dcccbb00105000a00000cae5417d17
connA.getPeerUUID(termConnB): PrivilegeViolationExceptionImpl: Terminal Connection does not belong to the CCNVector
connB.getLocalUUID(termConnB): 3804dd9e00105000a00000cae5417ac8
connB.getPeerUUID(termConnA): PrivilegeViolationExceptionImpl: Terminal Connection does not belong to the CCNVector

Got event CiscoTermConnRecordingTargetInfoEvImpl for termConnA
connA.getLocalUUID(termConnA): 46dcccbb00105000a00000cae5417d17
connA.getPeerUUID(termConnB): PrivilegeViolationExceptionImpl: Terminal Connection does not belong to the CCNVector
connB.getLocalUUID(termConnB): 3804dd9e00105000a00000cae5417ac8
connB.getPeerUUID(termConnA): PrivilegeViolationExceptionImpl: Terminal Connection does not belong to the CCNVector

1 Reply 1

kchrispens
Level 1
Level 1

Hi!

I did some more tests and would like to share two more findings:

1. CiscoConnection.getPeerUUID() only throws the PrivilegeViolationException if a TerminalConnection is passed as an argument which does not belong to this connection. So

connA.getPeerUUID(termConnB) throws a PrivilegeViolationException
connB.getPeerUUID(termConnA) throws a PrivilegeViolationException
connA.getPeerUUID(termConnA) returns the UUID of TermB
connB.getPeerUUID(termConnB) returns the UUID of TermA
connA.getPeerUUID(null) returns the UUID of TermB
connB.getPeerUUID(null) returns the UUID of TermA

So I think the method is supposed to only accept a TerminalConnection which is associated to this connection (part of connection.getTerminalConnections()) and some statements in the message sequence charts suggesting the TerminalConnection of the other side of the call may be passed are wrong.

2. My assumption that connB.getLocalUUID(termConnB) returns B's UUID only after the call is answered was wrong. The method returns an empty string if called immediately after receiving the TermConnRinging event. If I wait about 300 milliseconds and call the method again it returns the expected UUID.

I still think that as soon as the TermConnRinging event is delivered the CallObserver implementor should be able to rely on the availability of the UUID of the ringing terminal. Finally the information should be there at this point of time. The terminal publishes its UUID in the Session-ID header of its SIP RINGING response. And according to my understanding the TermConnRingingEvent is not fired before the SIP RINGING.