Cisco Unified JTAPI Developers Guide for Cisco Unified Communications Manager Release 10.0(1)
Message sequence charts
Downloads: This chapterpdf (PDF - 10.46MB) The complete bookPDF (PDF - 24.46MB) | The complete bookePub (ePub - 5.02MB) | Feedback

Contents

Message sequence charts

This appendix contains message sequence charts illustrating the message flows for several scenarios.

Agent Greeting

The basic Agent Greeting use cases assume a common setup.

In the real-world scenario, an external customer calls a number and is routed through an IVR until the call is eventually offered to an agent.

IP Phones:

  • Customer (1000)
  • Agents (2000, 2001, 2002)
  • IVRs (5000, 5001)

Scenario One

Agent Greeting Start Success

Action

Events

Call information / Notes

1. Customer dials the agent.

GC1 - CallActiveEvent

GC1 - ConnCreatedEvent (1000)

GC1 - ConnConnectedEvent (1000)

GC1 - CallCtlConnInitiatedEv (1000)

GC1 - TermConnCreatedEvent (Term of 1000)

GC1 - TermConnActiveEvent (Term of 1000)

GC1 - CallCtlTermConnTalkingEv (Term of 1000)

GC1 - CallCtlConnDialingEv (1000)

GC1 - CallCtlConnEstablishedEv (1000)

GC1 - ConnCreatedEvent (2000)

GC1 - ConnInprogressEvent (2000)

GC1 - CallCtlConnOfferedEv (2000)

GC1 - ConnAlertingEvent (2000)

GC1 - CallCtlConnAlertingEv (2000)

GC1 - TermConnCreatedEvent (Term of 2000)

GC1 - TermConnRingingEvent (Term of 2000)

GC1 - CallCtlTermConnRingingEv (Term of 2000)

GC1 - ConnConnectedEvent (2000)

GC1 - CallCtlConnEstablishedEv (2000)

GC1 - TermConnActiveEvent (Term of 2000)

GC1 - CallCtlTermConnTalkingEv (Term of 2000)

This is a basic call.

Calling = 1000 (Customer)

Called = 2000 (Agent)

2. Application gets the TerminalConnection for 2000 on GC1 and invokes addMediaStream( "5000", "2000" )

GC2 - CallActiveEvent

GC2 - ConnCreatedEvent (5000)

GC2 - ConnInprogressEvent (5000)

GC2 - CallCtlConnOfferedEv (5000)

GC2 - ConnAlertingEvent (5000)

GC2 - CallCtlConnAlertingEv (5000)

GC2 - TermConnCreatedEvent (Term of 5000)

GC2 - TermConnRingingEvent (Term of 5000)

GC2 - CallCtlTermConnRingingEv (Term of 5000)

GC2 - ConnConnectedEvent (5000)

GC2 - CallCtlConnEstablishedEv (5000)

GC2 - TermConnActiveEvent (Term of 5000)

GC2 - CallCtlTermConnTalkingEv (Term of 5000)

 

GC1 - CiscoMediaStreamStartedEv (2000)

This is a server call.

Calling = 2000 (Agent)

Called = 5000 (IVR)

The Calling Party number is as specified in the addMediaStream() method ("2000" in this case), and is available immediately from the CallActiveEvent.

Note   

No connection for 2000 is created, as 2000 is "spoofed".

 

 

 

 

 

 

 

 

Agent Greeting is complete.

3. Application disconnects IVR, or tester manually hangs up the IVR device.

GC2 - CallCtlTermConnDroppedEv (Term of 5000)

GC2 - ConnDisconnectedEvent (5000)

GC2 - CallCtlConnDisconnectedEv (5000)

GC2 - CallInvalidEvent (5000)

GC2 - CallObservationEndedEv

 

GC1 - CiscoMediaStreamEndedEv (2000)

BIB call is cleaned up.

 

 

 

 

 

 

Ev.isSuccessful() = true.

The call continues as normal.

4. Agent finishes the conversation and ends the call

GC1 - TermConnDroppedEv (Term of 2000)

GC1 - CallCtlTermConnDroppedEv (Term of 2000)

GC1 - ConnDisconnectedEvent (2000)

GC1 - CallCtlConnDisconnectedEv (2000)

GC1 - TermConnDroppedEv (Term of 1000)

GC1 - CallCtlTermConnDroppedEv (Term of 1000)

GC1 - ConnDisconnectedEvent (1000)

GC1 - CallCtlConnDisconnectedEv (1000)

GC1 - CallInvalidEvent

GC1 - CallObservationEndedEv

Primary call is cleaned up.

Scenario Two

Agent Greeting Stop Success

Agent

Events

Call information / Notes

1. Customer calls the agent and the agent answers. Application invokes addMediaStream().

GC1 - CiscoMediaStreamStartedEv (2000)

Ev.getIVRCall() = Call for CG2.

2. While the greeting is played, the application invokes removeMediaStream().

GC2 - CallCtlTermConnDroppedEv (Term of 5000)

GC2 - ConnDisconnectedEvent (5000)

GC2 - CallCtlConnDisconnectedEv (5000)

GC2 - CallInvalidEvent (5000)

GC2 - CallObservationEndedEv

 

GC1 - CiscoMediaStreamEndedEv (2000)

The Agent Greeting is cut short. The BIB call is cleaned up.

 

 

 

 

 

 

Ev.isSuccessful() = true.

 

The call continues as normal.

3. The agent finishes the conversation and ends the call.

GC1 - TermConnDroppedEv (Term of 2000)

GC1 - CallCtlTermConnDroppedEv (Term of 2000)

GC1 - ConnDisconnectedEvent (2000)

GC1 - CallCtlConnDisconnectedEv (2000)

GC1 - TermConnDroppedEv (Term of 1000)

GC1 - CallCtlTermConnDroppedEv (Term of 1000)

GC1 - ConnDisconnectedEvent (1000)

GC1 - CallCtlConnDisconnectedEv (1000)

GC1 - CallInvalidEvent

GC1 - CallObservationEndedEv

The primary call is cleaned up.

Scenario Three

Agent Greeting Start Failure: Resource Unavailable

Agent

Event

Call information / Notes

1. Customer dials the Agent

GC1 - CallActiveEvent

GC1 - ConnCreatedEvent (1000)

GC1 - ConnConnectedEvent (1000)

GC1 - CallCtlConnInitiatedEv (1000)

GC1 - TermConnCreatedEvent (Term of 1000)

GC1 - TermConnActiveEvent (Term of 1000)

GC1 - CallCtlTermConnTalkingEv (Term of 1000)

GC1 - CallCtlConnDialingEv (1000)

GC1 - CallCtlConnEstablishedEv (1000)

GC1 - ConnCreatedEvent (2000)

GC1 - ConnInprogressEvent (2000)

GC1 - CallCtlConnOfferedEv (2000)

GC1 - ConnAlertingEvent (2000)

GC1 - CallCtlConnAlertingEv (2000)

GC1 - TermConnCreatedEvent (Term of 2000)

GC1 - TermConnRingingEvent (Term of 2000)

GC1 - CallCtlTermConnRingingEv (Term of 2000)

GC1 - ConnConnectedEvent (2000)

GC1 - CallCtlConnEstablishedEv (2000)

GC1 - TermConnActiveEvent (Term of 2000)

GC1 - CallCtlTermConnTalkingEv (Term of 2000)

This is a basic call

Calling = 1000 (Customer)

Called = 2000 (Agent)

2. The application gets the TerminalConnection for 2000 on GC1and invokes addMediaStream( "5000", "2000" ).

 

No BIB call is created. JTAPI throws a ResourceUnavailableException with text as "Unable to allocate built in bridge resource".

 

The call continues as normal.

3. The agent finishes the conversation and ends the call.

GC1 - TermConnDroppedEv (Term of 2000)

GC1 - CallCtlTermConnDroppedEv (Term of 2000)

GC1 - ConnDisconnectedEvent (2000)

The primary call is cleaned up.

API for Exposing Built-in-Bridge status

Phone TermA, CTI port TermB, and RoutePoint TermC are in application’s control list.

Use Case One

BIB is disabled on service parameters and device page of TermA.

Action

Result

Call information

TermA.isBuiltInBridgeEnabled()

False

 

TermB.isBuiltInBridgeEnabled()

MethodNotSupportedException

 

TermC.isBuiltInBridgeEnabled()

MethodNotSupportedException

 

Use Case Two

BIB is disabled on service parameters page and enabled on device page of TermA..

Action

Result

Call information

TermA.isBuiltInBridgeEnabled()

True

 

TermB.isBuiltInBridgeEnabled()

MethodNotSupportedException

 

TermC.isBuiltInBridgeEnabled()

MethodNotSupportedException

 

Use Case Three

BIB is enabled on service parameters page and disabled on device page of TermA.

Action

Result

Call information

TermA.isBuiltInBridgeEnabled()

False

 

TermB.isBuiltInBridgeEnabled()

MethodNotSupportedException

 

TermC.isBuiltInBridgeEnabled()

MethodNotSupportedException

 

Use Case Four

BIB is enabled on service parameters page and set to default on device page of TermA.

Action

Result

Call information

TermA.isBuiltInBridgeEnabled()

True

 

TermB.isBuiltInBridgeEnabled()

MethodNotSupportedException

 

TermC.isBuiltInBridgeEnabled()

MethodNotSupportedException

 

Use Case Five

Phone TermA is not registered. BIB is enabled on device page of TermA.

Action

Result

Call information

TermA.isBuiltInBridgeEnabled()

InvalidStateException

 

Add observers and register TermB and TermC.

 

 

TermB.isBuiltInBridgeEnabled()

MethodNotSupportedException

 

TermC.isBuiltInBridgeEnabled()

MethodNotSupportedException

 

Backward compatibility enhancements

This feature is not expected to change the performance or scalability of Cisco Unified Communications Manager JTAPI. There is no change in the number of events between JTAPI and CTI. For features involving GCID changes this feature introduces one extra event which should not cause any performance issues.

In all cases events listed below are delivered to call observers when only one party is in control list. TERMA indicates terminal of A.

Scenario One

A calls B, B transfers the call to C. GC1 is the call between A and B, GC2 is the consult call between B and C. Similar events are delivered for Conference and other features.

Action

Events

B completes the transfer. Events to call observer on C

GC2 CiscoTransferStartEv
Cause: CAUSE_NORMAL
Reason = REASON_TRANSFER

CallActiveEv GC1
Cause: CAUSE_NORMAL
CiscoCause: CAUSE_NORMALUNSPECIFIED
Reason = REASON_TRANSFER

ConnCreatedEv C
Cause: CAUSE_NORMAL
CiscoCause: CAUSE_NORMALUNSPECIFIED
Reason = REASON_TRANSFER

ConnCreatedEv B
Cause: CAUSE_NORMAL
CiscoCause: CAUSE_NORMALUNSPECIFIED
Reason = REASON_TRANSFER

CiscoCallChangedEv SurvingCall = GC1,  original call = GC2
CiscoCause: NORMAL
Reason: REASON_TRANSFER

Events delivered to CallObserver of B (transfer controller)

ConnConnectedEv C
Cause: CAUSE_NORMAL
CiscoCause: CAUSE_NORMALUNSPECIFIED
Reason = REASON_TRANSFER

CallCtlConnEstablishedEv C
Cause: CAUSE_NORMAL
CallControlCause: CAUSE_TRANSFER
CiscoCause: CAUSE_NORMALUNSPECIFIED
Reason = REASON_TRANSFER

TermConnCreatedEv TERM C
Cause: CAUSE_NORMAL
CiscoCause: CAUSE_NORMALUNSPECIFIED
Reason = REASON_TRANSFER

TermConnActiveEv TERM C
Cause: CAUSE_NORMAL
CiscoCause: CAUSE_NORMALUNSPECIFIED
Reason = REASON_TRANSFER

CallCtlTermConnTalkingEv TERM C
Cause: CAUSE_NORMAL
CallControlCause: CAUSE_TRANSFER
CiscoCause: CAUSE_NORMALUNSPECIFIED
Reason = REASON_TRANSFER

ConnConnectedEv B
Cause: CAUSE_NORMAL
CiscoCause: CAUSE_NORMALUNSPECIFIED
Reason = REASON_TRANSFER

GC2: ConnDisconnectedEv B
REASON = REASON_TRANSFER
Cause: CAUSE_NORMAL

GC2: ConnDisconnectedEv C
REASON = REASON_TRANSFER
Cause: CAUSE_NORMAL

GC2: TermConnDropped TERMB
REASON = REASON_TRANSFER
Cause: CAUSE_NORMAL

GC2: CalInvalid
REASON = REASON_TRANSFER
Cause:CAUSE_NORMAL

GC1: CallCtlTermConnHeldEv TERMB
REASON = REASON_TRANSFER
Cause: CAUSE_NORMAL
CallControlCause: CAUSE_NORMAL

GC2: ConsultCallActive
REASON = NORMAL
Cause:CAUSE_NEW_CALL

GC2: ConnCreatedEv B
REASON = NORMAL
Cause:CAUSE_NORMAL

GC2: ConnConnectedEv B
REASON = NORMAL
Cause:CAUSE_NORMAL

GC1: ConnDisconnectedEv B
REASON = REASON_TRANSFER
Cause: CAUSE_UNKNOWN

GC1: CallCtlConnDisconnectedEv B
REASON = REASON_TRANSFER
Cause: CAUSE_UNKNOWN
CallControlCause: CAUSE_TRANSFER

GC1: TermConnDroppedEv TERMB
REASON = REASON_TRANSFER
Cause: CAUSE_UNKNOWN

GC1: CallCtlTermConnDroppedEv TERMB
REASON = REASON_TRANSFER
CallControlCause: CAUSE_TRANSFER

GC1: ConnDisconnectedEv A
REASON = REASON_TRANSFER

GC1: CallCtlConnDisconnectedEv A
REASON = REASON_TRANSFER
CallControlCause: CAUSE_TRANSFER

GC1: CallInvalidEv
REASON = REASON_TRANSFER

GC2: ConnDisconnectedEv C
REASON = REASON_TRANSFER

GC2: CallCtlConnDisconnectedEv C
REASON = REASON_TRANSFER
CallControlCause: CAUSE_TRANSFER

GC2: TermConnDroppedEv TERMB
REASON = REASON_TRANSFER

GC2: CallCtlTermConnDroppedEv TERMB
REASON = REASON_TRANSFER
CallControlCause: CAUSE_TRANSFER

GC2: ConnDisconnectedEv B
REASON = REASON_TRANSFER

GC2: CallCtlConnDisconnectedEv B
REASON = REASON_TRANSFER
CallControlCause: CAUSE_TRANSFER

GC2: CallInvalidEv
REASON = REASON_TRANSFER

GC2: CallObservationEndedEv
REASON = NORMAL
Cause:CAUSE_NORMAL

GC1 CiscoTransferEndEv
REASON = REASON_TRANSFER
Cause: CAUSE_NORMAL

GC2 CallObservationEndedEv
REASON = NORMAL
Cause:CAUSE_NORMAL

Scenario Two

A calls B, call = GC1. B parks the call at 99999. C unparks the call using call GC2.

Action

Events

Events delivered to call observer on A when call is parked.

 

 

 

 

 

 

When call is unparked using GC2

GC1: ConnDisconnectedEv B
REASON = REASON_PARK
Cause: CAUSE_NORMAL

GC1: CallCtlConnDisconnectedEv B
REASON = REASON_PARK
Cause: CAUSE_NORMAL
CallControlCause: CAUSE_PARK

GC1: ConnCreatedEv 9999
REASON = REASON_PARK
Cause: CAUSE_NORMAL

GC1: ConnInProgressEv 9999
REASON = REASON_PARK
Cause: CAUSE_NORMAL

GC1: CallCtlConnQueuedEv 9999
REASON = REASON_PARK
Cause: CAUSE_NORMAL
CallControlCause: CAUSE_PARK

GC2: CiscoCallChangedEv Surviving =  GC2
origcall =  GC1 address =  A
REASON = REASON_UNPARK

CallActiveEv
REASON = REASON_UNPARK
Cause: CAUSE_NEW_CALL

GC2: ConnCreatedEv A
REASON = REASON_UNPARK
Cause: CAUSE_NORMAL

GC2: ConnConnectedEv A
REASON = REASON_UNPARK
Cause: CAUSE_NORMAL

GC2: CallCtlConnEstablishedEv A
REASON = REASON_UNPARK
Cause: CAUSE_NORMAL
CallControlCause: CAUSE_PARK

GC2: TermConnCreatedEv TERMA
REASON = REASON_UNPARK

GC2: TermConnActiveEv TERMA
REASON = REASON_UNPARK
Cause: CAUSE_NORMAL

GC2: CallCtlTermConnTalkingEv TERMA
REASON = REASON_UNPARK
Cause: CAUSE_NORMAL
CallControlCause: CAUSE_PARK

GC1: ConnDisconnectedEv 9999
REASON = REASON_UNPARK
Cause: CAUSE_NORMAL

GC1: CallCtlConnDisconnectedEv 9995
REASON = REASON_UNPARK
Cause: CAUSE_NORMAL
CallControlCause: CAUSE_PARK

GC1: TermConnDroppedEv TERMA
REASON = REASON_UNPARK
Cause: CAUSE_NORMAL

GC1: CallCtlTermConnDroppedEv TERMA
REASON = REASON_UNPARK
Cause: CAUSE_NORMAL
CallControlCause: CAUSE_PARK

GC1: ConnDisconnectedEv A
REASON = REASON_UNPARK
Cause: CAUSE_NORMAL

GC1: CallCtlConnDisconnectedEv A
REASON = REASON_UNPARK
Cause: CAUSE_NORMAL
CallControlCause: CAUSE_PARK

GC1: CallInvalidEv
REASON = REASON_UNPARK
Cause: CAUSE_NORMAL

GC1: CallObservationEndedEv
REASON = NORMAL
Cause: CAUSE_NORMAL

GC2: ConnCreatedEv C
REASON = REASON_UNPARK
Cause: CAUSE_NORMAL

GC2: ConnConnectedEv C
REASON = UNPARK
Cause: CAUSE_NORMAL

GC2: CallCtlConnEstablishedEv C
REASON = UNPARK
Cause: CAUSE_NORMAL
CallControlCause: CAUSE_PARK

Scenario Three

A calls B, B has forward no answer to C. B does not answer and call is offered to C.

Action

Events

Events delivered to call observer on A.

GC1: CallActiveEv
REASON = NORMAL
Cause: CAUSE_NEW_CALL

GC1: ConnCreatedEv A
REASON = NORMAL
Cause: CAUSE_NORMAL

GC1: ConnConnectedEv A
REASON = NORMAL
Cause: CAUSE_NORMAL

GC1: CallCtlConnInitiatedEv A
REASON = NORMAL
Cause: CAUSE_NORMAL
CallControlCause: CAUSE_NORMAL

GC1: TermConnCreatedEv TERMA
REASON = NORMAL

GC1: TermConnActiveEv TERMA
REASON = NORMAL
Cause: CAUSE_NORMAL

GC1: CallCtlTermConnTalkingEv TERMA
REASON = NORMAL
Cause: CAUSE_NORMAL
CallControlCause: CAUSE_NORMAL

GC1: CallCtlConnDialingEv A
REASON = NORMAL
Cause: CAUSE_NORMAL
CallControlCause: CAUSE_NORMAL

GC1: CallCtlConnEstablishedEv A
REASON = NORMAL
Cause: CAUSE_NORMAL
CallControlCause: CAUSE_NORMAL

GC1: ConnCreatedEv B
REASON = NORMAL
Cause: CAUSE_NORMAL

GC1: ConnInProgressEv B
REASON = NORMAL
Cause: CAUSE_NORMAL

GC1: CallCtlConnOfferedEv B
REASON = NORMAL
Cause: CAUSE_NORMAL
CallControlCause: CAUSE_NORMAL

GC1: ConnAlertingEv
REASON = NORMAL
Cause: CAUSE_NORMAL

GC1: CallCtlConnAlertingEv B
REASON = NORMAL
Cause: CAUSE_NORMAL
CallControlCause: CAUSE_NORMAL

GC1: ConnCreatedEv C
REASON = REASON_FORWARDNOANSWER  
Cause: CAUSE_NORMAL

GC1: ConnInProgressEv C
REASON =  REASON_FORWARDNOANSWER              
Cause: CAUSE_NORMAL

GC1: CallCtlConnOfferedEv C
REASON =  REASON_FORWARDNOANSWER
Cause: CAUSE_NORMAL
CallControlCause: CAUSE_REDIRECTED

GC1: ConnAlertingEv C
REASON =  REASON_FORWARDNOANSWER              
Cause: CAUSE_NORMAL

GC1: CallCtlConnAlertingEv C
REASON =  REASON_FORWARDNOANSWER
Cause: CAUSE_NORMAL
CallControlCause: CAUSE_NORMAL

GC1: ConnDisconnectedEv B
REASON =  REASON_FORWARDNOANSWER
Cause: CAUSE_NORMAL  

GC1: CallCtlConnDisconnectedEv B
REASON =  REASON_FORWARDNOANSWER
Cause: CAUSE_NORMAL
CallControlCause: CAUSE_REDIRECTED  

GC1: ConnConnectedEv C
REASON = NORMAL
Cause: CAUSE_NORMAL  

GC1: CallCtlConnEstablishedEv C
REASON = NORMAL
Cause: CAUSE_NORMAL
CallControlCause: CAUSE_NORMAL  

Scenario Four

A calls B, B redirects the call to C.

Action

Events

Events delivered to call observer on B.

GC1: CallActiveEv
REASON = NORMAL
Cause: CAUSE_NEW_CALL

GC1: ConnCreatedEv B
REASON = NORMAL
Cause: CAUSE_NORMAL

GC1: ConnInProgressEv
REASON = NORMAL
Cause: CAUSE_NORMAL

GC1: CallCtlConnOfferedEv B
REASON = NORMAL
Cause: CAUSE_NORMAL
CallControlCause: CAUSE_NORMAL

GC1: ConnCreatedEv A
REASON = NORMAL
Cause: CAUSE_NORMAL

GC1: ConnConnectedEv A
REASON = NORMAL
Cause: CAUSE_NORMAL

GC1: CallCtlConnEstablishedEv A
REASON = NORMAL
Cause: CAUSE_NORMAL
CallControlCause: CAUSE_NORMAL

GC1: ConnAlertingEv B
REASON = NORMAL
Cause: CAUSE_NORMAL  

GC1: CallCtlConnAlertingEv B
REASON = NORMAL
Cause: CAUSE_NORMAL
CallControlCause: CAUSE_NORMAL  

GC1: TermConnCreatedEv TERMB
REASON = NORMAL
Cause: Other: 0

GC1: TermConnRingingEv TERMB
REASON = NORMAL
Cause: CAUSE_NORMAL

GC1: CallCtlTermConnRingingEvImpl TERMB
REASON = NORMAL
Cause: CAUSE_NORMAL
CallControlCause: CAUSE_NORMAL

GC1: ConnDisconnectedEv A
REASON = REDIRECT
Cause: CAUSE_NORMAL

GC1: CallCtlConnDisconnectedEv A
REASON = REDIRECT
Cause: CAUSE_NORMAL
CallControlCause: CAUSE_REDIRECTED

GC1: TermConnDroppedEv TERMB
REASON = REDIRECT
Cause: CAUSE_NORMAL

GC1: CallCtlTermConnDroppedEv TERMB
REASON = REDIRECT
Cause: CAUSE_NORMAL
CallControlCause: CAUSE_REDIRECTED

GC1: ConnDisconnectedEv B
REASON = REDIRECT
Cause: CAUSE_NORMAL

GC1: CallCtlConnDisconnectedEv B
REASON = REDIRECT
Cause: CAUSE_NORMAL
CallControlCause: CAUSE_REDIRECTED  

GC1: CallInvalidEv
REASON = REDIRECT
Cause: CAUSE_NORMAL  

Barge and Privacy

The following diagrams illustrate the message flows for Barge and Privacy.

Barge

CBarge

Privacy

Call Control Discovery

Scenario 1: A calls 1000 in other cluster (SAF ICT)

Action

Result

Call info

A dials 1000, this call is first be intercepted by CCD Requesting Feature, and CCD Requesting feature extends this call to SIP trunk

CallActiveEv

ConnCreatedEv –A

ConnConnectedEv – A

CallCtlConnDialingEv - ATermConnCreatedEv - TA

TermConnActiveEv –TA

CallCtlTermConnTalkingEv - TA

 

Called Party is 1000

ConnCreatedEv 1000

ConnInProgressEv 1000

CallCtlConnOfferedEv 1000

getCurrentCallingAddress() = A

getCurrentCalledAddress() = 1000

getCalledAddress() = 1000

Scenario 2: A calls B, within same cluster. B redirects the call to 1000, which is in another cluster ( SAF ICT)

Action

Result

Call info

A calls B within the same cluster

CallActiveEv

ConnCreatedEv A

ConnConnectedEv A

CallCtlConnInitiatedEv A

TermConnCreatedEv TA

TermConnActiveEv TA

CallCtlTermConnTalkingEv TA

CallCtlConnEstablishedEv A

 

ConnCreatedEv B

ConnCreatedEv B

CallCtlConnOfferedEv B

ConnAlertingEv B

CallCtlConnAlertingEv B

TermConnCreatedEv TB

TermConnRingingEv TB

CallCtlTermConnRingingEvImpl TB

 

B redirects the call to 1000

TermConnDroppedEv TB

CallCtlTermConnDroppedEv TB

ConnDisconnectedEv B

CallCtlConnDisconnectedEv B

 

ConnCreatedEv 1000

 

 

 

 

 

getCurrentCallingAddress() = A

getCurrentCalledAddress() = 1000

getCalledAddress() = B

getLastRedirectedAddress() = B

Scenario 3 : A calls 1000 which is in the other cluster ( SAF ICT bandwidth is low)

Action

Result

Call info

A dials 1000, this call is first intercepted by CCD Requesting Feature, and CCD Requesting feature extends this call to SIP trunk

 

CallActiveEv

ConnCreatedEv –A

ConnConnectedEv – A

CallCtlConnDialingEv - ATermConnCreatedEv - TA

TermConnActiveEv –TA

CallCtlTermConnTalkingEv - TA

 

SIP trunk rejects this as bandwidth is not available

 

CallCtlConnEstablishedEv –A

ConnCreatedEv 1000

ConnConnectedEv 1000

CallCtlConnOfferedEv 1000

 

getCallingAddress() = A

getCalledAddress() = 1000

getCurrentCallingAddress() = A

getCurrentCalledAddress() = 1000

getLastRedirectedAddress() = ""

CCD Requesting feature starts PSTN failover by directing this caller to 1000’s PSTN failover number. Call is sent out to a PSTN gateway, and calling side moves to Ringback state.

CallCtlConnNetworkReachedEv 1000

CallCtlConnNetworkAlertingEv 1000

 

 

 

 

CiscoFeatureReason = NORMAL

CallCtlCause = CAUSE_NORMAL

getCallingAddress() = A

getCalledAddress() = 1000

getCurrentCallingAddress() = A

getCurrentCalledAddress() = 1000

getLastRedirectedAddress() = 1000

Scenario 4: A calls B within the cluster. B redirects the call to 1000 (low bandwidth SAF ICT)

Action

Result

Call info

A calls B within the same cluster

CallActiveEv

ConnCreatedEv A

ConnConnectedEv A

CallCtlConnInitiatedEv A

TermConnCreatedEv TA

TermConnActiveEv TA

CallCtlTermConnTalkingEv TA

CallCtlConnEstablishedEv A

 

ConnCreatedEv B

ConnCreatedEv B

CallCtlConnOfferedEv B

ConnAlertingEv B

CallCtlConnAlertingEv B

TermConnCreatedEv TB

TermConnRingingEv TB

CallCtlTermConnRingingEvImpl TB

 

B redirects the call to 1000. This call is first intercepted by CCD Requesting Feature, and CCD Requesting feature extends this call to SIP trunk

TermConnDroppedEv TB

CallCtlTermConnDroppedEv TB

ConnDisconnectedEv B

CallCtlConnDisconnectedEv B

 

CCD Requesting feature starts PSTN failover by directing this caller to 1000’s PSTN failover number. Call is sent out to a PSTN gateway

ConnCreatedEv 1000

ConnConnectedEv 1000

getCallingAddress() = A

getCurrentCallingAddress() = A

getCurrentCalledAddress() = 1000

getCalledAddress() = B

getLastRedirectedAddress() = 1000

Reason = REASON_SAF_CCD_PSTN_FAILOVER

Scenario 5 : A calls B, B transfers the call to 1000 ( low bandwidth SAF ICT)

Action

Result

Call info

A calls B

GC1 CallActiveEv

GC1 ConnCreatedEv A

GC1 ConnConnectedEv A

GC1 CallCtlConnInitiatedEv A

GC1 TermConnCreatedEv TA

GC1 TermConnActiveEv TA

GC1 CallCtlTermConnTalkingEv TA

GC1 CallCtlConnDialingEv A

GC1 CallCtlConnEstablishedEv A

 

GC1 ConnCreatedEv B

GC1 ConnCreatedEv B

GC1 CallCtlConnOfferedEv B

GC1 ConnAlertingEv B

GC1 CallCtlConnAlertingEv B

GC1 TermConnCreatedEv TB

GC1 TermConnRingingEv TB

GC1 CallCtlTermConnRingingEvImpl TB

 

B makes a consult call to 1000. This call is first intercepted by CCD Requesting Feature, and CCD Requesting feature extends this call to SIP trunk.

GC2 CallActiveEv

GC2 ConnCreatedEv B

GC2 ConnConnectedEv B

GC2 CallCtlConnInitiatedEv B

GC2 TermConnCreatedEv TB

GC2 TermConnActiveEv TB

GC2 CallCtlTermConnTalkingEv TB

GC2 CallCtlConnEstablishedEv B

 

GC2 ConnCreatedEv 1000

GC2 ConnCreatedEv 1000

GC2 CallCtlConnOfferedEv 1000

 

SIP trunk rejects this call as bandwidth is not available

CCD Requesting feature starts PSTN failover by directing this caller to 1000’s PSTN failover number (or as configured on the server). Call is sent out to a PSTN gateway.

GC2 CallCtlConnNetworkReachedEv 1000

GC2 CallCtlConnNetworkAlertingEv 1000

CiscofeatureReason = NORMAL

CallCtlCause = CAUSE_NORMAL

getCurrentCallingAddress() = A

getCurrentCalledAddress() = 1000

getCalledAddress() = B

getLastRedirectedAddress() = 1000

B completes the transfer

GC1 CiscoTermConnSelectChangedEv B

GC2 CiscoTermConnSelectChangedEv B

GC1 CiscoTransferStartedEv

GC2 CiscoCallChangedEv

GC2 CiscoCallChangedEv

GC1 ConnCreatedEv 1000

GC1 ConnAlertingEv 1000

GC1 CallCtlConnAlertingEv 1000

GC1 TermConnCreatedEv 1000

GC1 TermConnRingingEv 1000

GC1 CallCtlTermConnRingingEvImpl 1000

GC2 TermConnDroppedEv 1000

GC2 CallCtlTermConnDroppedEv 1000

GC2 ConnDisconnectedEv1408972 1000

GC2 CallCtlConnDisconnectedEv 1000

GC1 TermConnDroppedEv B

GC1 CallCtlTermConnDroppedEv B

GC1 ConnDisconnectedEv B

GC1 CallCtlConnDisconnectecEv B

GC2 TermConnDroppedEv B

GC2 CallCtlTermConnDroppedEv B

GC2 ConnDisconnectedEv B

GC2 CallCtlConnDisconnectecEv B

GC2 CallInvalidEv

GC1 CiscoTransferEndEv

 

Reason = REASON_TRANSFEREDCALL

A and 1000 come in direct call

GC1 ConnConnectedEv 1000

GC1 CallCtlConnEstablishedEv 1000

GC1 termConnActiveEv 1000

GC1 CallCtlTermConnTalkingEv 1000

 

Scenario 6: A calls B, B consults 1000 and adds it to conference ( low bandwidth SAF ICT )

Action

Result

Call info

A calls B

GC1 CallActiveEv

GC1 ConnCreatedEv A

GC1 ConnConnectedEv A

GC1 CallCtlConnInitiatedEv A

GC1 TermConnCreatedEv TA

GC1 TermConnActiveEv TA

GC1 CallCtlTermConnTalkingEv TA

GC1 CallCtlConnDialingEv A

GC1 CallCtlConnEstablishedEv A

 

GC1 ConnCreatedEv B

GC1 ConnCreatedEv B

GC1 CallCtlConnOfferedEv B

GC1 ConnAlertingEv B

GC1 CallCtlConnAlertingEv B

GC1 TermConnCreatedEv TB

GC1 TermConnRingingEv TB

GC1 CallCtlTermConnRingingEvImpl TB

 

B makes a consult call to 1000 for conference. This call is first intercepted by CCD Requesting Feature, and CCD Requesting feature extends this call to SIP trunk.

GC2 CallActiveEv

GC2 ConnCreatedEv B

GC2 ConnConnectedEv B

GC2 CallCtlConnInitiatedEv B

GC2 TermConnCreatedEv TB

GC2 TermConnActiveEv TB

GC2 CallCtlTermConnTalkingEv TB

GC2 CallCtlConnEstablishedEv B

 

GC2 ConnCreatedEv 1000

GC2 ConnCreatedEv 1000

GC2 CallCtlConnOfferedEv 1000

 

SIP trunk rejects this call as no more bandwidth is available

CCD Requesting feature starts PSTN failover by directing this caller to 1000’s PSTN failover number; call is sent out to a PSTN gateway.

GC2 CallCtlConnNetworkReachedEv 1000

GC2 CallCtlConnNetworkAlertingEv 1000

CiscofeatureReason = NORMAL

CallCtlCause = CAUSE_NORMAL

getCurrentCallingAddress() = A

getCurrentCalledAddress() = 1000

getCalledAddress() = B

getLastRedirectedAddress() = 1000

B completes the conference

GC1 CiscoTermConnSelectChangedEv B

GC2 CiscoTermConnSelectChangedEv B

GC1 CiscoConferenceStartedEv

GC2 termConnDroppedEv B

GC2 CallCtlTermConnDroppedEv B

Gc2 ConnDisconnectedEv B

GC2 CallCtlConnDisConnectedEv B

GC1 CallCtlTermConnTalkingEv B

GC2 CiscoCallChangedEv

GC1 ConnCreatedEv 1000

GC1 ConConnectedEv 1000

GC1 CallCtlConnEstablishedEv 1000

GC1 TermConnCreatedEv 1000

GC1 TermConnActiveEv 1000

GC1 CallCtlTermConnTalkingEv 1000

GC2 TermConnDroppedEv 1000

GC2 CallCtlTermConnDroppedEv 1000

GC2 ConnDisconnectedEv 1000

GC2 CallCtlConnDisconnectedEv 1000

GC2 CallInvalidEv

GC1 CiscoTermConnSelectChangedEv B

GC1 CiscoTermConnSelectChangedEv B

 

Reason = REASON_CONFERENCE

CallFwdAll Keys Press Notification

(Scenario 1): Application is observing A; A goes off-hook

Action

Result

Call info

Application observes A.

CiscoAddrInServiceEv – A

 

A goes off-hook.

GC1:

CallActiveEv

ConnCreatedEv –A

ConnConnectedEv – A

CallCtlConnInitiatedEv - A

TermConnCreatedEv - TA

TermConnActiveEv –TA

CallCtlTermConnTalkingEv –TA

 

TermConnActiveEv-TA. getCall().getCFWDAllKeyPressIndicator() returns CiscoCall.CFWD_ALL_NONE

 

currentCalling = A

currentCalled = null

CAUSE = CAUSE_NORMAL

(Scenario 2): A goes off-hook; Application starts observing A

Action

Result

Call info

A goes off-hook

No Event is delivered

 

Application starts observing A

CiscoAddrInServiceEv – A

 

GC1:

CallActiveEv

ConnCreatedEv –A

ConnConnectedEv – A

CallCtlConnInitiatedEv - A

TermConnCreatedEv - TA

TermConnActiveEv –TA

CallCtlTermConnTalkingEv –TA

 

TermConnActiveEv-TA. getCall().getCFWDAllKeyPressIndicator() returns CiscoCall.CFWD_ALL_NONE

 

currentCalling = A

currentCalled = null

 

CAUSE = CAUSE_SNAPSHOT

 

(Scenario 3): Application is observing A; User presses CFwdAll soft key on phone A in on-hook state

Action

Result

Call info

Application observes A.

CiscoAddrInServiceEv – A

 

User presses CFwdAll soft key on phone A

GC1:

CallActiveEv

ConnCreatedEv –A

ConnConnectedEv – A

CallCtlConnInitiatedEv - A

TermConnCreatedEv - TA

TermConnActiveEv –TA

CallCtlTermConnTalkingEv –TA

 

TermConnActiveEv-TA. getCall().getCFWDAllKeyPressIndicator() returns CiscoCall.CFWD_ALL_SET

 

currentCalling = A

currentCalled = null

 

CAUSE = CAUSE_NORMAL

(Scenario 4): User presses CFwdAll soft key on phone A goes in on-hook state; Application starts observing A

Action

Result

Call info

User presses CFwdAll soft key on phone A

No event is delivered

 

Application starts observing A

GC1:

CallActiveEv

ConnCreatedEv –A

ConnConnectedEv – A

CallCtlConnInitiatedEv - A

TermConnCreatedEv - TA

TermConnActiveEv –TA

CallCtlTermConnTalkingEv –TA

 

TermConnActiveEv-TA. getCall().getCFWDAllKeyPressIndicator() returns CiscoCall.CFWD_ALL_SET

 

currentCalling = A

currentCalled = null

 

 

CAUSE = CAUSE_SNAPSHOT

(Scenario 5): Application is observing A; A goes off-hook and presses CFwdAll soft key

Action

Result

Call info

Application observes A.

CiscoAddrInServiceEv – A

 

A goes off-hook.

GC1:

CallActiveEv

ConnCreatedEv –A

ConnConnectedEv – A

CallCtlConnInitiatedEv - A

TermConnCreatedEv - TA

TermConnActiveEv –TA

CallCtlTermConnTalkingEv –TA

 

TermConnActiveEv-TA. getCall().getCFWDAllKeyPressIndicator() returns CiscoCall_CFWD_ALL_NONE

 

currentCalling = A

currentCalled = null

 

CAUSE = CAUSE_NORMAL

A presses CFwdAll soft key

No Event is delivered

 

(Scenario 6): Application is observing A; User presses CFwdAll Key on phone A and dial 9999(B) to set the CFA destination as B; User then presses CFwdAll soft key again to cancel the CallFwdAll

Action

Result

Call info

Application observes A.

CiscoAddrInServiceEv – A

 

User presses CFwdAll soft key on phone A

GC1:

CallActiveEv

ConnCreatedEv –A

ConnConnectedEv – A

CallCtlConnInitiatedEv – A

TermConnCreatedEv – TA

TermConnActiveEv –TA

CallCtlTermConnTalkingEv –TA

 

TermConnActiveEv-TA. getCall().getCFWDAllKeyPressIndicator() returns CiscoCall.CFWD_ALL_SET

 

currentCalling = A

currentCalled = null

 

CAUSE = CAUSE_NORMAL

User dials B to set CFA destination as B

GC1:

CallCtlConnDialingEv – A

 

CallCtlConnEstablishedEv – A

 

TermConnDroppedEv – TA

CallCtlTermConnDroppedEv – TA

ConnDisconnectedEv – A

CallCtlConnDisconnectedEv – A

CallInvalidEv

currentCalling = A

currentCalled = null

 

currentCalling = A

currentCalled = B

 

CAUSE = CAUSE_NORMAL

 

User presses CFwdAll soft key on phone A to cancel CFA

GC2:

CallActiveEv

ConnCreatedEv –A

ConnConnectedEv – A

CallCtlConnInitiatedEv - A

TermConnCreatedEv - TA

TermConnActiveEv –TA

CallCtlTermConnTalkingEv –TA

TermConnDroppedEv – TA

CallCtlTermConnDroppedEv – TA

ConnDisconnectedEv – A

CallCtlConnDisconnectedEv – A

CallInvalidEv

 

(GC2)TermConnActiveEv-TA. getCall().getCFWDAllKeyPressIndicator() returns CiscoCall.CFWD_ALL_CLEAR

 

currentCalling = A

currentCalled = null

 

CAUSE = CAUSE_NORMAL

 

CallSelect and UnSelect

The following diagram illustrates the message flows for CallSelect and UnSelect.



Cius Persistency

Use cases for Cius Persistency

Usecase

Events on Provider observer

Info

Application has a wireless device TermA in its control list which is registered with IPv4 address 1.1.1.1

ProvInServiceEv

((CiscoTerminal)(Provider.getTerminal(TermA))).getIPV4Address() = 1.1.1.1

The device moves from one WiFi N/W to another resulting in the change in the IPv4 address from 1.1.1.1 to 2.2.2.2

CiscoProvTerminalIPAddressChangedEv TermA

Ev.getIPAddressingMode() = CiscoTerminal.IP_ADDRESSING_MODE_IPV4

Ev.getIPV4Address() = 2.2.2.2

((CiscoTerminal)(Ev.getTerminal()).getIP4Address() = 2.2.2.2

The deivce moves from a IPv4 n/w to a Ipv6 n/w

With new ip as 1::1

CiscoProvTerminalIPAddressChangedEv TermA

Ev.getIPAddressingMode() = CiscoTerminal.IP_ADDRESSING_MODE_IPV6

Ev.getIPV6Address() = 1::1

((CiscoTerminal)(Ev.getTerminal()).getIP6Address() = 1::1

The Device is docked on a base station connected to the ethernet resulting in a change in IP address to 3.3.3.3

CiscoProvTerminalIPAddressChangedEv TermA

Ev.getIPAddressingMode() = CiscoTerminal.IP_ADDRESSING_MODE_IPV4

Ev.getIPV4Address() = 3.3.3.3

Ev.getTerminal() = TermA

((CiscoTerminal)(Ev.getTerminal()).getIP4Address() = 3.3.3.3

Conference and Join

The following diagrams illustrate the message flows for Conference and Join.

Join/Arbitrary conference

Join/Arbitrary conference—Page 2



Consult Conference

The message flow for Consult Conference acts the same as the flow for Arbitrary Conference.

Join Across Lines with Enhancements

The message flows for Join Across Lines with Enhancements are described in following tables. A, C, D, E and F are addresses on different terminals. B1 and B2 are addresses on the same terminal, TermB.

Action

Events

Application conferences the two calls on B1 and B2 by invoking GC1.conference(GC2) to chain two conference calls.

Events to CallObserver of A, C and B1:

TermConnActiveEv TermB GC1

CallCtlTermConnTalkingEv TermB GC1 Cause = NORMAL, callCtlCause = CAUSE_CONFERENCE

ConnCreatedEv Conference-2 GC1

ConnConnectedEv Conference-2 GC1

CallCtlConnEstablishedEv Conference-2 GC1 Cause = NORMAL, callCtlCause = CAUSE_CONFERENCE

CiscoConferenceChainAddedEv GC1

Ev.getAddedConnection will return connection for Conference-2

Ev.getConferenceChain().getChainedConferenceConnections() will return connections of Conference-2

Ev.getConferenceChain().getChainedConferenceCalls() will return GC1

Event for CallObserver at B2, D & E:

ConnDisconnectedEv B2 GC2 Cause = NORMAL

CallCtlConnDisconnectedEv B2 GC2 Cause = NORMAL, callCtlCause = CAUSE_CONFERENCE

TermConnDroppedEv TermB GC2 Cause = NORMAL

CallCtlTermConnDroppedEv TermB GC2 Cause = NORMAL, callCtlCause = CAUSE_CONFERENCE

ConnCreatedEv Conference-1 GC2

ConnConnectedEv Conference-1 GC2

CallCtlConnEstablishedEv Conference-1 GC2 Cause = NORMAL, callCtlCause = CAUSE_CONFERENCE

CiscoConferenceChainAddedEv – GC2

Ev.getAddedConnection will return connection of Conference-1

Ev.getConferenceChain().getChainedConferenceConnections() will return connections of Conference-1 & Conference-2

Ev.getConferenceChain().getChainedConferenceCalls() will return GC1 & GC2

Application invokes GC2.conference (GC1) to chain two conference calls.

Event for CallObserver at B2, D & E:

TermConnActiveEv TermB GC2

CallCtlTermConnTalkingEv TermB GC2 Cause = NORMAL, callCtlCause = CAUSE_CONFERENCE

ConnCreatedEv Conference-1 GC2

ConnConnectedEv Conference-1 GC2

CallCtlConnEstablishedEv Conference-1 GC2 Cause = NORMAL, callCtlCause = CAUSE_CONFERENCE

CiscoConferenceChainAddedEv – GC2

Ev.getAddedConnection will return connection for Conference-1

Ev.getConferenceChain().getChainedConferenceConnections() will return connections of Conference-1

Ev.getConferenceChain().getChainedConferenceCalls() will return GC2

Events for CallObservers at A, B1 & C:

ConnDisconnectedEv B1 GC1 Cause = NORMAL

CallCtlConnDisconnectedEv B1 GC1 Cause = NORMAL, callCtlCause = CAUSE_CONFERENCE

TermConnDroppedEv TermB GC1 Cause = NORMAL

CallCtlTermConnDroppedEv TermB GC1 Cause = NORMAL, callCtlCause = CAUSE_CONFERENCE

ConnCreatedEv Conference-2 GC1

ConnConnectedEv Conference-2 GC1

CallCtlConnEstablishedEv Conference-2 GC1 Cause = NORMAL, callCtlCause = CAUSE_CONFERENCE

CiscoConferenceChainAddedEv – GC1

Ev.getAddedConnection will return connection for Conference-2

Ev.getConferenceChain().getChainedConferenceConnections() will return connections of Conference-2

Ev.getConferenceChain().getChainedConferenceCalls() will return GC1

A, B1, C are in conference-1 (GC1), B1, D, E are in conference-2 (GC2), B2, F, G are in conference-3 (GC-3)

Application completes conference at C by initiating GC1.conference(GC2, GC3) setting B1 as controller.

Event for CallObserver at A, B1 & C:

TermConnActiveEv TermB GC1

CallCtlTermConnTalkingEv TermB GC1 Cause = NORMAL, callCtlCause = CAUSE_CONFERENCE

ConnCreatedEv Conference-2 GC1

ConnConnectedEv Conference-2 GC1

CallCtlConnEstablishedEv Conference-2 GC1 Cause = NORMAL, callCtlCause = CAUSE_CONFERENCE

CiscoConferenceChainAddedEv - GC1

Ev.getAddedConnection will return connection for Conference-2

Ev.getConferenceChain().getChainedConferenceConnections() will return connections of Conference-2

Ev.getConferenceChain().getChainedConferenceCalls() will return GC1

TermConnDroppedEv TermB GC2

CallCtlTermConnDroppedEv TermB GC2

ConnCreatedEv Conference-3 GC1

ConnConnectedEv Conference-3 GC1

CallCtlConnEstablishedEv Conference-3 GC1 Cause = NORMAL, callCtlCause = CAUSE_CONFERENCE

CiscoConferenceChainAddedEv - GC1

Ev.getAddedConnection will return connection for Conference-3

Ev.getConferenceChain().getChainedConferenceConnections() will return connections of Conference-2 & Conference-3

Ev.getConferenceChain().getChainedConferenceCalls() will return GC2 & GC3

Event for CallObserver at B1, D & E:

ConnDisconnectedEv B1 GC2 Cause = NORMAL

CallCtlConnDisconnectedEv B1 GC2 Cause = NORMAL, callCtlCause = CAUSE_CONFERENCE

TermConnDroppedEv TermB GC2 Cause = NORMAL

CallCtlTermConnDroppedEv TermB GC2 Cause = NORMAL, callCtlCause = CAUSE_CONFERENCE

ConnCreatedEv Conference-1 GC2

ConnConnectedEv Conference-1 GC2

CallCtlConnEstablishedEv Conference-1 GC2 Cause = NORMAL, callCtlCause = CAUSE_CONFERENCE

CiscoConferenceChainAddedEv – GC2

Ev.getAddedConnection will return connection for Conference-1

Ev.getConferenceChain().getChainedConferenceConnections() will return connections of Conference-1-GC2

Ev.getConferenceChain().getChainedConferenceCalls() will return GC2

Event for CallObserver at B2, F & G:

ConnDisconnectedEv B2 GC3 Cause = NORMAL

CallCtlConnDisconnectedEv B2 GC3 Cause = NORMAL, callCtlCause = CAUSE_CONFERENCE

TermConnDroppedEv TermB GC3 Cause = NORMAL

CallCtlTermConnDroppedEv TermB GC3 Cause = NORMAL, callCtlCause = CAUSE_CONFERENCE

ConnCreatedEv Conference-1 GC3

ConnConnectedEv Conference-1 GC3

CallCtlConnEstablishedEv Conference-1 GC3 Cause = NORMAL, callCtlCause = CAUSE_CONFERENCE

CiscoConferenceChainAddedEv - GC3

Ev.getAddedConnection will return connection for Conference-1

Ev.getConferenceChain().getChainedConferenceConnections() will return connections of Conference-1

Ev.getConferenceChain().getChainedConferenceCalls() will return GC3

Action

Events

Application sets the requestor as B2 and calls GC2.conference(GC1) getControllerAddress() returns B2. getOriginalControllerAddress() returns B1.

A
CiscoConferenceStartEv
CallCtlTermConnTalkingEv TermB GC1
ConnCreatedEv D GC1
ConnConnectedEv D GC1
CallCtlTermConnDroppedEv TermB GC2
CiscoConferenceEndEv

B1
CallCtlTermConnHeldEv TermB GC1
CiscoConferenceStartEv
CallCtlTermConnTalkingEv TermB GC1
ConnCreatedEv D
ConnConnectedEv
CiscoConferenceEndEv

B2
ConnDisconnectedEv B GC2
CallCtlTermConnHeldEv TermB GC2

D
CallActiveEv GC2
ConnAlertingEv D GC2
ConnConnectedEv D GC2
CiscoConferenceStartEv
TermConnDroppedEv TermB GC2
CallActiveEv GC1
CiscoCallChangedEv
TermConnTalkingEv TermB GC1
TermConnDroppedEv TermD GC2
CallObservationEndedEv GC2
CiscoConferenceEndEv

If application uses B1 as request controller in the above setup getControllerAddress() returns B1. getOriginalControllerAddress() returns B1.

Events are same as above

CTI Remote Device

Use cases

  • Group 1: Get/Add/Remove/Update on Remote Destinations
  • Group 2: CTIRD Incoming/Outgoing/Disconnect/Redirect/Hold/Resume and shared-line call scenarios)
  • Group 3 (CUCSF registration and unregistration, for Normal SIP mode <-> Extend mode, and terminal switching scenarios
  • Group 4: Set/Reset Active Remote Destination scenarios
  • Group 5: CTIRD Transfer/Conference/Multiple-Calls call scenarios
  • Group 6: CTIRD URI-Dialing basic Incoming & Outgoing DVO call scenarios

CTI Remote Device use cases group 1

Scenario 1-1 (Expose all RDs Information on a CTI Remote Device to Application):

User1 has "CTI Remote Device A" in the control list. User invokes CiscoRemoteTerminal.getAllRemoteDestinations() on terminal A.

Action

Events

Call info

User1 opens Provider and adds a provider observer.

ProvInServiceEv

 

User1 invokes CiscoRemoteTerminal. getAllRemoteDestinations() on TermA.

 

TermA.getAllRemoteDestinations() = CiscoRemoteDestinationInfo[2].

 

CiscoRemoteDestinationInfo[0].getRemoteDestinationName() = "RD1-A"

CiscoRemoteDestinationInfo[0].getRemoteDestinationNumber() = "4081001111"

CiscoRemoteDestinationInfo[0].getIsActiveRD() = true

 

CiscoRemoteDestinationInfo[1].getRemoteDestinationName() = "RD2-A"

CiscoRemoteDestinationInfo[1].getRemoteDestinationNumber() = "4081002222"

CiscoRemoteDestinationInfo[1].getIsActiveRD() = false

Use Cases Group 1: Get/Add/Remove/Update on Remote Destinations

Pre-conditions on Use Cases group 1 below with default jtapi.ini settings, unless specified explicitly:

  • Provider is IN_SERVICE state.
  • Device A (CTI Remote Device - Name: "CTIRD-A", Line A (DN: 1000))
  • Remote Destination 1 (Name: "RD1-A", Number: "4081001111", Active RD: true)
  • Remote Destination 2 (Name: "RD2-A", Number: "4081002222", Active RD: false)
  • Device B (IP Phone - Name: "SEP000DED47D023", Line B (DN: 2000)
  • Device C (CTI Remote Device - Name: "CTIRD-C", Line C (DN: 3000))
  • No Remote Destination configured.

Scenario 1-2 (Expose Active RDs Information on a CTI Remote Device to Application):

User1 has "CTI Remote Device A" in the control list. User invokes CiscoRemoteTerminal.getActiveRemoteDestinations() on terminal A.

Action

Events

Call info

User1 opens Provider and adds a provider observer.

ProvInServiceEv

 

User1 invokes CiscoRemoteTerminal. getActiveRemoteDestinations() on TermA.

 

TermA.getActiveRemoteDestinations() = CiscoRemoteDestinationInfo[1].

 

CiscoRemoteDestinationInfo[0].getRemoteDestinationName() = "RD1-A"

CiscoRemoteDestinationInfo[0].getRemoteDestinationNumber() = "4081001111"

CiscoRemoteDestinationInfo[0].getIsActiveRD() = true

Scenario 1-3 (Fetch RD information on a CTI Remote Device that has no RD configured):

User1 has "CTI Remote Device C" in the control list. User invokes CiscoRemoteTerminal.getAllRemoteDestinations() on terminal C.

Action

Events

Call info

User1 opens Provider and adds a provider observer.

ProvInServiceEv

 

User1 invokes CiscoRemoteTerminal. getAllRemoteDestinations() on TermC.

 

TermC.getAllRemoteDestinations() = null.

Scenario 1-4 (Fetch RD information on a 'non-CTI Remote Device'):

User1 has "Device B" IP Phone in the control list. User invokes CiscoRemoteTerminal.getAllRemoteDestinations() on terminal B.

Action

Events

Call info

User1 opens Provider and adds a provider observer.

ProvInServiceEv

 

User1 invokes CiscoRemoteTerminal. getAllRemoteDestinations() on TermB.

 

TermB.getAllRemoteDestinations() = null.

Scenario 1-5 (Fetch Active RD information on a CTI Remote Device that has no Active RD configured):

User1 has "CTI Remote Device C" in the control list. User invokes CiscoRemoteTerminal.getActiveRemoteDestinations() on terminal C.

Action

Events

Call info

User1 opens Provider and adds a provider observer.

ProvInServiceEv

 

User1 invokes CiscoRemoteTerminal. getAllRemoteDestinations() on TermC.

 

TermC.getActiveRemoteDestinations() = null.

Scenario 1-6 (Set a non-Active RD as a new Active RD on a 'CTI Remote Device', where there is already has an existing Active RD for this device):

User1 has "CTI Remote Device A" in the control list. User invokes CiscoRemoteTerminal.setActiveRemoteDestination("4081002222", true) on terminal A.

Action

Events

Call info

User1 opens Provider and adds a provider observer.

ProvInServiceEv

 

User1 invokes CiscoRemoteTerminal. setActiveRemoteDestination ("4081002222", true) on TermA.

CiscoProvTerminal RemoteDestination ChangedEv

 

CiscoProvTerminalRemoteDestinationChangedEv. getRemoteDestinations() = CiscoRemoteDestinationInfo[2].

 

CiscoRemoteDestinationInfo[0].getRemoteDestinationName() = "RD1-A"

CiscoRemoteDestinationInfo[0].getRemoteDestinationNumber() = "4081001111"

CiscoRemoteDestinationInfo[0].getIsActiveRD() = false

CiscoRemoteDestinationInfo[1].getRemoteDestinationName() = "RD2-A"

CiscoRemoteDestinationInfo[1].getRemoteDestinationNumber() = "4081002222"

CiscoRemoteDestinationInfo[1].getIsActiveRD() = false

 

CiscoProvTerminal RemoteDestinationChangedEv

 

CiscoProvTerminalRemoteDestinationChangedEv. getRemoteDestinations() = CiscoRemoteDestinationInfo[2].

 

CiscoRemoteDestinationInfo[0].getRemoteDestinationName() = "RD1-A"

CiscoRemoteDestinationInfo[0].getRemoteDestinationNumber() = "4081001111"

CiscoRemoteDestinationInfo[0].getIsActiveRD() = false

CiscoRemoteDestinationInfo[1].getRemoteDestinationName() = "RD2-A"

CiscoRemoteDestinationInfo[1].getRemoteDestinationNumber() = "4081002222"

CiscoRemoteDestinationInfo[1].getIsActiveRD() = true

Scenario 1-7 (Add a new non-Active RD on a 'CTI Remote Device'):

User1 has "CTI Remote Device A" in the control list. User invokes addRemoteDestination("RD3-A", "4081003333", false) on terminal A.

Action

Events

Call info

User1 opens Provider and adds a provider observer.

ProvInServiceEv

 

User1 invokes CiscoRemoteTerminal. addRemoteDestination ("RD3-A", "4081003333", false) on TermA.

CiscoProvTerminal RemoteDestination ChangedEv

CiscoProvTerminalRemoteDestinationChangedEv. getRemoteDestinations() = CiscoRemoteDestinationInfo[3].

 

CiscoRemoteDestinationInfo[0].getRemoteDestinationName() = "RD1-A"

CiscoRemoteDestinationInfo[0].getRemoteDestinationNumber() = "4081001111"

CiscoRemoteDestinationInfo[0].getIsActiveRD() = true

CiscoRemoteDestinationInfo[1].getRemoteDestinationName() = "RD2-A"

CiscoRemoteDestinationInfo[1].getRemoteDestinationNumber() = "4081002222"

CiscoRemoteDestinationInfo[1].getIsActiveRD() = false

CiscoRemoteDestinationInfo[2].getRemoteDestinationName() = "RD3-A"

CiscoRemoteDestinationInfo[2].getRemoteDestinationNumber() = "4081003333"

CiscoRemoteDestinationInfo[2].getIsActiveRD() = false

Scenario 1-8 (Add a new Active RD on a 'CTI Remote Device', with another existing Active RD.):

User1 has "CTI Remote Device A" in the control list. User invokes addRemoteDestination("RD3-A", "4081003333", true) on terminal A.

Action

Events

Call info

User1 opens Provider and adds a provider observer.

ProvInServiceEv

 

User1 invokes CiscoRemoteTerminal. addRemoteDestination ("RD3-A", "4081003333", true) on TermA.

CiscoProvTermina lRemoteDestination ChangedEv

CiscoProvTerminalRemoteDestinationChangedEv. getRemoteDestinations() = CiscoRemoteDestinationInfo[2].

 

CiscoRemoteDestinationInfo[0].getRemoteDestinationName() = "RD1-A"

CiscoRemoteDestinationInfo[0].getRemoteDestinationNumber() = "4081001111"

CiscoRemoteDestinationInfo[0].getIsActiveRD() = false

CiscoRemoteDestinationInfo[1].getRemoteDestinationName() = "RD2-A"

CiscoRemoteDestinationInfo[1].getRemoteDestinationNumber() = "4081002222"

CiscoRemoteDestinationInfo[1].getIsActiveRD() = false

 

CiscoProvTerminalRemote DestinationChangedEv

 

CiscoProvTerminalRemoteDestinationChangedEv.getRemoteDestinations() = CiscoRemoteDestinationInfo[3].

 

CiscoRemoteDestinationInfo[0].getRemoteDestinationName() = "RD1-A"

CiscoRemoteDestinationInfo[0].getRemoteDestinationNumber() = "4081001111"

CiscoRemoteDestinationInfo[0].getIsActiveRD() = false

CiscoRemoteDestinationInfo[1].getRemoteDestinationName() = "RD2-A"

CiscoRemoteDestinationInfo[1].getRemoteDestinationNumber() = "4081002222"

CiscoRemoteDestinationInfo[1].getIsActiveRD() = false

CiscoRemoteDestinationInfo[2].getRemoteDestinationName() = "RD3-A"

CiscoRemoteDestinationInfo[2].getRemoteDestinationNumber() = "4081003333"

CiscoRemoteDestinationInfo[2].getIsActiveRD() = true

Scenario 1-9 (Add a new RD on a 'CTI Remote Device' with a Number that is the same as another existing RD's Number ):

User1 has "CTI Remote Device A" in the control list. User invokes addRemoteDestination("RD3-A", "4081003333", false) on terminal A.

Action

Events

Call info

User1 opens Provider and adds a provider observer.

ProvInServiceEv

 

User1 invokes CiscoRemoteTerminal. addRemoteDestination ("AnyName", "4081002222", false) on TermA.

Caught exception: com.cisco.jtapi. PlatformException Impl: Duplicated Remote Destination Number

 

Let 'ex' be an instanceof PlatformException:

 

((CiscoJtapiException) ex).getErrorCode() = CiscoJtapiException. CTIERR_DUPLICATED_REMOTE_DESTINATION_NUMBER.

 

TermA.getAllRemoteDestinations() = CiscoRemoteDestinationInfo[2].

 

CiscoRemoteDestinationInfo[0].getRemoteDestinationName() = "RD1-A"

CiscoRemoteDestinationInfo[0].getRemoteDestinationNumber() = "4081001111"

CiscoRemoteDestinationInfo[0].getIsActiveRD() = true

CiscoRemoteDestinationInfo[1].getRemoteDestinationName() = "RD2-A"

CiscoRemoteDestinationInfo[1].getRemoteDestinationNumber() = "4081002222"

CiscoRemoteDestinationInfo[1].getIsActiveRD() = false

Scenario 1-10 (Remove a RD from a 'CTI Remote Device'):

User1 has "CTI Remote Device A" in the control list. User invokes removeRemoteDestination("4081002222") on terminal A.

Action

Events

Call info

User1 opens Provider and adds a provider observer.

ProvInServiceEv

 

User1 invokes CiscoRemoteTerminal. removeRemoteDestination ("4081002222") on TermA.

CiscoProvTerminalRemote DestinationChangedEv

 

CiscoProvTerminalRemoteDestinationChangedEv.getRemoteDestinations() = CiscoRemoteDestinationInfo[1].

 

CiscoRemoteDestinationInfo[0].getRemoteDestinationName() = "RD1-A"

CiscoRemoteDestinationInfo[0].getRemoteDestinationNumber() = "4081001111"

CiscoRemoteDestinationInfo[0].getIsActiveRD() = true

Scenario 1-11 (Remove all RD(s) from a 'CTI Remote Device'):

User1 has "CTI Remote Device A" in the control list. User invokes removeAllRemoteDestinations() on terminal A.


Note


JTAPI will loop through the terminal/device's existing remote destinations one by one, so the total number of CiscoProvTerminalRemoteDestinationChangedEv sent to an application should be the same number of available remote destinations being removed. And the order and content of each event can vary, depending on how each remote destination is stored in JTAPI's local cache RD list.


Action

Events

Call info

User1 opens Provider and adds a provider observer.

ProvInServiceEv

 

User1 invokes CiscoRemoteTerminal. removeAllRemote Destinations() on TermA.

 

CiscoProvTerminalRemote DestinationChangedEv

 

CiscoProvTerminalRemoteDestinationChangedEv.getRemoteDestinations() = CiscoRemoteDestinationInfo[1].

 

CiscoRemoteDestinationInfo[0].getRemoteDestinationName() = "RD2-A"

CiscoRemoteDestinationInfo[0].getRemoteDestinationNumber() = "4081002222"

CiscoRemoteDestinationInfo[0].getIsActiveRD() = false

 

CiscoProvTerminalRemote DestinationChangedEv

 

CiscoProvTerminalRemoteDestinationChangedEv.getRemoteDestinations() = null.

Scenario 1-12 (Update a RD Name on a 'CTI Remote Device'):

User1 has "CTI Remote Device A" in the control list. User invokes updateRemoteDestinationName ("4081001111", "MyHome") on terminal A.

Action

Events

Call info

User1 opens Provider and adds a provider observer.

ProvInServiceEv

 

User1 invokes CiscoRemoteTerminal. updateRemoteDestination Name ("4081001111", "MyHome") on TermA.

 

CiscoProvTerminalRemote DestinationChangedEv

 

CiscoProvTerminalRemoteDestinationChangedEv.getRemoteDestinations() = CiscoRemoteDestinationInfo[2].

 

CiscoRemoteDestinationInfo[0].getRemoteDestinationName() = "MyHome"

CiscoRemoteDestinationInfo[0].getRemoteDestinationNumber() = "4081001111"

CiscoRemoteDestinationInfo[0].getIsActiveRD() = true

CiscoRemoteDestinationInfo[1].getRemoteDestinationName() = "RD2-A"

CiscoRemoteDestinationInfo[1].getRemoteDestinationNumber() = "4081002222"

CiscoRemoteDestinationInfo[1].getIsActiveRD() = false

Scenario 1-13 (Update a RD Number on a 'CTI Remote Device'):

User1 has "CTI Remote Device A" in the control list. User invokes updateRemoteDestinationNumber ("4081001111", "6268210080") on terminal A.

Action

Events

Call info

User1 opens Provider and adds a provider observer.

ProvInServiceEv

 

User1 invokes CiscoRemoteTerminal. updateRemoteDestination Name ("4081001111", "6268210080") on TermA.

 

CiscoProvTerminalRemote DestinationChangedEv

 

CiscoProvTerminalRemoteDestinationChangedEv.getRemoteDestinations() = CiscoRemoteDestinationInfo[2].

 

CiscoRemoteDestinationInfo[0].getRemoteDestinationName() = "RD1-A"

CiscoRemoteDestinationInfo[0].getRemoteDestinationNumber() = "6268210080"

CiscoRemoteDestinationInfo[0].getIsActiveRD() = true

CiscoRemoteDestinationInfo[1].getRemoteDestinationName() = "RD2-A"

CiscoRemoteDestinationInfo[1].getRemoteDestinationNumber() = "4081002222"

CiscoRemoteDestinationInfo[1].getIsActiveRD() = false

Scenario 1-14 (Add a new RD with an invalid RD Number on a 'CTI Remote Device'):

User1 has "CTI Remote Device A" in the control list. User invokes addRemoteDestination ("iPhone5", "IAmNotANumber", true) on terminal A.

Action

Events

Call info

User1 opens Provider and adds a provider observer.

ProvInServiceEv

 

User1 invokes CiscoRemoteTerminal. addRemoteDestination ("iPhone5", "IAmNotANumber", true) on TermA.

 

Caught exception: com.cisco.jtapi. PlatformExceptionImpl: Invalid Remote Destination Number

 

Let 'ex' be an instanceof PlatformException:

 

((CiscoJtapiException) ex).getErrorCode() = CiscoJtapiException. CTIERR_INVALID_REMOTE_DESTINATION_NUMBER.

 

TermA.getAllRemoteDestinations() = CiscoRemoteDestinationInfo[2].

 

CiscoRemoteDestinationInfo[0].getRemoteDestinationName() = "RD1-A"

CiscoRemoteDestinationInfo[0].getRemoteDestinationNumber() = "4081001111"

CiscoRemoteDestinationInfo[0].getIsActiveRD() = true

CiscoRemoteDestinationInfo[1].getRemoteDestinationName() = "RD2-A"

CiscoRemoteDestinationInfo[1].getRemoteDestinationNumber() = "4081002222"

CiscoRemoteDestinationInfo[1].getIsActiveRD() = false

Scenario 1-15 (Update RD Name with an invalid/not-associated RD Number on a 'CTI Remote Device'):

User1 has "CTI Remote Device A" in the control list. User invokes updateRemoteDestinationName ("4085268222", "MyBossOffice") on terminal A.

Action

Events

Call info

User1 opens Provider and adds a provider observer.

ProvInServiceEv

 

User1 invokes CiscoRemoteTerminal. updateRemoteDestination Name ("4085268222", "MyBossOffice") on TermA.

 

Caught exception: com.cisco.jtapi. PlatformExceptionImpl: Invalid Remote Destination Number

 

Let 'ex' be an instanceof PlatformException:

 

((CiscoJtapiException) ex).getErrorCode() = CiscoJtapiException. CTIERR_INVALID_REMOTE_DESTINATION_NUMBER.

 

TermA.getAllRemoteDestinations() = CiscoRemoteDestinationInfo[2].

 

CiscoRemoteDestinationInfo[0].getRemoteDestinationName() = "RD1-A"

CiscoRemoteDestinationInfo[0].getRemoteDestinationNumber() = "4081001111"

CiscoRemoteDestinationInfo[0].getIsActiveRD() = true

CiscoRemoteDestinationInfo[1].getRemoteDestinationName() = "RD2-A"

CiscoRemoteDestinationInfo[1].getRemoteDestinationNumber() = "4081002222"

CiscoRemoteDestinationInfo[1].getIsActiveRD() = false

Scenario 1-16 (Update RD Name with a null RD Number on a 'CTI Remote Device'):

User1 has "CTI Remote Device A" in the control list. User invokes updateRemoteDestinationName (null, "MyBossOffice") on terminal A.

Action

Events

Call info

User1 opens Provider and adds a provider observer.

ProvInServiceEv

 

User1 invokes CiscoRemoteTerminal. updateRemoteDestination Name (null, "MyBossOffice") on TermA.

 

Caught exception: com.cisco.jtapi. InvalidArgument ExceptionImpl: Invalid Remote Destination Number/Name (updateRemoteDestination Name parameter).

 

TermA.getAllRemoteDestinations() = CiscoRemoteDestinationInfo[2].

 

CiscoRemoteDestinationInfo[0].getRemoteDestinationName() = "RD1-A"

CiscoRemoteDestinationInfo[0].getRemoteDestinationNumber() = "4081001111"

CiscoRemoteDestinationInfo[0].getIsActiveRD() = true

CiscoRemoteDestinationInfo[1].getRemoteDestinationName() = "RD2-A"

CiscoRemoteDestinationInfo[1].getRemoteDestinationNumber() = "4081002222"

CiscoRemoteDestinationInfo[1].getIsActiveRD() = false

Scenario 1-17 (Clear an existing Active RD as a non-Active RD on a 'CTI Remote Device'). Explicit Pre-condition: (RD1-A: "4081001111", true; RD2-A: "4081002222", false; RD3-A: "4081003333", false):

User1 has "CTI Remote Device A" in the control list. User invokes CiscoRemoteTerminal.setActiveRemoteDestination("4081001111", false) on terminal A.

Action

Events

Call info

User1 opens Provider and adds a provider observer.

ProvInServiceEv

 

User1 invokes CiscoRemoteTerminal. setActiveRemoteDestination ("4081001111", false) on TermA.

 

CiscoProvTerminalRemote DestinationChangedEv

 

CiscoProvTerminalRemoteDestinationChangedEv.getRemoteDestinations() = CiscoRemoteDestinationInfo[3].

 

CiscoRemoteDestinationInfo[0].getRemoteDestinationName() = "RD1-A"

CiscoRemoteDestinationInfo[0].getRemoteDestinationNumber() = "4081001111"

CiscoRemoteDestinationInfo[0].getIsActiveRD() = false

CiscoRemoteDestinationInfo[1].getRemoteDestinationName() = "RD2-A"

CiscoRemoteDestinationInfo[1].getRemoteDestinationNumber() = "4081002222"

CiscoRemoteDestinationInfo[1].getIsActiveRD() = false

CiscoRemoteDestinationInfo[2].getRemoteDestinationName() = "RD3-A"

CiscoRemoteDestinationInfo[2].getRemoteDestinationNumber() = "4081003333"

CiscoRemoteDestinationInfo[2].getIsActiveRD() = false

Scenario 1-18 (Remove all RD(s) from a 'CTI Remote Device'). User1 has "CTI Remote Device C" in the control list. User invokes removeAllRemoteDestinations() on terminal C.

Action

Events

Call info5

User1 opens Provider and adds a provider observer.

ProvInServiceEv

 

User1 invokes CiscoRemoteTerminal. removeAllRemoteDestinations() on TermC.

 

Note   

Nothing is removed as there is no RD on this device. JTAPI won't be sending any request to CTI. No CiscoJtapiException will be thrown either.

 

Scenario 1-19 (Remove all 5 RD(s) from a 'CTI Remote Device'). Explicit Pre-condition: (RD1-A: "4081001111", true; RD2-A: "4081002222", false; RD3-A: "4081003333", false; RD4-A: "4081004444", false; RD5-A: "4081005555", false):

User1 has "CTI Remote Device A" in the control list. User invokes removeAllRemoteDestinations() on terminal A.

Note that JTAPI will loop through the terminal/device's existing remote destinations one by one, so the total number of CiscoProvTerminalRemoteDestinationChangedEv sent to an application should be the same number of available remote destinations being removed. And the order and content of each event can vary, depending on how each remote destination is stored in JTAPI's local cache RD list.

Also note currently there is no checking in JTAPI to limit only up to 5 RDs per CTI Remote Device. If application tries to add a new RD to an existing CTI Remote Device that already has 5 RDs, JTAPI will simply send the add request to CTI and let it decide on pass/fail.

Action

Events

Call info

User1 opens Provider and adds a provider observer.

ProvInServiceEv

 

User1 invokes CiscoRemoteTerminal. removeAllRemote

Destinations() on TermA.

 

CiscoProvTerminalRemote DestinationChangedEv

 

CiscoProvTerminalRemoteDestinationChangedEv.getRemoteDestinations() = CiscoRemoteDestinationInfo[4].

 

CiscoRemoteDestinationInfo[0].getRemoteDestinationName() = "RD2-A"

CiscoRemoteDestinationInfo[0].getRemoteDestinationNumber() = "4081002222"

CiscoRemoteDestinationInfo[0].getIsActiveRD() = false

CiscoRemoteDestinationInfo[1].getRemoteDestinationName() = "RD3-A"

CiscoRemoteDestinationInfo[1].getRemoteDestinationNumber() = "4081003333"

CiscoRemoteDestinationInfo[1].getIsActiveRD() = false

CiscoRemoteDestinationInfo[2].getRemoteDestinationName() = "RD4-A"

CiscoRemoteDestinationInfo[2].getRemoteDestinationNumber() = "4081004444"

CiscoRemoteDestinationInfo[2].getIsActiveRD() = false

CiscoRemoteDestinationInfo[3].getRemoteDestinationName() = "RD5-A"

CiscoRemoteDestinationInfo[3].getRemoteDestinationNumber() = "4081005555"

CiscoRemoteDestinationInfo[3].getIsActiveRD() = false

 

 

CiscoProvTerminalRemote DestinationChangedEv

 

CiscoProvTerminalRemoteDestinationChangedEv.getRemoteDestinations() = CiscoRemoteDestinationInfo[3].

 

CiscoRemoteDestinationInfo[0].getRemoteDestinationName() = "RD3-A"

CiscoRemoteDestinationInfo[0].getRemoteDestinationNumber() = "4081003333"

CiscoRemoteDestinationInfo[0].getIsActiveRD() = false

CiscoRemoteDestinationInfo[1].getRemoteDestinationName() = "RD4-A"

CiscoRemoteDestinationInfo[1].getRemoteDestinationNumber() = "4081004444"

CiscoRemoteDestinationInfo[1].getIsActiveRD() = false

CiscoRemoteDestinationInfo[2].getRemoteDestinationName() = "RD5-A"

CiscoRemoteDestinationInfo[2].getRemoteDestinationNumber() = "4081005555"

CiscoRemoteDestinationInfo[2].getIsActiveRD() = false

 

 

CiscoProvTerminalRemote DestinationChangedEv

 

CiscoProvTerminalRemoteDestinationChangedEv.getRemoteDestinations() = CiscoRemoteDestinationInfo[2].

 

CiscoRemoteDestinationInfo[0].getRemoteDestinationName() = "RD4-A"

CiscoRemoteDestinationInfo[0].getRemoteDestinationNumber() = "4081004444"

CiscoRemoteDestinationInfo[0].getIsActiveRD() = false

CiscoRemoteDestinationInfo[1].getRemoteDestinationName() = "RD5-A"

CiscoRemoteDestinationInfo[1].getRemoteDestinationNumber() = "4081005555"

CiscoRemoteDestinationInfo[1].getIsActiveRD() = false

 

 

CiscoProvTerminalRemote DestinationChangedEv

 

CiscoProvTerminalRemoteDestinationChangedEv.getRemoteDestinations() = CiscoRemoteDestinationInfo[1].

 

CiscoRemoteDestinationInfo[0].getRemoteDestinationName() = "RD5-A"

CiscoRemoteDestinationInfo[0].getRemoteDestinationNumber() = "4081005555"

CiscoRemoteDestinationInfo[0].getIsActiveRD() = false

 

CiscoProvTerminalRemote DestinationChangedEv

CiscoProvTerminalRemoteDestinationChangedEv.getRemoteDestinations() = null.

Scenario 1-20 (Update a RD's Name and Number and set it as ActiveRD on a 'CTI Remote Device' at the same time):

User1 has "CTI Remote Device A" in the control list. User invokes updateRemoteDestination ("4081002222", "MyVacationHome", "4081009999", true) on terminal A.

Action

Events

Call info

User1 opens Provider and adds a provider observer.

ProvInServiceEv

 

User1 invokes CiscoRemoteTerminal. updateRemoteDestination ("4081002222", "MyVacationHome", "4081009999", true) on TermA.

 

CiscoProvTerminalRemote DestinationChangedEv

 

CiscoProvTerminalRemoteDestinationChangedEv.getRemoteDestinations() = CiscoRemoteDestinationInfo[2].

 

CiscoRemoteDestinationInfo[0].getRemoteDestinationName() = "MyHome"

CiscoRemoteDestinationInfo[0].getRemoteDestinationNumber() = "4081001111"

CiscoRemoteDestinationInfo[0].getIsActiveRD() = false

CiscoRemoteDestinationInfo[1].getRemoteDestinationName() = "RD2-A"

CiscoRemoteDestinationInfo[1].getRemoteDestinationNumber() = "4081002222"

CiscoRemoteDestinationInfo[1].getIsActiveRD() = false

 

 

CiscoProvTerminalRemote DestinationChangedEv

 

CiscoProvTerminalRemoteDestinationChangedEv.getRemoteDestinations() = CiscoRemoteDestinationInfo[2].

 

CiscoRemoteDestinationInfo[0].getRemoteDestinationName() = "MyHome"

CiscoRemoteDestinationInfo[0].getRemoteDestinationNumber() = "4081001111"

CiscoRemoteDestinationInfo[0].getIsActiveRD() = false

CiscoRemoteDestinationInfo[1].getRemoteDestinationName() = "MyVacationHome"

CiscoRemoteDestinationInfo[1].getRemoteDestinationNumber() = "4081002222"

CiscoRemoteDestinationInfo[1].getIsActiveRD() = false

 

 

CiscoProvTerminalRemote DestinationChangedEv

 

CiscoProvTerminalRemoteDestinationChangedEv.getRemoteDestinations() = CiscoRemoteDestinationInfo[2].

 

CiscoRemoteDestinationInfo[0].getRemoteDestinationName() = "MyHome"

CiscoRemoteDestinationInfo[0].getRemoteDestinationNumber() = "4081001111"

CiscoRemoteDestinationInfo[0].getIsActiveRD() = false

CiscoRemoteDestinationInfo[1].getRemoteDestinationName() = "MyVacationHome"

CiscoRemoteDestinationInfo[1].getRemoteDestinationNumber() = "4081009999"

CiscoRemoteDestinationInfo[1].getIsActiveRD() = true

CTI Remote Device use cases group 2

Use Cases Group 2: CTIRD Incoming/Outgoing/Disconnect/Redirect/Hold/Resume and shared-line call scenarios

Pre-conditions on Use Cases group 2 below with default jtapi.ini settings, unless specified explicitly. Note that the CTI Ports have Auto-Accept enabled:

  • Provider is IN_SERVICE state.
  • Device A (CTI Remote Device - Name: "irvCTIRD1", Line A (DN: 8881000))
  • Remote Destination 1 (Name: "IRVOffice", Number: "919498231202", Active RD: true)
  • Device B (CTI Port - Name: "irvCTIPort1", Line B (DN: 8881000))
  • Device C (CTI Port - Name: "irvCTIPort6", Line C (DN: 8886000))
  • Device D (CTI Port - Name: "irvCTIPort7", Line C (DN: 8887000))
  • Device E (CTI Remote Device - Name: "irvCTIRD2", Line E (DN: 8889000))
  • Remote Destination 1 (Name: "IRVCell1", Number: "916267829523", Active RD: true)
  • Device F (CTI Remote Device - Name: "irvCTIRD3", Line E (DN: 8889001))
  • Remote Destination 1 (Name: "IRVCell2", Number: "916267829526", Active RD: true)

Scenario 2-1 (Incoming call from CTI Port to CTI Remote Device):

C calls E, Application is observing both C and E on addresses and terminals. GC1 is the GCID of the call.

Action

Events

Call info

User1 invokes call.connect(irvCTIPort6, 8886000, 8889000).

 

GC1: CallActiveEvent

GC1: ConnCreatedEvent 8886000

GC1: ConnConnectedEvent 8886000

GC1: CallCtlConnInitiatedEv 8886000

GC1: TermConnCreatedEvent irvCTIPort6

GC1: TermConnActiveEvent irvCTIPort6

GC1: CallCtlTermConnTalkingEv irvCTIPort6

GC1: CallCtlConnDialingEv 8886000

GC1: CallCtlConnEstablishedEv 8886000

GC1: ConnCreatedEvent 8889000

GC1: ConnInprogressEvent 8889000

GC1: CallCtlConnOfferedEv 8889000

GC1: ConnAlertingEvent 8889000

GC1: CallCtlConnAlertingEv 8889000

GC1: TermConnCreatedEvent irvCTIRD2

GC1: TermConnRingingEvent irvCTIRD2

GC1: CallCtlTermConnRingingEv irvCTIRD2

 

CallingAddress  =  8886000,  
CalledAddress  =  8889000,  
CurrentCallingAddress  =  8886000,  
CurrentCalledAddress  =  8889000,  
ModifiedCallingAddress  =  8886000,  
ModifiedCalledAddress  =  8889000,  
No LastRedirectedPartyAddress

irvCTIRD2's Active remote destination of 916267829523 answers the call.

 

GC1: ConnConnectedEvent 8889000

GC1: CallCtlConnEstablishedEv 8889000

GC1: TermConnActiveEvent irvCTIRD2

GC1: CallCtlTermConnTalkingEv irvCTIRD2

 

CallingAddress = 8886000,

CalledAddress = 8889000,

CurrentCallingAddress = 8886000,

CurrentCalledAddress = 8889000,

ModifiedCallingAddress = 8886000,

ModifiedCalledAddress = 8889000,

No LastRedirectedPartyAddress

Scenario 2-2 (Incoming call from CTI Port to non-observed CTI Remote Device):

C calls E, Application is observing C only on address and terminal. No observer on E. GC1 is the GCID of the call.

Action

Events

Call info

User1 invokes call.connect(irvCTIPort6, 8886000, 8889000).

 

GC1: CallActiveEvent

GC1: ConnCreatedEvent 8886000

GC1: ConnConnectedEvent 8886000

GC1: CallCtlConnInitiatedEv 8886000

GC1: TermConnCreatedEvent irvCTIPort6

GC1: TermConnActiveEvent irvCTIPort6

GC1: CallCtlTermConnTalkingEv irvCTIPort6

GC1: CallCtlConnDialingEv 8886000

GC1: CallCtlConnEstablishedEv 8886000

GC1: ConnCreatedEvent 8889000

GC1: ConnInprogressEvent 8889000

GC1: CallCtlConnOfferedEv 8889000

GC1: ConnAlertingEvent 8889000

GC1: CallCtlConnAlertingEv 8889000

 

CallingAddress  =  8886000,  
CalledAddress  =  8889000,  
CurrentCallingAddress  =  8886000,  
CurrentCalledAddress  =  8889000,
ModifiedCallingAddress  =  8886000,  
ModifiedCalledAddress  =  8889000,  
No LastRedirectedPartyAddress
                

irvCTIRD2's Active remote destination of 916267829523 answers the call.

 

GC1: ConnConnectedEvent 8889000

GC1: CallCtlConnEstablishedEv 8889000

 

CallingAddress  =  8886000,  
CalledAddress  =  8889000,  
CurrentCallingAddress  =  8886000,  
CurrentCalledAddress  =  8889000,
ModifiedCallingAddress  =  8886000,  
ModifiedCalledAddress  =  8889000,  
No LastRedirectedPartyAddress

Scenario 2-3 (Incoming call from CTI Port to CTI Remote Device, but no answer on remote destination):

C calls E, Application is observing both C and E on addresses and terminals. GC1 is the GCID of the call.

Action

Events

Call info

User1 invokes call.connect(irvCTIPort6, 8886000, 8889000).

 

GC1: CallActiveEvent

GC1: ConnCreatedEvent 8886000

GC1: ConnConnectedEvent 8886000

GC1: CallCtlConnInitiatedEv 8886000

GC1: TermConnCreatedEvent irvCTIPort6

GC1: TermConnActiveEvent irvCTIPort6

GC1: CallCtlTermConnTalkingEv irvCTIPort6

GC1: CallCtlConnDialingEv 8886000

GC1: CallCtlConnEstablishedEv 8886000

GC1: ConnCreatedEvent 8889000

GC1: ConnInprogressEvent 8889000

GC1: CallCtlConnOfferedEv 8889000

GC1: ConnAlertingEvent 8889000

GC1: CallCtlConnAlertingEv 8889000

GC1: TermConnCreatedEvent irvCTIRD2

GC1: TermConnRingingEvent irvCTIRD2

GC1: CallCtlTermConnRingingEv irvCTIRD2

 

CallingAddress  =  8886000,  
CalledAddress  =  8889000,  
CurrentCallingAddress  =  8886000,  
CurrentCalledAddress  =  8889000,
ModifiedCallingAddress  =  8886000,  
ModifiedCalledAddress  =  8889000,  
No LastRedirectedPartyAddress

irvCTIRD2's Active remote destination of 916267829523 does not answers the call and time out.

 

GC1: TermConnDroppedEv irvCTIRD2

GC1: CallCtlTermConnDroppedEv irvCTIRD2

GC1: ConnDisconnectedEvent 8889000

GC1: CallCtlConnDisconnectedEv 8889000

GC1: TermConnDroppedEv irvCTIPort6

GC1: CallCtlTermConnDroppedEv irvCTIPort6

GC1: ConnDisconnectedEvent 8886000

GC1: CallCtlConnDisconnectedEv 8886000

GC1: CallInvalidEv 8889000

GC1: CallObservationEndedEv

 

CallingAddress  =  8886000,  
CalledAddress  = 8889000,  
CurrentCallingAddress  =  8886000,  
CurrentCalledAddress  =  8889000,
ModifiedCallingAddress  =  8886000,  
ModifiedCalledAddress  =  8889000,  
No LastRedirectedPartyAddress

Scenario 2-4 (Incoming call from CTI Port to CTI Remote Device, and redirect to another CTI Port):

C calls E, and E redirects the call to D, Application is observing all C, D, E on addresses and terminals. GC1 is the GCID of the call.

Action

Events

Call info

User1 invokes call.connect(irvCTIPort6, 8886000, 8889000).

 

GC1: CallActiveEvent

GC1: ConnCreatedEvent 8886000

GC1: ConnConnectedEvent 8886000

GC1: CallCtlConnInitiatedEv 8886000

GC1: TermConnCreatedEvent irvCTIPort6

GC1: TermConnActiveEvent irvCTIPort6

GC1: CallCtlTermConnTalkingEv irvCTIPort6

GC1: CallCtlConnDialingEv 8886000

GC1: CallCtlConnEstablishedEv 8886000

GC1: ConnCreatedEvent 8889000

GC1: ConnInprogressEvent 8889000

GC1: CallCtlConnOfferedEv 8889000

GC1: ConnAlertingEvent 8889000

GC1: CallCtlConnAlertingEv 8889000

GC1: TermConnCreatedEvent irvCTIRD2

GC1: TermConnRingingEvent irvCTIRD2

GC1: CallCtlTermConnRingingEv irvCTIRD2

 

CallingAddress  =  8886000,  
CalledAddress  =  8889000,  
CurrentCallingAddress  =  8886000,  
CurrentCalledAddress  =  8889000,
ModifiedCallingAddress  =  8886000,  
ModifiedCalledAddress  =  8889000,  
No LastRedirectedPartyAddress

irvCTIRD2's Active remote destination of 916267829523 answers the call.

 

GC1: ConnConnectedEvent 8889000

GC1: CallCtlConnEstablishedEv 8889000

GC1: TermConnActiveEvent irvCTIRD2

GC1: CallCtlTermConnTalkingEv irvCTIRD2

 

CallingAddress  =  8886000,  
CalledAddress  =  8889000,  
CurrentCallingAddress  =  8886000,  
CurrentCalledAddress  =  8889000,
ModifiedCallingAddress  =  8886000,  
ModifiedCalledAddress  =  8889000,  
No LastRedirectedPartyAddress

User1 invokes connection on irvCTIRD2.redirect (8887000, REDIRECT_NORMAL, DEFAULT_SEARCH_SPACE, CALLED_ADDRESS_UNCHANGED, REDIRECT, 8887000, null, REDIRECT_WITHOUT_ MODIFIED_CALLING_PARTY, 1)

 

GC1: ConnCreatedEvent 8887000

GC1: ConnInprogressEvent 8887000

GC1: CallCtlConnOfferedEv 8887000

GC1: ConnAlertingEvent 8887000

GC1: CallCtlConnAlertingEv 8887000

GC1: TermConnCreatedEvent irvCTIPort7

GC1: TermConnRingingEvent irvCTIPort7

GC1: CallCtlTermConnRingingEv irvCTIPort7

GC1: TermConnDroppedEv irvCTIRD2

GC1: CallCtlTermConnDroppedEv irvCTIRD2

GC1: ConnDisconnectedEvent 8889000

GC1: CallCtlConnDisconnectedEv 8889000

 

CurrentCalledAddress: 8887000 ::
CurrentCallingAddress: 8886000 ::
LastRedirectedPartyAddress: 8889000

irvCTIPort7 answers the call.

GC1: ConnConnectedEvent 8887000

GC1: CallCtlConnEstablishedEv 8887000

GC1: TermConnActiveEvent irvCTIPort7

GC1: CallCtlTermConnTalkingEv irvCTIPort7

CurrentCalledAddress: 8887000 ::
CurrentCallingAddress: 8886000 ::
LastRedirectedPartyAddress: 8889000

Scenario 2-5 (Incoming call from CTI Port to CTI Remote Device, and redirect to another CTI Remote Device):

C calls E, and E redirects the call to F, and C redirect the call to E. Application is observing all C, E, F on addresses and terminals. GC1 is the GCID of the call.

Action

Events

Call info

User1 invokes call.connect(irvCTIPort6, 8886000, 8889000).

 

GC1: CallActiveEvent

GC1: ConnCreatedEvent 8886000

GC1: ConnConnectedEvent 8886000

GC1: CallCtlConnInitiatedEv 8886000

GC1: TermConnCreatedEvent irvCTIPort6

GC1: TermConnActiveEvent irvCTIPort6

GC1: CallCtlTermConnTalkingEv irvCTIPort6

GC1: CallCtlConnDialingEv 8886000

GC1: CallCtlConnEstablishedEv 8886000

GC1: ConnCreatedEvent 8889000

GC1: ConnInprogressEvent 8889000

GC1: CallCtlConnOfferedEv 8889000

GC1: ConnAlertingEvent 8889000

GC1: CallCtlConnAlertingEv 8889000

GC1: TermConnCreatedEvent irvCTIRD2

GC1: TermConnRingingEvent irvCTIRD2

GC1: CallCtlTermConnRingingEv irvCTIRD2

 

CallingAddress  =  8886000,  
CalledAddress  =  8889000,  
CurrentCallingAddress  =  8886000,  
CurrentCalledAddress  =  8889000,
ModifiedCallingAddress  =  8886000,  
ModifiedCalledAddress  =  8889000,  
No LastRedirectedPartyAddress

irvCTIRD2's Active remote destination of 916267829523 answers the call.

 

GC1: ConnConnectedEvent 8889000

GC1: CallCtlConnEstablishedEv 8889000

GC1: TermConnActiveEvent irvCTIRD2

GC1: CallCtlTermConnTalkingEv irvCTIRD2

 

CurrentCalledAddress: 8889000 ::
CurrentCallingAddress: 8886000 ::
No LastRedirectedPartyAddress

User1 invokes connection on irvCTIRD2.redirect(8889001, REDIRECT_NORMAL, DEFAULT_SEARCH_SPACE, CALLED_ADDRESS_UNCHANGED, REDIRECT, 8889001, null, REDIRECT_WITHOUT_MODIFIED_ CALLING_PARTY, 1)

 

GC1: ConnCreatedEvent 8889001

GC1: ConnInprogressEvent 8889001

GC1: CallCtlConnOfferedEv 8889001

GC1: ConnAlertingEvent 8889001

GC1: CallCtlConnAlertingEv 8889001

GC1: TermConnCreatedEvent irvCTIRD3

GC1: TermConnRingingEvent irvCTIRD3

GC1: CallCtlTermConnRingingEv irvCTIRD3

GC1: TermConnDroppedEv irvCTIRD2

GC1: CallCtlTermConnDroppedEv irvCTIRD2

GC1: ConnDisconnectedEvent 8889000

GC1: CallCtlConnDisconnectedEv 8889000

 

CurrentCalledAddress: 8889001 ::
CurrentCallingAddress: 8886000 ::
LastRedirectedPartyAddress: 8889000

irvCTIRD3's Active remote destination of 916267829526 answers the call.

GC1: ConnConnectedEvent 8889001

GC1: CallCtlConnEstablishedEv 8889001

GC1: TermConnActiveEvent irvCTIRD3

GC1: CallCtlTermConnTalkingEv irvCTIRD3

CurrentCalledAddress: 8889001 ::
CurrentCallingAddress: 8886000 ::
LastRedirectedPartyAddress: 8889000

User1 invokes connection on irvCTIPort6.redirect(8889000, REDIRECT_NORMAL, DEFAULT_SEARCH_SPACE, CALLED_ADDRESS_UNCHANGED, REDIRECT, 8889000, null, REDIRECT_WITHOUT_MODIFIED_ CALLING_PARTY, 1)

GC1: ConnCreatedEvent 8889000

GC1: ConnInprogressEvent 8889000

GC1: CallCtlConnOfferedEv 8889000

GC1: ConnAlertingEvent 8889000

GC1: CallCtlConnAlertingEv 8889000

GC1: TermConnCreatedEvent irvCTIRD2

GC1: TermConnRingingEvent irvCTIRD2

GC1: CallCtlTermConnRingingEv irvCTIRD2

GC1: TermConnDroppedEv irvCTIPort6

GC1: CallCtlTermConnDroppedEv irvCTIPort6

GC1: ConnDisconnectedEvent 8886000

GC1: CallCtlConnDisconnectedEv 8886000

CurrentCalledAddress: 8889000 ::
CurrentCallingAddress: 8889001 ::
LastRedirectedPartyAddress: 8886000

irvCTIRD2's Active remote destination of 916267829523 answers the call.

GC1: ConnConnectedEvent 8889000

GC1: CallCtlConnEstablishedEv 8889000

GC1: TermConnActiveEvent irvCTIRD2

GC1: CallCtlTermConnTalkingEv irvCTIRD2

GC1: TermConnDroppedEv irvCTIRD3

GC1: CallCtlTermConnDroppedEv irvCTIRD3

GC1: ConnDisconnectedEvent 8889001

GC1: CallCtlConnDisconnectedEv 8889001

GC1: TermConnDroppedEv irvCTIRD2

GC1: CallCtlTermConnDroppedEv irvCTIRD2

GC1: ConnDisconnectedEvent 8889000

GC1: CallCtlConnDisconnectedEv 8889000

GC1: CallInvalidEvent

GC1: CallObservationEndedEv

CurrentCalledAddress: 8889000 ::
CurrentCallingAddress: 8889001 ::
LastRedirectedPartyAddress: 8886000

Scenario 2-6 (Incoming call from CTI Port to CTI Remote Device with a shared-line of another CTI Port):

C calls A (with a shared line with B), Application is observing A, B, and C on addresses and terminals. GC1 is the GCID of the call.

Action

Events

Call info

User1 invokes call.connect(irvCTIPort6, 8886000, 8881000).

GC1: CallActiveEvent

GC1: ConnCreatedEvent 8886000

GC1: ConnConnectedEvent 8886000

GC1: CallCtlConnInitiatedEv 8886000

GC1: TermConnCreatedEvent irvCTIPort6

GC1: TermConnActiveEvent irvCTIPort6

GC1: CallCtlTermConnTalkingEv irvCTIPort6

GC1: CallCtlConnDialingEv 8886000

GC1: CallCtlConnEstablishedEv 8886000

GC1: ConnCreatedEvent 8881000

GC1: ConnInprogressEvent 8881000

GC1: CallCtlConnOfferedEv 8881000

GC1: ConnAlertingEvent 8881000

GC1: CallCtlConnAlertingEv 8881000

GC1: TermConnCreatedEvent irvCTIPort1

GC1: TermConnRingingEvent irvCTIPort1

GC1: CallCtlTermConnRingingEv irvCTIPort1

GC1: TermConnCreatedEvent irvCTIRD1

GC1: TermConnRingingEvent irvCTIRD1

GC1: CallCtlTermConnRingingEv irvCTIRD1

 

CallingAddress  =  8886000,  
CalledAddress  =  8881000,  
CurrentCallingAddress  =  8886000,  
CurrentCalledAddress  =  8881000,
ModifiedCallingAddress  =  8886000,  
ModifiedCalledAddress  =  8881000,  
No LastRedirectedPartyAddress

irvCTIRD1's Active remote destination of 919498231202 answers the call.

GC1: ConnConnectedEvent 8881000

GC1: CallCtlConnEstablishedEv 8881000

GC1: TermConnActiveEvent irvCTIRD1

GC1: CallCtlTermConnTalkingEv irvCTIRD1

GC1: TermConnPassiveEvent irvCTIPort1

GC1: CallCtlTermConnBridgedEv irvCTIPort1

CurrentCalledAddress: 8881000 ::
CurrentCallingAddress: 8886000 ::
No LastRedirectedPartyAddress

Disconnect the call from irvCTIPort6.

GC1: TermConnDroppedEv irvCTIPort6

GC1: CallCtlTermConnDroppedEv irvCTIPort6

GC1: ConnDisconnectedEvent 8886000

GC1: CallCtlConnDisconnectedEv8886000

GC1: TermConnDroppedEv irvCTIRD1

GC1: CallCtlTermConnDroppedEv irvCTIRD1

GC1: TermConnDroppedEv irvCTIPort1

GC1: CallCtlTermConnDroppedEv irvCTIPort1

GC1: ConnDisconnectedEvent 8881000

GC1: CallCtlConnDisconnectedEv 8881000

GC1: CallInvalidEvent

GC1: CallObservationEndedEv

CurrentCalledAddress: 8881000 ::
CurrentCallingAddress: 8886000 ::
No LastRedirectedPartyAddress

Scenario 2-7 (Incoming call from CTI Port to CTI Port with a shared-line of a CTI Remote Device):

C calls B (with a shared line of A), Application is observing A, B, and C on addresses and terminals. GC1 is the GCID of the call.

Action

Events

Call info

User1 invokes call.connect(irvCTIPort6, 8886000, 8881000).

 

GC1: CallActiveEvent

GC1: ConnCreatedEvent 8886000

GC1: ConnConnectedEvent 8886000

GC1: CallCtlConnInitiatedEv 8886000

GC1: TermConnCreatedEvent irvCTIPort6

GC1: TermConnActiveEvent irvCTIPort6

GC1: CallCtlTermConnTalkingEv irvCTIPort6

GC1: CallCtlConnDialingEv 8886000

GC1: CallCtlConnEstablishedEv 8886000

GC1: ConnCreatedEvent 8881000

GC1: ConnInprogressEvent 8881000

GC1: CallCtlConnOfferedEv 8881000

GC1: ConnAlertingEvent 8881000

GC1: CallCtlConnAlertingEv 8881000

GC1: TermConnCreatedEvent irvCTIPort1

GC1: TermConnRingingEvent irvCTIPort1

GC1: CallCtlTermConnRingingEv irvCTIPort1

GC1: TermConnCreatedEvent irvCTIRD1

GC1: TermConnRingingEvent irvCTIRD1

GC1: CallCtlTermConnRingingEv irvCTIRD1

 

CallingAddress  =  8886000,  
CalledAddress  =  8881000,  
CurrentCallingAddress  =  8886000,  
CurrentCalledAddress  =  8881000,
ModifiedCallingAddress  =  8886000,  
ModifiedCalledAddress  =  8881000,  
No LastRedirectedPartyAddress

irvCTIPort1 answers the call.

GC1: TermConnDroppedEv irvCTIRD1

GC1: CallCtlTermConnDroppedEv irvCTIRD1

GC1: ConnConnectedEvent 8881000

GC1: CallCtlConnEstablishedEv 8881000

GC1: TermConnActiveEvent irvCTIPort1

GC1: CallCtlTermConnTalkingEv irvCTIPort1

CurrentCalledAddress: 8881000 ::
CurrentCallingAddress: 8886000 ::
No LastRedirectedPartyAddress

Disconnect the call from irvCTIPort6.

GC1: TermConnDroppedEv irvCTIPort6

GC1: CallCtlTermConnDroppedEv irvCTIPort6

GC1: ConnDisconnectedEvent 8886000

GC1: CallCtlConnDisconnectedEv8886000

GC1: TermConnDroppedEv irvCTIPort1

GC1: CallCtlTermConnDroppedEv irvCTIPort1

GC1: ConnDisconnectedEvent 8881000

GC1: CallCtlConnDisconnectedEv 8881000

GC1: CallInvalidEvent

GC1: CallObservationEndedEv

CurrentCalledAddress: 8881000 ::
CurrentCallingAddress: 8886000 ::
No LastRedirectedPartyAddress

Scenario 2-8 (Outgoing call from CTI Remote Device to CTI Port):

E calls D, Application is observing both D and E on addresses and terminals. GC1 is the GCID of the call.

Action

Events

Call info

User1 invokes call.connect(irvCTIRD2, 8889000, 8887000).

 

GC1: CallActiveEvent

GC1: ConnCreatedEvent 8889000

GC1: ConnInprogressEvent 8889000

GC1: CallCtlConnOfferedEv 8889000

 

CallingAddress  =  Unknown,
CalledAddress  =  8889000,
CurrentCallingAddress  =  Unknown,
CurrentCalledAddress  =  8889000,
ModifiedCallingAddress  =  Unknown,
ModifiedCalledAddress  =  8889000,
No LastRedirectedPartyAddress

irvCTIRD2's Active remote destination of 916267829523 answers the call.

 

GC1: ConnConnectedEvent 8889000

GC1: CallCtlConnEstablishedEv 8889000

GC1: TermConnCreatedEvent irvCTIRD2

GC1: TermConnActiveEvent irvCTIRD2

GC1: CallCtlTermConnTalkingEv irvCTIRD2

 

CallingAddress  =  Unknown,  
CalledAddress  =  8889000,  
CurrentCallingAddress  =  Unknown,  
CurrentCalledAddress  =  8889000,
ModifiedCallingAddress  =  Unknown,  
ModifiedCalledAddress  =  8889000,  
No LastRedirectedPartyAddress

irvCTIPort7 rings and answers the call.

GC1: ConnCreatedEvent 8887000

GC1: ConnInprogressEvent 8887000

GC1: CallCtlConnOfferedEv 8887000

GC1: ConnAlertingEvent 8887000

GC1: CallCtlConnAlertingEv 8887000

GC1: TermConnCreatedEvent irvCTIPort7

GC1: TermConnRingingEvent irvCTIPort7

GC1: CallCtlTermConnRingingEv irvCTIPort7

GC1: ConnConnectedEvent 8887000

GC1: CallCtlConnEstablishedEv 8887000

GC1: TermConnActiveEvent irvCTIPort7

GC1: CallCtlTermConnTalkingEv irvCTIPort7

CallingAddress  =  Unknown,  
CalledAddress  =  8889000,  
CurrentCallingAddress  =  8889000,  
CurrentCalledAddress  =  8887000,
ModifiedCallingAddress  =  8889000,  
ModifiedCalledAddress  =  8887000,  
No LastRedirectedPartyAddress

Disconnect the call from 8889000 connection.

GC1: TermConnDroppedEv irvCTIRD2

GC1: CallCtlTermConnDroppedEv irvCTIRD2

GC1: ConnDisconnectedEvent 8889000

GC1: CallCtlConnDisconnectedEv 8889000

GC1: TermConnDroppedEv irvCTIPort7

GC1: CallCtlTermConnDroppedEv irvCTIPort7

GC1: ConnDisconnectedEvent 8887000

GC1: CallCtlConnDisconnectedEv 8887000

GC1: CallInvalidEvent

GC1: CallObservationEndedEv

CurrentCalledAddress: 8887000 ::
CurrentCallingAddress: 8889000 ::
No LastRedirectedPartyAddress

Scenario 2-9 (Outgoing call from CTI Remote Device (with a shared line of CTI Port) to another CTI Port):

A (with a shared line of B) calls D, Application is observing both A, B, and D on addresses and terminals. GC1 is the GCID of the call.

Action

Events

Call info

User1 invokes call.connect(irvCTIRD1, 8881000, 8887000).

 

GC1: CallActiveEvent

GC1: ConnCreatedEvent 8881000

GC1: ConnInprogressEvent 8881000

GC1: CallCtlConnOfferedEv 8881000

GC1: ConnAlertingEvent 8881000

GC1: CallCtlConnAlertingEv 8881000

 

CallingAddress  =  Unknown,  
CalledAddress  =  8881000,  
CurrentCallingAddress  =  Unknown,  
CurrentCalledAddress  =  8881000,
ModifiedCallingAddress  =  Unknown,  
ModifiedCalledAddress  =  8881000,  
No LastRedirectedPartyAddress

 

irvCTIPort7 rings

GC1: TermConnCreatedEvent irvCTIPort1

GC1: TermConnRingingEvent irvCTIPort1

GC1: CallCtlTermConnRingingEv irvCTIPort1

 

irvCTIRD1's Active remote destination of 919498231202 answers the call.

 

GC1: ConnConnectedEvent 8881000

GC1: CallCtlConnEstablishedEv 8881000

GC1: TermConnCreatedEvent irvCTIRD1

GC1: TermConnActiveEvent irvCTIRD1

GC1: CallCtlTermConnTalkingEv irvCTIRD1

 

CallingAddress  =  Unknown,  
CalledAddress  =  8881000,  
CurrentCallingAddress  =  Unknown,  
CurrentCalledAddress  =  8881000,
ModifiedCallingAddress  =  Unknown,  
ModifiedCalledAddress  =  8881000,  
No LastRedirectedPartyAddress

 

irvCTIPort7 rings

GC1: TermConnPassiveEvent irvCTIPort1

GC1: CallCtlTermConnBridgedEv irvCTIPort1

CallingAddress  =  Unknown,  
CalledAddress  =  8887000,  
CurrentCallingAddress  =  8881000,  
CurrentCalledAddress  =  8887000,
ModifiedCallingAddress  =  8881000,  
ModifiedCalledAddress  =  8887000,  
No LastRedirectedPartyAddress

irvCTIPort7 answers the call.

GC1: ConnCreatedEvent 8887000

GC1: ConnInprogressEvent 8887000

GC1: CallCtlConnOfferedEv 8887000

GC1: ConnAlertingEvent 8887000

GC1: CallCtlConnAlertingEv 8887000

GC1: TermConnCreatedEvent irvCTIPort7

GC1: TermConnRingingEvent irvCTIPort7

GC1: CallCtlTermConnRingingEv irvCTIPort7

GC1: ConnConnectedEvent 8887000

GC1: CallCtlConnEstablishedEv 8887000

GC1: TermConnActiveEvent irvCTIPort7

GC1: CallCtlTermConnTalkingEv irvCTIPort7

CurrentCalledAddress: 8887000 ::
CurrentCallingAddress: 8881000::
No LastRedirectedPartyAddress

Disconnect the call from 8881000 connection.

GC1: TermConnDroppedEv irvCTIRD1

GC1: CallCtlTermConnDroppedEv irvCTIRD1

GC1: TermConnDroppedEv irvCTIPort1

GC1: CallCtlTermConnDroppedEv irvCTIPort1

GC1: ConnDisconnectedEvent 8881000

GC1: CallCtlConnDisconnectedEv 8881000

GC1: TermConnDroppedEv irvCTIPort7

GC1: CallCtlTermConnDroppedEv irvCTIPort7

GC1: ConnDisconnectedEvent 8887000

GC1: CallCtlConnDisconnectedEv 8887000

GC1: CallInvalidEvent

GC1: CallObservationEndedEv

CurrentCalledAddress: 8887000 ::
CurrentCallingAddress: 8881000::
No LastRedirectedPartyAddress

Scenario 2-10 (Outgoing call from CTI Remote Device to CTI Port, but no answer on active remote destination):

E calls D, Application is observing both E and D on addresses and terminals. GC1 is the GCID of the call.

Action

Events

Call info

User1 invokes call.connect(irvCTIRD2, 8889000, 8887000).

 

GC1: CallActiveEvent

GC1: ConnCreatedEvent 8889000

GC1: ConnInprogressEvent 8889000

GC1: CallCtlConnOfferedEv 8889000

 

CallingAddress  =  Unknown,  
CalledAddress  =  8889000,  
CurrentCallingAddress  =  Unknown,  
CurrentCalledAddress  =  8889000,
ModifiedCallingAddress  =  Unknown,  
ModifiedCalledAddress  =  8889000,  
No LastRedirectedPartyAddress

irvCTIRD2's Active remote destination of 916267829523 does not answer the call and time out.

 

GC1: ConnDisconnectedEvent 8889000

GC1: CallCtlConnDisconnectedEv 8889000

GC1: CallInvalidEvent

GC1: CallObservationEndedEv

 

CallingAddress  =  Unknown,  
CalledAddress  =  8889000,  
CurrentCallingAddress  =  Unknown,  
CurrentCalledAddress  =  8889000,
ModifiedCallingAddress  =  Unknown,  
ModifiedCalledAddress  =  8889000,  
No LastRedirectedPartyAddress

Scenario 2-11 (Outgoing call from CTI Remote Device to CTI Port, but no answer on CTI Port):

E calls D, Application is observing both D and E on addresses and terminals. GC1 is the GCID of the call.

Action

Events

Call info

User1 invokes call.connect(irvCTIRD2, 8889000, 8887000).

 

GC1: CallActiveEvent

GC1: ConnCreatedEvent 8889000

GC1: ConnInprogressEvent 8889000

GC1: CallCtlConnOfferedEv 8889000

 

CallingAddress  =  Unknown,
CalledAddress  =  8889000,
CurrentCallingAddress  =  Unknown,
CurrentCalledAddress  =  8889000,
ModifiedCallingAddress  =  Unknown,
ModifiedCalledAddress  =  8889000,
No LastRedirectedPartyAddress

irvCTIRD2's Active remote destination of 916267829523 answers the call.

 

GC1: ConnConnectedEvent 8889000

GC1: CallCtlConnEstablishedEv 8889000

GC1: TermConnCreatedEvent irvCTIRD2

GC1: TermConnActiveEvent irvCTIRD2

GC1: CallCtlTermConnTalkingEv irvCTIRD2

 

CallingAddress  =  Unknown,
CalledAddress  =  8889000,
CurrentCallingAddress  =  Unknown,
CurrentCalledAddress  =  8889000,
ModifiedCallingAddress  =  Unknown,
ModifiedCalledAddress  =  8889000,
No LastRedirectedPartyAddress

irvCTIPort7 rings.

GC1: ConnCreatedEvent 8887000

GC1: ConnInprogressEvent 8887000

GC1: CallCtlConnOfferedEv 8887000

GC1: ConnAlertingEvent 8887000

GC1: CallCtlConnAlertingEv 8887000

GC1: TermConnCreatedEvent irvCTIPort7

GC1: TermConnRingingEvent irvCTIPort7

GC1: CallCtlTermConnRingingEv irvCTIPort7

CallingAddress  =  Unknown,
CalledAddress  =  8889000,
CurrentCallingAddress  =  8889000,
CurrentCalledAddress  =  8887000,
ModifiedCallingAddress  =  8889000,
ModifiedCalledAddress  =  8887000,
No LastRedirectedPartyAddress

irvCTIPort7 does not answer the call, time out.

GC1: TermConnDroppedEv irvCTIPort7

GC1: CallCtlTermConnDroppedEv irvCTIPort7

GC1: ConnDisconnectedEvent 8887000

GC1: CallCtlConnDisconnectedEv 8887000

GC1: ConnFailedEvent 8889000

GC1: CallCtlConnFailedEv 8889000

GC1: TermConnDroppedEv irvCTIRD2

GC1: CallCtlTermConnDroppedEv irvCTIRD2

GC1: ConnDisconnectedEvent 8889000

GC1: CallCtlConnDisconnectedEv 8889000

GC1: CallInvalidEvent

GC1: CallObservationEndedEv

CurrentCalledAddress: 8887000 ::
CurrentCallingAddress: 8889000 ::
No LastRedirectedPartyAddress

Scenario 2-12 (Outgoing call from non-observed CTI Remote Device to CTI Port):

E calls D, Application is observing only on D on addresses and terminals. GC1 is the GCID of the call.

Action

Events

Call info

From another provider, User1 invokes call.connect(irvCTIRD2, 8889000, 8887000).

 

GC1: CallActiveEvent

GC1: ConnCreatedEvent 8887000

GC1: ConnInprogressEvent 8887000

GC1: CallCtlConnOfferedEv 8887000

 

CurrentCalledAddress: 8887000 ::
CurrentCallingAddress: Unknown ::
No LastRedirectedPartyAddress

irvCTIRD2's Active remote destination of 916267829523 answers the call.

 

GC1: ConnCreatedEvent 8889000

GC1: ConnConnectedEvent 8889000

GC1: CallCtlConnEstablishedEv 8889000

GC1: ConnAlertingEvent 8887000

GC1: CallCtlConnAlertingEv 8887000

GC1: TermConnCreatedEvent irvCTIPort7

GC1: TermConnRingingEvent irvCTIPort7

GC1: CallCtlTermConnRingingEv irvCTIPort7

 

CurrentCalledAddress: 8887000 ::
CurrentCallingAddress: 8889000 ::
No LastRedirectedPartyAddress

irvCTIPort7 answers the call.

 

GC1: ConnConnectedEvent 8887000

GC1: CallCtlConnEstablishedEv 8887000

GC1: TermConnActiveEvent irvCTIPort7

GC1: CallCtlTermConnTalkingEv irvCTIPort7

 

CurrentCalledAddress: 8887000 ::
CurrentCallingAddress: 8889000 ::
LastRedirectedPartyAddress: 8887000

Scenario 2-13 (Outgoing call from CTI Remote Device to non-observed CTI Port):

E calls D, Application is observing only on E on addresses and terminals. GC1 is the GCID of the call.

Action

Events

Call info

From another provider, User1 invokes call.connect(irvCTIRD2, 8889000, 8887000).

 

GC1: CallActiveEvent

GC1: ConnCreatedEvent 8889000

GC1: ConnInprogressEvent 8889000

GC1: CallCtlConnOfferedEv 8889000

 

CurrentCalledAddress: 8889000 ::
CurrentCallingAddress: Unknown ::
No LastRedirectedPartyAddress

irvCTIRD2's Active remote destination of 916267829523 answers the call.

 

GC1: ConnConnectedEvent 8889000

GC1: CallCtlConnEstablishedEv 8889000

GC1: TermConnCreatedEvent irvCTIRD2

GC1: TermConnActiveEvent irvCTIRD2

GC1: CallCtlTermConnTalkingEv irvCTIRD2

 

CurrentCalledAddress: 8889000 ::
CurrentCallingAddress: Unknown::
No LastRedirectedPartyAddress

irvCTIPort7 rings and answers the call from another provider.

GC1: ConnCreatedEvent 8887000

GC1: ConnInprogressEvent 8887000

GC1: CallCtlConnOfferedEv 8887000

GC1: ConnAlertingEvent 8887000

GC1: CallCtlConnAlertingEv 8887000

GC1: ConnConnectedEvent 8887000

GC1: CallCtlConnEstablishedEv 8887000

CurrentCalledAddress: 8887000 ::
CurrentCallingAddress: 8889000 ::
LastRedirectedPartyAddress: 8887000

Scenario 2-14 (Outgoing call from CTI Remote Device to another CTI Remote Device):

E calls F, Application is observing both E and F on addresses and terminals. GC1 is the GCID of the call.

Action

Events

Call info

User1 invokes call.connect(irvCTIRD2, 8889000, 8889001).

 

GC1: CallActiveEvent

GC1: ConnCreatedEvent 8889000

GC1: ConnInprogressEvent 8889000

GC1: CallCtlConnOfferedEv 8889000

 

CallingAddress  =  Unknown,  
CalledAddress  =  8889000,  
CurrentCallingAddress  =  Unknown,  
CurrentCalledAddress  =  8889000,
ModifiedCallingAddress  =  Unknown,  
ModifiedCalledAddress  =  8889000,  
No LastRedirectedPartyAddress

irvCTIRD2's Active remote destination of 916267829523 answers the call.

 

GC1: ConnConnectedEvent 8889000

GC1: CallCtlConnEstablishedEv 8889000

GC1: TermConnCreatedEvent irvCTIRD2

GC1: TermConnActiveEvent irvCTIRD2

GC1: CallCtlTermConnTalkingEv irvCTIRD2

 

CallingAddress  =  Unknown,  
CalledAddress  =  8889000,  
CurrentCallingAddress  =  Unknown,  
CurrentCalledAddress  =  8889000,
ModifiedCallingAddress  =  Unknown,  
ModifiedCalledAddress  =  8889000,  
No LastRedirectedPartyAddress

irvCTIRD3's Active remote destination of 916267829526 answers the call.

GC1: ConnCreatedEvent 8889001

GC1: ConnInprogressEvent 8889001

GC1: CallCtlConnOfferedEv 8889001

GC1: ConnAlertingEvent 8889001

GC1: CallCtlConnAlertingEv 8889001

GC1: TermConnCreatedEvent irvCTIRD3

GC1: TermConnRingingEvent irvCTIRD3

GC1: CallCtlTermConnRingingEv irvCTIRD3

GC1: ConnConnectedEvent 8889001

GC1: CallCtlConnEstablishedEv 8889001

GC1: TermConnActiveEvent irvCTIRD3

GC1: CallCtlTermConnTalkingEv irvCTIRD3

CallingAddress  =  Unknown,  
CalledAddress  =  8889000,  
CurrentCallingAddress  =  Unknown,  
CurrentCalledAddress  =  8889000,
ModifiedCallingAddress  =  Unknown,  
ModifiedCalledAddress  =  8889000,  
No LastRedirectedPartyAddress

Disconnect the call from 8889000 connection.

GC1: TermConnDroppedEv irvCTIRD2

GC1: CallCtlTermConnDroppedEv irvCTIRD2

GC1: ConnDisconnectedEvent 8889000

GC1: CallCtlConnDisconnectedEv 8889000

GC1: TermConnDroppedEv irvCTIRD3

GC1: CallCtlTermConnDroppedEv irvCTIRD3

GC1: ConnDisconnectedEvent 8889001

GC1: CallCtlConnDisconnectedEv 8889001

GC1: CallInvalidEvent

GC1: CallObservationEndedEv

CallingAddress  =  Unknown,  
CalledAddress  =  8889000,  
CurrentCallingAddress  =  Unknown,  
CurrentCalledAddress  =  8889000,
ModifiedCallingAddress  =  Unknown,  
ModifiedCalledAddress  =  8889000,  
No LastRedirectedPartyAddress

Scenario 2-15 (Outgoing call from CTI Remote Device to another CTI Remote Device, then redirect again to a third CTI Remote Device with a shared-line.):

E calls F, then F redirect to A (with a shared-line with B), Application is observing all A, B, E and F on addresses and terminals. GC1 is the GCID of the call.

Action

Events

Call info

User1 invokes call.connect(irvCTIRD2, 8889000, 8889001).

 

GC1: CallActiveEvent

GC1: ConnCreatedEvent 8889000

GC1: ConnInprogressEvent 8889000

GC1: CallCtlConnOfferedEv 8889000

 

CurrentCalledAddress: 8889000 ::
CurrentCallingAddress: Unknown::
No LastRedirectedPartyAddress

irvCTIRD2's Active remote destination of 916267829523 answers the call.

 

GC1: ConnConnectedEvent 8889000

GC1: CallCtlConnEstablishedEv 8889000

GC1: TermConnCreatedEvent irvCTIRD2

GC1: TermConnActiveEvent irvCTIRD2

GC1: CallCtlTermConnTalkingEv irvCTIRD2

 

CurrentCalledAddress: 8889000 ::
CurrentCallingAddress: Unknown::
No LastRedirectedPartyAddress

irvCTIRD3's Active remote destination of 916267829526 answers the call.

GC1: ConnCreatedEvent 8889001

GC1: ConnInprogressEvent 8889001

GC1: CallCtlConnOfferedEv 8889001

GC1: ConnAlertingEvent 8889001

GC1: CallCtlConnAlertingEv 8889001

GC1: TermConnCreatedEvent irvCTIRD3

GC1: TermConnRingingEvent irvCTIRD3

GC1: CallCtlTermConnRingingEv irvCTIRD3

GC1: ConnConnectedEvent 8889001

GC1: CallCtlConnEstablishedEv 8889001

GC1: TermConnActiveEvent irvCTIRD3

GC1: CallCtlTermConnTalkingEv irvCTIRD3

CurrentCalledAddress: 8889001 ::
CurrentCallingAddress: 8889000 ::
LastRedirectedPartyAddress: 8889001

User invokes connection on irvCTIRD3.redirect(8881000, REDIRECT_NORMAL, DEFAULT_SEARCH_SPACE, CALLED_ADDRESS_UNCHANGED, REDIRECT, 8881000, null, REDIRECT_WITHOUT_MODIFIED_ CALLING_PARTY, 1).

Both irvCTIRD1 and irvCTIPort1 are ringing.

GC1: ConnCreatedEvent 8881000

GC1: ConnInprogressEvent 8881000

GC1: CallCtlConnOfferedEv 8881000

GC1: ConnAlertingEvent 8881000

GC1: CallCtlConnAlertingEv 8881000

GC1: TermConnCreatedEvent irvCTIPort1

GC1: TermConnRingingEvent irvCTIPort1

GC1: CallCtlTermConnRingingEv irvCTIPort1

GC1: TermConnDroppedEv irvCTIRD3

GC1: CallCtlTermConnDroppedEv irvCTIRD3

GC1: ConnDisconnectedEvent 8889001

GC1: CallCtlConnDisconnectedEv 8889001

GC1: TermConnCreatedEvent irvCTIRD1

GC1: TermConnRingingEvent irvCTIRD1

GC1: CallCtlTermConnRingingEv irvCTIRD1

CurrentCalledAddress: 8881000 ::
CurrentCallingAddress: 8889000 ::
LastRedirectedPartyAddress: 8889001

irvCTIRD1's Active remote destination of 919498231202 answers the call. Terminal connection of irvCTIRD1 goes to 'talking' and irvCTIPort1 goes to 'bridged'.

GC1: ConnConnectedEvent 8881000

GC1: CallCtlConnEstablishedEv 8881000

GC1: TermConnActiveEvent irvCTIRD1

GC1: CallCtlTermConnTalkingEv irvCTIRD1

GC1: TermConnPassiveEvent irvCTIPort1

GC1: CallCtlTermConnBridgedEv irvCTIPort1

CurrentCalledAddress: 8881000 ::
CurrentCallingAddress: 8889000 ::
LastRedirectedPartyAddress: 8889001

Disconnect the call from 8889000 connection.

GC1: TermConnDroppedEv irvCTIRD2

GC1: CallCtlTermConnDroppedEv irvCTIRD2

GC1: ConnDisconnectedEvent 8889000

GC1: CallCtlConnDisconnectedEv 8889000

GC1: TermConnDroppedEv irvCTIRD1

GC1: CallCtlTermConnDroppedEv irvCTIRD1

GC1: TermConnDroppedEv irvCTIPort1

GC1: CallCtlTermConnDroppedEv irvCTIPort1

GC1: ConnDisconnectedEvent 8881000

GC1: CallCtlConnDisconnectedEv 8881000

GC1: CallInvalidEvent

GC1: CallObservationEndedEv

CurrentCalledAddress: 8881000 ::
CurrentCallingAddress: 8889000 ::
LastRedirectedPartyAddress: 8889001

Scenario 2-16 (Disconnect an incoming call on CTI Remote Device after answer while talking):

C calls E, Application is observing both C and E on addresses and terminals. GC1 is the GCID of the call.

Action

Events

Call info

User1 invokes call.connect(irvCTIPort6, 8886000, 8889000).

 

GC1: CallActiveEvent

GC1: ConnCreatedEvent 8886000

GC1: ConnConnectedEvent 8886000

GC1: CallCtlConnInitiatedEv 8886000

GC1: TermConnCreatedEvent irvCTIPort6

GC1: TermConnActiveEvent irvCTIPort6

GC1: CallCtlTermConnTalkingEv irvCTIPort6

GC1: CallCtlConnDialingEv 8886000

GC1: CallCtlConnEstablishedEv 8886000

GC1: ConnCreatedEvent 8889000

GC1: ConnInprogressEvent 8889000

GC1: CallCtlConnOfferedEv 8889000

GC1: ConnAlertingEvent 8889000

GC1: CallCtlConnAlertingEv 8889000

GC1: TermConnCreatedEvent irvCTIRD2

GC1: TermConnRingingEvent irvCTIRD2

GC1: CallCtlTermConnRingingEv irvCTIRD2

 

CurrentCalledAddress: 8889000 ::
CurrentCallingAddress: 8886000 ::
No LastRedirectedPartyAddress

irvCTIRD2's Active remote destination of 916267829523 answers the call.

 

GC1: ConnConnectedEvent 8889000

GC1: CallCtlConnEstablishedEv 8889000

GC1: TermConnActiveEvent irvCTIRD2

GC1: CallCtlTermConnTalkingEv irvCTIRD2

 

CurrentCalledAddress: 8889000 ::
CurrentCallingAddress: 8886000 ::
No LastRedirectedPartyAddress

User invokes connection.disconnect on irvCTIRD2 while talking.

GC1: TermConnDroppedEv irvCTIRD2

GC1: CallCtlTermConnDroppedEv irvCTIRD2

GC1: ConnDisconnectedEvent 8889000

GC1: CallCtlConnDisconnectedEv 8889000

GC1: TermConnDroppedEv irvCTIPort6

GC1: CallCtlTermConnDroppedEv irvCTIPort6

GC1: ConnDisconnectedEvent 8886000

GC1: CallCtlConnDisconnectedEv 8886000

GC1: CallInvalidEvent

GC1: CallObservationEndedEv

CurrentCalledAddress: 8889000 ::
CurrentCallingAddress: 8886000 ::
No LastRedirectedPartyAddress

Scenario 2-17 (Disconnect an incoming call on CTI Remote Device after answer while talking):

C calls E, Application is observing both C and E on addresses and terminals. GC1 is the GCID of the call.

Action

Events

Call info

User1 invokes call.connect(irvCTIPort6, 8886000, 8889000).

 

GC1: CallActiveEvent

GC1: ConnCreatedEvent 8886000

GC1: ConnConnectedEvent 8886000

GC1: CallCtlConnInitiatedEv 8886000

GC1: TermConnCreatedEvent irvCTIPort6

GC1: TermConnActiveEvent irvCTIPort6

GC1: CallCtlTermConnTalkingEv irvCTIPort6

GC1: CallCtlConnDialingEv 8886000

GC1: CallCtlConnEstablishedEv 8886000

GC1: ConnCreatedEvent 8889000

GC1: ConnInprogressEvent 8889000

GC1: CallCtlConnOfferedEv 8889000

GC1: ConnAlertingEvent 8889000

GC1: CallCtlConnAlertingEv 8889000

GC1: TermConnCreatedEvent irvCTIRD2

GC1: TermConnRingingEvent irvCTIRD2

GC1: CallCtlTermConnRingingEv irvCTIRD2

 

CurrentCalledAddress: 8889000 ::
CurrentCallingAddress: 8886000 ::
No LastRedirectedPartyAddress

User invokes connection.disconnect on irvCTIRD2 while it's still ringing on Active remote destination of 16267829523.

GC1: TermConnDroppedEv irvCTIRD2

GC1: CallCtlTermConnDroppedEv irvCTIRD2

GC1: ConnDisconnectedEvent 8889000

GC1: CallCtlConnDisconnectedEv 8889000

GC1: ConnFailedEvent 8886000

GC1: CallCtlConnFailedEv 8886000

GC1: TermConnDroppedEv irvCTIPort6

GC1: CallCtlTermConnDroppedEv irvCTIPort6

GC1: ConnDisconnectedEvent 8886000

GC1: CallCtlConnDisconnectedEv 8886000

GC1: CallInvalidEvent

GC1: CallObservationEndedEv

CurrentCalledAddress: 8889000 ::
CurrentCallingAddress: 8886000 ::
No LastRedirectedPartyAddress

Scenario 2-18 (Disconnect an Outgoing call from CTI Remote Device to CTI Port. That is to disconnect after answering on remote destination and answering on called CTI Port.):

E calls D, Application is observing both D and E on addresses and terminals. GC1 is the GCID of the call.

Action

Events

Call info

User1 invokes call.connect(irvCTIRD2, 8889000, 8887000).

 

GC1: CallActiveEvent

GC1: ConnCreatedEvent 8889000

GC1: ConnInprogressEvent 8889000

GC1: CallCtlConnOfferedEv 8889000

 

CurrentCalledAddress: 8889000 ::
CurrentCallingAddress: 8889000 ::
No LastRedirectedPartyAddress

irvCTIRD2's Active remote destination of 916267829523 answers the call.

 

GC1: ConnConnectedEvent 8889000

GC1: CallCtlConnEstablishedEv 8889000

GC1: TermConnCreatedEvent irvCTIRD2

GC1: TermConnActiveEvent irvCTIRD2

GC1: CallCtlTermConnTalkingEv irvCTIRD2

 

CurrentCalledAddress: 8889000 ::
CurrentCallingAddress: 8889000 ::
No LastRedirectedPartyAddress

irvCTIPort7 rings and answers the call.

GC1: ConnCreatedEvent 8887000

GC1: ConnInprogressEvent 8887000

GC1: CallCtlConnOfferedEv 8887000

GC1: ConnAlertingEvent 8887000

GC1: CallCtlConnAlertingEv 8887000

GC1: TermConnCreatedEvent irvCTIPort7

GC1: TermConnRingingEvent irvCTIPort7

GC1: CallCtlTermConnRingingEv irvCTIPort7

GC1: ConnConnectedEvent 8887000

GC1: CallCtlConnEstablishedEv 8887000

GC1: TermConnActiveEvent irvCTIPort7

GC1: CallCtlTermConnTalkingEv irvCTIPort7

CurrentCalledAddress: 8887000 ::
CurrentCallingAddress: 8889000 ::
LastRedirectedPartyAddress: 8887000

Disconnect the call from 8889000 connection.

GC1: TermConnDroppedEv irvCTIRD2

GC1: CallCtlTermConnDroppedEv irvCTIRD2

GC1: ConnDisconnectedEvent 8889000

GC1: CallCtlConnDisconnectedEv 8889000

GC1: TermConnDroppedEv irvCTIPort7

GC1: CallCtlTermConnDroppedEv irvCTIPort7

GC1: ConnDisconnectedEvent 8887000

GC1: CallCtlConnDisconnectedEv 8887000

GC1: CallInvalidEvent

GC1: CallObservationEndedEv

CurrentCalledAddress: 8887000 ::
CurrentCallingAddress: 8889000 ::
LastRedirectedPartyAddress: 8887000

Scenario 2-19 (Disconnect an Outgoing call from CTI Remote Device to CTI Port. That is to disconnect after answering on remote destination but before answering on called CTI Port.):

E calls D, Application is observing both D and E on addresses and terminals. GC1 is the GCID of the call.

Action

Events

Call info

User1 invokes call.connect(irvCTIRD2, 8889000, 8887000).

 

GC1: CallActiveEvent

GC1: ConnCreatedEvent 8889000

GC1: ConnInprogressEvent 8889000

GC1: CallCtlConnOfferedEv 8889000

 

CurrentCalledAddress: 8889000 ::
CurrentCallingAddress: 8889000 ::
No LastRedirectedPartyAddress

irvCTIRD2's Active remote destination of 916267829523 answers the call.

 

GC1: ConnConnectedEvent 8889000

GC1: CallCtlConnEstablishedEv 8889000

GC1: TermConnCreatedEvent irvCTIRD2

GC1: TermConnActiveEvent irvCTIRD2

GC1: CallCtlTermConnTalkingEv irvCTIRD2

 

CurrentCalledAddress: 8889000 ::
CurrentCallingAddress: 8889000 ::
No LastRedirectedPartyAddress

irvCTIPort7 rings

GC1: ConnCreatedEvent 8887000

GC1: ConnInprogressEvent 8887000

GC1: CallCtlConnOfferedEv 8887000

GC1: ConnAlertingEvent 8887000

GC1: CallCtlConnAlertingEv 8887000

GC1: TermConnCreatedEvent irvCTIPort7

GC1: TermConnRingingEvent irvCTIPort7

GC1: CallCtlTermConnRingingEv irvCTIPort7

CurrentCalledAddress: 8887000 ::
CurrentCallingAddress: 8889000 ::
LastRedirectedPartyAddress: 8887000

Disconnect the call from 8889000 connection.

GC1: TermConnDroppedEv irvCTIRD2

GC1: CallCtlTermConnDroppedEv irvCTIRD2

GC1: ConnDisconnectedEvent 8889000

GC1: CallCtlConnDisconnectedEv 8889000

GC1: TermConnDroppedEv irvCTIPort7

GC1: CallCtlTermConnDroppedEv irvCTIPort7

GC1: ConnDisconnectedEvent 8887000

GC1: CallCtlConnDisconnectedEv 8887000

GC1: CallInvalidEvent

GC1: CallObservationEndedEv

CurrentCalledAddress: 8887000 ::
CurrentCallingAddress: 8889000 ::
LastRedirectedPartyAddress: 8887000

Scenario 2-20 (Disconnect an Outgoing call from CTI Remote Device to CTI Port. That is to drop the call before even answering on remote destination. Note: Only 1 connection on CTI Remote Device which is in offering state.:

E calls D, Application is observing both D and E on addresses and terminals. GC1 is the GCID of the call.

Action

Events

Call info

User1 invokes call.connect(irvCTIRD2, 8889000, 8887000).

 

GC1: CallActiveEvent

GC1: ConnCreatedEvent 8889000

GC1: ConnInprogressEvent 8889000

GC1: CallCtlConnOfferedEv 8889000

 

CurrentCalledAddress: 8889000 ::
CurrentCallingAddress: 8889000 ::
No LastRedirectedPartyAddress

irvCTIRD2's Active remote destination of 916267829523 rings, User1 drops the call to disconnect from 8889000 connection.

 

GC1: ConnDisconnectedEvent 8889000

GC1: CallCtlConnDisconnectedEv 8889000

GC1: CallInvalidEvent

GC1: CallObservationEndedEv

 

CurrentCalledAddress: 8889000 ::
CurrentCallingAddress: 8889000 ::
No LastRedirectedPartyAddress

Scenario 2-21 (Incoming call from CTI Port to CTI Remote Device with a shared-line of another CTI Port). Note: irvCTIRD1 remote destination answers the call; hold irvCTIRD1, unhold irvCTIRD1; then hold irvCTIRD1, unhold irvCTIPort1 which results irvCTIRD1 got disconnected; then hold irvCTIPort6, unhold irvCTIPort6, then disconnect 8886000.:

C calls A (with a shared line with B) with several hold/resume operations on different terminals. Application is observing A, B, and C on addresses and terminals. GC1 is the GCID of the call.

Action

Events

Call info

User1 invokes call.connect(irvCTIPort6, 8886000, 881000).

 

GC1: CallActiveEvent

GC1: ConnCreatedEvent 8886000

GC1: ConnConnectedEvent 8886000

GC1: CallCtlConnInitiatedEv 8886000

GC1: TermConnCreatedEvent irvCTIPort6

GC1: TermConnActiveEvent irvCTIPort6

GC1: CallCtlTermConnTalkingEv irvCTIPort6

GC1: CallCtlConnDialingEv 8886000

GC1: CallCtlConnEstablishedEv 8886000

GC1: ConnCreatedEvent 8881000

GC1: ConnInprogressEvent 8881000

GC1: CallCtlConnOfferedEv 8881000

GC1: ConnAlertingEvent 8881000

GC1: CallCtlConnAlertingEv 8881000

GC1: TermConnCreatedEvent irvCTIPort1

GC1: TermConnRingingEvent irvCTIPort1

GC1: CallCtlTermConnRingingEv irvCTIPort1

GC1: TermConnCreatedEvent irvCTIRD1

GC1: TermConnRingingEvent irvCTIRD1

GC1: CallCtlTermConnRingingEv irvCTIRD1

 

CurrentCalledAddress: 8881000 ::
CurrentCallingAddress: 8886000 ::
No LastRedirectedPartyAddress

irvCTIRD1's Active remote destination of 919498231202 answers the call.

GC1: ConnConnectedEvent 8881000

GC1: CallCtlConnEstablishedEv 8881000

GC1: TermConnActiveEvent irvCTIRD1

GC1: CallCtlTermConnTalkingEv irvCTIRD1

GC1: TermConnPassiveEvent irvCTIPort1

GC1: CallCtlTermConnBridgedEv irvCTIPort1

CurrentCalledAddress: 8881000 ::
CurrentCallingAddress: 8886000 ::
No LastRedirectedPartyAddress

User invoke hold on terminalconnection of irvCTIRD1

GC1: CallCtlTermConnHeldEv irvCTIRD1

GC1: TermConnActiveEvent irvCTIPort1

GC1: CallCtlTermConnHeldEv irvCTIPort1

CurrentCalledAddress: 8881000 ::
CurrentCallingAddress: 8886000 ::
No LastRedirectedPartyAddress

User invoke unhold on terminalconnection of irvCTIRD1

GC1: CallCtlTermConnTalkingEv irvCTIRD1

GC1: TermConnPassiveEvent irvCTIPort1

GC1: CallCtlTermConnBridgedEv irvCTIPort1

CurrentCalledAddress: 8881000 ::
CurrentCallingAddress: 8886000 ::
No LastRedirectedPartyAddress

User invoke hold on terminalconnection of irvCTIRD1

GC1: CallCtlTermConnHeldEv irvCTIRD1

GC1: TermConnActiveEvent irvCTIPort1

GC1: CallCtlTermConnHeldEv irvCTIPort1

CurrentCalledAddress: 8881000 ::
CurrentCallingAddress: 8886000 ::
No LastRedirectedPartyAddress

User invoke unhold on terminalconnection of irvCTIPort1 (while it's in Bridged state). This results in irvCTIRD1 being dropped.

GC1: CallCtlTermConnTalkingEv irvCTIPort1

GC1: TermConnDroppedEv irvCTIRD1

GC1: CallCtlTermConnDroppedEv irvCTIRD1

CurrentCalledAddress: 8881000 ::
CurrentCallingAddress: 8886000 ::
No LastRedirectedPartyAddress

User invoke hold on terminalconnection of irvCTIPort6

GC1: CallCtlTermConnHeldEv irvCTIPort6

CurrentCalledAddress: 8881000 ::
CurrentCallingAddress: 8886000 ::
No LastRedirectedPartyAddress

User invoke unhold on terminalconnection of irvCTIPort6

GC1: CallCtlTermConnTalkingEv irvCTIPort6

 

Disconnect the call from connection of irvCTIPort6.

GC1: TermConnDroppedEv irvCTIPort6

GC1: CallCtlTermConnDroppedEv irvCTIPort6

GC1: ConnDisconnectedEvent 8886000

GC1: CallCtlConnDisconnectedEv8886000

GC1: TermConnDroppedEv irvCTIPort1

GC1: CallCtlTermConnDroppedEv irvCTIPort1

GC1: ConnDisconnectedEvent 8881000

GC1: CallCtlConnDisconnectedEv 8881000

GC1: CallInvalidEvent

GC1: CallObservationEndedEv

CurrentCalledAddress: 8881000 ::
CurrentCallingAddress: 8886000 ::
No LastRedirectedPartyAddress

Scenario 2-22 (Outgoing call from CTI Remote Device (with a shared line of CTI Port) to another CTI Port). Note: irvCTIPort1 rings and remote destination on irvCTIRD1 rings, remote destination answers the call, call is then offered on irvCTIPort7. After answer on irvCTIPort7, disconnect from 8881000 connection.:

A (with a shared line of B) calls D, then with several hold/unhold operations at different terminals. Application is observing both A, B, and D on addresses and terminals. GC1 is the GCID of the call.

Action

Events

Call info

User1 invokes call.connect(irvCTIRD1, 8881000, 8887000).

 

GC1: CallActiveEvent

GC1: ConnCreatedEvent 8881000

GC1: ConnInprogressEvent 8881000

GC1: CallCtlConnOfferedEv 8881000

GC1: ConnAlertingEvent 8881000

GC1: CallCtlConnAlertingEv 8881000

 

CurrentCalledAddress: 8881000::
CurrentCallingAddress: 8881000::
No LastRedirectedPartyAddress

irvCTIPort7 rings

GC1: TermConnCreatedEvent irvCTIPort1

GC1: TermConnRingingEvent irvCTIPort1

GC1: CallCtlTermConnRingingEv irvCTIPort1

 

irvCTIRD1's Active remote destination of 919498231202 answers the call.

 

GC1: ConnConnectedEvent 8881000

GC1: CallCtlConnEstablishedEv 8881000

GC1: TermConnCreatedEvent irvCTIRD1

GC1: TermConnActiveEvent irvCTIRD1

GC1: CallCtlTermConnTalkingEv irvCTIRD1

 

CurrentCalledAddress: 8881000::
CurrentCallingAddress: 8881000::
No LastRedirectedPartyAddress

irvCTIPort7 rings

GC1: TermConnPassiveEvent irvCTIPort1

GC1: CallCtlTermConnBridgedEv irvCTIPort1

CurrentCalledAddress: 8887000 ::
CurrentCallingAddress: 8881000 ::
No LastRedirectedPartyAddress

irvCTIPort7 answers the call.

GC1: ConnCreatedEvent 8887000

GC1: ConnInprogressEvent 8887000

GC1: CallCtlConnOfferedEv 8887000

GC1: ConnAlertingEvent 8887000

GC1: CallCtlConnAlertingEv 8887000

GC1: TermConnCreatedEvent irvCTIPort7

GC1: TermConnRingingEvent irvCTIPort7

GC1: CallCtlTermConnRingingEv irvCTIPort7

GC1: ConnConnectedEvent 8887000

GC1: CallCtlConnEstablishedEv 8887000

GC1: TermConnActiveEvent irvCTIPort7

GC1: CallCtlTermConnTalkingEv irvCTIPort7

CurrentCalledAddress: 8887000 ::
CurrentCallingAddress: 8881000::
LastRedirectedPartyAddress: 8887000

User invoke hold on terminalconnection of irvCTIRD1

GC1: CallCtlTermConnHeldEv irvCTIRD1

GC1: TermConnActiveEvent irvCTIPort1

CurrentCalledAddress: 8887000 ::
CurrentCallingAddress: 8881000 ::
LastRedirectedPartyAddress: 8887000

User invoke unhold on terminalconnection of irvCTIPort1 (while it's in Bridged state). This results in irvCTIRD1 being dropped.

GC1: CallCtlTermConnHeldEv irvCTIPort1

GC1: CallCtlTermConnTalkingEv irvCTIPort1

GC1: TermConnDroppedEv irvCTIRD1

GC1: CallCtlTermConnDroppedEv irvCTIRD1

CurrentCalledAddress: 8887000 ::
CurrentCallingAddress: 8881000 ::
LastRedirectedPartyAddress: 8887000

Disconnect the call from 8881000 connection.

GC1: TermConnDroppedEv irvCTIPort1

GC1: CallCtlTermConnDroppedEv irvCTIPort1

GC1: ConnDisconnectedEvent 8881000

GC1: CallCtlConnDisconnectedEv 8881000

GC1: TermConnDroppedEv irvCTIPort7

GC1: CallCtlTermConnDroppedEv irvCTIPort7

GC1: ConnDisconnectedEvent 8887000

GC1: CallCtlConnDisconnectedEv 8887000

GC1: CallInvalidEvent

GC1: CallObservationEndedEv

CurrentCalledAddress: 8887000 ::
CurrentCallingAddress: 8881000 ::
LastRedirectedPartyAddress: 8887000

Scenario 2-23 (Superprovider acquires a CTIRD that is not on user control list).:

User1 open a provider which can observe any terminal (User1 with "Standard CTI Allow Control of All Devices" role), and then acquire a CTI Remote Device "CTIRD_UP" that is not on User1's control list).

Action

Events

Call info

User1 opens Provider and adds a provider observer.

 

ProvInServiceEv

 

User1 invokes provider.createTerminal(CTIRD_UP).

 

CiscoAddrCreatedEv: 8889999

CiscoTermCreatedEv: CTIRD_UP

 

CTI Remote Device use cases group 3

Use Cases Group 3 (CUCSF registration and unregistration, for Normal SIP mode <-> Extend mode, and terminal switching scenarios)

Pre-conditions on Use Cases group 3 below with default jtapi.ini settings, unless specified explicitly:

  • Provider is IN_SERVICE state.
  • Device A (CUCSF - Name: "irvCSF1", Line A (DN: 7771000))
  • Remote Destination 1 (Name: "IRVCell", Number: "916267829523", Active RD: true)
  • Scenario 3-1 (Registration of CUCSF in between Extend mode and SIP mode).:

Device A is registered in normal SIP mode when WebEx with Jabber client is running and configured this device as its associated phone. User1 open provider and add observers on this device to bring it in service. Now exit WebEx to unregister it from SIP, and then User1 calls CiscoTerminal.register() to register it to Extend mode from JTAPI, then add observers back to bring it in service. Now User1 unregister it from Extend mode in JTAPI by calling CiscoRemoteTerminal.unregister(). Now open WebEx again to register this device back to SIP mode, and add observers back to bring it in service.

Action

Events

Info

WebEx is opened.

User1 adds provider observer.

registerFeature 1235 on provider.

addObserver on address 7771000.

addObserver on terminal irvCSF1.

 

Provider: ProvInServiceEv

7771000: CiscoAddrOutOfServiceEv

irvCSF1: CiscoTermInServiceEv

7771000: CiscoAddrInServiceEv

irvCSF1: CiscoTermInServiceEv

 

CiscoTerminal.getProtocol = 2

CiscoTerminal.isRegistered() = true

 

CiscoRemoteTerminal.getType() = 503

CiscoRemoteTerminal.getTypeName() = Cisco Unified Client Services Framework

Exit WebEx

Provider: CiscoProvTerminalUnRegisteredEv irvCSF1

7771000: CiscoAddrOutOfServiceEv

irvCSF1: CiscoTermOutOfServiceEv

CiscoTerminal.getProtocol = 2

CiscoTerminal.isRegistered() = false

User1 calls CiscoTerminal.register() on irvCSF1.

addObserver on address 7771000.

addObserver on terminal irvCSF1.

Provider: CiscoAddrRemovedEv 7771000

Provider: CiscoTermRemovedEv irvCSF1

Provider: CiscoAddrCreatedEv 7771000

Provider: CiscoTermCreatedEv irvCSF1

Provider: CiscoProvTerminalRegisteredEv

 

irvCSF1: CiscoTermInServiceEv

7771000: CiscoAddrOutOfServiceEv

7771000: CiscoAddrInServiceEv

irvCSF1: CiscoTermInServiceEv

CiscoTerminal.getProtocol = 3

CiscoTerminal.isRegistered() = true

 

CiscoRemoteTerminal.getRegistrationType() = 8

CiscoRemoteTerminal.isRegisteredByThisApp() = true

User1 calls CiscoRemoteTerminal. unregister()

7771000: CiscoAddrOutOfServiceEv

irvCSF1: CiscoTermOutOfServiceEv

Provider: CiscoProvTerminalUnRegisteredEv

CiscoTerminal.getProtocol = 3

CiscoTerminal. isRegistered() = false

 

CiscoRemoteTerminal.getRegistrationType() = -1

CiscoRemoteTerminal. isRegisteredByThisApp() = false

Open WebEx

addObserver on address 7771000.

addObserver on terminal irvCSF1.

Provider: CiscoAddrRemovedEv 7771000

Provider: CiscoTermRemovedEv irvCSF1

Provider: CiscoAddrCreatedEv 7771000

Provider: CiscoTermCreatedEv irvCSF1

Provider: CiscoProvTerminalRegisteredEv

 

7771000: CiscoAddrOutOfServiceEv

irvCSF1: CiscoTermInServiceEv

7771000: CiscoAddrInServiceEv

irvCSF1: CiscoTermInServiceEv

CiscoTerminal.getProtocol = 2

CiscoTerminal.isRegistered() = true

CTI Remote Device use cases group 4

Use Cases Group 4 (Set/Reset Active Remote Destination scenarios)

Pre-conditions on Use Cases group 4 below with default jtapi.ini settings, unless specified explicitly:

  • Provider is IN_SERVICE state. Single node.
  • Device A (CTI Remote Device - Name: "irvCTIRD2", Line A (DN: 8881000))
  • Remote Destination 1 (Name: "IRVCell1", Number: "916267829523", Active RD: false)
  • Scenario 4-1 (User1 opens provider P1, set RD1 as active. Now User1 opens another provider P2, and set same RD1 as active again. Now stop CTI Manager service in this single node, the active RD would be clear out. Now restart CTI Manager, JTAPI will do a provider retry, and upon successfully connection, it will automatically reset the same RD1 as active again seamlessly.):

Action

Events

Info

User1 open Provider P1 and adds provider observer.

 

P1: ProvInServiceEv

 

User1 calls CiscoRemoteTerminal. setActiveRemote Destination ("916267829523", true) from P1.

P1: CiscoProvTerminalRemoteDestinationChangedEv

P1 changed event: Remote Terminal: irvCTIRD2 :: [Remote Destination 1: Name:IRVCell1, Number:916267829523, IsActiveRD:true] :: IsMyAppLastToSetActiveRD : true

CiscoRemoteTerminal. isMyAppLastToSetActiveRD() = true

User1 open Provider P2 and adds provider observer.

 

P2: ProvInServiceEv

 

User1 calls CiscoRemoteTerminal. setActiveRemote Destination ("916267829523", true) from P2.

P1: CiscoProvTerminalRemote DestinationChangedEv

 

P2: CiscoProvTerminalRemote DestinationChangedEv

P1 changed event: Remote Terminal: irvCTIRD2 :: [Remote Destination 1: Name:IRVCell1, Number:916267829523, IsActiveRD:true] :: IsMyAppLastToSetActiveRD : false

CiscoRemoteTerminal. isMyAppLastToSetActiveRD() = false

 

P2 changed event: Remote Terminal: irvCTIRD2 :: [Remote Destination 1: Name:IRVCell1, Number:916267829523, IsActiveRD:true] :: IsMyAppLastToSetActiveRD : true

CiscoRemoteTerminal. isMyAppLastToSetActiveRD() = true

Stop CTI Manager on this single node where P1 & P2 are connected to. And this active RD will be clear out automatically from CTI/CCM side.

P1: ProvOutOfServiceEv

 

P2: ProvOutOfServiceEv

 

Start this CTI Manager. And JTAPI will automatically reset the same RD1 as active again seamlessly.

P1: ProvInServiceEv

 

P2: ProvInServiceEv

Note that no CiscoProvTerminalRemote DestinationChangedEv will be sent to application because it is the same active RD that application previously set.

Scenario 4-2 (User1 opens provider P1, add all observers on provider, terminals, addresses, then set RD1 as active. Now stop CTI Manager service, the active RD would be clear out. Now restart CTI Manager, JTAPI will do a provider retry, and upon successfully connection, it will automatically reset the same RD1 as active again seamlessly.):

Action

Events

Info

User1 open Provider P1 and adds provider observer.

 

P1: ProvInServiceEv

 

User1 calls CiscoRemoteTerminal. setActiveRemote Destination ("916267829523", true) from P1.

P1: CiscoProvTerminalRemote DestinationChangedEv

P1 changed event: Remote Terminal: irvCTIRD2 :: [Remote Destination 1: Name:IRVCell1, Number:916267829523, IsActiveRD:true] :: IsMyAppLastToSetActiveRD : true

CiscoRemoteTerminal. isMyAppLastToSetActiveRD() = true

Stop CTI Manager where P1 is connected to. And this active RD will be clear out automatically from CTI/CCM side.

8881000:: Event: CiscoAddrOutOfServiceEv

irvCTIRD2:: Event: CiscoTermOutOfServiceEv

P1: ProvOutOfServiceEv

 

Start this CTI Manager. And JTAPI will automatically reset the same RD1 as active again seamlessly.

P1: ProvInServiceEv

irvCTIRD2:: Event: CiscoTermInServiceEv

8881000:: Event: CiscoAddrInServiceEv

Note that no CiscoProvTerminalRemote DestinationChangedEv will be sent to application because it is the same active RD that application previously set.

CTI Remote Device use cases group 5

Use Cases Group 5 (CTIRD Transfer/Conference/Multiple-Calls call scenarios)

Pre-conditions on Use Cases group 5 below with default jtapi.ini settings, unless specified explicitly (Note: The CTI Ports have Auto-Accept enabled):

  • Provider is IN_SERVICE state.
  • Device A (CTI Remote Device - Name: "irvCTIRD2", Line A (DN: 8889000))
  • Remote Destination 1 (Name: "IRVCell1", Number: "916267829523", Active RD: true)
  • Device B (CTI Port - Name: "irvCTIPort4", Line B (DN: 8884000))
  • Device C (CTI Port - Name: "irvCTIPort5", Line B (DN: 8884000))
  • Device D (CTI Port - Name: "irvCTIPort6", Line D (DN: 8886000))
  • Device E (CTI Remote Device - Name: "irvCTIRD3", Line E (DN: 8889001))
  • Remote Destination 1 (Name: "IRVHome1", Number: "916268210080", Active RD: true)

Scenario 5-1 (Direct Transfer on CTI Remote Device to CTI Port):

D calls A with GC1 as GCID of call; A calls B with GC2 as GCID of call. Set A as transfer controller, and then transfer call from GC2 to GC1. Application is observing all A, B, D.

Action

Events

Call info

User1 invokes call. connect (irvCTIPort6, 8886000, 8889000)

 

GC1: CallActiveEvent

GC1: ConnCreatedEvent 8886000

GC1: ConnConnectedEvent 8886000

GC1: CallCtlConnInitiatedEv 8886000

GC1: TermConnCreatedEvent irvCTIPort6

GC1: TermConnActiveEvent irvCTIPort6

GC1: CallCtlTermConnTalkingEv irvCTIPort6

GC1: CallCtlConnDialingEv 8886000

GC1: CallCtlConnEstablishedEv 8886000

GC1: ConnCreatedEvent 8889000

GC1: ConnInprogressEvent 8889000

GC1: CallCtlConnOfferedEv 8889000

GC1: ConnAlertingEvent 8889000

GC1: CallCtlConnAlertingEv 8889000

GC1: TermConnCreatedEvent irvCTIRD2

GC1: TermConnRingingEvent irvCTIRD2

GC1: CallCtlTermConnRingingEv irvCTIRD2

 

CallingAddress  =  8886000,  
CalledAddress  =  8889000,  
CurrentCallingAddress  =  8886000,  
CurrentCalledAddress  =  8889000,
ModifiedCallingAddress  =  8886000,  
ModifiedCalledAddress  =  8889000,  
No LastRedirectedPartyAddress

irvCTIRD2's Active remote destination of 916267829523 answers the call.

 

GC1: ConnConnectedEvent 8889000

GC1: CallCtlConnEstablishedEv 8889000

GC1: TermConnActiveEvent irvCTIRD2

GC1: CallCtlTermConnTalkingEv irvCTIRD2

 

CallingAddress  =  8886000,  
CalledAddress  =  8889000,  
CurrentCallingAddress  =  8886000,  
CurrentCalledAddress  =  8889000,
ModifiedCallingAddress  =  8886000,  
ModifiedCalledAddress  =  8889000,  
No LastRedirectedPartyAddress

User1 invokes call. connect (irvCTIRD2, 8889000, 8884000) , and answer() on irvCTIPort4 terminal connection.

GC1: CallCtlTermConnHeldEv irvCTIRD2

GC2: CallActiveEvent

GC2: ConnCreatedEvent : Address: 8889000

GC2: ConnConnectedEvent : Address: 8889000

GC2: CallCtlConnInitiatedEv : Address: 8889000

GC2: TermConnCreatedEvent : Terminal: irvCTIRD2

GC2: TermConnActiveEvent : Terminal: irvCTIRD2

GC2: CallCtlTermConnTalkingEv : Terminal: irvCTIRD2

GC2: CallCtlConnDialingEv : Address: 8889000

GC2: CallCtlConnEstablishedEv : Address: 8889000

GC2: ConnCreatedEvent : Address: 8884000

GC2: ConnInprogressEvent : Address: 8884000

GC2: CallCtlConnOfferedEv : Address: 8884000

GC2: ConnAlertingEvent : Address: 8884000

GC2: CallCtlConnAlertingEv : Address: 8884000

GC2: TermConnCreatedEvent : Terminal: irvCTIPort4

GC2: TermConnRingingEvent : Terminal: irvCTIPort4

GC2: CallCtlTermConnRingingEv : Terminal: irvCTIPort4

GC2: TermConnCreatedEvent : Terminal: irvCTIPort5

GC2: TermConnRingingEvent : Terminal: irvCTIPort5

 

CallingAddress  =  8886000,  
CalledAddress  =  8889000,  
CurrentCallingAddress  =  8886000,  
CurrentCalledAddress  =  8889000,
ModifiedCallingAddress  =  8886000,  
ModifiedCalledAddress  =  8889000,  
No LastRedirectedPartyAddress

 

 

 

CallingAddress  =  8889000,  
CalledAddress  =  8884000,  
CurrentCallingAddress  =  8889000,  
CurrentCalledAddress  =  8884000,
ModifiedCallingAddress  =  8889000,  
ModifiedCalledAddress  =  8884000,  
No LastRedirectedPartyAddress

 

GC2: CallCtlTermConnRingingEv : Terminal: irvCTIPort5

GC2: ConnConnectedEvent : Address: 8884000

GC2: CallCtlConnEstablishedEv : Address: 8884000

GC2: TermConnActiveEvent : Terminal: irvCTIPort4

GC2: CallCtlTermConnTalkingEv : Terminal: irvCTIPort4

GC2: TermConnPassiveEvent : Terminal: irvCTIPort5

GC2: CallCtlTermConnInUseEv : Terminal: irvCTIPort5

 

User1 invokes GC2.setTransferController (terminal connection of irvCTIRD2).

GC2: CiscoTermConnSelectChangedEv : Terminal: irvCTIRD2

GC1: CiscoTermConnSelectChangedEv : Terminal: irvCTIRD2

CallingAddress  =  8889000,  
CalledAddress  =  8884000,  
CurrentCallingAddress  =  8884000,  
CurrentCalledAddress  =  8886000,
ModifiedCallingAddress  =  8884000,  
ModifiedCalledAddress  =  8886000,
LastRedirectedPartyAddress  =  8889000

 

CallingAddress = 8886000, CalledAddress = 8889000, CurrentCallingAddress = 8886000, CurrentCalledAddress = 8889000, ModifiedCallingAddress = 8886000, ModifiedCalledAddress = 8889000, No LastRedirectedPartyAddress

User1 invokes GC2.transfer(GC1).

GC2: CiscoTransferStartEv

 

GC1: TermConnDroppedEv irvCTIRD2

GC1: CallCtlTermConnDroppedEv : Terminal: irvCTIRD2

GC1: ConnDisconnectedEvent : Address: 8889000

GC1: CallCtlConnDisconnectedEv : Address: 8889000

 

GC2: TermConnDroppedEv : Terminal: irvCTIRD2

GC2: CallCtlTermConnDroppedEv : Terminal: irvCTIRD2

GC2: ConnDisconnectedEvent : Address: 8889000

GC2: CallCtlConnDisconnectedEv : Address: 8889000

 

GC1: CiscoCallChangedEv

 

GC2: ConnCreatedEvent : Address: 8886000

GC2: ConnConnectedEvent : Address: 8886000

GC2: CallCtlConnEstablishedEv : Address: 8886000

GC2: TermConnCreatedEvent : Terminal: irvCTIPort6

GC2: TermConnActiveEvent : Terminal: irvCTIPort6

GC2: CallCtlTermConnTalkingEv : Terminal: irvCTIPort6

 

GC1: TermConnDroppedEv : Terminal: irvCTIPort6

CallingAddress  =  8889000,  
CalledAddress  =  8884000,  
CurrentCallingAddress  =  8884000,  
CurrentCalledAddress  =  8886000,
ModifiedCallingAddress  =  8884000,  
ModifiedCalledAddress  =  8886000,
LastRedirectedPartyAddress  =  8889000

 

GC1: CallCtlTermConnDroppedEv : Terminal: irvCTIPort6

GC1: ConnDisconnectedEvent : Address: 8886000

GC1: CallCtlConnDisconnectedEv : Address: 8886000

GC1: CallInvalidEvent

GC1: CallObservationEndedEv

 

GC2: CiscoTransferEndEv

 

disconnect() the call on 8886000 connection.

GC2: TermConnDroppedEv irvCTIPort6

GC2: CallCtlTermConnDroppedEv : Terminal: irvCTIPort6

GC2: ConnDisconnectedEvent : Address: 8886000

GC2: CallCtlConnDisconnectedEv : Address: 8886000

GC2: TermConnDroppedEv : Terminal: irvCTIPort4

GC2: CallCtlTermConnDroppedEv : Terminal: irvCTIPort4

GC2: TermConnDroppedEv : Terminal: irvCTIPort5

GC2: CallCtlTermConnDroppedEv : Terminal: irvCTIPort5

GC2: ConnDisconnectedEvent : Address: 8884000

GC2: CallCtlConnDisconnectedEv : Address: 8884000

GC2: CallInvalidEvent

GC2: CallObservationEndedEv

CallingAddress  =  8889000,  
CalledAddress  =  8884000,  
CurrentCallingAddress  =  8884000,  
CurrentCalledAddress  =  8886000,
ModifiedCallingAddress  =  8884000,  
ModifiedCalledAddress  =  8886000,
LastRedirectedPartyAddress  =  8889000

Scenario 5-2 (Conference call on CTI Remote Device and CTI Port with another CTI Remote Device):

D calls A with GC1 as GCID of call; A calls E with GC2 as GCID of call. Set A as conference controller, and then conference/join call from GC2 to GC1. Application is observing all A, D, E.

Action

Events

Call info

User1 invokes call. connect (irvCTIPort6, 8886000, 8889000)

 

GC1: CallActiveEvent

GC1: ConnCreatedEvent 8886000

GC1: ConnConnectedEvent 8886000

GC1: CallCtlConnInitiatedEv 8886000

GC1: TermConnCreatedEvent irvCTIPort6

GC1: TermConnActiveEvent irvCTIPort6

GC1: CallCtlTermConnTalkingEv irvCTIPort6

GC1: CallCtlConnDialingEv 8886000

GC1: CallCtlConnEstablishedEv 8886000

GC1: ConnCreatedEvent 8889000

GC1: ConnInprogressEvent 8889000

GC1: CallCtlConnOfferedEv 8889000

GC1: ConnAlertingEvent 8889000

GC1: CallCtlConnAlertingEv 8889000

GC1: TermConnCreatedEvent irvCTIRD2

GC1: TermConnRingingEvent irvCTIRD2

GC1: CallCtlTermConnRingingEv irvCTIRD2

 

CallingAddress  =  8886000,  
CalledAddress  =  8889000,  
CurrentCallingAddress  =  8886000,  
CurrentCalledAddress  =  8889000,
ModifiedCallingAddress  =  8886000,  
ModifiedCalledAddress  =  8889000,  
No LastRedirectedPartyAddress

irvCTIRD2's Active remote destination of 916267829523 answers the call.

 

GC1: ConnConnectedEvent 8889000

GC1: CallCtlConnEstablishedEv 8889000

GC1: TermConnActiveEvent irvCTIRD2

GC1: CallCtlTermConnTalkingEv irvCTIRD2

 

CallingAddress  =  8886000,  
CalledAddress  =  8889000,  
CurrentCallingAddress  =  8886000,  
CurrentCalledAddress  =  8889000,
ModifiedCallingAddress  =  8886000,  
ModifiedCalledAddress  =  8889000,  
No LastRedirectedPartyAddress

User1 invokes call. connect (irvCTIRD2, 8889000, 8889001).

GC1: CallCtlTermConnHeldEv irvCTIRD2

 

GC2: CallActiveEvent

GC2: ConnCreatedEvent : Address: 8889000

GC2: ConnConnectedEvent : Address: 8889000

GC2: CallCtlConnInitiatedEv : Address: 8889000

GC2: TermConnCreatedEvent : Terminal: irvCTIRD2

GC2: TermConnActiveEvent : Terminal: irvCTIRD2

GC2: CallCtlTermConnTalkingEv : Terminal: irvCTIRD2

GC2: CallCtlConnDialingEv : Address: 8889000

GC2: CallCtlConnEstablishedEv : Address: 8889000

GC2: ConnCreatedEvent : Address: 8889001

GC2: ConnInprogressEvent : Address: 8889001

GC2: CallCtlConnOfferedEv : Address: 8889001

GC2: ConnAlertingEvent : Address: 8889001

GC2: CallCtlConnAlertingEv : Address: 8889001

GC2: TermConnCreatedEvent : Terminal: irvCTIRD3

GC2: TermConnRingingEvent : Terminal: irvCTIRD3

GC2: CallCtlTermConnRingingEv : Terminal: irvCTIRD3

CallingAddress  =  8886000,  
CalledAddress  =  8889000,  
CurrentCallingAddress  =  8886000,  
CurrentCalledAddress  =  8889000,
ModifiedCallingAddress  =  8886000,  
ModifiedCalledAddress  =  8889000,  
No LastRedirectedPartyAddress

 

 

 

CallingAddress  =  8889000,  
CalledAddress  =  8889001,  
CurrentCallingAddress  =  8889000,  
CurrentCalledAddress  =  8889001,
ModifiedCallingAddress  =  8889000,  
ModifiedCalledAddress  =  8889001,  
No LastRedirectedPartyAddress

irvCTIRD3's Active remote destination of 916268210080 answers the call.

 

GC2: ConnConnectedEvent : Address: 8889001

GC2: CallCtlConnEstablishedEv : Address: 8889001

GC2: TermConnActiveEvent : Terminal: irvCTIRD3

GC2: CallCtlTermConnTalkingEv : Terminal: irvCTIRD3

 

CallingAddress  =  8886000,  
CalledAddress  =  8889000,  
CurrentCallingAddress  =  8886000,  
CurrentCalledAddress  =  Unknown,
ModifiedCallingAddress  =  8886000,  
ModifiedCalledAddress  =  Unknown,
LastRedirectedPartyAddress: 8889000

User1 invokes GC2.setConference Controller (terminal connection of irvCTIRD2).

GC2: CiscoTermConnSelectChangedEv : Terminal: irvCTIRD2

GC2: CiscoTermConnSelectChangedEv : Terminal: irvCTIRD2

 

User1 invokes GC2.conference(GC1).

GC2: CiscoConferenceStartEv

 

GC1: TermConnDroppedEv : Terminal: irvCTIRD2

GC1: CallCtlTermConnDroppedEv : Terminal: irvCTIRD2

GC1: ConnDisconnectedEvent : Address: 8889000

GC1: CallCtlConnDisconnectedEv : Address: 8889000

GC1: CiscoCallChangedEv

 

GC2: ConnCreatedEvent : Address: 8886000

GC2: ConnConnectedEvent : Address: 8886000

GC2: CallCtlConnEstablishedEv : Address: 8886000

GC2: TermConnCreatedEvent : Terminal: irvCTIPort6

GC2: TermConnActiveEvent : Terminal: irvCTIPort6

GC2: CallCtlTermConnTalkingEv : Terminal: irvCTIPort6

GC1: TermConnDroppedEv : Terminal: irvCTIPort6

GC1: CallCtlTermConnDroppedEv : Terminal: irvCTIPort6

GC1: ConnDisconnectedEvent : Address: 8886000

GC1: CallCtlConnDisconnectedEv : Address: 8886000

GC1: CallInvalidEvent

GC1: CallObservationEndedEv

 

GC2: CiscoConferenceEndEv

CallingAddress  =  8889000,  
CalledAddress  =  8889001,  
CurrentCallingAddress  =  8886000,  
CurrentCalledAddress  =  Unknown,
ModifiedCallingAddress  =  8886000,  
ModifiedCalledAddress  =  Unknown,
LastRedirectedPartyAddress: 8889000

disconnect() the call on 8889000 connection.

GC2: TermConnDroppedEv : Terminal: irvCTIRD2

GC2: CallCtlTermConnDroppedEv : Terminal: irvCTIRD2

GC2: ConnDisconnectedEvent : Address: 8889000

GC2: CallCtlConnDisconnectedEv : Address: 8889000

GC2: TermConnDroppedEv : Terminal: irvCTIRD3

GC2: CallCtlTermConnDroppedEv : Terminal: irvCTIRD3

GC2: ConnDisconnectedEvent : Address: 8889001

GC2: CallCtlConnDisconnectedEv : Address: 8889001

CallingAddress  =  8889000,  
CalledAddress  =  8889001,  
CurrentCallingAddress  =  8886000,  
CurrentCalledAddress  =  Unknown,
ModifiedCallingAddress  =  8886000,  
ModifiedCalledAddress  =  Unknown,
LastRedirectedPartyAddress: 8889000

disconnect() the call on 8889001 connection.

GC2: TermConnDroppedEv : Terminal: irvCTIPort6

GC2: CallCtlTermConnDroppedEv : Terminal: irvCTIPort6

GC2: ConnDisconnectedEvent : Address: 8886000

GC2: CallCtlConnDisconnectedEv : Address: 8886000

GC2: CallInvalidEvent

GC2: CallObservationEndedEv

CallingAddress  =  8889000,  
CalledAddress  =  8889001,  
CurrentCallingAddress  =  8886000,  
CurrentCalledAddress  =  8889001,
ModifiedCallingAddress  =  8886000,  
ModifiedCalledAddress  =  8889001,
LastRedirectedPartyAddress: 8889000

Scenario 5-3 (Multiple calls on CTI Remote Device):

D calls A with GC1 as GCID of call; B calls A with GC2 as GCID of call. Application is observing all A, B, D.

Action

Events

Call info

User1 invokes call. connect (irvCTIPort6, 8886000, 8889000)

 

GC1: CallActiveEvent

GC1: ConnCreatedEvent 8886000

GC1: ConnConnectedEvent 8886000

GC1: CallCtlConnInitiatedEv 8886000

GC1: TermConnCreatedEvent irvCTIPort6

GC1: TermConnActiveEvent irvCTIPort6

GC1: CallCtlTermConnTalkingEv irvCTIPort6

GC1: CallCtlConnDialingEv 8886000

GC1: CallCtlConnEstablishedEv 8886000

GC1: ConnCreatedEvent 8889000

GC1: ConnInprogressEvent 8889000

GC1: CallCtlConnOfferedEv 8889000

GC1: ConnAlertingEvent 8889000

GC1: CallCtlConnAlertingEv 8889000

GC1: TermConnCreatedEvent irvCTIRD2

GC1: TermConnRingingEvent irvCTIRD2

GC1: CallCtlTermConnRingingEv irvCTIRD2

 

CallingAddress  =  8886000,  
CalledAddress  =  8889000,  
CurrentCallingAddress  =  8886000,  
CurrentCalledAddress  =  8889000,
ModifiedCallingAddress  =  8886000,  
ModifiedCalledAddress  =  8889000,  
No LastRedirectedPartyAddress

irvCTIRD2's Active remote destination of 916267829523 answers the call.

 

GC1: ConnConnectedEvent 8889000

GC1: CallCtlConnEstablishedEv 8889000

GC1: TermConnActiveEvent irvCTIRD2

GC1: CallCtlTermConnTalkingEv irvCTIRD2

 

CallingAddress  =  8886000,  
CalledAddress  =  8889000,  
CurrentCallingAddress  =  8886000,  
CurrentCalledAddress  =  8889000,
ModifiedCallingAddress  =  8886000,  
ModifiedCalledAddress  =  8889000,  
No LastRedirectedPartyAddress

User1 invokes call. connect (irvCTIPort4, 8884000, 8889000)

GC2: CallActiveEvent

GC2: ConnCreatedEvent : Address: 8884000

GC2: ConnConnectedEvent : Address: 8884000

GC2: CallCtlConnInitiatedEv : Address: 8884000

GC2: TermConnCreatedEvent : Terminal: irvCTIPort4

GC2: TermConnActiveEvent : Terminal: irvCTIPort4

GC2: CallCtlTermConnTalkingEv : Terminal: irvCTIPort4

GC2: CallCtlConnDialingEv : Address: 8884000

 

GC2: TermConnCreatedEvent : Terminal: irvCTIPort5

GC2: TermConnPassiveEvent : Terminal: irvCTIPort5

GC2: CallCtlTermConnInUseEv : Terminal: irvCTIPort5

GC2: CallCtlConnEstablishedEv : Address: 8884000

GC2: ConnCreatedEvent : Address: 8889000

GC2: ConnInprogressEvent : Address: 8889000

GC2: CallCtlConnOfferedEv : Address: 8889000

GC2: ConnAlertingEvent : Address: 8889000

GC2: CallCtlConnAlertingEv : Address: 8889000

GC2: TermConnCreatedEvent : Terminal: irvCTIRD2

GC2: TermConnRingingEvent : Terminal: irvCTIRD2

GC2: CallCtlTermConnRingingEv : Terminal: irvCTIRD2

CallingAddress  =  8884000,  
CalledAddress  =  8889000,  
CurrentCallingAddress  =  8884000,  
CurrentCalledAddress  =  8889000,
ModifiedCallingAddress  =  8884000,  
ModifiedCalledAddress  =  8889000,  
No LastRedirectedPartyAddress

 

 

 

CallingAddress  =  8889000,  
CalledAddress  =  8889001,  
CurrentCallingAddress  =  8889000,  
CurrentCalledAddress  =  8889001,
ModifiedCallingAddress  =  8889000,  
ModifiedCalledAddress  =  8889001,  
No LastRedirectedPartyAddress

User1 invokes GC2.answer(terminal connection of irvCTIRD2).

GC1: CallCtlTermConnHeldEv : Terminal: irvCTIRD2

 

GC2: ConnConnectedEvent : Address: 8889000

GC2: CallCtlConnEstablishedEv : Address: 8889000

GC2: TermConnActiveEvent : Terminal: irvCTIRD2

GC2: CallCtlTermConnTalkingEv : Terminal: irvCTIRD2

CallingAddress  =  8884000,  
CalledAddress  =  8889000,
CurrentCallingAddress  =  8884000,  
CurrentCalledAddress  =  8889000,
ModifiedCallingAddress  =  8884000,  
ModifiedCalledAddress  =  8889000,  
No LastRedirectedPartyAddress

disconnect() the GC2 call on 8889000 connection.

GC2: TermConnDroppedEv : Terminal: irvCTIRD2

GC2: CallCtlTermConnDroppedEv : Terminal: irvCTIRD2

GC2: ConnDisconnectedEvent : Address: 8889000

GC2: CallCtlConnDisconnectedEv : Address: 8889000

GC2: TermConnDroppedEv : Terminal: irvCTIPort4

GC2: CallCtlTermConnDroppedEv : Terminal: irvCTIPort4

GC2: TermConnDroppedEv : Terminal: irvCTIPort5

GC2: CallCtlTermConnDroppedEv : Terminal: irvCTIPort5

 

GC2: ConnDisconnectedEvent : Address: 8884000

GC2: CallCtlConnDisconnectedEv : Address: 8884000

GC2: CallInvalidEvent

GC2: CallObservationEndedEv

CallingAddress  =  8884000,  
CalledAddress  =  8889000,  
CurrentCallingAddress  =  8884000,  
CurrentCalledAddress  =  8889000,
ModifiedCallingAddress  =  8884000,  
ModifiedCalledAddress  =  8889000,  
No  LastRedirectedPartyAddress

User1 invokes unhold() on GC1 terminal connection of irvCTIRD2.

disconnect() the GC1 call on 8889000 connection.

 

GC1: CallCtlTermConnTalkingEv

 

GC1: TermConnDroppedEv : Terminal: irvCTIRD2

GC1: CallCtlTermConnDroppedEv : Terminal: irvCTIRD2

GC1: ConnDisconnectedEvent : Address: 8889000

GC1: CallCtlConnDisconnectedEv : Address: 8889000

GC1: TermConnDroppedEv : Terminal: irvCTIPort6

GC1: CallCtlTermConnDroppedEv : Terminal: irvCTIPort6

GC1: ConnDisconnectedEvent : Address: 8886000

GC1: CallCtlConnDisconnectedEv : Address: 8886000

GC1: CallInvalidEvent

GC1: CallObservationEndedEv

 

CallingAddress  =  8886000,  
CalledAddress  =  8889000,  
CurrentCallingAddress  =  8886000,  
CurrentCalledAddress  =  8889000,
ModifiedCallingAddress  =  8886000,  
ModifiedCalledAddress  =  8889000,  
No LastRedirectedPartyAddress

CTI Remote Device use cases group 6

Use Cases Group 6 (CTIRD URI-Dialing basic Incoming & Outgoing DVO call scenarios)

Pre-conditions on Use Cases group 6 below with default jtapi.ini settings, unless specified explicitly (Note: The CTI Ports have Auto-Accept enabled):

  • Provider is IN_SERVICE state.
  • Device A (CTI Remote Device - Name: "irvCTIRD3", Line A (DN: 8889001, Directory URIs: "8889001A@cisco.com"))
  • Remote Destination 1 (Name: "IRVCell1", Number: "916267829523", Active RD: true)
  • Device B (CTI Port - Name: "irvCTIPort2", Line B (DN: 8882000, Directory URIs: "8882000A@cisco.com"))

Scenario 6-1 (Basic Incoming call from CTI Port to CTI Remote Device via URI) :

B calls A with GC1 as GCID of call. Application is observing both A and B.

Action

Events

Call info

User1 invokes call. connect (irvCTIPort2, 8882000, "8889001A@cisco.com")

GC1: CallActiveEvent

GC1: ConnCreatedEvent 8882000

GC1: ConnConnectedEvent 8882000

GC1: CallCtlConnInitiatedEv 8882000

GC1: TermConnCreatedEvent irvCTIPort2

GC1: TermConnActiveEvent irvCTIPort2

GC1: CallCtlTermConnTalkingEv irvCTIPort2

GC1: CallCtlConnDialingEv 8882000

GC1: CallCtlConnEstablishedEv 8882000

GC1: ConnCreatedEvent 8889001

GC1: ConnInprogressEvent 8889001

GC1: CallCtlConnOfferedEv 8889001

GC1: ConnAlertingEvent 8889001

GC1: CallCtlConnAlertingEv 8889001

GC1: TermConnCreatedEvent irvCTIRD3

GC1: TermConnRingingEvent irvCTIRD3

GC1: CallCtlTermConnRingingEv irvCTIRD3

 

CallingAddress  =  8882000,  
CalledAddress  =  8889001,  
CurrentCallingAddress  =  8882000,  
CurrentCalledAddress  =  8889001,
ModifiedCallingAddress  =  8882000,  
ModifiedCalledAddress  =  8889001,  
No LastRedirectedPartyAddress

irvCTIRD3's Active remote destination of 916267829523 answers the call.

 

GC1: ConnConnectedEvent 8889001

GC1: CallCtlConnEstablishedEv 8889001

GC1: TermConnActiveEvent irvCTIRD3

GC1: CallCtlTermConnTalkingEv irvCTIRD3

 

CallingAddress  =  8882000,  
CalledAddress  =  8889001,  
CurrentCallingAddress  =  8882000,  
CurrentCalledAddress  =  8889001,
ModifiedCallingAddress  =  8882000,  
ModifiedCalledAddress  =  8889001,  
No LastRedirectedPartyAddress

Disconnect() the call on 8882000 connection.

GC1: TermConnDroppedEv irvCTIPort2

GC1: CallCtlTermConnDroppedEv irvCTIPort2

GC1: ConnDisconnectedEvent 8882000

GC1: CallCtlConnDisconnectedEv 8882000

GC1: TermConnDroppedEv irvCTIRD3

GC1: CallCtlTermConnDroppedEv irvCTIRD3

GC1: ConnDisconnectedEvent 8889001

GC1: CallCtlConnDisconnectedEv 8889001

GC1: CallInvalidEvent

GC1: CallObservationEndedEv

 

CallingAddress  =  8882000,  
CalledAddress  =  8889001,  
CurrentCallingAddress  =  8882000,  
CurrentCalledAddress  =  8889001,
ModifiedCallingAddress  =  8882000,  
ModifiedCalledAddress  =  8889001,  
No LastRedirectedPartyAddress

Scenario 6-2 (Basic Outgoing DVO call from CTI Remote Device to CTI Port via URI) :

A calls B with GC1 as GCID of call. Application is observing both A and B.

Action

Events

Call info

User1 invokes call. connect (irvCTIRD3, 8889001, "8882000A@cisco.com")

 

GC1: CallActiveEvent

GC1: ConnCreatedEvent 8889001

GC1: ConnInprogressEvent 8889001

GC1: CallCtlConnOfferedEv 8889001

 

CallingAddress  =  Unknown,  
CalledAddress  =  8889001,  
CurrentCallingAddress  =  Unknown,  
CurrentCalledAddress  =  8889001,
ModifiedCallingAddress  =  Unknown,  
ModifiedCalledAddress  =  8889001,  
No LastRedirectedPartyAddress

irvCTIRD3's Active remote destination of 916267829523 answers the call.

 

GC1: ConnConnectedEvent 8889001

GC1: CallCtlConnEstablishedEv 8889001

GC1: TermConnCreatedEvent irvCTIRD3

GC1: TermConnActiveEvent irvCTIRD3

GC1: CallCtlTermConnTalkingEv irvCTIRD3

GC1: ConnCreatedEvent 8882000

GC1: ConnInprogressEvent 8882000

GC1: CallCtlConnOfferedEv 8882000

GC1: ConnAlertingEvent 8882000

GC1: CallCtlConnAlertingEv 8882000

GC1: TermConnCreatedEvent irvCTIPort2

GC1: TermConnRingingEvent irvCTIPort2

GC1: CallCtlTermConnRingingEv irvCTIPort2

 

CallingAddress  =  Unknown,  
CalledAddress  8889001,  
CurrentCallingAddress  =  8889001,  
CurrentCalledAddress  =  8882000,
ModifiedCallingAddress  =  8889001,  
ModifiedCalledAddress  =  8882000,  
No LastRedirectedPartyAddress

Answer() the call on 8882000 terminal connection.

 

GC1: ConnConnectedEvent 8882000

GC1: CallCtlConnEstablishedEv 8882000

GC1: TermConnActiveEvent irvCTIPort2

GC1: CallCtlTermConnTalkingEv irvCTIPort2

CallingAddress  =  Unknown,  
CalledAddress  =  8889001,  
CurrentCallingAddress  =  8889001,  
CurrentCalledAddress  =  8882000,
ModifiedCallingAddress  =  8889001,  
ModifiedCalledAddress  =  8882000,  
No LastRedirectedPartyAddress

Disconnect() the call on 8889001 connection.

 

GC1: TermConnDroppedEv irvCTIRD3

GC1: CallCtlTermConnDroppedEv irvCTIRD3

GC1: ConnDisconnectedEvent 8889001

GC1: CallCtlConnDisconnectedEv 8889001

GC1: TermConnDroppedEv irvCTIPort2

GC1: CallCtlTermConnDroppedEv irvCTIPort2

GC1: ConnDisconnectedEvent 8882000

GC1: CallCtlConnDisconnectedEv 8882000

GC1: CallInvalidEvent

GC1: CallObservationEndedEv

 

CallingAddress  =  Unknown,  
CalledAddress  =  8889001,  
CurrentCallingAddress  =  8889001,  
CurrentCalledAddress  =  8882000,
ModifiedCallingAddress  =  8889001,  
ModifiedCalledAddress  =  8882000,  
No LastRedirectedPartyAddress

CTI RD Call Forward

Table 1  Phone A Calls CTIRD when CTI remote device is observed, active RD is not set and "Route calls to all remote destinations when client is not connected" is enabled. A - IP Phone, B - CTI-RD, C - RDD1, D - RDD2, E - Enterprise line
Action Events Call Info

User1 Opens Provider and adds a provider observer

Add Call Observer on A, B and E

ProvInServiceEv
A calls B

CallActiveEv on A, B, E

ConnCreatedEv on A, B, E

ConnConnectedEv on A

CallCtlConnInitiatedEv on A

TermConnCreatedEv on A, B, E

TermConnActiveEvent on A

CallCtlTermConnTalkingEv on A

CallCtlConnDialingEv on A

CallCtlConnEstablishedEv on A

ConnCreatedEv on B

ConnInProgressEv on B, E

CallCtlConnOfferedEv on B, E

ConnAlertingEv on A, B, E

CallCtlConnAlertingEv on A, B, E

TermConnCreated on Term B

TermConnRingingEv on B, E

CallCtlTermConnRingingEv on B, E

All RDD's will ring
C answers the call

At Step 3:

ConnConnectedEv on B

CallCtlConnEstablishedEv on B

TermConnActiveEvent on B

CallCtlTermConnTalkingEv on B

Disconnects the call

At Step 4:

TermConnDroppedEv on A, B, E

CallCtlTermConnDroppedEv on A, B, E

ConnDisconnectedEv on A, B, E

CallCtlConnDisconnectedEv on A, B, E

CallInvalidEv

CallObservationEndedEv on A, B, E

Table 2  Phone A Calls CTIRD when CTI remote device is observed, active RD is not set and "Route calls to all remote destinations when client is not connected "is disabled. A - IP Phone, B - CTI-RD, C - RDD1, D - RDD2
Action Events Call Info

User1 Opens Provider and adds a provider observer

Opens only A and no events for B

ProvInServiceEv
GC1: A calls B

CallActiveEv on A, B,

ConnCreatedEv on A, B,

ConnConnectedEv on A

CallCtlConnInitiatedEv on A

TermConnCreatedEv on A, B,

TermConnActiveEvent on A

CallCtlTermConnTalkingEv on A

CallCtlConnDialingEv on A

CallCtlConnEstablishedEv on A

ConnAlertingEv on A, B,

CallCtlConnAlertingEv on A, B,

ConnInProgressEv on B

CallCtlConnOfferedEv on B

TermConnRingingEv on B

CallCtlTermConnRingingEv on B

Call will disconnect with message USER_BUSY ConnFailedEv for A USER_BUSY on Shared enterprise line
Table 3  Phone A Calls CTIRD when CTI remote device is observed , Remote destination is not configured and "Route calls to all remote destinations when client is not connected" is enabled.A- IP Phone, B - CTI-RD. VoiceMail is configured
Action Events Call Info
User1 Opens Provider and adds a provider observer ProvInServiceEv
GC1: A calls B

CallActiveEv on A, B,

ConnCreatedEv on A, B

ConnConnectedEv on A

CallCtlConnInitiatedEv on A

TermConnCreatedEv on A, B

TermConnActiveEvent on A

CallCtlTermConnTalkingEv on A

CallCtlConnDialingEv on A

CallCtlConnEstablishedEv on A

ConnInProgressEv on VoiceMail of B

CallCtlConnOfferedEv on VoiceMail of B

ConnAlertingEv on VoiceMail of B

CallCtlConnAlertingEv on VoiceMail of B

Call will Route to Voice mail number Call will route to voice mail number
Table 4  Phone A Calls CTIRD when CTI remote device is observed , Remote destination is not configured and "Route calls to all remote destinations when client is not connected" is disabled. A - IP Phone, B - CTI-RD. VoiceMail is configured for B
Action Events Call Info

User1 Opens Provider and adds a provider observer

Only A is observed

ProvInServiceEv
A calls B

CallActiveEv on A, B

ConnCreatedEv on A, B

ConnConnectedEv on A

CallCtlConnInitiatedEv on A

TermConnCreatedEv on A, B

TermConnActiveEvent on A

CallCtlTermConnTalkingEv on A

CallCtlConnDialingEv on A

CallCtlConnEstablishedEv on A

ConnAlertingEv on A, B, C

CallCtlConnAlertingEv on A, B

ConnInProgressEv on B

CallCtlConnOfferedEv on B

TermConnRingingEv on B

CallCtlTermConnRingingEv on B

Call will Route to Voice mail number Call will route to voice mail number
Table 5  Phone A Calls CTIRD when CTI remote device is observed, active RD is set and "Route calls to all remote destinations when client is not connected" is enabled. A IP Phone, B CTI-RD, C RDD1, D RDD2
Action Events Call Info

User1 Opens Provider and adds a provider observer

Applications adds C as the active remote destination on B

ProvInServiceEv
A calls B

CallActiveEv on A, B

ConnCreatedEv on A, B

ConnConnectedEv on A

CallCtlConnInitiatedEv on A

TermConnCreatedEv on A, B

TermConnActiveEvent on A

CallCtlTermConnTalkingEv on A

CallCtlConnDialingEv on A

CallCtlConnEstablishedEv on A

ConnAlertingEv on A, B

CallCtlConnAlertingEv on A, B

ConnInProgressEv on B

CallCtlConnOfferedEv on B

TermConnRingingEv on

CallCtlTermConnRingingEv on B

C answers the call

ConnConnectedEv on B

CallCtlConnEstablishedEv on B

TermConnActiveEvent on B

CallCtlTermConnTalkingEv on B

C Disconnects the call

TermConnDroppedEv on A, B

CallCtlTermConnDroppedEv on A, B

ConnDisconnectedEv on A, B

CallCtlConnDisconnectedEv on A, B

CallObservationEndedEv on A, B

Table 6  Phone A Calls CTIRD when CTI remote device is observed, active RD is set and "Route calls to all remote destinations when client is not connected" is disabled. A IP Phone, B CTI-RD, C RDD1, D RDD2
Action Events Call Info

User1 Opens Provider and adds a provider observer

Applications adds C as the active remote destination on B

ProvInServiceEv
A calls B

CallActiveEv on A, B

ConnCreatedEv on A, B

ConnConnectedEv on A

CallCtlConnInitiatedEv on A

TermConnCreatedEv on A, B

TermConnActiveEvent on A

CallCtlTermConnTalkingEv on A

CallCtlConnDialingEv on A

CallCtlConnEstablishedEv on A

ConnAlertingEv on A, B,

CallCtlConnAlertingEv on A, B

ConnInProgressEv on B

CallCtlConnOfferedEv on B

TermConnRingingEv on B

CallCtlTermConnRingingEv on B

C answers the call

ConnConnectedEv on B

CallCtlConnEstablishedEv on B

TermConnActiveEvent on B

CallCtlTermConnTalkingEv on B

C Disconnects the call

TermConnDroppedEv on A, B

CallCtlTermConnDroppedEv on A, B

ConnDisconnectedEv on A, B

CallCtlConnDisconnectedEv on A, B

CallObservationEndedEv on A, B

Table 7  Phone A Calls CTIRD when CTI remote device is observed, active RD is not set and "Route calls to all remote destinations when client is not connected" is enabled. A - IP Phone, B - CTI-RD, C - RDD1, D - RDD2, E - Enterprise line
Action Events Call Info

User1 Opens Provider and adds a provider observer

Add Call Observer on A, B and E

ProvInServiceEv
A calls B

CallActiveEv on A, B, E

ConnCreatedEv on A, B, E

ConnConnectedEv on A

CallCtlConnInitiatedEv on A

TermConnCreatedEv on A, B, E

TermConnActiveEvent on A

CallCtlTermConnTalkingEv on A

CallCtlConnDialingEv on A

CallCtlConnEstablishedEv on A

ConnAlertingEv on A, B, E

CallCtlConnAlertingEv on A, B, E

ConnInProgressEv on B, E

CallCtlConnOfferedEv on B, E

TermConnRingingEv on B, E

CallCtlTermConnRingingEv on B, E

All RDD will ring
C answers the call

ConnConnectedEv on B

CallCtlConnEstablishedEv on B

TermConnActiveEvent on B

CallCtlTermConnTalkingEv on B

C Disconnects the call

TermConnDroppedEv on A, B, E

CallCtlTermConnDroppedEv on A, B, E

ConnDisconnectedEv on A, B, E

CallCtlConnDisconnectedEv on A, B, E

CallObservationEndedEv on A, B, E

Table 8  Phone A Calls CTIRD when CTI remote device is observed, active RD is not set and "Route calls to all remote destinations when client is not connected "is disabled. A - IP Phone, B - CTI-RD, C - RDD1, D - RDD2
Action Events Call Info

User1 Opens Provider and adds a provider observer

Add Call Observers on A and B

ProvInServiceEv
A calls B

CallActiveEv on A, B,

ConnCreatedEv on A, B,

ConnConnectedEv on A

CallCtlConnInitiatedEv on A

TermConnCreatedEv on A, B,

TermConnActiveEvent on A

CallCtlTermConnTalkingEv on A

CallCtlConnDialingEv on A

CallCtlConnEstablishedEv on A

ConnAlertingEv on A, B,

CallCtlConnAlertingEv on A, B,

ConnInProgressEv on B

CallCtlConnOfferedEv on B

TermConnRingingEv on B

CallCtlTermConnRingingEv on B

All RDD will ring
call will disconnect with message USER_BUSY USER_BUSY on Shared enterprise line
Table 9  Phone A Calls CTIRD when CTI remote device is observed, Remote destination is not configured and "Route calls to all remote destinations when client is not connected" is enabled. A - IP Phone, B - CTI-RD, C - RDD1, D - RDD2
Action Events Call Info

User1 Opens Provider and adds a provider observer

Add Call Observers on A and B

ProvInServiceEv
A calls B

CallActiveEv on A, B,

ConnCreatedEv on A, B

ConnConnectedEv on A

CallCtlConnInitiatedEv on A

TermConnCreatedEv on A, B

TermConnActiveEvent on A

CallCtlTermConnTalkingEv on A

CallCtlConnDialingEv on A

CallCtlConnEstablishedEv on A

ConnAlertingEv on A, B

CallCtlConnAlertingEv on A, B

ConnInProgressEv on B

CallCtlConnOfferedEv on B

TermConnRingingEv on B

CallCtlTermConnRingingEv on B

Call will Route to Voice mail number Call will route to voice mail number
Table 10  Phone A Calls CTIRD when CTI remote device is observed , Remote destination is not configured and "Route calls to all remote destinations when client is not connected" is disabled. A - IP Phone, B - CTI-RD, C - RDD1, D - RDD2
Action Events Call Info

User1 Opens Provider and adds a provider observer

Add Call Observers on A and B

ProvInServiceEv
A calls B

CallActiveEv on A, B

ConnCreatedEv on A, B

ConnConnectedEv on A

CallCtlConnInitiatedEv on A

TermConnCreatedEv on A, B

TermConnActiveEvent on A

CallCtlTermConnTalkingEv on A

CallCtlConnDialingEv on A

CallCtlConnEstablishedEv on A

ConnAlertingEv on A, B, C

CallCtlConnAlertingEv on A, B

ConnInProgressEv on B

CallCtlConnOfferedEv on B

TermConnRingingEv on B

CallCtlTermConnRingingEv on B

Call will Route to Voice mail number Call will route to voice mail number

Device and Line Restriction

S.No

Scenario

Events

1

Application has Devices T1, T2, T3 whose lines are A1, A2, A3 in the control list. T1 and A3 is added into the restricted list. Application opens the provider

Application queries for is Restricted on T1, T2, T3

CiscoTerminal.isRestricted() returns true for T1 and false for T2 and T3

Application queries for is Restricted on Address A1, A2, A3

CiscoAddress.isRestricted() returns true for A1, A3, false for A2.

 

CiscoAddress.getRestrictedAddrTerminals() on A1, A3 returns T1, T3 respectively, returns null for A2.

Application tries to addObserver and addCallObserver on T1, T2, T3, A1, A2, A3

addObserver and addCallObserver fails for T1, A1, A3. For T3 observer is added, but no events are received on A3. For A2, application will be able to add observers successfully and events will be received

2

Application has Devices T1, T2, T3 whose lines are A1, A2, A3 in the control list.

Application opens the provider and adds observer on all terminals and addresses.

CiscoTermRestrictedEv for T1
CiscoAddrRestrictedEv for L1
CiscoAddrRestrictedEv for A2 sent to providerObserver.

T1 and A2 are added to the restricted list.

CiscoTermOutOfServiceEv for T1
CiscoAddrOutOfServiceEv for L1
CiscoAddrOutOfServiceEv for A2

T1 and L2 are removed from restricted list

CiscoTermActivatedEv for T1 and
CiscoAddrActivatedEv for A1
CiscoAddrActivatedEv for A2 sent to providerObserver.
CiscoTermInServiceEv for T1 and
CiscoAddrInServiceEv for A1
CiscoAddrInServiceEv for A2 sent to terminal and address observers.

3

Application has Devices T1, T2, T3 whose lines are A1, A1, A2 in the control list. A1 is the shared line on T1 and T2

Application opens provider and adds observer on all terminals/addresses

T1 is added into the restricted list.

Application will see CiscoTermRestrictedEv for T1 and CiscoAddrRestrictedOnTerminalEv which contains getAddress is L1 and getTerminal as T1. Application will also see CiscoTermOutOfServiceEv for T1 and CiscoAddrOutOfService for A1/T1

T1 is removed from the restricted list

CiscoTermActivatedEv for T1
CiscoAddrActivatedEv for L1
CiscoTermInServiceEv for T1
CiscoAddrInServiceEv for A1/T1

4

Application has Devices T1, T2, T3 whose lines are A1, A1, A1 in the control list. A1 is the shared line on T1, T2 and T3

Application opens the provider and adds observer on all terminals and addresses

A1 on T1 is added to the restricted list

CiscoAddrRestrictedOnTerminalEv for A1/T1
CiscoAddrOutOfServiceEv for A1/T1

A1 on T2 is added to therestricted list

CiscoAddrRestrictedOnTerminalEv for A1/T2
CiscoAddrOutOfServiceEv for A1/T2

A1 on T3 is added to therestricted list

CiscoAddrRestrictedEv for A1
CiscoAddrOutOfServiceEv for A1/T3

A1 on T1 is removed from the restricted list

CiscoAddrActivatedOnTerminalEv for A1/T1
CiscoAddrInServiceEv for A1/T1

A1 on T2 is removed from the restricted list

CiscoAddrActivatedOnTerminalEv for A1/T2
CiscoAddrInServiceEv for A1/T2

A1 on T3 is removed from the restricted list

CiscoAddrActivatedEv for A1
CiscoAddrInServiceEv for A1/T3

5

Application has Devices T1, T2, T3 whose lines are A1, A2, A3 in the control list.

Application opens the provider and adds observer on all terminals and addresses. A1 is involved in a call with party X.

CiscoAddrRestrictedEv for A1
CiscoAddrOutOfServiceEv for A1

A1 is added into the restricted list.

ConnDisconnectedEv
CallCtlConnDisconnectedEv
TermConnDroppedEv
CallCtlConnDroppedEv
CallInvalidEv

Device State Server

Do Not Disturb

Configuration: Application is observing terminal A and terminal B.

Scenario One

Application adds Terminal observer to terminal A using Terminal.addObserver(). Filter is enabled via setDNDChangedEvFilter. DND is enabled on the terminal. Application invokes getDNDStatus() from CiscoTerminal.

Action

Events

Call info

Application adds terminal observer to terminal A. Filter is enabled via setDNDChangedEvFilter() in CiscoTermEvFilter. DND is enabled on the terminal through phone or admin page.

Application invokes getDNDStatus() from CiscoTerminal.

NEW META EVENT_________

META_CALL_STARTING

CiscoTermDNDStatusChangedEv A

Cause: CAUSE_NORMAL for DND Status: true

DND status = true is returned to the application

N.A

Scenario Two

Application enables filter to receive events. Application adds Terminal observer to terminal A using Terminal.addObserver(). DND is enabled on the terminal. Application invokes getDNDStatus() from CiscoTerminal.

Action

Events

Call info

Application enables filter to receive events. Application adds terminal observer to terminal

A. DND is enabled on the device through phone or admin pages.

Application invokes getDNDStatus() from CiscoTerminal.

NEW META

EVENT_________META_CALL_STARTING

CiscoTermDNDStatusChangedEv A Cause: CAUSE_NORMAL for DND Status: true

DND status = true is returned to the application

N.A

Scenario Three

Application adds Terminal observer to terminal A using Terminal.addObserver(). Filter is disabled via setDNDChangedEvFilter() in CiscoTermEvFilter. Application invokes getDNDStatus() from CiscoTerminal.

Action

Events

Call info

Application adds Terminal observer to terminal A using Terminal.addObserver(). Filter is disabled via setDNDChangedEvFilter() in CiscoTermEvFilter.

Application invokes getDNDStatus() from CiscoTerminal.

CiscoTermDNDStatusChangedEv is not delivered to application.

N.A

Scenario Four

Application does not add Terminal observer to terminal. Application invokes getDNDStatus() from CiscoTerminal.

Action

Events

Call info

Application does not add Terminal observer to terminal. Application invokes getDNDStatus() from CiscoTerminal.

InvalidStateException is thrown

N.A

Scenario Five

Application does not enable the filter to receive events. Application adds Terminal observer to terminal A. DND status is set to true through the phone or admin pages. Application now enables the filter to receive events. Application invokes getDNDStatus() from CiscoTerminal.

Action

Events

Call info

Application does not enable the filter to receive events.Application adds Terminal observer to terminal A. DND status is set to true through the phone or admin pages.

Application now enables the filter to receive events

 

Application invokes getDNDStatus() from

CiscoTerminal.

CiscoTermDNDStatusChangedEv is not delivered to application.

 

NEW META EVENT_________

META_CALL_STARTING

CiscoTermDNDStatusChangedEv A Cause: CAUSE_NORMAL for DND Status: true

DND status = true is returned to application

N.A

Scenario Six

Application sets DND status to false by invoking the setDNDStatus() interface on CiscoTerminal.

Action

Events

Call info

Application invokes setDNDStatus() from CiscoTerminal.

NEW META EVENT_________

META_CALL_STARTING

CiscoTermDNDStatusChangedEv A

Cause: CAUSE_NORMAL for DND Status: false

N.A

Scenario Seven

Application 1 and Application 2 are observing terminal a, and both the applications have enabled the filter to receive events. Application 1 sets DND status to false on Terminal A. Application 2 is observing Terminal A.

Action

Events

Call info

Application invokes setDNDStatus() from CiscoTerminal.

NEW META EVENT_________

META_CALL_STARTING

CiscoTermDNDStatusChangedEv A

Cause: CAUSE_NORMAL for DND Status: false

N.A

Scenario Eight

DND Type is RingerOff and CFNA is not set. Terminal B calls Terminal A. Call is presented to A and call is not answered.

Action

Events

Call info

Application invokes redirect() API with feature priority set to 3 from CiscoCall.

Call is presented to the device, irrespective of the DND settings on the device. CER call overrides DND setting.

N.A

Application invokes selectRoute() API with feature priority set to 3 from CiscoRouteSession.

Call is presented to the device, irrespective of the DND settings on the device. CER call overrides DND setting.

N.A

Scenario Nine

Action

Events

Call info

DND Type is RingerOff and CFNA is not set. Terminal B calls Terminal A .Call is presented to A and call is not answered.

ConnFailedEv Cause: CAUSE_NO ANSWER

N.A

Scenario Ten

DND Type is CallReject and CFB is not set. Terminal B calls Terminal A. Call is not presented to A.

Action

Events

Call info

DND Type is CallReject and CFB is not set. Terminal B calls Terminal A. Call is not presented to A

ConnFailedEv Cause: CAUSE_USER BUSY

N.A

Scenario Eleven

DND is enabled on the terminal A. Terminal A comes IN_SERVICE. Application invokes getDNDStatus() on CiscoTerm in ServiceEv.

Action

Events

Call info

DND is enabled on the terminal A. Terminal A comes IN_SERVICE.

CiscoTermInServiceEv

Cause: CAUSE_NORMAL

DND Status = true

N.A

Scenario Twelve

DND is enabled on terminal A. Terminal A comes IN_SERVICE. Application invokes setDNDStatus(). DB failure happens after the setDNDStatus() request is sent.

Action

Events

Call info

DND is enabled on the terminal A. Terminal A comes IN_SERVICE. Application invokes setDNDStatus(). DB failure follows and value is not updated in DB.

PlatformException is thrown "Could not meet post conditions of setDNDStatus()"

 

No CiscoTermDNDStatusChangedEv is received.

N.A

Scenario Thirteen

DND is enabled on the terminalA. Terminal A comes IN_SERVICE, DND status is currently true in phone/admin. Application tries to set the same value i.e. invokes setDNDStatus(true).

Action

Events

Call info

DND is enabled on the terminal A. Terminal A comes IN_SERVICE.DND status is currently true in phone/admin.Application tries to set the same value i.e. invokes setDNDStatus(true).

InvalidStateException is caught: DND status with value true is already set

No CiscoTermDNDStatusChangedEv is received.

N.A

DND-R

Scenario One

Application adds Terminal observer to terminal A using Terminal.addObserver (). DND-R is enabled on the terminal B via the Admin page or the Common profile page.

Action

Events

Call info

Application adds terminal observers to terminal A and B. DND-R is enabled on the terminal B through phone or admin page.

A issues Call.connect to B with the feature Priority = 1 (Normal)

NEW META EVENT_________

META_CALL_STARTING

CallActiveEv for callID = GC1 Cause: CAUSE_NEW_CALL

ConnCreatedEv for A Cause: CAUSE_NORMAL

ConnConnectedEv for A Cause: CAUSE_NORMAL

CallCtlConnInitiatedEv for A Cause: CAUSE_NORMAL

ConnFailedEv B Cause:.

Cause: CAUSE_USERBUSY.

N.A

Scenario Two

Application adds Terminal observer to terminal A using Terminal.addObserver (). DND-R is enabled on the Terminal B via the Admin page or the Common profile page.

Action

Events

Call info

Application adds terminal observers to terminal A and B. DND-R is enabled on the terminal B through phone or admin page.

A issues Call.connect to B with the feature Priority = 3 (Emergency)

NEW META EVENT_________

META_CALL_STARTING

CallActiveEv for callID = GC1 Cause: CAUSE_NEW_CALL

ConnCreatedEv for A Cause: CAUSE_NORMAL

ConnConnectedEv for A Cause: CAUSE_NORMAL

CallCtlConnInitiatedEv for A Cause: CAUSE_NORMAL

TermConnCreatedEv for A Cause: CAUSE_NORMAL

TernConnActiveEv for A Cause:CAUSE_NORMAL

CallCtlConnDialingEv for A Cause: CAUSE_NORMAL

CallCtlConnEstabilishedEv for A Cause: CAUSE_NORMAL

ConnCreatedEv for B cause:CAUSE_NORMAL

ConnInProgressEv for B Cause:CAUSE_NORMAL

CallCtlConnOfferedEv for B Cause: CAUSE_NORMAL

ConnAlertingEv for B Cause:CAUSE_NORMAL

CallCtlConnAlertingEv for B Cause: CAUSE_NORMAL

TermConnCreatedEv for B Cause: CAUSE_NORMAL

TermConnRingingEv for B Cause: CAUSE_NORMAL

CallCtlTermConnTalkingEv Cause: CAUSE_NORMAL

Calling: A

Called: B

Scenario Three

DND-Call reject with CFB not set.

Action

Events

Call info

Application adds terminal observers to terminal A and B. DND-R is enabled on the terminal B through phone or admin page with no CFB Setting.

Terminal A issues Call.connect to Terminal B.

NEW META EVENT_________

META_CALL_STARTING

CallActiveEv for callID = GC1 Cause: CAUSE_NEW_CALL

ConnCreatedEv for A Cause:CAUSE_NORMAL

ConnConnectedEv for A Cause:CAUSE_NORMAL

CallCtlConnInitiatedEv for A Cause:CAUSE_NORMAL

ConnFailedEv B Cause:CAUSE_USERBUSY.

NA

Scenario Four

DND – Call reject with CFB set to C.

Action

Events

Call info

Application is Observing Terminal A, B & C.

DND-R is Enabled in Terminal B with CFB set to Terminal C.

Terminal A issues Call.connect to Terminal B.

Call is not Presented on Terminal B and is Forwarded to Terminal C.

NEW META EVENT_________

META_CALL_STARTING

CallActiveEv for callID = GC1 Cause: CAUSE_NEW_CALL

ConnCreatedEv for A Cause:CAUSE_NORMAL

ConnConnectedEv for A Cause: CAUSE_NORMAL

CallCtlConnInitiatedEv for A Cause: CAUSE_NORMAL

TermConnCreatedEv for A Cause: CAUSE_NORMAL

TernConnActiveEv for A Cause: CAUSE_NORMAL

CallCtlConnDialingEv for A Cause: CAUSE_NORMAL

CallCtlConnEstabilishedEv for A Cause: CAUSE_NORMAL

ConnCreatedEv for C cause: REDIRECTED CALL

ConnInProgressEv for C Cause: REDIRECTED CALL

CallCtlConnOfferedEv for C Cause: REDIRECTED CALL

ConnAlertingEv for C Cause REDIRECTED CALL

CallCtlConnAlertingEv for C Cause: REDIRECTED CALL

TermConnCreatedEv for C Cause: REDIRECTED CALL

TermConnRingingEv for C Cause: REDIRECTED CALL

CallCtlTermConnTalkingEv Cause: CAUSE_REDIRECTED

Calling: A

Called: C

LastRedirectedParty: B

Dynamic CTIPort Registration Per Call

The following diagram illustrates the message flows for Dynamic CTIPort Registration per call.



E911 Teleworker

SelectRoute Method

Use Case

Events

Call info

No changes in use case with selectRoute Method

No changes in the events

No changes in the callinfo

Redirect Method

Use Case

Events

Call info

No changes in use case with redirect Method

No changes in the events

No changes in the callinfo

Encryption Enhancement

Table 11  Service Parameter "Require Public key encryption" is set to "false". Application is using a pre 10.x CiscoJTAPI version
Action Result Info
Application opens a provider and adds a provider observer ProvInServiceEv
Table 12  Service Parameter "Require Public key encryption" is set to "true". Application is using a pre 10.x CiscoJTAPI version
Action Result Info
Application opens a provider PlatformException getErrorCode() = CiscoJtapiException. INCOMPATIBLE_PROTOCOL_ VERSION
Table 13  Service Parameter "Require Public key encryption" is set to "false". Application is using a 10.x CiscoJTAPI version
Action Result Info
Application opens a provider and adds a provider observer ProvInServiceEv
Table 14  Service Parameter "Require Public key encryption" is set to "true". Application is using a 10.x CiscoJTAPI version
Action Result Info
Application opens a provider and adds a provider observer ProvInServiceEv
Table 15  SP is set to "true". Application is using 10.x CiscoJTAPI lib. Application has provided pub and sub ctimanager IP in the providerString
Action Result Info
Application opens a provider and adds a provider observer ProvInServiceEv
CTIManager on the server to which app is connected goes down ProvOutOfService

End to End Call Tracing

Actions

Events

Call info

1.a) Both A and B are in user’s control list.

Basic Call

A calls B; App is observing only B

GC1: CallActiveEv

GC1: ConnCreatedEv for B

GC1: ConnConnectedEv for B

GC1: CallCtlConnOfferedEv for B

 

 

GC1: ConnCreatedEv for A

GC1: ConnConnectedEv for A

GC1: TermConnCreatedEv for TB

GC1: TermConnActiveEvent for TB

GC1: CallCtlTermConnTalkingEv for TB

(

(CiscoConnection)(ConnCreatedEv for B).getConnection() ).getUniqueID(null) returns ID1

(

(CiscoConnection)(ConnCreatedEv for B).getConnection() ).getUniqueID(TB) returns ID1

 

(

(CiscoConnection)(ConnCreatedEv for A).getConnection() ).getUniqueID(term) will throw InvalidStateException

1.b) Only B is in User’s control list

Basic Call

A calls B; App is observing only B

 

GC1: CallActiveEv

GC1: ConnCreatedEv for B

GC1: ConnConnectedEv for B

GC1: CallCtlConnOfferedEv for B

 

 

 

GC1: ConnCreatedEv for A

GC1: ConnConnectedEv for A

……

……

GC1: TermConnCreatedEv for TB

GC1: TermConnActiveEvent for TB

GC1: CallCtlTermConnTalkingEv for TB

(

(CiscoConnection)(ConnCreatedEv for B).getConnection() ).getUniqueID(null) returns ID1

(

(CiscoConnection)(ConnCreatedEv for B).getConnection() ).getUniqueID(TB) returns ID1

 

 

 

(

(CiscoConnection)(ConnCreatedEv for A).getConnection() ).getUniqueID(term) will throw PrivilegeViolationException

 

2.a) Redirect in offering state Scenario All Observed

A calls B;

 

 

 

 

 

 

 

 

 

 

B redirects the call to C in offering state

 

 

 

 

 

 

 

 

C Accepts the call

 

 

C answers the call

GC1: CallActiveEv

GC1: ConnCreatedEv for A

GC1: CallCtlConnInitiatedEv for A

GC1: TermConnCreatedEv for TA

GC1: TermConnActiveEvent for TA

GC1: CallCtlTermConnTalkingEv for TA

GC1: ConnCreatedEv for B

GC1: ConnConnectedEv for B

GC1: CallCtlConnOfferedEv for B

GC1: TermConnCreatedEv for TB

 

 

GC1: ConnCreatedEv for C

GC1: ConnConnectedEv for C

GC1: CallCtlConnOfferedEv for C

GC1: TermConnDroppedEv for TB

GC1: CallCtlTermConnDroppedEv for TB

GC1: ConnDisconnectedEv for B

GC1: CallCtlConnDisconnectedEv for B

 

GC1: TermConnCreatedEv for TC

GC1: TermConnActiveEvent for TC

 

GC1: CallCtlConnEstablishedEv for C

GC1: CallCtlTermConnTalkingEv for TC

(

(CiscoConnection)(ConnCreatedEv for A).getConnection() ).getUniqueID(null) returns ID2

 

 

 

 

(

(CiscoConnection)(ConnCreatedEv for B).getConnection() ).getUniqueID(null) returns ID3

 

 

 

 

(

(CiscoConnection)(ConnCreatedEv for C).getConnection() ).getUniqueID(null) returns ID4

 

2.b) Redirect in connected state Scenario All Observed

 

A calls B

 

 

 

 

 

 

 

 

 

 

B answers

 

 

 

 

B redirects the call to C in connected state

 

GC1: CallActiveEv

GC1: ConnCreatedEv for A

GC1: ConnConnectedEv for A

GC1: CallCtlConnInitiatedEv for A

GC1: TermConnCreatedEv for TA

GC1: TermConnActiveEvent for TA

GC1: CallCtlTermConnTalkingEv for TA

GC1: ConnCreatedEv for B

GC1: ConnConnectedEv for B

GC1: CallCtlConnOfferedEv for B

GC1: TermConnCreatedEv for TB

 

 

GC1: ConnConnectedEv for A

GC1: CallCtlConnEstablishedEv for A

GC1: ConnConnectedEv for B

GC1: CallCtlConnEstablishedEv for B

 

 

 

GC1: ConnCreatedEv for C

GC1: ConnConnectedEv for C

GC1: CallCtlConnOfferedEv for C

GC1: TermConnCreatedEv for TC

GC1: TermConnActiveEvent for TC

GC1: CallCtlTermConnTalkingEv for TC

GC1: TermConnDroppedEv for TB

GC1: CallCtlTermConnDroppedEv for TB

GC1: ConnDisconnectedEv for B

GC1: CallCtlConnDisconnectedEv for B

(

(CiscoConnection)(ConnCreatedEv for A).getConnection() ).getUniqueID(null) returns ID6

 

 

 

 

(

(CiscoConnection)(ConnCreatedEv for B).getConnection() ).getUniqueID(null) returns ID7

 

 

 

 

 

 

 

 

 

 

(

(CiscoConnection)(ConnCreatedEv for C).getConnection() ).getUniqueID(null) returns ID8

 

3. Redirect Scenario Only B & C are Observed

 

A calls B; B answers

 

 

 

 

 

 

 

 

 

B redirects the call to C in connected state

 

GC1: CallActiveEv

GC1: ConnCreatedEv for B

GC1: ConnConnectedEv for B

GC1: CallCtlConnOfferedEv for B

GC1: ConnCreatedEv for A

GC1: ConnConnectedEv for A

GC1: TermConnCreatedEv for TB

GC1: TermConnActiveEvent for TB

GC1: CallCtlConnEstablishedEv for A

GC1: CallCtlConnEstablishedEv for B

GC1: CallCtlTermConnTalkingEv for TB

 

 

 

GC1: ConnCreatedEv for C

GC1: ConnConnectedEv for C

GC1: CallCtlConnOfferedEv for C

GC1: TermConnCreatedEv for TC

GC1: TermConnActiveEvent for TC

GC1: CallCtlTermConnTalkingEv for TC

GC1: TermConnDroppedEv for TB

GC1: CallCtlTermConnDroppedEv for TB

GC1: ConnDisconnectedEv for B

GC1: CallCtlConnDisconnectedEv for B

 

(

(CiscoConnection)(ConnCreatedEv for B).getConnection() ).getUniqueID(null) returns ID10

 

(

(CiscoConnection)(ConnCreatedEv for A).getConnection() ).getUniqueID(null) throws InvalidStateException

 

 

 

 

 

 

(

(CiscoConnection)(ConnCreatedEv for C).getConnection() ).getUniqueID(null) returns ID11

 

4. Conference Scenario; All observed

 

GC1: A calls B; B answers

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

GC2: B calls C; C answers

 

 

 

 

 

 

 

 

 

 

 

GC1.conference(GC2)

 

GC1: CallActiveEv

GC1: ConnCreatedEv for A

GC1: ConnConnectedEv for A

GC1: CallCtlConnInitiatedEv for A

GC1: TermConnCreatedEv for TA

GC1: TermConnActiveEvent for TA

GC1: CallCtlTermConnTalkingEv for TA

GC1: ConnCreatedEv for B

GC1: ConnConnectedEv for B

GC1: CallCtlConnOfferedEv for B

GC1: TermConnCreatedEv for TB

GC1: ConnConnectedEv for A

GC1: CallCtlConnEstablishedEv for A

GC1: ConnConnectedEv for B

GC1: CallCtlConnEstablishedEv for B

 

GC1: CallCtlTermConnHeldEv for TB

GC2: CallActiveEv

GC2: ConnCreatedEv for B

GC2: ConnConnectedEv for B

GC2: CallCtlConnInitiatedEv for B

GC2: TermConnCreatedEv for TB

GC2: TermConnActiveEvent for TB

GC2: CallCtlTermConnTalkingEv for TB

GC2: ConnCreatedEv for C

GC2: ConnConnectedEv for C

GC2: CallCtlConnOfferedEv for C

GC2: TermConnCreatedEv for TC

GC2: ConnConnectedEv for B

GC2: CallCtlConnEstablishedEv for B

GC2: ConnConnectedEv for C

 

GC1: CiscoConferenceStartEv

GC1: CiscoCallFeatureCancelledEv

GC2: CiscoCallChangedEv

GC1: ConnCreatedEvent for C

GC1: ConnConnectedEvent for C

GC1: CallCtlConnEstablishedEv for C

GC1: TermConnCreatedEvent for TC

GC1: TermConnActiveEvent for TC

GC1: CallCtlTermConnTalkingEv TC

GC2: TermConnDroppedEv for TC

GC2: CallCtlTermConnDroppedEv for TC

GC2: ConnDisconnectedEvent for C

GC2: CallCtlConnDisconnectedEv for C

GC2: TermConnDroppedEv for TB

GC2: CallCtlTermConnDroppedEv for TB

GC2: ConnDisconnectedEvent for B2

GC2: CallCtlConnDisconnectedEv for B2

GC2: CallInvalidEvent

GC1: CiscoConferenceEndEv

(

(CiscoConnection)(ConnCreatedEv for A).getConnection() ).getUniqueID(null) returns ID12

 

 

 

 

(

(CiscoConnection)(ConnCreatedEv for B).getConnection() ).getUniqueID(null) returns ID13

 

 

 

 

 

 

 

 

(

(CiscoConnection)(ConnCreatedEv for B).getConnection() ).getUniqueID(null) returns ID14

 

 

 

 

(

(CiscoConnection)(ConnCreatedEv for C).getConnection() ).getUniqueID(null) returns ID15

 

 

 

 

 

 

(

(CiscoConnection)(ConnCreatedEv for C).getConnection() ).getUniqueID(null) returns ID16

 

5. Transfer Scenario; All observed

 

GC1: A calls B; B answers

 

 

 

 

 

 

 

 

 

 

 

 

 

GC2: B calls C; C answers

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

GC1.transfer(GC2)

 

 

 

GC1: CallActiveEv

GC1: ConnCreatedEv for A

GC1: ConnConnectedEv for A

GC1: CallCtlConnInitiatedEv for A

GC1: TermConnCreatedEv for TA

GC1: TermConnActiveEvent for TA

GC1: CallCtlTermConnTalkingEv for TA

GC1: ConnCreatedEv for B

GC1: ConnConnectedEv for B

GC1: CallCtlConnOfferedEv for B

GC1: TermConnCreatedEv for TB

GC1: ConnConnectedEv for A

GC1: CallCtlConnEstablishedEv for A

GC1: ConnConnectedEv for B

GC1: CallCtlConnEstablishedEv for B

 

GC1: CallCtlTermConnHeldEv for TB

GC2: CallActiveEv

GC2: ConnCreatedEv for B

GC2: ConnConnectedEv for B

GC2: CallCtlConnInitiatedEv for B

GC2: TermConnCreatedEv for TB

GC2: TermConnActiveEvent for TB

GC2: CallCtlTermConnTalkingEv for TB

GC2: ConnCreatedEv for C

GC2: ConnConnectedEv for C

GC2: CallCtlConnOfferedEv for C

GC2: TermConnCreatedEv for TC

GC2: ConnConnectedEv for B

GC2: CallCtlConnEstablishedEv for B

GC2: ConnConnectedEv for C

 

GC2: CallCtlConnEstablishedEv for C

 

GC1: CiscoTransferStartEv

GC2: CiscoCallChangedEv

GC1: ConnCreatedEv for C

GC1: ConnConnectedEv for C

GC1: CallCtlConnEstablishedEv for C

GC1: TermConnCreatedEv for TC

GC1: TermConnActiveEvent for TC

GC1: CallCtlTermConnTalkingEv for TC

GC2: TermConnDroppedEv for TC

GC2: CallCtlTermConnDroppedEv for TC

GC2: ConnDisconnectedEv for C

GC2: CallCtlConnDisconnectedEv for C

GC1: TermConnDroppedEv for TB

GC1: CallCtlTermConnDroppedEv for TB

GC1: ConnDisconnectedEv for B

GC1: CallCtlConnDisconnectedEv for B

GC2: TermConnDroppedEv for TB

GC2: CallCtlTermConnDroppedEv for TB

GC2: ConnDisconnectedEv for B

GC2: CallCtlConnDisconnectedEv for B

GC2: CallInvalidEvent

GC2: CallObservationEndedEv

GC1: CiscoTransferEndEv

 

 

(

(CiscoConnection)(ConnCreatedEv for A).getConnection() ).getUniqueID(null) returns ID19

 

(

(CiscoConnection)(ConnCreatedEv for B).getConnection() ).getUniqueID(null) returns ID20

 

 

 

 

 

 

 

(

(CiscoConnection)(ConnCreatedEv for B).getConnection() ).getUniqueID(null) returns ID21

 

(

(CiscoConnection)(ConnCreatedEv for C).getConnection() ).getUniqueID(null) returns ID22

 

 

 

 

 

 

 

 

 

 

 

(

(CiscoConnection)(ConnCreatedEv for C).getConnection() ).getUniqueID(null) returns ID23

 

6. Shared Line Scenario; All Observed; DN B is present on T1, T2

 

A calls B;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

B(T1) Answers

 

 

 

 

 

GC1: CallActiveEv

GC1: ConnCreatedEv for A

GC1: ConnConnectedEv for A

GC1: CallCtlConnInitiatedEv for A

GC1: TermConnCreatedEv for TA

GC1: TermConnActiveEvent for TA

GC1: CallCtlTermConnTalkingEv for TA

GC1: CallCtlConnDialingEv for A

GC1: CallCtlConnEstablishedEv for A

GC1: ConnCreatedEv for B

GC1: ConnInProgressEv for B

GC1: CallCtlConnOfferedEv for B

GC1: ConnAlertingEv for B

GC1: TermConnCreatedEv for T1B

GC1: TermConnRingingEv for T1B

GC1: CallCtlTermConnRingingEv for T1B

GC1: TermConnCreatedEv for T2B

GC1: TermConnRingingEv for T2B

GC1: CallCtlTermConnRingingEv for T2B

 

GC1: ConnConnectedEv for B

GC1: CallCtlConnEstablishedEv for B

GC1: TermConnActiveEv for T1B

GC1: CallCtlTermConnTalkingEv for T1B

GC1: TermConnPassiveEv for T2B

GC1: CallCtlTermConnBridgedEv

 

 

 

 

(

(CiscoConnection)(ConnCreatedEv for A).getConnection() ).getUniqueID(TA) returns ID25

 

 

(

(CiscoConnection)(ConnCreatedEv for B).getConnection() ).getUniqueID(null) returns ID26

 

 

(

(CiscoConnection)(ConnCreatedEv for B).getConnection() ).getUniqueID(T1) returns ID26

 

(

(CiscoConnection)(ConnCreatedEv for B).getConnection() ).getUniqueID(T2) returns ID26

 

 

 

(Connection of B).getUniqueID(null) returns returns ID26

(Connection of B).getUniqueID(T1) returns returns ID26

(Connection of B).getUniqueID(T2) returns returns ID26

 

7. Shared Line Barge Scenario; All Observed; DN B is present on T1, T2

 

A calls B;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

B(T1) Answers

 

 

 

 

 

 

 

 

 

GC1: CallActiveEv

GC1: ConnCreatedEv for A

GC1: ConnConnectedEv for A

GC1: CallCtlConnInitiatedEv for A

GC1: TermConnCreatedEv for TA

GC1: TermConnActiveEvent for TA

GC1: CallCtlTermConnTalkingEv for TA

GC1: CallCtlConnDialingEv for A

GC1: CallCtlConnEstablishedEv for A

GC1: ConnCreatedEv for B

GC1: ConnInProgressEv for B

GC1: CallCtlConnOfferedEv for B

GC1: ConnAlertingEv for B

GC1: TermConnCreatedEv for T1B

GC1: TermConnRingingEv for T1B

GC1: CallCtlTermConnRingingEv for T1B

GC1: TermConnCreatedEv for T2B

GC1: TermConnRingingEv for T2B

GC1: CallCtlTermConnRingingEv for T2B

 

GC1: ConnConnectedEv for B

GC1: CallCtlConnEstablishedEv for B

GC1: TermConnActiveEv for T1B

GC1: CallCtlTermConnTalkingEv for T1B

GC1: TermConnPassiveEv for T2B

GC1: CallCtlTermConnBridgedEv

 

 

 

(

(CiscoConnection)(ConnCreatedEv for A).getConnection() ).getUniqueID(TA) returns ID27

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(Connection of B).getUniqueID(null) returns returns ID28

(Connection of B).getUniqueID(T1) returns returns ID28

(Connection of B).getUniqueID(T2) returns returns ID28

 

B(T2) Presses Barge

 

GC2: CallActiveEv

GC2: ConnCreatedEv for B

GC2: ConnConnectedEv for B

GC2: CallCtlConnInitiatedEv for B

GC2: TermConnCreatedEv for T2B

GC2: TermConnCreatedEv for T1B

GC2: CiscoCallChangedEv

GC1: TermConnActiveEv for T2B

GC1: CallCtlTermConnTalkingEv for T2B

GC2: TermConnDroppedEv for T2B

GC2: CallCtlTermConnDroppedEv for T2B

GC2: TermConnDroppedEv for T2B

GC2: CallCtlTermConnDroppedEv for T2B

GC2: ConnDisconnectedEv for B

GC2: CallCtlConnDisconnectedEv for B

GC2: CallInvalidEv

GC2: CallObservationEndedEv

 

( (CiscoConnection)(GC2: ConnCreatedEv for B).getConnection() ).getUniqueID(null) returns ID29

 

(GC1: Connection of B).getUniqueID(T1) returns returns ID28

(GC1: Connection of B).getUniqueID(T2) returns returns ID30

(GC1: Connection of B).getUniqueID(null) is unpredictible

(can be either of above two)

 

8. Park/Unpark Scenario (All Observed)

 

A calls B; B answers

 

 

 

 

 

 

 

 

 

 

 

 

 

B does PARK

 

 

 

 

 

 

C Unparks

 

 

 

GC1: CallActiveEv

GC1: ConnCreatedEv for A

GC1: ConnConnectedEv for A

GC1: CallCtlConnInitiatedEv for A

GC1: TermConnCreatedEv for TA

GC1: TermConnActiveEvent for TA

GC1: CallCtlTermConnTalkingEv for TA

GC1: ConnCreatedEv for B

GC1: ConnConnectedEv for B

GC1: CallCtlConnOfferedEv for B

GC1: TermConnCreatedEv for TB

GC1: ConnConnectedEv for A

GC1: CallCtlConnEstablishedEv for A

GC1: ConnConnectedEv for B

GC1: CallCtlConnEstablishedEv for B

 

GC1: ConnCreatedEv for ParkDN

GC1: CallCtlConnQueuedEv for ParkDN

GC1: TermConnDroppedEv for TB

GC1: CallCtlTermConnDroppedEv for TB

GC1: ConnDisconnectedEv for B

GC1: CallCtlConnDisconnectedEv for B

GC2: CallActiveEv

GC2: ConnCreatedEv for C

GC2: ConnConnectedEv for C

GC2: CallCtlConnInitiatedEv for C

GC2: TermConnCreatedEv for TC

GC2: CiscoCallChangedEv

GC1: ConnCreatedEv for C

GC1: ConnConnectedEv for C

GC1: TermConnCreatedEv for TC

GC1: ConnDisconnectedEv for ParkDN

GC1: CallCtlConnDisconnectedEv for ParkDN

GC2: TermConnDroppedEv for TC

GC2: CallCtlTermConnDroppedEv for TC

GC2: ConnDisconnectedEv for C

GC2: CallCtlConnDisconnectedEv for C

GC2: CallInvalidEv

GC2: CallObservationEndedEv

 

 

(

(CiscoConnection)(ConnCreatedEv for A).getConnection() ).getUniqueID(null) returns ID31

 

 

(

(CiscoConnection)(ConnCreatedEv for B).getConnection() ).getUniqueID(null) returns ID32

 

 

 

 

 

( (CiscoConnection)(GC1: ConnCreatedEv for ParkDN).getConnection() ).getUniqueID(null) throws PrivilegeVoilationException

 

 

 

 

 

 

( (CiscoConnection)(GC2: ConnCreatedEv for C).getConnection() ).getUniqueID(null) returns ID34

 

 

 

 

 

 

 

( (CiscoConnection)(GC1: ConnCreatedEv for C).getConnection() ).getUniqueID(null) returns ID35

9. Conference Chaining Scenario; All Observed

 

GC1: A calls B; B answers and adds C to conference

 

 

 

GC3: C calls D; D answers and adds E to conference

 

 

 

 

App sends GC1.conference(GC3) to chain two conferences

 

 

 

 

 

 

 

 

 

 

GC1 and GC3 are created as normal

 

 

GC1 has connections for A, B and C(Held)

 

 

 

 

 

GC3 has connections for C(Talking), D and E

 

 

 

 

 

GC3: ConnCreatedEvent for cBridge-GC1

GC3: CiscoConferenceChainAddedEv

GC3: ConnConnectedEvent for cBridge-GC1

GC3: CallCtlConnEstablishedEv for cBridge-GC1

GC3: TermConnDroppedEv for TC

GC3: CallCtlTermConnDroppedEv for TC

GC3: ConnDisconnectedEvent for C

GC3: CallCtlConnDisconnectedEv C

GC1: CallCtlTermConnTalkingEv for TC

GC1: ConnCreatedEvent for cBridge-GC3

GC1: CiscoConferenceChainAddedEv

GC1: ConnConnectedEvent for cBridge-GC3

GC3: CallCtlConnEstablishedEv for cBridge-GC3

 

 

 

(Connection for A ).getUniqueID(null) returns ID37

(Connection for B ).getUniqueID(null) returns ID38

(GC1: Connection for C ).getUniqueID(null) returns ID39

 

(Connection for C ).getUniqueID(null) returns ID40

(Connection for D ).getUniqueID(null) returns ID41

(GC3: Connection for E ).getUniqueID(null) returns ID42

 

( (CiscoConnection)(GC3: ConnCreatedEv for cBridge-GC1).getConnection() ).getUniqueID(null) throws PrivilegeVoilationException

 

( (CiscoConnection)(GC1: ConnCreatedEv for cBridge-GC3).getConnection() ).getUniqueID(null) throws PrivilegeVoilationException

 

(Connection for A ).getUniqueID(null) returns ID37

(Connection for B ).getUniqueID(null) returns ID38

(Connection for C ).getUniqueID(null) returns ID39

(Connection for D ).getUniqueID(null) returns ID41

(Connection for E ).getUniqueID(null) returns ID42

 

 

Application sends E.disconnect()

 

GC3: TermConnDroppedEv for TE

GC3: CallCtlTermConnDroppedEv for TE

GC3: ConnDisconnectedEvent for E

GC3: CallCtlConnDisconnectedEv E

GC1: ConnDisconnectedEvent for cBridge-GC3

GC1: CiscoConferenceChainRemovedEv

GC1: CallCtlConnDisconnectedEv cBridge-GC3

GC3: CiscoCallChangedEv

GC1: ConnCreatedEvent for D

GC1: ConnConnectedEvent for D

GC1: CallCtlConnEstablishedEv for D

GC1: TermConnCreatedEvent for TD

GC1: TermConnActiveEvent for TD

GC1: CallCtlTermConnTalkingEv for TD

GC3: ConnDisconnectedEvent for cBridge-GC1

GC3: CiscoConferenceChainRemovedEv

GC3: CallCtlConnDisconnectedEv cBridge-GC31

GC3: TermConnDroppedEv for TD

GC3: CallCtlTermConnDroppedEv for TD

GC3: ConnDisconnectedEvent for D

GC3: CallCtlConnDisconnectedEv D

GC3: CallInvalidEvent

GC3: CallObservationEndedEv

 

 

 

 

 

( (CiscoConnection)(GC1: ConnCreatedEv for D).getConnection() ).getUniqueID(null) returns ID43

Energywise Deep Sleep Mode

Scenario 1

JTAPI reports new reason"ENERGYWISE_POWER_SAVE_PLUS"in CiscoProvTerminalUnRegisteredEv and cause"CAUSE_ENERGYWISE_POWER_SAVE_PLUS"in CiscoTermOutOfServiceEv and CiscoAddrOutOfServiceEv to the application when a terminal/address unregisters from Cisco Unified CM due to deep sleep time.

Description

Events

Information

Application opens the provider and adds observer on provider, terminal and address of 'A'

ProvInServiceEv P1

[Term A] CiscoTermInServiceEv

[Addr A] CiscoAddrInServiceEv

Terminal 'A' enters Deep Sleep mode and gets unregistered

[Term A] CiscoProvTerminalUnRegisteredEv

[Term A] CiscoTermOutOfServiceEv

[Addr A] CiscoAddrOutOfServiceEv

CiscoProvTerminalUnRegisteredEv.getReason() = CiscoProvTerminalUnRegisteredEv. ENERGYWISE_POWER_ SAVE_PLUS

CiscoTermOutOfServiceEv.getCause() = CiscoOutOfServiceEv. CAUSE_ENERGYWISE_POWER_ SAVE_PLUS

CiscoAddrOutOfServiceEv.getCause() = CiscoOutOfServiceEv. CAUSE_ENERGYWISE_POWER_ SAVE_PLUS

Scenario 2

Terminal gets unregistered due to Deep Sleep mode and the user tries to manually register the terminal during the Deep Sleep time.

Description

Events

Information

Application opens the provider and adds observer on provider, terminal and address of 'A''

ProvInServiceEv P1

[Term A] CiscoTermInServiceEv

[Addr A] CiscoAddrInServiceEv

Terminal 'A' goes to Deep Sleep mode and gets unregistered

[Term A] CiscoProvTerminalUnRegisteredEv

[Term A] CiscoTermOutOfServiceEv

[Addr A] CiscoAddrOutOfServiceEv

CiscoProvTerminalUnRegisteredEv.getReason() = CiscoProvTerminalUnRegisteredEv. ENERGYWISE_POWER_ SAVE_PLUS

CiscoTermOutOfServiceEv.getCause() = CiscoOutOfServiceEv. CAUSE_ENERGYWISE_POWER_ SAVE_PLUS

CiscoAddrOutOfServiceEv.getCause() = CiscoOutOfServiceEv. CAUSE_ENERGYWISE_POWER_ SAVE_PLUS

A user tries to register the phone with Cisco Unified CM during deep sleep mode.

Cisco Unified IP 7900 Series phones do not re-register with the Cisco Unified CM during the Deep Sleep time. This is a limitation of the phone.

Cisco Unified IP 9900 and 6900 Series phones register back with the Cisco Unified CM by pressing the select key on the phone.

Phone registers with the Cisco Unified CM after the Deep Sleep time expires.

[Term A] CiscoProvTerminalRegisteredEv

[Term A] CiscoTermInServiceEv

[Addr A] CiscoAddrInServiceEv

Scenario 3

Shared line scenario. Two devices A (Cisco Unified IP Phones 7900 Series phone) and A' (CTI Port) are configured with the same line. Deep Seep mode is enabled on device A

Description

Events

Information

Application opens the provider and adds observer on provider, terminal and address of A and A'

ProvInServiceEv P1

[Term A] CiscoTermInServiceEv

[Addr A] CiscoAddrInServiceEv

[Term A'] CiscoTermInServiceEv

[Addr A'] CiscoAddrInServiceEv

Terminal A goes to Deep Sleep mode and gets unregistered.

(Terminal A' remains in registered state.)

[Term A] CiscoProvTerminalUnRegisteredEv

[Term A] CiscoTermOutOfServiceEv

[Addr A] CiscoAddrOutOfServiceEv

CiscoProvTerminalUnRegisteredEv.getReason() = CiscoProvTerminalUnRegisteredEv. ENERGYWISE_POWER_ SAVE_PLUS

CiscoTermOutOfServiceEv.getCause() = CiscoOutOfServiceEv. CAUSE_ENERGYWISE_POWER_ SAVE_PLUS

CiscoAddrOutOfServiceEv.getCause() = CiscoOutOfServiceEv. CAUSE_ENERGYWISE_POWER_ SAVE_PLUS

Scenario 4

Shared line scenario. Two devices A and A' (both are Cisco Unified IP Phones 7900 Series phones) that have are configured with the same line. Deep Sleep mode is enabled on A. Another device B calls the shared line after device A enters to the Deep Sleep mode.

Description

Events

Information

Application opens the provider and adds observer on provider, terminal and address of A and A'

ProvInServiceEv P1

[Term A] CiscoTermInServiceEv

[Addr A] CiscoAddrInServiceEv

[Term A'] CiscoTermInServiceEv

[Addr A'] CiscoAddrInServiceEv

Terminal A goes to deep sleep mode and gets unregistered.

(Terminal A' remains in registered state.)

[Term A] CiscoTermOutOfServiceEv

[Addr A] CiscoAddrOutOfServiceEv

CiscoTermOutOfServiceEv.getCause() = CiscoOutOfServiceEv. CAUSE_ENERGYWISE_POWER_ SAVE_PLUS

CiscoAddrOutOfServiceEv.getCause() = CiscoOutOfServiceEv. CAUSE_ENERGYWISE_POWER

Another terminal B calls to the shared line DN.

GC1 CallActiveEv

GC1 ConnCreatedEv [Addr B]

GC1 ConnConnectedEv [Addr B]

GC1 CallCtlConnInitiatedEv [Addr B]

- - - - - - - - - - - - - - - -

- - - - - - - - - - - - - - - -

- - - - - - - - - - - - - - - -

GC1 ConnCreatedEv [Addr A']

GC1 ConnInProgressEv [Addr A']

GC1 CallCtlConnOfferedEv [Addr A']

- - - - - - - - - - - - - - - -

- - - - - - - - - - - - - - - -

GC1 ConnConnectedEv [Addr A']

GC1 CallCtlConnEstablishedEv [Addr A']

GC1 TermConnActiveEv [Term A']

GC1 CallCtlTermConnTalkingEv [Term A'

Scenario 5

Shared line scenario. Two device A (Cisco Unified IP Phones Series 9900/6900 phone) and A' (Cisco Unified IP Phones Series 9900/6900 phone) are configured with the same line. Deep Sleep mode is enabled on both devices.

Description

Events

Information

Application opens the provider and adds observer on provider, terminal and address of A and A'

ProvInServiceEv P1

[Term A] CiscoTermInServiceEv

[Addr A] CiscoAddrInServiceEv

[Term A'] CiscoTermInServiceEv

[Addr A'] CiscoAddrInServiceEv

Terminal A and A' enters Deep Sleep mode and gets unregistered

[Term A] CiscoProvTerminalUnRegisteredEv

[Term A'] CiscoProvTerminalUnRegisteredEv

[Term A] CiscoTermOutOfServiceEv

[Term A'] CiscoTermOutOfServiceEv

[Addr A] CiscoAddrOutOfServiceEv

[Addr A'] CiscoAddrOutOfServiceEv

CiscoProvTerminalUnRegisteredEv.getReason() = CiscoProvTerminalUnRegisteredEv. ENERGYWISE_POWER_ SAVE_PLUS

CiscoProvTerminalUnRegisteredEv.getReason() = CiscoProvTerminalUnRegisteredEv. ENERGYWISE_POWER_ SAVE_PLUS

CiscoTermOutOfServiceEv.getCause() = CiscoOutOfServiceEv. CAUSE_ENERGYWISE_POWER_ SAVE_PLUS

CiscoTermOutOfServiceEv.getCause() = CiscoOutOfServiceEv. CAUSE_ENERGYWISE_POWER_ SAVE_PLUS

CiscoAddrOutOfServiceEv.getCause() = CiscoOutOfServiceEv. CAUSE_ENERGYWISE_POWER_ SAVE_PLUS

CiscoAddrOutOfServiceEv.getCause() = CiscoOutOfServiceEv. CAUSE_ENERGYWISE_POWER_ SAVE_PLUS

Deep Sleep mode power off time has expired and A and A' reregister to the Cisco Unified CM

Term A] CiscoProvTerminalRegisteredEv

[Term A'] CiscoProvTerminalRegisteredEv

[Term A] CiscoTermInServiceEv

[Term A'] CiscoTermInServiceEv

[Addr A] CiscoAddrInServiceEv

[Addr A'] CiscoAddrInServiceEv

Scenario 6

Basic call scenario. Two devices A (CTI port) and B (Cisco Unified IP Phones 7900 Series phone) are configured on a Cisco Unified CM and Deep Sleep mode is enabled on B with power off time configured for 6:00 PM. A calls B at 5:55 pm and the call continues until 6:10 pm. The idle timer is set for 10 minutes.

Description

Events

Information

Application opens the provider and adds observer on provider, terminal and address of A and B

ProvInServiceEv P1

[Term A] CiscoTermInServiceEv

[Addr A] CiscoAddrInServiceEv

[Term B] CiscoTermInServiceEv

[Addr B] CiscoAddrInServiceEv

Terminal B calls A at 5:55 pm. A answers the call and goes to connected state.

GC1 CallActiveEv

GC1 ConnCreatedEv [Addr B]

GC1 ConnConnectedEv [Addr B]

GC1 CallCtlConnInitiatedEv [Addr B]

- - - - - - - - - - - - - - - -

- - - - - - - - - - - - - - - -

- - - - - - - - - - - - - - - -

GC1 ConnCreatedEv [Addr A]

GC1 ConnInProgressEv [Addr A]

GC1 CallCtlConnOfferedEv [Addr A]

- - - - - - - - - - - - - - - -

- - - - - - - - - - - - - - - -

GC1 ConnConnectedEv [Addr A]

GC1 CallCtlConnEstablishedEv [Addr A]

GC1 TermConnActiveEv [Term A]

GC1 CallCtlTermConnTalkingEv [Term A]

CiscoProvTerminalUnRegisteredEv.getReason() = CiscoProvTerminalUnRegisteredEv. ENERGYWISE_POWER_ SAVE_PLUS

CiscoTermOutOfServiceEv.getCause() = CiscoOutOfServiceEv. CAUSE_ENERGYWISE_POWER_ SAVE_PLUS

CiscoAddrOutOfServiceEv.getCause() = CiscoOutOfServiceEv. CAUSE_ENERGYWISE_POWER_ SAVE_PLUS

At 6:00 pm Deep Sleep time is enabled but the call does not get dropped and remains active.

The user disconnects the call from the phone at 6:10 PM and the idle timer (set for 10 minutes) starts.

GC1 TermConnDroppedEv [Term B]

GC1 CallCtlTermConnDroppedEv [Term B]

GC1 ConnDisconnectedEv [Addr B]

GC1 CallCtlConnDisconnectedEv [Addr B]

GC1 CallInvalidEv

There is no action on phone A for the next 10 minutes. So at 6:20 pm, after the idle timer has expired, the terminal enters Deep Sleep mode and unregisters from the Cisco Unified CM.

[Term B] CiscoProvTerminalUnRegisteredEv

[Term B] CiscoTermOutOfServiceEv

[Addr B] CiscoAddrOutOfServiceEv

CiscoProvTerminalUnRegisteredEv.getReason() = CiscoProvTerminalUnRegisteredEv. ENERGYWISE_POWER_ SAVE_PLUS

CiscoTermOutOfServiceEv.getCause() = CiscoOutOfServiceEv. CAUSE_ENERGYWISE_POWER_ SAVE_PLUS

CiscoAddrOutOfServiceEv.getCause() = CiscoOutOfServiceEv. CAUSE_ENERGYWISE_POWER_ SAVE_PLUS

External Call Control

You should assume that all devices in the following use cases are obsereved, unless explicilty stated otherwise in the use case description.

The first few use cases go through the full event series for the basic call setup. After the first three or four, the use cases leave this part out, as it is standard for most of the use cases. If you do not see the basic call event series at the beginning of a use case, you can assume that it was intended to have happened successfully before the first event in the use case.

The last column in the use cases, that specifies the call info for a various stage of the use case, will initially have the full method invocation to retrieve the call information, for example CiscoCall.getModifiedCallingParty(). After the first three or four uses cases, only the method name is specified, such as .getModifiedCallingParty(). You can assume that this is to be prefixed with CiscoCall unless explicitly stated otherwise, such as for the CiscoCallChangeEvs.

Use cases for BasicCall

Basic Call initiated from JTAPI / Phone

Configuration:

Phone A, B are in cluster devices.

Procedure:

Application invokes connect() at A to call B, or physical phone for A dials the number for B.

Actions

Events

Call info

A initiates call to B

 

 

 

 

 

 

 

Connection of A created, called party info set

 

 

GC1-CallActiveEvent

GC1-ConnCreatedEvent-A

 

 

 

 

 

 

GC1-ConnConnectedEvent-A

GC1-CallCtlConnInitiatedEv-A

GC1-TermConnCreatedEvent

GC1-TermConnActiveEvent

GC1-CallCtlTermConnTalkingEv-A

GC1-CallCtlConnDialingEv-A

GC1-CallCtlConnEstablishedEv-A

CiscoCall.getCurrentCallingAddress() = A,

CiscoCall.getCallingAddress() = A,

CiscoCall.getModifiedCalledAddress() = "",

CiscoCall.getCalledAddress() = "",

CiscoCall.getCurrentCallingTerminal() = Terminal of A. CiscoCall.getCurrentCalledTerminal() = null

 

CiscoCall.getCurrntCallingAddress() = A,

CiscoCall.getCallingAddress() = A,

CiscoCall.getModifiedCalledAddress() = "",

CiscoCall.getCalledAddress() = "",

CiscoCall.getCurrentCallingTerminal() = Terminal of A. CiscoCall.getCurrentCalledTerminal() = null

 

CiscoCall.getModifiedCallingAddress() = A,

CiscoCall getCallingAddress() = A,

CiscoCall getModifiedCalledAddress() = B,

CiscoCall getCalledAddress() = B,

CiscoCall getCurrentCallingTerminal() = Terminal of A.

CiscoCall getCurrentCalledTerminal() = null

Connection of B created

 

B starts ringing

 

 

 

 

 

 

 

B Answers

 

GC1-ConnCreatedEvent-B

GC1-ConnInprogressEvent-B

GC1-CallCtlConnOfferedEv-B

GC1-ConnAlertingEvent-B

GC1-CallCtlConnAlertingEv-B

GC1-TermConnCreatedEvent

GC1-TermConnRingingEvent

GC1-CallCtlTermConnRingingEv-B

 

 

GC1-ConnConnectedEvent-B

GC1-CallCtlConnEstablishedEv-B

GC1-TermConnActiveEvent

GC1-CallCtlTermConnTalkingEv

 

CiscoCall.getModifiedCallingAddress() = A,

CiscoCall getCallingAddress() = A,

CiscoCall getModifiedCalledAddress() = B,

CiscoCall getCalledAddress() = B,

CiscoCall getCurrentCallingTerminal() = Terminal of A.

CiscoCall getCurrentCalledTerminal() = null

 

 

 

CiscoCall.getModifiedCallingAddress() = A,

CiscoCall.getCallingAddress() = A,

CiscoCall.getModifiedCalledAddress() = B,

CiscoCall.getCalledAddress() = B,

CiscoCall.getCurrentCallingTerminal() = Terminal of A.

CiscoCall.getCurrentCalledTerminal() = Terminal of B

Use cases for calls going through Translation Pattern with CEPN Info in Cc Signals

Basic Call initiated from JTAPI to the DN with Translation Pattern configured to transform called party

Configuration:

Phone A, B are in cluster devices.

B has a translation pattern configured where called party get transformed to B1.

Procedure:

Application invokes connect() at A to call B.

Actions

Events

Call info

A initiates call to B

 

 

 

 

 

 

 

Connection of A created,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

GC1-CallActiveEvent

GC1-ConnCreatedEvent-A

 

 

 

 

 

 

GC1-ConnConnectedEvent-A

GC1-CallCtlConnInitiatedEv-A

GC1-TermConnCreatedEvent

GC1-TermConnActiveEvent

GC1-CallCtlTermConnTalkingEv-A

GC1-CallCtlConnDialingEv-A

 

GC1-CallCtlConnEstablishedEv-A

 

 

 

 

CiscoCall.getModifiedCallingAddress() = A,

CiscoCall.getCallingAddress() = A,

CiscoCall.getModifiedCalledAddress() = "",

CiscoCall.getCalledAddress() = "",

CiscoCall.getCurrentCallingTerminal() = Terminal of A. CiscoCall.getCurrentCalledTerminal() = null

 

CiscoCall.getModifiedCallingAddress() = A,

CiscoCall.getCallingAddress() = A,

CiscoCall.getModifiedCalledAddress() = "",

CiscoCall.getCalledAddress() = "",

CiscoCall.getCurrentCallingTerminal() = Terminal of A. CiscoCall.getCurrentCalledTerminal() = null

 

CiscoCall.getModifiedCallingAddress() = A,

CiscoCall.getCallingAddress() = A,

CiscoCall.getModifiedCalledAddress() = B1,

CiscoCall.getCalledAddress() = B1,

CiscoCall.getCurrentCallingTerminal() = Terminal of A.

CiscoCall.getCurrentCalledTerminal() = null

Connection of B1 created

 

B1 starts ringing

 

 

 

 

 

B1 Answers

 

GC1-ConnCreatedEvent-B1

GC1-ConnInprogressEvent-B1

GC1-CallCtlConnOfferedEv-B1

GC1-ConnAlertingEvent-B1

GC1-CallCtlConnAlertingEv-B1

GC1-TermConnCreatedEvent

GC1-TermConnRingingEvent

GC1-CallCtlTermConnRingingEv-B1

 

GC1-ConnConnectedEvent-B1

GC1-CallCtlConnEstablishedEv-B1

GC1-TermConnActiveEvent

GC1-CallCtlTermConnTalkingEv

 

 

CiscoCall.getModifiedCallingAddress() = A,

CiscoCall.getCallingAddress() = A,

CiscoCall.getModifiedCalledAddress() = "",

CiscoCall.getCalledAddress() = "",

CiscoCall.getCurrentCallingTerminal() = Terminal of A. CiscoCall.getCurrentCalledTerminal() = null

 

 

 

CiscoCall.getCurrentCallingAddress() = A,

CiscoCall.getCallingAddress() = A,

CiscoCall.getCurrentCalledAddress() = B1,

CiscoCall.getCalledAddress() = B1,

CiscoCall.getCurrentCallingTerminal() = Terminal of A.

CiscoCall.getCurrentCalledTerminal() = Terminal of B1

Basic Call initiated from JTAPI to the DN with Translation Pattern configured to transform calling party

Configuration:

Phone A, B are in cluster devices.

B has a translation pattern configured where calling party gets transformed to A1.

Procedure:

Application invokes connect() at A to call B.

Action

Events

Call info

A initiates call to B

 

 

 

 

 

 

 

Connection of A created,

 

 

 

 

 

 

 

Connection of B created

 

B starts ringin

 

 

 

 

GC1-CallActiveEvent

GC1-ConnCreatedEvent-A

 

 

 

 

 

 

GC1-ConnConnectedEvent-A

GC1-CallCtlConnInitiatedEv-A

GC1-TermConnCreatedEvent

GC1-TermConnActiveEvent

GC1-CallCtlTermConnTalkingEv-A

GC1-CallCtlConnDialingEv-A

GC1-CallCtlConnEstablishedEv-A

 

GC1-ConnCreatedEvent-B

GC1-ConnInprogressEvent-B

GC1-CallCtlConnOfferedEv-B

GC1-ConnAlertingEvent-B

GC1-CallCtlConnAlertingEv-B

GC1-TermConnCreatedEvent

GC1-TermConnRingingEvent

GC1-CallCtlTermConnRingingEv-B

CiscoCall.getModifiedCallingAddress() = A,

CiscoCall.getCallingAddress() = A,

CiscoCall.getModifiedCalledAddress() = "",

CiscoCall.getCalledAddress() = "",

CiscoCall.getCurrentCallingTerminal() = Terminal of A. CiscoCall.getCurrentCalledTerminal() = null

 

CiscoCall.getModifiedCallingAddress() = A,

CiscoCall.getCallingAddress() = A,

CiscoCall.getModifiedCalledAddress() = "",

CiscoCall.getCalledAddress() = "",

CiscoCall.getCurrentCallingTerminal() = Terminal of A. CiscoCall.getCurrentCalledTerminal() = null

 

 

CiscoCall.getModifiedCallingAddress() = A1,

CiscoCall getCallingAddress() = A,

CiscoCall getCurrentCallingAddress() = A,

CiscoCall getModifiedCalledAddress() = B,

CiscoCall getCalledAddress() = B,

CiscoCall getCurrentCallingTerminal() = Terminal of A.

CiscoCall.getCurrentCalledTerminal() = null

B Answers

 

GC1-ConnConnectedEvent-B

GC1-CallCtlConnEstablishedEv-B

GC1-TermConnActiveEvent

GC1-CallCtlTermConnTalkingEv

 

CiscoCall.getModifiedCallingAddress() = A1,

CiscoCall.getCallingAddress() = A,

CiscoCall.getModifiedCalledAddress() = B,

CiscoCall.getCalledAddress() = B,

CiscoCall.getCurrentCallingTerminal() = Terminal of A

CiscoCall.getCurrentCalledTerminal() = Terminal of B

Basic Call initiated from JTAPI to the DN with Translation Pattern configured to transform both calling and called parties

Configuration:

Phone A, B are in cluster devices.

B has a translation pattern configured where both calling and called parties get transformed to A1 and B1 respectively

Procedure:

Application invokes connect() at A to call B

Action

Events

Call info

A initiates call to B

 

 

 

 

 

 

 

Connection of A created, called party info set

 

 

 

 

 

 

Connection of B1 created

 

B1 starts ringing

 

 

 

 

 

A gets CallStateChg

For Ringback

 

GC1-CallActiveEvent

GC1-ConnCreatedEvent-A

 

 

 

 

 

 

GC1-ConnConnectedEvent-A

GC1-CallCtlConnInitiatedEv-A

GC1-TermConnCreatedEvent

GC1-TermConnActiveEvent

GC1-CallCtlTermConnTalkingEv-A

GC1-CallCtlConnDialingEv-A

GC1-CallCtlConnEstablishedEv-A

 

GC1-ConnCreatedEvent-B

GC1-ConnInprogressEvent-B

GC1-CallCtlConnOfferedEv-B

GC1-ConnAlertingEvent-B

GC1-CallCtlConnAlertingEv-B

GC1-TermConnCreatedEvent

GC1-TermConnRingingEvent

GC1-CallCtlTermConnRingingEv-B

 

CiscoCall.getModifiedCallingAddress() = A,

CiscoCall.getCallingAddress() = A,

CiscoCall.getModifiedCalledAddress() = "",

CiscoCall.getCalledAddress() = "",

CiscoCall.getCurrentCallingTerminal() = Terminal of A. CiscoCall.getCurrentCalledTerminal() = null

 

CiscoCall.getModifiedCallingAddress() = A1,

CiscoCall.getCallingAddress() = A,

CiscoCall.getModifiedCalledAddress() = "",

CiscoCall.getCalledAddress() = "",

CiscoCall.getCurrentCallingTerminal() = Terminal of A. CiscoCall.getCurrentCalledTerminal() = null

 

 

CiscoCall.getModifiedCallingAddress() = A1,

CiscoCall getCallingAddress() = A,

CiscoCall getModifiedCalledAddress() = B1,

CiscoCall getCalledAddress() = B1,

CiscoCall getCurrentCallingTerminal() = Terminal of A.

CiscoCall.getCurrentCalledTerminal() = null

CiscoCall.getModifiedCallingAddress() = A1,

CiscoCall.getCallingAddress() = A,

CiscoCall.getModifiedCalledAddress() = B1,

 

 

 

 

 

B1 Answers

 

 

 

 

 

 

GC1-ConnConnectedEvent-B

GC1-CallCtlConnEstablishedEv-B

GC1-TermConnActiveEvent

GC1-CallCtlTermConnTalkingEv

 

CiscoCall.getCalledAddress() = B1,

CiscoCall.getCurrentCallingTerminal() = Terminal of A.

CiscoCall.getCurrentCalledTerminal() = null

 

CiscoCall.getModifiedCallingAddress() = A1,

CiscoCall.getCallingAddress() = A,

CiscoCall.getModifiedCalledAddress() = B1,

CiscoCall.getCalledAddress() = B1,

CiscoCall.getCurrentCallingTerminal() = Terminal of A.

CiscoCall.getCurrentCalledTerminal() = Terminal of B1

Called party redirects a call which has transformed calling and called parties

Configuration:

Phone A, B, C are in cluster devices.

B has a translation pattern configured where both calling and called parties get transformed to A1 and B1 respectively

Procedure:

Application invokes connect() at A to call B. B1 redirects the call in connected state.

Actions

Events

Call info

A and B1 receive Connected Call State

(Basic Call)

 

 

B1 redirects the call to C

 

 

Connection for C is created

 

 

 

C rings

 

 

B1 gets dropped

 

 

 

 

A gets CallStateChg for Ringback

 

 

 

 

 

 

GC1-ConnConnectedEvent-B1

GC1-CallCtlConnEstablishedEv-B1

GC1-TermConnActiveEvent

GC1-CallCtlTermConnTalkingEv

 

 

GC1-ConnCreatedEvent-C

GC1-ConnInprogressEvent-C

GC1-CallCtlConnOfferedEv-C

GC1-ConnAlertingEvent-C

GC1-CallCtlConnAlertingEv-C

GC1-TermConnCreatedEvent

GC1-TermConnRingingEvent

GC1-CallCtlTermConnRingingEv

 

GC1-TermConnDroppedEv

GC1-CallCtlTermConnDroppedEv

GC1-ConnDisconnectedEvent-B1

GC1-CallCtlConnDisconnectedEv-B1

 

 

CiscoCall.getModifiedCallingAddress() = A1,

CiscoCall.getCallingAddress() = A,

CiscoCall.getModifiedCalledAddress() = B1,

CiscoCall.getCalledAddress() = B1,

CiscoCall.getCurrentCallingTerminal() = Terminal of A. CiscoCall.getCurrentCalledTerminal() = Terminal of B1

 

CiscoCall.getModifiedCallingAddress() = A1,

CiscoCall.getCallingAddress() = A,

CiscoCall.getModifiedCalledAddress() = C,

CiscoCall.getCalledAddress() = C,

CiscoCall.getLastRedirectedAddress() = B1,

CiscoCall.getCurrentCallingTerminal() = terminal of A.

CiscoCall.getCurrentCalledTerminal() = null

 

 

 

 

 

 

CiscoCall.getModifiedCallingAddress() = A1,

CiscoCall.getCallingAddress() = A,

CiscoCall.getModifiedCalledAddress() = C,

CiscoCall.getCalledAddress() = C,

CiscoCall.getLastRedirectedAddress() = B1,

CiscoCall.getCurrentCallingTerminal() = terminal of A.

CiscoCall.getCurrentCalledTerminal() = null

C Answers

 

GC1-ConnConnectedEvent-C

GC1-CallCtlConnEstablishedEv-C

GC1-TermConnActiveEvent

GC1-CallCtlTermConnTalkingEv

 

CiscoCall.getModifiedCallingAddress() = A1,

CiscoCall.getCallingAddress() = A,

CiscoCall.getModifiedCalledAddress() = C,

CiscoCall.getCalledAddress() = C,

CiscoCall.getLastRedirectedAddress() = B1,

CiscoCall.getCurrentCallingTerminal() = terminal of A.

CiscoCall.getCurrentCalledTerminal() = terminal of C

 

Called party which has transformed calling and called parties parks the call and receives a Park reminder call.

Configuration:

Phone A, B are in cluster devices. C is a park DN (also in cluster)

B has a translation pattern configured where both calling and called parties get transformed to A1 and B1 respectively

Procedure:

Application invokes connect() at A to call B. B1 answers and then B1 parks the call and after park reversion timer expiry receives the reminder call.

Actions

Events

Call info

A and B1 receive Connected Call State

(Basic Call)

 

 

 

B1 Parks the call

 

 

 

 

 

 

Connection for C is created

 

 

 

 

 

 

 

 

B1 gets park reminder

 

B1 rings

 

 

 

 

 

 

 

C gets dropped

 

B1 Answers

 

… See use case 15.7.1.1.1 …

GC1-ConnConnectedEvent-B1

GC1-CallCtlConnEstablishedEv-B1

GC1-TermConnActiveEvent

GC1-CallCtlTermConnTalkingEv

 

GC1-TermConnDroppedEv

GC1-CallCtlTermConnDroppedEv

GC1-ConnDisconnectedEvent-B1

GC1-CallCtlConnDisconnectedEv-B1

 

 

 

GC1-ConnCreatedEvent-C

GC1-ConnInprogressEvent-C

GC1-CallCtlConnQueuedEv-C

 

 

 

 

 

 

GC1-ConnCreatedEvent-B1

GC1-ConnInprogressEvent-B1

GC1-CallCtlConnOfferedEv-B1

GC1-ConnAlertingEvent-B1

GC1-CallCtlConnAlertingEv-B1

GC1-TermConnCreatedEvent

 

GC1-TermConnRingingEvent

GC1-CallCtlTermConnRingingEv

 

GC1-ConnDisconnectedEvent-C

GC1-CallCtlConnDisconnectedEv-C

 

GC1-ConnConnectedEvent-B1

GC1-CallCtlConnEstablishedEv-B1

GC1-TermConnActiveEvent

GC1-CallCtlTermConnTalkingEv

.getModifiedCallingAddress() = A1,

.getCallingAddress() = A,

.getModifiedCalledAddress() = B1,

.getCalledAddress() = B1,

.getCurrentCallingTerminal() = Terminal of A.

.getCurrentCalledTerminal() = Terminal of B1

 

 

 

 

 

 

 

.getModifiedCallingAddress() = A1,

.getCallingAddress() = A,

.getModifiedCalledAddress() = C,

.getCalledAddress() = C,

.getLastRedirectedAddress() = B1,

.getCurrentCallingTerminal() = terminal of A.

.getCurrentCalledTerminal() = null

 

.getModifiedCallingAddress() = A1,

.getCallingAddress() = A,

.getModifiedCalledAddress() = B1,

.getCalledAddress() = B1,

.getLastRedirectedAddress() = Park DN C,

.getCurrentCallingTerminal() = terminal of A.

.getCurrentCalledTerminal() = null

 

 

 

 

 

 

 

.getModifiedCallingAddress() = A1,

.getCallingAddress() = A,

.getModifiedCalledAddress() = B1,

.getCalledAddress() = B1,

.getLastRedirectedAddress() = Park DN C,

.getCurrentCallingTerminal() = terminal of A.

.getCurrentCalledTerminal() = terminal of B1

Calling party parks the call and receives a Park reminder call after a transformation from Called party translation pattern

Configuration:

Phone A, B are in cluster devices. C is a park DN

B has a translation pattern configured where both calling and called parties get transformed to A1 and B1 respectively

Procedure:

Application invokes connect() at A to call B. B1 answers and then A parks the call and after park reversion timer expiry receives the reminder call.

Actions

Events

Call info

A and B1 receive Connected Call State

(Basic Call)

 

 

 

 

 

A Parks the call

 

 

 

 

Connection for C is created

 

 

 

 

 

 

 

A gets park reminder

 

A rings

 

 

 

 

 

 

GC1-ConnConnectedEvent-B1

GC1-CallCtlConnEstablishedEv-B1

GC1-TermConnActiveEvent

GC1-CallCtlTermConnTalkingEv

 

 

 

GC1-TermConnDroppedEv

GC1-CallCtlTermConnDroppedEv

GC1-ConnDisconnectedEvent-A

GC1-CallCtlConnDisconnectedEv-A

 

GC1-ConnCreatedEvent-C

GC1-ConnInprogressEvent-C

GC1-CallCtlConnQueuedEv-C

 

 

 

 

 

 

GC1-ConnCreatedEvent-A

GC1-ConnInprogressEvent-A

GC1-CallCtlConnOfferedEv-A

GC1-ConnAlertingEvent-A

GC1-CallCtlConnAlertingEv-A

GC1-TermConnCreatedEvent

GC1-TermConnRingingEvent

GC1-CallCtlTermConnRingingEv

.getModifiedCallingAddress() = A1,

.getCallingAddress() = A,

.getModifiedCalledAddress() = B1,

.getCalledAddress() = B1,

.getCurrentCallingTerminal() = Terminal of A.

.getCurrentCalledTerminal() = Terminal of B1

 

 

 

 

 

 

 

.getModifiedCallingAddress() = B1,

.getCallingAddress() = B1,

.getModifiedCalledAddress() = C,

.getCalledAddress() = C,

.getLastRedirectedAddress() = A,

.getCurrentCallingTerminal() = terminal of B1.

.getCurrentCalledTerminal() = null

 

.getModifiedCallingAddress() = B1,

.getCallingAddress() = B1,

.getModifiedCalledAddress() = A,

.getCalledAddress() = A,

.getLastRedirectedAddress() = Park DN C,

.getCurrentCallingTerminal() = terminal of B1

.getCurrentCalledTerminal() = null

C gets dropped

 

 

A Answers

 

GC1-ConnDisconnectedEvent-C

GC1-CallCtlConnDisconnectedEv-C

 

GC1-ConnConnectedEvent-A

GC1-CallCtlConnEstablishedEv-A

GC1-TermConnActiveEvent

GC1-CallCtlTermConnTalkingEv

 

 

 

 

 

.getModifiedCallingAddress() = B1,

.getCallingAddress() = B1,

.getModifiedCalledAddress() = A,

.getCalledAddress() = A,

.getLastRedirectedAddress() = Park DN C,

.getCurrentCallingTerminal() = terminal of B1.

.getCurrentCalledTerminal() = terminal of A

Caller redirects a call which has transformed calling and called parties

Configuration:

Phone A, B, C are in cluster devices.

B has a translation pattern configured where both calling and called parties get transformed to A1 and B1 respectively

Procedure:

Application invokes connect() at A to call B. A redirects the call in connected state.

Actions

Events

Call info

A and B1 receive Connected Call State

(Basic Call)

 

A redirects the call to C

 

 

Connection for C is created

 

 

 

C rings

 

 

 

 

A gets dropped

 

 

 

 

B1 gets CallStateChg for Ringback

 

 

 

 

 

 

 

C Answers

 

GC1-ConnConnectedEvent-B1

GC1-CallCtlConnEstablishedEv-B1

GC1-TermConnActiveEvent

GC1-CallCtlTermConnTalkingEv

 

 

 

 

GC1-ConnCreatedEvent-C

GC1-ConnInprogressEvent-C

GC1-CallCtlConnOfferedEv-C

GC1-ConnAlertingEvent-C

GC1-CallCtlConnAlertingEv-C

GC1-TermConnCreatedEvent

GC1-TermConnRingingEvent

GC1-CallCtlTermConnRingingEv

 

GC1-TermConnDroppedEv

GC1-CallCtlTermConnDroppedEv

GC1-ConnDisconnectedEvent-A

GC1-CallCtlConnDisconnectedEv-A

 

 

 

 

 

 

 

 

 

 

GC1-ConnConnectedEvent-C

GC1-CallCtlConnEstablishedEv-C

GC1-TermConnActiveEvent

GC1-CallCtlTermConnTalkingEv

 

CiscoCall.getModifiedCallingAddress() = A1,

CiscoCall.getCallingAddress() = A,

CiscoCall.getModifiedCalledAddress() = B1,

CiscoCall.getCalledAddress() = B1,

CiscoCall.getCurrentCallingTerminal() = Terminal of A. CiscoCall.getCurrentCalledTerminal() = Terminal of B1

 

CiscoCall.getModifiedCallingAddress() = B1,

CiscoCall.getCallingAddress() = B1,

CiscoCall.getModifiedCalledAddress() = C,

CiscoCall.getCalledAddress() = C,

CiscoCall.getLastRedirectedAddress() = A,

CiscoCall.getCurrentCallingTerminal() = terminal of B1.

CiscoCall.getCurrentCalledTerminal() = null

 

 

 

 

 

 

 

CiscoCall.getModifiedCallingAddress() = B1,

CiscoCall.getCallingAddress() = B1,

CiscoCall.getModifiedCalledAddress() = C,

CiscoCall.getCalledAddress() = C,

CiscoCall.getLastRedirectedAddress() = A,

CiscoCall.getCurrentCallingTerminal() = terminal of B1.

CiscoCall.getCurrentCalledTerminal() = null

 

CiscoCall.getModifiedCallingAddress() = B1,

CiscoCall.getCallingAddress() = B1,

CiscoCall.getModifiedCalledAddress() = C,

CiscoCall.getCalledAddress() = C,

CiscoCall.getLastRedirectedAddress() = A,

CiscoCall.getCurrentCallingTerminal() = terminal of B1.

Called party transfers the call which has transformed calling and called parties

Configuration:

Phone A, B, C are in cluster devices.

B has a translation pattern configured where both calling and called parties get transformed to A1 and B1 respectively

Procedure:

Application invokes connect() at A to call B. B1 consult transfer the call to C.

Actions

Events

Call info

A and B1 receive Connected Call State

(Basic Call)

 

 

 

 

B1 consults call to C

 

 

 

 

 

 

 

 

 

Connection for C is created (GC2)

 

 

 

 

C rings

 

 

 

C Answers

GC1-ConnConnectedEvent-B1

GC1-CallCtlConnEstablishedEv-B1

GC1-TermConnActiveEvent

GC1-CallCtlTermConnTalkingEv

 

 

CG1-CallCtlTermConnHeldEv

GC2-ConsultCallActiveEvent

GC2-ConnCreatedEvent-B1

GC2-ConnConnectedEvent-B1

GC2-CallCtlConnInitiatedEv-B1

GC2-TermConnCreatedEvent

GC2-TermConnActiveEvent

GC2-CallCtlTermConnTalkingEv

GC2-CallCtlConnDialingEv-B1

GC2-CallCtlConnEstablishedEv-B1

 

GC2-ConnCreatedEvent-C

GC2-ConnInprogressEvent-C

GC2-CallCtlConnOfferedEv-C

GC2-ConnAlertingEvent-C

GC2-CallCtlConnAlertingEv-C

GC2-TermConnCreatedEvent

GC2-TermConnRingingEvent

GC2-CallCtlTermConnRingingEv

.getModifiedCallingAddress() = A1,

.getCallingAddress() = A,

.getModifiedCalledAddress() = B1,

.getCalledAddress() = B1,

.getCurrentCallingTerminal() = Terminal of A.

.getCurrentCalledTerminal() = Terminal of B1

 

.getModifiedCallingAddress() = B1,

.getCallingAddress() = B1,

.getModifiedCalledAddress() = null,

.getCalledAddress() = null,

.getLastRedirectedAddress() =

.getCurrentCallingTerminal() = terminal of B1.

.getCurrentCalledTerminal() = null

 

 

 

 

 

 

 

.getModifiedCallingAddress() = B1,

.getCallingAddress() = B1,

.getModifiedCalledAddress() = C,

.getCalledAddress() = C,

.getLastRedirectedAddress() = null

.getCurrentCallingTerminal() = terminal of B1.

.getCurrentCalledTerminal() = null

 

 

 

 

 

 

 

 

 

 

Transfer starts

Call Changes

 

 

 

 

 

 

GC2-ConnConnectedEvent-C

GC2-CallCtlConnEstablishedEv-C

GC2-TermConnActiveEvent

GC2-CallCtlTermConnTalkingEv

GC1-CiscoTermConnSelectChangedEv

GC2-CiscoTermConnSelectChangedEv

 

GC1-CiscoTransferStartEv

GC2-CiscoCallChangedEv

 

 

 

 

 

.getModifiedCallingAddress() = B1,

.getCallingAddress() = B1,

.getModifiedCalledAddress() = C,

.getCalledAddress() = C,

.getLastRedirectedAddress() = null

.getCurrentCallingTerminal() = terminal of B1.

.getCurrentCalledTerminal() = terminal of C

 

Ev.getOriginalCall = GC2 (OCall)

Ev.getSurvivingCall = GC1 (FCall)

OCall.getModifiedCallingAddress() = B1,

OCall.getCallingAddress() = B1,

OCall.getModifiedCalledAddress() = C,

OCall.getCalledAddress() = C,

OCall.getLastRedirectedAddress() =

OCall.getCurrentCallingTerminal() = terminal of B1

OCall.getCurrentCalledTerminal() = terminal of C

 

FCall.getModifiedCallingAddress() = A1,

FCall.getCallingAddress() = A,

FCall.getModifiedCalledAddress() = B1,

FCall.getCalledAddress() = B1,

FCall.getLastRedirectedAddress() =

FCall.getCurrentCallingTerminal() = terminal of A

FCall.getCurrentCalledTerminal() = terminal of B1

Connection for C is created (GC1)

 

 

 

 

 

C gets dropped (GC2)

 

 

 

 

B1 gets dropped

(GC1)

 

 

 

B1 gets dropped

(GC2)

 

 

 

GC2 Invalid

 

 

Transfer comple

GC1-ConnCreatedEvent-C

GC1-ConnConnectedEvent-C

GC1-CallCtlConnEstablishedEv-C

GC1-TermConnCreatedEvent

GC1-TermConnActiveEvent

GC1-CallCtlTermConnTalkingEv

 

GC2-TermConnDroppedEv

GC2-CallCtlTermConnDroppedEv

GC2-ConnDisconnectedEvent-C

GC2-CallCtlConnDisconnectedEv-C

 

GC1-TermConnDroppedEv

GC1-CallCtlTermConnDroppedEv

GC1-ConnDisconnectedEvent-B1

GC1-CallCtlConnDisconnectedEv-B1

 

GC2-TermConnDroppedEv

GC2-CallCtlTermConnDroppedEv

GC2-ConnDisconnectedEvent-B1

GC2-CallCtlConnDisconnectedEv-B1

 

GC2-CallInvalidEvent

GC2-CallObservationEndedEv

 

GC1-CiscoTransferEndEv

.getModifiedCallingAddress() = A1,

.getCallingAddress() = A,

.getModifiedCalledAddress() = C,

.getCalledAddress() = C,

.getLastRedirectedAddress() = B1

.getCurrentCallingTerminal() = terminal of A.

.getCurrentCalledTerminal() = terminal of C

 

Called party transfers the call which has transformed calling and called parties to a DN which matches the translation pattern with calling party transformation defined

Configuration:

Phone A, B, C are in cluster devices.

B has a translation pattern configured where both calling and called parties get transformed to A1 and B1 respectively

C matches the the translation pattern with calling party transformation to B2

Procedure:

Application invokes connect() at A to call B. B1 consult transfer the call to C.

Actions

Events

Call info

A and B1 receive Connected Call State

(Basic Call)

 

 

 

 

 

B1 consults call to C

 

 

 

 

 

 

 

 

Connection for C is created (GC2)

 

C rings

 

C Answers

GC1-ConnConnectedEvent-B1

GC1-CallCtlConnEstablishedEv-B1

GC1-TermConnActiveEvent

GC1-CallCtlTermConnTalkingEv

 

 

CG1-CallCtlTermConnHeldEv

GC2-ConsultCallActiveEvent

GC2-ConnCreatedEvent-B1

GC2-ConnConnectedEvent-B1

GC2-CallCtlConnInitiatedEv-B1

GC2-TermConnCreatedEvent

GC2-TermConnActiveEvent

GC2-CallCtlTermConnTalkingEv

GC2-CallCtlConnDialingEv-B1

GC2-CallCtlConnEstablishedEv-B1

 

GC2-ConnCreatedEvent-C

GC2-ConnInprogressEvent-C

GC2-CallCtlConnOfferedEv-C

GC2-ConnAlertingEvent-C

GC2-CallCtlConnAlertingEv-C

GC2-TermConnCreatedEvent

GC2-TermConnRingingEvent

GC2-CallCtlTermConnRingingEv

GC2-ConnConnectedEvent-C

GC2-CallCtlConnEstablishedEv-C

GC2-TermConnActiveEvent

GC2-CallCtlTermConnTalkingEv

GC1-CiscoTermConnSelectChangedEv

GC2-CiscoTermConnSelectChangedEv

.getModifiedCallingAddress() = A1,

.getCallingAddress() = A,

.getModifiedCalledAddress() = B1,

.getCalledAddress() = B1,

.getCurrentCallingTerminal() = Terminal of A. .getCurrentCalledTerminal() = Terminal of B1

 

.getModifiedCallingAddress() = B2,

.getCallingAddress() = B1,

.getModifiedCalledAddress() = null,

.getCalledAddress() = null,

.getLastRedirectedAddress() =

.getCurrentCallingTerminal() = terminal of B1.

.getCurrentCalledTerminal() = null

 

 

 

.getModifiedCallingAddress() = B2,

.getCallingAddress() = B1,

.getModifiedCalledAddress() = C,

.getCalledAddress() = C,

.getLastRedirectedAddress() =

.getCurrentCallingTerminal() = terminal of B1.

.getCurrentCalledTerminal() = null

 

 

.getModifiedCallingAddress() = B2,

.getCallingAddress() = B1,

.getModifiedCalledAddress() = C,

 

 

 

 

 

Transfer starts Call Changes

 

 

 

 

 

GC1-CiscoTransferStartEv

GC2-CiscoCallChangedEv

 

.getCalledAddress() = C,

.getLastRedirectedAddress() = null

.getCurrentCallingTerminal() = terminal of B1.

.getCurrentCalledTerminal() = terminal of C

 

Ev.getOriginalCall = GC2 (OCall)

Ev.getSurvivingCall = GC1 (FCall)

OCall.getModifiedCallingAddress() = B2,

OCall.getCallingAddress() = B1,

OCall.getModifiedCalledAddress() = C,

OCall.getCalledAddress() = C,

OCall.getLastRedirectedAddress() =

OCall.getCurrentCallingTerminal() = terminal of B1

OCall.getCurrentCalledTerminal() = terminal of C

 

FCall.getModifiedCallingAddress() = A1,

FCall.getCallingAddress() = A,

FCall.getModifiedCalledAddress() = B1,

FCall.getCalledAddress() = B1,

FCall.getLastRedirectedAddress() =

FCall.getCurrentCallingTerminal() = terminal of A

FCall.getCurrentCalledTerminal() = terminal of B1

.getModifiedCallingAddress() = A1,

 

Connection for C is created (GC1)

 

 

 

 

 

 

C gets dropped (GC2)

 

 

 

 

B1 gets dropped (GC1)

 

 

 

B1 gets dropped(GC2)

 

 

 

 

 

GC2 Invalid

 

 

 

Transfer complete

GC1-ConnCreatedEvent-C

GC1-ConnConnectedEvent-C

GC1-CallCtlConnEstablishedEv-C

GC1-TermConnCreatedEvent

GC1-TermConnActiveEvent

GC1-CallCtlTermConnTalkingEv

 

 

GC2-TermConnDroppedEv

GC2-CallCtlTermConnDroppedEv

GC2-ConnDisconnectedEvent-C

GC2-CallCtlConnDisconnectedEv-C

 

GC1-TermConnDroppedEv

GC1-CallCtlTermConnDroppedEv

GC1-ConnDisconnectedEvent-B1

GC1-CallCtlConnDisconnectedEv-B1

 

GC2-TermConnDroppedEv

GC2-CallCtlTermConnDroppedEv

GC2-ConnDisconnectedEvent-B1

GC2-CallCtlConnDisconnectedEv-B1

 

GC2-CallInvalidEvent

GC2-CallObservationEndedEv

 

GC1-CiscoTransferEndEv

.getCallingAddress() = A,

.getModifiedCalledAddress() = C,

.getCalledAddress() = C,

.getLastRedirectedAddress() = B1

.getCurrentCallingTerminal() = terminal of A.

.getCurrentCalledTerminal() = terminal of C

 

Called party with transformed calling and called parties conferences a DN

Configuration:

Phone A, B, C are in cluster devices.

B has a translation pattern configured where both calling and called parties get transformed to A1 and B1 respectively

Procedure:

Application invokes connect() at A to call B. B1 consult conference the call to C.

Actions

Events

Call info

A and B1 receive Connected Call State

(Basic Call)

 

 

 

B1 consults call to C

 

 

 

 

 

 

 

 

 

 

 

 

 

Connection for C is created (GC2)

 

 

 

C rings

 

 

 

C Answers

 

GC1-ConnConnectedEvent-B1

GC1-CallCtlConnEstablishedEv-B1

GC1-TermConnActiveEvent

GC1-CallCtlTermConnTalkingEv

 

 

GC1-CiscoTermConnSelectChangedEv

CG1-CallCtlTermConnHeldEv

GC2-CiscoConsultCallActiveEv

GC2-ConnCreatedEvent-B1

GC2-ConnConnectedEvent-B1

GC2-CallCtlConnInitiatedEv-B1

GC2-TermConnCreatedEvent

GC2-TermConnActiveEvent

GC2-CallCtlTermConnTalkingEv

GC2-CallCtlConnDialingEv-B1

GC2-CallCtlConnEstablishedEv-B1

 

GC2-ConnCreatedEvent-C

GC2-ConnInprogressEvent-C

GC2-CallCtlConnOfferedEv-C

GC2-ConnAlertingEvent-C

GC2-CallCtlConnAlertingEv-C

GC2-TermConnCreatedEvent

GC2-TermConnRingingEvent

GC2-CallCtlTermConnRingingEv

GC2-ConnConnectedEvent-C

GC2-CallCtlConnEstablishedEv-C

GC2-TermConnActiveEvent

GC2-CallCtlTermConnTalkingEv

.getModifiedCallingAddress() = A1,

.getCallingAddress() = A,

.getModifiedCalledAddress() = B1,

.getCalledAddress() = B1,

.getCurrentCallingTerminal() = Terminal of A.

.getCurrentCalledTerminal() = Terminal of B1

 

.getModifiedCallingAddress() = B1,

.getCallingAddress() = B1,

.getModifiedCalledAddress() = null,

.getCalledAddress() = null,

.getLastRedirectedAddress() =

.getCurrentCallingTerminal() = terminal of B1.

.getCurrentCalledTerminal() = null

 

 

 

 

 

 

.getModifiedCallingAddress() = B1,

.getCallingAddress() = B1,

.getModifiedCalledAddress() = C,

.getCalledAddress() = C,

.getLastRedirectedAddress() =

.getCurrentCallingTerminal() = terminal of B1.

.getCurrentCalledTerminal() = null

 

.getModifiedCallingAddress() = B1,

.getCallingAddress() = B1,

.getModifiedCalledAddress() = C,

.getCalledAddress() = C,

.getLastRedirectedAddress() =

.getCurrentCallingTerminal() = terminal of B1.

.getCurrentCalledTerminal() = terminal of C

Conference Starts

 

B1 gets dropped (GC2)

 

 

 

 

 

 

 

 

 

GC1-CiscoConferenceStartEv

 

GC2-TermConnDroppedEv

GC2-CallCtlTermConnDroppedEv

GC2-ConnDisconnectedEvent-B1

GC2-CallCtlConnDisconnectedEv-B1

 

GC1-CiscoTermConnSelectChangedEv

GC1-CallCtlTermConnTalkingEv

GC2-CiscoCallChangedEv

 

 

 

 

 

 

 

 

 

Ev.getOriginalCall = GC2 (OCall)

Ev.getSurvivingCall = GC1 (FCall)

OCall.getModifiedCallingAddress() = B1,

OCall.getCallingAddress() = B1,

OCall.getModifiedCalledAddress() = C,

OCall.getCalledAddress() = C,

OCall.getLastRedirectedAddress() =

OCall.getCurrentCallingTerminal() = terminal of B1

OCall.getCurrentCalledTerminal() = terminal of C

FCall.getModifiedCallingAddress() = A1,

FCall.getCallingAddress() = A,

FCall.getModifiedCalledAddress() = B1,

FCall.getCalledAddress() = B1,

FCall.getLastRedirectedAddress() =

FCall.getCurrentCallingTerminal() = terminal of A

FCall.getCurrentCalledTerminal() = terminal of B1

Connection for C is created (GC1)

 

 

 

 

 

C gets dropped (GC2)

 

 

 

 

GC2 invalid

 

Conferece Ends

GC1-ConnCreatedEvent-C

GC1-ConnConnectedEvent-C *

GC1-CallCtlConnEstablishedEv-C

GC1-TermConnCreatedEvent

GC1-TermConnActiveEvent

GC1-CallCtlTermConnTalkingEv

 

GC2-TermConnDroppedEv-C

GC2-CallCtlTermConnDroppedEv

GC2-ConnDisconnectedEvent-C

GC2-CallCtlConnDisconnectedEv-C

 

GC2-CallInvalidEvent

GC2-CallObservationEndedEv

 

GC1-CiscoConferenceEndEv

.getModifiedCallingAddress() = A1,

.getCallingAddress() = A,

.getModifiedCalledAddress() = null,

.getCalledAddress() = C,

.getLastRedirectedAddress() = B1

.getCurrentCallingTerminal() = terminal of A.

.getCurrentCalledTerminal() = null

 

Called party with transformed calling and called parties conferences a DN which matches the translation pattern with calling party transformation defined.

Configuration:

Phone A, B, C are in cluster devices.

B has a translation pattern configured where both calling and called parties get transformed to A1 and B1 respectively

C has a translation pattern configured where calling party gets transformed to B2.

Procedure:

Application invokes connect() at A to call B. B1 consult conference the call to C.

Actions

Events

Call info

A and B1 receive Connected Call State

(Basic Call)

 

 

 

 

 

B1 consults call to C

 

 

 

 

 

 

 

 

 

 

 

 

Connection for C is created (GC2)

 

 

C rings

 

 

C Answers

GC1-ConnConnectedEvent-B1

GC1-CallCtlConnEstablishedEv-B1

GC1-TermConnActiveEvent

GC1-CallCtlTermConnTalkingEv

 

 

 

GC1-CiscoTermConnSelectChangedEv

CG1-CallCtlTermConnHeldEv

GC2-CiscoConsultCallActiveEv

GC2-ConnCreatedEvent-B1

GC2-ConnConnectedEvent-B1

GC2-CallCtlConnInitiatedEv-B1

GC2-TermConnCreatedEvent

GC2-TermConnActiveEvent

GC2-CallCtlTermConnTalkingEv

GC2-CallCtlConnDialingEv-B1

GC2-CallCtlConnEstablishedEv-B1

 

GC2-ConnCreatedEvent-C

GC2-ConnInprogressEvent-C

GC2-CallCtlConnOfferedEv-C

GC2-ConnAlertingEvent-C

GC2-CallCtlConnAlertingEv-C

GC2-TermConnCreatedEvent

GC2-TermConnRingingEvent

GC2-CallCtlTermConnRingingEv

.getModifiedCallingAddress() = A1,

.getCallingAddress() = A,

.getModifiedCalledAddress() = B1,

.getCalledAddress() = B1,

.getCurrentCallingTerminal() = Terminal of A. .getCurrentCalledTerminal() = Terminal of B1

.getModifiedCallingAddress() = B1,

 

getCallingAddress() = B1,

.getModifiedCalledAddress() = null,

.getCalledAddress() = null,

.getLastRedirectedAddress() =

.getCurrentCallingTerminal() = terminal of B1.

.getCurrentCalledTerminal() = null

.getModifiedCallingAddress() = B2,

 

 

 

 

 

.getCallingAddress() = B1,

.getModifiedCalledAddress() = C,

.getCalledAddress() = C,

.getLastRedirectedAddress() =

.getCurrentCallingTerminal() = terminal of B1.

.getCurrentCalledTerminal() = null

 

 

 

 

 

 

 

 

 

 

Conference Starts

 

B1 gets dropped (GC2)

 

 

GC2-ConnConnectedEvent-C

GC2-CallCtlConnEstablishedEv-C

GC2-TermConnActiveEvent

GC2-CallCtlTermConnTalkingEv

 

 

 

 

 

GC1-CiscoConferenceStartEv

 

GC2-TermConnDroppedEv

GC2-CallCtlTermConnDroppedEv

GC2-ConnDisconnectedEvent-B1

GC2-CallCtlConnDisconnectedEv-B1

 

GC1-CiscoTermConnSelectChangedEv

GC1-CallCtlTermConnTalkingEv

GC2-CiscoCallChangedEv

 

 

 

.getModifiedCallingAddress() = B2,

.getCallingAddress() = B1,

.getModifiedCalledAddress() = C,

.getCalledAddress() = C,

.getLastRedirectedAddress() =

.getCurrentCallingTerminal() = terminal of B1.

.getCurrentCalledTerminal() = terminal of C

 

 

 

 

 

 

 

 

 

 

 

 

 

Ev.getOriginalCall = GC2 (OCall)

Ev.getSurvivingCall = GC1 (FCall)

OCall.getModifiedCallingAddress() = B2,

OCall.getCallingAddress() = B1,

OCall.getModifiedCalledAddress() = C,

OCall.getCalledAddress() = C,

OCall.getLastRedirectedAddress() =

OCall.getCurrentCallingTerminal() = terminal of B1

OCall.getCurrentCalledTerminal() = terminal of C

 

 

 

 

 

 

 

 

 

 

 

 

Connection for C is created (GC1)

 

 

 

 

 

 

C gets dropped (GC2)

 

 

 

 

 

GC2 invalid

 

Conferece Ends

 

 

 

 

 

 

 

 

 

 

 

 

GC1-ConnCreatedEvent-C *

GC1-ConnConnectedEvent-C

GC1-CallCtlConnEstablishedEv-C

GC1-TermConnCreatedEvent

GC1-TermConnActiveEvent

GC1-CallCtlTermConnTalkingEv

 

 

GC2-TermConnDroppedEv-C

GC2-CallCtlTermConnDroppedEv

GC2-ConnDisconnectedEvent-C

GC2-CallCtlConnDisconnectedEv-C

 

GC2-CallInvalidEvent

GC2-CallObservationEndedEv

 

GC1-CiscoConferenceEndEv

FCall.getModifiedCallingAddress() = A1,

FCall.getCallingAddress() = A,

FCall.getModifiedCalledAddress() = B1,

FCall.getCalledAddress() = B1,

FCall.getLastRedirectedAddress() =

FCall.getCurrentCallingTerminal() = terminal of A

FCall.getCurrentCalledTerminal() = terminal of B1

 

 

 

.getModifiedCallingAddress() = A1,

.getCallingAddress() = A,

.getModifiedCalledAddress() = null,

.getCalledAddress() = C,

.getLastRedirectedAddress() = B1

.getCurrentCallingTerminal() = terminal of A.

.getCurrentCalledTerminal() = null

 

WildCard Routepoint interaction (behavior change)

WildCard RoutePoint redirects a basic incoming-call to IPPhone

Configuration:

Phone A, B are in cluster devices. 4XXX is a wildcard routepoint

Service parameter "Use WildCard pattern in CTI Call Info" is set to true.

Procedure:

Application invokes connect() at A to call 4000. 4XXX redirects the call to B.

Actions

Events

Call info

A initiates call to 4000

 

 

 

 

 

 

Connection of A created, called party info set

 

 

 

 

 

Connection of 4XXX created

 

 

 

 

 

4XXX Redirects to B

 

Connection for B created

B is ringing

 

GC1-CallActiveEvent

GC1-ConnCreatedEvent-A

 

 

 

 

 

GC1-ConnConnectedEvent-A

GC1-CallCtlConnInitiatedEv-A

GC1-TermConnCreatedEvent

GC1-TermConnActiveEvent

GC1-CallCtlTermConnTalkingEv-A

GC1-CallCtlConnDialingEv-A

GC1-CallCtlConnEstablishedEv-A

 

GC1-ConnCreatedEvent-4XXX

GC1-ConnInprogressEvent-4XXX

GC1-CallCtlConnOfferedEv-4XXX

GC1-ConnAlertingEvent-4XXX

 

 

 

 

GC1-ConnCreatedEvent-B

GC1-ConnInprogressEvent-B

GC1-CallCtlConnOfferedEv-B

GC1-ConnAlertingEvent-B

GC1-CallCtlConnAlertingEv-B

GC1-TermConnCreatedEvent

.getModifiedCallingAddress() = A,

.getCallingAddress() = A,

.getModifiedCalledAddress() = "",

.getCalledAddress() = "",

.getCurrentCallingTerminal() = Terminal of A.

.getCurrentCalledTerminal() = null

 

.getModifiedCallingAddress() = A,

.getCallingAddress() = A,

.getModifiedCalledAddress() = "",

.getCalledAddress() = "",

.getCurrentCallingTerminal() = Terminal of A.

.getCurrentCalledTerminal() = null

 

 

.getModifiedCallingAddress() = A,

.getCurrentCallingAddress() = A,

.getCallingAddress() = A,

.getModifiedCalledAddress() = 4000,

.getCalledAddress() = 4XXX,

.getCurrentCalledAddress() = 4XXX

.getCurrentCallingTerminal() = Terminal of A.

.getCurrentCalledTerminal() = null

 

.getModifiedCallingAddress() = A,

getCurrentCallingAddress() = A,

.getCallingAddress() = A,

.getModifiedCalledAddress() = B,

.getCurrentCalledAddress() = B

.getCalledAddress() = 4XXX,

 

 

 

 

4XXX gets dropped

 

 

 

 

B Answers

 

GC1-TermConnRingingEvent

GC1-CallCtlTermConnRingingEv

 

 

GC1-TermConnDroppedEv

GC1-CallCtlTermConnDroppedEv

GC1-ConnDisconnectedEvent-4XXX

GC1-CallCtlConnDisconnectedEv-4XXX

 

GC1-ConnConnectedEvent-B

GC1-CallCtlConnEstablishedEv-B

GC1-TermConnActiveEvent

GC1-CallCtlTermConnTalkingEv

.getLastRedirectedAddress() = 4XXX,

.getCurrentCallingTerminal() = Terminal of A.

.getCurrentCalledTerminal() = null

 

 

 

 

 

 

.getModifiedCallingAddress() = A,

.getCurrentCallingAddress() = A,

.getCallingAddress() = A,

.getModifiedCalledAddress() = B,

.getCalledAddress() = 4XXX,

.getLastRedirectedAddress() = 4XXX,

.getCurrentCallingTerminal() = terminal of A.

.getCurrentCalledTerminal() = terminal of B

WildCard Routepoint Interaction (original behavior)

WildCard RoutePoint redirects a basic incoming-call to IPPhone

Notes / Caveats:

This configuration is not supported. This use case is only intended to show the call flow or events for the above use case with the Use WildCard pattern in CTI Call Info service parameter turned off. Applications should not count on this information to be correct, and to properly support Wildcard Routepoint scenarios, should look to adapting their applications so that they can support the new service parameter being enabled.

An important thing to note is that a connection is created for the dialed DN, 4000. This connection, as well as the connection of 4XXX is not dropped from the call until the redirect happens. This means that if a Wildcard DN is configured on a phone or device, you will see connections for the calling party, 4000, and 4XXX. This basic call will have three connections, which may confuse applications, which might believe it to be a conference call. CiscoCall.isConference() would still return false in this scenario. As stated in previous sections, this extra connection is created in error, and applications should not rely on this connection being there.

Configuration:

Phone A, B are in cluster devices. 4XXX is a wildcard routepoint

Service parameter "Use WildCard pattern in CTI Call Info" is set to false / OFF.

Procedure:

Application invokes connect() at A to call 4000. 4XXX redirects the call to B.

Actions

Events

Call info

A initiates call to 4000

 

 

 

 

 

 

 

 

 

Connection of A created, called party info set

 

 

 

 

 

 

 

Connection of 4000 created

 

 

 

 

 

 

 

 

Connection of 4XXX created

 

GC1-CallActiveEvent

GC1-ConnCreatedEvent-A

 

 

 

 

 

 

 

 

GC1-ConnConnectedEvent-A

GC1-CallCtlConnInitiatedEv-A

GC1-TermConnCreatedEvent

GC1-TermConnActiveEvent

GC1-CallCtlTermConnTalkingEv-A

GC1-CallCtlConnDialingEv-A

GC1-CallCtlConnEstablishedEv-A

 

GC1-ConnCreatedEvent-4000

GC1-ConnInprogressEvent-4000

GC1-CallCtlConnOfferedEv-4000

GC1-ConnAlertingEvent-4000

 

 

 

 

 

GC1-ConnCreatedEvent-4XXX

GC1-ConnInprogressEvent-4XXX

GC1-CallCtlConnOfferedEv-4XXX

.getModifiedCallingAddress() = A,

.getCurrentCallingAddress() = A,

.getCallingAddress() = A,

.getModifiedCalledAddress() = "",

.getCurrentCalledAddress() = "",

.getCalledAddress() = "",

.getCurrentCallingTerminal() = Terminal of A.

.getCurrentCalledTerminal() = null

 

.getModifiedCallingAddress() = A,

.getCurrentCallingAddress() = A,

.getCallingAddress() = A,

.getModifiedCalledAddress() = "",

.getCurrentCalledAddress() = "",

.getCalledAddress() = "",

.getCurrentCallingTerminal() = Terminal of A.

.getCurrentCalledTerminal() = null

 

 

.getModifiedCallingAddress() = A,

.getCurrentCallingAddress() = A,

.getCallingAddress() = A,

.getModifiedCalledAddress() = 4000,

.getCurrentCalledAddress() = 4000,

.getCalledAddress() = 4000,

.getCurrentCallingTerminal() = Terminal of A.

.getCurrentCalledTerminal() = null

 

 

 

 

 

4XXX Redirects to B

 

 

 

 

 

 

 

 

 

 

 

 

Connection for B created

 

B is ringing

 

 

 

B Answers

 

GC1-ConnAlertingEvent-4XXX

 

(note: 3 connections on the 2 party call.)

 

GC1-TermConnDroppedEv

GC1-CallCtlTermConnDroppedEv

GC1-ConnDisconnectedEvent-4XXX

GC1-CallCtlConnDisconnectedEv-4XXX

GC1-TermConnDroppedEv

GC1-CallCtlTermConnDroppedEv

GC1-ConnDisconnectedEvent-4000

GC1-CallCtlConnDisconnectedEv-4000

 

GC1-ConnCreatedEvent-B

GC1-ConnInprogressEvent-B

GC1-CallCtlConnOfferedEv

GC1-ConnAlertingEvent-B

GC1-CallCtlConnAlertingEv-B

GC1-TermConnCreatedEvent

GC1-TermConnRingingEvent

GC1-CallCtlTermConnRingingEv

 

GC1-ConnConnectedEvent-B

GC1-CallCtlConnEstablishedEv-B

GC1-TermConnActiveEvent

GC1-CallCtlTermConnTalkingEv

 

 

 

 

 

.getModifiedCallingAddress() = A,

.getCurrentCallingAddress() = A,

.getCallingAddress() = A,

.getModifiedCalledAddress() = 4000,

.getCurrentCalledAddress() = 4000,

.getCalledAddress() = 4000,

.getCurrentCallingTerminal() = Terminal of A.

.getCurrentCalledTerminal() = null

 

 

 

 

.getModifiedCallingAddress() = A,

.getCallingAddress() = A,

.getModifiedCalledAddress() = B,

.getCurrentCalledAddress() = B

.getCalledAddress() = 4000,

.getLastRedirectedAddress() = 4000,

.getCurrentCallingTerminal() = Terminal of A.

.getCurrentCalledTerminal() = null

.getModifiedCallingAddress() = A,

.getCallingAddress() = A,

.getModifiedCalledAddress() = B,

.getCurrentCalledAddress() = B

.getCalledAddress() = 4000,

.getLastRedirectedAddress() = 4000,

.getCurrentCallingTerminal() = terminal of A.

.getCurrentCalledTerminal() = terminal of B

External Call Control use cases

External Call Control on Translation Pattern and CEPM returns "continue"

Configuration:

Phone A, B are in cluster devices. B matches the translation pattern BXXX which has calling and called party transformation defined to transform A to A1 and B to B1 and External Call Control is also enabled.

Procedure:

Application invokes connect() at A to call B.

Result:

Dialed number B matches the translation pattern BXXX which has External Call Control enabled. This takes precedence and CUCM requests CEPM to get routing rule for B.

CEPM returns continue and hence call will be presented to B1 (see use case above "15.7.1.2.1 - Basic Call initiated from JTAPI to the DN with Translation Pattern configured to transform called party".

External Call Control on Translation Pattern and CEPM returns "divert"

Configuration:

Phone A, B are in cluster devices. B matches the translation pattern BXXX which has calling and called party transformation defined to transform A to A1 and B to B1 and External Call Control is also enabled.

Procedure:

Application invokes connect() at A to call B.

Result:

Dialed number B matches the translation pattern BXXX which has External Call Control enabled. This takes precedence and CUCM requests CEPM to get routing rule for B.

CEPM returns divert to C.

Actions

Events

Call info

A initiates call to B

 

 

 

 

 

 

 

Connection of A created, called party info set

 

 

 

 

 

 

 

 

 

 

 

 

 

CEPM Returns divert to C

Connection of C created

 

C starts ringing

 

 

GC1-CallActiveEvent

GC1-ConnCreatedEvent-A

 

 

 

 

 

 

GC1-ConnConnectedEvent-A

GC1-CallCtlConnInitiatedEv-A

GC1-TermConnCreatedEvent

GC1-TermConnActiveEvent

GC1-CallCtlTermConnTalkingEv-A

GC1-CallCtlConnDialingEv-A

 

GC1-CallCtlConnEstablishedEv-A

 

 

 

 

 

 

 

 

 

GC1-ConnCreatedEvent-C

GC1-ConnInprogressEvent-C

GC1-CallCtlConnOfferedEv-C

GC1-ConnAlertingEvent-C

GC1-CallCtlConnAlertingEv-C

GC1-TermConnCreatedEvent

.getModifiedCallingAddress() = A,

.getCallingAddress() = A,

.getModifiedCalledAddress() = "",

.getCalledAddress() = "",

.getCurrentCallingTerminal() = Terminal of A.

.getCurrentCalledTerminal() = null

 

.getModifiedCallingAddress() = A,

.getCallingAddress() = A,

.getModifiedCalledAddress() = "",

.getCalledAddress() = "",

.getCurrentCallingTerminal() = Terminal of A.

.getCurrentCalledTerminal() = null

 

 

.getModifiedCallingAddress() = A1,

.getCallingAddress() = A,

.getModifiedCalledAddress() = B1,

.getCurrentCalledAddress() = BXXX,

.getCalledAddress() = BXXX,

.getLastRedirectedAddress() = BXXX

.getCurrentCallingTerminal() = terminal of A.

.getCurrentCalledTerminal() = null

 

 

.getModifiedCallingAddress() = A1,

.getCallingAddress() = A,

.getModifiedCalledAddress() = C,

.getCurrentCalledAddress() = C,

 

 

 

 

 

 

C Answers

 

 

 

GC1-TermConnRingingEvent

GC1-CallCtlTermConnRingingEv-C

 

 

 

GC1-ConnConnectedEvent-C

GC1-CallCtlConnEstablishedEv-C

GC1-TermConnActiveEvent

GC1-CallCtlTermConnTalkingEv

 

.getCalledAddress() = BXXX,

.getLastRedirectedAddress() = BXXX

.getCurrentCallingTerminal() = terminal of A.

.getCurrentCalledTerminal() = null

 

.getModifiedCallingAddress() = A1,

.getCallingAddress() = A,

.getModifiedCalledAddress() = C,

.getCalledAddress() = BXXX,

.getLastRedirectedAddress() = B1

.getCurrentCallingTerminal() = terminal of A.

.getCurrentCalledTerminal() = terminal of C

External Call Control on Translation Pattern and CEPM returns <reject>

Configuration:

Phone A, B are in cluster devices. B matches the translation pattern BXXX which has calling and called party transformation defined to transform A to A1 and B to B1 and External Call Control is also enabled.

Procedure:

Application invokes connect() at A to call B.

Result:

Dialed number B matches the translation pattern BXXX which has External Call Control enabled. This takes precedence and CUCM requests CEPM to get routing rule for B. The routing rule for B says "Reject"<reject>

CEPM returns reject.

A receives ConnFailedEvent (cause = CtiCallRejected), ConnDisconnectedEv (cause = normal), CallInvalidEvent (caue = Normal).

Actions

Events

Call info

A initiates call to B

 

 

 

 

 

 

Connection of A created,

 

 

 

 

 

 

CEPM Returns Reject

 

GC1-CallActiveEvent

GC1-ConnCreatedEvent-A

 

 

 

 

 

GC1-ConnConnectedEvent-A

GC1-CallCtlConnInitiatedEv-A

GC1-TermConnCreatedEvent

GC1-TermConnActiveEvent

GC1-CallCtlTermConnTalkingEv-A

GC1-CallCtlConnDialingEv-A

GC1-CallCtlConnEstablishedEv-A

 

GC1-ConnFailedEv-A

GC1-TermConnDroppedEv

GC1-CallCtlTermConnDroppedEv

GC1-ConnDisconnectedEvent-A

GC1-CallCtlConnDisconnectedEv-A

 

GC1-CallInvalidEvent

GC1-CallObservationEndedEv

.getModifiedCallingAddress() = A,

.getCallingAddress() = A,

.getModifiedCalledAddress() = "",

.getCalledAddress() = "",

.getCurrentCallingTerminal() = Terminal of A.

.getCurrentCalledTerminal() = null

 

.getModifiedCallingAddress() = A,

.getCallingAddress() = A,

.getModifiedCalledAddress() = "",

.getCalledAddress() = "",

.getCurrentCallingTerminal() = Terminal of A.

.getCurrentCalledTerminal() = null

 

 

 

Cause = CtiCallRejected

 

Cause = Normal

 

External Call Control on Translation Pattern and CEPM returns "continue" with modified calling and called parties.

Configuration:

Phone A, B are in cluster devices. B matches the translation pattern BXXX which has calling and called party transformation defined to transform A to A1 and B to B1 and External Call Control is also enabled.

Procedure:

Application invokes connect() at A to call B.

Result:

Dialed number B matches the translation pattern BXXX which has External Call Control enabled. This takes precedence and CUCM requests CEPM to get routing rule for B.

CEPM returns continue with ModifiedCalling = "MA" and ModifiedCalled = "MB"

Call will be extended to "C" (based on description in 8.1.6.1 – modified calling and modified called in divertTo routing directive, overrides the calling & called number transformation configured for translation pattern and the call is diverted to C)

Call Events:

Actions

Events

Call info

A initiates call to B

 

 

 

 

 

 

 

Connection of A created, called party info set

 

 

 

 

 

CEPM Returns continue with modified calling/called

 

Connection of MBcreated

 

MB starts ringing

 

 

 

 

 

BAnswers

GC1-CallActiveEvent

GC1-ConnCreatedEvent-A

 

 

 

 

 

 

GC1-ConnConnectedEvent-A

GC1-CallCtlConnInitiatedEv-A

GC1-TermConnCreatedEvent

GC1-TermConnActiveEvent

GC1-CallCtlTermConnTalkingEv-A

GC1-CallCtlConnDialingEv-A

GC1-CallCtlConnEstablishedEv-A

 

 

 

 

GC1-ConnCreatedEvent-MB

GC1-ConnInprogressEvent-MB

GC1-CallCtlConnOfferedEv-MB

GC1-ConnAlertingEvent-MB

GC1-CallCtlConnAlertingEv-MB

GC1-TermConnCreatedEvent

GC1-TermConnRingingEvent

GC1-CallCtlTermConnRingingEv-MB

 

GC1-ConnConnectedEvent-MB

GC1-CallCtlConnEstablishedEv-MB

GC1-TermConnActiveEvent

GC1-CallCtlTermConnTalkingEv

.getModifiedCallingAddress() = A,

.getCallingAddress() = A,

.getModifiedCalledAddress() = "",

.getCalledAddress() = "",

.getCurrentCallingTerminal() = Terminal of A.

.getCurrentCalledTerminal() = null

 

.getModifiedCallingAddress() = A1,

.getCallingAddress() = A,

.getModifiedCalledAddress() = "",

.getCalledAddress() = "",

.getCurrentCallingTerminal() = Terminal of A.

.getCurrentCalledTerminal() = null

 

 

 

 

 

.getModifiedCallingAddress() = MA,

.getCallingAddress() = A,

.getCurrentCallingAddress() = A

.getModifiedCalledAddress() = MB,

.getCurrentCalledAddess() = MB,

.getCalledAddress() = B1,

.getLastRedirectedAddress() =

.getCurrentCallingTerminal() = terminal of A.

.getCurrentCalledTerminal() = null

 

.getModifiedCallingAddress() = MA,

.getCallingAddress() = A,

.getModifiedCalledAddress() = MB,

.getCalledAddress() = MB,

.getLastRedirectedAddress() =

.getCurrentCallingTerminal() = terminal of A.

.getCurrentCalledTerminal() = terminal of MB

External Call Control on Translation Pattern and CEPM returns "divert" with modified calling and called parties

Configuration:

Phone A, B are in cluster devices. B matches the translation pattern BXXX which has calling and called party transformation defined to transform A to A1 and B to B1 and External Call Control is also enabled.

Procedure:

Application invokes connect() at A to call B.

Result:

Dialed number B matches the translation pattern BXXX which has External Call Control enabled. This takes precedence and CUCM requests CEPM to get routing rule for B.

CEPM returns divertTo = C, with ModifiedCalling = "MA" and ModifiedCalled = "MB"

Call will be extended to "C" (based on description in 8.1.6.1 – modified calling and modified called in divertTo routing directive, overrides the calling & called number transformation configured for translation pattern and the call is diverted to C)

Call Events:

Actions

Events

Call info

A initiates call to B

 

 

 

 

 

 

 

Connection of A created, called party info set

 

CEPM Returns divert to C, modify Called/Calling

 

Connection of C created

 

C starts ringing

 

 

 

 

 

 

 

C Answers

 

GC1-CallActiveEvent

GC1-ConnCreatedEvent-A

 

 

 

 

 

 

GC1-ConnConnectedEvent-A

GC1-CallCtlConnInitiatedEv-A

GC1-TermConnCreatedEvent

GC1-TermConnActiveEvent

GC1-CallCtlTermConnTalkingEv-A

 

 

GC1-CallCtlConnDialingEv-A

GC1-CallCtlConnEstablishedEv-A

GC1-ConnCreatedEvent-C

GC1-ConnInprogressEvent-C

GC1-CallCtlConnOfferedEv-C

GC1-ConnAlertingEvent-C

GC1-CallCtlConnAlertingEv-C

GC1-TermConnCreatedEvent

GC1-TermConnRingingEvent

GC1-CallCtlTermConnRingingEv-C

 

GC1-ConnConnectedEvent-C

GC1-CallCtlConnEstablishedEv-C

GC1-TermConnActiveEvent

GC1-CallCtlTermConnTalkingEv

 

.getModifiedCallingAddress() = A,

.getCallingAddress() = A,

.getModifiedCalledAddress() = "",

.getCalledAddress() = "",

.getCurrentCallingTerminal() = Terminal of A.

.getCurrentCalledTerminal() = null

 

.getModifiedCallingAddress() = A1,

.getCallingAddress() = A,

.getModifiedCalledAddress() = "",

.getCalledAddress() = "",

.getCurrentCallingTerminal() = Terminal of A.

.getCurrentCalledTerminal() = null

 

 

.getModifiedCallingAddress() = MA,

.getCallingAddress() = A,

.getModifiedCalledAddress() = MB,

.getCurrentCalledAddress() = C

.getCalledAddress() = B1,

.getLastRedirectedAddress() = MB,

.getCurrentCallingTerminal() = terminal of A.

.getCurrentCalledTerminal() = null

 

 

.getModifiedCallingAddress() = MA,

.getCallingAddress() = A,

.getModifiedCalledAddress() = C,

.getCalledAddress() = C,

.getLastRedirectedAddress() = MB,

.getCurrentCallingTerminal() = terminal of A.

.getCurrentCalledTerminal() = terminal of C

External Call Control on Translation Pattern and CEPM returns "divert" with modified calling and called parties with resetCallHistory flag = resetLastHop

Configuration:

Phone A, B are in cluster devices. B matches the translation pattern BXXX which has calling and called party transformation defined to transform A to A1 and B to B1 and External Call Control is also enabled.

Procedure:

Application invokes connect at A to call B.

Result:

Dialed number B matches the translation pattern BXXX which has External Call Control enabled. This takes precedence and CUCM requests CEPM to get routing rule for B.

CEPM returns divertTo = C, with ModifiedCalling = "MA" and ModifiedCalled = "MB", resetCallHistory = "resetLastHop"

Call will be extended to "C" (based on description in 8.1.6.1 – modified calling and modified called in divertTo routing directive, overrides the calling & called number transformation configured for translation pattern and the call is diverted to C)

Actions

Events

Call info

A initiates call to B

 

 

 

 

 

 

 

Connection of A created, called party info set

 

 

 

 

 

CEPM Returns divert to C, modify Called/Calling

 

Connection of C created

 

C starts ringing

 

 

 

 

 

 

GC1-CallActiveEvent

GC1-ConnCreatedEvent-A

 

 

 

 

 

 

GC1-ConnConnectedEvent-A

GC1-CallCtlConnInitiatedEv-A

GC1-TermConnCreatedEvent

GC1-TermConnActiveEvent

GC1-CallCtlTermConnTalkingEv-A

GC1-CallCtlConnDialingEv-A

GC1-CallCtlConnEstablishedEv-A

 

 

 

 

GC1-ConnCreatedEvent-C

GC1-ConnInprogressEvent-C

GC1-CallCtlConnOfferedEv-C

GC1-ConnAlertingEvent-C

GC1-CallCtlConnAlertingEv-C

GC1-TermConnCreatedEvent

GC1-TermConnRingingEvent

GC1-CallCtlTermConnRingingEv-C

.getModifiedCallingAddress() = A,

.getCallingAddress() = A,

.getModifiedCalledAddress() = "",

.getCalledAddress() = "",

.getCurrentCallingTerminal() = Terminal of A.

.getCurrentCalledTerminal() = null

 

.getModifiedCallingAddress() = A1,

.getCallingAddress() = A,

.getModifiedCalledAddress() = B1,

.getCalledAddress() = B1,

.getCurrentCallingTerminal() = Terminal of A.

.getCurrentCalledTerminal() = null

 

 

 

 

 

 

 

.getModifiedCallingAddress() = MA,

.getCallingAddress() = A,

.getModifiedCalledAddress() = C,

.getCalledAddress() = B1,

.getLastRedirectedAddress() =

.getCurrentCallingTerminal() = terminal of A.

.getCurrentCalledTerminal() = null

 

C Answers

 

GC1-ConnConnectedEvent-C

GC1-CallCtlConnEstablishedEv-C

GC1-TermConnActiveEvent

GC1-CallCtlTermConnTalkingEv

 

.getModifiedCallingAddress() = MA,

.getCallingAddress() = A,

.getModifiedCalledAddress() = C,

.getCalledAddress() = B1,

.getLastRedirectedAddress() =

.getCurrentCallingTerminal() = terminal of A.

.getCurrentCalledTerminal() = terminal of C

External Call Control on Translation Pattern and CEPM returns "divert" with modified calling and called parties with resetCallHistory flag = resetAll

Configuration:

Phone A, B are in cluster devices. B matches the translation pattern BXXX which has calling and called party transformation defined to transform A to A1 and B to B1 and External Call Control is also enabled.

Procedure:

Application invokes connect() at A to call B.

Result:

Dialed number B matches the translation pattern BXXX which has External Call Control enabled. This takes precedence and CUCM requests CEPM to get routing rule for B.

CEPM returns divertTo = "C", with ModifiedCalling = "MA" and ModifiedCalled = "MB"

C has a userRule configured to DivertTo = "D" with ModifiedCalling = "MMA", ModifiedCalled = "MMB", resetCallHistory = "resetAll"

Call will be extended to "D"

Actions

Events

Call info

A initiates call to B

 

 

 

 

 

 

Connection of A created, called party info set

 

 

 

 

CEPM Returns divert to C, modify Called/Calling

CEPM Returns divert to D, modify Called/Calling

 

Connection of D created

 

D starts ringing

 

 

 

 

 

GC1-CallActiveEvent

GC1-ConnCreatedEvent-A

 

 

 

 

 

GC1-ConnConnectedEvent-A

GC1-CallCtlConnInitiatedEv-A

GC1-TermConnCreatedEvent

GC1-TermConnActiveEvent

GC1-CallCtlTermConnTalkingEv-A

GC1-CallCtlConnDialingEv-A

GC1-CallCtlConnEstablishedEv-A

 

 

 

 

 

GC1-ConnCreatedEvent-D

GC1-ConnInprogressEvent-D

GC1-CallCtlConnOfferedEv-D

GC1-ConnAlertingEvent-D

GC1-CallCtlConnAlertingEv-D

GC1-TermConnCreatedEvent

GC1-TermConnRingingEvent

GC1-CallCtlTermConnRingingEv-D

.getModifiedCallingAddress() = A,

.getCallingAddress() = A,

.getModifiedCalledAddress() = "",

.getCalledAddress() = "",

.getCurrentCallingTerminal() = Terminal of A.

.getCurrentCalledTerminal() = null

 

.getModifiedCallingAddress() = A1,

.getCallingAddress() = A,

.getModifiedCalledAddress() = "",

.getCalledAddress() = "",

.getCurrentCallingTerminal() = Terminal of A.

.getCurrentCalledTerminal() = null

 

 

 

 

 

 

.getModifiedCallingAddress() = MMA,

.getCallingAddress() = A,

.getModifiedCalledAddress() = D,

.getCurrentCalledAddress() = D,

.getCalledAddress() = B1,

.getLastRedirectedAddress() =

.getCurrentCallingTerminal() = terminal of A.

.getCurrentCalledTerminal() = null

 

 

 

 

D Answers

 

GC1-ConnConnectedEvent-D

GC1-CallCtlConnEstablishedEv-D

GC1-TermConnActiveEvent

GC1-CallCtlTermConnTalkingEv

 

 

 

 

.getModifiedCallingAddress() = MMA,

.getCallingAddress() = A,

.getModifiedCalledAddress() = D,

.getCalledAddress() = D,

.getLastRedirectedAddress() =

.getCurrentCallingTerminal() = terminal of A.

.getCurrentCalledTerminal() = terminal of D

External Call Control on Translation Pattern and CEPM returns <reject> and service parameter CTI use Wildcard Pattern as calledPartyDN is set to false.

Configuration:

Phone A, B are in cluster devices. B matches the translation pattern BXXX which has calling and called party transformation defined to transform A to A1 and B to B1 and External Call Control is also enabled.

Procedure:

Application invokes connect() at A to call B.

Result:

Dialed number B matches the translation pattern BXXX which has External Call Control enabled. This takes precedence and CUCM requests CEPM to get routing rule for B. The routing rule for B says "Reject"<reject>

CEPM returns reject.

Jtapi throws platform exception to the application. A receives ConnFailedEvent (cause = CtiCallRejected), ConnDisconnectedEv (cause = normal), CallInvalidEvent (caue = Normal).

Actions

Events

Call info

A initiates call to B

 

 

 

 

 

 

Connection of A created,

 

 

 

 

 

CEPM Returns Reject

 

 

GC1-CallActiveEvent

GC1-ConnCreatedEvent-A

 

 

 

 

 

GC1-ConnConnectedEvent-A

GC1-CallCtlConnInitiatedEv-A

GC1-TermConnCreatedEvent

GC1-TermConnActiveEvent

GC1-CallCtlTermConnTalkingEv-A

GC1-CallCtlConnDialingEv-A

GC1-CallCtlConnEstablishedEv-A

 

GC1-ConnFailedEv-A

 

Jtapi throws Exception: PlatformException

 

GC1-TermConnDroppedEv

GC1-CallCtlTermConnDroppedEv

GC1-ConnDisconnectedEvent-A

GC1-CallCtlConnDisconnectedEv-A

 

GC1-CallInvalidEvent

GC1-CallObservationEndedEv

.getModifiedCallingAddress() = A,

.getCallingAddress() = A,

.getModifiedCalledAddress() = "",

.getCalledAddress() = "",

.getCurrentCallingTerminal() = Terminal of A.

.getCurrentCalledTerminal() = null

 

.getModifiedCallingAddress() = A,

.getCallingAddress() = A,

.getModifiedCalledAddress() = "",

.getCalledAddress() = "",

.getCurrentCallingTerminal() = Terminal of A.

.getCurrentCalledTerminal() = null

 

 

 

 

Exception info: Could not meet post conditions of connect()

 

Cause = CtiCallRejected

 

Cause = Normal

 

Transfer and External Call Control with modified calling and called parties

Configuration:

Phone A, B are in cluster devices. B matches the translation pattern BXXX where External Call Contol is enabled.

Phone C and D does not match any translation pattern, and have no External Call Control defined.

Procedure:

Application invokes connect() at A to call B. CEPM returns divertTo = C, with ModifiedCalling = "MA" and ModifiedCalled = "MB".

C initiate transfer to D and completes the transfer.

Result:

Transfer is successfully completed

Actions

Events

Call info

A initiates call to B

 

 

 

 

 

 

Connection of A created, called party info set

 

 

 

 

 

 

CEPM Returns divert to C, modify Called/Calling

 

Connection of C created

 

C starts ringing

 

GC1-CallActiveEvent

GC1-ConnCreatedEvent-A

 

 

 

 

 

GC1-ConnConnectedEvent-A

GC1-CallCtlConnInitiatedEv-A

GC1-TermConnCreatedEvent

GC1-TermConnActiveEvent

GC1-CallCtlTermConnTalkingEv-A

GC1-CallCtlConnDialingEv-A

GC1-CallCtlConnEstablishedEv-A

 

 

 

 

 

GC1-ConnCreatedEvent-C

GC1-ConnInprogressEvent-C

GC1-CallCtlConnOfferedEv-C

GC1-ConnAlertingEvent-C

GC1-CallCtlConnAlertingEv-C

GC1-TermConnCreatedEvent

GC1-TermConnRingingEvent

GC1-CallCtlTermConnRingingEv-C

.getModifiedCallingAddress() = A,

.getCallingAddress() = A,

.getModifiedCalledAddress() = "",

.getCalledAddress() = "",

.getCurrentCallingTerminal() = Terminal of A.

.getCurrentCalledTerminal() = null

 

.getModifiedCallingAddress() = A,

.getCallingAddress() = A,

.getModifiedCalledAddress() = B1,

.getCalledAddress() = B1,

.getLastRedirectedAddress() = null,

.getCurrentCallingTerminal() = terminal of A.

.getCurrentCalledTerminal() = null

 

 

 

 

 

 

.getModifiedCallingAddress() = MA,

.getCallingAddress() = A,

.getModifiedCalledAddress() = C,

.getCalledAddress() = B1,

.getLastRedirectedAddress() = MB

.getCurrentCallingTerminal() = terminal of A.

.getCurrentCalledTerminal() = null

 

C Answers

 

 

 

 

 

 

C consult transfer to D

 

 

Connection for C created (GC2)

 

 

 

 

 

 

 

Connection for D created (GC2)

 

 

 

 

 

 

 

 

 

 

 

D Answers

GC1-ConnConnectedEvent-C

GC1-CallCtlConnEstablishedEv-C

GC1-TermConnActiveEvent

GC1-CallCtlTermConnTalkingEv

 

 

 

CG1-CallCtlTermConnHeldEv

GC2-ConsultCallActiveEvent

 

GC2-ConnCreatedEvent-C

GC2-ConnConnectedEvent-C

GC2-CallCtlConnInitiatedEv-C

GC2-TermConnCreatedEvent

GC2-TermConnActiveEvent

GC2-CallCtlTermConnTalkingEv

GC2-CallCtlConnDialingEv-C

GC2-CallCtlConnEstablishedEv-C

 

GC2-ConnCreatedEvent-D

GC2-ConnInprogressEvent-D

GC2-CallCtlConnOfferedEv-D

GC2-ConnAlertingEvent-D

GC2-CallCtlConnAlertingEv-D

GC2-TermConnCreatedEvent

GC2-TermConnRingingEvent

GC2-CallCtlTermConnRingingEv

GC2-ConnConnectedEvent-D

GC2-CallCtlConnEstablishedEv-D

GC2-TermConnActiveEvent

GC2-CallCtlTermConnTalkingEv

.getModifiedCallingAddress() = MA,

.getCallingAddress() = A,

.getModifiedCalledAddress() = C,

.getCalledAddress() = C,

.getLastRedirectedAddress() = MB,

.getCurrentCallingTerminal() = terminal of A.

.getCurrentCalledTerminal() = terminal of C

 

 

 

 

.getModifiedCallingAddress() = C,

.getCallingAddress() = C,

.getModifiedCalledAddress() = "",

.getCalledAddress() = "",

.getLastRedirectedAddress() =

.getCurrentCallingTerminal() = terminal of C.

.getCurrentCalledTerminal() = null

 

 

.getModifiedCallingAddress() = C,

.getCallingAddress() = C,

.getModifiedCalledAddress() = D,

.getCalledAddress() = D,

.getLastRedirectedAddress() =

.getCurrentCallingTerminal() = terminal of C.

.getCurrentCalledTerminal() = null

 

.getModifiedCallingAddress() = C,

.getCallingAddress() = C,

.getModifiedCalledAddress() = D,

.getCalledAddress() = D,

 

 

 

 

 

Transfer Starts

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

D gets added to GC1

 

 

 

GC1-CiscoTermConnSelectChangedEv

GC2-CiscoTermConnSelectChangedEv

 

GC1-CiscoTransferStartEv

GC2-CiscoCallChangedEv

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

GC1-ConnCreatedEvent-D

GC1-ConnConnectedEvent-D

GC1-CallCtlConnEstablishedEv-D

GC1-TermConnCreatedEvent

GC1-TermConnActiveEvent

GC1-CallCtlTermConnTalkingEv

.getLastRedirectedAddress() =

.getCurrentCallingTerminal() = terminal of C.

.getCurrentCalledTerminal() = terminal of D

 

 

Ev.getOriginalCall = GC2 (OCall)

Ev.getSurvivingCall = GC1 (FCall)

OCall.getModifiedCallingAddress() = C,

OCall.getCallingAddress() = C,

OCall.getModifiedCalledAddress() = D,

OCall.getCalledAddress() = D,

OCall.getLastRedirectedAddress() =

OCall.getCurrentCallingTerminal() = terminal of C

OCall.getCurrentCalledTerminal() = terminal of D

 

FCall.getModifiedCallingAddress() = MA,

FCall.getCallingAddress() = A,

FCall.getModifiedCalledAddress() = C,

FCall.getCalledAddress() = C,

FCall.getLastRedirectedAddress() = MB

FCall.getCurrentCallingTerminal() = terminal of A

FCall.getCurrentCalledTerminal() = terminal of C

 

.getModifiedCallingAddress() = MA,

.getCallingAddress() = A,

.getModifiedCalledAddress() = D,

.getCurrentCalledAddress() = D,

.getCalledAddress() = B1,

.getLastRedirectedAddress() = C

.getCurrentCallingTerminal() = terminal of A.

.getCurrentCalledTerminal() = terminal of D

D gets dropped from GC2

 

 

 

C gets dropped from GC1

 

 

 

C gets dropped fromGC2

 

 

 

 

GC2 Invalid

 

 

Transfer ends

GC2-TermConnDroppedEv

GC2-CallCtlTermConnDroppedEv

GC2-ConnDisconnectedEvent-D

GC2-CallCtlConnDisconnectedEv-D

 

GC1-TermConnDroppedEv

GC1-CallCtlTermConnDroppedEv

GC1-ConnDisconnectedEvent-C

GC1-CallCtlConnDisconnectedEv-C

 

GC2-TermConnDroppedEv

GC2-CallCtlTermConnDroppedEv

GC2-ConnDisconnectedEvent-C

GC2-CallCtlConnDisconnectedEv-C

 

GC2-CallInvalidEvent

GC2-CallObservationEndedEv

 

GC1-CiscoTransferEndEv

 

Chaperone use cases

Call is redirected to a hunt list of chaperones and the chaperone enables call recording and conferences in the called party

Configuration:

A calls X, X’s DN matches the translation pattern where External Call Control is enabled.

CEPM determines this call needs to have a chaperone’s supervise. CEPM returns the permit decision with the obligation <divert>, destination HuntPilot B, which is a hunt pilot of chaperones, and a reason string "chaperone".

CUCM redirects the call to the hunt pilot B, and the chaperone C1 answers the call.

After talking to A briefly and discovered that A intended to talk to D, the chaperone C1 starts to establish a conference to D. C1 presses the conference softkey and dials D.

CUCM queries CEPM for the call, with calling user C1 with DN C1, and called user D with DN D.

CEPM returns the response with permit decision with <continue> call routing directive, since the policy server detects that the caller is the chaperone.

CUCM rings D’s phone and D answers the call.

C1 presses the conference softkey again, and the conference is established.

The chaperone C1 presses the "record" softkey. This triggers the call recording being setup from C1’s IP phone to the recorder.

As one of the steps to establish recording calls to the recorder, two recording calls setup are first sent to the BIB of C1’s IP phone (INVITE for SIP phone and SCCP only the media message are involved). Note only one recording is shown in the picture.

As another step to establish the recording calls to the recorder, the two calls are then redirected to the recorder.

When the call recording is eablished successfully, the recording warning tone is playing to the C1’s phone. The recording warning tone is enabled by setting service parameter "Play Recording Notification Tone To Observed Target" to True.

After comfirming the call recording is established successfully, the chaperone reads an announcement to both A and D and informs them the call is being recorded.

A and D starts to talk under the supervision of the chaperone.

NOTE:

Chaperones have limited abilities in what they can do on a call. The most obvious example is that they cannot put the call on hold, because they are required to be on the call at all times. To learn more about Chaperone limitations, please see the related sections of the External Call Control FFS.

Call Events:

Actions

Events

Call info

A initiates call to X

 

 

 

 

 

 

Connection of A created,

 

 

 

 

 

 

Hunt connection created (see Hunt List section)

 

 

 

 

 

 

Connection of C1 created

 

C1 starts ringing

 

GC1-CallActiveEvent

GC1-ConnCreatedEvent-A

 

 

 

 

 

GC1-ConnConnectedEvent-A

GC1-CallCtlConnInitiatedEv-A

GC1-TermConnCreatedEvent

GC1-TermConnActiveEvent

GC1-CallCtlTermConnTalkingEv-A

GC1-CallCtlConnDialingEv-A

GC1-CallCtlConnEstablishedEv-A

 

GC1-CiscoHuntConnCreatedEv-B

GC1-ConnInProgressEv-B

GC1-CallCtlConnOfferedEv-B

GC1-ConnAlertingEv-B

GC1-CallCtlConnAlertingEv-B

 

 

 

 

GC1-ConnCreatedEvent-C1

GC1-ConnInprogressEvent-C1

GC1-CallCtlConnOfferedEv-C1

GC1-ConnAlertingEvent-C1

GC1-CallCtlConnAlertingEv-C1

 

.getModifiedCallingAddress() = A,

.getCallingAddress() = A,

.getModifiedCalledAddress() = "",

.getCalledAddress() = "",

.getCurrentCallingTerminal() = Terminal of A.

.getCurrentCalledTerminal() = null

 

.getModifiedCallingAddress() = A,

.getCallingAddress() = A,

.getModifiedCalledAddress() = "",

.getCalledAddress() = "",

.getLastRedirectedParty() = "",

.getCurrentCallingTerminal() = Terminal of A.

.getCurrentCalledTerminal() = null

 

.getModifiedCallingAddress() = A,

.getCallingAddress() = A,

.getModifiedCalledAddress() = B,

.getCurrentCalledAddress() = B

.getCalledAddress() = X,

.getLastRedirectedAddress() = X,

.getCurrentCallingTerminal() = terminal of A.

.getCurrentCalledTerminal() = null

 

.getModifiedCallingAddress() = A,

.getCallingAddress() = A,

.getModifiedCalledAddress() = B,

.getCurrentCalledAddress() = B

.getCalledAddress() = X,

.getLastRedirectedAddress() = X,

 

 

 

 

 

 

C1 Answers

 

 

 

 

 

 

 

 

 

 

C1 initiates conference

 

Conference consult call to D , D answers

 

 

 

 

 

GC1-TermConnCreatedEvent

GC1-TermConnRingingEvent

GC1-CallCtlTermConnRingingEv-C1

 

 

 

GC1-ConnConnectedEvent-C1

GC1-CallCtlConnEstablishedEv-C1

GC1-TermConnActiveEvent

GC1-CallCtlTermConnTalkingEv

 

 

 

 

 

 

 

GC1-CallCtlTermConnHeldEv-TermC1

GC2-CiscoConsultCallActiveEv

GC2-ConnCreatedEv-C1

GC2-CallCtlTermConnTalkingEv-TermC1

GC2-CallCtlConnDialingEv-C1

GC2-CallCtlConnEstablishedEv-C1

 

GC2-CiscoConnCreatedEv-D

GC2-ConnInProgressEv-D

GC2-CallCtlConnOfferedEv-D

GC2-ConnAlertingEv-D

 

.getCurrentCallingTerminal() = terminal of A.

.getCurrentCalledTerminal() = null

Reason = REASON_EXTERNALCALLCONTROL

 

 

.getModifiedCallingAddress() = A,

.getCallingAddress() = A,

.getModifiedCalledAddress() = B,

.getCurrentCalledAddress() = B

.getCalledAddress() = X,

.getLastRedirectedAddress() = X,

.getCurrentCallingTerminal() = terminal of A.

.getCurrentCalledTerminal() = terminal of C1

Reason = REASON_EXTERNALCALLCONTROL

 

.getModifiedCallingAddress() = C1,

.getCallingAddress() = C1,

.getModifiedCalledAddress() =

.getCurrentCalledAddress() =

.getCalledAddress() =

.getLastRedirectedAddress() =

.getCurrentCallingTerminal() = terminal of C1

.getCurrentCalledTerminal() = null

 

.getModifiedCallingAddress() = C1,

.getCallingAddress() = C1,

.getModifiedCalledAddress() = D

.getCurrentCalledAddress() = D

.getCalledAddress() = D

 

 

 

 

 

Call 2 merges

 

Conn for D created on GC1

 

 

 

Call 2 cleaned up

 

 

 

 

 

 

 

Chaperone C1 starts recording

 

Chaperone C1 tries to redirect the call

GC2-CallCtlConnAlertingEv-D

GC2-ConnConnectedEv-D

GC2-CallCtlConnEstablishedEv D

 

CiscoCallChangedEv final call = GC1, consult call = GC2

 

GC1-ConnCreatedEv D

GC1-ConnConnectedEv D

GC1-CallCtlConnEstablishedEvD

 

GC2-ConnDisconntedEv C1

GC2-ConnDisconntedEv D

GC2-CallCtlConnDisconnectedEv C1

GC2-CallCtlConnDisconnectedEv D

GC2-CallCtlTermConnDroppedEv C1

GC2-CallCtlTermConnDroppedEv D

GC2-CallInvalidEv

 

Normal recording events when recording is initiated on a conference call will be received.

 

InvalidStateException : Did not meet pre conditions.

.getLastRedirectedAddress() =

.getCurrentCallingTerminal() = terminal of C1

.getCurrentCalledTerminal() = terminal of D

 

Call is redirected to a hunt list of chaperones and the chaperone conferences in the called party from application.

Configuration:

A calls X, X’s DN matches the translation pattern where External Call Control is enabled.

CUCM redirect the call to the hunt pilot B. Call is intercepted by the chaperone and the chaperone C1 answers the call.

After talking to A briefly and discovered that A intended to talk to D, the chaperone C1 starts to establish a conference to D. C1 initiates a consult call to D. A new global call id GC2 is created.

CUCM rings D’s phone and D answers the call.

C1 invokes GC2.conference(GC1) from application.

At this step, request for establishing the conference would fail. Jtapi would throw InvalidStateException with the error code as "Call state not valid".

In order to establish a conference successfully, application must invoke the conference by passing the CI of the call in which chaperone is the controller as the primary CI. So in this case, if application invokes GC1.conference(GC2), it would be able to establish the conference successfully and if application invokes GC2.conference(GC1), Jtapi would throw an exception.

Also application can use CiscoConnection.isChaperone() API to determine controller is chaperone on which call.

Call Events:

Actions

Events

Call info

A initiates call to X

 

 

 

 

 

 

Connection of A created,

 

 

 

 

 

 

 

Hunt connection created (see Hunt List section)

 

 

 

 

 

 

 

Connection of C1 created

 

 

GC1-CallActiveEvent

 

 

 

 

 

 

GC1-ConnCreatedEvent-A

GC1-ConnConnectedEvent-A

GC1-CallCtlConnInitiatedEv-A

GC1-TermConnCreatedEvent

GC1-TermConnActiveEvent

GC1-CallCtlTermConnTalkingEv-A

GC1-CallCtlConnDialingEv-A

GC1-CallCtlConnEstablishedEv-A

 

GC1-CiscoHuntConnCreatedEv-B

GC1-ConnInProgressEv-B

GC1-CallCtlConnOfferedEv-B

GC1-ConnAlertingEv-B

GC1-CallCtlConnAlertingEv-B

 

 

 

 

GC1-ConnCreatedEvent-C1

GC1-ConnInprogressEvent-C1

GC1-CallCtlConnOfferedEv-C1

 

.getModifiedCallingAddress() = A,

.getCallingAddress() = A,

.getModifiedCalledAddress() = "",

.getCalledAddress() = "",

.getCurrentCallingTerminal() = Terminal of A.

.getCurrentCalledTerminal() = null

 

.getModifiedCallingAddress() = A,

.getCallingAddress() = A,

.getModifiedCalledAddress() = "",

.getCalledAddress() = "",

.getLastRedirectedParty() = "",

.getCurrentCallingTerminal() = Terminal of A.

.getCurrentCalledTerminal() = null

 

 

.getModifiedCallingAddress() = A,

.getCallingAddress() = A,

.getModifiedCalledAddress() = B,

.getCurrentCalledAddress() = B

.getCalledAddress() = X,

.getLastRedirectedAddress() = X,

.getCurrentCallingTerminal() = terminal of A.

.getCurrentCalledTerminal() = null

 

.getModifiedCallingAddress() = A,

.getCallingAddress() = A,

.getModifiedCalledAddress() = B,

.getCurrentCalledAddress() = B

.getCalledAddress() = X,

.getLastRedirectedAddress() = X,

C1 starts ringing

 

 

 

 

 

C1 Answers

 

 

 

 

 

 

C1 initiates conference

 

 

GC1-ConnAlertingEvent-C1

GC1-CallCtlConnAlertingEv-C1

GC1-TermConnCreatedEvent

GC1-TermConnRingingEvent

GC1-CallCtlTermConnRingingEv-C1

GC1-ConnConnectedEvent-C1

GC1-CallCtlConnEstablishedEv-C1

GC1-TermConnActiveEvent

GC1-CallCtlTermConnTalkingEv

 

 

 

 

GC1-CallCtlTermConnHeldEv-TermC1

GC2-CiscoConsultCallActiveEv

GC2-ConnCreatedEv-C1

GC2-CallCtlTermConnTalkingEv-TermC1

GC2-CallCtlConnDialingEv-C1

GC2-CallCtlConnEstablishedEv-C1

 

.getCurrentCallingTerminal() = terminal of A.

.getCurrentCalledTerminal() = null

Reason = REASON_EXTERNALCALLCONTROL

 

.getModifiedCallingAddress() = A,

.getCallingAddress() = A,

.getModifiedCalledAddress() = B,

.getCurrentCalledAddress() = B

.getCalledAddress() = X,

.getLastRedirectedAddress() = X,

.getCurrentCallingTerminal() = terminal of A.

.getCurrentCalledTerminal() = terminal of C1

Reason = REASON_EXTERNALCALLCONTROL

 

.getModifiedCallingAddress() = C1,

.getCallingAddress() = C1,

.getModifiedCalledAddress() =

.getCurrentCalledAddress() =

.getCalledAddress() =

.getLastRedirectedAddress() =

.getCurrentCallingTerminal() = terminal of C1

 

Conference consult call to D , D answers

 

 

 

 

 

 

 

 

 

C1 completes the conference by invoking GC2.conference(GC1) from application.

 

C1 tries to complete the conference by invoking GC1.conference(GC2_from application

 

GC2-CiscoConnCreatedEv-D

GC2-ConnInProgressEv-D

GC2-CallCtlConnOfferedEv-D

GC2-ConnAlertingEv-D

GC2-CallCtlConnAlertingEv-D

GC2-ConnConnectedEv-D

GC2-CallCtlConnEstablishedEv D

 

 

 

InvalidStateException : Call state not valid.

 

 

CiscoCallChangedEv final call = GC1, consult call = GC2

GC1-ConnCreatedEv D

GC1-ConnConnectedEv D

GC1-CallCtlConnEstablishedEv D

 

GC2-ConnDisconntedEv C1

GC2-ConnDisconntedEv D

GC2-CallCtlConnDisconnectedEv C1

GC2-CallCtlConnDisconnectedEv D

GC2-CallCtlTermConnDroppedEv C1

GC2-CallCtlTermConnDroppedEv D

GC2-CallInvalidEv

.getCurrentCalledTerminal() = null

 

.getModifiedCallingAddress() = C1,

.getCallingAddress() = C1,

.getModifiedCalledAddress() = D

.getCurrentCalledAddress() = D

.getCalledAddress() = D

.getLastRedirectedAddress() =

.getCurrentCallingTerminal() = terminal of C1

 

.getCurrentCalledTerminal() = terminal of

Extension Mobility Cross Cluster

Actions

Events

Call info

1. User1 has a device profile configured with DN A in cluster1. This profile is included in the control list of application. User1 goes to a visiting cluster and EM login to a device TERMA. Device registers to cluster1

 

Events to provider observer

 

 

 

 

 

CiscoAddrCreatedEv A

 

 

 

CiscoTermCreatedEv TERMA

CiscoTerminal.getLoginType() returns CiscoTerminal.NO_LOGIN

 

 

 

 

getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGIN

 

 

getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGIN

 

 

CiscoTerminal.getLoginType() returns CiscoTerminal.VISITOR_LOGIN

User1 logs off from the Device

 

CiscoAddrRemovedEv A

 

 

 

CiscoTermRemovedEv TERMA

 

getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGOUT

 

 

getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGOUT

 

CiscoTerminal.getLoginType() returns CiscoTerminal.NO_LOGIN

2. User1 has a device profile configured with DN A in cluster1. This device profile is included in the control list of application. User1 EM into a device TERMA on cluster1. Device re-registers with DN A. The device TERMA is not in application control listapplication control list

CiscoAddrCreatedEv A

 

 

 

CiscoTermCreatedEv TERMA

 

getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGIN

 

getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGIN

CiscoTerminal.getLoginType() returns CiscoTerminal.NATIVE_LOGIN

User1 log off from the device. Device re-registers to cluster1 with default DN.

CiscoAddrRemovedEv A

 

 

CiscoTermRemovedEv TERMA

 

getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGOUT

 

 

getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGOUT

 

3. EM into a controlled Device:

 

User1 has a device profile configured with DN A in cluster1. This device profile is included in the control list of application. User1 EM into a device TERMA on cluster1. TERMA with default DN X is in application control list. Device re-registers with DN A.

 

 

 

 

 

CiscoAddrRemovedEv X

 

CiscoAddrCreatedEv A

 

 

 

 

 

getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGIN

 

getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGIN

User1 logs out of the device.

Device Unregister, Device and line out of service

 

Device Register to CM with default DN X.

 

CiscoAddrRemovedEv A

CiscoAddrCreatedEv X

 

 

getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGOUT

 

getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGOUT

4. Application uses user1 userid. Device profile agent1 is added to application control list after application is started

 

User EMs into a device TERMA and gets the device profile.

 

Agent1 device profile is removed from application control list

 

CiscoAddrCreatedEv A

 

CiscoTermCreatedEv TERMA

 

 

 

 

 

 

CiscoAddrRemovedEv A

 

 

CiscoTermRemovedEv TERMA

getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGIN

 

getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGIN

 

 

 

 

getCiscoCause() returns CiscoProvEv. CAUSE_EM_LOGIN_ PROFILE_REMOVE

 

getCiscoCause() returns CiscoProvEv. CAUSE_EM_LOGOUT_ PROFILE_REMOVE

5. EMCC scenario resulting in CiscoAddrAddedToTerminalEv and CiscoAddrRemovedFromTerminalEv

Cluster1 has application with

 

Terminal TermA (address A) in control list. User1 is a device profile which is configured with line A is included in app control list. User goes to a visiting cluster and logs into a device (TermX, Addr X). TermX registers with cluster1 with address A

 

 

User logs out of device TermX

 

 

 

 

 

CiscoTermCreatedEv TERMX

 

 

CiscoAddrAddedToTerminalEv AddrA

 

 

CiscoAddrRemovedFromTerminalEv AddA

CiscoTermRemovedEv TERMx

 

 

 

 

 

getCiscoCause() returns CiscoProvEv.CAUSE_EM

 

getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGIN

 

getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGOUT

getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGOUT