Author Message
UmeshC
Joined: Apr 18, 2011
Messages: 89
Offline
Hi,

We have 2 phones on which 2 agents are logged-in.
Agent 1 - id=2001 , Ext=1010
Agent 2 - id=2004, Ext=1003

Our Case is -
- Dial IVR, after initial input call call reaches to agent 1 (CallID-1)
- agent 1 answer call (CallID-1)
- agent 1 presses Transfer key on phone and enters agent 2 ext(1003) (CallID-2)
-agent 2 answer call (CallID-2)
-agent 1 presses Complete key on phone
-Customer & Agent-2 connected (CallID-1)

After "Complete" key press following event should be received by JTAPI application-
-terminalConnectionDropped for CallId-1
-terminalConnectionDropped for CallId-2
-terminalConnectionTalking for CallId-1 i.e. first call id after transfer complete.

But application never receives terminalConnectionDropped for CallId-2.

Can you please confirm above behaviour?

PS: Even though OldCall Ids are wrong in multiCallMetaTransferEnded event -

2020-01-06 13:50:04,859][DEBUG][multiCallMetaTransferEnded][NewCallId : 00001002271578318387][NoOfOldCalls : 2][Old CallIs : 00001002271578318387
[2020-01-06 13:50:04,859][DEBUG][multiCallMetaTransferEnded][NewCallId : 00001002271578318387][NoOfOldCalls : 2][Old CallIs : 00001002271578318387


Regards,
Umesh

MartinFlynn
Joined: Nov 30, 2009
Messages: 1922
Online
Hi Umesh,

I think this required more in-depth analysis than can be done on the forum. I suggest you open a Devconnect Technical Support ticket.

Martin
UmeshC
Joined: Apr 18, 2011
Messages: 89
Offline
Thanks Martin.

Sample code from AgentViewer may help. We will try following code tomorrow-


private void handleCallCtlConnDisconnectedEvent_TransferCause(
CallControlConnectionEvent connEvent, CallManager callmanager) {

Call call = connEvent.getCall();
long callID = CallUtilities.getCallID(call);

String droppedDeviceID = callmanager.getDeviceID(call,
connEvent.getConnection().getAddress().getName());

Connection[] conns = call.getConnections();

// If there was only one connection in the call, the call has now
// ended
if (conns == null || conns.length < CallManager.MIN_CONN) {

callmanager.updateCall(callID, ConnectionState.Null,
null, null, null, droppedDeviceID);

return;
}

// Retrieve the old call that was transferred
long oldCallID = CallUtilities.getOldCallID(call);
String oldDroppedDeviceID = CallUtilities.getOldDeviceID(call);

/*
* Determine the device to which the call is transferred.
* If the call is answered before transfer is completed, it is the stored
* calledDevice. In the case of blind transfer it is the device which
* is alerting.
*/
String newDeviceID = null;

if (callmanager.hasCall(callID)) {
newDeviceID = callmanager.getCall(callID).getCalledDeviceID();
} else {
if (conns[0].getState() == Connection.ALERTING) {
newDeviceID = conns[0].getAddress().getName();
} else {
newDeviceID = conns[1].getAddress().getName();
}
}

// Inform the UI that the call is transferring. This shows the ID of
// the old call, the device transferring and the device being
// transferred to.
callmanager.updateCall(oldCallID, ConnectionState.Transfered,
CallState.INVALID, null, newDeviceID, oldDroppedDeviceID);
}


Regards,
Umesh
Go to:   
Mobile view