Cisco Unified JTAPI Developers Guide for Cisco Unified Communications Manager Release 9.1(1)
Message Sequence Charts
Downloads: This chapterpdf (PDF - 4.7MB) The complete bookPDF (PDF - 13.12MB) | Feedback

Message Sequence Charts

Table Of Contents

Message Sequence Charts

Agent Greeting

API for Exposing Built-in-Bridge Status

Backward Compatibility Enhancements

Barge and Privacy

Barge

CBarge

Privacy

Call Control Discovery

CallFwdAll Keys Press Notification

CallSelect and UnSelect

Cius Persistency

Conference and Join

Join/Arbitrary Conference

Consult Conference

Join Across Lines with Enhancements

CTI Remote Device

Device and Line Restriction

Device State Server

Do Not Disturb

DND-R

Dynamic CTIPort Registration Per Call

E911 Teleworker

End to End Call Tracing

Energywise Deep Sleep Mode

External Call Control

Use Cases for BasicCall

Use Cases for Calls Going through Translation Pattern with CEPN Info in Cc Signals

WildCard Routepoint Interaction (Behavior Change)

WildCard Routepoint Interaction (Original Behavior)

External Call Control Use Cases

Chaperone Use Cases

Extension Mobility Cross Cluster

Forced Authorization and Customer Matter Codes

Hairpin Support

Half Duplex Media

Hunt List

Hunt list Connected Number

Intercom

iSac Codec

JTAPI Cisco Unified IP 7931G Phone Interaction

Locale Infrastructure Development Scenarios

Calling Party Normalization

Click to Conference

Call Pickup

selectRoute() with Calling Search Space and Feature Priority

Extension Mobility Login Username

Calling Party IP Address

CiscoJtapiProperties

IPv6 Support

Provider Open Scenario

Calling Party IP Address scenarios:

RTP Addresses

CTI Port/Route Point Registration Scenarios

Advance Test Cases:

Direct Transfer Across Lines Use Cases

Connected Conference or Join Across Lines Use Cases - New Phones Behavior

Enhanced MWI Use Cases

Join Across Lines Enhancements

Swap or Cancel and Transfer or Conference Behavior Change

Drop Any Party Use Cases

Park Monitoring Support

Use Case 1: Park Monitoring States

Use case 2: Shared line scenario - Cisco Unified IP Phone Does Park

Use case 3: Shared Line Scenario - Cisco Unified IP Phone 7900 Series with SIP Does Park

Use Case 4: Use Case for Snap Shot Scenario

Use Case 5: Park DN is Monitored

Use case 6: Query Number of Parked Calls

Use case 7: Filter Enabling or Disabling

Use case 8: Filter Enabling or Disabling

Use case 9: Filter Enabling or Disabling

Use Case 10: Filter Enabling or Disabling

Additional Use Cases for Park Monitoring

Use Cases Related to DPark

Logical Partitioning Feature Use Cases

Shared Lines

Call Park Reversion with Shared Lines in Different Geographic Locations

ComponentUpdater Enhancement Use cases

IPv6 Support

Support for Cisco Unified IP Phone 6900 Series

Terminal and Address Capability Settings Use Cases

Media Termination at Route Point

Modifying Calling Number

AutoAccept for CTIPort and RoutePoint

Native Queuing

Queuing of Call

De-Queuing of a Call

Maximum in-queue timer expires

Maximum in-queue timer expires, with destination as another HP who's member E is free

Maximum in-queue timer expires, with destination as another HP who's members are busy

Queue is full

When "Disconnect" is selected for queue full

No Agents are logged in

Caller redirects while in queue

Caller (observed) conferences while in queue

Partition Support

Using getPartition() API

Using getAddress (String number, String partition)

Park DN

Partition Change

JTAPI Partition Support

Play Zip Tone

QoS Support

JTAPI QoS

QSIG Path Replacement

Recording and Monitoring

Redirect Set OriginalCalledID

Secure Conferencing

Secure Connection Enhancements

Secure Icon Enhancements

Secured Monitoring and Recording

Shared Line Support

AddressInService/AddressOutofService Events

Incoming Call to Shared Address

Outgoing Call from Shared Address

Shared Address Calling Itself

Single Sign-On

Single Step Transfer

SIP REPLACE

SIP REFER

IN-Dialog REFER Scenario

OutOfDialog Refer

SIP 3XX Redirection

SIP Support

SIP Trunk Early Offer

SRTP Key Material

Super Provider Message Flow

SuperProvider and Change Notification Enhancements Use Cases

Support for Cisco Unified IP Phone 6901

TLS Security

Transfer and Direct Transfer

DirectTransfer/Arbitrary Transfer Scenario

Direct Transfer/Arbitrary Transfer—Page 2

Consult Transfer

Unicode Support

Unrestricted Unified CM

Verification Involving PSTN Reachability

Whisper Coaching


Message Sequence Charts


This appendix contains the message sequence charts, which illustrate the message flows for the following scenarios:

Agent Greeting

API for Exposing Built-in-Bridge Status

Backward Compatibility Enhancements

Barge and Privacy

Call Control Discovery

Call Pickup

Cius Persistency

Conference and Join

CTI Remote Device

Device and Line Restriction 

Device State Server

Do Not Disturb

Dynamic CTIPort Registration Per Call

End to End Call Tracing

Energywise Deep Sleep Mode

External Call Control

Extension Mobility Cross Cluster

Hairpin Support

Half Duplex Media

Hunt List

Hunt list Connected Number

iSac Codec

JTAPI Cisco Unified IP 7931G Phone Interaction

Full-Event Use Case 1: (Observing All Devices): Auto-Pickup Disabled

Modifying Calling Number

Native Queuing

Partition Support

Play Zip Tone

QoS Support

QSIG Path Replacement

Recording and Monitoring

Redirect Set OriginalCalledID

Secure Conferencing

Secure Connection Enhancements

Secure Icon Enhancements

Secured Monitoring and Recording

Shared Line Support

Single Sign-On

Single Step Transfer

SIP REPLACE

SIP Support

TLS Security

SRTP Key Material

Super Provider Message Flow

Support for Cisco Unified IP Phone 6901

TLS Security

TLS Security

Transfer and Direct Transfer

Unicode Support

Unrestricted Unified CM

Verification Involving PSTN Reachability

Whisper Coaching

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

Events delivered to CallObserver of B (transfer controller)
(continued)

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

GC1: TermConnDroppedEv TERMB
REASON=REASON_TRANSFER
Cause: CAUSE_UNKNOWN

GC1: CallCtlTermConnDroppedEv TERMB
REAASON=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

Events delivered to call observer on A. (continued)

GC1: ConnAlertingEv B
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 call 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

Events delivered to call observer on B. (continued)

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 - A
TermConnCreatedEv - 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 - A
TermConnCreatedEv - 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

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


Use cases for Cius Persistency

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 B1and B2 by invoking GC1.conference(GC2) to chain two conference call.

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 returnconnections 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)

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-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


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.

CiscoProvTerminalRemoteDestinationChangedEv

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

 

CiscoProvTerminalRemoteDestinationChangedEv

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.

CiscoProvTerminalRemoteDestinationChangedEv

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.

CiscoProvTerminalRemoteDestinationChangedEv

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

 

CiscoProvTerminalRemoteDestinationChangedEv

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.PlatformExceptionImpl: 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.

CiscoProvTerminalRemoteDestinationChangedEv

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.removeAllRemoteDestinations() on TermA.

CiscoProvTerminalRemoteDestinationChangedEv

CiscoProvTerminalRemoteDestinationChangedEv.getRemoteDestinations() = CiscoRemoteDestinationInfo[1].

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

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

CiscoRemoteDestinationInfo[0].getIsActiveRD() = false

 

CiscoProvTerminalRemoteDestinationChangedEv

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. updateRemoteDestinationName ("4081001111", "MyHome") on TermA.

CiscoProvTerminalRemoteDestinationChangedEv

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. updateRemoteDestinationName ("4081001111", "6268210080") on TermA.

CiscoProvTerminalRemoteDestinationChangedEv

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. updateRemoteDestinationName ("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. updateRemoteDestinationName (null, "MyBossOffice") on TermA.

Caught exception: com.cisco.jtapi.InvalidArgumentExceptionImpl: Invalid Remote Destination Number/Name (updateRemoteDestinationName 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.

CiscoProvTerminalRemoteDestinationChangedEv

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 Info

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.removeAllRemoteDestinations() on TermA.

CiscoProvTerminalRemoteDestinationChangedEv

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

 

CiscoProvTerminalRemoteDestinationChangedEv

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

 

CiscoProvTerminalRemoteDestinationChangedEv

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

 

CiscoProvTerminalRemoteDestinationChangedEv

CiscoProvTerminalRemoteDestinationChangedEv.getRemoteDestinations() = CiscoRemoteDestinationInfo[1].

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

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

CiscoRemoteDestinationInfo[0].getIsActiveRD() = false

 

CiscoProvTerminalRemoteDestinationChangedEv

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.

CiscoProvTerminalRemoteDestinationChangedEv

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

 

CiscoProvTerminalRemoteDestinationChangedEv

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

 

CiscoProvTerminalRemoteDestinationChangedEv

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


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,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

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

 

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


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.setActiveRemoteDestination("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.setActiveRemoteDestination("916267829523", true) from P2.

P1: CiscoProvTerminalRemoteDestinationChangedEv

P2: CiscoProvTerminalRemoteDestinationChangedEv

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 No CiscoProvTerminalRemoteDestinationChangedEv 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.setActiveRemoteDestination("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

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: No CiscoProvTerminalRemoteDestinationChangedEv will be sent to application because it is the same active RD that application previously set.


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.setConferenceController(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

allingAddress = 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


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


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

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


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





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

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

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

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.

T1 and A2 are added to the restricted list.

T1 and L2 are removed from restricted list



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

CiscoTermOutOfServiceEv for T1 CiscoAddrOutOfServiceEv for L1
CiscoAddrOutOfServiceEv for A2

CiscoTermActivatedEv for T1 and CiscoAddrActivatedEv for A1
CiscoAddrActivatedEv for A2 sent to providerObserver.
CiscoTermInServiceEv for T1and 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.



T1 is removed from 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

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

A1 on T2 is added to the
restricted list

A1 on T3 is added to the
restricted list

A1 on T1 is removed from the restricted list

A1 on T2 is removed from the restricted list

A1 on T3 is removed from the restricted list






CiscoAddrRestrictedOnTerminalEv for A1/T1
CiscoAddrOutOfServiceEv for A1/T1

CiscoAddrRestrictedOnTerminalEv for A1/T2
CiscoAddrOutOfServiceEv for A1/T2

CiscoAddrRestrictedEv for A1
CiscoAddrOutOfServiceEv for A1/T3

CiscoAddrActivatedOnTerminalEv for A1/T1
CiscoAddrInServiceEv for A1/T1

CiscoAddrActivatedOnTerminalEv for A1/T2
CiscoAddrInServiceEv for A1/T2

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.

A1 is added into the restricted list.

CiscoAddrRestrictedEv for A1
CiscoAddrOutOfServiceEv for A1

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_STARTINGCiscoTermDNDStatusChangedEv 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_STARTINGCiscoTermDNDStatusChangedEv 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


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 Nine

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

Use Case
Events
Call Info

No changes in use case with selectRoute Method

No changes in the events

No changes in the callinfo


SelectRoute Method

Use Case
Events
Call Info

No changes in use case with redirect Method

No changes in the events

No changes in the callinfo


Redirect Method

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: 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

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

GC1.conference(GC2)

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 C).getConnection() ).getUniqueID(null) returns ID16

5. Transfer Scenario; All observed

GC1: A calls B; B answers

GC2: B calls C; C 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: 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

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

GC1.transfer(GC2)

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 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

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

 

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

... 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

.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

C gets dropped

B1 Answers

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,

.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

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

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,

C Answers

GC1-ConnConnectedEvent-C

GC1-CallCtlConnEstablishedEv-C

GC1-TermConnActiveEvent

GC1-CallCtlTermConnTalkingEv

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 gropped(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,

Conference Starts

B1 gets dropped (GC2)

GC1-CiscoConferenceStartEv

GC2-TermConnDroppedEv

GC2-CallCtlTermConnDroppedEv

GC2-ConnDisconnectedEvent-B1

GC2-CallCtlConnDisconnectedEv-B1

GC1-CiscoTermConnSelectChangedEv

GC1-CallCtlTermConnTalkingEv

GC2-CiscoCallChangedEv

.getLastRedirectedAddress() =

.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)

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

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

.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

MBAnswers

GC1-ConnConnectedEvent-MB

GC1-CallCtlConnEstablishedEv-MB

GC1-TermConnActiveEvent

GC1-CallCtlTermConnTalkingEv

.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,

Actions
Events
Call Info
   

.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

6. Device profile Agent1 with DN A is logged into a device TERMA. User1 opens provider and then adds the profile Agent1 to the control list through the admin pages.

User1 then removes the profile from the control list

CiscoAddrCreatedEv A

CiscoTermCreatedEv TERMA

CiscoAddrRemovedEv A

CiscoTermRemovedEv TERMA

getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGIN_PROFILE_ADD

getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGIN_PROFILE_ADD

getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGOUT_PROFILE_REMOVE

getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGOUT_PROFILE_REMOVE

7. Device profile Agent1 is not in the applications control list but it is there as a controlled profiles for extension mobility for user1. User1 opens provider and logs into terminal TERMA with profile agent1 and the same user id with which it had opened the provider.

User1 logs out of the device

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_LOGOUT

getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGOUT

8. Device profile Agent1 (DN A) is in the applications control list with user as user1.

User1 opens the provider and does an EM login into TERMA with profile as agent1. TERMA is not in control list.

User1 logs out of TERMA.

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_LOGOUT

getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGOUT

9. Device profile Agent1 (DN A) is in the applications control list with user as user1.

User1 opens the provider and does an EM login into TERMA with profile as agent1. TERMA is in control list with default DN as X.

User1 logs out of TERMA.

CiscoAddrRemovedEv X

CiscoAddrCreatedEv A

CiscoAddrRemovedEv A

CiscoAddrCreatedEv X

getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGIN

getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGIN

getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGOUT

getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGOUT


Forced Authorization and Customer Matter Codes

Scenario One

The application controls A and B; B requires a forced authorization code (FAC) to extend the call.

Action
Event

A calls B by using call.Connect(), or A places a consult call to B by using Call.Consult().

NEW META EVENT_________META_CALL_STARTING
CallActiveEv Cause: CAUSE_NEW_CALL
ConnCreatedEv A Cause: CAUSE_NORMAL
ConnConnectedEv A Cause: CAUSE_NORMAL
CallCtlConnInitiatedEv Cause: CAUSE_NORMAL
CallControlCause: CAUSE_NORMAL
TermConnCreatedEv SEPA Cause: Other: 0
TermConnActiveEv SEPA Cause: CAUSE_NORMAL
CallCtlTermConnTalkingEv SEPA Cause: CAUSE_NORMAL CallControlCause: CAUSE_NORMAL

NEW META EVENT_________META_CALL_PROGRESS
CallCtlConnDialingEv A

NEW META EVENT_________META_CALL_PROGRESS
CiscoToneChangedEv
ToneType = CiscoTone.ZIPZIP
cause = CiscoCallEv.CAUSE_FAC_CMC
getWhichCodRequired =
CiscoToneChangedEv. FAC_REQUIRED

Application enters additional digits by using CiscoConnection.addToAddress.

NEW META EVENT_________META_CALL_ADDITIONAL_PARTY
ConnCreatedEv B
ConnInProgressEv B
CallCtlConnOfferedEv B

NEW META EVENT_________META_CALL_PROGRESS
ConnAlertingEv B
CallCtlConnAlertingEv B
TermConnCreatedEv B
TermConnRingingEv B
CallCtlTermConnRingingEv B
ConnConnectedEv B
CallCtlConnEstablishedEv B

B answers the call.

TermConnActiveEv B


Scenario Two

The application controls A and B; B requires both an FAC and a CMC (client matter code) to extend the call.

Action
Event

A calls B by using call.Connect(), or A places a consult call to B by using Call.Consult().

NEW META EVENT_________META_CALL_STARTING
CallActiveEv Cause: CAUSE_NEW_CALL
ConnCreatedEv A Cause: CAUSE_NORMAL
ConnConnectedEv A Cause: CAUSE_NORMAL
CallCtlConnInitiatedEv Cause: CAUSE_NORMAL CallControlCause: CAUSE_NORMAL
TermConnCreatedEv SEPA Cause: Other: 0
TermConnActiveEv SEPA Cause: CAUSE_NORMAL
CallCtlTermConnTalkingEv SEPA Cause:
CAUSE_NORMAL CallControlCause: CAUSE_NORMAL

NEW META EVENT_________META_CALL_PROGRESS
CallCtlConnDialingEv A

NEW META EVENT_________META_CALL_PROGRESS
CiscoToneChangedEv
ToneType = CiscoTone.ZIPZIP
cause = CiscoCallEv.CAUSE_FAC_CMC
getWhichCodRequired =
CiscoToneChangedEv. FAC_CMC_REQUIRED

Application enters FAC code digits with # termination by using CiscoConnection.addToAddress within the T302 timer.

NEW META EVENT_________META_CALL_PROGRESS
CiscoToneChangedEv
ToneType = CiscoTone.ZIPZIP
cause = CiscoCallEv.CAUSE_FAC_CMC
getWhichCodRequired =
CiscoToneChangedEv. CMC_REQUIRED

Application enters CMC code digits with # terminated by using CiscoConnection.addToAddress within T302 timer.

NEW META EVENT_________META_CALL_ADDITIONAL_PARTY
ConnCreatedEv B
ConnInProgressEv B
CallCtlConnOfferedEv B

NEW META EVENT_________META_CALL_PROGRESS
ConnAlertingEv B
CallCtlConnAlertingEv B
TermConnCreatedEv B
TermConnRingingEv B
CallCtlTermConnRingingEv B

B answers the call.

ConnConnectedEv B
CallCtlConnEstablishedEv B
TermConnActiveEv B
CallCtlTermConnTalkingEv B


Scenario Three

The application controls A and B;

B requires a CMC, and the application enters an invalid code.

Action
Event

A calls B by using call.Connect(), or A places a consult call to B by using Call.Consult().

NEW META EVENT_________META_CALL_STARTING
CallActiveEv Cause: CAUSE_NEW_CALL
ConnCreatedEv A Cause: CAUSE_NORMAL
ConnConnectedEv A Cause: CAUSE_NORMAL
CallCtlConnInitiatedEv Cause: CAUSE_NORMAL CallControlCause: CAUSE_NORMAL
TermConnCreatedEv SEPA Cause: Other: 0
TermConnActiveEv SEPA Cause: CAUSE_NORMAL
CallCtlTermConnTalkingEv SEPA Cause:
CAUSE_NORMAL
CallControlCause: CAUSE_NORMAL

NEW META EVENT_________META_CALL_PROGRESS
CallCtlConnDialingEv A

NEW META EVENT_________META_CALL_PROGRESS
CiscoToneChangedEv
ToneType = CiscoTone.ZIPZIP
cause = CiscoCallEv.CAUSE_FAC_CMC
getWhichCodRequired =
CiscoToneChangedEv. CMC_REQUIRED

The application enters the incorrect CMC digits (# terminated) by using CiscoConnection.addToAddress within the T302 timer limit.

The application receives reorder tone.

NEW META EVENT_________META_CALL_PROGRESS
ConnFailedEv A
CallCtlConnFailedEv A getCiscoCause () =
CiscoCallEv.FAC_CMC

NEW META EVENT_________META_CALL_ENDING
TermConnDroppedEv
CallCtlTermConnDropped
ConnDisconnectedEv
CallCtlConnDisconnectedEv
CallInvalidEv
CallObservationEndedEv


Scenario Four

The application controls both A and B; A calls B; B redirects the call to C, which needs both an FAC and a CMC.

Action
Event

A calls B by using call.Connect(), or A places a consult call to B by using Call.Consult().

NEW META EVENT_________META_CALL_STARTING
CallActiveEv Cause: CAUSE_NEW_CALL
ConnCreatedEv A Cause: CAUSE_NORMAL
ConnConnectedEv A Cause: CAUSE_NORMAL
CallCtlConnInitiatedEv Cause: CAUSE_NORMAL CallControlCause: CAUSE_NORMAL
TermConnCreatedEv SEPA Cause: Other: 0
TermConnActiveEv SEPA Cause: CAUSE_NORMAL
CallCtlTermConnTalkingEv SEPA Cause: CAUSE_NORMAL CallControlCause: CAUSE_NORMAL

NEW META EVENT_________META_CALL_PROGRESS
CallCtlConnDialingEv A

NEW METAEVENT_________META_CALL_ADDITIONAL_PARTY
ConnCreatedEv B
ConnInProgressEv B
CallCtlConnOfferedEv B

NEW META EVENT_________META_CALL_PROGRESS
ConnAlertingEv B
CallCtlConnAlertingEv B
TermConnCreatedEv SEPB
TermConnRingingEv SEPB
CallCtlTermConnRingingEv SEPB
ConnConnectedEv B
CallCtlConnEstablishedEv B
TermConnActiveEv SEPB
CallCtlTermConnTalkingEv SEPB

B issues a redirect request to C and passes an FAC and a CMC code.

NEW META EVENT_________META_CALL_REMOVING_PARTY
TermConnDroppedEv SEPB
CallCtlTermConnDroppedEv SEPB Cause: CAUSE_NORMAL CallControlCause: CAUSE_REDIRECTED CiscoCause: CAUSE_NORMALUNSPECIFIED
ConnDisconnectedEv B Cause: CAUSE_NORMAL CiscoCause: CAUSE_NORMALUNSPECIFIED
CallCtlConnDisconnectedEv B Cause: CAUSE_NORMAL CallControlCause: CAUSE_REDIRECTED CiscoCause: CAUSE_NORMALUNSPECIFIED

NEW META EVENT_________META_CALL_PROGRESS

ConnCreatedEv C Cause: CAUSE_NORMAL CiscoCause: CAUSE_NORMALUNSPECIFIED

NEW META EVENT_________META_CALL_PROGRESS
ConnInProgressEv C Cause: CAUSE_NORMAL CiscoCause: CAUSE_NORMALUNSPECIFIED
CallCtlConnOfferedEv C Cause: CAUSE_NORMAL CallControlCause: CAUSE_REDIRECTED CiscoCause: CAUSE_NORMALUNSPECIFIED

NEW META EVENT_________META_CALL_PROGRESS
ConnAlertingEv A Cause: CAUSE_NORMAL CiscoCause: CAUSE_NORMALUNSPECIFIED
CallCtlConnAlertingEv C Cause: CAUSE_NORMAL CallControlCause: CAUSE_NORMAL CiscoCause: CAUSE_NORMALUNSPECIFIED

NEW META EVENT_________META_CALL_PROGRESS
ConnConnectedEv C Cause: CAUSE_NORMAL CiscoCause: CAUSE_NOERROR
CallCtlConnEstablishedEv C Cause: CAUSE_NORMAL CallControlCause: CAUSE_NORMAL CiscoCause: CAUSE_NOERROR


Scenario Five

Application controls the device Route Point (RP) and registers the RP.

A and B are PNO and within the Cisco Unified Communications Manager cluster.

Action
Event
Fields

Call arrives at RP

RouteEvent

State = ROUTE
getCurrentRouteAddress () = RP
getCallingAddress () = A
getCallingTerminal () = SEPA (Terminal associated with A)

Application invokes

selectRoute(routeselected[], callingsearchspace, modifiyingcallingnumber[], preferredOriginalCdNumber[], preferredOriginalCdOption[],
facCode[],
cmcCode[]) where
routeSelected[] = B
callingSearchSpace = CiscoRouteSession.DEFAULT_SEARCH_SPACE
modifyingCgNumber = null,
preferredOriginalCdNumber = null,
preferredOriginalCdOption = CiscoRouteSession.DONOT_RESET_ORIGINALCALLED,
facCode[] = "facCode for B"
cmcCode[] = "cmcCode for B"

RouteUsedEvent

State = ROUTE_USED
getCallingAddress () = A
getCallingTerminal () =
SEPA (Terminal associated with A)
getRouteUsed () = B

Application invokes

endRoute (ERROR_NONE)

RouteEndEvent

State = ROUTE_END
getRouteAddress () = RP


Hairpin Support

S.No.
Pre-Condition
Use Case
Expected Behavior
Result

1

IP Phones A and C are in same cluster, IP phone B is in another cluster. JTAPI observes A and C. Gateway does not pass new party information to each other. There will be no transfer start and end events as transfer controller is not a controlled device.

A calls B via gateway. B transfers call to C via gateway. B completes the transfer and goes out of scenario. Now IP Phones A and C are connected

At A: It is connected to B.
A's type is CiscoAddress.Internal
B's type is CiscoAddress.External
At C: It is connected to B.
C's type is CiscoAddress.Internal
B's type is CiscoAddress.External

A and C are connected.

2

IP Phones A and C are in same cluster, IP phone B is in another cluster. JTAPI observes A and C. Gateway is able to pass new party information to each other.

A calls B via gateway. B transfers call to C via gateway. B completes the transfer and goes out of scenario. Now IP Phones A and C are connected.

At A: It is connected to C.
A's type is CiscoAddress.Internal
C's type is CiscoAddress.External
At C: It is connected to A.
C's type is CiscoAddress.Internal
A's type is CiscoAddress.External

A and C are connected.

3

IP Phones A and B are in same cluster, IP phone C is in another cluster. JTAPI observes A and B.

A calls B. B does a conference call to C via gateway. B completes the conference and all A,B and C are in conference.

At A and B, ConferenceCallStateChanged event has participantInfo with following types:
A: CiscoAddress.Internal
B: CiscoAddress.Internal
C: CiscoAddress.External

A, B and C are in conference call.

4

IP Phones A and B are in same cluster, IP phone C is in another cluster. JTAPI observes A,B and C.

A calls B. B does a conference call to C via gateway. B completes the conference and all A,B and C are in conference.

At A and B, ConferenceCallStateChanged event has participantInfo with following types:
A: CiscoAddress.Internal
B: CiscoAddress.Internal
C: CiscoAddress.External

A, B and C are in conference call.

5

IP Phones A, B, C are in same cluster, IP phone D is in another cluster. JTAPI observes A, B and C. Gateway is able to pass new party information to each other.

A calls B. B does a conference call to D via gateway. D transfers the call to C. B completes the conference and all A,B and C are in conference.

At A and B, ConferenceCallStateChanged event has participantInfo with following types:
A: CiscoAddress.Internal
B: CiscoAddress.Internal
C: CiscoAddress.External

A, B and C are in conference call.

6

IP Phones A, B, C are in same cluster, IP phone D is in another cluster. JTAPI observes A, B and C. Gateway does not pass new party information to each other.

A calls B. B does a conference call to D via gateway. D transfers the call to C. B completes the conference and all A,B and C are in conference.

At A and B, ConferenceCallStateChanged event has participantInfo with following types:
A: CiscoAddress.Internal
B: CiscoAddress.Internal
D: CiscoAddress.External

A, B and C are in conference call.

7

IP Phones A and C are in same cluster, IP phone B is in another cluster. JTAPI observes A and C.

A calls B via gateway. B redirects call to C. Now IP Phones A and C are connected.

At A: It is connected to C.
A's type is CiscoAddress.Internal
C's type is CiscoAddress.External
At C: It is connected to A.
C's type is CiscoAddress.Internal
A's type is CiscoAddress.External

A and C are connected.


Half Duplex Media

RTP Event at A and B.

Action
RTP Events
Check Interface

A calls B ,
B answers the call.

A - CiscoRTPInputStartedEv CiscoRTPOutputStartedEv

B - CiscoRTPInputStartedEv CiscoRTPOutputStartedEv

Ev.isHalfDuplex() returns false Ev.isHalfDuplex() returns false

Ev.isHalfDuplex() returns false Ev.isHalfDuplex() returns false

B puts Call on hold

A - CiscoRTPInputStoppedEv CiscoRTPOutputStoppedEv

B - CiscoRTPInputStoppredEv CiscoRTPOutputStoppedEv

A-CiscoRTPInputStartedEv

Ev.isHalfDuplex() returns false Ev.isHalfDuplex() returns false

Ev.isHalfDuplex() returns false Ev.isHalfDuplex() returns false

Ev.isHalfDuplex() returns True

B Retrieves the Call

A- CiscoRTPInputStoppredEv

A - CiscoRTPInputStartedEv CiscoRTPOutputStartedEv

B - CiscoRTPInputStartedEv CiscoRTPOutputStartedEv

Ev.isHalfDuplex() returns True

Ev.isHalfDuplex() returns false Ev.isHalfDuplex() returns false

Ev.isHalfDuplex() returns false Ev.isHalfDuplex() returns false


Hunt List

Configuration:

HuntList feature is enabled for use cases from Scenario 1 to Scenario 20

HuntList pilot1 : 2000

HuntList1 LineGroup Member : 3001, 3002, 3003

HuntList pilot2: 4000

HuntList2 LineGroup Member : 5001, 5002, 5003

Cisco Hunt Address mentioned in the call models below indicates that CiscoAddress.getType() returns CiscoAddress.HUNT_PILOT.

Scenario 1:

Scenario
Result

A (1000) calls Hunt Pilot B (2000), Application is observing only A. GC1 is the GCID of the call.

GC1: CallActiveEv

GC1: ConnCreatedEv A

GC1:ConnConnectedEv A

GC1:CallCtlConnInitiatedEv A

GC1:TermConnCreatedEv TermA

GC1:TermConnActiveEv TermA

GC1:CallCtlTermConnTalkingEv TermA

CallingParty = A, current calling = A

Called Party = null, current called = null

Lrp = null

GC1:CallCtlConnDialingEv A

GC1:CallCtlConnEstablishedEv A

GC1: CiscoHuntConnCreatedEv B

GC1: ConnInProgressEv B

GC1: CallCtlConnOfferedEv B

GC1: ConnAlertingEv B

GC1: CallCtlConnAlertingEv B

CallingParty = A, current calling = A

Called Party = B, current called = B

Lrp = null


JTAPI CallInfo:

CallingParty = 1000

CurrentCallingParty=1000

CalledParty=2000 type = CiscoAddress.HUNT_PILOT

CurrentCalledParty=2000 type = CiscoAddress.HUNT_PILOT

LastRedirectingParty=Null

Current called display name = 2000Name.

Scenario 2

Scenario
Result

A (1000) calls Hunt Pilot B (2000), call is offered at C (3001); application is observing A. GC1 is the GCID of the call.

GC1: CallActiveEv

GC1: ConnCreatedEv A

GC1:ConnConnectedEv A

GC1:CallCtlConnInitiatedEv A

GC1:TermConnCreatedEv TermA

GC1:TermConnActiveEv TermA

GC1:CallCtlTermConnTalkingEv TermA

CallingParty = A, current calling = A

Called Party = null, current called = null

Lrp = null

GC1:CallCtlConnDialingEv A

GC1:CallCtlConnEstablishedEv A

GC1:CallCtlConnDialingEv A

GC1:CallCtlConnEstablishedEv A

GC1: CiscoHuntConnCreatedEv B

GC1: ConnInProgressEv B

GC1: CallCtlConnOfferedEv B

GC1: ConnAlertingEv B

GC1: CallCtlConnAlertingEv B

C(3001) answers the call

CallingParty = A, current calling = A

Called Party = B, current called = B

Lrp = null

GC1: ConnCreatedEv C

GC1: ConnConnectedEv C

GC1: CallCtlConnEstablishedEv C

GC1: ConnConnectedEv B

GC1: CallCtlConnEstablishedEv B


JTAPI CallInfo:

CallingParty = 1000

CurrentCallingParty=1000

CalledParty=2000

CurrentCalledParty=2000

LastRedirectingParty=Null

Current called party display name = 3001Name. Called party display name changes to the display name of the hunt pilot member that answered the call.

Scenario 3

Scenario
Result

A (1000) calls Hunt Pilot B(2000), call is offered at C (3001). Application is observing C. GC1 is the GCID of the call.

GC1: CallActiveEv

GC1: ConnCreatedEv C

GC1: ConnInProgressEv C

GC1: CallCtlConnOfferedEv C

GC1: ConnCreatedEv A

GC1: CiscoHuntConnCreatedEv B

GC1: ConnConnectedEv A

GC1: CallCtlConnEstablishedEv A

GC1: ConnConnectedEv B

GC1: CallCtlConnEstablishedEv B

CallingParty = A, current calling = A

Called Party = B, current called = B

Lrp = null

GC1: CallCtlConnAlertingEv C

GC1:TermConnCreatedEv TermC

GC1: TermConnRingingEv TermC

GC1: CallCtlTermConnRingingEvTermC:


JTAPI CallInfo:

CallingParty = 1000

CurrentCallingParty=1000

CalledParty=2000

CurrentCalledParty=2000

LastRedirectingParty=Null

Scenario 4

JTAPI CallInfo:

CallingParty = 1000

CurrentCallingParty=1000

CalledParty=2000

CurrentCalledParty=2000

LastRedirectingParty=Null

Scenario 5

Scenario
Result

A (1000) calls Hunt Pilot B (2000), call is offered at C (3001) Application is observing A and C. GC1 is the GCID of the call.

GC1: CallActiveEv

GC1: ConnCreatedEv A

...

GC1: CallCtlTermConnTalkingEv A

GC1: ConnCreatedEv C

GC1: ConnInProgressEv C

GC1: CallCtlConnOfferedEv C

GC1: CiscoHuntConnCreatedEv B

GC1: ConnInProgressEv B

GC1: CallCtlConnOfferedEv B

GC1: ConnAlertingEv B

GC1: CallCtlConnAlertingEv B

GC1: ConnAlertingEv C

GC1: CallCtlConnAlertingEv C

GC1:TermConnCreatedEv TermC

GC1: TermConnRingingEv TermC

GC1: CallCtlTermConnRingingEvTermC

CallingParty = A, current calling = A

Called Party = B, current called = B

Lrp = null

\


JTAPI CallInfo:

CallingParty = 1000

CurrentCallingParty=1000

CalledParty=2000

CurrentCalledParty=2000

LastRedirectingParty=Null

Scenario 6

Scenario
Result

A (1000) calls Hunt Pilot (B or 2000), call is offered at C (3001) Application is observing A and C. GC1 is the GCID of the call.

GC1: CallActiveEv

GC1: ConnCreatedEv A

...

GC1: CallCtlTermConnTalkingEv A

GC1: ConnCreatedEv C

GC1: ConnInProgressEv C

GC1: CallCtlConnOfferedEv C

GC1: CiscoHuntConnCreatedEv B

GC1: ConnInProgressEv B

GC1: CallCtlConnOfferedEv B

GC1: ConnAlertingEv B

GC1: CallCtlConnAlertingEv B

GC1: ConnAlertingEv C

GC1: CallCtlConnAlertingEv C

GC1:TermConnCreatedEv TermC

GC1: TermConnRingingEv TermC

GC1: CallCtlTermConnRingingEvTermC

CallingParty = A, current calling = A

Called Party = B, current called = B

Lrp = null

GC1:CallCtlTermConnTalkingEv TermC


JTAPI CallInfo:

CallingParty = 1000

CurrentCallingParty=1000

CalledParty=2000

CurrentCalledParty=2000

LastRedirectingParty=Null

Scenario 7

Scenario
Result

A (1000) calls Hunt Pilot B (2000), call is offered at C (3001). Application is observing A and C. GC1 is the GCID of the call.

A redirects the call to another Hunt Pilot D(4000)

GC1: CallActiveEv

GC1: ConnCreatedEv A

...

GC1: CallCtlTermConnTalkingEv A

GC1: ConnCreatedEv C

GC1: ConnInProgressEv C

GC1: CallCtlConnOfferedEv C

GC1: CiscoHuntConnCreatedEv B

GC1: CallCtlConnEstablishedEv B

GC1: ConnAlertingEv C

GC1: CallCtlConnAlertingEv C

GC1:TermConnCreatedEv TermC

GC1: TermConnRingingEv TermC

GC1: CallCtlTermConnRingingEvTermC

CallingParty = A, current calling = A

Called Party = B, current called = B

Lrp = null

GC1:CallCtlTermConnTalkingEv TermC

GC1: CiscoHuntConnCreatedEv D

GC1: ConnAlertingEv D

GC1: CallCtlConnAlertingEv D

GC1: TermConnDroppedEv TA

GC1: CallCtlTermConnDroppedEv TA getCallControlCause () = CAUSE_REDIRECTED

GC1: ConnDisconnectedEv A

GC1: CallCtlConnDisconnectedEv A

getCallControlCause () = CAUSE_REDIRECTED


JTAPI CallInfo:

CallingParty = 2000

CurrentCallingParty=2000

CalledParty= 2000

CurrentCalledParty=4000

LastRedirectingParty=1000

Scenario 8

Scenario
Result

A (1000) calls Hunt Pilot B (2000), call is offered at C (3001) Application is observing A and C. GC1 is the GCID of the call. A redirects the call to D(4000). E(5001) answers the call

.....

.....

GC1: CiscoHuntConnCreatedEv D

GC1: TermConnDroppedEv TermA

GC1: CallCtlTermConnDroppedEv TermA

getCallControlCause () = CAUSE_REDIRECTED

GC1: ConnDisconnectedEv A

GC1: CallCtlConnDisconnectedEv A

getCallControlCause () = CAUSE_REDIRECTED

GC1: ConnCreatedEv E

GC1: ConnConnectedEv E

GC1: CallCtlConnEstablishedEv E


JTAPI CallInfo:

CallingParty = 1000

CurrentCallingParty=2000

CalledParty= 2000

CurrentCalledParty=4000

LastRedirectingParty=1000

Scenario 9

Scenario
Result

A (1000) calls Hunt Pilot B(2000), call is offered at C (3001). Application is observing A, E and C. GC1 is the GCID of the call. A redirects the call to D(4000). E(5001) answers the call

.....

.....

GC1: ConnCreatedEv E

GC1: ConnInProgressEv E

GC1: CallCtlConnOfferedEv E

getCallControlCause () = CAUSE_REDIRECTED

GC1: CiscoHuntConnCreatedEv D

GC1: TermConnDroppedEv TermA

GC1: CallCtlTermConnDroppedEv TermA

GC1: ConnDisconnectedEv A

GC1: CallCtlConnDisconnectedEv A

GC1: CallCtlConnEstablishedEv E


JTAPI CallInfo:

CallingParty = 1000

CurrentCallingParty=2000

CalledParty= 2000

CurrentCalledParty=4000

LastRedirectingParty=1000

Scenario 10

JTAPI CallInfo:

CallingParty = 1000

CurrentCallingParty=2000

CalledParty= 2000

CurrentCalledParty=4000

LastRedirectingParty=1000

Scenario 11

Scenario
Result

A (1000) calls Hunt Pilot B(2000), call is offered at C (3001) and D (3002). Application is observing A,C and D. GC1 is the GCID of the call.

GC1: CallActiveEv

GC1: ConnCreatedEv A

...

GC1: CallCtlTermConnTalkingEv A

GC1: ConnCreatedEv C

GC1: ConnInProgressEv C

GC1: CallCtlConnOfferedEv C

GC1: CiscoHuntConnCreatedEv B

GC1: ConnInProgressEv B

GC1: CallCtlConnOfferedEv B

GC1: ConnAlertingEv B

GC1: CallCtlConnAlertingEv B

GC1: ConnCreatedEv C

GC1: ConnInProgressEv C

GC1: CallCtlConnOfferedEv C

GC1: CallCtlConnEstablishedEv B

GC1: ConnCreatedEv D

GC1: ConnInProgressEv D

GC1: CallCtlConnOfferedEv D

GC1: CallCtlConnAlertingEv C

GC1: CallCtlTermConnCreatedEv TermC

GC1: CallCtlTermConnRingingEv TermC

GC1: CallCtlConnAlertingEv D

GC1: CallCtlTermConnCreatedEv TermD

GC1: CallCtlTermConnRingingEv TermD


JTAPI CallInfo:

CallingParty = 1000

CurrentCallingParty=1000

CalledParty= 2000

CurrentCalledParty=2000

LastRedirectingParty=Null

Scenario 12

Scenario
Result

A (1000) calls Hunt Pilot B(2000), call is offered at C (3001) and D (3002). Application is observing A,C and D. GC1 is the GCID of the call.

D answers the call

GC1: CallActiveEv

GC1: ConnCreatedEv A

...

GC1: CallCtlTermConnTalkingEv A

GC1: ConnCreatedEv C

GC1: ConnInProgressEv C

GC1: CallCtlConnOfferedEv C

GC1: CiscoHuntConnCreatedEv B

GC1: ConnInProgressEv B

GC1: CallCtlConnOfferedEv B

GC1: ConnAlertingEv B

GC1: CallCtlConnAlertingEv B

GC1: ConnCreatedEv C

GC1: ConnInProgressEv C

GC1: CallCtlConnOfferedEv C

GC1: CallCtlConnEstablishedEv B

GC1: ConnCreatedEv D

GC1: ConnInProgressEv D

GC1: CallCtlConnOfferedEv D

GC1: CallCtlConnAlertingEv C

 

GC1: CallCtlTermConnCreatedEv TermC

GC1: CallCtlTermConnRingingEv TermC

GC1: CallCtlConnAlertingEv D

GC1: CallCtlTermConnCreatedEv TermD

GC1: CallCtlTermConnRingingEv TermD

GC1: CallCtlTermConnTalkingEv TermD

GC1: CallCtlTermConnDroppedEv TermC

GC1: ConnDisconnectedEv C

GC1: CallCtlConnDisconnectedEv C


JTAPI CallInfo:

CallingParty = 1000

CurrentCallingParty=1000

CalledParty= 2000

CurrentCalledParty=2000

LastRedirectingParty=Null

Scenario 13

JTAPI CallInfo:

CallingParty = 1000

CurrentCallingParty=1000

CalledParty= 2000

CurrentCalledParty=2000

LastRedirectingParty=Null

Scenario 14

Scenario
Result

A (1000) calls Hunt Pilot (B or 2000), call is offered at C (3001) and D (3002). Application is observing A and D. GC1 is the GCID of the call.

C answers the call

GC1:CallActiveEv

GC1:ConnCreatedEv A

GC1:ConnConnectedEv A

GC1:CallCtlConnInitiatedEv A

GC1:TermConnCreatedEv TermA

GC1:TermConnActiveEv TermA

GC1:CallCtlTermConnTalkingEv TermA

GC1: CallCtlConnEstablishedEv A

GC1: CiscoHuntConnCreatedEv B

GC1: ConnCreatedEv D

GC1: ConnOfferedEv D

....

GC1: TermConnCreatedEv TermD

GC1: CallCtlTermConnRingingEv TermD

GC1: ConnCreatedEv C

GC1: ConnConnectedEv C

GC1: CallCtlConnEstablishedEv C

GC1: CallCtlTermConnDroppedEv TermD

GC1: ConnDisconnectedEv D

GC1: CallCtlConnDisconnectedEv D


JTAPI CallInfo:

CallingParty = 1000

CurrentCallingParty=1000

CalledParty= 2000

CurrentCalledParty=2000

LastRedirectingParty=Null

Scenario 15

Event flow is same as first scenario.

JTAPI CallInfo:

CallingParty = 1000

CurrentCallingParty=1000

CalledParty= 2000

CurrentCalledParty=2000

LastRedirectingParty=Null

Scenario 16

JTAPI CallInfo:

CallingParty = 1000

CurrentCallingParty=1000

CalledParty= 2000

CurrentCalledParty=2000

LastRedirectingParty=Null

Scenario 17

Scenario
Result

A (1000) calls Hunt Pilot B (2000), call is offered at C (3001) and is answered. A consults with D (4000) and call is offered at E(5001). A completes the conference. Application is observing A.

Initially connection is created to an address with DN=B type=UNKNOWN

GC1 is the GCID of the final call.

GC2 is the consult call

C answers the call

E answers the call

Conference is completed

GC1:CallActiveEv

GC1:ConnCreatedEv A

GC1:ConnConnectedEv A

GC1:CallCtlConnInitiatedEv A

GC1:TermConnCreatedEv TermA

GC1:TermConnActiveEv TermA

GC1:CallCtlTermConnTalkingEv TermA

GC1: CallCtlConnEstablishedEv A

GC1: CiscoHuntConnCreatedEv B-U

GC1: ConnInProgressEv B-U

GC1: CallCtlConnOfferedEv B-U

GC1: CiscoHuntConnCreatedEv B

GC1: ConnInProgressEv B

GC1: CallCtlConnOfferedEv B

GC1: ConnAlertingEv B

GC1: CallCtlConnAlertingEv B

GC1: ConnDisconnectedEv B-U

GC1: CallCtlConnDisconnectedEv B-U

GC1: ConnCreatedEv C

GC1: ConnOfferedEv C

....

GC1: CallCtlConnEstablishedEv C

GC1: CallCtlTermConnHeldEv TermA

GC2: CiscoConsultCallActiveEv

GC2: ConnCreatedEv A

.....

GC2: CallCtlTermConnTalkingEv TermA

GC2: CallCtlConnDialingEv A

GC2: CallCtlConnEstablishedEv A

 

GC2: CiscoHuntConnCreatedEv D

GC2: ConnInProgressEv D

GC2: CallCtlConnOfferedEv D

GC2: ConnAlertingEv D

GC2: CallCtlConnAlertingEv D

GC2: ConnCreatedEv E

GC2: ConnConnectedEv E

GC2: CallCtlConnEstablishedEv E

GC2: ConnConnectedEv D

GC2: CallCtlConnEstablishedEv D

CiscoCallChangedEv final call -GC1, consult call=GC2

GC1: CiscoHuntConnCreatedEv B

GC1: ConnCreatedEv C

GC1: ConnConnectedEv C

GC1: CallCtlConnEstablishedEv C

GC1: CiscoHuntConnCreatedEv E

GC1: ConnCreatedEv E

GC1: ConnConnectedEv E

GC1: CallCtlConnEstablishedEv E

GC2: ConnDisconntedEv B

GC2: ConnDisconntedEv C

GC2: CallCtlConnDisconnectedEv C

GC2: ConnDisconntedEv D

GC2: ConnDisconntedEv E

GC2: CallCtlConnDisconnectedEv E

GC2: CallCtlTermConnDroppedEv TermA

..

GC2: ConnDisconntedEv A

GC2: CallCtlConnDisconnectedEv A

GC2: CallInvalidEv


JTAPI CallInfo:

CallingParty = 1000

CurrentCallingParty= [No guaranted for conference scenario]

CalledParty= 2000

CurrentCalledParty= [No guaranted for conference scenario]

LastRedirectingParty=1000

Scenario 18

Transfer to a line group member.

Scenario
Result

A (1000) calls B(1001), consult to Hunt Pilot P (2000), call is offered at C (3001) and is answered. B completes the transfer. Application is observing A, B and C.

GC1 is the GCID of the final call.

GC2 is the consult call

B answers the call

B consults to Hunt pilot

C answers the call

Transfer is completed

GC1:CallActiveEv

GC1:ConnCreatedEv A

GC1:ConnConnectedEv A

GC1:CallCtlConnInitiatedEv A

GC1:TermConnCreatedEv TermA

GC1:TermConnActiveEv TermA

GC1:CallCtlTermConnTalkingEv TermA

GC1: CallCtlConnEstablishedEv A

GC1: ConnCreatedEv B

GC1: ConnOfferedEv B

...

GC1: TermConnRingingEv TermB

GC1: TermConnTalkingEv TermB

GC1: CallCtlTermConnHeldEv TermB

GC2: CiscoConsultCallActiveEv

GC2: ConnCreatedEv B

.....

GC2: CallCtlTermConnTalkingEv TermB

 

GC2: CiscoHuntConnCreatedEv P

GC2: ConnInProgressEv P

GC2: CallCtlConnOfferedEv P

GC2: ConnCreatedEv C

GC2: ConnOfferedEv C

GC2: TermConnRingingEv TermC

GC2: ConnConnectedEv P

GC2: CallCtlConnEstablishedEv P

GC2: CiscoHuntConnCreatedEv P

GC2: ConnInProgressEv P

GC2: CallCtlConnOfferedEv P

GC2: ConnAlertingEv P

GC2: CallCtlConnAlertingEv P

GC2: ConnDisconnectedEv P

GC2: CallCtlConnDisconnectedEv P

GC2: ConnConnectedEv P

GC2: CallCtlConnEstablishedEv P

GC2: ConnConnectedEv C

GC2: CallCtlConnEstablishedEv C

GC2: TermConnTalkingEv TermC

GC1: CiscoHuntConnCreatedEv P

GC1: ConnInProgressEv P

GC1: CallCtlConnOfferedEv P

GC1: ConnAlertingEv P

GC1: CallCtlConnAlertingEv P

 

CiscoCallChangedEv final call -GC1, consult call=GC2

GC1: ConnCreatedEv C

GC1: ConnConnectedEv C

GC1: CallCtlConnEstablishedEv C

GC1: TermConnTalkingEv TC

GC1: ConnConnectedEv P

GC1: CallCtlConnEstablishedEv P

GC2: ConnDisconntedEv P

GC2: CallCtlConnDisconnectedEv P

GC2: ConnDisconntedEv B

GC2: CallCtlConnDisconnectedEv B

...

....

GC2: ConnDisconntedEv C

GC2: CallCtlConnDisconnectedEv C

..

GC2: CallInvalidEv

GC1: ConnDisconntedEv B

GC1: CallCtlConnDisconnectedEv B

GC1: TermConnDroppedEv TB

GC1: CallCtlTermConnDroppedEv TB


Scenario 19

Pickup from line group

Scenario
Result

A (1000) calls (GC1) Hunt Pilot B (2000), call is offered at C (3001). Application is observing A, C and D.

C and D are in the same pickup group.

D picks up the call ringing at C.

GC2 is the initial call at D.

A and D are connected on GC1

D goes off-hook and answers call from C.

GC1: CallActiveEv

GC1: ConnCreatedEv A

...

GC1: CallCtlTermConnTalkingEv A

GC1: ConnCreatedEv C

GC1: ConnInProgressEv C

GC1: CallCtlConnOfferedEv C

GC1: CiscoHuntConnCreatedEv B

GC1: ConnInProgressEv B

GC1: CallCtlConnOfferedEv B

GC1: ConnAlertingEv B

GC1: CallCtlConnAlertingEv B

GC1: TermConnRingingEv TC

GC1: CallCtlTermConnRingingEv TC

GC1: ConnAlertingEv C

GC1: CallCtlConnAlertingEv C

GC2: CallActiveEv

GC2: ConnCreatedEv D

GC2: ConnConnectedEv D

GC2: CallCtlConnInitiatedEv D

GC2: TermConnCreatedEv TD

GC2: TermConnActiveEv TD

GC2: CallCtlTermConnTalkingEv TD

GC2: CiscoCallChangedEv GC2->GC1

GC1: ConnCreatedEv D

GC1: ConnConnectedEv D

GC1: CallCtlConnInitiatedEv D

GC1: TermConnCreatedEv TD

GC1: TermConnActiveEv TD

GC1: CallCtlTermConnTalkingEv TD

 

GC2: TermConnDroppedEv TD

GC2: CallCtlTermConnDroppedEv TD

GC2: ConnDisconnectedEv D

GC2: CallCtlConnDisconnectedEv D

GC2: CallInvalidEv

GC1: TermConnDroppedEv TC

GC1: TermConnTermConnDroppedEv TC

GC1: ConnDisconnectedEv B

GC1: CallCtlConnDisconnectedEv B



Note Note: For this scenario, if the pickup is done from the address of the hunt member that is currently ringing with Auto Pickup disabled, then getCiscoHuntConnection() returns the connection to the hunt pilot. If the pickup is done from an address that is in the pickup group but is not the current ringing terminal, then getCiscoHuntConnection() returns null. If Auto Pickup is enabled, then getCiscoHuntConnection() always returns null after the call is picked up (it does not matter whether the pickup is done from the ringing terminal or from another address in the pickup group). This is true for Pickup, Group Pickup, Other Pickup, and Directed Call Pickup.


Scenario 20

Gpickup a ringing hunt list member.

Scenario
Result

A (1000) calls (GC1) Hunt Pilot B (2000), call is offered at C (3001). Application is observing A, C and D.

D picks up the call ringing at C.

GC2 is the initial call at D.

A and D are connected on GC1

GC1: CallActiveEv

GC1: ConnCreatedEv A

...

GC1: CallCtlTermConnTalkingEv A

GC1: ConnCreatedEv C

GC1: ConnInProgressEv C

GC1: CallCtlConnOfferedEv C

GC1: CiscoHuntConnCreatedEv B

GC1: ConnInProgressEv B

GC1: CallCtlConnOfferedEv B

D goes off-hook and dials the pickup number Z.

GC1: ConnAlertingEv B

GC1: CallCtlConnAlertingEv B

GC1: TermConnRingingEv TC

GC1: CallCtlTermConnRingingEv TC

GC1: ConnAlertingEv C

GC1: CallCtlConnAlertingEv C

GC2: CallActiveEv

GC2: ConnCreatedEv D

GC2: ConnConnectedEv D

GC2: CallCtlConnInitiatedEv D

GC2: TermConnCreatedEv TD

GC2: TermConnActiveEv TD

GC2: CallCtlTermConnTalkingEv TD

GC2: CallCtlConnDialingEv D

GC2: ConnCretatedEv Z

GC2: ConnInProgressEv Z

GC2: CallCtlConnOfferedEv Z

GC2: CallCtlConnEstablishedEv D

GC2: CiscoCallChangedEv GC2->GC1

GC1: ConnCreatedEv D

GC1: ConnCreatedEv Z

GC1: ConnConnectedEv D

GC1: CallCtlConnEstablishedEv D

GC1: TermConnCreatedEv TD

GC1: TermConnActiveEv TD

GC1: CallCtlTermConnTalkingEv TD

GC1: ConnInProgressEv Z

GC1: CallCtlConnOfferedEv Z

GC2: ConnDisconnectedEv Z

GC2: CallCtlConnDisconnectedEv Z

GC2: TermConnDroppedEv TD

 

GC2: CallCtlTermConnDroppedEv TD

GC2: ConnDisconnectedEv D

GC2: CallCtlConnDisconnectedEv D

GC2: CallInvalidEv

GC1: ConnDisconnectedEv Z

GC1: CallCtlConnDisconnectedEv Z

GC1: TermConnDroppedEv TC

GC1: TermConnTermConnDroppedEv TC

GC1: ConnDisconnectedEv B

GC1: CallCtlConnDisconnectedEv B



Note Note: For this scenario, if the pickup is done from the address of the hunt member that is currently ringing with Auto Pickup disabled, getCiscoHuntConnection() returns the connection to the hunt pilot. If the pickup is done from an address that is in the pickup group but is not the current ringing terminal, getCiscoHuntConnection() returns null. If the Auto Pickup is enabled, getCiscoHuntConnection() always returns null after the call is picked up (it does not matter whether the pickup is done from the ringing terminal or from another address in the pickup group). This is true for Pickup, Group Pickup, Other Pickup, and Directed Call Pickup.


Scenario 21

Redirect by a hunt member:

Scenario
Result

A (1000) calls (GC1) Hunt Pilot B (2000), call is offered at C (3001). Application is observing A, C and D.

C redirects the call to D. D is not a member.

GC1: CallActiveEv

GC1: ConnCreatedEv A

...

GC1: CallCtlTermConnTalkingEv A

GC1: ConnCreatedEv C

GC1: ConnInProgressEv C

GC1: CallCtlConnOfferedEv C

GC1: CiscoHuntConnCreatedEv B

GC1: ConnInProgressEv B

GC1: CallCtlConnEstablishedEv B

GC1: ConnAlertingEv B

C answers the call.

Application redirects the call from C to D

GC1: TermConnRingingEv TC

GC1: CallCtlTermConnRingingEv TC

GC1: ConnAlertingEv C

GC1: CallCtlConnAlertingEv C

GC1: CallCtlEstablishedEv C

GC1: ConnCreatedEv D

GC1: ConnInProgressEv D

GC1: CallCtlConnOfferedEv D

getCallControlCause() = CAUSE.REDIRECTED

GC1: CallCtlConnDisconnectedEv B

GC1: CallCtlConnDisconnected C

GC1: TermConnDisconnEv C

GC1: CallCtlTermConnDisconnectedEv C

getCallControlCause() = CAUSE.REDIRECTED

Call info:

Current calling A

Current Called D

LRP B type CiscoAdress.UNKNOWN


Calls moving between members

When call is moving between hunt members call could go to invalid state.

Scenario
Result

A (1000) calls (GC1) Hunt Pilot B (2000), call is offered at C (3001). C does not answer the call, call is offered at D.

Application is observing C and D

GC1: CallActiveEv

...

GC1: ConnCreatedEv C

GC1: ConnInProgressEv C

GC1: CallCtlConnOfferedEv C

GC1: ConnCreatedEv A

GC1: CiscoHuntConnCreatedEv B

GC1: CallCtlConnEstablishedEv B

GC1: TermConnRingingEv TC

Call moves to D.

GC1: CallCtlTermConnRingingEv TC

GC1: ConnAlertingEv C

GC1: CallCtlConnAlertingEv C

GC1: ConnCreatedEv D

GC1: ConnInProgressEv D

GC1: CallCtlConnOfferedEv D

GC1: ConnAlertingEv D

GC1: CallCtlConnAlertingEv D

GC1: TermConnCreatedEv TD

GC1: TermConnRingingEv TD

GC1: CallCtlTermConnRingingEv TD

GC1: TermConnDroppedEv TC

GC1: CallCtlTermConnDroppedEv TC

getCallControlCause() = CAUSE.REDIRECTED

GC1: ConnDisconnectedEvTC

GC1: CallCtlConnDisconnectedEv TC

getCallControlCause() = CAUSE.REDIRECTED

Call info:

Current calling A

Current Called D

LRP = null


Not all members are observed

If all members are not observed call could go to invalid state when moving between hunt members

Scenario
Result

A (1000) calls (GC1) Hunt Pilot B (2000), call is offered at C (3001). C does not answer the call, call moves to D, and to E where it is answered.

C, D, E and F are the members. Application is observing C and E.

GC1: CallActiveEv

GC1: ConnCreatedEv C

GC1: ConnInProgressEv C

Call moves to D (not unobserved).

GC1: CallCtlConnOfferedEv C

GC1: ConnCreatedEv A

GC1: CiscoHuntConnCreatedEv B

GC1: ConnConnectedEv B

GC1: CallCtlConnEstablishedEv B

GC1: ConnConnectedEv A

GC1: CallCtlConnEstablishedEv A

GC1: ConnAlertingEv C

GC1: CallCtlConnAlertingEv C

GC1: TermConnRingingEv TC

GC1: CallCtlTermConnRingingEv TC

GC1: ConnDisconnectedEv B

GC1: CallCtlConnDisconnectedEv B

getCallControlCause() = CAUSE.REDIRECTED

GC1: ConnDisconnectedEv A

GC1: CallCtlConnDisconnectedEv A

getCallControlCause() = CAUSE.REDIRECTED

GC1: TermConnDroppedEv TC

GC1: CallCtlTermConnDroppedEv

getCallControlCause() = CAUSE.REDIRECTED

GC1: ConnDisconnectedEv C

GC1: CallCtlConnDisconnectedEv C

getCallControlCause() = CAUSE.REDIRECTED

Call moves from D to E.

GC1: CallInvalidEv

GC1: CallActiveEv

GC1: ConnCreatedEv E

GC1: ConnInProgressEv E

GC1: CallCtlConnOfferedEv E

GC1: ConnCreatedEv A

E answers the call.

GC1: CiscoHuntConnCreatedEv B

GC1: ConnConnectedEv B

GC1: CallCtlConnEstablishedEv B

GC1: ConnConnectedEv A

GC1: CallCtlConnEstablishedEv A

GC1: ConnAlertingEv E

GC1: CallCtlConnAlertingEv E

GC1: TermConnRingingEv TE

GC1: CallCtlTermConnRingingEv TE

GC1: ConnConnectedEv E

GC1: CallCtlConnEstablishedEv E

GC1: TermConnActiveEv TE

GC1: CallCtlTermConnTalkingEv TE

Call info:

Current calling A

Current Called E

LRP = null


Not all members are observed but calling party is observed

Scenario
Result

A (1000) calls (GC1) Hunt Pilot B (2000), call is offered at C (3001). C does not answer the call, call moves to D, and to E where it is answered.

C, D, E and F are the members. Application is observing A, C and E.

Call moves to D (not unobserved).

Call moves from D to E.

E answers the call.

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: CiscoHuntConnCreatedEv B

GC1; ConnInProgressEv B

GC1: CallCtlConnOfferedEv B

GC1: ConnCreatedEv C

GC1: ConnInProgressEv C

GC1: CallCtlConnOfferedEv C

GC1: ConnAlertingEv C

GC1: CallCtlConnAlertingEv C

GC1: TermConnRingingEv TC

GC1: CallCtlTermConnRingingEv TC

GC1: ConnConnectedEv B

GC1: CallCtlConnEstablishedEv B

GC1: TermConnDroppedEv TC

GC1: CallCtlTermConnDroppedEv

getCallControlCause() = CAUSE.REDIRECTED

GC1: ConnDisconnectedEv C

GC1: CallCtlConnDisconnectedEv C

getCallControlCause() = CAUSE.REDIRECTED

 

GC1: ConnCreatedEv E

GC1: ConnInProgressEv E

GC1: CallCtlConnOfferedEv E

GC1: ConnAlertingEv E

GC1: CallCtlConnAlertingEv E

GC1: TermConnRingingEv TE

GC1: CallCtlTermConnRingingEv TE

GC1: ConnConnectedEv E

GC1: CallCtlConnEstablishedEv E

GC1: TermConnActiveEv TE

GC1: CallCtlTermConnTalkingEv TE

Call info:

Current calling A

Current Called E

LRP = null


Calling and all Hunt List members are observed. The call is not answered and goes to hunt no answer forward destination

Scenario
Result

A (1000) calls (GC1) Hunt Pilot B (2000), call is offered at C (3001). C does not answer the call, call moves to D, and to E. The call goes to hunt no answer forward destination F which is observed.

C, D, E and F are the members.Application is observing A, C, D, E and F.

Call moves to D.

Call moves from D to E.

Call moves to F.

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: CiscoHuntConnCreatedEv B

GC1; ConnInProgressEv B

GC1: CallCtlConnOfferedEv B

GC1: ConnCreatedEv C

GC1: ConnInProgressEv C

GC1: CallCtlConnOfferedEv C

GC1: ConnAlertingEv C

GC1: CallCtlConnAlertingEv C

GC1: TermConnRingingEv TC

GC1: CallCtlTermConnRingingEv TC

GC1: ConnConnectedEv B

GC1: CallCtlConnEstablishedEv B

GC1: ConnCreatedEv D

GC1: ConnInProgressEv D

GC1: CallCtlConnOfferedEv D

GC1: ConnAlertingEv D

GC1: CallCtlConnAlertingEv D

GC1: TermConnCreatedEv TD

GC1: TermConnRingingEv TD

GC1: CallCtlTermConnRingingEv TD

 

GC1: TermConnDroppedEv TC

GC1: CallCtlTermConnDroppedEv

getCallControlCause() = CAUSE.REDIRECTED

GC1: ConnDisconnectedEv C

GC1: CallCtlConnDisconnectedEv C

getCallControlCause() = CAUSE.REDIRECTED

GC1: ConnCreatedEv E

GC1: ConnInProgressEv E

GC1: CallCtlConnOfferedEv E

GC1: ConnAlertingEv E

GC1: CallCtlConnAlertingEv E

GC1: TermConnRingingEv TE

GC1: CallCtlTermConnRingingEv TE

GC1: TermConnDroppedEv TD

GC1: CallCtlTermConnDroppedEv TD

getCallControlCause() = CAUSE.REDIRECTED

GC1: ConnDisconnectedEv D

GC1: CallCtlConnDisconnectedEv D

getCallControlCause() = CAUSE.REDIRECTED

GC1: ConnCreatedEv F

GC1: ConnInProgressEv F

GC1: CallCtlConnOfferedEv F

GC1: ConnAlertingEv F

GC1: CallCtlConnAlertingEv F

GC1: TermConnRingingEv TF

GC1: CallCtlTermConnRingingEv TF

 

GC1: ConnDisconnectedEv B

GC1: CallCtlConnDisconnectedEv B

GC1: TermConnDroppedEv TE

GC1: CallCtlTermConnDroppedEv TE

getCallControlCause() = CAUSE.REDIRECTED

GC1: ConnDisconnectedEv E

GC1: CallCtlConnDisconnectedEv E

getCallControlCause() = CAUSE.REDIRECTED

Call info:

Current calling A

Current Called F

LRP = null


Forward Hunt No Answer to another hunt pilot

Scenario
Result

A (1000) calls (GC1) Hunt Pilot HP1 (2000), call is offered at C (3001). C does not answer the call, call moves to D, and to E. The call goes to hunt no answer forward destination F which is observed.

C, D, E are the members .

HP2 is the forward hunt no answer destination.

H, L are its members. All parties are observed.

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: CiscoHuntConnCreatedEv HP1

GC1; ConnInProgressEv HP1

GC1: CallCtlConnOfferedEv HP1

GC1: ConnCreatedEv C

GC1: ConnInProgressEv C

GC1: CallCtlConnOfferedEv C

GC1: ConnAlertingEv C

GC1: CallCtlConnAlertingEv C

GC1: TermConnRingingEv TC

GC1: CallCtlTermConnRingingEv TC

Call moves to D

Call moves from D to E.

GC1: ConnConnectedEv HP1

GC1: CallCtlConnEstablishedEv HP1

GC1: ConnCreatedEv D

GC1: ConnInProgressEv D

GC1: CallCtlConnOfferedEv D

GC1: ConnAlertingEv D

GC1: CallCtlConnAlertingEv D

GC1: TermConnCreatedEv TD

GC1: TermConnRingingEv TD

GC1: CallCtlTermConnRingingEv TD

GC1: TermConnDroppedEv TC

GC1: CallCtlTermConnDroppedEv

getCallControlCause() = CAUSE.REDIRECTED

GC1: ConnDisconnectedEv C

GC1: CallCtlConnDisconnectedEv C

getCallControlCause() = CAUSE.REDIRECTED

GC1: ConnCreatedEv E

GC1: ConnInProgressEv E

GC1: CallCtlConnOfferedEv E

GC1: ConnAlertingEv E

GC1: CallCtlConnAlertingEv E

GC1: TermConnRingingEv TE

GC1: CallCtlTermConnRingingEv TE

GC1: TermConnDroppedEv TD

GC1: CallCtlTermConnDroppedEv TD

getCallControlCause() = CAUSE.REDIRECTED

GC1: ConnDisconnectedEv D

GC1: CallCtlConnDisconnectedEv D

getCallControlCause() = CAUSE.REDIRECTED

Call goes t HP2, call is offered at H

Call moves from H to L

GC1: ConnCreatedEv H

GC1: ConnInProgressEv H

GC1: CallCtlConnOfferedEv H

GC1: CiscoHuntConnCreatedEv HP2

GC1: ConnAlertingEv H

GC1: CallCtlConnAlertingEv H

GC1: TermConnRingingEv TH

GC1: CallCtlTermConnRingingEv TH

GC1: ConnConnectedEv HP2

GC1: CallCtlConnEstablishedEv HP2

GC1: ConnCreatedEv L

GC1: ConnInProgressEv L

GC1: CallCtlConnOfferedEv L

GC1: ConnAlertingEv L

GC1: CallCtlConnAlertingEv L

GC1: TermConnRingingEv TL

GC1: CallCtlTermConnRingingEv TL

GC1: ConnDisconnectedEv HP1

GC1: CallCtlConnDisconnectedEv HP1

GC1: TermConnDroppedEv TH

GC1: CallCtlTermConnDroppedEv TH

getCallControlCause() = CAUSE.REDIRECTED

GC1: ConnDisconnectedEv H

GC1: CallCtlConnDisconnectedEv H

getCallControlCause() = CAUSE.REDIRECTED

Call info:

Current calling A

Current Called F

LRP = null


Consult transfer by a member to another Hunt Pilot

Scenario
Result

A (1000) calls (GC1) Hunt Pilot HP1 (2000), call is offered at C (3001). C answers the call and consult to HP2. L in HP2 is ringing. C completes the transfer.

C and L are observed

C answers the call

C consults with HP2 (GC2)

GC1: CallActiveEv

GC1: ConnCreatedEv C

GC1: ConnInProgressEv C

GC1: CallCtlConnOfferedEv C

GC1: ConnCreatedEv A

GC1: CiscoHuntConnCreatedEv HP1

GC1: ConnConnectedEv A

GC1: CallCtlConnEstablishedEv A

GC1: ConnConnectedEv HP1

GC1: CallCtlConnEstablishedEv HP1

GC1: ConnAlertingEv C

GC1: CallCtlConnAlertingEv C

GC1: TermConnRingingEv TC

GC1: CallCtlTermConnRingingEv TC

GC1: ConnConnectedEv C

GC1: CallCtlConnEstablishedEv C

GC1: TermConnActiveEv TC

GC1: CallCtlTermConnTalkingEv TC

GC1: CiscoTermConnSelectChangedEv TC

GC1: CallCtlTermConnHeldEv TC

GC2: ConsultCallActive

GC2: ConnCreatedEv C

GC2: ConnConnectedEv C

GC2: CallCtlConnInitiatedEv C

GC2: TermConnCreatedEv C

GC2: TermConnActiveEv C

GC2: CallCtlTermConnTalkingEv TC

GC2: CallCtlConnDialingEv TC

GC2: CallCtlConnEstablishedEv TC

Call is offered to L

C completes the transfer

GC2: CiscoHuntConnCreatedEv HP2

GC2: ConnInProgressEv HP2

GC2: CallCtlConnOfferedEv HP2

GC2: ConnCreatedEv L

GC2: ConnInProgressEv L

GC2: CallCtlConnOfferedEv L

GC2: ConnAlertingEv L

GC2: CallCtlConnAlertingEv L

GC2: TermConnRingingEv TL

GC2: CallCtlTermConnRingingEv TL

GC2: ConnConnectedEv HP2

GC2: CallCtlConnEstablishedEv HP2

GC2: CiscoCallChangedEv

GC1: ConnCreatedEv L

GC1: ConnAlertingEv L

GC1: CallCtlConnAlertingEv L

GC1: TermConnCreatedEv TL

GC1: TermConnRingingEv TL

GC1: CallCtlTermConnRingingEv TL

GC2: ConnDisconnectedEv HP2

GC2: CallCtlConnDisconnectedEv HP2

GC2: TermConnDroppedEv TL

GC2: CallCtlTermConnDroppedEv TL

GC2: ConnDisconnectedEv L

GC2: CallCtlConnDisconnectedEv L

GC2: TermConnDroppedEv C

GC2: CallCtlTermConnDroppedEv C

GC2: ConnDisconnectedEv C

GC2: CallCtlConnDisconnectedEv C

GC1: ConnDisconnectedEv HP1

GC1: CallCtlConnDisconnectedEv HP1

GC2: CallInvalidEv

GC1: CiscoHuntConnCreatedEv HP2

GC2: ConnConnectedEv HP2

GC2: CallCtlConnEstablishedEv HP2

L answers the call

GC1: TermConnDroppedEv C

GC1: CallCtlTermConnDroppedEv C

GC1: ConnDisconnectedEv C

GC1: CallCtlConnDisconnectedEv C

GC1: ConnConnectedEv L

GC1: CallCtlConnEstablishedEv L

GC1: TermConnActiveEv L

GC1: CallCtlTermConnTalkingEv TL


The following call scenarios are generally un-supported and applications are encouraged to enable the huntlist feature and adapt to the event flows described above.

Following are the expected events when the feature is disabled.

Scenario 23

Hunt list feature is disabled.

Basic call to hunt pilot

Scenario
Result

A (1000) calls Hunt Pilot P (2000), call is offered at C (3001) and is answered. Application is observing A. GCID is the call is GC1.

C answers the call

GC1:CallActiveEv

GC1:ConnCreatedEv A

GC1:ConnConnectedEv A

GC1:CallCtlConnInitiatedEv A

GC1:TermConnCreatedEv TermA

GC1:TermConnActiveEv TermA

GC1:CallCtlTermConnTalkingEv TermA

GC1: CallCtlConnEstablishedEv A

GC1: ConnCreatedEv P

GC1: ConnOfferedEv P

...

GC1: ConnAlertingEv P

GC1: ConnConnected P

GC1: CallCtlConnEstablishedEv A


bvHunt list feature is disabled

Scenario 24

Consult - Transfer Scenario

Scenario
Result

A (1000) calls B(1001), consult to Hunt Pilot P (2000), call is offered at C (3001) and is answered. B completes the transfer. Application is observing A and B.

GC1 is the GCID of the final call.

GC2 is the consult call

B answers the call

B consults to Hunt pilot

C answers the call

GC1:CallActiveEv

GC1:ConnCreatedEv A

GC1:ConnConnectedEv A

GC1:CallCtlConnInitiatedEv A

GC1:TermConnCreatedEv TermA

GC1:TermConnActiveEv TermA

GC1:CallCtlTermConnTalkingEv TermA

GC1: CallCtlConnEstablishedEv A

GC1: ConnCreatedEv B

GC1: ConnOfferedEv B

...

GC1: TermConnRingingEv TermB

GC1: TermConnTalkingEv TermB

GC1: CallCtlTermConnHeldEv TermB

GC2: CiscoConsultCallActiveEv

GC2: ConnCreatedEv B

.....

GC2: CallCtlTermConnTalkingEv TermB

GC2: ConnCreatedEv P

..

..

GC2: ConnAlertingEv P

GC2: CallCtlConnEstablishedEv P

Transfer is completed

CiscoTransferStartEv final call -GC1, consult call=GC2

GC1: ConnCreatedEv P

CiscoCallChangedEv GC2=>GC1

GC2: ConnDisconnectedEv P

GC2: ConnDisconntedEv B

GC2: CallCtlConnDisconnectedEv B

...

....

GC2: CallInvalidEv

GC1: CallCtlConnEstablishedEv P

GC1: ConnDisconnectedEv B

CiscoTransferEndEv


Scenario 25

Hunt list feature is disabled

Consult - Transfer Scenario

Scenario
Result

A (1000) calls B(1001), consult to Hunt Pilot P (2000), call is offered at C (3001) and is answered. B completes the transfer. Application is observing A, B and C.

UnSupported Configuration


Hunt list Connected Number

Hunt pilot B configured with "Display Line Group Member DN as Connected Party" enabled.B has HL1 as its hunt list which has C and D as its hunt members

Scenario
Expected Results
Call Info

A calls B, Application is observing A only. GC1 is the GCID of the call.

Call is offered on the huntmemeber C and C answers

GC1: CallActiveEv

GC1: ConnCreatedEv A

GC1:ConnConnectedEv A

GC1:CallCtlConnInitiatedEv A

GC1:TermConnCreatedEv TermA

GC1:TermConnActiveEv TermA

GC1:CallCtlTermConnTalkingEv TermA

GC1:CallCtlConnDialingEv A

GC1:CallCtlConnEstablishedEv A

GC1: CiscoHuntConnCreatedEv B

GC1: ConnInProgressEv B

GC1: CallCtlConnOfferedEv B

GC1: ConnAlertingEv B

GC1: CallCtlConnAlertingEv B

GC1: ConnCreatedEv C

GC1: ConnConnectedEv C

GC1: CallCtlConnEstablishedEv C

GC1: ConnConnectedEv B

GC1: CallCtlConnEstablishedEv B

Call.getCurrentCallingAddress = A

Call.getModifiedCallingAddress= A

Call.getCurrentCalledAddress = null

Call.getModifiedCalledAddress = null

Call.getCurrentCallingAddress = A

Call.getModifiedCalledAddress= A

Call.getCurrentCalledAddress = B

Call.getModifiedCalledAddress = B

Call.getCurrentCallingAddress = A

Call.getModifiedCalledAddress= A

Call.getCurrentCalledAddress = B

Call.getModifiedCalledAddress = C

A calls Hunt Pilot B, call is offered at C. Application is observing C. GC1 is the GCID of the call.

C answers the call

GC1: CallActiveEv

GC1: ConnCreatedEv C

GC1: ConnInProgressEv C

GC1: CallCtlConnOfferedEv C

GC1: ConnCreatedEv A

GC1: CiscoHuntConnCreatedEv B

GC1: ConnConnectedEv A

GC1: CallCtlConnEstablishedEv A

GC1: ConnConnectedEv B

GC1: CallCtlConnEstablishedEv B

GC1: CallCtlConnAlertingEv C

GC1:TermConnCreatedEv TermC

GC1: TermConnRingingEv TermC

GC1: CallCtlTermConnRingingEvTermC:

GC1: ConnConnectedEv C

GC1: CallCtlConnEstablishedEv C

GC1: TermConnActiveEv TermC

CG1: CallCtlTermConnTalkingEv termC

Call.getCurrentCallingAddress = A

Call.getModifiedCalledAddress= A

Call.getCurrentCalledAddress = B

Call.getModifiedCalledAddress = B

Call.getCurrentCallingAddress = A

Call.getModifiedCalledAddress= A

Call.getCurrentCalledAddress = B

Call.getModifiedCalledAddress = C

A calls Hunt Pilot B, call is offered at C Application is observing A and C. GC1 is the GCID of the call.

C answers the call.

GC1: CallActiveEv

GC1: ConnCreatedEv A

...

GC1: CallCtlTermConnTalkingEv A

GC1: ConnCreatedEv C

GC1: ConnInProgressEv C

GC1: CallCtlConnOfferedEv C

GC1: CiscoHuntConnCreatedEv B

GC1: ConnInProgressEv B

GC1: CallCtlConnOfferedEv B

GC1: ConnAlertingEv B

GC1: CallCtlConnAlertingEv B

GC1: ConnAlertingEv C

GC1: CallCtlConnAlertingEv C

GC1:TermConnCreatedEv TermC

GC1: TermConnRingingEv TermC

GC1: CallCtlTermConnRingingEvTermC

GC1:CallCtlTermConnTalkingEv TermC

Call.getCurrentCallingAddress = A

Call.getModifiedCalledAddress= A

Call.getCurrentCalledAddress = B

Call.getModifiedCalledAddress = C

A calls Hunt Pilot B, call is offered at C and then to D Application is observing A, C and D. GC1 is the GCID of the call.

Call moves to D and D answers

GC1: CallActiveEv

GC1: ConnCreatedEv A

...

GC1: CallCtlTermConnTalkingEv A

GC1: ConnCreatedEv C

GC1: ConnInProgressEv C

GC1: CallCtlConnOfferedEv C

GC1: CiscoHuntConnCreatedEv B

GC1: ConnInProgressEv B

GC1: CallCtlConnOfferedEv B

GC1: ConnAlertingEv B

GC1: CallCtlConnAlertingEv B

GC1: ConnAlertingEv C

GC1: CallCtlConnAlertingEv C

GC1:TermConnCreatedEv TermC

GC1: TermConnRingingEv TermC

GC1: CallCtlTermConnRingingEvTermC

GC1: ConnCreatedEv D

GC1: ConnAlertingEv D

GC1: ConnDisConnEv C

GC1: CallCtlConnDiscConnEv C

GC1:TermConnDroppedEv TermC

GC1: CallCtlTermConnDroppedEv TermC

GC1: ConnConnectedEv D

GC1: CallCtlConnEstablishedEv D

GC1: TermConnActiveEv TermD

CG1: CallCtlTermConnTalkingEv termD

Call.getCurrentCallingAddress = A

Call.getModifiedCalledAddress= A

Call.getCurrentCalledAddress = B

Call.getModifiedCalledAddress = B

Call.getCurrentCallingAddress = A

Call.getModifiedCalledAddress= A

Call.getCurrentCalledAddress = B

Call.getModifiedCalledAddress = D

A calls Hunt Pilot B, call is offered at C Application is observing A,C and D. GC1 is the GCID of the call.

C answers the call.

C consults D and completes transfer

GC1: CallActiveEv

GC1: ConnCreatedEv A

...

GC1: CallCtlTermConnTalkingEv A

GC1: ConnCreatedEv C

GC1: ConnInProgressEv C

GC1: CallCtlConnOfferedEv C

GC1: CiscoHuntConnCreatedEv B

GC1: ConnInProgressEv B

GC1: CallCtlConnOfferedEv B

GC1: ConnAlertingEv B

GC1: CallCtlConnAlertingEv B

GC1: ConnAlertingEv C

GC1: CallCtlConnAlertingEv C

GC1:TermConnCreatedEv TermC

GC1: TermConnRingingEv TermC

GC1: CallCtlTermConnRingingEvTermC

GC1:CallCtlTermConnTalkingEv TermC

GC2: CallActiveEv

GC2: ConnCreatedEv C

...

GC2: CallCtlTermConnTalkingEv A

Call.getCurrentCallingAddress = A

Call.getModifiedCalledAddress= A

Call.getCurrentCalledAddress = B

Call.getModifiedCalledAddress = C

 

GC2: ConnCreatedEv D

GC2: ConnInProgressEv D

GC2: CallCtlConnOfferedEv D

...

GC2: ConnAlertingEv D

GC2: CallCtlConnAlertingEv D

GC2:TermConnCreatedEv TermD

GC2: TermConnRingingEv TermD

GC2:CallCtlTermConnRingingEvTermD

GC2:CallCtlTermConnTalkingEv TermD

CiscoTransferStartEv

GC1 ConnCreatedEv D

GC1: CallCtlConnEstablishedEv D

GC1:CallCtlTermConnTalkingEv TermD

...

...

GC1 ConnDroppedEv C

GC1 ConnDroppedEv B

...

GC2 CallInvalidEv

CiscoTransferEndEv

Call.getCurrentCallingAddress = C

Call.getModifiedCalledAddress= C

Call.getCurrentCalledAddress = D

Call.getModifiedCalledAddress = D

Call.getCurrentCallingAddress = A

Call.getModifiedCalledAddress= A

Call.getCurrentCalledAddress = D

Call.getModifiedCalledAddress = D

A calls D.

D calls HP B, call is offered on C

GC1: CallActiveEv

GC1: ConnCreatedEv A

...

GC1: CallCtlTermConnTalkingEv A

GC1: ConnCreatedEv D

GC1: ConnInProgressEv D

GC1: CallCtlConnOfferedEv D

GC1: ConnAlertingEv D

GC1: CallCtlConnAlertingEv D

GC1:TermConnCreatedEv TermD

GC1: TermConnRingingEv TermD

GC1: CallCtlTermConnRingingEvTermD

GC1 CallCtlConnEstablishedEv D

GC1:CallCtlTermConnTalkingEv TermD

GC2: CallActiveEv

GC2: ConnCreatedEv D

...

GC2: CallCtlTermConnTalkingEv D

GC2: ConnCreatedEv C

GC2: ConnInProgressEv C

GC2: CallCtlConnOfferedEv C

GC2: ConnCreatedEv D

GC2: CiscoHuntConnCreatedEv B

GC2: ConnConnectedEv D

GC2: CallCtlConnEstablishedEv A

GC2: ConnConnectedEv B

GC2: CallCtlConnEstablishedEv B

Call.getCurrentCallingAddress = A

Call.getModifiedCalledAddress= A

Call.getCurrentCalledAddress = D

Call.getModifiedCalledAddress = D

C answers the call

D completes transfer

GC2: CallCtlConnAlertingEv C

GC2:TermConnCreatedEv TermC

GC2: TermConnRingingEv TermC

GC2: CallCtlTermConnRingingEvTermC:

GC2 CallCtlConnEstablishedEv C

GC2 CallCtlTermConnTalkingEv termC

CiscoTransferStartEv

GC1 ConnCreatedEv C

GC1 CiscoHuntConnectionCreatedEv B

GC1: ConnConnectedEv B

GC1: CallCtlConnEstablishedEv B

GC1: CallCtlConnEstablishedEv C

GC1:CallCtlTermConnTalkingEv TermD

...

...

GC1 ConnDroppedEv D

...

GC2 CallInvalidEv

CiscoTransferEndEv

Call.getCurrentCallingAddress = D

Call.getModifiedCalledAddress= B

Call.getCurrentCallingAddress = D

Call.getModifiedCalledAddress = B

Call.getCurrentCallingAddress = D

Call.getModifiedCalledAddress= B

Call.getCurrentCallingAddress = D

Call.getModifiedCalledAddress = C

Call.getCurrentCallingAddress = A

Call.getModifiedCalledAddress= A

Call.getCurrentCalledAddress = B

Call.getModifiedCalledAddress = C


Intercom

Configuration: terminal T1 has intercom line A with TargetDN B, label Bob, Unicode label UBob. Terminal T2 has intercom line B. Application provider has both T1 and T2 in control list.

C, Carol, UCarol is in the same intercom group as A, and B.

D, David, UDavid is not in the same intercom group as A, B and C.

Action
Result
Call Info

Application opens provider, after provider comes in service, application issues provider.getIntercomAddresses()

JTAPI returns A and B as array of CiscoIntercomAddress.

N.A

Application issues CiscoIntercomAddress.getIntercomTargetDN(),

CiscoIntercomAddress.getIntercomTargetLabel() and CiscoIntercomAddress.getIntercomUnicodeTarget Label() request at A.

JTAPI will return B as target DN and Bob and UBob as target label.

N.A

Application issues CiscoIntercomAddress.getDafaultIntercomTargetDN(),

CiscoIntercomAddress.getDefaultIntercomTargetLabel() and CiscoIntercomAddress.getDefaultIntercomUnicodeTargetLabel() request at A.

JTAPI will return B as target DN and Bob and UBob as target label.

N.A

Application issues CiscoIntercomAddres.setIntercomTarget(C, Carol, UCarol) on intercom address A.

After successful response, Application issues CiscoIntercomAddress.getIntercomTargetDN(), CiscoIntercomAddress.getIntercomTargetLabel() and CiscoIntercomAddress.getIntercomUnicodeTargetLabel() request at A.

AddressObserver at A: CiscoAddrIntercomInfoChangedEv Cause: CAUSE_NORMAL

JTAPI will return C as target DN and Carol and UCarol as target label.

N.A

Application1 is observing CiscoIntercomAddress A and has AddressObserverAdded to it. Application2 sets intercom target, label to C, Carol, UCarol.

App1 : AddressObserver at A: CiscoAddrIntercomInfoChangedEv Cause: CAUSE_NORMAL

N.A

After above step Application1 issues CiscoIntercomAddres.setIntercomTarget(B, Bob, UBob) on intercom address A.

Exception will be thrown to application as another application instance has already set the target to C, Carol, UCarol.

N.A

Intercom target DN and label for intercom address A is set to default, now application issues CiscoIntercomAddres.setIntercomTarget(D, David, UDavid) on intercom address A.

Exception will be thrown as D, David, UDavid is not in the same intercom group.

N.A

Application has set intercom target DN and label to C, Carol, UCarol for intercom address A. Now CTI Manager goes out of service, JTAPI failover to another CTIManager node. After intercom address A come back in service, JTAPI will restore intercom target DN and label to C, Carol, UCarol respectively.

Application issues CiscoIntercomAddress.getIntercomTargetDN(), CiscoIntercomAddress.getIntercomTargetLabel() and CiscoIntercomAddress.getIntercomUnicodeTargetLabel() request at A.

AddressObserver at A: CiscoAddrIntercomInfoChangedEv Cause: CAUSE_NORMAL

JTAPI will return C as target DN and Carol and UCarol as target label.

N.A

Application has set intercom target DN and label to C, Carol for intercom address A. Now CTI Manager goes out of service, JTAPI failsover to another CTIManager node. After intercom address A come back in service, JTAPI tries to restore intercom target DN, label and UnicodeLabel to C, Carol, UCarol respectively, however due to race condition some other application has already set the target DN, JTAPI get failure response from CTI.

AddressObserver at A: CiscoAddrIntercomInfoRestorationFailedEv Cause: CAUSE_NORMAL

N.A

Application is connected to a CTIManager node, Cisco Unified Communications Manager node goes down, intercom device failsover to another Cisco Unified Communications Manager node, after intercom address comes back in service. CTIManager should restore intercom target Dn and label.

Application issues CiscoIntercomAddress.getIntercomTargetDN(), CiscoIntercomAddress.getIntercomLabel() and CiscoIntercomAddress.getIntercomUnicodeTargetLabel() request at A.

AddressObserver at A:

CiscoAddrIntercomInfoChangedEv Cause: CAUSE_NORMAL

JTAPI will return C as target DN and Carol and UCarol as target label.

N.A

Application is connected to a CTIManager node, Cisco Unified Communications Manager node goes down, intercom device failsover to another Cisco Unified Communications Manager node, after intercom address comes back in service. CTIManager tries to restore intercom target Dn and label, however due to race condition some other application has already set the target Dn and Label, hence CTI is not able to restore the intercom target DN and label.

AddressObserver at A: CiscoAddrIntercomInfoRestorationFailedEv Cause: CAUSE_NORMAL

N.A

Application is observing intercom addresses A and B. A has target set to B. User initiates intercom call.

Intercom call is successful.

CallObserver at A and B: CallActiveEv GC1 Cause: CAUSE_NORMALConnCreatedEv A, Cause: CAUSE_NORMALConnConnectedEv A Cause: CAUSE_NORMAL

CallCtlConnInitiatedEv A Cause: CAUSE_NORMAL CallCtlCause=CAUSE_NORMALTermConnCreatedEv A- T1 Cause: CAUSE_NORMAL TermConnActiveEv A- T1 Cause: CAUSE_NORMAL

CallCtlTermConnTalkingEv A - T1 Cause: CAUSE_NORMAL

CallCtlCause=CAUSE_NORMAL

CallCtlConnDialingEv A Cause: CAUSE_NORMAL

CallCtlCause=CAUSE_NORMAL

CallCtlConnEstablishedEv A Cause: CAUSE_NORMAL

CallCtlCause=CAUSE_NORMAL

ConnCreatedEv B, Cause: CAUSE_NORMAL ConnConnectedEv B Cause: CAUSE_NORMAL CallCtlConnOfferedEv B Cause: CAUSE_NORMAL CallCtlCause=CAUSE_NORMAL

CallCtlConnEstablishedEv B Cause: CAUSE_NORMAL CallCtlCause=CAUSE_NORMAL

Cg=A

Cd=B

CurrentCg=A

CurredCd=B

LRP = null

 

TermConnCreatedEv B- T2 Cause: CAUSE_NORMAL TermConnPassiveEv B - T2 Cause: CAUSE_NORMAL

CallCtlTermConnBridgeEv B - T2 Cause: CAUSE_NORMAL CallCtl Cause=CAUSE_NORMAL

CiscoToneChangedEv - T1 -GC1

CiscoToneChangedEv - T2 -GC1

CiscoRTPOutputStartedEv - T1

CiscoRTPInputStartedEv - T2

 

User at B presses talkback softkey to get connected to intercom initiator.

CallObserver at A and B: TermConnActiveEv B - T2 Cause: CAUSE_NORMAL CallCtlTermConnTalkingEv B - T2 Cause: CAUSE_NORMAL CallCtlCause=CAUSE_NORMAL

CiscoRTPOutputStartedEv - T2CiscoRTPInputStartedEv - T1

Cg=A

Cd=B

CurrentCg=A

CurredCd=B

LRP = null

Intercom address A has target defined as B. Application initiates an intercom call by calling interface Address.ConnectIntercom() with dialeddigit as empty.

Intercom call is successful.

CallObserver at A and B :

CallActiveEv GC1 Cause: CAUSE_NORMAL ConnCreatedEv A Cause: CAUSE_NORMAL ConnConnectedEv A Cause: CAUSE_NORMAL CallCtlConnInitiatedEv A Cause: CAUSE_NORMAL CallCtlCause=CAUSE_NORMAL

TermConnCreatedEv T1 Cause: CAUSE_NORMAL TermConnActiveEv T1 Cause: CAUSE_NORMAL CallCtlTermConnTalkingEv T1 Cause: CAUSE_NORMAL CallCtlCause=CAUSE_NORMAL

CallCtlConnDialingEv A Cause: CAUSE_NORMAL CallCtlConnEstablishedEv A Cause: CAUSE_NORMAL CallCtlCause=CAUSE_NORMAL

ConnCreatedEv B Cause: CAUSE_NORMAL C ConnConnectedEv B Cause: CAUSE_NORMAL CallCtlConnOfferedEv B Cause: CAUSE_NORMAL CallCtlCause=CAUSE_NORMAL

CallCtlConnEstablishedEv B Cause: CAUSE_NORMAL CallCtlCause=CAUSE_NORMAL

TermConnCreatedEv B- T2 Cause: CAUSE_NORMAL TermConnPassiveEv B - T2 Cause: CAUSE_NORMAL CallCtlTermConnBridgeEv B - T2 Cause: CAUSE_NORMAL CallCtlCause=CAUSE_NORMAL

Cg=A

Cd=B

CurrentCg=A

CurredCd=B

LRP = null

 

CiscoToneChangedEv - T1 -GC1

CiscoToneChangedEv - T2 -GC1

CiscoRTPOutputStartedEv - T1

CiscoRTPInputStartedEv - T2

 

Application initiate TerminalConnection.join() request on TerminalConnection of B to talkback.

Request is successful.

CallObserver at A and B :

TermConnActiveEv B - T2 Cause: CAUSE_NORMAL CallCtlTermConnTalkingEv B - T2 Cause: CAUSE_NORMAL CallCtlCause=CAUSE_NORMAL

CiscoRTPOutputStartedEv - T2 CiscoRTPInputStartedEv - T1

Cg=A

Cd=B

CurrentCg=A

CurredCd=B

LRP = null

Application tried to put the intercom call on hold at A by issuing TerminalConnection.hold()

PlatformException will be thrown, intercom call stay connected.

N.A

Application tried to accept intercom call at intercom target by issuing connection.accept() at connection of B.

PlatformException will be thrown, intercom call stay connected.

N.A

Application tried to reject intercom call at intercom target by issuing connection.reject() at connection of B.

Intercom call will be disconnected.

N.A

Application tried to redirect intercom call by issuing connection.redirect() at connection of A or B.

PlatformException will be thrown, intercom call stay connected.

N.A

Application tried to park call by issuing connection.park() at Connection of A or B.

PlatformException will be thrown, intercom call stay connected.

N.A

Terminal T1 has intercom address A which has intercom target set to B.

Terminal T2 has intercom address B and another address C. C is in call with D, GC1.

A initiates intercom call to B, intercom call is auto-answered at B

No event to GC1 call, it will stay in Connected State.

N.A

Application tries to set forward on intercom address A by issuing CiscoIntercomAddress. setForwarding ()

PlatformException will be thrown.

N.A

Application tries to setRingerStatus on intercom address A by issuing CiscoIntercomAddress. setRingerStatus()

PlatformException will be thrown.

N.A

Application tries to setMessageWaiting on intercom address A by issuing CiscoIntercomAddress.setMessageWaiting()

PlatformException will be thrown.

N.A

Application tries to setAutoAcceptEnabled on intercom address A at CTIPort by issuing CiscoIntercomAddress. setAutoAcceptStatus ()

PlatformException will be thrown.

N.A

Application tries to getAutoAcceptEnabled on intercom address A at CTIPort by issuing CiscoIntercomAddress. getAutoAcceptStatus ()

PlatformException will be thrown.

N.A


DeviceState Whisper Scenario

Configuration: Terminal T1 has intercom address B, Terminal T2 has intercom address A. Application has set CiscoTermEvFilter to enable CiscoTermDeviceStateWhisperEv as well as all other DeviceState filters on T1 and T2. Application had added Terminal observer on both T1 and T2.

Action
Events
Call Info

Intercom address A has target defined as B. Application initiates an intercom call by calling interface Address.ConnectIntercom() with dialeddigit as empty.

Event received at TerminalObserver of T1

CiscoTermDeviceStateActiveEv T1 Cause: CAUSE_NORMAL

Event received at TerminalObserver of T2

CiscoTermDeviceStateWhisperEv T1 Cause: CAUSE_NORMAL

N.A

Application issue join() request on TerminalConnection of T2 (intercomTarget) to talkback to T1(intecomInitiator)

Event received at TerminalObserver of T1

None.

Event received at TerminalObserver of T2

CiscoTermDeviceStateActiveEv T1 Cause: CAUSE_NORMAL

N.A

Terminal T2 already have intercom target call, Application enables CiscoTermFilter for CiscoTermDeviceStateWhisperEv.

Event received at TerminalObserver of T2

CiscoTermDeviceStateWhisperEv T1 Cause: CAUSE_SNAPSHOT

N.A


iSac Codec

CiscoMediaTerminal Static Registration with iSac codec

Actions
Events
Call Info

1. Observe both A(CiscoMediaTerminal) and B

Static Register A with media capability as CiscoMediaCapability.ISAC

A calls B

CiscoTermInServirceEv for TA

CiscoAddrInServiceEv for A

 

B answers

GC1: CallActiveEv

GC1: ConnCreatedEv for A

GC1: ConnConnectedEv for B

GC1: CallCtlConnInitiatedEv for A

GC1: TermConnCreatedEv for TA

GC1: TermConnActiveEvent for TA

GC1: CallCtlTermConnTalkingEv for TA

GC1: CallCtlConnDialingEv for A

GC1: CallCtlConnEstablishedEv for B

 
 

GC1: ConnCreatedEv for B

GC1: ConnInProgressEv for B

GC1: CallCtlConnOfferedEv for B

GC1: ConnAlertingEv for B

GC1: CallCtlConnAlertingEv for B

GC1: TermConnCreatedEv for TB

GC1: TermConnRingingEv for TB

GC1: CallCtlTermConnRingingEv for TB

 
 

GC1: ConnConnectedEv for B

GC1: CallCtlConnEstablishedEv for B

GC1: TermConnActiveEv for TB

GC1: CallCtlTermConnTalkingEv for TB

TB: CiscoRTPOutputStartedEv for TB

TA: CiscoRTPInputStartedEv for TA

TA: CiscoRTPOutputStartedEv for TB

TB: CiscoRTPInputStartedEv for TA

(CiscoRTPInputStartedEv for TA).getRTPInputProperties().getPayloadType() will return CiscoRTPPayload.ISAC

(CiscoRTPInputStartedEv for TA).getRTPInputProperties().getBitRate() is not deterministic

(CiscoRTPInputStartedEv for TA).getRTPInputProperties().getPacketSize() is not deterministic

(CiscoRTPOutputStartedEv for TA).getRTPOutputProperties().getPayloadType() will return CiscoRTPPayload.ISAC

(CiscoRTPOutputStartedEv for TA).getRTPOutputProperties().getBitRate() is not deterministic

(CiscoRTPOutputStartedEv for TA).getRTPOutputProperties().getPacketSize() is not deterministic


CiscoMediaTerminal Dynamic Registraiton with iSac codec

Actions
Events
Call Info

1. Observe both A and B (CiscoMediaTerminal)

Dynamic Register B with media capability as CiscoMediaCapability.ISAC

CiscoTermInServirceEv for TB

CiscoAddrInServiceEv for B

 

A calls B

GC1: CallActiveEv

GC1: ConnCreatedEv for A

GC1: ConnConnectedEv for B

GC1: CallCtlConnInitiatedEv for A

GC1: TermConnCreatedEv for TA

GC1: TermConnActiveEvent for TA

GC1: CallCtlTermConnTalkingEv for TA

 
 

GC1: CallCtlConnDialingEv for A

GC1: CallCtlConnEstablishedEv for B

GC1: ConnCreatedEv for B

GC1: ConnInProgressEv for B

GC1: CallCtlConnOfferedEv for B

GC1: ConnAlertingEv for B

GC1: CallCtlConnAlertingEv for B

GC1: TermConnCreatedEv for TB

GC1: TermConnRingingEv for TB

GC1: CallCtlTermConnRingingEv for TB

 

B answers

App sets RTP params on B

GC1: ConnConnectedEv for B

GC1: CallCtlConnEstablishedEv for B

GC1: TermConnActiveEv for TB

GC1: CallCtlTermConnTalkingEv for TB

TB: CiscoMediaOpenLogicalChannelEv for TB

TB: CiscoRTPOutputStartedEv for TA

TA: CiscoRTPInputStartedEv for TB

TA: CiscoRTPOutputStartedEv for TB

TB: CiscoRTPInputStartedEv for TA

CiscoMediaOpenLogicalChannelEv.getPayloadType() will return CiscoRTPPayload.ISAC

CiscoMediaOpenLogicalChannelEv.getPacketSize() is not deterministic

(CiscoRTPInputStartedEv for TB).getRTPInputProperties().getPayloadType() will return CiscoRTPPayload.ISAC

(CiscoRTPInputStartedEv for TB).getRTPInputProperties().getBitRate() is not deterministic

(CiscoRTPInputStartedEv for TB).getRTPInputProperties().getPacketSize() is not deterministic

(CiscoRTPOutputStartedEv for TB).getRTPOutputProperties().getPayloadType() will return CiscoRTPPayload.ISAC

(CiscoRTPOutputStartedEv for TB).getRTPOutputProperties().getBitRate() is not deterministic

(CiscoRTPOutputStartedEv for TB).getRTPOutputProperties().getPacketSize() is not deterministic


CiscoRouteTerminal Dynamic Registration with iSac codec

Actions
Events
Call Info

1. Observe both A and B (CiscoRouteTerminal)

Dynamic Register B with media capability as CiscoMediaCapability.ISAC

CiscoTermInServirceEv for TB

CiscoAddrInServiceEv for B

 

A calls B

GC1: CallActiveEv

GC1: ConnCreatedEv for A

GC1: ConnConnectedEv for B

GC1: CallCtlConnInitiatedEv for A

GC1: TermConnCreatedEv for TA

GC1: TermConnActiveEvent for TA

GC1: CallCtlTermConnTalkingEv for TA

GC1: CallCtlConnDialingEv for A

GC1: CallCtlConnEstablishedEv for B

GC1: ConnCreatedEv for B

GC1: ConnInProgressEv for B

GC1: CallCtlConnOfferedEv for B

GC1: ConnAlertingEv for B

GC1: CallCtlConnAlertingEv for B

GC1: TermConnCreatedEv for TB

GC1: TermConnRingingEv for TB

GC1: CallCtlTermConnRingingEv for TB

 

B answers

GC1: ConnConnectedEv for B

GC1: CallCtlConnEstablishedEv for B

GC1: TermConnActiveEv for TB

GC1: CallCtlTermConnTalkingEv for TB

TB: CiscoMediaOpenLogicalChannelEv for TB

CiscoMediaOpenLogicalChannelEv.getPayloadType() will return CiscoRTPPayload.ISAC

CiscoMediaOpenLogicalChannelEv.getPacketSize() is not deterministic

App sets RTP params on B

TB: CiscoRTPOutputStartedEv for TA

TA: CiscoRTPInputStartedEv for TB

TA: CiscoRTPOutputStartedEv for TB

TB: CiscoRTPInputStartedEv for TA

(CiscoRTPInputStartedEv for TB).getRTPInputProperties().getPayloadType() will return CiscoRTPPayload.ISAC

(CiscoRTPInputStartedEv for TB).getRTPInputProperties().getBitRate() is not deterministic

(CiscoRTPInputStartedEv for TB).getRTPInputProperties().getPacketSize() is not deterministic

(CiscoRTPOutputStartedEv for TB).getRTPOutputProperties().getPayloadType() will return CiscoRTPPayload.ISAC

(CiscoRTPOutputStartedEv for TB).getRTPOutputProperties().getBitRate() is not deterministic

(CiscoRTPOutputStartedEv for TB).getRTPOutputProperties().getPacketSize() is not deterministic


JTAPI Cisco Unified IP 7931G Phone Interaction

A and C are JTAPI application controllable Addresses. B1 and B2 are Address on Cisco Unified IP 7931G Terminal. Cisco Unified IP 7931G Terminal is configured to do Transfer across Addresses. B1 and B2 has shared Line B1' and B2' respectively configured on JTAPI controllable Terminal.

Action
Events
Call Info

Scenario:1

Application is observing A:

A calls B1, B1 answers - GC1

User presses transfer key on Cisco Unified IP 7931G phone and dials C, call initiated from B2 to C: B2 calls C, C answers - GC2

User presses transfer key to complete transfer.

JTAPI Event received to CallObserver at A

GC-1 CiscoTransferStartedEv (ControllerAddress=B1,

ControllerTerminalConnection=Null, FinalCall=GC1,

TransferredCall= null)

GC-1 ConnDisconnectedEv for B1 Cause: CAUSE_UNKNOWN

GC-1 CallCtlConnDisconnectedEv for B1 Cause: CAUSE_UNKNOWN CallControlCause: CAUSE_TRANSFER

GC-1 ConnCreatedEv for C Cause: CAUSE_NORMAL

GC-1 ConnConnectedEv for C Cause: CAUSE_NORMAL

GC-1 CallCtlConnEstablishedEv for C Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER

GC-1 CiscoTransferEndEv

Calling=A

Called=B1

CurrCalling=A

CurrCalled=B1

LRP=B1

Scenario:2

Application is observing A, B1':

A calls B1, B1 answers - GC1

User presses transfer key on Cisco Unified IP 7931G phone and dials C, call initiated from B2 to C:

B2 calls C, C answers - GC2

User presses transfer key to complete transfer

JTAPI Event received to CallObservers at A and B1'

GC-1 CiscoTransferStartedEv (ControllerAddress=B1,

ControllerTerminalConnection= TC at TB1', FinalCall=GC1,

TransferredCall= null)

GC1- TermConnDroppedEv for TB1' Cause: CAUSE_NORMAL

GC1- CallCtlTermConnDroppedEv for TB1' Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER

GC-1 ConnDisconnectedEv for B1 Cause: CAUSE_UNKNOWN

GC-1 CallCtlConnDisconnectedEv for B1 Cause: CAUSE_UNKNOWN CallControlCause: CAUSE_TRANSFER

GC-1 ConnCreatedEv for C Cause: CAUSE_NORMAL

GC-1 ConnConnectedEv for C Cause: CAUSE_NORMAL

GC-1 CallCtlConnEstablishedEv for C Cause:

CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER

GC-1 CiscoTransferEndEv

Calling=A

Called=B1

CurrCalling=A

CurrCalled=B1

LRP=B1

Scenario:3

Application is observing A, B1', B2':

A calls B1, B1 answers - GC1

User presses transfer key on Cisco Unified IP 7931G phone and dials C, call initiated from B2 to C:

B2 calls C, C answers - GC2

User presses transfer key to complete transfer

JTAPI Event received to CallObserver at A and B1'

GC-1 CiscoTransferStartedEv (ControllerAddress=B1,

ControllerTerminalConnection= TC at TB1', FinalCall=GC1, TransferredCall= GC2)

GC1- TermConnDroppedEv for TB1' Cause: CAUSE_NORMAL

GC1- CallCtlTermConnDroppedEv for TB1' Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER

GC-1 ConnDisconnectedEv for B1 Cause: CAUSE_UNKNOWN

GC-1 CallCtlConnDisconnectedEv for B1 Cause: CAUSE_UNKNOWN CallControlCause: CAUSE_TRANSFER

GC-1 ConnCreatedEv for C Cause: CAUSE_NORMAL GC-1 ConnConnectedEv for C Cause: CAUSE_NORMAL

GC-1 CallCtlConnEstablishedEv for C Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER

GC2- ConnDisconnectedEv for B2 Cause: CAUSE_NORMAL

GC2- CallCtlConnDisconnectedEv for B2 Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER

Calling=A

Called=B1

CurrCalling=A

CurrCalled=B1

LRP=B1

 

GC2- TermConnDroppedEv for TB2' Cause: CAUSE_NORMAL

GC2- CallCtlTermConnDroppedEv for TB2' Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER

GC2- ConnDisconnectedEv for C Cause: CAUSE_NORMAL

GC2- CallCtlConnDisconnectedEv for C Cause: CAUSE_NORMAL

CallControlCause: CAUSE_TRANSFER

GC2- CallInvalidEv Cause: CAUSE_NORMAL

GC-1 CiscoTransferEndEv

CallControlCause: CAUSE_TRANSFER

GC2- CallInvalidEv Cause: CAUSE_NORMAL

GC-1 CiscoTransferEndEv

 

Scenario:4

Application is observing A, B1', B2' and C:

A calls B1, B1 answers - GC1

User presses transfer key on Cisco Unified IP 7931G phone and dials C, call initiated from B2 to C:

B2 calls C, C answers - GC2

User presses transfer key to complete transfer

JTAPI Event received to CallObserver at A, B1', B2' and C

GC-1 CiscoTransferStartedEv (ControllerAddress=B1,

ControllerTerminalConnection=TC at TB1', FinalCall=GC1,

TransferredCall= GC2)

GC1- TermConnDroppedEv for TB1' Cause: CAUSE_NORMAL

GC1- CallCtlTermConnDroppedEv for TB1' Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER

GC-1 ConnDisconnectedEv for B1 Cause: CAUSE_UNKNOWN

GC-1 CallCtlConnDisconnectedEv for B1 Cause: CAUSE_UNKNOWN CallControlCause: CAUSE_TRANSFER

GC-1 ConnCreatedEv for C Cause: CAUSE_NORMAL

GC-1 ConnConnectedEv for C Cause: CAUSE_NORMAL

GC-1 CallCtlConnEstablishedEv for C Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER

GC1- TermConnCreatedEv CT Cause: Other: 31

GC1- TermConnActiveEv CT Cause: CAUSE_NORMAL

GC1- CallCtlTermConnTalkingEv CT Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER

Calling=A

Called=B1

CurrCalling=A

CurrCalled=B1

LRP=B1

 

GC2- CiscoCallChangedEv for C Cause: CAUSE_NORMAL

GC2- TermConnDroppedEv for TB2' Cause: CAUSE_NORMAL

GC2- CallCtlTermConnDroppedEv for TB2' Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER

GC2- ConnDisconnectedEv for B2 Cause: CAUSE_NORMAL

GC2- CallCtlConnDisconnectedEv for B2 Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER

GC2- TermConnDroppedEv for CT Cause: CAUSE_NORMAL

GC2- CallCtlTermConnDroppedEv for CT Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER

GC2- ConnDisconnectedEv for C Cause: CAUSE_NORMAL

GC2- CallCtlConnDisconnectedEv for

C Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER

GC2- CallInvalidEv Cause: CAUSE_NORMAL

GC-1 CiscoTransferEndEv

 

Scenario:5

Application is observing C:

A calls B1, B1 answers - GC1

User presses transfer key on Cisco Unified IP 7931G phone and

dials C, call initiated from B2 to C:

B2 calls C, C answers - GC2

User presses transfer key to complete transfer

JTAPI Event received to CallObserver at C

GC1- CallActiveEv for callID=101 Cause: CAUSE_NEW_CALL

GC1- ConnCreatedEv for C Cause: CAUSE_NORMAL

GC1- ConnCreatedEv for B2 Cause: CAUSE_NORMAL

GC-1CiscoTransferStartEv (ControllerAddress=B1,

ControllerTerminalConnection=Null, FinalCall=GC1,

TransferredCall= GC2) Cause: CAUSE_NORMAL

GC1- ConnConnectedEv for C Cause: CAUSE_NORMAL

GC1- CallCtlConnEstablishedEv for C Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER

GC1- TermConnCreatedEv CT Cause: Other: 31

GC1- TermConnActiveEv CT Cause: CAUSE_NORMAL

GC1- CallCtlTermConnTalkingEv CT Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER

Calling=B2

Called=C

CurrCalling=A

CurrCalled=C

LRP=B1

 

GC2- CiscoCallChangedEv for C Cause: CAUSE_NORMAL

GC2- ConnDisconnectedEv for B2 Cause: CAUSE_NORMAL

GC2- CallCtlConnDisconnectedEv for B2 Cause: CAUSE_NORMAL

GC2- TermConnDroppedEv for CT Cause: CAUSE_NORMAL

GC2- CallCtlTermConnDroppedEv for CT Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER

CallControlCause: CAUSE_TRANSFER

GC2- ConnDisconnectedEv for C Cause: CAUSE_NORMAL

GC2-

CallCtlConnDisconnectedEv for C Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER

GC2- CallInvalidEv Cause: CAUSE_NORMAL

GC1- ConnDisconnectedEv for B2 Cause: CAUSE_NORMAL

GC1- CallCtlConnDisconnectedEv for B2 Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER

GC1- 1 CiscoTransferEndEv Cause: CAUSE_NORMAL

 
 

GC1- ConnCreatedEv for A Cause: CAUSE_NORMAL

GC1- ConnConnectedEv for A Cause: CAUSE_NORMAL

GC1- CallCtlConnEstablishedEv for A Cause: CAUSE_NORMAL

GC1- ConnConnectedEv for B2 Cause: CAUSE_NORMAL

GC1- CallCtlConnEstablishedEv for B2 Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER

CallControlCause: CAUSE_TRANSFER

 

Scenario:6

Application is observing both A and C:

A calls B1, B1 answers - GC1

User presses transfer key on Cisco Unified IP 7931G phone and

dials C, call initiated from B2 to C:

B2 calls C, C answers - GC2

User presses transfer key to complete transfer

JTAPI events at observer of A & C:

GC-1CiscoTransferStartEv (ControllerAddress=B1,

ControllerTerminalConnection=Null, FinalCall=GC1,

TransferredCall= GC2) Cause: CAUSE_NORMAL

GC2- CiscoCallChangedEv for C Cause: CAUSE_NORMAL

GC2- ConnDisconnectedEv for B2 Cause: CAUSE_NORMAL

GC2- CallCtlConnDisconnectedEv for B2 Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER

GC2- TermConnDroppedEv for CT Cause: CAUSE_NORMAL

GC2- CallCtlTermConnDroppedEv for CT Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER

GC2- ConnDisconnectedEv for C Cause: CAUSE_NORMAL

GC2- CallCtlConnDisconnectedEv for C Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER

GC2- CallInvalidEv Cause: CAUSE_NORMAL

GC1- 1 CiscoTransferEndEv Cause: CAUSE_NORMAL

Calling=A

Called=B1

CurrCalling=A

CurrCalled=C

LRP=B1

 

GC1- ConnCreatedEv for C Cause: CAUSE_NORMAL

GC1- ConnConnectedEv for C Cause: CAUSE_NORMAL

GC1- CallCtlConnEstablishedEv for C Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER

GC1- TermConnCreatedEv CT Cause: Other: 31

GC1- TermConnActiveEv CT Cause: CAUSE_NORMAL

GC1- CallCtlTermConnTalkingEv CT Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER NEW META