06-02-2017 12:09 PM
Anyone know how I can tell if a call is a transfer during the TermConnRingingEv event? For example:
A calls B: I get A's name, which is useful and correct.
B presses transfer and enters C's extension: I get B's name, which is useful and correct.
B presses transfer again: Here I get B's name. However, I want A's name instead.
I'm wondering if there's a way to know if TermConnRingingEv is part of a transfer? If it is, I can ignore it and get the right name using the CiscoTransferStartEv instead.
I'm using using CiscoCall.getCurrentCallingPartyDisplayName to get the name of the caller if that make a difference.
Any help at all would be greatly appreciated!
James
Solved! Go to Solution.
06-02-2017 01:05 PM
In most transfer cases you should see getCiscoFeatureReason() on termconnringingev returning CiscoFeatureReason.REASON_TRANSFER if the event is received after CiscoTransferStartEv. You can use this to see if CiscoTransferStartEv already fired.
06-02-2017 12:19 PM
When B presses transfer again, application would receive a CiscoTransferStartEv followed by CiscoTransferEndEv. There are events between the 2 indicating connections to B getting dropped and connections to C getting created on final call. After CiscoTransferEndEv
CiscoCall.getCurrentCallingParty should be A
CiscoCall.getCurrentCalledParty should be B
CiscoCall is call returned by getFinalCall() on CiscoTransferStartEv.
You did not mention which call you used in CiscoCall.getCurrentCallingPartyDisplayName and based on what you are seeing you are probably using the consult call. Try using this API on final call. Let me know if this resolved your issue.
06-02-2017 12:52 PM
Hi Mohan,
I can get the correct name during the CiscoTransferStartEv event. It's just that during the final transfer button press it fires another TermConnRingingEv which has the wrong name. Is there a way to see if the TermConnRingingEv event call is part of the final transfer? Here is some of the code (pseudo code, it might not work). Hopefully it helps clear things up. Maybe I'm not fully understanding your reply either...
public void callChangedEvent(CallEv[] arg0) {
for (CallEv ce : arg0) {
if (ce instanceof TermConnRingingEv) {
TermConnRingingEv cae = (TermConnRingingEv) ce;
CiscoCall c = (CiscoCall) cae.getCall();
//I want to skip this if this if CiscoTransferStartEv already fired because it's showing the wrong name.
System.out.println("Caller Name: " + c.getCurrentCallingPartyDisplayName());
}
if (ce instanceof CiscoTransferStartEv ) {
CiscoTransferStartEv cae = (CiscoTransferStartEv ) ce;
CiscoCall c = (CiscoCall) cae.getCall();
System.out.println("Caller Name: " + c.getCurrentCallingPartyDisplayName());
}
}
}
06-02-2017 01:05 PM
In most transfer cases you should see getCiscoFeatureReason() on termconnringingev returning CiscoFeatureReason.REASON_TRANSFER if the event is received after CiscoTransferStartEv. You can use this to see if CiscoTransferStartEv already fired.
Discover and save your favorite ideas. Come back to expert answers, step-by-step guides, recent topics, and more.
New here? Get started with these tips. How to use Community New member guide