Q. We are trying to create a call recording application using JTAPI and Built-in Bridge feature (automatic call recording), and we are trying to correlate a call ID of the original call to call IDs of the two new recording calls.
We are handling CiscoTermConnRecordingStartEv and CiscoTermConnRecordingTargetInfoEv on the original call and we receive CiscoMediaOpenLogicalChannelEv and CiscoRTPInputStartedEv for each of the recording calls, however there is no common identifer to tie it together.
A. The invite for the recording calls to SIP trunk will look as follows:
From: <sip:firstname.lastname@example.org;x-nearend;x-refci=25471846;x-nearenddevice=SEP001B535CDC62 >
Application can extract refci from the invite and use it in CiscoProvider.getCall(int callleg) API to get the call.
Q. I realize that the info is available in SIP, however, I would expect to be able to extract it from one of the JTAPI call/terminal events directly as we are not using SIP in out recording solution.
Our current workaround is to traverse the object tree from that recording call to an address (which for some reason shows as external), then resolve the internal address from the provider and then traverse the object tree down to terminal and then terminalConnection in talking state (that would be one on the actual call).
I was hoping that there is an easier way to achieve that - perhaps CiscoMediaOpenLogicalChannelEv or CiscoRTPInputStartedEv could have contained the original call ID...
A. It seems that you are using CTIPorts as recording devices and instead of having recording profile point to a SIP trunk? Is that correct?
refci is the only official link between the 2 recording calls from BIB and actual call on the device. The recording calls from BIB are not 'visible' to the application observing the device.
If you are using ctiports as recording devices you can probably use the following API when call is offered at CTIPort to find out if it is a recording call:
Call.getCallingAddress().getName() should return the DN where auto recording is enabled.
CiscoCall.getCurrentCallingTerminal().getName() should return the device name of the recording phone.
I want to emphasis that recording feature is designed to be used with SIP trunk and the above mentioned way is not tested.
We are indeed using CTI ports as recording devices. I am sorry to hear that this feature is not really supported/tested and the only way around is SIP. I will try to play more with suggested approach, but from a first sight it seems to be OK.
The missing part though is the call ID of the original call being recorded - if I don't have that, I cannot recreate the call scenario for playback.
Again, I found some workaround, but it would be lovely to get the call ID of a call being recorded in the events of a recording call.