cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
1809
Views
1
Helpful
3
Replies

How can I tell if a TermConnRingingEv is a transfer?

jprovines
Level 1
Level 1

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

1 Accepted Solution

Accepted Solutions

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.

View solution in original post

3 Replies 3

mpotluri
Level 5
Level 5

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.

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());

       }

  }

}

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.