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

Message Sequence Charts

Table Of Contents

Message Sequence Charts

Backward Compatibility Enhancements

Barge and Privacy

Barge

CBarge

Privacy

Call Control Discovery

CallFwdAll Keys Press Notification

CallSelect and UnSelect

Conference and Join

Join/Arbitrary Conference

Consult Conference

Join Across Lines with Enhancements

Device and Line Restriction

Device State Server

Do Not Disturb

DND-R

Dynamic CTIPort Registration Per Call

End to End Call Tracing

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

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

Partition Support

Using getPartition() API

Using getAddress (String number, String partition)

Park DN

Partition Change

JTAPI Partition Support

QoS Support

JTAPI QoS

QSIG Path Replacement

Recording and Monitoring

Redirect Set OriginalCalledID

Secure Conferencing

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

SIP REPLACE

SIP REFER

IN-Dialog REFER Scenario

OutOfDialog Refer

SIP 3XX Redirection

SIP Support

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

Verification Involving PSTN Reachability


Message Sequence Charts


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

Backward Compatibility Enhancements

Barge and Privacy

Call Control Discovery

Call Pickup

Conference and Join

Device and Line Restriction 

Device State Server

Do Not Disturb

Dynamic CTIPort Registration Per Call

End to End Call Tracing

External Call Control

Extension Mobility Cross Cluster

Hairpin Support

Half Duplex Media

Hunt List

iSac Codec

JTAPI Cisco Unified IP 7931G Phone Interaction

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

Modifying Calling Number

Partition Support

QoS Support

QSIG Path Replacement

Recording and Monitoring

Redirect Set OriginalCalledID

Secure Conferencing

Secured Monitoring and Recording

Shared Line Support

Single Step Transfer

SIP REPLACE

SIP Support

SRTP Key Material

Super Provider Message Flow

Support for Cisco Unified IP Phone 6901, page 3-117

TLS Security

Transfer and Direct Transfer

Unicode Support

Verification Involving PSTN Reachability

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.

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


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.

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


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


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

GC-1 ConnDisconnectedEv for B1 -GC1 Cause: CAUSE_UNKNOWN

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

 

Scenario:7

Application is observing A:

A calls B1, B1 answers - GC1

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

dials C, call initiated from B2 to C:

B2 calls C, C answers - GC2

User presses conference key to complete conference

JTAPI Event received to CallObserver at A

GC-1 CiscoConferenceStartedEv (ControllerAddress=B1,

ControllerTerminalConnection=Null, FinalCall=GC1, ConsultCall= null)

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_CONFERENCE

GC-1 CiscoConferenceEndEv

Calling=A

Called=B1

CurrCalling=A

CurrCalled= Conference

LRP=B1

Scenario:8

Application is observing A, B1':

A calls B1, B1 answers - GC1

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

dials C, call initiated from B2 to C:

B2 calls C, C answers - GC2

User presses conference key to complete conference

JTAPI Event received to CallObserver at A

GC-1 CiscoConferenceStartedEv (ControllerAddress=B1,

ControllerTerminalConnection=TC at TB1', FinalCall=GC1,

ConsultCall= null)

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_CONFERENCE

GC1 TermConnPassiveEv TB1'

GC1 CallCtlTermConnBridgedEv TB1'

GC-1 CiscoConferenceEndEv

Calling=A

Called=B1

CurrCalling=A

CurrCalled= Conference

LRP=B1

Scenario:9

Application is observing

A, B1', B2':

A calls B1, B1 answers - GC1

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

B2 calls C, C answers - GC2

User presses conference key to complete conference

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

GC-1 CiscoConferenceStartedEv (ControllerAddress=B1,

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

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_CONFERENCE

GC1 TermConnPassiveEv - TB1'

GC1 CallCtlTermConnBridgedEv - TB1'

GC2- TermConnDroppedEv for TB2' Cause: CAUSE_NORMAL

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

GC2- ConnDisconnectedEv for B2 Cause: CAUSE_NORMAL

GC2- CallCtlConnDisconnectedEv for B2 Cause: CAUSE_NORMAL CallControlCause: CAUSE_CONFERENCE

Calling=A

Called=B1

CurrCalling=A

CurrCalled= Conference

LRP=B1

 

GC2- ConnDisconnectedEv for C Cause: CAUSE_NORMAL

GC2- CallCtlConnDisconnectedEv for C Cause: CAUSE_NORMAL CallControlCause: CAUSE_CONFERENCE

GC2- CallInvalidEv Cause: CAUSE_NORMAL

GC-1 CiscoConferenceEndEv

 

Scenario:10

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

A calls B1, B1 answers - GC1

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

B2 calls C, C answers - GC2

User presses conference key to complete conference

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

GC-1 CiscoConferenceStartedEv (ControllerAddress=B1,

ControllerTerminalConnection= TC at TB1', FinalCall=GC1,

ConsultCall= GC2)

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_CONFERENCE

GC1 TermConnPassiveEv - TB1'

GC1 CallCtlTermConnBridgedEv - TB1'

GC2- CiscoCallChangedEv for C Cause: CAUSE_NORMAL

GC2- TermConnDroppedEv for TB2' Cause: CAUSE_NORMAL

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

GC2- ConnDisconnectedEv for B2 Cause: CAUSE_NORMAL

GC2- CallCtlConnDisconnectedEv for B2 Cause: CAUSE_NORMAL CallControlCause: CAUSE_CONFERENCE

Calling=A

Called=B1

CurrCalling=A

CurrCalled= Conference

LRP=B1

 

GC2- TermConnDroppedEv for TC Cause: CAUSE_NORMAL

GC2- CallCtlTermConnDroppedEv for TC Cause: CAUSE_NORMAL CallControlCause: CAUSE_CONFERENCE

GC2- ConnDisconnectedEv for C Cause: CAUSE_NORMAL

GC2-

CallCtlConnDisconnectedEv for C Cause: CAUSE_NORMAL CallControlCause: CAUSE_CONFERENCE

GC2- CallInvalidEv Cause: CAUSE_NORMAL

GC-1 CiscoConferenceEndEv

 

Scenario:11

Application is observing C:

A calls B1, B1 answers - GC1

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

B2 calls C, C answers - GC2

User presses conference key to complete conference.

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-1CiscoConferenceStartEv (ControllerAddress=B1,

ControllerTerminalConnection=Null, FinalCall=GC1,

ConsultCall= GC2) Cause: CAUSE_NORMAL

GC1- ConnConnectedEv for C Cause: CAUSE_NORMAL

GC1- CallCtlConnEstablishedEv for C Cause: CAUSE_NORMAL CallControlCause: CAUSE_CONFERENCE

GC1- TermConnCreatedEv CT Cause: Other: 31

GC1- TermConnActiveEv CT Cause: CAUSE_NORMAL

GC1- CallCtlTermConnTalkingEv CT Cause: CAUSE_NORMAL CallControlCause: CAUSE_CONFERENCE

GC1- ConnConnectedEv for B2 Cause: CAUSE_NORMAL

GC1- CallCtlConnEstablishedEv for B2 Cause: CAUSE_NORMAL CallControlCause: CAUSE_CONFERENCE

Calling=B2

Called=C

CurrCalling=A

CurrCalled= Conference

LRP=B1

 

GC2- CiscoCallChangedEv for C Cause: CAUSE_NORMAL

GC2- ConnDisconnectedEv for B2 Cause: CAUSE_NORMAL

GC2- CallCtlConnDisconnectedEv for B2 Cause: CAUSE_NORMAL CallControlCause: CAUSE_CONFERENCE

GC2- TermConnDroppedEv for CT Cause: CAUSE_NORMAL

GC2- CallCtlTermConnDroppedEv for CT Cause: CAUSE_NORMAL CallControlCause: CAUSE_CONFERENCE

GC2- ConnDisconnectedEv for C Cause: CAUSE_NORMAL

GC2- CallCtlConnDisconnectedEv for C Cause: CAUSE_NORMAL CallControlCause: CAUSE_CONFERENCE

GC2- CallInvalidEv Cause: CAUSE_NORMAL

GC1- ConnDisconnectedEv for B2 Cause: CAUSE_NORMAL

GC1- CallCtlConnDisconnectedEv for B2 Cause: CAUSE_NORMAL CallControlCause: CAUSE_CONFERENCE

GC1- ConnCreatedEv for A Cause: CAUSE_NORMAL

GC1- ConnConnectedEv for A Cause: CAUSE_NORMAL

 
 

GC1- CallCtlConnEstablishedEv for A Cause: CAUSE_NORMAL CallControlCause: CAUSE_CONFERENCE

GC1- ConnCreatedEv for B1 Cause: CAUSE_NORMAL

GC1- ConnConnectedEv for B1 Cause: CAUSE_NORMAL

GC1- CallCtlConnEstablishedEv for B1 Cause: CAUSE_NORMAL CallControlCause: CAUSE_CONFERENCE

GC1- 1 CiscoConferenceEndEv Cause: CAUSE_NORMAL

 

Scenario:12

Application is observing both A and C:

A calls B1, B1 answers - GC1

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

B2 calls C, C answers - GC2

User presses conference key to complete conference.

JTAPI events at observer of A & C:

GC-1CiscoConferenceStartEv (ControllerAddress=B1,

ControllerTerminalConnection=Null, FinalCall=GC1,

ConsultCall= 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_CONFERENCE

GC2- TermConnDroppedEv for CT Cause: CAUSE_NORMAL

GC2- CallCtlTermConnDroppedEv for CT Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRAN

CAUSE_CONFERENCE SFER

GC2- ConnDisconnectedEv for C Cause: CAUSE_NORMAL

GC2- CallCtlConnDisconnectedEv for C Cause: CAUSE_NORMAL CallControlCause: CAUSE_CONFERENCE

GC2- CallInvalidEv Cause: CAUSE_NORMAL

GC1- ConnCreatedEv for C Cause: CAUSE_NORMAL

GC1- ConnConnectedEv for C Cause: CAUSE_NORMAL

GC1- CallCtlConnEstablishedEv for C Cause: CAUSE_NORMAL CallControlCause: CAUSE_CONFERENCE

Calling=A

Called=B1

CurrCalling=A

CurrCalled= Conference

LRP=B1

 

GC1- TermConnCreatedEv CT Cause: Other: 31

GC1- TermConnActiveEv CT Cause: CAUSE_NORMAL

GC1- CallCtlTermConnTalkingEv CT Cause: CAUSE_NORMAL CallControlCause: CAUSE_CONFERENCE

GC1- 1 CiscoConferenceEndEv Cause: CAUSE_NORMAL

 

Locale Infrastructure Development Scenarios

Scenario 1— JTAPI client machine has connectivity to CallManager TFTP Server

During install, JTAPI client would prompt user to enter TFTP IP address.

TFTP-IP Address is stored in JTAPI.ini parameter.

JTAPI Preferences application is run first time, it will take user to language tab to language selection.

User can select language for running JTAPI Preference application.

JTAPI Preference application is run second time, it will present UI in the language that user selected before.

Scenario 2— JTAPI client machine doesn't have connectivity to CallManager TFTP Server

During install JTAPI Client would prompt user to Enter TFTP-IP Address

TFTP-IP Address is stored in JTAPI.ini parameter.

JTAPI Preferences application is run first time, it will take user to language tab to language selection but user will have only English language to select.

JTAPI Preference application is run second time, it will present UI in the English languages.

TFTP connectivity is restored. Now JTAPI Preferences UI is run, it will take user to language selection

Scenario 3—JTAPI client machine has connectivity to CallManager TFTP Server

During install JTAPI Client would prompt user to Enter TFTP-IP Address

TFTP-IP Address is stored in JTAPI.ini parameter.

JTAPI Preferences application is run first time, it will take user to language tab to language selection.

User can select language for running JTAPI Preference application.

JTAPI Preference application is run second time, it will present UI in the language that user selected before.

Now new locale files are available with added support for a new languages.

User runs JTAPI Preferences application, JTAPI Preferences application would notify user about available.

Application restart JTAPI Preferences application, user will be support for new language.

Calling Party Normalization

Scenario 1—Incoming call from a PSTN Number (Local) to JTAPI Observed terminal.

Action
Events
Call Info

A call is offered from a PSTN Number [55555555] A & the Number type is [Subscriber] through the gateway to a JTAPI Observed Terminal [2222] B.

NEW META EVENT_________
META_CALL_STARTINGCallActiveEv 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 (55555555)

Called: B (2222)

getModifiedCallingAddress (): A (55555555)

getModifiedCalledAddress (): B (2222.)

getCurrentCalledAddress(): B (2222)

getCurrentCalledPartyInfo(): B (2222)

getGlobalizedCallingParty: A +140855555555

getCurrentCallingPartyInfoNumberType().getNumberType() would return: Subscriber


Scenario Two—Incoming call from a National PSTN Number to JTAPI Observed terminal.

Action
Events
Call Info

A call is offered from a Dallas PSTN Number [55555555] A & the Number type is [National] through a gateway to a JTAPI Observed Terminal [2222] 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

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

Called: B (2222)

getModifiedCallingAddress (): 97255555555

getModifiedCalledAddress (): 2222

getCurrentCalledAddress(): 2222

getCurrentCalledPartyInfo(): 2222

getGlobalizedCallingParty (): +197255555555

getCurrentCallingPartyInfoNumberType().getNumberType() would return: National


Scenario Three—Incoming call from Inter-National PSTN Number to JTAPI Observed terminal.

Action
Events
Call Info

A Call is offered from India PSTN Number [918028520261] & the Number type is [Inter-national] through a San Jose Gateway to a JTAPI observed Terminal [2222]

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

Called: B (2222)

getModifiedCallingAddress (): 918028520261

getModifiedCalledAddress (): 2222

getCurrentCalledAddress(): 2222

getCurrentCalledPartyInfo(): 2222

getGlobalizedCallingParty (): +918028520261

getCurrentCallingPartyInfoNumberType().getNumberType() would return: Inter-National


Scenario Four—Outgoing call from a JTAPI Observed Terminal to a PSTN number [SUBSCRIBER]

Action
Events
Call Info

A call is initiated from a JTAPI Observed Terminal 2222 through a San Jose gateway to a PSTN number [44444444] and the Number type is [SUBSCRIBER]

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

Called: B (44444444)

getModifiedCallingAddress (): 2222

getModifiedCalledAddress (): 44444444

getCurrentCalledAddress(): 44444444

getCurrentCalledPartyInfo(): 44444444

getGlobalizedCallingParty (): 2222

getCurrentCallingPartyInfoNumberType ().getNumberType () would return: Unknown.


Scenario Five—Outgoing call from a JTAPI Observed Terminal to a National PSTN number.

Action
Events
Call Info

A call is initiated from a JTAPI Observed Terminal 2222 through a San Jose gateway to a Dallas PSTN number [97244444444] & the Number type is [NATIONAL]

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

Called: B (97244444444)

getModifiedCallingAddress (): 2222

getModifiedCalledAddress (): 97244444444

getCurrentCalledAddress(): 97244444444

getCurrentCalledPartyInfo(): 97244444444

getGlobalizedCallingParty (): 2222 getCurrentCallingPartyInfoNumberType().getNumberType() would return: Unknown.


Scenario Six—Outgoing call from a JTAPI Observed Terminal to Inter-National PSTN number.

Action
Events
Call Info

A call is initiated from a JTAPI Observed Terminal 2222 through a San Jose gateway to India PSTN number [918028520261] & the Number type is [INTERNATIONAL]

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

Called: B (918028520261)

getModifiedCallingAddress (): 2222

getModifiedCalledAddress (): 918028520261

getCurrentCalledAddress():918028520261

getCurrentCalledPartyInfo(): 918028520261

getGlobalizedCallingParty (): 2222

getCurrentCallingPartyInfoNumberType().getNumberType() would return: Unknown.


Scenario Seven—Incoming call from a PSTN Redirected to another PSTN by a JTAPI Observed Terminal.

Action
Events
Call Info

A call is offered from PSTN [55555555] through a San Jose

NEW META EVENT_________
META_CALL_STARTING

Calling: A (55555555)
Called: B (2222)

Gateway to a JTAPI observed terminal [2222] which redirects the call to another San Jose PSTN [44444444].

In CallState [Idle] the fwdDestinationAddress (Redirect Address) should be a minus (-).

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

getModifiedCallingAddress (): 55555555

getModifiedCalledAddress (): 2222

getCurrentCalledAddress(): 2222

getCurrentCalledPartyInfo(): 2222

getGlobalizedCallingParty (): +140855555555

getCurrentCallingPartyInfoNumberType().getNumberType() would return: SUBSCRIBER

destinationAddress: 44444444.

getCurrentCallingPartyInfoNumberType().getNumberType() would return: Unknowns

 

TermConnCreatedEv for B Cause: CAUSE_NORMAL

TermConnRingingEv for B Cause: CAUSE_NORMAL

CallCtlTermConnTalkingEv Cause: CAUSE_NORMAL

CallRedirectReq Redirect Address = C CallRedirectRes

ConnCreatedEv at C Cause: CAUSE_REDIRECTED

ConnInProgress Calling party:
A, Called Party: C, LRP: B

CallRedirectRes CallStateChangedEv (IDLE) Reason: REDIRECT

 

Scenario Eight—Incoming call from a PSTN Number (Local) to JTAPI Observed terminal who transfer to another JTAPI observed terminal.

Action
Events
Call Info

A call is offered from a PSTN Number [55555555] A & the Number type is [Subscriber] through a San Jose gateway to a JTAPI observed Terminal [1111] X which transfers the call to another JTAPI Observed Terminal [2222] B

After Transfer:

GC1:

CiscoTransferStartEv

ConnCreatedEv for B

ConnConnectedEv for B

CallCtlConnEstablishedEv for B

TermConnDroppedEv for X

ConnDisconnectedEv for X

CallCtlConnDisconnectedEv for X

CiscoTransferStartEv

GC2:

CiscoTransferStartEv

TermConnDroppedEv for X

ConnDisconnectedEv for X

CallCtlConnDisconnectedEv for X

CiscoTransferStartEv

After Transfer:

Calling: A (55555555)

Called: B (2222)

getModifiedCallingAddress (): A (+140855555555)

getModifiedCalledAddress (): B (2222.)

getCurrentCalledAddress(): B (2222)

getCurrentCalledPartyInfo(): B (2222)

getGlobalizedCallingParty: A +140855555555

getCurrentCallingPartyInfoNumberType().getNumberType() would return: Subscriber


Click to Conference

A, B, C and D are addresses and TermA, TermB, TermC and TermD are corresponding terminals.

Action
Events
Call Info

A and B are in a call GC1 created using click-to-call. User adds C to the conference call. GC2 is the initial call at C. Application is observing only C

GC2: CallActiveEv Cause: CAUSE_NEW_CALL CiscoFeatureReason: REASON_CONFERENCE

callingAddress=unknown calledAddress=C

CurrentCalling=unknown

CurrentCalled=C

 

GC2: ConnCreatedEv C CiscoFeatureReason=REASON_CONFERENCE Cause: CAUSE_NORMAL

 
 

GC2: ConnInProgressEv C CiscoFeatureReason=REASON_CONFERENCE Cause: CAUSE_NORMAL

 
 

GC2: CallCtlConnOfferedEv C CiscoFeatureReason=REASON_CONFERENCE Cause: CAUSE_NORMAL

 
 

GC2: ConnAlertingEv C CiscoFeatureReason=REASON_CONFERENCE Cause: CAUSE_NORMAL

 
 

GC2: CallCtlConnAlertingEv C CiscoFeatureReason=REASON_CONFERENCE Cause: CAUSE_NORMAL

 
 

GC2: TermConnCreatedEv TermC

 
 

GC2: TermConnRingingEv TermC CiscoFeatureReason=REASON_CONFERENCE Cause: CAUSE_NORMAL

 
 

GC2: CallCtlTermConnRingingEv TermC CiscoFeatureReason=REASON_CONFERENCE Cause: CAUSE_NORMAL

 
 

CiscoCallChangedEv GC2->GC1 CiscoFeatureReason = REASON_CLICK_TO_CONFERENCE Cause: CAUSE_NORMAL

 
 

GC1: CallActiveEv Cause: CAUSE_NEW_CALL CiscoFeatureReason = REASON_CLICK_TO_CONFERENCE

 
 

GC1: ConnCreatedEv C CiscoFeatureReason = REASON_CLICK_TO_CONFERENCE Cause: CAUSE_NORMAL

 
 

GC1: ConnAlertingEv C GC1 CiscoFeatureReason = REASON_CLICK_TO_CONFERENCE Cause: CAUSE_NORMAL

 
 

GC1: CallCtlConnAlertingEv C GC1 CiscoFeatureReason = REASON_CLICK_TO_CONFERENCE Cause: CAUSE_NORMAL

 
 

GC1: TermConnCreatedEv TermC

 
 

GC1: TermConnRingingEv TermC CiscoCallChangedEv GC2->GC1 CiscoFeatureReason = REASON_CLICK_TO_CONFERENCE Cause: CAUSE_NORMAL

 
 

GC2: TermConnDroppedEv TermC CiscoFeatureReason = REASON_CLICK_TO_CONFERENCE Cause: CAUSE_NORMAL

 
 

GC2: CallCtlTermConnDroppedEv TermC CiscoFeatureReason = REASON_CLICK_TO_CONFERENCE Cause: CAUSE_NORMAL

 
 

GC2: ConnDisconnectedEv C CiscoFeatureReason = REASON_CLICK_TO_CONFERENCE Cause: CAUSE_NORMAL

 
 

GC2: CallCtlConnDisconnectedEv C CiscoFeatureReason = REASON_CLICK_TO_CONFERENCE Cause: CAUSE_NORMAL

 
 

GC2: CallInvalidEv CiscoFeatureReason = REASON_CLICK_TO_CONFERENCE Cause: CAUSE_NORMAL

 
 

GC1: ConnCreatedEv B CiscoFeatureReason = REASON_CLICK_TO_CONFERENCE Cause: CAUSE_NORMAL

 
 

GC1: ConnConnectedEv B CiscoFeatureReason = REASON_CLICK_TO_CONFERENCE Cause: CAUSE_NORMAL

 
 

GC1: CallCtlConnEstablishedEv B CiscoFeatureReason = REASON_CLICK_TO_CONFERENCE Cause: CAUSE_NORMAL

 
 

GC1: ConnCreatedEv A CiscoFeatureReason = REASON_CLICK_TO_CONFERENCE Cause: CAUSE_NORMAL

 
 

GC1: ConnConnectedEv A CiscoFeatureReason = REASON_CLICK_TO_CONFERENCE Cause: CAUSE_NORMAL

 
 

GC1: CallCtlConnEstablishedEv A CiscoFeatureReason = REASON_CLICK_TO_CONFERENCE Cause: CAUSE_NORMAL

 
 

GC1: ConnConnectedEv C CiscoFeatureReason =REASON_NORMALCause: CAUSE_NORMAL

 
 

GC1: CallCtlConnEstablishedEv C CiscoFeatureReason =REASON_NORMALCause: CAUSE_NORMAL

 
 

GC1: TermConnTalkingEv TermC CiscoFeatureReason =REASON_NORMALCause: CAUSE_NORMAL

 

A calls B using click-to-call - GC1. A adds C to the call using click-2-conf. Application has call observer on A

GC1: CallActiveEv Cause: CAUSE_NEW_CALL CiscoFeatureReason: REASON_REFER

Calling address: A

Called address: B

Current calling: A

Current called: B

Last redirecting party=null

After C is conferenced, callinfo is not applicable.

 

GC1: ConnCreatedEv A CiscoFeatureReason= REASON_REFER Cause: CAUSE_NORMAL

 
 

GC1: ConnInProgressEv A CiscoFeatureReason= REASON_REFER Cause: CAUSE_NORMAL

 
 

GC1: CallCtlConnOfferedEv A CiscoFeatureReason= REASON_REFER Cause: CAUSE_NORMAL

 
 

GC1: ConnAlertingEv A CiscoFeatureReason=REASON_NORMAL Cause: CAUSE_NORMAL

 
 

GC1: CallCtlConnAlertingEv A CiscoFeatureReason=REASON_NORMAL Cause: CAUSE_NORMAL

 
 

GC1: TermConnCreatedEv TermA

 
 

GC1: TermConnRingingEv TermA CiscoFeatureReason=REASON_NORMAL Cause: CAUSE_NORMAL

 
 

GC1: CallCtlTermConnRingingEv TermA CiscoFeatureReason=REASON_NORMAL Cause: CAUSE_NORMAL

 
 

GC1: GC1: ConnConnectedEv A CiscoFeatureReason =REASON_NORMAL cause: CAUSE_NORMAL

 
 

GC1: CallCtlConnEstablishedEv A CiscoFeatureReason =REASON_NORMAL Cause: CAUSE_NORMAL

 
 

TermConnActiveEv TermA CiscoFeatureReason =REASON_NORMAL Cause: CAUSE_NORMAL

 
 

GC1: TermConnTalkingEv TermA CiscoFeatureReason =REASON_NORMAL Cause: CAUSE_NORMAL

 
 

GC1: ConnCreatedEv B CiscoFeatureReason= REASON_REFER Cause: CAUSE_NORMAL

 
 

GC1: ConnInProgressEv B CiscoFeatureReason= REASON_REFER Cause: CAUSE_NORMAL

 
 

GC1: CallCtlConnOfferedEv B CiscoFeatureReason= REASON_REFER Cause: CAUSE_NORMAL

 
 

GC1: ConnAlertingEv B CiscoFeatureReason= REASON_NORMAL Cause: CAUSE_NORMAL

 
 

GC1: CallCtlConnAlertingEv B CiscoFeatureReason= REASON_NORMAL Cause: CAUSE_NORMAL

 
 

GC1: GC1: ConnConnectedEv B CiscoFeatureReason = REASON_NORMAL: CAUSE_NORMAL

 
 

GC1: CallCtlConnEstablishedEv B CiscoFeatureReason = REASON_NORMAL Cause: CAUSE_NORMAL

 
 

GC1: ConnCreatedEv C CiscoFeatureReason = REASON_CLICK_TO_CONFERENCE Cause: CAUSE_NORMAL

 
 

GC1: ConnAlertingEv C CiscoFeatureReason = REASON_CLICK_TO_CONFERENCE Cause: CAUSE_NORMAL

 
 

GC1: CallCtlConnAlertingEv TermC CiscoFeatureReason = REASON_CLICK_TO_CONFERENCE Cause: CAUSE_NORMAL

 

A consults with D-GC3. A completes conference. The events received by application remains the same (as that of consult conference).

GC1: TermConnHeldEv TermA

For consult call GC3: Calling address: A

Called address: D

Callinfo not applicable after conference is completed.

 

GC3: ConsultCallActiveEv

 
 

GC3: ConnCreatedEv A

 
 

GC3: ConnCreatedEv D

 
 

GC3: CallCtlConnAlerting D

 
 

GC3: ConnConnectedEv D

 
 

GC3: CallCtlConnEstablishedEv B

 
 

CiscoConferenceStartEv GC3->GC1

 
 

GC3: CallCtlConnDisconnectedEv A

 
 

GC3: CallCtlConnDisconnectedEv D

 
 

GC1: ConnCreatedEv D

 
 

GC1: CallCtlConnEstablishedEv D

 
 

GC1: TermConnTalkingEv TermA

 
 

GC3: CallInvalidEv

 
 

CiscoConferenceEndEvent

 

User drops D using click-2-conf feature

User drops C using click-2-conference interface

GC1: ConnDisconnectedEv D CiscoFeatureReason = REASON_CONFERENCE Cause: CAUSE_NORMAL

Calling address: A

Called address: B

 

GC1: CallCtlConnDisconnectedEv D CiscoFeatureReason = REASON_CONFERENCE Cause: CAUSE_NORMAL

 
 

GC1: ConnDisconnectedEv C CiscoFeatureReason = REASON_CONFERENCE Cause: CAUSE_NORMAL

 
 

GC1: CallCtlConnDisconnectedEv C CiscoFeatureReason = REASON_CONFERENCE Cause: CAUSE_NORMAL

 

Drop all parties a conference.

A calls B using click-2-call. User adds C to the conference using click-2-conference.

All parties are dropped using click to conference.

Application has call observers on A, B and C.

GC1: CallActiveEv Cause: CAUSE_NEW_CALL CiscoFeatureReason: REASON_REFER

GC1: ConnCreatedEv A Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_REFER

Calling address: A

Called address: B

GC2: Calling address=unknown

Called address: C

 

GC1: ConnInProgressEv A Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_REFER

 
 

GC1: CallCtlConnOfferedEv A Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_REFER

 
 

GC1: ConnAlertingEv A Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_REFER

 
 

GC1: CallCtlConnAlertingEv A Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_REFER

 
 

GC1: TermConnCreatedEv TermA

 
 

GC1: TermConnRingingEv TermA Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_NORMAL

 
 

GC1: CallCtlTermConnRingingEv TermA

 
 

GC1: ConnConnectedEv A Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_NORMAL

 
 

GC1: CallCtlConnEstablishedEv A Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_NORMAL

 
 

GC1: TermConnActiveEv TermA Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_NORMAL

 
 

GC1: CallCtlTermConnTalkingEv TermA Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_NORMAL

 
 

GC1: ConnCreatedEv B Cause: CAUSE_NORMAL CiscoFeatureReason:REASON_REFER

 
 

GC1: ConnInProgressEv B Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_REFER

 
 

GC1: CallCtlConnOfferedEv B Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_REFER

 
 

GC1: ConnAlertingEv B Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_NORMAL

 
 

GC1: CallCtlConnAlertingEv B Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_NORMAL

 
 

GC1: TermConnCreatedEv TermB Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_NORMAL

 
 

GC1: TermConnRingingEv TermB Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_NORMAL

 
 

GC1: CallCtlTermConnRingingEv TermB Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_NORMAL

 
 

GC1: ConnConnectedEv B Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_NORMAL

 
 

GC1: CallCtlConnEstablishedEv TermB Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_NORMAL

 
 

GC1: TermConnActiveEv TermB Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_NORMAL

 
 

GC1: CallCtlTermConnTalkingEv TermB Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_NORMAL

 
 

GC2: CallActiveEv Cause: CAUSE_NEW_CALL CiscoFeatureReason: REASON_CONFERENCE

 
 

GC2: ConnCreatedEv Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_CONFERENCE

 
 

GC2: ConnInProgressEv C Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_CONFERENCE

 
 

GC2: CallCtlConnOfferedEv C Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_CONFERENCE

 
 

GC2: ConnAlertingEv C Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_NORMAL

 
 

GC2: CallCtlConnAlertingEv C Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_NORMAL

 
 

GC2: TermConnCreatedEv TermC Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_NORMAL

 
 

GC2: TermConnRingingEv TermC Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_NORMAL

 
 

GC2: CallCtlTermConnRingingEv TermC Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_NORMAL

 
 

GC2: CiscoCallChangedEv GC2->GC1 Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_CLICK_TO_CONFERENCE

 
 

GC1: ConnCreatedEv C Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_CLICK_TO_CONFERENCE

 
 

GC1: ConnInProgressEv C Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_CLICK_TO_CONFERENCE

 
 

GC1: CallCtlConnOfferedEv C Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_CLICK_TO_CONFERENCE

 
 

GC1: ConnAlertingEv C Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_CLICK_TO_CONFERENCE

 
 

GC1: CallCtlConnAlertingEv C Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_CLICK_TO_CONFERENCE

 
 

GC1: TermConnCreatedEv TermC Cause: CAUSE_NORMAL CiscoFeatureReason REASON_CLICK_TO_CONFERENCE

 
 

GC1: TermConnRingingEv TermC Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_CLICK_TO_CONFERENCE

 
 

GC1: CallCtlTermConnRingingEv TermC Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_CLICK_TO_CONFERENCE

 
 

GC2: TermConnDroppedEv TermC Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_CLICK_TO_CONFERENCE

 
 

GC2: CallCtlTermConnDroppedEv TermC Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_CLICK_TO_CONFERENCE

 
 

GC2: ConnDisconnectedEv TermC Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_CLICK_TO_CONFERENCE

 
 

GC2: CallCtlConnDisconnectedEv TermC Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_CLICK_TO_CONFERENCE

 
 

GC2: CallInvalidEv Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_CLICK_TO_CONFERENCE

 
 

GC1: ConnConnectedEv C Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_CLICK_TO_CONFERENCE

 
 

GC1: CallCtlConnEstablishedEv C Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_CLICK_TO_CONFERENCE

 
 

GC1: TermConnActiveEv TermC Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_CLICK_TO_CONFERENCE

 
 

GC1: CallCtlTermConnTalkingEv TermC Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_CLICK_TO_CONFERENCE

 
 

All parties are dropped using click-2-conference

GC1: TermConnDroppedEv TermA Cause: CAUSE_NORMAL CiscoFeatureReason= REASON_CONFERENCE

 
 

GC1: CallCtlTermConnDroppedEv TermA Cause: CAUSE_NORMAL CiscoFeatureReason= REASON_CONFERENCE

 
 

GC1: ConnDisconnectedEv A Cause: CAUSE_NORMAL CiscoFeatureReason= REASON_CONFERENCE

 
 

GC1: CallCtlConnDisconnectedEv A Cause: CAUSE_NORMAL CiscoFeatureReason= REASON_CONFERENCE

 
 

GC1: TermConnDroppedEv TermC Cause: CAUSE_NORMAL CiscoFeatureReason= REASON_CONFERENCE

 
 

GC1: CallCtlTermConnDroppedEv TermC Cause: CAUSE_NORMAL CiscoFeatureReason= REASON_CONFERENCE

 
 

GC1: ConnDisconnectedEv C Cause: CAUSE_NORMAL CiscoFeatureReason= REASON_CONFERENCE

 
 

GC1: CallCtlConnDisconnectedEv C Cause: CAUSE_NORMAL CiscoFeatureReason= REASON_CONFERENCE

 
 

GC1: TermConnDroppedEv TermB Cause: CAUSE_NORMAL CiscoFeatureReason= REASON_CONFERENCE

 
 

GC1: CallCtlTermConnDroppedEv TermB Cause: CAUSE_NORMAL CiscoFeatureReason= REASON_CONFERENCE

 
 

GC1: ConnDisconnectedEv B Cause: CAUSE_NORMAL CiscoFeatureReason= REASON_CONFERENCE

 
 

GC1: CallCtlConnDisconnectedEv C Cause: CAUSE_NORMAL CiscoFeatureReason= REASON_CONFERENCE

 
 

GC1: CallInvalidEv

 

A calls B using click-to-call - GC1. A adds C to the call using click-2-conf. User drops party C. Application has call observer on C only.

GC1: TermConnDroppedEv TermC CiscoFeatureReason= REASON_CONFERENCE

NA

 

GC1: CallCtlTermConnDroppedEv TermC CiscoFeatureReason= REASON_CONFERENCE

 
 

GC1: ConnDisconnectedEv C CiscoFeatureReason= REASON_CONFERENCE

 
 

GC1: CallCtlConnDisconnectedEv C CiscoFeatureReason= REASON_CONFERENCE

 
 

GC1: ConnDisconnectedEv A CiscoFeatureReason= REASON_CONFERENCE

 
 

GC1: CallCtlConnDisconnectedEv A CiscoFeatureReason= REASON_CONFERENCE

 
 

GC1: ConnDisconnectedEv B CiscoFeatureReason= REASON_CONFERENCE

 
 

GC1: CallCtlConnDisconnectedEv B CiscoFeatureReason= REASON_CONFERENCE

 
 

GC1: CallInvalidEv

 

A calls B using GC1. Address C is configured on TermC1 and TermC2. Application has call observer on C

GC2: CallActiveEv CallActiveEv Cause: CAUSE_NEW_CALL CiscoFeatureReason: REASON_ CONFERENCE

Calling=unknown

Called=C

Last redirecting=null

User uses click-to-conference to C.

GC2: ConnCreatedEv C Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_ CONFERENCE

 
 

GC2: ConnInProgressEv C Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_ CONFERENCE

 
 

GC2: CallCtlConnOfferedEv C Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_ CONFERENCE

 
 

GC2: ConnAlertingEv C Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_ NORMAL

 
 

GC2: CallCtlConnAlertingEv C Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_ NORMAL

 
 

GC2: TermConnCreatedEv TermC1 Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_ NORMAL

 
 

GC2: TermConnRingingEv TermC1 Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_ NORMAL

 
 

GC2: TermConnCreatedEv TermC2 Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_ NORMAL

 
 

GC2: TermConnRingingEv TermC2 Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_ NORMAL

 
 

GC1: CallActiveEv Cause: CAUSE_NEW_CALL CiscoFeatureReason: REASON_ CLICK_TO_CONFERENCE

 
 

GC1: ConnCreatedEv C Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_ CLICK_TO_CONFERENCE

 
 

CiscoCallChangedEv GC2->GC1 TermConn TermC1 CiscoFeatureReason: REASON_CLICK_TO_CONFERENCE

 
 

GC1: ConnAlertingEv C Cause:CAUSE_NORMAL CiscoFeatureReason: REASON_ CLICK_TO_CONFERENCE

 
 

GC1: CallCtlConnAlertingEv C Cause:CAUSE_NORMAL CiscoFeatureReason: REASON_ CLICK_TO_CONFERENCE

 
 

GC1: TermConnCreatedEv TermC1 Cause:CAUSE_NORMAL CiscoFeatureReason: REASON_ CLICK_TO_CONFERENCE

 
 

GC1: TermConnRingingEv TermC1 Cause:CAUSE_NORMAL CiscoFeatureReason: REASON_ CLICK_TO_CONFERENCE

 
 

CiscoCallChangedEv GC2->GC1 TermConn TermC2 Cause:CAUSE_NORMAL CiscoFeatureReason: REASON_ CLICK_TO_CONFERENCE

 
 

GC1: TermConnCreatedEv TermC2 Cause:CAUSE_NORMAL CiscoFeatureReason: REASON_ CLICK_TO_CONFERENCE

 
 

GC1: TermConnRingingEv TermC2 Cause:CAUSE_NORMAL CiscoFeatureReason: REASON_ CLICK_TO_CONFERENCE

 
 

GC2: CallCtlConnDisconnectedEv C Cause:CAUSE_NORMAL CiscoFeatureReason: REASON_ CLICK_TO_CONFERENCE

 
 

GC2: TermConnDroppedEv TermC1 Cause:CAUSE_NORMAL CiscoFeatureReason: REASON_ CLICK_TO_CONFERENCE

 
 

GC2: TermConnDroppedEv TermC2 Cause:CAUSE_NORMAL CiscoFeatureReason: REASON_ CLICK_TO_CONFERENCE

 
 

GC2: CallInvalidEv

 
 

GC1: ConnCreatedEv B Cause:CAUSE_NORMAL CiscoFeatureReason: REASON_ CLICK_TO_CONFERENCE

 
 

GC1: ConnConnectedEv B Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_ CLICK_TO_CONFERENCE

 
 

GC1: CallCtlConnEstablishedEv B Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_ CLICK_TO_CONFERENCE

 
 

GC1: ConnCreatedEv A Cause:CAUSE_NORMAL CiscoFeatureReason: REASON_ CLICK_TO_CONFERENCE

 
 

GC1: ConnConnectedEv A Cause:CAUSE_NORMAL CiscoFeatureReason: REASON_ CLICK_TO_CONFERENCE

 
 

GC1: CallCtlConnEstablishedEv A Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_ CLICK_TO_CONFERENCE

 
 

GC1: ConnConnectedEv C Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_NORMAL

C answers at TermC1

 

GC1: CallCtlConnEstablishedEv C Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_NORMAL

 
 

GC1: CallCtlTermConnTalkingEv TermC1 Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_NORMAL

 
 

GC1: TermConnPassEv TermC2 Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_NORMAL Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_NORMAL

 
 

GC1: CallCtlTermConnInUseEv TermC2 Cause: CAUSE_NORMAL CiscoFeatureReason: REASON_NORMAL

 

Call Pickup

The basic test case for the fix was the following:

1. B and C are devices in a call pick up group. A is a device not in it.

2. A calls B.

3. C goes off-hook, and presses the Pickup softkey.

4. C is now on the call with A.

This test was run with variations in which devices were observed, and the full matrix was run. This included:

1. Observing A, B, and C

2. Observing A and B

3. Observing A and C

4. Observing B and C

5. Observing only A

6. Observing only B

7. Observing only C

Case 7, only observing C, was the primary concern for this fix, based on customer usage. The feature request was, when only observing C, being able to get information about the original called party (A) on Pickup. All test cases passed and the correct information was displayed for all of them.

For cases 3 and 4, the call information depends on the order of events that JTAPI delivers. If JTAPI delivers the GC1-CallInvalidEvent/CallObservationEndedEv events before the GC2-CiscoCallChangedEv, then the call information, such as calling and called addresses, will be what was seen in GC2. Conversely, if JTAPI delivers the GC1-CallInvalidEvent/CallObservationEndedEv events after the GC2-CiscoCallChangedEv, then the call information, such as calling and called addresses, will be what was seen in GC1.

As an example, if JTAPI delivers the GC1-CallInvalidEvent/CallObservationEndedEv events before the GC2-CiscoCallChangedEv, the Calling Address = C, Called Address = Pickup Number. If JTAPI delivers the GC1-CallInvalidEvent/CallObservationEndedEv events after the GC2-CiscoCallChangedEv, the Calling Address = A, Called Address = B.

These test cases were run with auto-pickup enabled and disabled, and there was much difference in the functionality of the two. Most of the test cases are enumerated below.

The basic callfrom A to B is the same in all cases, and is only shown in the first case below.

Scenario One

Observing all devices and auto-pickup enabled.

Action
Events
Call Info (GCID Info)

A goes off-hook and dials B (Basic Call) B is ringing. C goes off-hook and presses Pickup softkey. Connection for C is dropped, B is dropped / cleaned up, C connection on Call 1 is established

GC1-CallActiveEvent-NONE

Calling: A, CCalled: NONE

Calling: A, Called: NONE

 

GC1-ConnCreatedEvent-A

CAUSE_NEW_CALL

 

GC1-ConnConnectedEvent-A

REASON_NORMAL

 

GC1-CallCtlConnInitiatedEv-A

LRP: NONE

 

GC1-TermConnCreatedEvent

CCalling: A, CCalled: B

 

GC1-TermConnActiveEvent

Calling: A, Called: B

 

GC1-CallCtlTermConnTalkingEv

CCalling: C, CCalled: NONE

 

GC1-CallCtlConnDialingEv-A

CAUSE_NEW_CALL

 

GC1-CallCtlConnEstablishedEv-A

REASON_NORMAL

 

GC1-ConnCreatedEvent-B

LRP: NONE

 

GC1-ConnInprogressEvent-B

REASON_CALLPICKUP

 

GC1-CallCtlConnOfferedEv-B

CCalling: A, CCalled: C

 

GC1-ConnAlertingEvent-B

LRP: NONE

 

GC1-CallCtlConnAlertingEv

REASON_CALLPICKUP

 

GC1-TermConnCreatedEvent

CCalling: C, CCalled: NONE

 

GC1-TermConnRingingEvent

LRP: NONE

 

GC1-CallCtlTermConnRingingEv

REASON_NORMAL

 

GC2-CallActiveEvent-NONE

REASON_CALLPICKUP

 

GC2-ConnCreatedEvent-C

CCalling: A, CCalled: C

 

GC2-ConnConnectedEvent-C

REASON_NORMAL

 

GC2-CallCtlConnInitiatedEv-C

 
 

GC2-TermConnCreatedEvent

 
 

GC2-TermConnActiveEvent

 
 

GC2-CallCtlTermConnTalkingEv

 
 

GC2-CiscoCallChangedEv

 
 

GC1-ConnCreatedEvent-C

 
 

GC1-ConnConnectedEvent-C

 
 

GC1-CallCtlConnInitiatedEv-C

 
 

GC1-TermConnCreatedEvent

 
 

GC1-TermConnActiveEvent

 
 

GC1-CallCtlTermConnTalkingEv

 
 

GC2-TermConnDroppedEv

 
 

GC2-CallCtlTermConnDroppedEv

 
 

GC2-ConnDisconnectedEvent-C

 
 

GC2-CallCtlConnDisconnectedEv-C

 
 

GC2-CallInvalidEvent

 
 

GC2-CallObservationEndedEv

 
 

GC1-TermConnDroppedEv

 
 

GC1-CallCtlTermConnDroppedEv

 
 

GC1-ConnDisconnectedEvent-B

 
 

GC1-CallCtlConnDisconnectedEv-B

 
 

GC1-CallCtlConnEstablishedEv-C

 


Note Both B and C in the following scenarios have exactly the same behavior and events. Only the behavior of device C (the one picking up the call) changes.


Scenario Two

Observing all devices with auto-pickup disabled.

Action
Events
Call ID Info

C goes off-hook and presses Pickup softkey

Call 2 gets dropped or invalidated

C gets a connection on Call 1

B is dropped from Call 1

C is ringing

C is on call with A

GC2-CallActiveEvent

GC2-ConnCreatedEvent-C

GC2-ConnConnectedEvent-C

GC2-CallCtlConnInitiatedEv-C

GC2-TermConnCreatedEvent

GC2-TermConnActiveEvent

GC2-CallCtlTermConnTalkingEv

GC2-TermConnDroppedEv
GC2-CallCtlTermConnDroppedEv
GC2-ConnDisconnectedEvent-C
GC2-CallCtlConnDisconnectedEv-C
GC2-CallInvalidEvent
GC2-CallObservationEndedEv

GC1-ConnCreatedEvent-C
GC1-ConnInprogressEvent-C
GC1-CallCtlConnOfferedEv-C

GC1-TermConnDroppedEv
GC1-CallCtlTermConnDroppedEv
GC1-ConnDisconnectedEvent-B
GC1-CallCtlConnDisconnectedEv-B

GC1-ConnAlertingEvent-C
GC1-CallCtlConnAlertingEv-C
GC1-TermConnCreatedEvent
GC1-TermConnRingingEvent
GC1-CallCtlTermConnRingingEv

GC1-ConnConnectedEvent-C
GC1-CallCtlConnEstablishedEv-C
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv

CCalling C, CCalled: NONE

LRP: NONE

REASON_NORMAL

REASON_CALLPICKUP

CCalling A, CCalled: C

Calling: A, Called: C, LRP: B

REASON_CALLPICKUP

Calling A, CCalled: C

Calling: A, Called: C, LRP: B

REASON_CALLPICKUP

REASON_NORMAL

REASON_NORMAL


The flow of events differs greatly when the auto-pickup option is enabled or disabled. When Auto Call Pickup is disabled and a user presses the Pickup softkey (C), the phone rings. The user has to answer the phone as if it is a normal call. When the phone is ringing, the original call that was created when they went offhook is terminated, they are connected to the existing call, and the old party (B) is removed from the call. There is no CiscoCallChangedEv generated when Auto Call Pickup is disabled, because the call does not change, it is terminated before C joins the new call.

A Group Pickup scenario follows, during which the Group Pickup softkey is used in place of the Pickup softkey. This required actually dialing the number for the pickup group. Group Pickup also is subject to the Auto Call Pickup service parameter. The general flow and call events are identical to the normal Call Pickup scenarios, except with added events for the required dialing of the pickup number.

Scenario Three

Observing all devices with group pickup and auto-pickup enabled.

Action
Call Event
Call ID Info

C goes offhook and presses Group Pickup softkey





C is dialing the PU Number




C is added to the original call

Pickup added to original call

Pickup # is removed Call 2

C is dropped from Call 2





Pickup # is removed Call 1

B is dropped / invalidated

GC1 [add to others to clarify]


GC2-CallActiveEvent-NONE
GC2-ConnCreatedEvent-C
GC2-ConnConnectedEvent-C
GC2-CallCtlConnInitiatedEv-C
GC2-TermConnCreatedEvent
GC2-TermConnActiveEvent
GC2-CallCtlTermConnTalkingEv

GC2-CallCtlConnDialingEv-C
GC2-ConnCreatedEvent-PU
GC2-ConnInprogressEvent-PU
GC2-CallCtlConnEstablishedEv-C
GC2-CiscoCallChangedEv

GC1-ConnCreatedEvent-C
GC1-ConnCreatedEvent-PU
GC1-ConnConnectedEvent-C
GC1-CallCtlConnEstablishedEv-C
GC1-TermConnCreatedEvent
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv
GC1-ConnInprogressEvent-PU
GC1-CallCtlConnOfferedEv-PU

GC2-ConnDisconnectedEvent-PU
GC2-CallCtlConnDisconnectedEv-PU
GC2-TermConnDroppedEv
GC2-CallCtlTermConnDroppedEv
GC2-ConnDisconnectedEvent-C
GC2-CallCtlConnDisconnectedEv-C
GC2-CallInvalidEvent
GC2-CallObservationEndedEv

GC1-ConnDisconnectedEvent-PU
GC1-CallCtlConnDisconnectedEv-PU

GC1-TermConnDroppedEv
GC1-CallCtlTermConnDroppedEv
GC1-ConnDisconnectedEvent-B
GC1-CallCtlConnDisconnectedEv-B

CCalling: C, CCalled: NONE
LRP: NONE

REASON_NORMAL

CCalling: C, CCalled: NONE
REASON_CALLPICKUP
CCalling: C, CCalled: PU, LRP: PU

CCalling C, CCalled: PU
CCalling: A, CCalled: C, LRP: B
Calling: A, Called: B
REASON_CALLPICKUP





CCalling: A, CCalled: C, LRP:B
REASON_CALLPICKUP, LRP: PU

CCalling: C, CCalled: PU
REASON_CALLPICKUP

CCalling: A, CCalled C, LRP: B
REASON_CALLPICKUP


CCalling: A, CCalled C, LRP: B
REASON_CALLPICKUP


There are only a handful of changes for the above Group Pickup case, and they all directly relate to the extra required step of dialing the pickup number.

Scenario Four

Observing all devices with Group Pickup and Auto-Pickup disabled.

Action
Event
Call Info

C goes offhook and pressed "Group Pickup" softkey





C is dialing the PU number



PU is removed from Call 2



C is removed from Call 2

Call 2 is destroyed

C gets a connection on Call 1


B is dropped from Call 1






C is ringing


C picks up

GC1


GC2-CallActiveEvent-NONE
GC2-ConnCreatedEvent-C
GC2-ConnConnectedEvent-C
GC2-CallCtlConnInitiatedEv-C
GC2-TermConnCreatedEvent
GC2-TermConnActiveEvent
GC2-CallCtlTermConnTalkingEv

GC2-CallCtlConnDialingEv-C
GC2-ConnCreatedEvent-PU
GC2-ConnInprogressEvent-PU
GC2-CallCtlConnEstablishedEv-C

GC2-ConnDisconnectedEvent-PU
GC2-CallCtlConnDisconnectedEv-PU
GC2-TermConnDroppedEv
GC2-CallCtlTermConnDroppedEv
GC2-ConnDisconnectedEvent-C
GC2-CallCtlConnDisconnectedEv-C
GC2-CallInvalidEvent
GC2-CallObservationEndedEv

GC1-ConnCreatedEvent[ADDRS]
GC1-ConnInprogressEvent
GC1-CallCtlConnOfferedEv

GC1-TermConnDroppedEv
GC1-CallCtlTermConnDroppedEv
GC1-ConnDisconnectedEvent
GC1-CallCtlConnDisconnectedEv
GC1-ConnAlertingEvent
GC1-CallCtlConnAlertingEv
GC1-TermConnCreatedEvent

GC1-TermConnRingingEvent
GC1-CallCtlTermConnRingingEv
GC1-ConnConnectedEvent
GC1-CallCtlConnEstablishedEv
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv


CCalling: C, CCalled: NO, NO LRP
REASON_NORMAL





CCalling: C, CCalled: NO, NO LRP
REASON_NORMAL

CCalling: C, CCalled: PU

CCalling: C, CCalled: PU, LRP: PU
REASON_CALLPICKUP






CCalling: A, CCalled: C, LRP: B
Calling: A, Called: B
REASON_CALLPICKUP

CCalling: A, CCalled: C, LRP: B
REASON_CALLPICKUP


REASON_NORMAL


CCalling: A, CCalled: C, LRP: B
REASON_NORMAL


The tables above have scenarios during which all of the devices were observed. The devices were run with every possible combination, across all varieties of Pickup and Group Pickup. Parts of the scenarios had the exact same output and others were redundant and are not shown here. For example, device A and B were identical and shown only once.

Scenario Five

Only observing device B.

Action
Call Events
Call IDs/Call Info

A is in the process of calling B









B is ringing

A is removed from Call 1

B is removed from Call 1

GC1-CallActiveEvent-NONE
GC1-ConnCreatedEvent-B
GC1-ConnInprogressEvent-B
GC1-CallCtlConnOfferedEv-B
GC1-ConnCreatedEvent-A
GC1-ConnConnectedEvent-A
GC1-CallCtlConnEstablishedEv-A
GC1-ConnAlertingEvent-B
GC1-CallCtlConnAlertingEv-B
GC1-TermConnCreatedEvent

GC1-TermConnRingingEvent
GC1-CallCtlTermConnRingingEv

GC1-ConnDisconnectedEvent-A
GC1-CallCtlConnDisconnectedEv-A

GC1-TermConnDroppedEv
GC1-CallCtlTermConnDroppedEv
GC1-ConnDisconnectedEvent-B
GC1-CallCtlConnDisconnectedEv-B
GC1-CallInvalidEvent
GC1-CallObservationEndedEv

CCalling: A, CCalled: B,
Calling: A, Called: B, LRP: NONE
REASON_NORMAL









REASON_CALLPICKUP





REASON_NORMAL


Scenario Six

Observing only device A.

Action
Call Events
Call IDs/Call Info

A goes offhook and dials B











B is ringing




C is ringing

B is removed from Call 1

GC1-CallActiveEvent-NONE
GC1-ConnCreatedEvent-A
GC1-ConnConnectedEvent-A
GC1-CallCtlConnInitiatedEv-A
GC1-TermConnCreatedEvent
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv
GC1-CallCtlConnDialingEv-A
GC1-CallCtlConnEstablishedEv-A
GC1-ConnCreatedEvent-B
GC1-ConnInprogressEvent-B
GC1-CallCtlConnOfferedEv-B

GC1-ConnAlertingEvent-B
GC1-CallCtlConnAlertingEv-B
GC1-ConnCreatedEvent-C
GC1-ConnInprogressEvent-C
GC1-CallCtlConnOfferedEv-C

GC1-ConnAlertingEvent-C
GC1-CallCtlConnAlertingEv-C

GC1-ConnDisconnectedEvent-B
GC1-CallCtlConnDisconnectedEv-B
GC1-ConnConnectedEvent-C
GC1-CallCtlConnEstablishedEv-C

CCalling: A, CCalled: NO, NO LRP
REASON_NORMAL






CCalling A, CCalled B,
Called: NOT SET LRP: NONE




CCalling: A, CCalled: C, LRP: B
Called: NOT SET
REASON_CALLPICKUP

REASON_NORMAL

REASON_CALLPICKUP

REASON_NORMAL


Scenario Seven

Observing only device C with Auto-Pickup enabled.

Action
Call Events
Call IDs/Call Info

C goes offhook and presses "Pickup" hotkey











C is connected to Call 1

C is dropped from Call 2



Call 2 is invalidated / cleared

A and C are connected on Call 1

GC2-CallActiveEvent-NONE
GC2-ConnCreatedEvent-C
GC2-ConnConnectedEvent-C
GC2-CallCtlConnInitiatedEv-C
GC2-TermConnCreatedEvent
GC2-TermConnActiveEvent
GC2-CallCtlTermConnTalkingEv
GC2-CiscoCallChangedEv
GC1-CallActiveEvent-NONE
GC1-ConnCreatedEvent-C
GC1-ConnConnectedEvent-C
GC1-CallCtlConnInitiatedEv
GC1-TermConnCreatedEvent

GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv

GC2-TermConnDroppedEv
GC2-CallCtlTermConnDroppedEv
GC2-ConnDisconnectedEvent-C
GC2-CallCtlConnDisconnectedEv-C
GC2-CallInvalidEvent
GC2-CallObservationEndedEv

GC1-ConnCreatedEvent-A
GC1-ConnConnectedEvent-A
GC1-CallCtlConnEstablishedEv-A
GC1-CallCtlConnEstablishedEv-C

CCalling: C, CCalled: NO, NO LRP
REASON_NORMAL





REAON_CALLPICKUP
CCalling A, CCalled: NONE
LRP: NONE



CCalling: A, CCalled: C, LRP: B
REASON_CALLPICKUP

CCalling: C, CCalled: NONE
REASON_CALLPICKUP


REASON_CALLPICKUP

CCalling A, CCalled: C, LRP: B
REASON_CALLPICKUP

REASON_NORMAL


Scenario Eight

Observing only device C with Auto-Pickup disabled.

Action
Call Events
Call IDs/Call Info

C goes offhook and pressed "Pickup" softkey





Call 2 is destroyed





C is added to Call 1, but does not pick up








C is ringing

C picks up, and is connected to Call 1

GC2-CallActiveEvent-NONE
GC2-ConnCreatedEvent-C
GC2-ConnConnectedEvent-C
GC2-CallCtlConnInitiatedEv-C
GC2-TermConnCreatedEvent
GC2-TermConnActiveEvent
GC2-CallCtlTermConnTalkingEv

GC2-TermConnDroppedEv
GC2-CallCtlTermConnDroppedEv
GC2-ConnDisconnectedEvent-C
GC2-CallCtlConnDisconnectedEv-C
GC2-CallInvalidEvent
GC2-CallObservationEndedEv

GC1-CallActiveEvent
GC1-ConnCreatedEvent-C
GC1-ConnInprogressEvent-C
GC1-CallCtlConnOfferedEv-C
GC1-ConnCreatedEvent-A
GC1-ConnConnectedEvent-A
GC1-CallCtlConnEstablishedEv-A
GC1-ConnAlertingEvent-C
GC1-CallCtlConnAlertingEv-C
GC1-TermConnCreatedEvent
GC1-TermConnRingingEvent
GC1-CallCtlTermConnRingingEv

GC1-ConnConnectedEvent-C
GC1-CallCtlConnEstablishedEv-C
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv

CCalling: C, CCalled: NO, NO LRP
REASON_NORMAL





REASON_CALLPICKUP
CCalling: C, CCalled: NONE



REASON_NORMAL

CCalling: A, CCalled: C, LRP: B
REASON_CALLPICKUP





REASON_NORMAL






CCalling: A, CCalled: C, LRP: B
REASON_NORMAL


Scenario Nine

Observing only device C with Group Pickup and AutoPickup enabled.

Action
Call Event
Call IDs/Call Info

C goes offhook and presses "Pickup" softkey





C dials the Pickup Number





C is added to Call 1
PU is added to Call 1







PU # is removed from Call 2



C is removed from Call 2

Call 2 I invalidated / cleared

C is connected to Call 1




PU is removed from Call 1

GC2-CallActiveEvent-NONE
GC2-ConnCreatedEvent-C
GC2-ConnConnectedEvent-C
GC2-CallCtlConnInitiatedEv-C
GC2-TermConnCreatedEvent
GC2-TermConnActiveEvent
GC2-CallCtlTermConnTalkingEv

GC2-CallCtlConnDialingEv-C
GC2-ConnCreatedEvent-PU
GC2-ConnInprogressEvent-PU
GC2-CallCtlConnEstablishedEv-C
GC2-CiscoCallChangedEv
GC1-CallActiveEvent

GC1-ConnCreatedEvent-C
GC1-ConnCreatedEvent-PU
GC1-ConnConnectedEvent-C
GC1-CallCtlConnEstablishedEv-C
GC1-TermConnCreatedEvent
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv
GC1-ConnInprogressEvent-PU
GC1-CallCtlConnOfferedEv-PU

GC2-ConnDisconnectedEvent-PU
GC2-CallCtlConnDisconnectedEv-PU
GC2-TermConnDroppedEv
GC2-CallCtlTermConnDroppedEv

GC2-ConnDisconnectedEvent-C
GC2-CallCtlConnDisconnectedEv-C
GC2-CallInvalidEvent
GC2-CallObservationEndedEv

GC1-ConnCreatedEvent-A
GC1-ConnConnectedEvent-PU
GC1-CallCtlConnEstablishedEv-PU
GC1-ConnConnectedEvent-C
GC1-CallCtlConnEstablishedEv-C

GC1-ConnDisconnectedEvent-PU
GC1-CallCtlConnDisconnectedEv-PU

CCalling: C, CCalled: NO, NO LRP
REASON_NORMAL


CCalling: C, CCalled: PU





CCalling: C, CCalled: PU, LRP: PU
REASON_CALLPICKUP
REASON_NORMAL
REASON_CALLPICKUP
CCalling: A,C Called: C

CCalling: A, CCalled: C, LRP: B
Calling: A, Called: B
REASON_CALLPICKUP






CCalling C, CCalled: PU, LRP: PU
REASON_CALLPICKUP




CCalling C, CCalled: PU, LRP: PU
REASON_CALLPICKUP

REASON_NORMAL

CCalling: A, CCalled: C
REASON_CALLPICKUP





CCalling: A, CCalled: C
REASON_CALLPICKUP


Scenario Ten

Observing only device C with Group Pickup and Auto-Pickup disabled.

Action
Call Events
Call IDs/Call Info

C goes offhook, and presses "Group Pickup" softkey





C dials the PU Number



PU is dropped from Call 2



C is dropped from Call 2

Call 2 is destroyed

C is added to Call 1









C is ringing

C is connected to A

GC2-CallActiveEvent-NONE
GC2-ConnCreatedEvent-C
GC2-ConnConnectedEvent-C
GC2-CallCtlConnInitiatedEv-C
GC2-TermConnCreatedEvent
GC2-TermConnActiveEvent
GC2-CallCtlTermConnTalkingEv

GC2-CallCtlConnDialingEv-C
GC2-ConnCreatedEvent-PU
GC2-ConnInprogressEvent-PU
GC2-CallCtlConnEstablishedEv-C

GC2-ConnDisconnectedEvent-PU
GC2-CallCtlConnDisconnectedEv-PU
GC2-TermConnDroppedEv
GC2-CallCtlTermConnDroppedEv
GC2-ConnDisconnectedEvent-C
GC2-CallCtlConnDisconnectedEv-C
GC2-CallInvalidEvent

GC1-CallObservationEndedEv

GC1-CallActiveEvent
GC1-ConnCreatedEvent-C
GC1-ConnInprogressEvent-C
GC1-CallCtlConnOfferedEv-C
GC1-ConnCreatedEvent-A
GC1-ConnConnectedEvent-A
GC1-CallCtlConnEstablishedEv-A
GC1-ConnAlertingEvent-C
GC1-CallCtlConnAlertingEv-C
GC1-TermConnCreatedEvent

GC1-TermConnRingingEvent
GC1-CallCtlTermConnRingingEv

GC1-ConnConnectedEvent-C
GC1-CallCtlConnEstablishedEv-C
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv

CCalling: C, CCalled: NO, NO LRP
REASON_NORMAL






CCalling: C, CCalled: PU, LRP: PU
REASON_CALLPICKUP
REASON_NORMAL

REASON_CALLPICKUP





REASON_CALLPICKUP
REASON_NOTMAL

CCalling: A, CCalled: C, LRP: B
REASON_CALLPICKUP





REASON_NORMAL


selectRoute() with Calling Search Space and Feature Priority

The selectRoute() API with calling search space and feature priority as array of int. is shown in the following table.

Action
Events
Call Info

Add call observer on phones A,B,C,D.

Register Route Point RP

Register route call back, with select route API with three rows
  route selected: A,.....CSS: 0, FP:  1   

  route selected: B,.....CSS: 1, FP:  3 
  route selected: D,.....CSS: 1, FP:  1 

C calls RP

Call rings at A.

A answers. C-A call is connected.

GC1 CallActiveEv

GC1 ConnCreatedEv C:

GC1 ConnConnectedEv C

GC1 CallCtlConnInitiatedEv C:

GC1 TermConnCreatedEv TC

GC1 TermConnActiveEv TC

GC1 CallCtlTermConnTalkingEv TC

GC1 CallCtlConnDialingEv C:

GC1 CallCtlConnEstablishedEv C:

GC1 ConnCreatedEv RP:

GC1 ConnInProgressEv RP:

GC1 CallCtlConnOfferedEv RP:

After redirect request is processed

GC1 ConnCreatedEv A:

GC1 ConnInProgressEv A:

GC1 CallCtlConnOfferedEv A:

GC1 ConnDisconnectedEv RP:

GC1 CallCtlConnDisconnectedEv RP:

GC1 ConnAlertingEv A:

GC1 CallCtlConnAlertingEv A:

GC1 TermConnCreatedEv TA

GC1 TermConnRingingEv TA

GC1 CallCtlTermConnRingingEvImpl TA

GC1 ConnConnectedEv A:

GC1 CallCtlConnEstablishedEv A:

GC1 TermConnActiveEv A

GC1 TermConnActiveEv A

[C] CiscoRTPInputStartedEv

[A] CiscoRTPOutputStartedEv

[A] CiscoRTPInputStartedEv

[C] CiscoRTPOutputStartedEv

calling: C

lastRedirected:RP

called: A


Extension Mobility Login Username

Terminal A is in control list of user, Terminal B is not in control list of User. Extension Mobility login username is John, end user id user for application is John.

Action
Result
Call Info

Open provider,  Terminal  A doesn't have any observer,  Application calls CiscoTerminal.getEMLoginUserName() at Terminal A.

InvalidStateException is thrown.

NA

Open provider, Add Observer to Terminal A,  Application calls CiscoTerminal.getEMLoginUserName() at Terminal A.

Application should get empty string "" for username.

NA

Open provider, User "John" EMLogin to Terminal A and add observer to the Terminal A, Application calls CiscoTerminal.getEMLoginUserName() at Terminal A

Application should get String "John"

NA

User "John" EMLogin to Terminal A, now open provider,  add observer  to Terminal A, Application calls CiscoTerminal.getEMLoginUserName() at Terminal A.

Application should get String "John"

NA

User "John" EMLogin to Terminal A, now open provider,  add observer  to Terminal A, User "John" EMLogout of Terminal A, Application calls CiscoTerminal.getEMLoginUserName() at Terminal A.

Application should get empty string "" for username

NA

OpenProvider, User "John" EMLogin to Terminal B, add observer, application calls CiscoTerminal.getEMLoginUserName() at Terminal B

Application should get String "John"

NA

User "John" EMLogin to Terminal B, OpenProvider, add observer to Terminal B, Application calls CiscoTerminal.getEMLoginUserName() at Terminal B

Application should get String "John"

NA


Terminal A is in control list of user and configured with the Extension Mobility logout profile of user Kerry. The Kerry profile is configured with logout username as Kerry. There is another profile with login username of John.

Action
Result
Call Info

User John logs into Terminal A, OpenProvider and add observer to Terminal A. Application calls CiscoTerminal.getEMLoginUserName() at Terminal A.

John logs out at Terminal A. Application calls CiscoTerminal.getEMLoginUserName() at Terminal A.

Application should get String John.

Application should get String Kerry.

NA

NA


Calling Party IP Address

The following are some examples of call scenarios.

Basic Call Scenario

JTAPI application monitors party B

Party A is an IP phone

A calls B

IP Address of A is available to JTAPI application monitoring party B

Consultation Transfer Scenario

JTAPI application monitors party C

Party B is an IP phone

A talking B

B initiates a consultation transfer call to C

IP Address of B is available to JTAPI application monitoring party C.

Consultation Conference Scenario

JTAPI application monitors party C

Party B is an IP phone

A talking B

B initiates a consultation conference call to C

IP Address of B is available to JTAPI application monitoring party C.

Redirect Scenario

JTAPI application monitors party B and party C

Party A is an IP phone

A calls B

IP Address of A is available to JTAPI application monitoring party B

Party A redirects B to party C (

Calling IP address is not available to JTAPI application monitoring party B (not a supported scenario).

Calling IP address of B is provided to JTAPI application monitoring party C.

CiscoJtapiProperties

1) Set Socket Connect Timeout to 5 seconds; Plug out the Ethernet cable for PRIMARY CTI Manager and do a normal provider open. Expected Result: Socket Connect to Primary CTI Manager should fail in not more than 5 secs

2) Set Socket Connect Timeout to 5 seconds; Plug out the Ethernet cable for PRIMARY CTI Manager, set security options to True and do a secured provider open. Expected Result: Socket Connect to Primary CTI Manager should fail in not more than 5 secs (Socket Connect timed-out in ~5 seconds, though it took some additional time initially for verifying security certificates)

3) Set Socket Connect Timeout to 0 seconds; Plug out the Ethernet cable for PRIMARY CTI Manager, set security options to true and do a secured provider open. Expected Result: Socket Connect to Primary CTI Manager will no longer rely on new Service Parameter (Socket Connect timed-out in ~23 seconds, though it took some additional time initially for verifying security certificates).

IPv6 Support

Use Case1 - Basic Call Scenario: Calling is IPv6 enabled phone; Called is IPv6

Action
Events
Call Info/Expected Result

IPv6 enabled phone A calls JTAPI Observed IPv6 enabled device B using GC1.

NEW META EVENT_________META_CALL_STARTING

CiscoCallCtlConnOfferedEv. getCallingPartyIpAddr_v6() will return IPv6 format address for A as an InetAddress object.

getCallingPartyIpAddr() will return null

getRemoteAddress() on CiscoRTPOutputProperties in CiscoOutputStartedEv will contain the far-end Ipv6 RTP address(of A)

getRemoteAddress() on CiscoRTPInputProperties in CiscoRTPInputStartedEv will contain the Ipv6 RTP address of the monitored phone(B)

B Answers

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

 

Use Case2 - Basic Call Scenario: Calling is IPv6 enabled phone; Called is IPv4

Action
Events
Call Info/Expected Result

IPv6 enabled phone A calls JTAPI Observed IPv4 enabled device B using GC1.

NEW META EVENT_________META_CALL_STARTING

CiscoCallCtlConnOfferedEv. getCallingPartyIpAddr_v6() will return IPv6 format address for A as an InetAddress object.

getCallingPartyIpAddr() will return null

getRemoteAddress() on CiscoRTPOutputProperties in CiscoRTPOutputStartedEv will contain the far-end Ipv4 RTP address which corresponds to the MTP that was automatically inserted by Call Manager to perform Ipv4/Ipv6 conversion.

getLocalAddress() on CiscoRTPInputProperties in CiscoRTPInputStartedEv will contain the Ipv4 RTP address of the monitored phone

B Answers

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

 

Use Case3 - Basic Call Scenario: Calling is IPv4 enabled phone; Called is IPv6

Action
Events
Call Info/Expected Result

IPv4 enabled phone A calls JTAPI Observed IPv6 enabled device B using GC1.

NEW META EVENT_________META_CALL_STARTING

CiscoCallCtlConnOfferedEv. getCallingPartyIpAddr() will return IPv4 format address for A in an InetAddress object.

CiscoCallCtlConnOfferedEv. getCallingPartyIpAddr_v6() will return null

getRemoteAddress() on CiscoRTPOutputProperties in CiscoRTPOutputStartedEv will contain the far-end Ipv6 RTP address which corresponds to the MTP that was automatically inserted by Call Manager to perform Ipv4/Ipv6 conversion.

getLocalAddress() on CiscoRTPInputProperties in CiscoRTPInputStartedEv will contain the Ipv6 RTP address of the monitored phone

B Answers

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

 

Use Case4 - Basic Call Scenario: Calling is IPv4 enabled phone; Called is IPv4

Action
Events
Call Info/Expected Result

IPv4 enabled phone A calls JTAPI Observed IPv4 enabled device B using GC1.

NEW META EVENT_________META_CALL_STARTING

CiscoCallCtlConnOfferedEv. getCallingPartyIpAddr() will return IPv4 format address for A in an InetAddress object.

CiscoCallCtlConnOfferedEv. getCallingPartyIpAddr_v6() will return null

getRemoteAddress() on CiscoRTPOutputProperties in CiscoRTPOutputStartedEv will contain the far-end Ipv4 RTP address.

getLocalAddress() on CiscoRTPInputProperties in CiscoRTPInputStartedEv will contain the Ipv4 RTP address of the monitored phone

B Answers

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

 

Use Case5 - Consultation transfer scenario, IPv6 device consults:

Action
Events
Call Info/Expected Result

GC1: Call between A & B

Consult Call:

IPv6 enabled phone B consults JTAPI Observed device C for Transfer using GC2.

NEW META EVENT_________META_CALL_STARTING

For Consult Call:

CiscoCallCtlConnOfferedEv. getCallingPartyIpAddr_v6() will return IPv6 format address for B in an InetAddress object to the JTAPI Application observing C.

While, CiscoCallCtlConnOfferedEv. getCallingPartyIpAddr() will return null

C Answers

CallActiveEv for callID=GC2 Cause: CAUSE_NEW_CALL

ConnCreatedEv for B Cause: CAUSE_NORMAL

ConnConnectedEv for B Cause : CAUSE_NORMAL

CallCtlConnInitiatedEv for B Cause: CAUSE_NORMAL

TermConnCreatedEv for B Cause : CAUSE_NORMAL

TernConnActiveEv for B Cause : CAUSE_NORMAL

CallCtlConnDialingEv for B Cause : CAUSE_NORMAL

CallCtlConnEstabilishedEv for B Cause : CAUSE_NORMAL

ConnCreatedEv for C cause : CAUSE_NORMAL

ConnInProgressEv for C Cause : CAUSE_NORMAL

CallCtlConnOfferedEv for C Cause : CAUSE_NORMAL

ConnAlertingEv for C Cause : CAUSE_NORMAL

CallCtlConnAlertingEv for C Cause : CAUSE_NORMAL

TermConnCreatedEv for C Cause : CAUSE_NORMAL

TermConnRingingEv for C Cause : CAUSE_NORMAL

CallCtlTermConnTalkingEv Cause : CAUSE_NORMAL

 

Use Case6 - Consultation transfer scenario, IPv4 device consults:

Action
Events
Call Info/Expected Result

GC1: Call between A & B

Consult Call:

IPv4 enabled phone B consults JTAPI Observed device C for Transfer using GC2.

NEW META EVENT_________META_CALL_STARTING

CiscoCallCtlConnOfferedEv. getCallingPartyIpAddr() will return IPv4 format address for B in an InetAddress object to the JTAPI Application observing C

While, CiscoCallCtlConnOfferedEv. getCallingPartyIpAddr_v6() will return null

C Answers

CallActiveEv for callID=GC2 Cause: CAUSE_NEW_CALL

ConnCreatedEv for B Cause: CAUSE_NORMAL

ConnConnectedEv for B Cause : CAUSE_NORMAL

CallCtlConnInitiatedEv for B Cause: CAUSE_NORMAL

TermConnCreatedEv for B Cause : CAUSE_NORMAL

TernConnActiveEv for B Cause : CAUSE_NORMAL

CallCtlConnDialingEv for B Cause : CAUSE_NORMAL

CallCtlConnEstabilishedEv for B Cause : CAUSE_NORMAL

ConnCreatedEv for C cause : CAUSE_NORMAL

ConnInProgressEv for C Cause : CAUSE_NORMAL

CallCtlConnOfferedEv for C Cause : CAUSE_NORMAL

ConnAlertingEv for C Cause : CAUSE_NORMAL

CallCtlConnAlertingEv for C Cause : CAUSE_NORMAL

TermConnCreatedEv for C Cause : CAUSE_NORMAL

TermConnRingingEv for C Cause : CAUSE_NORMAL

CallCtlTermConnTalkingEv Cause : CAUSE_NORMAL

 

Use Case7: Redirect scenario:

Action
Events
Call Info/Expected Result

GC1: Call between A(IPv6) & B

Redirect Call:

phone B redirects call to JTAPI Observed device C using GC2.

New Meta Event_______META_CALL_STARTING

CiscoCallCtlConnOfferedEv. getCallingPartyIpAddr_v6() will return IPv6 format address for A in an InetAddress object to the JTAPI Application observing C

While, CiscoCallCtlConnOfferedEv. getCallingPartyIpAddr() will return null

C Answers

CallActiveEv for callID=GC2 Cause: CAUSE_NEW_CALL

ConnCreatedEv for B Cause: CAUSE_NORMAL

ConnConnectedEv for B Cause : CAUSE_NORMAL

CallCtlConnEstablishedEv for B Cause: CAUSE_NORMAL

TermConnCreatedEv for B Cause : CAUSE_NORMAL

TernConnActiveEv for B Cause : CAUSE_NORMAL

CallCtlTermConnTalkingEv for B Cause : CAUSE_NORMAL

CallCtlConnDialingEv for B Cause : CAUSE_NORMAL

ConnCreatedEv for A Cause : CAUSE_NORMAL

CallCtlConnEstablishedEv for A Cause : CAUSE_NORMAL

ConnCreatedEv for C cause : CAUSE_NORMAL

ConnInProgressEv for C Cause : CAUSE_NORMAL

CallCtlConnOfferedEv for C Cause : CAUSE_NORMAL

ConnAlertingEv for C Cause : CAUSE_NORMAL

CallCtlConnAlertingEv for C Cause : CAUSE_NORMAL

TermConnCreatedEv for C Cause : CAUSE_NORMAL

 
 

TermConnRingingEv for C Cause : CAUSE_NORMAL

TermConnDroppedEv for B Cause : CAUSE_NORMAL

ConnDisconnectedEv for B Cause : CAUSE_NORMAL

CallCtlTermConnDroppedEv for B Cause : CAUSE_REDIRECTED

ConnConnectedEv for C Cause : CAUSE_NORMAL

TermConnActiveEv for C Cause : CAUSE_NORMAL

CallCtlTermConnTalkingEv Cause : CAUSE_NORMAL

 

Use Case8: Redirect scenario (IPv4):

Action
Events
Call Info/Expected Results

GC1: Call between A(IPv4) & B

Redirect Call:

phone B redirects call to JTAPI Observed device C using GC2.

New Meta Event_______META_CALL_STARTING

CiscoCallCtlConnOfferedEv. getCallingPartyIpAddr() will return IPv4 format address for A in an InetAddress object to the JTAPI Application observing C

While, CiscoCallCtlConnOfferedEv. getCallingPartyIpAddr_v6() will return null

C Answers

CallActiveEv for callID=GC2 Cause: CAUSE_NEW_CALL

ConnCreatedEv for B Cause: CAUSE_NORMAL

ConnConnectedEv for B Cause : CAUSE_NORMAL

CallCtlConnEstablishedEv for B Cause: CAUSE_NORMAL

TermConnCreatedEv for B Cause : CAUSE_NORMAL

TernConnActiveEv for B Cause : CAUSE_NORMAL

CallCtlTermConnTalkingEv for B Cause : CAUSE_NORMAL

CallCtlConnDialingEv for B Cause : CAUSE_NORMAL

 
 

ConnCreatedEv for A Cause : CAUSE_NORMAL

CallCtlConnEstablishedEv for A Cause : CAUSE_NORMAL

ConnCreatedEv for C cause : CAUSE_NORMAL

ConnInProgressEv for C Cause : CAUSE_NORMAL

CallCtlConnOfferedEv for C Cause : CAUSE_NORMAL

ConnAlertingEv for C Cause : CAUSE_NORMAL

CallCtlConnAlertingEv for C Cause : CAUSE_NORMAL

TermConnCreatedEv for C Cause : CAUSE_NORMAL

TermConnRingingEv for C Cause : CAUSE_NORMAL

TermConnDroppedEv for B Cause : CAUSE_NORMAL

ConnDisconnectedEv for B Cause : CAUSE_NORMAL

CallCtlTermConnDroppedEv for B Cause : CAUSE_REDIRECTED

ConnConnectedEv for C Cause : CAUSE_NORMAL

TermConnActiveEv for C Cause : CAUSE_NORMAL

CallCtlTermConnTalkingEv Cause : CAUSE_NORMAL

 

Use Case9: Redirect scenario, calling device redirects:

Action
Events
Call Info/Expected Result

GC1: A calls B(IPv4)

Redirect Call:

Phone A redirects call to JTAPI Observed device C using GC2.

New Meta Event_______META_CALL_STARTING
CallActiveEv for callID=GC2 Cause: CAUSE_NEW_CALL

CiscoCallCtlConnOfferedEv. getCallingPartyIpAddr() will return IPv4 format address for B in an InetAddress object to the JTAPI Application observing C

CiscoCallCtlConnOfferedEv. getCallingPartyIpAddr()
or, CiscoCallCtlConnOfferedEv.
getCallingPartyIpAddr()_v6
will not return IP address for A in an InetAddress object to the JTAPI Application observing B after redirect.

C Answers

ConnCreatedEv for A Cause: CAUSE_NORMAL

ConnConnectedEv for A Cause : CAUSE_NORMAL

CallCtlConnEstablishedEv for A Cause: CAUSE_NORMAL

TermConnCreatedEv for A Cause : CAUSE_NORMAL

TernConnActiveEv for A Cause : CAUSE_NORMAL

CallCtlTermConnTalkingEv for A Cause : CAUSE_NORMAL

CallCtlConnDialingEv for A Cause : CAUSE_NORMAL

ConnCreatedEv for B Cause : CAUSE_NORMAL

CallCtlConnEstablishedEv for B Cause : CAUSE_NORMAL

ConnCreatedEv for C cause : CAUSE_NORMAL

ConnInProgressEv for C Cause : CAUSE_NORMAL

CallCtlConnOfferedEv for C Cause : CAUSE_NORMAL

ConnAlertingEv for C Cause : CAUSE_NORMAL

CallCtlConnAlertingEv for C Cause : CAUSE_NORMAL

TermConnCreatedEv for C Cause : CAUSE_NORMAL

TermConnRingingEv for C Cause : CAUSE_NORMAL

TermConnDroppedEv for A Cause : CAUSE_NORMAL

ConnDisconnectedEv for A Cause : CAUSE_NORMAL

CallCtlTermConnDroppedEv for A Cause : CAUSE_REDIRECTED

ConnConnectedEv for C Cause : CAUSE_NORMAL

TermConnActiveEv for C Cause : CAUSE_NORMAL

CallCtlTermConnTalkingEv Cause : CAUSE_NORMAL

 

Use Case10: Route scenario, IPv6 enabled calls RoutePoint which Routes call to IPv6 device:

Action
Events
Call Info/Expected Result

IPv6 enabled phone A calls RoutePoint which routes the call to JTAPI Observed IPv6 enabled device B using GC1.

NEW META EVENT_________META_CALL_STARTING

CiscoRouteEvent.getCallingPartyIpAddr_v6() will return IPv6 format address for A as an InetAddress object.

While, CiscoRouteEvent. getCallingPartyIpAddr() will return null

getRemoteAddress() on CiscoRTPOutputProperties in CiscoRTPOutputStartedEv will contain the far-end Ipv6 RTP address

getLocalAddress() on CiscoRTPInputProperties in CiscoRTPInputStartedEv will contain the Ipv6 RTP address of the monitored phone

B Answers

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

CallRouteEv 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

 

Use Case11: Enterprise parameter "Enable IPv6" is enabled.

Application does an open provider by providing the list of CTI Manager IPs as

IPv4 address of CTI Manager1

IPv6 address of CTI Manager1

IPv4 address of CTI Manager2

IPv6 address of CTI Manager2

Now once the JTAPI is able to establish a connection with CTI Manager and later on if CTI Manager1 goes down, in failover attempt application can see delay in connecting as JTAPI will first try to connect with IPv6 address of CTI Manger1 (which is next in the list) even though that IP address is of the same CTI Manager and only once it times out it will try with the IPv4 address of the CTI Manager2 which will succeed (assuming CTI Manager2 is running).

Provider Open Scenario

1. Service Parameter for Reconnect Attempt is not set(or set to 0), Enterprise parameter "Enable IPv6" is disabled. Application tries to open a provider with IPv4 address. JTAPI will be able to open a connection with CTI manager.

CTI Manager is stopped - JTAPI will try reconnecting to CTI manager indefinitely till the CTI Manager is stared again and connection is restored.

Enterprise parameter "Enable IPv6"is enabled and CTI manager is restarted - JTAPI will be able to reconnect to CTI Manager with the same IPv4 address.

2. Service Parameter for Reconnect Attempt is not set (or set to 0), Enterprise parameter "Enable IPv6" is enabled. Application tries to open a provider with IPv4 address. JTAPI will be able to open a connection with CTI Manager.

CTI Manager is stopped - JTAPI will try reconnecting to CTI manager indefinitely till the CTI Manager is stared again and connection is restored.

Enterprise parameter "Enable IPv6"is disabled and CTI manager is restarted - JTAPI will be able to reconnect to CTI Manager with the same IPv4 address. But, the existing devices registered with IPv6 address will be closed with "CiscoTermRegistrationFailedEv" with a new reason code "IP_CAPABILITY_MISMATCH"

3. Service Parameter for Reconnect Attempt is not set (or set to 0), Enterprise parameter "Enable IPv6" is enabled. Application tries to open a provider with IPv6 address. JTAPI will be able to open a connection with CTI Manager.

CTI Manager is stopped - JTAPI will try reconnecting to CTI manager indefinitely till the CTI Manager is started again and connection is restored.

Enterprise parameter "Enable IPv6"is disabled and CTI manager is restarted - JTAPI will not be able to reconnect to CTI Manager, as it no longer supports IPv6 address but JTAPI will try reconnecting to CTI Manager indefinitely till the time service parameter is again enabled and CTI Service restarted.

4. Service Parameter for Reconnect Attempt is set to some integer value (say 5), Enterprise parameter "Enable IPv6" is disabled. Application tries to open a provider with IPv4 address. JTAPI will be able to open a connection with CTI manager.

CTI Manager is stopped - JTAPI will try reconnecting to CTI manager 5 times before closing all the opened devices and provider.

Enterprise parameter "Enable IPv6"is enabled and CTI manager is restarted - JTAPI will be able to reconnect to CTI Manager with the same IPv4 address.

5. Service Parameter for Reconnect Attempt is set to some integer value (say 5), Enterprise parameter "Enable IPv6" is enabled. Application tries to open a provider with IPv4 address. JTAPI will be able to open a connection with CTI Manager.

CTI Manager is stopped - JTAPI will try reconnecting to CTI manager 5 times before closing all the opened devices and provider.

Enterprise parameter "Enable IPv6"is disabled and CTI manager is restarted - JTAPI will be able to reconnect to CTI Manager with the same IPv4 address. But, the existing devices registered with IPv6 address will be closed with "CiscoTermRegistrationFailedEv" with a new reason code "IP_CAPABILITY_MISMATCH"

6. Service Parameter for Reconnect Attempt is set to some integer value (say 5), Enterprise parameter "Enable IPv6" is enabled. Application tries to open a provider with IPv6 address. JTAPI will be able to open a connection with CTI Manager.

CTI Manager is stopped - JTAPI will try reconnecting to CTI manager 5 times before closing all the opened devices and provider.

Enterprise parameter "Enable IPv6"is disabled and CTI manager is restarted - JTAPI will not be able to reconnect to CTI Manager, as it no longer supports IPv6 address but JTAPI will try reconnecting to CTI Manager 5 more times (as the same can again be enabled on Cisco Unified CM) before closing all the devices and provider.

7. Enterprise parameter "Enable IPv6" is disabled. Application tries to open a provider with IPv6 address. JTAPI will not be able to open a connection with CTI manager. Retry attempts are applicable only if connection gets established once, but since in this scenario even the first attempt is failing so there will be no subsequent reconnect attempts.

Enterprise parameter "Enable IPv6" is enabled. Application does an open provider by providing the list of CTI Manager IPs as

IPv4 address of CTI Manager1

IPv6 address of CTI Manager1

IPv4 address of CTI Manager2

IPv6 address of CTI Manager2

Now once the JTAPI is able to establish a connection with CTI Manager and later on if CTI Manager1 goes down, in failover attempt application can see delay in connecting as JTAPI will first try to connect with IPv6 address of CTI Manger1 (which is next in the list) even though that IP address is of the same CTI Manager and only once it times out it will try with the IPv4 address of the CTI Manager2 which will succeed (assuming CTI Manager2 is running).

Calling Party IP Address scenarios:

1. Ipv6 enabled phone calls a CTI controllable device. Subsequently, the CTI controllable device is monitored by a JTAPI application. JTAPI will generate a CiscoCallCtlConnOfferedEv (non-Route Points) or CiscoRouteEvent (Route Points) notification containing an Ipv6 calling party IP address.
getCallingPartyIpAddr() will return NULL
getCallingPartyIpAddr_v6() will return the actual calling Party IPv6 address.

2. Ipv4 enabled phone calls a CTI controllable device. Subsequently, the CTI controllable device is monitored by a JTAPI application. JTAPI will generate a CiscoCallCtlConnOfferedEv (non-Route Points) or CiscoRouteEvent (Route Points) notification containing an Ipv4 calling party IP address (existing behavior)
getCallingPartyIpAddr() will return the actual calling Party IPv4 address.
getCallingPartyIpAddr_v6() will return NULL.

3. Ipv6 only phone calls a CTI controllable device that is already monitored by a JTAPI application. JTAPI will generate a CiscoCallCtlConnOfferedEv (non-Route Points) or CiscoRouteEvent (Route Points) notification containing an Ipv6 calling party IP address.
getCallingPartyIpAddr() will return NULL
getCallingPartyIpAddr_v6() will return the actual calling Party IPv6 address

4. Ipv4 enabled phone calls a CTI controllable device that is already monitored by a JTAPI application. JTAPI will generate a CiscoCallCtlConnOfferedEv (non-Route Points) or CiscoRouteEvent (Route Points) notification containing an Ipv4 formatted calling party IP address.
getCallingPartyIpAddr() will return the actual calling Party IPv4 address.
getCallingPartyIpAddr_v6() will return NULL.

5. Ipv4_v6(Dual Stack) phone calls a CTI controllable device. Subsequently, the CTI controllable device is monitored by a JTAPI application. JTAPI will generate a CiscoCallCtlConnOfferedEv (non-Route Points) or CiscoRouteEvent (Route Points) notification containing an Ipv4 and Ipv6 calling party IP addresses.
getCallingPartyIpAddr() will return the actual calling Party IPv4 address.
getCallingPartyIpAddr_v6() will return the actual calling Party IPv6 address

6. Ipv4_v6(Dual Stack) phone calls a CTI controllable device that is already monitored by a JTAPI application. JTAPI will generate a CiscoCallCtlConnOfferedEv (non-Route Points) or CiscoRouteEvent (Route Points) notification containing an Ipv4 and Ipv6 calling party IP addresses.
getCallingPartyIpAddr() will return the actual calling Party IPv4 address.
getCallingPartyIpAddr_v6() will return the actual calling Party IPv6 address

RTP Addresses

1. An Ipv6 enabled phone calls an Ipv6 JTAPI Observed phone and the call is answered. JTAPI will generate:

CiscoRTPOutputStartedEv containing the far-end Ipv6 RTP address.

CiscoRTPInputStartedEv containing the Ipv6 RTP address of the monitored phone.

2. An Ipv4 enabled phone calls an Ipv4 JTAPI Observed phone and the call is answered. JTAPI will generate(existing behavior):

CiscoRTPOutputStartedEv containing the far-end Ipv4 RTP address.

CiscoRTPInputStartedEv containing the Ipv4 RTP address of the monitored phone.

3. An Ipv4 enabled phone calls an Ipv6 JTAPI Observed device and the call is answered. JTAPI will generate:

CiscoRTPOutputStartedEv containing the far-end Ipv6 RTP address which corresponds to the MTP that was automatically inserted by Call Manager to perform Ipv4/Ipv6 conversion.

CiscoRTPInputStartedEv containing the Ipv6 RTP address of the monitored phone.

4. An Ipv6 enabled phone calls an Ipv4 JTAPI Observed device and the call is answered. JTAPI will generate:

CiscoRTPOutputStartedEv containing the far-end Ipv4 RTP address which corresponds to the MTP that was automatically inserted by Call Manager to perform Ipv4/Ipv6 conversion.

CiscoRTPInputStartedEv containing the Ipv4 RTP address of the monitored phone.

5. A Dual stack(Ipv4_v6) phone calls another dual stack(Ipv4_v6) JTAPI Observed device, preferred media termination is set to IPv6, and the call is answered then JTAPI will generate:

CiscoRTPOutputStartedEv containing the far-end Ipv6 RTP address of the calling device.

CiscoRTPInputStartedEv containing the Ipv6 RTP address of the monitored phone.

6. A Dual stack(Ipv4_v6) phone calls another dual stack(Ipv4_v6) JTAPI Observed device, preferred media termination is set to IPv4, and the call is answered then JTAPI will generate:

CiscoRTPOutputStartedEv containing the far-end Ipv4 RTP address of the calling device.

CiscoRTPInputStartedEv containing the Ipv4 RTP address of the monitored phone.

7. A Dual stack(Ipv4_v6) phone calls an Ipv4 JTAPI Observed device and the call is answered then JTAPI will generate:

CiscoRTPOutputStartedEv containing the far-end Ipv4 RTP address of the calling device.

CiscoRTPInputStartedEv containing the Ipv4 RTP address of the monitored phone.

8. A Dual stack(Ipv4_v6) phone calls an Ipv6 JTAPI Observed device and the call is answered then JTAPI will generate:

CiscoRTPOutputStartedEv containing the far-end Ipv6 RTP address of the calling device.

CiscoRTPInputStartedEv containing the Ipv6 RTP address of the monitored phone.

9. An IPv4 phone calls a dual stack (Ipv4_v6) JTAPI Observed device and the call is answered then JTAPI will generate:

CiscoRTPOutputStartedEv containing the far-end Ipv4 RTP address of the calling device.

CiscoRTPInputStartedEv containing the Ipv4 RTP address of the monitored phone.

10. An IPv6 phone calls a dual stack (Ipv4_v6) JTAPI Observed device and the call is answered then JTAPI will generate:

CiscoRTPOutputStartedEv containing the far-end Ipv6 RTP address of the calling device.

CiscoRTPInputStartedEv containing the Ipv6 RTP address of the monitored phone.

11. JTAPI observed IPv6 phone(A) calls JTAPI observed IPv4 phone(B). B answers and consults IPv6 phone(C) for Transfer. C answers and B completes the Transfer, then JTAPI will generate:

At A:

CiscoRTPOutputStartedEv containing the far-end Ipv6 RTP address of C.

CiscoRTPInputStartedEv containing the Ipv6 RTP address of A.

At C:

CiscoRTPOutputStartedEv containing the far-end Ipv6 RTP address of A.

CiscoRTPInputStartedEv containing the Ipv4 RTP address of C.

12. JTAPI observed IPv4 phone(A) calls JTAPI observed IPv4 phone(B). B answers and consults IPv6 phone(C) for Transfer. C answers and B completes the Transfer, then JTAPI will generate:

At A:

CiscoRTPOutputStartedEv containing the far-end Ipv4 RTP address which corresponds to the MTP that was automatically inserted by Call Manager to perform Ipv4/Ipv6 conversion.

CiscoRTPInputStartedEv containing the Ipv4 RTP address of A.

At C:

CiscoRTPOutputStartedEv containing the far-end Ipv6 RTP address which corresponds to the MTP that was automatically inserted by Call Manager to perform Ipv4/Ipv6 conversion.

CiscoRTPInputStartedEv containing the Ipv6 RTP address of C.

13. JTAPI observed IPv6 phone(A) calls JTAPI observed IPv4 phone(B). B answers and consults IPv6 phone(C) for conference. C answers and B completes the conference. Conference Bridge has an IPv4 address. Then JTAPI will generate:

At A:

CiscoRTPOutputStartedEv containing the far-end Ipv6 RTP address which corresponds to the MTP that was automatically inserted by Call Manager to perform Ipv4/Ipv6 conversion.

CiscoRTPInputStartedEv containing the Ipv6 RTP address of A.

At B:

CiscoRTPOutputStartedEv containing the far-end Ipv4 RTP address of the Conference Bridge.

CiscoRTPInputStartedEv containing the Ipv4 RTP address of B.

At C:

CiscoRTPOutputStartedEv containing the far-end Ipv6 RTP address which corresponds to the MTP that was automatically inserted by Call Manager to perform Ipv4/Ipv6 conversion.

CiscoRTPInputStartedEv containing the Ipv6 RTP address of C.

CTI Port/Route Point Registration Scenarios

1. CTI Port/Route Point has `IP Addressing Mode' configured as `IPv4_v6'. Application tries to do a static register of that CTI Port/Route Point to CTIManager with IPv6 address and Application addressing capability as IPv6. The registration will succeed and CTI Port/Route Point will get registered with CTIManager with IPv6 address.

2. CTI Port/Route Point has `IP Addressing Mode' configured as `IPv4_v6'. Application tries to do a static register of that CTI Port/Route Point to CTIManager with IPv4 address and Application addressing capability as IPv4. The registration will succeed and CTI Port/Route Point will get registered with CTIManager with IPv4 address.

3. CTI Port/Route Point has `IP Addressing Mode' configured as `IPv4_v6'. Application tries to do a static register of that CTI Port/Route Point to CTIManager with IPv4 and IPv6 addresses and Application addressing capability as IPv4_v6. The registration will succeed and CTI Port/Route Point will get registered with CTIManager with IPv4 and IPv6 addresses.

4. CTI Port/Route Point has `IP Addressing Mode' configured as `IPv4 only'. Application tries to do a static register of that CTI Port/Route Point to CTIManager with IPv4 address and Application addressing capability as IPv4. The registration will succeed and CTI Port/Route Point will get registered with CTIManager with IPv4 address.

5. CTI Port/Route Point has `IP Addressing Mode' configured as `IPv6 only'. Application tries to do a static register of that CTI Port/Route Point to CTIManager with IPv6 address and Application addressing capability as IPv6. The registration will succeed and CTI Port/Route Point will get registered with CTIManager with IPv6 address.

6. CTI Port/Route Point has `IP Addressing Mode' configured as `IPv4 only'. Application tries a static register of that CTI Port/Route Point by providing an IPv6 address or/and by advertising application addressing capability as IPv6 (or Ipv4_v6) only then request will fail with a CiscoRegistrationException.

7. CTI Port/Route Point has `IP Addressing Mode' configured as `IPv6 only'. Application tries to dynamically register that CTI Port/Route Point to CTIManager. IP capabilities advertised by the application at the time of registration are IPv4 (or IPv4_v6) only. Then the request will be denied with a CiscoRegistrationException.

8. CTI Port/Route Point has `IP Addressing Mode' configured as `IPv4 only (or IPv4_v6 both)'. Application tries to dynamically register that CTI Port/Route Point to CTIManager. IP capabilities advertised by the application at the time of registration are IPv4 only. Then the registration will succeed and CTI Port/Route point will get registered with IPv4 address when the same is provided with SetRTPParams request.

9. CTI Port/Route Point has `IP Addressing Mode' configured as `IPv6 only (or IPv4_v6 both)'. Application tries to dynamically register that CTI Port/Route Point to CTIManager. IP capabilities advertised by the application at the time of registration are IPv6 only. Then the registration will succeed and CTI Port/Route point will get registered with IPv6 address when the same is provided with SetRTPParams request.

10. CTI Port/Route Point has `IP Addressing Mode' configured as `IPv4_v6 both'. Application tries to dynamically register that CTI Port/Route Point to CTIManager. IP capabilities advertised by the application at the time of registration are IPv4_v6 both. Then the registration will succeed and CTI Port/Route point will get registered with IPv4_v6 address when the same is provided with SetRTPParams request.

11. If an application tries to dynamically register a CTI Port/Route Point by advertising its IP capabilities as IPv6,which is already registered to another application with IPv4 address. Then the request will be declined with a CiscoRegistrationException or "CiscoTermRegistrationFailedEv" will be sent with new reason code "IP_CAPABILITY_MISMATCH".

Advance Test Cases:

1. Application does a provider Open with IPv4 address to a CTI Manager which has enterprise parameter "Enable IPv6" enabled. Application tries to register a CTI Port/Route point with an IPv6 address whose device IP Addressing Mode is set to "IPv4_v6" by advertising applications addressing capability as "IPv6 only". The registration request will succeed.

2. JTAPI observed IPv6 device A calls another JTAPI observed IPv4 device B, call is offered and answered at B. In that case:
CiscoCallCtlConnOfferedEv.getCallingPartyIpAddr() will return NULL
CiscoCallCtlConnOfferedEv.getCallingPartyIpAddr_v6() will the actual calling Party IPv6 address

At B:

CiscoRTPInputStartedEv will have B's IPv4 Address

CiscoRTPOutputStartedEv will have IPv4 address of the MTP Resource

Interesting thing to notice here is CiscoRTPOutputStartedEv has an IPv4 address while calling party IP Address is an IPv6 address.

Direct Transfer Across Lines Use Cases

Action
Events
Call Info/Expected Result

Application is observing A, B1, B2, and C (B1 and B2 are two Addresses on the same Terminal TB)

A calls B1, B1 answers - GC1

B2 calls C, C answers - GC2

setTransferController to B1

GC1.transfer(GC2)

GC1: CiscoTransferStartEv

GC1: CiscoCallChangedEv

GC1: ConnCreatedEv for C

GC1: ConnConnectedEv for C

GC1: CallCtlConnEstablishedEv for C

GC1: TermConnCreatedEv for TC

GC1: TermConnActiveEvent for TC

GC1: CallCtlTermConnTalkingEv 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 B1

GC1: CallCtlConnDisconnectedEv for B1

GC2: TermConnDroppedEv for TB

GC2: CallCtlTermConnDroppedEv for TB

GC2: ConnDisconnectedEv for B2

GC2: CallCtlConnDisconnectedEv for B2

GC2: CallInvalidEvent

GC2: CallObservationEndedEv

GC1: CiscoTransferEndEv

CiscoTransferStartEv.getControllerTerminalName() returns Terminal name for B1&B2

Application is observing A, B1, B2, and C (B1 and B2 are two Addresses on the same Terminal which allows connected transfer across lines over phone manually which supports this feature)

A calls B1, B1 answers - GC1

B2 calls C, C answers - GC2

 


CiscoTransferStartEv.getControllerTerminalName() returns Terminal name for B1&B2

User B2 presses transfer and user selects active call(AB call) from the phone UI and presses transfer again to do connected Transfer Across Lines

GC2: CallCtlTermConnHeldEv for TB

GC3: CiscoConsultCallActiveEv

GC3: ConnCreatedEv for B2

GC3: ConnConnectedEv for B2

GC3: CallCtlConnInitiatedEv for B2

GC3: TermConnCreatedEv for TB2

GC3: TermConnActiveEvent for TB2

GC3: CallCtlTermConnTalkingEv for TB2

 

User Presses transfer again to complete connected transfer across lines

GC3: TermConnDroppedEv for TB2

GC3: CallCtlTermConnDroppedEv for TB2

GC3: ConnDisconnectedEv for B2

GC3: CallCtlConnDisconnectedEv for B2

GC3: CallInvalidEvent

GC3: CallObservationEndedEv

GC2: CiscoTransferStartEv

GC1: CiscoCallChangedEv

GC2: ConnCreatedEv for A

GC2: ConnConnectedEv for A

GC2: CallCtlConnEstablishedEv for A

GC2: TermConnCreatedEv for TA

GC2: TermConnActiveEvent for TA

GC2: CallCtlTermConnTalkingEv for TA

GC1: TermConnDroppedEv for TA

GC1: CallCtlTermConnDroppedEv for TA

GC1: ConnDisconnectedEv for A

GC1: CallCtlConnDisconnectedEv for A

GC2: TermConnDroppedEv for TB2

GC2: CallCtlTermConnDroppedEv for TB2

GC2: ConnDisconnectedEv for B2

GC2: CallCtlConnDisconnectedEv for B2

GC1: TermConnDroppedEv for TB1

GC1: CallCtlTermConnDroppedEv for TB1

GC1: ConnDisconnectedEv for B1

GC1: CallCtlConnDisconnectedEv for B1

GC1: CallInvalidEvent

GC1: CallObservationEndedEv

GC2: CiscoTransferEndEv

 

Application is observing A, B1, B2:

A calls B1, B1 answers - GC1

B2 calls C, C answers - GC2

setTransferController to B1

GC1.transfer(GC2)

GC1: CiscoTransferStartEv

GC1: CiscoCallChangedEv

GC1: ConnCreatedEv for C

GC1: ConnConnectedEv for C

GC1: CallCtlConnEstablishedEv for C

GC2: ConnDisconnectedEv for C

GC2: CallCtlConnDisconnectedEv for C

GC1: TermConnDroppedEv for TB

GC1: CallCtlTermConnDroppedEv for TB

GC1: ConnDisconnectedEv for B1

GC1: CallCtlConnDisconnectedEv for B1

GC2: TermConnDroppedEv for TB

GC2: CallCtlTermConnDroppedEv for TB

GC2: ConnDisconnectedEv for B2

GC2: CallCtlConnDisconnectedEv for B2

GC2: CallInvalidEvent

GC2: CallObservationEndedEv

GC1: CiscoTransferEndEv


CiscoTransferStartEv.getControllerTerminalName() returns Terminal name for B1&B2

Application is observing B1, B2:

A calls B1, B1 answers - GC1

B2 calls C, C answers - GC2

setTransferController to B1

GC1.transfer(GC2)

GC1: CiscoTransferStartEv

GC1: ConnDisconnectedEv for A

GC1: CallCtlConnDisconnectedEv for A

GC1: TermConnDroppedEv for TB

GC1: CallCtlTermConnDroppedEv for TB

GC1: ConnDisconnectedEv for B1

GC1: CallCtlConnDisconnectedEv for B1

GC1: CallInvalidEv

GC2: ConnDisconnectedEv for C

GC2: CallCtlConnDisconnectedEv for C

GC2: TermConnDroppedEv for TB

GC2: CallCtlTermConnDroppedEv for TB

GC2: ConnDisconnectedEv for B2

GC2: CallCtlConnDisconnectedEv for B2

GC2: CallInvalidEvent

GC1: CiscoTransferEndEv
GC1: CallObservationEndedEv


CiscoTransferStartEv.getControllerTerminalName() returns Terminal name for B1&B2

Application is observing only B1:

A calls B1, B1 answers - GC1

B2 calls C, C answers - GC2

setTransferController to B1

GC1.transfer(GC2)

JTAPI will throw PlatformException "Transfer controller is not set and could not find a suitable TerminalConnection". Since JTAPI can not get/find call leg for B2 from GC2

 

Application is observing only A:

A calls B1, B1 answers - GC1

B2 calls C, C answers - GC2

User presses transfer and selects active call(AB call) from the phone UI and preses Transfer again to do Connected Transfer Across Lines

GC2: CallActiveEvent

GC2: ConnCreatedEv for A

GC2: ConnCreatedEv for C

GC1: CiscoCallChangedEv

GC2: ConnConnectedEv for A

GC2: CallCtlConnEstablishedEv for A

GC2: TermConnCreatedEv for A

GC2: TermConnActiveEvent for A

GC2: CallCtlTermConnTalkingEv for A

GC2: ConnConnectedEv for C

GC2: CallCtlConnEstablishedEv for C

GC1: ConnDisconnectedEv for B1

GC1: CallCtlConnDisconnectedEv for B1

GC1: TermConnDroppedEv for A

GC1: CallCtlTermConnDroppedEv for A

GC1: ConnDisconnectedEv for A

GC1: CallCtlConnDisconnectedEv for A

GC1: CallInvalidEvent

GC1: CallObservationEndedEv


CiscoTransferStartEv.getControllerTerminalName() returns Terminal name for B1&B2

Application is observing only B2:

A calls B1, B1 answers - GC1

B2 calls C, C answers - GC2

setTransferController to B1

GC1.transfer(GC2)

JTAPI will throw PlatformException "Transfer controller is not set and could not find a suitable TerminalConnection" Since JTAPI can not get/find call leg for B1 from GC1

 

Application is observing only C:

A calls B1, B1 answers - GC1

B2 calls C, C answers - GC2

User presses transfer and selects active call(AB call) from the phone UI and preses Transfer again to do Connected Transfer Across Lines.

GC2: CiscoTransferStartEv

GC2: ConnDisconnectedEv for B2

GC2: CallCtlConnDisconnectedEv for B2

GC2: ConnCreatedEv for A

GC2: ConnConnectedEv for A

GC2: CallCtlConnEstablishedEv for A
GC2: CiscoTransferEndEv

CiscoTransferStartEv.getControllerTerminalName() returns Terminal name for B1&B2

New user role(Standard Supports Connected Xfer/Conf) is associated with application user

Application opens a provider and disassociates the above mentioned user role

JTAPI delivers:

ProvInServiceEv

CiscoProviderCapabilityChangedEv

CiscoTermRestrictedEv

CiscoAddrRestrictedEv

(for all the phones that support connected tx/conf across lines)

CiscoProviderCapabilityChangedEv.hasConnectedTransferConferenceCapabilityChanged() returns True

Application is observing A, B1, B2, C and C' (B1 and B2 are two Addresses on the same Terminal, C' is sharedline of C)

A calls B1, B1 answers - GC1

B2 calls C, C answers - GC2

setTransferController to B1

GC1.transfer(GC2)

At Transfer:

GC1: CiscoTransferStartEv
GC2: CiscoCallChangedEv

GC1: ConnCreatedEv for C

GC1: ConnConnectedEv for C

GC1: CallCtlConnEstablishedEv for C

GC1: TermConnCreatedEv for TC'

GC1: TermConnPassiveEvent for TC'

GC1: CallCtlTermConnInUseEv for TC'

GC2: TermConnDroppedEv for TC'

GC2: CallCtlTermConnDroppedEv for TC'

GC2: CiscoCallChangedEv

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 B1

GC1: CallCtlConnDisconnectedEv for B1

GC2: TermConnDroppedEv for TB

GC2: CallCtlTermConnDroppedEv for TB

GC2: ConnDisconnectedEv for B2

GC2: CallCtlConnDisconnectedEv for B2

GC2: CallInvalidEvent

GC2: CallObservationEndedEv

GC1: CiscoTransferEndEv

CiscoTransferStartEv.getControllerTerminalName() returns Terminal name for B1&B2

New user role(Standard Supports Connected Xfer/Conf) is not associated with application user

Application tries to add observer on phone which allows connected transfer/conference across lines

Phones that allow connected transfer/conference across lines are exposed as restricted.

JTAPI throws PlatformExceptionImpl ("Terminal is restricted", CiscoJtapiException.CTIERR_DEVICE_RESTRICTED ).

CiscoTerminal.isRestricted() returns TRUE

New user role(Standard Supports Connected Xfer/Conf) is not associated with application user

Application opens a provider and associates the above mentioned user role

JTAPI delivers:

ProvInServiceEv

CiscoProviderCapabilityChangedEv

CiscoAddrActivatedEv

CiscoTermActivatedEv

(for all the phones that support connected tx/conf across lines)

CiscoProviderCapabilityChangedEv.hasConnectedTransferConferenceCapabilityChanged() returns True


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

Action
Events
Call Info/Expected Result

New Role "Standard Supports Connected Xfer/Conf" to control phones which support connected conference across lines is Not Associated with user.
Phones TA(Line A), TB(Lines B1, B2) and T3(Lines C); TC is a phones which allows connected conference across lines.

Observe All;
GC1: A calls B1,
GC2: B2 calls C

   

Do connected Conference Across Lines manually on Phone TB (which supports this feature) to conference GC1 and GC2

App, gets an PlatformExceptionImpl ("Terminal is restricted", CiscoJtapiException.CTIERR_DEVICE_RESTRICTED ) when the add observer on TB, B1 and B2
GC2: CallCtlTermConnHeldEv for TB
GC3: CiscoConsultCallActiveEv
GC3: ConnCreatedEv for B
GC3: ConnConnectedEv for B
GC3: CallCtlConnInitiatedEv for B
GC3: ConnDisconnectedEv for B
GC3: CallCtlConnDisconnectedEv for B
GC3: CallInvalidEvent
GC3: CallObservationEndedEv
GC2: CiscoConferenceStartEv
GC1: CiscoCallChangedEv
GC2: ConnCreatedEv for A
GC2: ConnConnectedEv for A
GC2: CallCtlConnEstablishedEv for A
GC2: TermConnCreatedEv for TA
GC2: TermConnActiveEvent for TA
GC2: CallCtlTermConnTalkingEv for TA
GC1: TermConnDroppedEv for TA
GC1: CallCtlTermConnDroppedEv for
TA
GC1: ConnDisconnectedEv for A
GC1: CallCtlConnDisconnectedEv for A
GC1: ConnDisconnectedEv for B
GC1: CallCtlConnDisconnectedEv for B
GC1: CallInvalidEvent
GC1: CallObservationEndedEv
GC2: CiscoConferenceEndEv

CiscoConferenceStartEv.getControllerAddress() returns B1
CiscoConferenceStartEv.getControllerTerminalName() returns TB


Enhanced MWI Use Cases

Action
Result

Application calls CiscoAddress.setMessageSummary() to set voice and fax counts on a phone that supports the enhanced message waiting counts.

Phone displays updated voice and fax counts provided and also updates the MWI indicator accordingly. A successful response is returned.

Application calls CiscoAddress.setMessageSummary() to set voice and fax counts on a phone that does not support the enhanced message waiting counts.

Phone only updates the MWI indicator accordingly—no voice and fax counts are displayed on the phone. A successful response is returned

Application calls CiscoAddress.setMessageSummary() to set voice counts, but the "high priority" voice counts provided are bigger than "total" voice counts provided.

The request fails with the following error returned: INVALID_HIGH_PRIORITY_VOICE_COUNTS

Application calls CiscoAddress.setMessageSummary() to set fax counts, but the "total" fax counts provided is bigger than maximum size allowed.

The request fails with the following error returned: INVALID_TOTAL_FAX_COUNTS


Join Across Lines Enhancements

A, C, D, E and F are addresses on different terminals. B1 and B2 are addresses on the same terminal TermB.

A, B1 and C are in a conference call GC1 with B1 as the controller and connected to conference bridge Conference-1. B2, D and E are in conference call GC2 with D as controller and connected to bridge Conference-2.

Action
Events

Application conferences the two calls on B1 and 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
return connections of Conference-1
Ev.getConferenceChain().getChainedConferenceCalls() will return GC3


Call Scenario: A, B1 and C are in conference call GC1 with B1 as controller. B2 is in call GC2 with D

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


Swap or Cancel and Transfer or Conference Behavior Change

Use Case 1

Connected Transfer on the phone which allows connected Transfer


GC1 & GC2 call will be created as normal.

 
A calls B, B answers - GC1

B puts AB call on hold

B calls C, C answers - GC2

GC1: CallCtlTermConnHeldEv for TB

 

User B presses transfer and user selects active call(AB call) from the phone UI

GC2: CallCtlTermConnHeldEv for TB
GC3: CiscoConsultCallActiveEv
GC3: ConnCreatedEv for B
GC3: ConnConnectedEv for B
GC3: CallCtlConnInitiatedEv for B
GC3: TermConnCreatedEv for TB
GC3: TermConnActiveEvent for TB
GC3: CallCtlTermConnTalkingEv for TB

 

User B presses transfer again

GC3: TermConnDroppedEv for TB
GC3: CallCtlTermConnDroppedEv for TB
GC3: ConnDisconnectedEv for B
GC3: CallCtlConnDisconnectedEv for B
GC3: CallInvalidEvent
GC3: CallObservationEndedEv
GC2: CiscoTransferStartEv
GC1: CiscoCallChangedEv
GC2: ConnCreatedEv for A
GC2: ConnConnectedEv for A
GC2: CallCtlConnEstablishedEv for A
GC2: TermConnCreatedEv for TA
GC2: TermConnActiveEvent for TA
GC2: CallCtlTermConnTalkingEv for TA
GC1: TermConnDroppedEv for TA
GC1: CallCtlTermConnDroppedEv for TA
GC1: ConnDisconnectedEv for A
GC1: CallCtlConnDisconnectedEv for A
GC2: TermConnDroppedEv for TB
GC2: CallCtlTermConnDroppedEv for TB
GC2: ConnDisconnectedEv for B
GC2: CallCtlConnDisconnectedEv for B
GC1: TermConnDroppedEv for TBGC1: CallCtlTermConnDroppedEv for TB
GC1: ConnDisconnectedEv for B
GC1: CallCtlConnDisconnectedEv for B
GC1: CallInvalidEvent
GC1: CallObservationEndedEv
GC2: CiscoTransferEndEv

 

Use Case 2

Connected Transfer on phone with sharedline (A and A' are sharedlines)

A calls B, B answers - GC1

B puts AB call on hold

B calls C, C answers - GC2

User B presses transfer and selects active calls (AB call),


User B presses transfer again

GC1 & GC2 call will be created as normal.

GC1: CallCtlTermConnHeldEv for TB

GC2: CallCtlTermConnHeldEv for TB
GC3: CiscoConsultCallActiveEv
GC3: ConnCreatedEv for B
GC3: ConnConnectedEv for B
GC3: CallCtlConnInitiatedEv for B
GC3: TermConnCreatedEv for TB
GC3: TermConnActiveEvent for TB
GC3: CallCtlTermConnTalkingEv for TB|


GC3: TermConnDroppedEv for TB
GC3: CallCtlTermConnDroppedEv for TB
GC3: ConnDisconnectedEv for B
GC3: CallCtlConnDisconnectedEv for B
GC3: CallInvalidEv
GC2: CiscoTransferStartEv
GC1: CiscoCallChangedEv
GC2: ConnCreatedEv for A
GC2: ConnConnectedEv for A
GC2: CallCtlConnEstablishedEv for A
GC2: TermConnCreatedEv for TA'
GC2: TermConnPassiveEvent for TA'
GC2: CallCtlTermConnInUseEv for TA'
GC1: TermConnDroppedEv for TA'
GC1: CallCtlTermConnDroppedEv for TA'
GC2: TermConnCreatedEv for TA
GC2: TermConnActiveEvent for TA
GC2: CallCtlTermConnTalkingEv for TA
GC1: TermConnDroppedEv for TA
GC1: CallCtlTermConnDroppedEv for TA
GC1: ConnDisconnectedEv for A
GC1: CallCtlConnDisconnectedEv for AGC2:
TermConnDroppedEv for TB2
GC2: CallCtlTermConnDroppedEv for TB2
GC2: ConnDisconnectedEv for B2
GC2: CallCtlConnDisconnectedEv for B2
GC1: TermConnDroppedEv for TB1
GC1: CallCtlTermConnDroppedEv for TB1
GC1: ConnDisconnectedEv for B1

 
 
GC1: CallCtlConnDisconnectedEv for B1
GC1: CallInvalidEvent
GC1: CallObservationEndedEv
GC2: CiscoTransferEndEv
 

Use Case 3

Connected Transfer/Conference - Cancel feature

A calls B, B answers - GC1

B puts AB call on hold

B calls C, C answers - GC2

User B presses transfer hard key

User B presses cancel key

GC1 & GC2 call will be created as normal.
GC1: CallCtlTermConnHeldEv for TB

GC2: CallCtlTermConnHeldEv for TB
GC3: CiscoConsultCallActiveEv
GC3: ConnCreatedEv for B
GC3: ConnConnectedEv for B
GC3: CallCtlConnInitiatedEv for B
GC3: TermConnCreatedEv for TB
GC3: TermConnActiveEvent for TB
GC3: CallCtlTermConnTalkingEv for TB

GC3: TermConnDroppedEv for TB
GC3: CallCtlTermConnDroppedEv for TB
GC3: ConnDisconnectedEv for B
GC3: CallCtlConnDisconnectedEv for B
GC3: CallInvalidEv
GC2: CiscoCallFeatureCancelledEv

CiscoCallFeatureCancelledEv.getConsultCall() returns GC3

Use Case 4a

Connected Transfer/Conference - Cancel feature

A calls B, B answers - GC1

B puts AB call on hold

B calls C, C answers - GC2

User B presses transfer hard key

User press select active calls key.

User B presses cancel key

GC1 & GC2 call will be created as normal.
GC1: CallCtlTermConnHeldEv for TB

GC2: CallCtlTermConnHeldEv for TB
GC3: CiscoConsultCallActiveEv
GC3: ConnCreatedEv for B
GC3: ConnConnectedEv for B
GC3: CallCtlConnInitiatedEv for B
GC3: TermConnCreatedEv for TB
GC3: TermConnActiveEvent for TB
GC3: CallCtlTermConnTalkingEv for TB

GC3: TermConnDroppedEv for TB
GC3: CallCtlTermConnDroppedEv for TB
GC3: ConnDisconnectedEv for B
GC3: CallCtlConnDisconnectedEv for B
GC3: CallInvalidEv


GC2: CiscoCallFeatureCancelledEv


CiscoCallFeatureCancelledEv.getConsultCall() returns null

Use Case 4b

Connected Transfer/Conference - Cancel feature

A calls B, B answers - GC1

B puts AB call on hold

B calls C, C answers - GC2

User B presses transfer (or conference) hard key.


User press select active calls key and also selects GC1 (AB call)


User B presses cancel key

GC1 & GC2 call will be created as normal.
GC1: CallCtlTermConnHeldEv for TB

GC2: CallCtlTermConnHeldEv for TB
GC3: CiscoConsultCallActiveEv
GC3: ConnCreatedEv for B
GC3: ConnConnectedEv for B
GC3: CallCtlConnInitiatedEv for B
GC3: TermConnCreatedEv for TB
GC3: TermConnActiveEvent for TB
GC3: CallCtlTermConnTalkingEv for TB

GC3: TermConnDroppedEv for TB
GC3: CallCtlTermConnDroppedEv for TB
GC3: ConnDisconnectedEv for B
GC3: CallCtlConnDisconnectedEv for B
GC3: CallInvalidEv


GC2: CiscoCallFeatureCancelledEv

CiscoCallFeatureCancelledEv.getConsultCall() returns GC1

Use Case 5

Consult Transfer - Swap calls

A calls B, B answers - GC1

B puts AB call on hold

B setup consult Transfer to C, C answers - GC2

User B presses Swap key,

User B presses transfer to complete the transfer


GC1 & GC2 call will be created as normal.

GC1: CallCtlTermConnHeldEv for TB

GC2: CallCtlTermConnHeldEv for TB

GC1: CallCtlTermConnTalkingEv for TB

GC1: CiscoTransferStartEv

GC1: CiscoCallChangedEv

GC1: ConnCreatedEv for C

GC1: ConnConnectedEv for C

GC1: CallCtlConnEstablishedEv for C

GC1: TermConnCreatedEv for TC

GC1: TermConnActiveEvent for TC

GC1: CallCtlTermConnTalkingEv 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 B1

GC1: CallCtlConnDisconnectedEv for B1

GC2: TermConnDroppedEv for TB

GC2: CallCtlTermConnDroppedEv for TB

GC2: ConnDisconnectedEv for B2

GC2: CallCtlConnDisconnectedEv for B2

GC2: CallInvalidEvent

GC2: CallObservationEndedEv

GC1: CiscoTransferEndEv



getCiscoFeatureReason() returns CiscoFeatureReason.REASON_NORMAL

Use Case 6

Consult Transfer - Swap/Cancel

A calls B, B answers - GC1

A puts AB call on hold

B setup consult Transfer to C, C answers - GC2

User B presses press Swap softkey,

User B presses Cancel softkey

GC1 & GC2 call will be created as normal. GC1: CallCtlTermConnHeldEv for TB



For TA (GC2), CallCtlTermConnHeldEv
For TA (GC1), CallCtlTermConnTalkingEv


GC1: CiscoCallFeatureCancelledEv



getCiscoFeatureReason() returns CiscoFeatureReason.REASON_NORMAL


CiscoCallFeatureCancelledEv.getCall() returns GC1
CiscoCallFeatureCancelledEv.getConsultCall() returns GC2

Use Case 7

Consultative Transfer Initiated from Phone, App sends SetupTransfer/Conference request - request fails

A calls B, B answers - GC1

B setups transfer call to C

B calls C, C answers - GC2

Application creates a new call and sends another consult() request

GC1 & GC2 call will be created as normal.




Request will fail with PlatformException "CTIERR_CONSULTCALL_ALREADY_OUTSTANDING"

 

Use Case 8a

Consult Transfer/Conference - Application Resumes primary call on phone which supports connected transfer/conference and sends another consult setup request

GC1: A calls B
GC2: B consults C

Application resumes GC1 on TB

Application creates another call and sends consult() request to call D; D answers

GC1 and GC2 will be created as normal

For TB (GC2), CallCtlTermConnHeldEv

For TB (GC1), CallCtlTermConnTalkingEv

CiscoCallFeatureCancelledEv

Consult call will go through and GC3 will be created as normal





getCiscoFeatureReason() returns CiscoFeatureReason.REASON_NORMAL

CiscoCallFeatureCancelledEv.getCall() returns GC1

CiscoCallFeatureCancelledEv.getConsultCall() returns GC2

Use Case 8b

Consult Transfer/Conference - Manually Resume primary call on phone which supports connected transfer/conference and then sends another consult setup request

GC1: A calls B
GC2: B consults C

User manually resumes (SWAP) GC1 on B

Application creates another call and sends consult() request to call D; D answers

GC1 and GC2 will be created as normal

On Manual Resume or Swap, Consult Call will not be cancelled on the phone, nor will application get CiscoCallFeatureCancelledEv.


When application tries to setup another consult, it will go through (GC3 will be created as normal) and it will cancel the existing consult call and application will get:
CiscoCallFeatureCancelledEv

CiscoCallFeatureCancelledEv.getCall() returns GC1

CiscoCallFeatureCancelledEv.getConsultCall() returns GC2

Use Case 9

Connected Conference
A (Phone which allows connected conference) calls B, B answer, B puts A onhold,
B calls C, C answer

B press "Conference" hardkey, and picks active call from UI, and selects AB call

B press "Conference" again to complete connected conference

GC1 & GC2 call will be created as normal.
C1: CallCtlTermConnHeldEv for TB

GC2: CallCtlTermConnHeldEv for TB
GC3: CiscoConsultCallActiveEv
GC3: ConnCreatedEv for B
GC3: ConnConnectedEv for B
GC3: CallCtlConnInitiatedEv for B
GC3: TermConnCreatedEv for TB
GC3: TermConnActiveEvent for TB
GC3: CallCtlTermConnTalkingEv for TB

GC3: TermConnDroppedEv for TB
GC3: CallCtlTermConnDroppedEv for TB
GC3: ConnDisconnectedEv for B
GC3: CallCtlConnDisconnectedEv for B
GC3: CallInvalidEvent
GC3: CallObservationEndedEv
GC2: CiscoConferenceStartEv
GC1: CiscoCallChangedEv
GC2: ConnCreatedEv for A
GC2: ConnConnectedEv for A
GC2: CallCtlConnEstablishedEv for A
GC2: TermConnCreatedEv for TA
GC2: TermConnActiveEvent for TA
GC2: CallCtlTermConnTalkingEv for TA
GC1: TermConnDroppedEv for TA
GC1: CallCtlTermConnDroppedEv for TA
GC1: ConnDisconnectedEv for A
GC1: CallCtlConnDisconnectedEv for A
GC1: TermConnDroppedEv for TB
GC1: CallCtlTermConnDroppedEv for TB
GC1: ConnDisconnectedEv for B
GC1: CallCtlConnDisconnectedEv for B
GC1: CallInvalidEvent
GC1: CallObservationEndedEv
GC2: CiscoConferenceEndEv

 

Use Case 10

Consult Conference from Phone, then Swap and complete conference through phone

A calls B,B answer
B setup conference to C, C answer

B press "Swap" softkey

A press "Conference"

GC1 & GC2 call will be created as normal.


GC2: CallCtlTermConnHeldEv for TB
GC1: CallCtlTermConnTalkingEv for TB

GC2: CiscoConferenceStartEv
GC1: CiscoCallChangedEv
GC2: ConnCreatedEv for A
GC2: ConnConnectedEv for A
GC2: CallCtlConnEstablishedEv for A
GC2: TermConnCreatedEv for TA
GC2: TermConnActiveEvent for TA
GC2: CallCtlTermConnTalkingEv for TA
GC1: TermConnDroppedEv for TA
GC1: CallCtlTermConnDroppedEv for TA
GC1: ConnDisconnectedEv for A
GC1: CallCtlConnDisconnectedEv for A
GC1: TermConnDroppedEv for TB
GC1: CallCtlTermConnDroppedEv for TB
GC1: ConnDisconnectedEv for B
GC1: CallCtlConnDisconnectedEv for B
GC1: CallInvalidEvent
GC1: CallObservationEndedEv
GC2: CiscoTransferEndEv


getCiscoFeatureReason() returns CiscoFeatureReason.REASON_NORMAL

Use Case 11

Consult Conference from Phone and then Swap and Cancel conference thru phone A calls B, B answer

B setup conference to C, C answer

A press "Swap" key, and picks active call from UI, and selects AB call

B press "Cancel"

GC1 & GC2 call will be created as normal.

GC1: CallCtlTermConnTalkingEv for TB
GC2: CallCtlTermConnHeldEv for TB

GC1: CiscoCallFeatureCancelledEv(consultCall = GC2)


getCiscoFeatureReason() returns CiscoFeatureReason.REASON_NORMAL

CiscoCallFeatureCancelledEv.getCall() returns GC1

CiscoCallFeat