Table Of Contents
Message Sequence Charts
Agent Greeting
API for Exposing Built-in-Bridge Status
Backward Compatibility Enhancements
Barge and Privacy
Barge
CBarge
Privacy
Call Control Discovery
CallFwdAll Keys Press Notification
CallSelect and UnSelect
Cius Persistency
Conference and Join
Join/Arbitrary Conference
Consult Conference
Join Across Lines with Enhancements
CTI Remote Device
Device and Line Restriction
Device State Server
Do Not Disturb
DND-R
Dynamic CTIPort Registration Per Call
E911 Teleworker
End to End Call Tracing
Energywise Deep Sleep Mode
External Call Control
Use Cases for BasicCall
Use Cases for Calls Going through Translation Pattern with CEPN Info in Cc Signals
WildCard Routepoint Interaction (Behavior Change)
WildCard Routepoint Interaction (Original Behavior)
External Call Control Use Cases
Chaperone Use Cases
Extension Mobility Cross Cluster
Forced Authorization and Customer Matter Codes
Hairpin Support
Half Duplex Media
Hunt List
Hunt list Connected Number
Intercom
iSac Codec
JTAPI Cisco Unified IP 7931G Phone Interaction
Locale Infrastructure Development Scenarios
Calling Party Normalization
Click to Conference
Call Pickup
selectRoute() with Calling Search Space and Feature Priority
Extension Mobility Login Username
Calling Party IP Address
CiscoJtapiProperties
IPv6 Support
Provider Open Scenario
Calling Party IP Address scenarios:
RTP Addresses
CTI Port/Route Point Registration Scenarios
Advance Test Cases:
Direct Transfer Across Lines Use Cases
Connected Conference or Join Across Lines Use Cases - New Phones Behavior
Enhanced MWI Use Cases
Join Across Lines Enhancements
Swap or Cancel and Transfer or Conference Behavior Change
Drop Any Party Use Cases
Park Monitoring Support
Use Case 1: Park Monitoring States
Use case 2: Shared line scenario - Cisco Unified IP Phone Does Park
Use case 3: Shared Line Scenario - Cisco Unified IP Phone 7900 Series with SIP Does Park
Use Case 4: Use Case for Snap Shot Scenario
Use Case 5: Park DN is Monitored
Use case 6: Query Number of Parked Calls
Use case 7: Filter Enabling or Disabling
Use case 8: Filter Enabling or Disabling
Use case 9: Filter Enabling or Disabling
Use Case 10: Filter Enabling or Disabling
Additional Use Cases for Park Monitoring
Use Cases Related to DPark
Logical Partitioning Feature Use Cases
Shared Lines
Call Park Reversion with Shared Lines in Different Geographic Locations
ComponentUpdater Enhancement Use cases
IPv6 Support
Support for Cisco Unified IP Phone 6900 Series
Terminal and Address Capability Settings Use Cases
Media Termination at Route Point
Modifying Calling Number
AutoAccept for CTIPort and RoutePoint
Native Queuing
Queuing of Call
De-Queuing of a Call
Maximum in-queue timer expires
Maximum in-queue timer expires, with destination as another HP who's member E is free
Maximum in-queue timer expires, with destination as another HP who's members are busy
Queue is full
When "Disconnect" is selected for queue full
No Agents are logged in
Caller redirects while in queue
Caller (observed) conferences while in queue
Partition Support
Using getPartition() API
Using getAddress (String number, String partition)
Park DN
Partition Change
JTAPI Partition Support
Play Zip Tone
QoS Support
JTAPI QoS
QSIG Path Replacement
Recording and Monitoring
Redirect Set OriginalCalledID
Secure Conferencing
Secure Connection Enhancements
Secure Icon Enhancements
Secured Monitoring and Recording
Shared Line Support
AddressInService/AddressOutofService Events
Incoming Call to Shared Address
Outgoing Call from Shared Address
Shared Address Calling Itself
Single Sign-On
Single Step Transfer
SIP REPLACE
SIP REFER
IN-Dialog REFER Scenario
OutOfDialog Refer
SIP 3XX Redirection
SIP Support
SIP Trunk Early Offer
SRTP Key Material
Super Provider Message Flow
SuperProvider and Change Notification Enhancements Use Cases
Support for Cisco Unified IP Phone 6901
TLS Security
Transfer and Direct Transfer
DirectTransfer/Arbitrary Transfer Scenario
Direct Transfer/Arbitrary Transfer—Page 2
Consult Transfer
Unicode Support
Unrestricted Unified CM
Verification Involving PSTN Reachability
Whisper Coaching
Message Sequence Charts
This appendix contains the message sequence charts, which illustrate the message flows for the following scenarios:
•
Agent Greeting
•
API for Exposing Built-in-Bridge Status
•
Backward Compatibility Enhancements
•
Barge and Privacy
•
Call Control Discovery
•
Call Pickup
•
Cius Persistency
•
Conference and Join
•
CTI Remote Device
•
Device and Line Restriction
•
Device State Server
•
Do Not Disturb
•
Dynamic CTIPort Registration Per Call
•
End to End Call Tracing
•
Energywise Deep Sleep Mode
•
External Call Control
•
Extension Mobility Cross Cluster
•
Hairpin Support
•
Half Duplex Media
•
Hunt List
•
Hunt list Connected Number
•
iSac Codec
•
JTAPI Cisco Unified IP 7931G Phone Interaction
•
Full-Event Use Case 1: (Observing All Devices): Auto-Pickup Disabled
•
Modifying Calling Number
•
Native Queuing
•
Partition Support
•
Play Zip Tone
•
QoS Support
•
QSIG Path Replacement
•
Recording and Monitoring
•
Redirect Set OriginalCalledID
•
Secure Conferencing
•
Secure Connection Enhancements
•
Secure Icon Enhancements
•
Secured Monitoring and Recording
•
Shared Line Support
•
Single Sign-On
•
Single Step Transfer
•
SIP REPLACE
•
SIP Support
•
TLS Security
•
SRTP Key Material
•
Super Provider Message Flow
•
Support for Cisco Unified IP Phone 6901
•
TLS Security
•
TLS Security
•
Transfer and Direct Transfer
•
Unicode Support
•
Unrestricted Unified CM
•
Verification Involving PSTN Reachability
•
Whisper Coaching
Agent Greeting
The basic Agent Greeting use cases assume a common setup.
In the real-world scenario, an external customer calls a number and is routed through an IVR until the call is eventually offered to an agent.
IP Phones:
•
Customer (1000)
•
Agents (2000, 2001, 2002)
•
IVRs (5000, 5001)
Scenario One
Agent Greeting Start Success
Action
|
Events
|
Call Information / Notes
|
1. Customer dials the agent.
|
GC1 - CallActiveEvent
GC1 - ConnCreatedEvent (1000)
GC1 - ConnConnectedEvent (1000)
GC1 - CallCtlConnInitiatedEv (1000)
GC1 - TermConnCreatedEvent (Term of 1000)
GC1 - TermConnActiveEvent (Term of 1000)
GC1 - CallCtlTermConnTalkingEv (Term of 1000)
GC1 - CallCtlConnDialingEv (1000)
GC1 - CallCtlConnEstablishedEv (1000)
GC1 - ConnCreatedEvent (2000)
GC1 - ConnInprogressEvent (2000)
GC1 - CallCtlConnOfferedEv (2000)
GC1 - ConnAlertingEvent (2000)
GC1 - CallCtlConnAlertingEv (2000)
GC1 - TermConnCreatedEvent (Term of 2000)
GC1 - TermConnRingingEvent (Term of 2000)
GC1 - CallCtlTermConnRingingEv (Term of 2000)
GC1 - ConnConnectedEvent (2000)
GC1 - CallCtlConnEstablishedEv (2000)
GC1 - TermConnActiveEvent (Term of 2000)
GC1 - CallCtlTermConnTalkingEv (Term of 2000)
|
This is a basic call.
Calling = 1000 (Customer)
Called = 2000 (Agent)
|
2. Application gets the TerminalConnection for 2000 on GC1 and invokes addMediaStream( "5000", "2000" )
|
GC2 - CallActiveEvent
GC2 - ConnCreatedEvent (5000)
GC2 - ConnInprogressEvent (5000)
GC2 - CallCtlConnOfferedEv (5000)
GC2 - ConnAlertingEvent (5000)
GC2 - CallCtlConnAlertingEv (5000)
GC2 - TermConnCreatedEvent (Term of 5000)
GC2 - TermConnRingingEvent (Term of 5000)
GC2 - CallCtlTermConnRingingEv (Term of 5000)
GC2 - ConnConnectedEvent (5000)
GC2 - CallCtlConnEstablishedEv (5000)
GC2 - TermConnActiveEvent (Term of 5000)
GC2 - CallCtlTermConnTalkingEv (Term of 5000)
GC1 - CiscoMediaStreamStartedEv (2000)
|
This is a server call.
Calling = 2000 (Agent)
Called = 5000 (IVR)
The Calling Party number is as specified in the addMediaStream() method ("2000" in this case), and is available immediately from the CallActiveEvent.
Note No connection for 2000 is created, as 2000 is "spoofed".
Agent Greeting is complete.
|
3. Application disconnects IVR, or tester manually hangs up the IVR device.
|
GC2 - CallCtlTermConnDroppedEv (Term of 5000)
GC2 - ConnDisconnectedEvent (5000)
GC2 - CallCtlConnDisconnectedEv (5000)
GC2 - CallInvalidEvent (5000)
GC2 - CallObservationEndedEv
GC1 - CiscoMediaStreamEndedEv (2000)
|
BIB call is cleaned up.
Ev.isSuccessful() = true.
The call continues as normal.
|
4. Agent finishes the conversation and ends the call
|
GC1 - TermConnDroppedEv (Term of 2000)
GC1 - CallCtlTermConnDroppedEv (Term of 2000)
GC1 - ConnDisconnectedEvent (2000)
GC1 - CallCtlConnDisconnectedEv (2000)
GC1 - TermConnDroppedEv (Term of 1000)
GC1 - CallCtlTermConnDroppedEv (Term of 1000)
GC1 - ConnDisconnectedEvent (1000)
GC1 - CallCtlConnDisconnectedEv (1000)
GC1 - CallInvalidEvent
GC1 - CallObservationEndedEv
|
Primary call is cleaned up.
|
Scenario Two
Agent Greeting Stop Success
Agent
|
Events
|
Call Information / Notes
|
1. Customer calls the agent and the agent answers. Application invokes addMediaStream().
|
GC1 - CiscoMediaStreamStartedEv (2000)
|
Ev.getIVRCall() = Call for CG2.
|
2. While the greeting is played, the application invokes removeMediaStream().
|
GC2 - CallCtlTermConnDroppedEv (Term of 5000)
GC2 - ConnDisconnectedEvent (5000)
GC2 - CallCtlConnDisconnectedEv (5000)
GC2 - CallInvalidEvent (5000)
GC2 - CallObservationEndedEv
GC1 - CiscoMediaStreamEndedEv (2000)
|
The Agent Greeting is cut short. The BIB call is cleaned up.
Ev.isSuccessful() = true.
The call continues as normal.
|
3. The agent finishes the conversation and ends the call.
|
GC1 - TermConnDroppedEv (Term of 2000)
GC1 - CallCtlTermConnDroppedEv (Term of 2000)
GC1 - ConnDisconnectedEvent (2000)
GC1 - CallCtlConnDisconnectedEv (2000)
GC1 - TermConnDroppedEv (Term of 1000)
GC1 - CallCtlTermConnDroppedEv (Term of 1000)
GC1 - ConnDisconnectedEvent (1000)
GC1 - CallCtlConnDisconnectedEv (1000)
GC1 - CallInvalidEvent
GC1 - CallObservationEndedEv
|
The primary call is cleaned up.
|
Scenario Three
Agent Greeting Start Failure: Resource Unavailable
Agent
|
Event
|
Call Information / Notes
|
1. Customer dials the Agent
|
GC1 - CallActiveEvent
GC1 - ConnCreatedEvent (1000)
GC1 - ConnConnectedEvent (1000)
GC1 - CallCtlConnInitiatedEv (1000)
GC1 - TermConnCreatedEvent (Term of 1000)
GC1 - TermConnActiveEvent (Term of 1000)
GC1 - CallCtlTermConnTalkingEv (Term of 1000)
GC1 - CallCtlConnDialingEv (1000)
GC1 - CallCtlConnEstablishedEv (1000)
GC1 - ConnCreatedEvent (2000)
GC1 - ConnInprogressEvent (2000)
GC1 - CallCtlConnOfferedEv (2000)
GC1 - ConnAlertingEvent (2000)
GC1 - CallCtlConnAlertingEv (2000)
GC1 - TermConnCreatedEvent (Term of 2000)
GC1 - TermConnRingingEvent (Term of 2000)
GC1 - CallCtlTermConnRingingEv (Term of 2000)
GC1 - ConnConnectedEvent (2000)
GC1 - CallCtlConnEstablishedEv (2000)
GC1 - TermConnActiveEvent (Term of 2000)
GC1 - CallCtlTermConnTalkingEv (Term of 2000)
|
This is a basic call
Calling = 1000 (Customer)
Called = 2000 (Agent)
|
2. The application gets the TerminalConnection for 2000 on GC1and invokes addMediaStream( "5000", "2000" ).
|
|
No BIB call is created. JTAPI throws a ResourceUnavailableException with text as "Unable to allocate built in bridge resource".
The call continues as normal.
|
3. The agent finishes the conversation and ends the call.
|
GC1 - TermConnDroppedEv (Term of 2000)
GC1 - CallCtlTermConnDroppedEv (Term of 2000)
GC1 - ConnDisconnectedEvent (2000)
|
The primary call is cleaned up.
|
API for Exposing Built-in-Bridge Status
Phone TermA, CTI port TermB, and RoutePoint TermC are in application's control list.
Use Case One
BIB is disabled on service parameters and device page of TermA.
Action
|
Result
|
Call Information
|
TermA.isBuiltInBridgeEnabled()
|
False
|
|
TermB.isBuiltInBridgeEnabled()
|
MethodNotSupportedException
|
|
TermC.isBuiltInBridgeEnabled()
|
MethodNotSupportedException
|
|
Use Case Two
BIB is disabled on service parameters page and enabled on device page of TermA..
Action
|
Result
|
Call Information
|
TermA.isBuiltInBridgeEnabled()
|
True
|
|
TermB.isBuiltInBridgeEnabled()
|
MethodNotSupportedException
|
|
TermC.isBuiltInBridgeEnabled()
|
MethodNotSupportedException
|
|
Use Case Three
BIB is enabled on service parameters page and disabled on device page of TermA.
Action
|
Result
|
Call Information
|
TermA.isBuiltInBridgeEnabled()
|
False
|
|
TermB.isBuiltInBridgeEnabled()
|
MethodNotSupportedException
|
|
TermC.isBuiltInBridgeEnabled()
|
MethodNotSupportedException
|
|
Use Case Four
BIB is enabled on service parameters page and set to default on device page of TermA.
Action
|
Result
|
Call Information
|
TermA.isBuiltInBridgeEnabled()
|
True
|
|
TermB.isBuiltInBridgeEnabled()
|
MethodNotSupportedException
|
|
TermC.isBuiltInBridgeEnabled()
|
MethodNotSupportedException
|
|
Use Case Five
Phone TermA is not registered. BIB is enabled on device page of TermA.
Action
|
Result
|
Call Information
|
TermA.isBuiltInBridgeEnabled()
|
InvalidStateException
|
|
Add observers and register TermB and TermC.
|
|
|
TermB.isBuiltInBridgeEnabled()
|
MethodNotSupportedException
|
|
TermC.isBuiltInBridgeEnabled()
|
MethodNotSupportedException
|
|
Backward Compatibility Enhancements
This feature is not expected to change the performance or scalability of Cisco Unified Communications Manager JTAPI. There is no change in the number of events between JTAPI and CTI. For features involving GCID changes this feature introduces one extra event which should not cause any performance issues.
In all cases events listed below are delivered to call observers when only one party is in control list. TERMA indicates terminal of A.
Scenario One
A calls B, B transfers the call to C. GC1 is the call between A and B, GC2 is the consult call between B and C. Similar events are delivered for Conference and other features.
Action
|
Events
|
B completes the transfer. Events to call observer on C
|
GC2 CiscoTransferStartEv Cause: CAUSE_NORMAL Reason=REASON_TRANSFER
CallActiveEv GC1 Cause: CAUSE_NORMAL CiscoCause: CAUSE_NORMALUNSPECIFIED Reason=REASON_TRANSFER
ConnCreatedEv C Cause: CAUSE_NORMAL CiscoCause: CAUSE_NORMALUNSPECIFIED Reason=REASON_TRANSFER
ConnCreatedEv B Cause: CAUSE_NORMAL CiscoCause: CAUSE_NORMALUNSPECIFIED Reason=REASON_TRANSFER
CiscoCallChangedEv SurvingCall=GC1, original call=GC2 CiscoCause: NORMAL Reason: REASON_TRANSFER
|
Events delivered to CallObserver of B (transfer controller)
|
ConnConnectedEv C Cause: CAUSE_NORMAL CiscoCause: CAUSE_NORMALUNSPECIFIED Reason=REASON_TRANSFER
CallCtlConnEstablishedEv C Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER CiscoCause: CAUSE_NORMALUNSPECIFIED Reason=REASON_TRANSFER
TermConnCreatedEv TERM C Cause: CAUSE_NORMAL CiscoCause: CAUSE_NORMALUNSPECIFIED Reason=REASON_TRANSFER
TermConnActiveEv TERM C Cause: CAUSE_NORMAL CiscoCause: CAUSE_NORMALUNSPECIFIED Reason=REASON_TRANSFER
CallCtlTermConnTalkingEv TERM C Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER CiscoCause: CAUSE_NORMALUNSPECIFIED Reason=REASON_TRANSFER
ConnConnectedEv B Cause: CAUSE_NORMAL CiscoCause: CAUSE_NORMALUNSPECIFIED Reason=REASON_TRANSFER
GC2: ConnDisconnectedEv B REASON=REASON_TRANSFER Cause: CAUSE_NORMAL
GC2: ConnDisconnectedEv C REASON=REASON_TRANSFER Cause: CAUSE_NORMAL
GC2: TermConnDropped TERMB REASON=REASON_TRANSFER Cause: CAUSE_NORMAL
GC2: CalInvalid REASON=REASON_TRANSFER Cause: CAUSE_NORMAL
GC1: CallCtlTermConnHeldEv TERMB REASON=REASON_TRANSFER Cause: CAUSE_NORMAL CallControlCause: CAUSE_NORMAL
GC2: ConsultCallActive REASON=NORMAL Cause: CAUSE_NEW_CALL
GC2: ConnCreatedEv B REASON=NORMAL Cause: CAUSE_NORMAL
GC2: ConnConnectedEv B REASON=NORMAL Cause: CAUSE_NORMAL
GC1: ConnDisconnectedEv B REASON=REASON_TRANSFER Cause: CAUSE_UNKNOWN
|
Events delivered to CallObserver of B (transfer controller) (continued)
|
GC1: CallCtlConnDisconnectedEv B REASON=REASON_TRANSFER Cause: CAUSE_UNKNOWN CallControlCause: CAUSE_TRANSFER
GC1: TermConnDroppedEv TERMB REASON=REASON_TRANSFER Cause: CAUSE_UNKNOWN
GC1: CallCtlTermConnDroppedEv TERMB REAASON=REASON_TRANSFER CallControlCause: CAUSE_TRANSFER
GC1: ConnDisconnectedEv A REASON=REASON_TRANSFER
GC1: CallCtlConnDisconnectedEv A REASON=REASON_TRANSFER CallControlCause: CAUSE_TRANSFER
GC1: CallInvalidEv REASON=REASON_TRANSFER
GC2: ConnDisconnectedEv C REASON=REASON_TRANSFER
GC2: CallCtlConnDisconnectedEv C REASON=REASON_TRANSFER CallControlCause: CAUSE_TRANSFER
GC2: TermConnDroppedEv TERMB REASON=REASON_TRANSFER
GC2: CallCtlTermConnDroppedEv TERMB REASON=REASON_TRANSFER CallControlCause: CAUSE_TRANSFER
GC2: ConnDisconnectedEv B REASON=REASON_TRANSFER
GC2: CallCtlConnDisconnectedEv B REASON=REASON_TRANSFER CallControlCause: CAUSE_TRANSFER
GC2: CallInvalidEv REASON=REASON_TRANSFER
GC2: CallObservationEndedEv REASON=NORMAL Cause: CAUSE_NORMAL
GC1 CiscoTransferEndEv REASON=REASON_TRANSFER Cause: CAUSE_NORMAL
GC2 CallObservationEndedEv REASON=NORMAL Cause: CAUSE_NORMAL
|
Scenario Two
A calls B, call=GC1. B parks the call at 99999. C unparks the call using call GC2.
Action
|
Events
|
Events delivered to call observer on A when call is parked.
When call is unparked using GC2
|
GC1: ConnDisconnectedEv B REASON=REASON_PARK Cause: CAUSE_NORMAL
GC1: CallCtlConnDisconnectedEv B REASON=REASON_PARK Cause: CAUSE_NORMAL CallControlCause: CAUSE_PARK
GC1: ConnCreatedEv 9999 REASON=REASON_PARK Cause: CAUSE_NORMAL
GC1: ConnInProgressEv 9999 REASON=REASON_PARK Cause: CAUSE_NORMAL
GC1: CallCtlConnQueuedEv 9999 REASON=REASON_PARK Cause: CAUSE_NORMAL CallControlCause: CAUSE_PARK
GC2: CiscoCallChangedEv Surviving= GC2 origcall= GC1 address= A REASON=REASON_UNPARK
CallActiveEv REASON=REASON_UNPARK Cause: CAUSE_NEW_CALL
GC2: ConnCreatedEv A REASON=REASON_UNPARK Cause: CAUSE_NORMAL
GC2: ConnConnectedEv A REASON=REASON_UNPARK Cause: CAUSE_NORMAL
GC2: CallCtlConnEstablishedEv A REASON=REASON_UNPARK Cause: CAUSE_NORMAL CallControlCause: CAUSE_PARK
GC2: TermConnCreatedEv TERMA REASON=REASON_UNPARK
GC2: TermConnActiveEv TERMA REASON=REASON_UNPARK Cause: CAUSE_NORMAL
GC2: CallCtlTermConnTalkingEv TERMA REASON=REASON_UNPARK Cause: CAUSE_NORMAL CallControlCause: CAUSE_PARK
|
| |
GC1: ConnDisconnectedEv 9999 REASON=REASON_UNPARK Cause: CAUSE_NORMAL
GC1: CallCtlConnDisconnectedEv 9995 REASON=REASON_UNPARK Cause: CAUSE_NORMAL CallControlCause: CAUSE_PARK
GC1: TermConnDroppedEv TERMA REASON=REASON_UNPARK Cause: CAUSE_NORMAL
GC1: CallCtlTermConnDroppedEv TERMA REASON=REASON_UNPARK Cause: CAUSE_NORMAL CallControlCause: CAUSE_PARK
GC1: ConnDisconnectedEv A REASON=REASON_UNPARK Cause: CAUSE_NORMAL
GC1: CallCtlConnDisconnectedEv A REASON=REASON_UNPARK Cause: CAUSE_NORMAL CallControlCause: CAUSE_PARK
GC1: CallInvalidEv REASON=REASON_UNPARK Cause: CAUSE_NORMAL
GC1: CallObservationEndedEv REASON=NORMAL Cause: CAUSE_NORMAL
GC2: ConnCreatedEv C REASON=REASON_UNPARK Cause: CAUSE_NORMAL
GC2: ConnConnectedEv C REASON=UNPARK Cause: CAUSE_NORMAL
GC2: CallCtlConnEstablishedEv C REASON=UNPARK Cause: CAUSE_NORMAL CallControlCause: CAUSE_PARK
|
Scenario Three
A calls B, B has forward no answer to C. B does not answer and call is offered to C.
Action
|
Events
|
Events delivered to call observer on A.
|
GC1: CallActiveEv REASON=NORMAL Cause: CAUSE_NEW_CALL
GC1: ConnCreatedEv A REASON=NORMAL Cause: CAUSE_NORMAL
GC1: ConnConnectedEv A REASON=NORMAL Cause: CAUSE_NORMAL
GC1: CallCtlConnInitiatedEv A REASON=NORMAL Cause: CAUSE_NORMAL CallControlCause: CAUSE_NORMAL
GC1: TermConnCreatedEv TERMA REASON=NORMAL
GC1: TermConnActiveEv TERMA REASON=NORMAL Cause: CAUSE_NORMAL
GC1: CallCtlTermConnTalkingEv TERMA REASON=NORMAL Cause: CAUSE_NORMAL CallControlCause: CAUSE_NORMAL
GC1: CallCtlConnDialingEv A REASON=NORMAL Cause: CAUSE_NORMAL CallControlCause: CAUSE_NORMAL
GC1: CallCtlConnEstablishedEv A REASON=NORMAL Cause: CAUSE_NORMAL CallControlCause: CAUSE_NORMAL
GC1: ConnCreatedEv B REASON=NORMAL Cause: CAUSE_NORMAL
GC1: ConnInProgressEv B REASON=NORMAL Cause: CAUSE_NORMAL
GC1: CallCtlConnOfferedEv B REASON=NORMAL Cause: CAUSE_NORMAL CallControlCause: CAUSE_NORMAL
|
Events delivered to call observer on A. (continued)
|
GC1: ConnAlertingEv B REASON=NORMAL Cause: CAUSE_NORMAL
GC1: CallCtlConnAlertingEv B REASON=NORMAL Cause: CAUSE_NORMAL CallControlCause: CAUSE_NORMAL
GC1: ConnCreatedEv C REASON=REASON_FORWARDNOANSWER Cause: CAUSE_NORMAL
GC1: ConnInProgressEv C REASON= REASON_FORWARDNOANSWER Cause: CAUSE_NORMAL
GC1: CallCtlConnOfferedEv C REASON= REASON_FORWARDNOANSWER Cause: CAUSE_NORMAL CallControlCause: CAUSE_REDIRECTED
GC1: ConnAlertingEv C REASON= REASON_FORWARDNOANSWER Cause: CAUSE_NORMAL
GC1: CallCtlConnAlertingEv C REASON= REASON_FORWARDNOANSWER Cause: CAUSE_NORMAL CallControlCause: CAUSE_NORMAL
GC1: ConnDisconnectedEv B REASON= REASON_FORWARDNOANSWER Cause: CAUSE_NORMAL
GC1: CallCtlConnDisconnectedEv B REASON= REASON_FORWARDNOANSWER Cause: CAUSE_NORMAL CallControlCause: CAUSE_REDIRECTED
GC1: ConnConnectedEv C REASON=NORMAL Cause: CAUSE_NORMAL
GC1: CallCtlConnEstablishedEv C REASON=NORMAL Cause: CAUSE_NORMAL CallControlCause: CAUSE_NORMAL
|
Scenario Four
A call B, B redirects the call to C.
Action
|
Events
|
Events delivered to call observer on B.
|
GC1: CallActiveEv REASON=NORMAL Cause: CAUSE_NEW_CALL
GC1: ConnCreatedEv B REASON=NORMAL Cause: CAUSE_NORMAL
GC1: ConnInProgressEv REASON=NORMAL Cause: CAUSE_NORMAL
GC1: CallCtlConnOfferedEv B REASON=NORMAL Cause: CAUSE_NORMAL CallControlCause: CAUSE_NORMAL
GC1: ConnCreatedEv A REASON=NORMAL Cause: CAUSE_NORMAL
GC1: ConnConnectedEv A REASON=NORMAL Cause: CAUSE_NORMAL
GC1: CallCtlConnEstablishedEv A REASON=NORMAL Cause: CAUSE_NORMAL CallControlCause: CAUSE_NORMAL
GC1: ConnAlertingEv B REASON=NORMAL Cause: CAUSE_NORMAL
GC1: CallCtlConnAlertingEv B REASON=NORMAL Cause: CAUSE_NORMAL CallControlCause: CAUSE_NORMAL
GC1: TermConnCreatedEv TERMB REASON=NORMAL Cause: Other: 0
GC1: TermConnRingingEv TERMB REASON=NORMAL Cause: CAUSE_NORMAL
GC1: CallCtlTermConnRingingEvImpl TERMB REASON=NORMAL Cause: CAUSE_NORMAL CallControlCause: CAUSE_NORMAL
|
Events delivered to call observer on B. (continued)
|
GC1: ConnDisconnectedEv A REASON=REDIRECT Cause: CAUSE_NORMAL
GC1: CallCtlConnDisconnectedEv A REASON=REDIRECT Cause: CAUSE_NORMAL CallControlCause: CAUSE_REDIRECTED
GC1: TermConnDroppedEv TERMB REASON=REDIRECT Cause: CAUSE_NORMAL
GC1: CallCtlTermConnDroppedEv TERMB REASON=REDIRECT Cause: CAUSE_NORMAL CallControlCause: CAUSE_REDIRECTED
GC1: ConnDisconnectedEv B REASON=REDIRECT Cause: CAUSE_NORMAL
GC1: CallCtlConnDisconnectedEv B REASON=REDIRECT Cause: CAUSE_NORMAL CallControlCause: CAUSE_REDIRECTED
GC1: CallInvalidEv REASON=REDIRECT Cause: CAUSE_NORMAL
|
Barge and Privacy
The following diagrams illustrate the message flows for Barge and Privacy.
Barge
CBarge
Privacy
Call Control Discovery
Scenario 1: A calls 1000 in other cluster (SAF ICT)
Action
|
Result
|
Call Info
|
A dials 1000, this call is first be intercepted by CCD Requesting Feature, and CCD Requesting feature extends this call to SIP trunk
|
CallActiveEv
ConnCreatedEv -A
ConnConnectedEv - A
CallCtlConnDialingEv - A TermConnCreatedEv - TA
TermConnActiveEv -TA
CallCtlTermConnTalkingEv - TA
|
|
Called Party is 1000
|
ConnCreatedEv 1000
ConnInProgressEv 1000
CallCtlConnOfferedEv 1000
|
getCurrentCallingAddress() = A
getCurrentCalledAddress() = 1000
getCalledAddress() = 1000
|
Scenario 2: A calls B, within same cluster. B redirects the call to 1000, which is in another cluster ( SAF ICT)
Action
|
Result
|
Call Info
|
A calls B within the same cluster
|
CallActiveEv
ConnCreatedEv A
ConnConnectedEv A
CallCtlConnInitiatedEv A
TermConnCreatedEv TA
TermConnActiveEv TA
CallCtlTermConnTalkingEv TA
CallCtlConnEstablishedEv A
ConnCreatedEv B
ConnCreatedEv B
CallCtlConnOfferedEv B
ConnAlertingEv B
CallCtlConnAlertingEv B
TermConnCreatedEv TB
TermConnRingingEv TB
CallCtlTermConnRingingEvImpl TB
|
|
B redirects the call to 1000
|
TermConnDroppedEv TB
CallCtlTermConnDroppedEv TB
ConnDisconnectedEv B
CallCtlConnDisconnectedEv B
ConnCreatedEv 1000
|
getCurrentCallingAddress() = A
getCurrentCalledAddress() = 1000
getCalledAddress() = B
getLastRedirectedAddress() = B
|
Scenario 3 : A calls 1000 which is in the other cluster ( SAF ICT bandwidth is low)
Action
|
Result
|
Call Info
|
A dials 1000, this call is first intercepted by CCD Requesting Feature, and CCD Requesting feature extends this call to SIP trunk
|
CallActiveEv
ConnCreatedEv -A
ConnConnectedEv - A
CallCtlConnDialingEv - A TermConnCreatedEv - TA
TermConnActiveEv -TA
CallCtlTermConnTalkingEv - TA
|
|
SIP trunk rejects this as bandwidth is not available
|
CallCtlConnEstablishedEv -A
ConnCreatedEv 1000
ConnConnectedEv 1000
CallCtlConnOfferedEv 1000
|
getCallingAddress() = A
getCalledAddress() = 1000
getCurrentCallingAddress() = A
getCurrentCalledAddress() = 1000
getLastRedirectedAddress() = ""
|
CCD Requesting feature starts PSTN failover by directing this caller to 1000's PSTN failover number. Call is sent out to a PSTN gateway, and calling side moves to Ringback state.
|
CallCtlConnNetworkReachedEv 1000
CallCtlConnNetworkAlertingEv 1000
|
CiscoFeatureReason = NORMAL
CallCtlCause = CAUSE_NORMAL
getCallingAddress()=A
getCalledAddress()=1000
getCurrentCallingAddress()=A
getCurrentCalledAddress()=1000
getLastRedirectedAddress()=1000
|
Scenario 4: A calls B within the cluster. B redirects the call to 1000 ( low bandwidth SAF ICT)
Action
|
Result
|
Call Info
|
A calls B within the same cluster
|
CallActiveEv
ConnCreatedEv A
ConnConnectedEv A
CallCtlConnInitiatedEv A
TermConnCreatedEv TA
TermConnActiveEv TA
CallCtlTermConnTalkingEv TA
CallCtlConnEstablishedEv A
ConnCreatedEv B
ConnCreatedEv B
CallCtlConnOfferedEv B
ConnAlertingEv B
CallCtlConnAlertingEv B
TermConnCreatedEv TB
TermConnRingingEv TB
CallCtlTermConnRingingEvImpl TB
|
|
B redirects the call to 1000. This call is first intercepted by CCD Requesting Feature, and CCD Requesting feature extends this call to SIP trunk
|
TermConnDroppedEv TB
CallCtlTermConnDroppedEv TB
ConnDisconnectedEv B
CallCtlConnDisconnectedEv B
|
|
CCD Requesting feature starts PSTN failover by directing this caller to 1000's PSTN failover number. Call is sent out to a PSTN gateway
|
ConnCreatedEv 1000
ConnConnectedEv 1000
|
getCallingAddress() = A
getCurrentCallingAddress() = A
getCurrentCalledAddress() = 1000
getCalledAddress() = B
getLastRedirectedAddress() = 1000
Reason = REASON_SAF_CCD_PSTN_FAILOVER
|
Scenario 5 : A calls B, B transfers the call to 1000 ( low bandwidth SAF ICT)
Action
|
Result
|
Call Info
|
A calls B
|
GC1 CallActiveEv
GC1 ConnCreatedEv A
GC1 ConnConnectedEv A
GC1 CallCtlConnInitiatedEv A
GC1 TermConnCreatedEv TA
GC1 TermConnActiveEv TA
GC1 CallCtlTermConnTalkingEv TA
GC1 CallCtlConnDialingEv A
GC1 CallCtlConnEstablishedEv A
GC1 ConnCreatedEv B
GC1 ConnCreatedEv B
GC1 CallCtlConnOfferedEv B
GC1 ConnAlertingEv B
GC1 CallCtlConnAlertingEv B
GC1 TermConnCreatedEv TB
GC1 TermConnRingingEv TB
GC1 CallCtlTermConnRingingEvImpl TB
|
|
B makes a consult call to 1000. This call is first intercepted by CCD Requesting Feature, and CCD Requesting feature extends this call to SIP trunk.
|
GC2 CallActiveEv
GC2 ConnCreatedEv B
GC2 ConnConnectedEv B
GC2 CallCtlConnInitiatedEv B
GC2 TermConnCreatedEv TB
GC2 TermConnActiveEv TB
GC2 CallCtlTermConnTalkingEv TB
GC2 CallCtlConnEstablishedEv B
GC2 ConnCreatedEv 1000
GC2 ConnCreatedEv 1000
GC2 CallCtlConnOfferedEv 1000
|
|
SIP trunk rejects this call as bandwidth is not available
CCD Requesting feature starts PSTN failover by directing this caller to 1000's PSTN failover number (or as configured on the server). Call is sent out to a PSTN gateway.
|
GC2 CallCtlConnNetworkReachedEv 1000
GC2 CallCtlConnNetworkAlertingEv 1000
|
CiscofeatureReason = NORMAL
CallCtlCause = CAUSE_NORMAL
getCurrentCallingAddress() = A
getCurrentCalledAddress() = 1000
getCalledAddress() = B
getLastRedirectedAddress() = 1000
|
B completes the transfer
|
GC1 CiscoTermConnSelectChangedEv B
GC2 CiscoTermConnSelectChangedEv B
GC1 CiscoTransferStartedEv
GC2 CiscoCallChangedEv
GC2 CiscoCallChangedEv
GC1 ConnCreatedEv 1000
GC1 ConnAlertingEv 1000
GC1 CallCtlConnAlertingEv 1000
GC1 TermConnCreatedEv 1000
GC1 TermConnRingingEv 1000
GC1 CallCtlTermConnRingingEvImpl 1000
GC2 TermConnDroppedEv 1000
GC2 CallCtlTermConnDroppedEv 1000
GC2 ConnDisconnectedEv1408972 1000
GC2 CallCtlConnDisconnectedEv 1000
GC1 TermConnDroppedEv B
GC1 CallCtlTermConnDroppedEv B
GC1 ConnDisconnectedEv B
GC1 CallCtlConnDisconnectecEv B
GC2 TermConnDroppedEv B
GC2 CallCtlTermConnDroppedEv B
GC2 ConnDisconnectedEv B
GC2 CallCtlConnDisconnectecEv B
GC2 CallInvalidEv
GC1 CiscoTransferEndEv
|
Reason = REASON_TRANSFEREDCALL
|
A and 1000 come in direct call
|
GC1 ConnConnectedEv 1000
GC1 CallCtlConnEstablishedEv 1000
GC1 termConnActiveEv 1000
GC1 CallCtlTermConnTalkingEv 1000
|
|
Scenario 6: A calls B, B consults 1000 and adds it to conference ( low bandwidth SAF ICT )
Action
|
Result
|
Call Info
|
A calls B
|
GC1 CallActiveEv
GC1 ConnCreatedEv A
GC1 ConnConnectedEv A
GC1 CallCtlConnInitiatedEv A
GC1 TermConnCreatedEv TA
GC1 TermConnActiveEv TA
GC1 CallCtlTermConnTalkingEv TA
GC1 CallCtlConnDialingEv A
GC1 CallCtlConnEstablishedEv A
GC1 ConnCreatedEv B
GC1 ConnCreatedEv B
GC1 CallCtlConnOfferedEv B
GC1 ConnAlertingEv B
GC1 CallCtlConnAlertingEv B
GC1 TermConnCreatedEv TB
GC1 TermConnRingingEv TB
GC1 CallCtlTermConnRingingEvImpl TB
|
|
B makes a consult call to 1000 for conference. This call is first intercepted by CCD Requesting Feature, and CCD Requesting feature extends this call to SIP trunk.
|
GC2 CallActiveEv
GC2 ConnCreatedEv B
GC2 ConnConnectedEv B
GC2 CallCtlConnInitiatedEv B
GC2 TermConnCreatedEv TB
GC2 TermConnActiveEv TB
GC2 CallCtlTermConnTalkingEv TB
GC2 CallCtlConnEstablishedEv B
GC2 ConnCreatedEv 1000
GC2 ConnCreatedEv 1000
GC2 CallCtlConnOfferedEv 1000
|
|
SIP trunk rejects this call as no more bandwidth is available
CCD Requesting feature starts PSTN failover by directing this caller to 1000's PSTN failover number; call is sent out to a PSTN gateway.
|
GC2 CallCtlConnNetworkReachedEv 1000
GC2 CallCtlConnNetworkAlertingEv 1000
|
CiscofeatureReason = NORMAL
CallCtlCause = CAUSE_NORMAL
getCurrentCallingAddress() = A
getCurrentCalledAddress() = 1000
getCalledAddress() = B
getLastRedirectedAddress() = 1000
|
B completes the conference
|
GC1 CiscoTermConnSelectChangedEv B
GC2 CiscoTermConnSelectChangedEv B
GC1 CiscoConferenceStartedEv
GC2 termConnDroppedEv B
GC2 CallCtlTermConnDroppedEv B
Gc2 ConnDisconnectedEv B
GC2 CallCtlConnDisConnectedEv B
GC1 CallCtlTermConnTalkingEv B
GC2 CiscoCallChangedEv
GC1 ConnCreatedEv 1000
GC1 ConConnectedEv 1000
GC1 CallCtlConnEstablishedEv 1000
GC1 TermConnCreatedEv 1000
GC1 TermConnActiveEv 1000
GC1 CallCtlTermConnTalkingEv 1000
GC2 TermConnDroppedEv 1000
GC2 CallCtlTermConnDroppedEv 1000
GC2 ConnDisconnectedEv 1000
GC2 CallCtlConnDisconnectedEv 1000
GC2 CallInvalidEv
GC1 CiscoTermConnSelectChangedEv B
GC1 CiscoTermConnSelectChangedEv B
|
Reason = REASON_CONFERENCE
|
CallFwdAll Keys Press Notification
(Scenario 1): Application is observing A; A goes off-hook
Action
|
Result
|
Call Info
|
Application observes A.
|
CiscoAddrInServiceEv - A
|
|
A goes off-hook.
|
GC1:
CallActiveEv
ConnCreatedEv -A
ConnConnectedEv - A
CallCtlConnInitiatedEv - A
TermConnCreatedEv - TA
TermConnActiveEv -TA
CallCtlTermConnTalkingEv -TA
|
TermConnActiveEv-TA.getCall().getCFWDAllKeyPressIndicator() returns CiscoCall.CFWD_ALL_NONE
currentCalling = A
currentCalled = null
CAUSE = CAUSE_NORMAL
|
(Scenario 2): A goes off-hook; Application starts observing A
Action
|
Result
|
Call Info
|
A goes off-hook
|
No Event is delivered
|
|
Application starts observing A
|
CiscoAddrInServiceEv - A
GC1:
CallActiveEv
ConnCreatedEv -A
ConnConnectedEv - A
CallCtlConnInitiatedEv - A
TermConnCreatedEv - TA
TermConnActiveEv -TA
CallCtlTermConnTalkingEv -TA
|
TermConnActiveEv-TA.getCall().getCFWDAllKeyPressIndicator() returns CiscoCall.CFWD_ALL_NONE
currentCalling = A
currentCalled = null
CAUSE = CAUSE_SNAPSHOT
|
(Scenario 3): Application is observing A; User presses CFwdAll soft key on phone A in on-hook state
Action
|
Result
|
Call Info
|
Application observes A.
|
CiscoAddrInServiceEv - A
|
|
User presses CFwdAll soft key on phone A
|
GC1:
CallActiveEv
ConnCreatedEv -A
ConnConnectedEv - A
CallCtlConnInitiatedEv - A
TermConnCreatedEv - TA
TermConnActiveEv -TA
CallCtlTermConnTalkingEv -TA
|
TermConnActiveEv-TA.getCall().getCFWDAllKeyPressIndicator() returns CiscoCall.CFWD_ALL_SET
currentCalling = A
currentCalled = null
CAUSE = CAUSE_NORMAL
|
(Scenario 4): User presses CFwdAll soft key on phone A goes in on-hook state; Application starts observing A
Action
|
Result
|
Call Info
|
User presses CFwdAll soft key on phone A
|
No event is delivered
|
|
Application starts observing A
|
GC1:
CallActiveEv
ConnCreatedEv -A
ConnConnectedEv - A
CallCtlConnInitiatedEv - A
TermConnCreatedEv - TA
TermConnActiveEv -TA
CallCtlTermConnTalkingEv -TA
|
TermConnActiveEv-TA.getCall().getCFWDAllKeyPressIndicator() returns CiscoCall.CFWD_ALL_SET
currentCalling = A
currentCalled = null
CAUSE = CAUSE_SNAPSHOT
|
(Scenario 5): Application is observing A; A goes off-hook and presses CFwdAll soft key
Action
|
Result
|
Call Info
|
Application observes A.
|
CiscoAddrInServiceEv - A
|
|
A goes off-hook.
|
GC1:
CallActiveEv
ConnCreatedEv -A
ConnConnectedEv - A
CallCtlConnInitiatedEv - A
TermConnCreatedEv - TA
TermConnActiveEv -TA
CallCtlTermConnTalkingEv -TA
|
TermConnActiveEv-TA.getCall().getCFWDAllKeyPressIndicator() returns CiscoCall_CFWD_ALL_NONE
currentCalling = A
currentCalled = null
CAUSE = CAUSE_NORMAL
|
A presses CFwdAll soft key
|
No Event is delivered
|
|
(Scenario 6): Application is observing A; User presses CFwdAll Key on phone A and dial 9999(B) to set the CFA destination as B; User then presses CFwdAll soft key again to cancel the CallFwdAll
Action
|
Result
|
Call Info
|
Application observes A.
|
CiscoAddrInServiceEv - A
|
|
User presses CFwdAll soft key on phone A
|
GC1:
CallActiveEv
ConnCreatedEv -A
ConnConnectedEv - A
CallCtlConnInitiatedEv - A
TermConnCreatedEv - TA
TermConnActiveEv -TA
CallCtlTermConnTalkingEv -TA
|
TermConnActiveEv-TA.getCall().getCFWDAllKeyPressIndicator() returns CiscoCall.CFWD_ALL_SET
currentCalling = A
currentCalled = null
CAUSE = CAUSE_NORMAL
|
User dials B to set CFA destination as B
|
GC1:
CallCtlConnDialingEv - A
CallCtlConnEstablishedEv - A
TermConnDroppedEv - TA
CallCtlTermConnDroppedEv - TA
ConnDisconnectedEv - A
CallCtlConnDisconnectedEv - A
CallInvalidEv
|
currentCalling = A
currentCalled = null
currentCalling = A
currentCalled = B
CAUSE = CAUSE_NORMAL
|
User presses CFwdAll soft key on phone A to cancel CFA
|
GC2:
CallActiveEv
ConnCreatedEv -A
ConnConnectedEv - A
CallCtlConnInitiatedEv - A
TermConnCreatedEv - TA
TermConnActiveEv -TA
CallCtlTermConnTalkingEv -TA
TermConnDroppedEv - TA
CallCtlTermConnDroppedEv - TA
ConnDisconnectedEv - A
CallCtlConnDisconnectedEv - A
CallInvalidEv
|
(GC2)TermConnActiveEv-TA.getCall().getCFWDAllKeyPressIndicator() returns CiscoCall.CFWD_ALL_CLEAR
currentCalling = A
currentCalled = null
CAUSE = CAUSE_NORMAL
|
CallSelect and UnSelect
The following diagram illustrates the message flows for CallSelect and UnSelect.
Cius Persistency
Usecase
|
Events on Provider observer
|
Info
|
Application has a wireless device TermA in its control list which is registered with IPv4 address 1.1.1.1
|
ProvInServiceEv
|
((CiscoTerminal)(Provider.getTerminal(TermA))).getIPV4Address() = 1.1.1.1
|
The device moves from one WiFi N/W to another resulting in the change in the IPv4 address from 1.1.1.1 to 2.2.2.2
|
CiscoProvTerminalIPAddressChangedEv TermA
|
Ev.getIPAddressingMode() = CiscoTerminal.IP_ADDRESSING_MODE_IPV4
Ev.getIPV4Address() = 2.2.2.2
((CiscoTerminal)(Ev.getTerminal()).getIP4Address() = 2.2.2.2
|
The deivce moves from a IPv4 n/w to a Ipv6 n/w
With new ip as 1::1
|
CiscoProvTerminalIPAddressChangedEv TermA
|
Ev.getIPAddressingMode() = CiscoTerminal.IP_ADDRESSING_MODE_IPV6
Ev.getIPV6Address() = 1::1
((CiscoTerminal)(Ev.getTerminal()).getIP6Address() = 1::1
|
The Device is docked on a base station connected to the ethernet resulting in a change in IP address to 3.3.3.3
|
CiscoProvTerminalIPAddressChangedEv TermA
|
Ev.getIPAddressingMode() = CiscoTerminal.IP_ADDRESSING_MODE_IPV4
Ev.getIPV4Address() = 3.3.3.3
Ev.getTerminal() = TermA
((CiscoTerminal)(Ev.getTerminal()).getIP4Address() = 3.3.3.3
|
Use cases for Cius Persistency
Conference and Join
The following diagrams illustrate the message flows for Conference and Join.
Join/Arbitrary Conference
Join/Arbitrary Conference—Page 2
Consult Conference
The message flow for Consult Conference acts the same as the flow for Arbitrary Conference.
Join Across Lines with Enhancements
The message flows for Join Across Lines with Enhancements are described in following tables. A, C, D, E and F are addresses on different terminals. B1 and B2 are addresses on the same terminal, TermB.
Action
|
Events
|
Application conferences the two calls on B1and B2 by invoking GC1.conference(GC2) to chain two conference call.
|
Events to CallObserver of A,C and B1:
TermConnActiveEv TermB GC1
CallCtlTermConnTalkingEv TermB GC1 Cause=NORMAL, callCtlCause=CAUSE_CONFERENCE
ConnCreatedEv Conference-2 GC1
ConnConnectedEv Conference-2 GC1
CallCtlConnEstablishedEv Conference-2 GC1 Cause=NORMAL, callCtlCause=CAUSE_CONFERENCE
CiscoConferenceChainAddedEv GC1
Ev.getAddedConnection will return connection for Conference-2
Ev.getConferenceChain().getChainedConferenceConnections() will return connections of Conference-2
Ev.getConferenceChain().getChainedConferenceCalls() will return GC1
|
Event for CallObserver at B2, D & E:
ConnDisconnectedEv B2 GC2 Cause=NORMAL
CallCtlConnDisconnectedEv B2 GC2 Cause=NORMAL, callCtlCause=CAUSE_CONFERENCE
TermConnDroppedEv TermB GC2 Cause=NORMAL
CallCtlTermConnDroppedEv TermB GC2 Cause=NORMAL, callCtlCause=CAUSE_CONFERENCE
ConnCreatedEv Conference-1 GC2
ConnConnectedEv Conference-1 GC2
CallCtlConnEstablishedEv Conference-1 GC2 Cause=NORMAL, callCtlCause=CAUSE_CONFERENCE
CiscoConferenceChainAddedEv - GC2
Ev.getAddedConnection will return connection of Conference-1
Ev.getConferenceChain().getChainedConferenceConnections() will return connections of Conference-1 & Conference-2
Ev.getConferenceChain().getChainedConferenceCalls() will return GC1 & GC2
|
Application invokes GC2.conference (GC1) to chain two conference calls.
|
Event for CallObserver at B2, D & E:
TermConnActiveEv TermB GC2
CallCtlTermConnTalkingEv TermB GC2 Cause=NORMAL, callCtlCause=CAUSE_CONFERENCE
ConnCreatedEv Conference-1 GC2
ConnConnectedEv Conference-1 GC2
CallCtlConnEstablishedEv Conference-1 GC2 Cause=NORMAL, callCtlCause=CAUSE_CONFERENCE
CiscoConferenceChainAddedEv - GC2
Ev.getAddedConnection will return connection for Conference-1
Ev.getConferenceChain().getChainedConferenceConnections() will return connections of Conference-1
Ev.getConferenceChain().getChainedConferenceCalls() will return GC2
|
Events for CallObservers at A, B1 & C:
ConnDisconnectedEv B1 GC1 Cause=NORMAL
CallCtlConnDisconnectedEv B1 GC1 Cause=NORMAL, callCtlCause=CAUSE_CONFERENCE
TermConnDroppedEv TermB GC1 Cause=NORMAL
CallCtlTermConnDroppedEv TermB GC1 Cause=NORMAL, callCtlCause=CAUSE_CONFERENCE
ConnCreatedEv Conference-2 GC1
ConnConnectedEv Conference-2 GC1
CallCtlConnEstablishedEv Conference-2 GC1 Cause=NORMAL, callCtlCause=CAUSE_CONFERENCE
CiscoConferenceChainAddedEv - GC1
Ev.getAddedConnection will return connection for Conference-2
Ev.getConferenceChain().getChainedConferenceConnections() will return connections of Conference-2
Ev.getConferenceChain().getChainedConferenceCalls() will return GC1
|
A, B1, C are in conference-1 (GC1), B1,D, E are in conference-2 (GC2), B2, F, G are in conference-3 (GC-3)
Application completes conference at C by initiating GC1.conference(GC2, GC3) setting B1 as controller.
|
Event for CallObserver at A, B1 & C:
TermConnActiveEv TermB GC1
CallCtlTermConnTalkingEv TermB GC1 Cause=NORMAL, callCtlCause=CAUSE_CONFERENCE
ConnCreatedEv Conference-2 GC1
ConnConnectedEv Conference-2 GC1
CallCtlConnEstablishedEv Conference-2 GC1 Cause=NORMAL, callCtlCause=CAUSE_CONFERENCE
CiscoConferenceChainAddedEv - GC1
Ev.getAddedConnection will return connection for Conference-2
Ev.getConferenceChain().getChainedConferenceConnections() will return connections of Conference-2
Ev.getConferenceChain().getChainedConferenceCalls() will return GC1
TermConnDroppedEv TermB GC2
CallCtlTermConnDroppedEv TermB GC2
ConnCreatedEv Conference-3 GC1
ConnConnectedEv Conference-3 GC1
CallCtlConnEstablishedEv Conference-3 GC1 Cause=NORMAL, callCtlCause=CAUSE_CONFERENCE
CiscoConferenceChainAddedEv - GC1
Ev.getAddedConnection will return connection for Conference-3
Ev.getConferenceChain().getChainedConferenceConnections() will return connections of Conference-2 & Conference-3
Ev.getConferenceChain().getChainedConferenceCalls() will return GC2 & GC3
|
| |
Event for CallObserver at B1,D & E:
ConnDisconnectedEv B1 GC2 Cause=NORMAL
CallCtlConnDisconnectedEv B1 GC2 Cause=NORMAL, callCtlCause=CAUSE_CONFERENCE
TermConnDroppedEv TermB GC2 Cause=NORMAL
CallCtlTermConnDroppedEv TermB GC2 Cause=NORMAL, callCtlCause=CAUSE_CONFERENCE
ConnCreatedEv Conference-1 GC2
ConnConnectedEv Conference-1 GC2
CallCtlConnEstablishedEv Conference-1 GC2 Cause=NORMAL, callCtlCause=CAUSE_CONFERENCE
CiscoConferenceChainAddedEv - GC2
Ev.getAddedConnection will return connection for Conference-1
Ev.getConferenceChain().getChainedConferenceConnections() will return connections of Conference-1-GC2
Ev.getConferenceChain().getChainedConferenceCalls() will return GC2
|
| |
Event for CallObserver at B2, F & G:
|
ConnDisconnectedEv B2 GC3 Cause=NORMAL
|
CallCtlConnDisconnectedEv B2 GC3 Cause=NORMAL, callCtlCause=CAUSE_CONFERENCE
|
TermConnDroppedEv TermB GC3 Cause=NORMAL
|
CallCtlTermConnDroppedEv TermB GC3 Cause=NORMAL, callCtlCause=CAUSE_CONFERENCE
|
ConnCreatedEv Conference-1 GC3
|
ConnConnectedEv Conference-1 GC3
|
CallCtlConnEstablishedEv Conference-1 GC3 Cause=NORMAL, callCtlCause=CAUSE_CONFERENCE
|
CiscoConferenceChainAddedEv - GC3
|
Ev.getAddedConnection will return connection for Conference-1
|
Ev.getConferenceChain().getChainedConferenceConnections() will returnconnections of Conference-1
|
Ev.getConferenceChain().getChainedConferenceCalls() will return GC3
|
Action
|
Events
|
Application sets the requestor as B2 and calls GC2.conference(GC1) getControllerAddress() returns B2. getOriginalControllerAddress() returns B1.
|
A
CiscoConferenceStartEv CallCtlTermConnTalkingEv TermB GC1 ConnCreatedEv D GC1 ConnConnectedEv D GC1 CallCtlTermConnDroppedEv TermB GC2 CiscoConferenceEndEv
B1
CallCtlTermConnHeldEv TermB GC1 CiscoConferenceStartEv CallCtlTermConnTalkingEv TermB GC1 ConnCreatedEv D ConnConnectedEv CiscoConferenceEndEv
B2
ConnDisconnectedEv B GC2 CallCtlTermConnHeldEv TermB GC2
D
CallActiveEv GC2 ConnAlertingEv D GC2 ConnConnectedEv D GC2 CiscoConferenceStartEv TermConnDroppedEv TermB GC2 CallActiveEv GC1 CiscoCallChangedEv TermConnTalkingEv TermB GC1 TermConnDroppedEv TermD GC2 CallObservationEndedEv GC2 CiscoConferenceEndEv
|
If application uses B1 as request controller in the above setup getControllerAddress() returns B1. getOriginalControllerAddress() returns B1.
|
Events are same as above
|
CTI Remote Device
Use Cases Group 1 (Get/Add/Remove/Update on Remote Destinations)
Pre-conditions on Use Cases group 1 below with default jtapi.ini settings, unless specified explicitly:
•
Provider is IN_SERVICE state.
•
Device A (CTI Remote Device - Name: "CTIRD-A", Line A (DN: 1000))
Remote Destination 1 (Name: "RD1-A", Number: "4081001111", Active RD: true)
Remote Destination 2 (Name: "RD2-A", Number: "4081002222", Active RD: false)
•
Device B (IP Phone - Name: "SEP000DED47D023", Line B (DN: 2000)
•
Device C (CTI Remote Device - Name: "CTIRD-C", Line C (DN: 3000))
No Remote Destination configured.
Scenario 1-1 (Expose all RDs Information on a CTI Remote Device to Application):
User1 has "CTI Remote Device A" in the control list. User invokes CiscoRemoteTerminal.getAllRemoteDestinations() on terminal A.
Action
|
Events
|
Call Info
|
User1 opens Provider and adds a provider observer.
|
ProvInServiceEv
|
|
User1 invokes CiscoRemoteTerminal.getAllRemoteDestinations() on TermA.
|
|
TermA.getAllRemoteDestinations() = CiscoRemoteDestinationInfo[2].
CiscoRemoteDestinationInfo[0].getRemoteDestinationName() = "RD1-A"
CiscoRemoteDestinationInfo[0].getRemoteDestinationNumber() = "4081001111"
CiscoRemoteDestinationInfo[0].getIsActiveRD() = true
CiscoRemoteDestinationInfo[1].getRemoteDestinationName() = "RD2-A"
CiscoRemoteDestinationInfo[1].getRemoteDestinationNumber() = "4081002222"
CiscoRemoteDestinationInfo[1].getIsActiveRD() = false
|
Scenario 1-2 (Expose Active RDs Information on a CTI Remote Device to Application):
User1 has "CTI Remote Device A" in the control list. User invokes CiscoRemoteTerminal.getActiveRemoteDestinations() on terminal A.
Action
|
Events
|
Call Info
|
User1 opens Provider and adds a provider observer.
|
ProvInServiceEv
|
|
User1 invokes CiscoRemoteTerminal.getActiveRemoteDestinations() on TermA.
|
|
TermA.getActiveRemoteDestinations() = CiscoRemoteDestinationInfo[1].
CiscoRemoteDestinationInfo[0].getRemoteDestinationName() = "RD1-A"
CiscoRemoteDestinationInfo[0].getRemoteDestinationNumber() = "4081001111"
CiscoRemoteDestinationInfo[0].getIsActiveRD() = true
|
Scenario 1-3 (Fetch RD information on a CTI Remote Device that has no RD configured):
User1 has "CTI Remote Device C" in the control list. User invokes CiscoRemoteTerminal.getAllRemoteDestinations() on terminal C.
Action
|
Events
|
Call Info
|
User1 opens Provider and adds a provider observer.
|
ProvInServiceEv
|
|
User1 invokes CiscoRemoteTerminal.getAllRemoteDestinations() on TermC.
|
|
TermC.getAllRemoteDestinations() = null.
|
Scenario 1-4 (Fetch RD information on a 'non-CTI Remote Device'):
User1 has "Device B" IP Phone in the control list. User invokes CiscoRemoteTerminal.getAllRemoteDestinations() on terminal B.
Action
|
Events
|
Call Info
|
User1 opens Provider and adds a provider observer.
|
ProvInServiceEv
|
|
User1 invokes CiscoRemoteTerminal.getAllRemoteDestinations() on TermB.
|
|
TermB.getAllRemoteDestinations() = null.
|
Scenario 1-5 (Fetch Active RD information on a CTI Remote Device that has no Active RD configured):
User1 has "CTI Remote Device C" in the control list. User invokes CiscoRemoteTerminal.getActiveRemoteDestinations() on terminal C.
Action
|
Events
|
Call Info
|
User1 opens Provider and adds a provider observer.
|
ProvInServiceEv
|
|
User1 invokes CiscoRemoteTerminal.getAllRemoteDestinations() on TermC.
|
|
TermC.getActiveRemoteDestinations() = null.
|
Scenario 1-6 (Set a non-Active RD as a new Active RD on a 'CTI Remote Device', where there is already has an existing Active RD for this device):
User1 has "CTI Remote Device A" in the control list. User invokes CiscoRemoteTerminal.setActiveRemoteDestination("4081002222", true) on terminal A.
Action
|
Events
|
Call Info
|
User1 opens Provider and adds a provider observer.
|
ProvInServiceEv
|
|
User1 invokes CiscoRemoteTerminal.setActiveRemoteDestination("4081002222", true) on TermA.
|
CiscoProvTerminalRemoteDestinationChangedEv
|
CiscoProvTerminalRemoteDestinationChangedEv.getRemoteDestinations() = CiscoRemoteDestinationInfo[2].
CiscoRemoteDestinationInfo[0].getRemoteDestinationName() = "RD1-A"
CiscoRemoteDestinationInfo[0].getRemoteDestinationNumber() = "4081001111"
CiscoRemoteDestinationInfo[0].getIsActiveRD() = false
CiscoRemoteDestinationInfo[1].getRemoteDestinationName() = "RD2-A"
CiscoRemoteDestinationInfo[1].getRemoteDestinationNumber() = "4081002222"
CiscoRemoteDestinationInfo[1].getIsActiveRD() = false
|
| |
CiscoProvTerminalRemoteDestinationChangedEv
|
CiscoProvTerminalRemoteDestinationChangedEv.getRemoteDestinations() = CiscoRemoteDestinationInfo[2].
CiscoRemoteDestinationInfo[0].getRemoteDestinationName() = "RD1-A"
CiscoRemoteDestinationInfo[0].getRemoteDestinationNumber() = "4081001111"
CiscoRemoteDestinationInfo[0].getIsActiveRD() = false
CiscoRemoteDestinationInfo[1].getRemoteDestinationName() = "RD2-A"
CiscoRemoteDestinationInfo[1].getRemoteDestinationNumber() = "4081002222"
CiscoRemoteDestinationInfo[1].getIsActiveRD() = true
|
Scenario 1-7 (Add a new non-Active RD on a 'CTI Remote Device'):
User1 has "CTI Remote Device A" in the control list. User invokes addRemoteDestination("RD3-A", "4081003333", false) on terminal A.
Action
|
Events
|
Call Info
|
User1 opens Provider and adds a provider observer.
|
ProvInServiceEv
|
|
User1 invokes CiscoRemoteTerminal.addRemoteDestination("RD3-A", "4081003333", false) on TermA.
|
CiscoProvTerminalRemoteDestinationChangedEv
|
CiscoProvTerminalRemoteDestinationChangedEv.getRemoteDestinations() = CiscoRemoteDestinationInfo[3].
CiscoRemoteDestinationInfo[0].getRemoteDestinationName() = "RD1-A"
CiscoRemoteDestinationInfo[0].getRemoteDestinationNumber() = "4081001111"
CiscoRemoteDestinationInfo[0].getIsActiveRD() = true
CiscoRemoteDestinationInfo[1].getRemoteDestinationName() = "RD2-A"
CiscoRemoteDestinationInfo[1].getRemoteDestinationNumber() = "4081002222"
CiscoRemoteDestinationInfo[1].getIsActiveRD() = false
CiscoRemoteDestinationInfo[2].getRemoteDestinationName() = "RD3-A"
CiscoRemoteDestinationInfo[2].getRemoteDestinationNumber() = "4081003333"
CiscoRemoteDestinationInfo[2].getIsActiveRD() = false
|
Scenario 1-8 (Add a new Active RD on a 'CTI Remote Device', with another existing Active RD.):
User1 has "CTI Remote Device A" in the control list. User invokes addRemoteDestination("RD3-A", "4081003333", true) on terminal A.
Action
|
Events
|
Call Info
|
User1 opens Provider and adds a provider observer.
|
ProvInServiceEv
|
|
User1 invokes CiscoRemoteTerminal.addRemoteDestination("RD3-A", "4081003333", true) on TermA.
|
CiscoProvTerminalRemoteDestinationChangedEv
|
CiscoProvTerminalRemoteDestinationChangedEv.getRemoteDestinations() = CiscoRemoteDestinationInfo[2].
CiscoRemoteDestinationInfo[0].getRemoteDestinationName() = "RD1-A"
CiscoRemoteDestinationInfo[0].getRemoteDestinationNumber() = "4081001111"
CiscoRemoteDestinationInfo[0].getIsActiveRD() = false
CiscoRemoteDestinationInfo[1].getRemoteDestinationName() = "RD2-A"
CiscoRemoteDestinationInfo[1].getRemoteDestinationNumber() = "4081002222"
CiscoRemoteDestinationInfo[1].getIsActiveRD() = false
|
| |
CiscoProvTerminalRemoteDestinationChangedEv
|
CiscoProvTerminalRemoteDestinationChangedEv.getRemoteDestinations() = CiscoRemoteDestinationInfo[3].
CiscoRemoteDestinationInfo[0].getRemoteDestinationName() = "RD1-A"
CiscoRemoteDestinationInfo[0].getRemoteDestinationNumber() = "4081001111"
CiscoRemoteDestinationInfo[0].getIsActiveRD() = false
CiscoRemoteDestinationInfo[1].getRemoteDestinationName() = "RD2-A"
CiscoRemoteDestinationInfo[1].getRemoteDestinationNumber() = "4081002222"
CiscoRemoteDestinationInfo[1].getIsActiveRD() = false
CiscoRemoteDestinationInfo[2].getRemoteDestinationName() = "RD3-A"
CiscoRemoteDestinationInfo[2].getRemoteDestinationNumber() = "4081003333"
CiscoRemoteDestinationInfo[2].getIsActiveRD() = true
|
Scenario 1-9 (Add a new RD on a 'CTI Remote Device' with a Number that is the same as another existing RD's Number ):
User1 has "CTI Remote Device A" in the control list. User invokes addRemoteDestination("RD3-A", "4081003333", false) on terminal A.
Action
|
Events
|
Call Info
|
User1 opens Provider and adds a provider observer.
|
ProvInServiceEv
|
|
User1 invokes CiscoRemoteTerminal.addRemoteDestination("AnyName", "4081002222", false) on TermA.
|
Caught exception: com.cisco.jtapi.PlatformExceptionImpl: Duplicated Remote Destination Number
|
Let 'ex' be an instanceof PlatformException:
((CiscoJtapiException) ex).getErrorCode() = CiscoJtapiException. CTIERR_DUPLICATED_REMOTE_DESTINATION_NUMBER.
TermA.getAllRemoteDestinations() = CiscoRemoteDestinationInfo[2].
CiscoRemoteDestinationInfo[0].getRemoteDestinationName() = "RD1-A"
CiscoRemoteDestinationInfo[0].getRemoteDestinationNumber() = "4081001111"
CiscoRemoteDestinationInfo[0].getIsActiveRD() = true
CiscoRemoteDestinationInfo[1].getRemoteDestinationName() = "RD2-A"
CiscoRemoteDestinationInfo[1].getRemoteDestinationNumber() = "4081002222"
CiscoRemoteDestinationInfo[1].getIsActiveRD() = false
|
Scenario 1-10 (Remove a RD from a 'CTI Remote Device'):
User1 has "CTI Remote Device A" in the control list. User invokes removeRemoteDestination("4081002222") on terminal A.
Action
|
Events
|
Call Info
|
User1 opens Provider and adds a provider observer.
|
ProvInServiceEv
|
|
User1 invokes CiscoRemoteTerminal.removeRemoteDestination("4081002222") on TermA.
|
CiscoProvTerminalRemoteDestinationChangedEv
|
CiscoProvTerminalRemoteDestinationChangedEv.getRemoteDestinations() = CiscoRemoteDestinationInfo[1].
CiscoRemoteDestinationInfo[0].getRemoteDestinationName() = "RD1-A"
CiscoRemoteDestinationInfo[0].getRemoteDestinationNumber() = "4081001111"
CiscoRemoteDestinationInfo[0].getIsActiveRD() = true
|
Scenario 1-11 (Remove all RD(s) from a 'CTI Remote Device'):
User1 has "CTI Remote Device A" in the control list. User invokes removeAllRemoteDestinations() on terminal A.
Note
JTAPI will loop through the terminal/device's existing remote destinations one by one, so the total number of CiscoProvTerminalRemoteDestinationChangedEv sent to an application should be the same number of available remote destinations being removed. And the order and content of each event can vary, depending on how each remote destination is stored in JTAPI's local cache RD list.
Action
|
Events
|
Call Info
|
User1 opens Provider and adds a provider observer.
|
ProvInServiceEv
|
|
User1 invokes CiscoRemoteTerminal.removeAllRemoteDestinations() on TermA.
|
CiscoProvTerminalRemoteDestinationChangedEv
|
CiscoProvTerminalRemoteDestinationChangedEv.getRemoteDestinations() = CiscoRemoteDestinationInfo[1].
CiscoRemoteDestinationInfo[0].getRemoteDestinationName() = "RD2-A"
CiscoRemoteDestinationInfo[0].getRemoteDestinationNumber() = "4081002222"
CiscoRemoteDestinationInfo[0].getIsActiveRD() = false
|
| |
CiscoProvTerminalRemoteDestinationChangedEv
|
CiscoProvTerminalRemoteDestinationChangedEv.getRemoteDestinations() = null.
|
Scenario 1-12 (Update a RD Name on a 'CTI Remote Device'):
User1 has "CTI Remote Device A" in the control list. User invokes updateRemoteDestinationName ("4081001111", "MyHome") on terminal A.
Action
|
Events
|
Call Info
|
User1 opens Provider and adds a provider observer.
|
ProvInServiceEv
|
|
User1 invokes CiscoRemoteTerminal. updateRemoteDestinationName ("4081001111", "MyHome") on TermA.
|
CiscoProvTerminalRemoteDestinationChangedEv
|
CiscoProvTerminalRemoteDestinationChangedEv.getRemoteDestinations() = CiscoRemoteDestinationInfo[2].
CiscoRemoteDestinationInfo[0].getRemoteDestinationName() = "MyHome"
CiscoRemoteDestinationInfo[0].getRemoteDestinationNumber() = "4081001111"
CiscoRemoteDestinationInfo[0].getIsActiveRD() = true
CiscoRemoteDestinationInfo[1].getRemoteDestinationName() = "RD2-A"
CiscoRemoteDestinationInfo[1].getRemoteDestinationNumber() = "4081002222"
CiscoRemoteDestinationInfo[1].getIsActiveRD() = false
|
Scenario 1-13 (Update a RD Number on a 'CTI Remote Device'):
User1 has "CTI Remote Device A" in the control list. User invokes updateRemoteDestinationNumber ("4081001111", "6268210080") on terminal A.
Action
|
Events
|
Call Info
|
User1 opens Provider and adds a provider observer.
|
ProvInServiceEv
|
|
User1 invokes CiscoRemoteTerminal. updateRemoteDestinationName ("4081001111", "6268210080") on TermA.
|
CiscoProvTerminalRemoteDestinationChangedEv
|
CiscoProvTerminalRemoteDestinationChangedEv.getRemoteDestinations() = CiscoRemoteDestinationInfo[2].
CiscoRemoteDestinationInfo[0].getRemoteDestinationName() = "RD1-A"
CiscoRemoteDestinationInfo[0].getRemoteDestinationNumber() = "6268210080"
CiscoRemoteDestinationInfo[0].getIsActiveRD() = true
CiscoRemoteDestinationInfo[1].getRemoteDestinationName() = "RD2-A"
CiscoRemoteDestinationInfo[1].getRemoteDestinationNumber() = "4081002222"
CiscoRemoteDestinationInfo[1].getIsActiveRD() = false
|
Scenario 1-14 (Add a new RD with an invalid RD Number on a 'CTI Remote Device'):
User1 has "CTI Remote Device A" in the control list. User invokes addRemoteDestination ("iPhone5", "IAmNotANumber", true) on terminal A.
Action
|
Events
|
Call Info
|
User1 opens Provider and adds a provider observer.
|
ProvInServiceEv
|
|
User1 invokes CiscoRemoteTerminal. addRemoteDestination ("iPhone5", "IAmNotANumber",true) on TermA.
|
Caught exception: com.cisco.jtapi.PlatformExceptionImpl: Invalid Remote Destination Number
|
Let 'ex' be an instanceof PlatformException:
((CiscoJtapiException) ex).getErrorCode() = CiscoJtapiException. CTIERR_INVALID_REMOTE_DESTINATION_NUMBER.
TermA.getAllRemoteDestinations() = CiscoRemoteDestinationInfo[2].
CiscoRemoteDestinationInfo[0].getRemoteDestinationName() = "RD1-A"
CiscoRemoteDestinationInfo[0].getRemoteDestinationNumber() = "4081001111"
CiscoRemoteDestinationInfo[0].getIsActiveRD() = true
CiscoRemoteDestinationInfo[1].getRemoteDestinationName() = "RD2-A"
CiscoRemoteDestinationInfo[1].getRemoteDestinationNumber() = "4081002222"
CiscoRemoteDestinationInfo[1].getIsActiveRD() = false
|
Scenario 1-15 (Update RD Name with an invalid/not-associated RD Number on a 'CTI Remote Device'):
User1 has "CTI Remote Device A" in the control list. User invokes updateRemoteDestinationName ("4085268222", "MyBossOffice") on terminal A.
Action
|
Events
|
Call Info
|
User1 opens Provider and adds a provider observer.
|
ProvInServiceEv
|
|
User1 invokes CiscoRemoteTerminal. updateRemoteDestinationName ("4085268222", "MyBossOffice") on TermA.
|
Caught exception: com.cisco.jtapi.PlatformExceptionImpl: Invalid Remote Destination Number
|
Let 'ex' be an instanceof PlatformException:
((CiscoJtapiException) ex).getErrorCode() = CiscoJtapiException. CTIERR_INVALID_REMOTE_DESTINATION_NUMBER.
TermA.getAllRemoteDestinations() = CiscoRemoteDestinationInfo[2].
CiscoRemoteDestinationInfo[0].getRemoteDestinationName() = "RD1-A"
CiscoRemoteDestinationInfo[0].getRemoteDestinationNumber() = "4081001111"
CiscoRemoteDestinationInfo[0].getIsActiveRD() = true
CiscoRemoteDestinationInfo[1].getRemoteDestinationName() = "RD2-A"
CiscoRemoteDestinationInfo[1].getRemoteDestinationNumber() = "4081002222"
CiscoRemoteDestinationInfo[1].getIsActiveRD() = false
|
Scenario 1-16 (Update RD Name with a null RD Number on a 'CTI Remote Device'):
User1 has "CTI Remote Device A" in the control list. User invokes updateRemoteDestinationName (null, "MyBossOffice") on terminal A.
Action
|
Events
|
Call Info
|
User1 opens Provider and adds a provider observer.
|
ProvInServiceEv
|
|
User1 invokes CiscoRemoteTerminal. updateRemoteDestinationName (null, "MyBossOffice") on TermA.
|
Caught exception: com.cisco.jtapi.InvalidArgumentExceptionImpl: Invalid Remote Destination Number/Name (updateRemoteDestinationName parameter).
|
TermA.getAllRemoteDestinations() = CiscoRemoteDestinationInfo[2].
CiscoRemoteDestinationInfo[0].getRemoteDestinationName() = "RD1-A"
CiscoRemoteDestinationInfo[0].getRemoteDestinationNumber() = "4081001111"
CiscoRemoteDestinationInfo[0].getIsActiveRD() = true
CiscoRemoteDestinationInfo[1].getRemoteDestinationName() = "RD2-A"
CiscoRemoteDestinationInfo[1].getRemoteDestinationNumber() = "4081002222"
CiscoRemoteDestinationInfo[1].getIsActiveRD() = false
|
Scenario 1-17 (Clear an existing Active RD as a non-Active RD on a 'CTI Remote Device'). Explicit Pre-condition: (RD1-A: "4081001111", true; RD2-A: "4081002222", false; RD3-A: "4081003333", false):
User1 has "CTI Remote Device A" in the control list. User invokes CiscoRemoteTerminal.setActiveRemoteDestination("4081001111", false) on terminal A.
Action
|
Events
|
Call Info
|
User1 opens Provider and adds a provider observer.
|
ProvInServiceEv
|
|
User1 invokes CiscoRemoteTerminal.setActiveRemoteDestination("4081001111", false) on TermA.
|
CiscoProvTerminalRemoteDestinationChangedEv
|
CiscoProvTerminalRemoteDestinationChangedEv.getRemoteDestinations() = CiscoRemoteDestinationInfo[3].
CiscoRemoteDestinationInfo[0].getRemoteDestinationName() = "RD1-A"
CiscoRemoteDestinationInfo[0].getRemoteDestinationNumber() = "4081001111"
CiscoRemoteDestinationInfo[0].getIsActiveRD() = false
CiscoRemoteDestinationInfo[1].getRemoteDestinationName() = "RD2-A"
CiscoRemoteDestinationInfo[1].getRemoteDestinationNumber() = "4081002222"
CiscoRemoteDestinationInfo[1].getIsActiveRD() = false
CiscoRemoteDestinationInfo[2].getRemoteDestinationName() = "RD3-A"
CiscoRemoteDestinationInfo[2].getRemoteDestinationNumber() = "4081003333"
CiscoRemoteDestinationInfo[2].getIsActiveRD() = false
|
Scenario 1-18 (Remove all RD(s) from a 'CTI Remote Device'). User1 has "CTI Remote Device C" in the control list. User invokes removeAllRemoteDestinations() on terminal C.
Action
|
Events
|
Call Info
|
User1 opens Provider and adds a provider observer.
|
ProvInServiceEv
|
|
User1 invokes CiscoRemoteTerminal.removeAllRemoteDestinations() on TermC.
|
|
Note Nothing is removed as there is no RD on this device. JTAPI won't be sending any request to CTI. No CiscoJtapiException will be thrown either.
|
Scenario 1-19 (Remove all 5 RD(s) from a 'CTI Remote Device'). Explicit Pre-condition: (RD1-A: "4081001111", true; RD2-A: "4081002222", false; RD3-A: "4081003333", false; RD4-A: "4081004444", false; RD5-A: "4081005555", false):
User1 has "CTI Remote Device A" in the control list. User invokes removeAllRemoteDestinations() on terminal A.
Note that JTAPI will loop through the terminal/device's existing remote destinations one by one, so the total number of CiscoProvTerminalRemoteDestinationChangedEv sent to an application should be the same number of available remote destinations being removed. And the order and content of each event can vary, depending on how each remote destination is stored in JTAPI's local cache RD list.
Also note currently there is no checking in JTAPI to limit only up to 5 RDs per CTI Remote Device. If application tries to add a new RD to an existing CTI Remote Device that already has 5 RDs, JTAPI will simply send the add request to CTI and let it decide on pass/fail.
Action
|
Events
|
Call Info
|
User1 opens Provider and adds a provider observer.
|
ProvInServiceEv
|
|
User1 invokes CiscoRemoteTerminal.removeAllRemoteDestinations() on TermA.
|
CiscoProvTerminalRemoteDestinationChangedEv
|
CiscoProvTerminalRemoteDestinationChangedEv.getRemoteDestinations() = CiscoRemoteDestinationInfo[4].
CiscoRemoteDestinationInfo[0].getRemoteDestinationName() = "RD2-A"
CiscoRemoteDestinationInfo[0].getRemoteDestinationNumber() = "4081002222"
CiscoRemoteDestinationInfo[0].getIsActiveRD() = false
CiscoRemoteDestinationInfo[1].getRemoteDestinationName() = "RD3-A"
CiscoRemoteDestinationInfo[1].getRemoteDestinationNumber() = "4081003333"
CiscoRemoteDestinationInfo[1].getIsActiveRD() = false
CiscoRemoteDestinationInfo[2].getRemoteDestinationName() = "RD4-A"
CiscoRemoteDestinationInfo[2].getRemoteDestinationNumber() = "4081004444"
CiscoRemoteDestinationInfo[2].getIsActiveRD() = false
CiscoRemoteDestinationInfo[3].getRemoteDestinationName() = "RD5-A"
CiscoRemoteDestinationInfo[3].getRemoteDestinationNumber() = "4081005555"
CiscoRemoteDestinationInfo[3].getIsActiveRD() = false
|
| |
CiscoProvTerminalRemoteDestinationChangedEv
|
CiscoProvTerminalRemoteDestinationChangedEv.getRemoteDestinations() = CiscoRemoteDestinationInfo[3].
CiscoRemoteDestinationInfo[0].getRemoteDestinationName() = "RD3-A"
CiscoRemoteDestinationInfo[0].getRemoteDestinationNumber() = "4081003333"
CiscoRemoteDestinationInfo[0].getIsActiveRD() = false
CiscoRemoteDestinationInfo[1].getRemoteDestinationName() = "RD4-A"
CiscoRemoteDestinationInfo[1].getRemoteDestinationNumber() = "4081004444"
CiscoRemoteDestinationInfo[1].getIsActiveRD() = false
CiscoRemoteDestinationInfo[2].getRemoteDestinationName() = "RD5-A"
CiscoRemoteDestinationInfo[2].getRemoteDestinationNumber() = "4081005555"
CiscoRemoteDestinationInfo[2].getIsActiveRD() = false
|
| |
CiscoProvTerminalRemoteDestinationChangedEv
|
CiscoProvTerminalRemoteDestinationChangedEv.getRemoteDestinations() = CiscoRemoteDestinationInfo[2].
CiscoRemoteDestinationInfo[0].getRemoteDestinationName() = "RD4-A"
CiscoRemoteDestinationInfo[0].getRemoteDestinationNumber() = "4081004444"
CiscoRemoteDestinationInfo[0].getIsActiveRD() = false
CiscoRemoteDestinationInfo[1].getRemoteDestinationName() = "RD5-A"
CiscoRemoteDestinationInfo[1].getRemoteDestinationNumber() = "4081005555"
CiscoRemoteDestinationInfo[1].getIsActiveRD() = false
|
| |
CiscoProvTerminalRemoteDestinationChangedEv
|
CiscoProvTerminalRemoteDestinationChangedEv.getRemoteDestinations() = CiscoRemoteDestinationInfo[1].
CiscoRemoteDestinationInfo[0].getRemoteDestinationName() = "RD5-A"
CiscoRemoteDestinationInfo[0].getRemoteDestinationNumber() = "4081005555"
CiscoRemoteDestinationInfo[0].getIsActiveRD() = false
|
| |
CiscoProvTerminalRemoteDestinationChangedEv
|
CiscoProvTerminalRemoteDestinationChangedEv.getRemoteDestinations() = null.
|
Scenario 1-20 (Update a RD's Name and Number and set it as ActiveRD on a 'CTI Remote Device' at the same time):
User1 has "CTI Remote Device A" in the control list. User invokes updateRemoteDestination ("4081002222", "MyVacationHome", "4081009999", true) on terminal A.
Action
|
Events
|
Call Info
|
User1 opens Provider and adds a provider observer.
|
ProvInServiceEv
|
|
User1 invokes CiscoRemoteTerminal. updateRemoteDestination("4081002222", "MyVacationHome", "4081009999", true) on TermA.
|
CiscoProvTerminalRemoteDestinationChangedEv
|
CiscoProvTerminalRemoteDestinationChangedEv.getRemoteDestinations() = CiscoRemoteDestinationInfo[2].
CiscoRemoteDestinationInfo[0].getRemoteDestinationName() = "MyHome"
CiscoRemoteDestinationInfo[0].getRemoteDestinationNumber() = "4081001111"
CiscoRemoteDestinationInfo[0].getIsActiveRD() = false
CiscoRemoteDestinationInfo[1].getRemoteDestinationName() = "RD2-A"
CiscoRemoteDestinationInfo[1].getRemoteDestinationNumber() = "4081002222"
CiscoRemoteDestinationInfo[1].getIsActiveRD() = false
|
| |
CiscoProvTerminalRemoteDestinationChangedEv
|
CiscoProvTerminalRemoteDestinationChangedEv.getRemoteDestinations() = CiscoRemoteDestinationInfo[2].
CiscoRemoteDestinationInfo[0].getRemoteDestinationName() = "MyHome"
CiscoRemoteDestinationInfo[0].getRemoteDestinationNumber() = "4081001111"
CiscoRemoteDestinationInfo[0].getIsActiveRD() = false
CiscoRemoteDestinationInfo[1].getRemoteDestinationName() = "MyVacationHome"
CiscoRemoteDestinationInfo[1].getRemoteDestinationNumber() = "4081002222"
CiscoRemoteDestinationInfo[1].getIsActiveRD() = false
|
| |
CiscoProvTerminalRemoteDestinationChangedEv
|
CiscoProvTerminalRemoteDestinationChangedEv.getRemoteDestinations() = CiscoRemoteDestinationInfo[2].
CiscoRemoteDestinationInfo[0].getRemoteDestinationName() = "MyHome"
CiscoRemoteDestinationInfo[0].getRemoteDestinationNumber() = "4081001111"
CiscoRemoteDestinationInfo[0].getIsActiveRD() = false
CiscoRemoteDestinationInfo[1].getRemoteDestinationName() = "MyVacationHome"
CiscoRemoteDestinationInfo[1].getRemoteDestinationNumber() = "4081009999"
CiscoRemoteDestinationInfo[1].getIsActiveRD() = true
|
Use Cases Group 2 (CTIRD Incoming/Outgoing/Disconnect/Redirect/Hold/Resume and shared-line call scenarios)
Pre-conditions on Use Cases group 2 below with default jtapi.ini settings, unless specified explicitly. Note that the CTI Ports have Auto-Accept enabled:
•
Provider is IN_SERVICE state.
•
Device A (CTI Remote Device - Name: "irvCTIRD1", Line A (DN: 8881000))
Remote Destination 1 (Name: "IRVOffice", Number: "919498231202", Active RD: true)
•
Device B (CTI Port - Name: "irvCTIPort1", Line B (DN: 8881000))
•
Device C (CTI Port - Name: "irvCTIPort6", Line C (DN: 8886000))
•
Device D (CTI Port - Name: "irvCTIPort7", Line C (DN: 8887000))
•
Device E (CTI Remote Device - Name: "irvCTIRD2", Line E (DN: 8889000))
Remote Destination 1 (Name: "IRVCell1", Number: "916267829523", Active RD: true)
•
Device F (CTI Remote Device - Name: "irvCTIRD3", Line E (DN: 8889001))
Remote Destination 1 (Name: "IRVCell2", Number: "916267829526", Active RD: true)
Scenario 2-1 (Incoming call from CTI Port to CTI Remote Device):
C calls E, Application is observing both C and E on addresses and terminals. GC1 is the GCID of the call.
Action
|
Events
|
Call Info
|
User1 invokes call.connect(irvCTIPort6,8886000,8889000).
|
GC1: CallActiveEvent
GC1: ConnCreatedEvent 8886000
GC1: ConnConnectedEvent 8886000
GC1: CallCtlConnInitiatedEv 8886000
GC1: TermConnCreatedEvent irvCTIPort6
GC1: TermConnActiveEvent irvCTIPort6
GC1: CallCtlTermConnTalkingEv irvCTIPort6
GC1: CallCtlConnDialingEv 8886000
GC1: CallCtlConnEstablishedEv 8886000
GC1: ConnCreatedEvent 8889000
GC1: ConnInprogressEvent 8889000
GC1: CallCtlConnOfferedEv 8889000
GC1: ConnAlertingEvent 8889000
GC1: CallCtlConnAlertingEv 8889000
GC1: TermConnCreatedEvent irvCTIRD2
GC1: TermConnRingingEvent irvCTIRD2
GC1: CallCtlTermConnRingingEv irvCTIRD2
|
CallingAddress = 8886000, CalledAddress = 8889000, CurrentCallingAddress = 8886000, CurrentCalledAddress = 8889000, ModifiedCallingAddress = 8886000, ModifiedCalledAddress = 8889000, No LastRedirectedPartyAddress
|
irvCTIRD2's Active remote destination of 916267829523 answers the call.
|
GC1: ConnConnectedEvent 8889000
GC1: CallCtlConnEstablishedEv 8889000
GC1: TermConnActiveEvent irvCTIRD2
GC1: CallCtlTermConnTalkingEv irvCTIRD2
|
CallingAddress = 8886000, CalledAddress = 8889000, CurrentCallingAddress = 8886000, CurrentCalledAddress = 8889000, ModifiedCallingAddress = 8886000, ModifiedCalledAddress = 8889000, No LastRedirectedPartyAddress
|
Scenario 2-2 (Incoming call from CTI Port to non-observed CTI Remote Device):
C calls E, Application is observing C only on address and terminal. No observer on E. GC1 is the GCID of the call.
Action
|
Events
|
Call Info
|
User1 invokes call.connect(irvCTIPort6,8886000,8889000).
|
GC1: CallActiveEvent
GC1: ConnCreatedEvent 8886000
GC1: ConnConnectedEvent 8886000
GC1: CallCtlConnInitiatedEv 8886000
GC1: TermConnCreatedEvent irvCTIPort6
GC1: TermConnActiveEvent irvCTIPort6
GC1: CallCtlTermConnTalkingEv irvCTIPort6
GC1: CallCtlConnDialingEv 8886000
GC1: CallCtlConnEstablishedEv 8886000
GC1: ConnCreatedEvent 8889000
GC1: ConnInprogressEvent 8889000
GC1: CallCtlConnOfferedEv 8889000
GC1: ConnAlertingEvent 8889000
GC1: CallCtlConnAlertingEv 8889000
|
CallingAddress = 8886000, CalledAddress = 8889000, CurrentCallingAddress = 8886000, CurrentCalledAddress = 8889000, ModifiedCallingAddress = 8886000, ModifiedCalledAddress = 8889000, No LastRedirectedPartyAddress
|
irvCTIRD2's Active remote destination of 916267829523 answers the call.
|
GC1: ConnConnectedEvent 8889000
GC1: CallCtlConnEstablishedEv 8889000
|
CallingAddress = 8886000, CalledAddress = 8889000, CurrentCallingAddress = 8886000, CurrentCalledAddress = 8889000, ModifiedCallingAddress = 8886000, ModifiedCalledAddress = 8889000, No LastRedirectedPartyAddress
|
Scenario 2-3 (Incoming call from CTI Port to CTI Remote Device, but no answer on remote destination):
C calls E, Application is observing both C and E on addresses and terminals. GC1 is the GCID of the call.
Action
|
Events
|
Call Info
|
User1 invokes call.connect(irvCTIPort6,8886000,8889000).
|
GC1: CallActiveEvent
GC1: ConnCreatedEvent 8886000
GC1: ConnConnectedEvent 8886000
GC1: CallCtlConnInitiatedEv 8886000
GC1: TermConnCreatedEvent irvCTIPort6
GC1: TermConnActiveEvent irvCTIPort6
GC1: CallCtlTermConnTalkingEv irvCTIPort6
GC1: CallCtlConnDialingEv 8886000
GC1: CallCtlConnEstablishedEv 8886000
GC1: ConnCreatedEvent 8889000
GC1: ConnInprogressEvent 8889000
GC1: CallCtlConnOfferedEv 8889000
GC1: ConnAlertingEvent 8889000
GC1: CallCtlConnAlertingEv 8889000
GC1: TermConnCreatedEvent irvCTIRD2
GC1: TermConnRingingEvent irvCTIRD2
GC1: CallCtlTermConnRingingEv irvCTIRD2
|
CallingAddress = 8886000, CalledAddress = 8889000, CurrentCallingAddress = 8886000, CurrentCalledAddress = 8889000, ModifiedCallingAddress = 8886000, ModifiedCalledAddress = 8889000, No LastRedirectedPartyAddress
|
irvCTIRD2's Active remote destination of 916267829523 does not answers the call and time out.
|
GC1: TermConnDroppedEv irvCTIRD2
GC1: CallCtlTermConnDroppedEv irvCTIRD2
GC1: ConnDisconnectedEvent 8889000
GC1: CallCtlConnDisconnectedEv 8889000
GC1: TermConnDroppedEv irvCTIPort6
GC1: CallCtlTermConnDroppedEv irvCTIPort6
GC1: ConnDisconnectedEvent 8886000
GC1: CallCtlConnDisconnectedEv 8886000
GC1: CallInvalidEv 8889000
GC1: CallObservationEndedEv
|
CallingAddress = 8886000, CalledAddress = 8889000, CurrentCallingAddress = 8886000, CurrentCalledAddress = 8889000, ModifiedCallingAddress = 8886000, ModifiedCalledAddress = 8889000, No LastRedirectedPartyAddress
|
Scenario 2-4 (Incoming call from CTI Port to CTI Remote Device, and redirect to another CTI Port):
C calls E, and E redirects the call to D, Application is observing all C, D, E on addresses and terminals. GC1 is the GCID of the call.
Action
|
Events
|
Call Info
|
User1 invokes call.connect(irvCTIPort6,8886000,8889000).
|
GC1: CallActiveEvent
GC1: ConnCreatedEvent 8886000
GC1: ConnConnectedEvent 8886000
GC1: CallCtlConnInitiatedEv 8886000
GC1: TermConnCreatedEvent irvCTIPort6
GC1: TermConnActiveEvent irvCTIPort6
GC1: CallCtlTermConnTalkingEv irvCTIPort6
GC1: CallCtlConnDialingEv 8886000
GC1: CallCtlConnEstablishedEv 8886000
GC1: ConnCreatedEvent 8889000
GC1: ConnInprogressEvent 8889000
GC1: CallCtlConnOfferedEv 8889000
GC1: ConnAlertingEvent 8889000
GC1: CallCtlConnAlertingEv 8889000
GC1: TermConnCreatedEvent irvCTIRD2
GC1: TermConnRingingEvent irvCTIRD2
GC1: CallCtlTermConnRingingEv irvCTIRD2
|
CallingAddress = 8886000, CalledAddress = 8889000, CurrentCallingAddress = 8886000, CurrentCalledAddress = 8889000, ModifiedCallingAddress = 8886000, ModifiedCalledAddress = 8889000, No LastRedirectedPartyAddress
|
irvCTIRD2's Active remote destination of 916267829523 answers the call.
|
GC1: ConnConnectedEvent 8889000
GC1: CallCtlConnEstablishedEv 8889000
GC1: TermConnActiveEvent irvCTIRD2
GC1: CallCtlTermConnTalkingEv irvCTIRD2
|
CallingAddress = 8886000, CalledAddress = 8889000, CurrentCallingAddress = 8886000, CurrentCalledAddress = 8889000, ModifiedCallingAddress = 8886000, ModifiedCalledAddress = 8889000, No LastRedirectedPartyAddress
|
User1 invokes connection on irvCTIRD2.redirect(8887000, REDIRECT_NORMAL, DEFAULT_SEARCH_SPACE, CALLED_ADDRESS_UNCHANGED,REDIRECT,8887000,null,REDIRECT_WITHOUT_MODIFIED_CALLING_PARTY,1)
|
GC1: ConnCreatedEvent 8887000
GC1: ConnInprogressEvent 8887000
GC1: CallCtlConnOfferedEv 8887000
GC1: ConnAlertingEvent 8887000
GC1: CallCtlConnAlertingEv 8887000
GC1: TermConnCreatedEvent irvCTIPort7
GC1: TermConnRingingEvent irvCTIPort7
GC1: CallCtlTermConnRingingEv irvCTIPort7
GC1: TermConnDroppedEv irvCTIRD2
GC1: CallCtlTermConnDroppedEv irvCTIRD2
GC1: ConnDisconnectedEvent 8889000
GC1: CallCtlConnDisconnectedEv 8889000
|
CurrentCalledAddress: 8887000 :: CurrentCallingAddress: 8886000 :: LastRedirectedPartyAddress: 8889000
|
irvCTIPort7 answers the call.
|
GC1: ConnConnectedEvent 8887000
GC1: CallCtlConnEstablishedEv 8887000
GC1: TermConnActiveEvent irvCTIPort7
GC1: CallCtlTermConnTalkingEv irvCTIPort7
|
CurrentCalledAddress: 8887000 :: CurrentCallingAddress: 8886000 :: LastRedirectedPartyAddress: 8889000
|
Scenario 2-5 (Incoming call from CTI Port to CTI Remote Device, and redirect to another CTI Remote Device):
C calls E, and E redirects the call to F, and C redirect the call to E. Application is observing all C, E, F on addresses and terminals. GC1 is the GCID of the call.
Action
|
Events
|
Call Info
|
User1 invokes call.connect(irvCTIPort6,8886000,8889000).
|
GC1: CallActiveEvent
GC1: ConnCreatedEvent 8886000
GC1: ConnConnectedEvent 8886000
GC1: CallCtlConnInitiatedEv 8886000
GC1: TermConnCreatedEvent irvCTIPort6
GC1: TermConnActiveEvent irvCTIPort6
GC1: CallCtlTermConnTalkingEv irvCTIPort6
GC1: CallCtlConnDialingEv 8886000
GC1: CallCtlConnEstablishedEv 8886000
GC1: ConnCreatedEvent 8889000
GC1: ConnInprogressEvent 8889000
GC1: CallCtlConnOfferedEv 8889000
GC1: ConnAlertingEvent 8889000
GC1: CallCtlConnAlertingEv 8889000
GC1: TermConnCreatedEvent irvCTIRD2
GC1: TermConnRingingEvent irvCTIRD2
GC1: CallCtlTermConnRingingEv irvCTIRD2
|
CallingAddress = 8886000, CalledAddress = 8889000, CurrentCallingAddress = 8886000, CurrentCalledAddress = 8889000, ModifiedCallingAddress = 8886000, ModifiedCalledAddress = 8889000, No LastRedirectedPartyAddress
|
irvCTIRD2's Active remote destination of 916267829523 answers the call.
|
GC1: ConnConnectedEvent 8889000
GC1: CallCtlConnEstablishedEv 8889000
GC1: TermConnActiveEvent irvCTIRD2
GC1: CallCtlTermConnTalkingEv irvCTIRD2
|
CurrentCalledAddress: 8889000 :: CurrentCallingAddress: 8886000 :: No LastRedirectedPartyAddress
|
User1 invokes connection on irvCTIRD2.redirect(8889001, REDIRECT_NORMAL, DEFAULT_SEARCH_SPACE, CALLED_ADDRESS_UNCHANGED,REDIRECT,8889001,null,REDIRECT_WITHOUT_MODIFIED_CALLING_PARTY,1)
|
GC1: ConnCreatedEvent 8889001
GC1: ConnInprogressEvent 8889001
GC1: CallCtlConnOfferedEv 8889001
GC1: ConnAlertingEvent 8889001
GC1: CallCtlConnAlertingEv 8889001
GC1: TermConnCreatedEvent irvCTIRD3
GC1: TermConnRingingEvent irvCTIRD3
GC1: CallCtlTermConnRingingEv irvCTIRD3
GC1: TermConnDroppedEv irvCTIRD2
GC1: CallCtlTermConnDroppedEv irvCTIRD2
GC1: ConnDisconnectedEvent 8889000
GC1: CallCtlConnDisconnectedEv 8889000
|
CurrentCalledAddress: 8889001 :: CurrentCallingAddress: 8886000 :: LastRedirectedPartyAddress: 8889000
|
irvCTIRD3's Active remote destination of 916267829526 answers the call.
|
GC1: ConnConnectedEvent 8889001
GC1: CallCtlConnEstablishedEv 8889001
GC1: TermConnActiveEvent irvCTIRD3
GC1: CallCtlTermConnTalkingEv irvCTIRD3
|
CurrentCalledAddress: 8889001 :: CurrentCallingAddress: 8886000 :: LastRedirectedPartyAddress: 8889000
|
User1 invokes connection on irvCTIPort6.redirect(8889000, REDIRECT_NORMAL, DEFAULT_SEARCH_SPACE, CALLED_ADDRESS_UNCHANGED,REDIRECT,8889000,null,REDIRECT_WITHOUT_MODIFIED_CALLING_PARTY,1)
|
GC1: ConnCreatedEvent 8889000
GC1: ConnInprogressEvent 8889000
GC1: CallCtlConnOfferedEv 8889000
GC1: ConnAlertingEvent 8889000
GC1: CallCtlConnAlertingEv 8889000
GC1: TermConnCreatedEvent irvCTIRD2
GC1: TermConnRingingEvent irvCTIRD2
GC1: CallCtlTermConnRingingEv irvCTIRD2
GC1: TermConnDroppedEv irvCTIPort6
GC1: CallCtlTermConnDroppedEv irvCTIPort6
GC1: ConnDisconnectedEvent 8886000
GC1: CallCtlConnDisconnectedEv 8886000
|
CurrentCalledAddress: 8889000 :: CurrentCallingAddress: 8889001 :: LastRedirectedPartyAddress: 8886000
|
irvCTIRD2's Active remote destination of 916267829523 answers the call.
|
GC1: ConnConnectedEvent 8889000
GC1: CallCtlConnEstablishedEv 8889000
GC1: TermConnActiveEvent irvCTIRD2
GC1: CallCtlTermConnTalkingEv irvCTIRD2
GC1: TermConnDroppedEv irvCTIRD3
GC1: CallCtlTermConnDroppedEv irvCTIRD3
GC1: ConnDisconnectedEvent 8889001
GC1: CallCtlConnDisconnectedEv 8889001
GC1: TermConnDroppedEv irvCTIRD2
GC1: CallCtlTermConnDroppedEv irvCTIRD2
GC1: ConnDisconnectedEvent 8889000
GC1: CallCtlConnDisconnectedEv 8889000
GC1: CallInvalidEvent
GC1: CallObservationEndedEv
|
CurrentCalledAddress: 8889000 :: CurrentCallingAddress: 8889001 :: LastRedirectedPartyAddress: 8886000
|
Scenario 2-6 (Incoming call from CTI Port to CTI Remote Device with a shared-line of another CTI Port):
C calls A (with a shared line with B), Application is observing A, B, and C on addresses and terminals. GC1 is the GCID of the call.
Action
|
Events
|
Call Info
|
User1 invokes call.connect(irvCTIPort6,8886000,8881000).
|
GC1: CallActiveEvent
GC1: ConnCreatedEvent 8886000
GC1: ConnConnectedEvent 8886000
GC1: CallCtlConnInitiatedEv 8886000
GC1: TermConnCreatedEvent irvCTIPort6
GC1: TermConnActiveEvent irvCTIPort6
GC1: CallCtlTermConnTalkingEv irvCTIPort6
GC1: CallCtlConnDialingEv 8886000
GC1: CallCtlConnEstablishedEv 8886000
GC1: ConnCreatedEvent 8881000
GC1: ConnInprogressEvent 8881000
GC1: CallCtlConnOfferedEv 8881000
GC1: ConnAlertingEvent 8881000
GC1: CallCtlConnAlertingEv 8881000
GC1: TermConnCreatedEvent irvCTIPort1
GC1: TermConnRingingEvent irvCTIPort1
GC1: CallCtlTermConnRingingEv irvCTIPort1
GC1: TermConnCreatedEvent irvCTIRD1
GC1: TermConnRingingEvent irvCTIRD1
GC1: CallCtlTermConnRingingEv irvCTIRD1
|
CallingAddress = 8886000, CalledAddress = 8881000, CurrentCallingAddress = 8886000, CurrentCalledAddress = 8881000, ModifiedCallingAddress = 8886000, ModifiedCalledAddress = 8881000, No LastRedirectedPartyAddress
|
irvCTIRD1's Active remote destination of 919498231202 answers the call.
|
GC1: ConnConnectedEvent 8881000
GC1: CallCtlConnEstablishedEv 8881000
GC1: TermConnActiveEvent irvCTIRD1
GC1: CallCtlTermConnTalkingEv irvCTIRD1
GC1: TermConnPassiveEvent irvCTIPort1
GC1: CallCtlTermConnBridgedEv irvCTIPort1
|
CurrentCalledAddress: 8881000 :: CurrentCallingAddress: 8886000 :: No LastRedirectedPartyAddress
|
Disconnect the call from irvCTIPort6.
|
GC1: TermConnDroppedEv irvCTIPort6
GC1: CallCtlTermConnDroppedEv irvCTIPort6
GC1: ConnDisconnectedEvent 8886000
GC1: CallCtlConnDisconnectedEv8886000
GC1: TermConnDroppedEv irvCTIRD1
GC1: CallCtlTermConnDroppedEv irvCTIRD1
GC1: TermConnDroppedEv irvCTIPort1
GC1: CallCtlTermConnDroppedEv irvCTIPort1
GC1: ConnDisconnectedEvent 8881000
GC1: CallCtlConnDisconnectedEv 8881000
GC1: CallInvalidEvent
GC1: CallObservationEndedEv
|
CurrentCalledAddress: 8881000 :: CurrentCallingAddress: 8886000 :: No LastRedirectedPartyAddress
|
Scenario 2-7 (Incoming call from CTI Port to CTI Port with a shared-line of a CTI Remote Device):
C calls B (with a shared line of A), Application is observing A, B, and C on addresses and terminals. GC1 is the GCID of the call.
Action
|
Events
|
Call Info
|
User1 invokes call.connect(irvCTIPort6,8886000,8881000).
|
GC1: CallActiveEvent
GC1: ConnCreatedEvent 8886000
GC1: ConnConnectedEvent 8886000
GC1: CallCtlConnInitiatedEv 8886000
GC1: TermConnCreatedEvent irvCTIPort6
GC1: TermConnActiveEvent irvCTIPort6
GC1: CallCtlTermConnTalkingEv irvCTIPort6
GC1: CallCtlConnDialingEv 8886000
GC1: CallCtlConnEstablishedEv 8886000
GC1: ConnCreatedEvent 8881000
GC1: ConnInprogressEvent 8881000
GC1: CallCtlConnOfferedEv 8881000
GC1: ConnAlertingEvent 8881000
GC1: CallCtlConnAlertingEv 8881000
GC1: TermConnCreatedEvent irvCTIPort1
GC1: TermConnRingingEvent irvCTIPort1
GC1: CallCtlTermConnRingingEv irvCTIPort1
GC1: TermConnCreatedEvent irvCTIRD1
GC1: TermConnRingingEvent irvCTIRD1
GC1: CallCtlTermConnRingingEv irvCTIRD1
|
CallingAddress = 8886000, CalledAddress = 8881000, CurrentCallingAddress = 8886000, CurrentCalledAddress = 8881000, ModifiedCallingAddress = 8886000, ModifiedCalledAddress = 8881000, No LastRedirectedPartyAddress
|
irvCTIPort1 answers the call.
|
GC1: TermConnDroppedEv irvCTIRD1
GC1: CallCtlTermConnDroppedEv irvCTIRD1
GC1: ConnConnectedEvent 8881000
GC1: CallCtlConnEstablishedEv 8881000
GC1: TermConnActiveEvent irvCTIPort1
GC1: CallCtlTermConnTalkingEv irvCTIPort1
|
CurrentCalledAddress: 8881000 :: CurrentCallingAddress: 8886000 :: No LastRedirectedPartyAddress
|
Disconnect the call from irvCTIPort6.
|
GC1: TermConnDroppedEv irvCTIPort6
GC1: CallCtlTermConnDroppedEv irvCTIPort6
GC1: ConnDisconnectedEvent 8886000
GC1: CallCtlConnDisconnectedEv8886000
GC1: TermConnDroppedEv irvCTIPort1
GC1: CallCtlTermConnDroppedEv irvCTIPort1
GC1: ConnDisconnectedEvent 8881000
GC1: CallCtlConnDisconnectedEv 8881000
GC1: CallInvalidEvent
GC1: CallObservationEndedEv
|
CurrentCalledAddress: 8881000 :: CurrentCallingAddress: 8886000 :: No LastRedirectedPartyAddress
|
Scenario 2-8 (Outgoing call from CTI Remote Device to CTI Port):
E calls D, Application is observing both D and E on addresses and terminals. GC1 is the GCID of the call.
Action
|
Events
|
Call Info
|
User1 invokes call.connect(irvCTIRD2,8889000,8887000).
|
GC1: CallActiveEvent
GC1: ConnCreatedEvent 8889000
GC1: ConnInprogressEvent 8889000
GC1: CallCtlConnOfferedEv 8889000
|
CallingAddress = Unknown, CalledAddress = 8889000, CurrentCallingAddress = Unknown, CurrentCalledAddress = 8889000, ModifiedCallingAddress = Unknown, ModifiedCalledAddress = 8889000, No LastRedirectedPartyAddress
|
irvCTIRD2's Active remote destination of 916267829523 answers the call.
|
GC1: ConnConnectedEvent 8889000
GC1: CallCtlConnEstablishedEv 8889000
GC1: TermConnCreatedEvent irvCTIRD2
GC1: TermConnActiveEvent irvCTIRD2
GC1: CallCtlTermConnTalkingEv irvCTIRD2
|
CallingAddress = Unknown, CalledAddress = 8889000, CurrentCallingAddress = Unknown, CurrentCalledAddress = 8889000, ModifiedCallingAddress = Unknown, ModifiedCalledAddress = 8889000, No LastRedirectedPartyAddress
|
irvCTIPort7 rings and answers the call.
|
GC1: ConnCreatedEvent 8887000
GC1: ConnInprogressEvent 8887000
GC1: CallCtlConnOfferedEv 8887000
GC1: ConnAlertingEvent 8887000
GC1: CallCtlConnAlertingEv 8887000
GC1: TermConnCreatedEvent irvCTIPort7
GC1: TermConnRingingEvent irvCTIPort7
GC1: CallCtlTermConnRingingEv irvCTIPort7
GC1: ConnConnectedEvent 8887000
GC1: CallCtlConnEstablishedEv 8887000
GC1: TermConnActiveEvent irvCTIPort7
GC1: CallCtlTermConnTalkingEv irvCTIPort7
|
CallingAddress = Unknown, CalledAddress = 8889000, CurrentCallingAddress = 8889000, CurrentCalledAddress = 8887000, ModifiedCallingAddress = 8889000, ModifiedCalledAddress = 8887000, No LastRedirectedPartyAddress
|
Disconnect the call from 8889000 connection.
|
GC1: TermConnDroppedEv irvCTIRD2
GC1: CallCtlTermConnDroppedEv irvCTIRD2
GC1: ConnDisconnectedEvent 8889000
GC1: CallCtlConnDisconnectedEv 8889000
GC1: TermConnDroppedEv irvCTIPort7
GC1: CallCtlTermConnDroppedEv irvCTIPort7
GC1: ConnDisconnectedEvent 8887000
GC1: CallCtlConnDisconnectedEv 8887000
GC1: CallInvalidEvent
GC1: CallObservationEndedEv
|
CurrentCalledAddress: 8887000 :: CurrentCallingAddress: 8889000 :: No LastRedirectedPartyAddress
|
Scenario 2-9 (Outgoing call from CTI Remote Device (with a shared line of CTI Port) to another CTI Port):
A (with a shared line of B) calls D, Application is observing both A, B, and D on addresses and terminals. GC1 is the GCID of the call.
Action
|
Events
|
Call Info
|
User1 invokes call.connect(irvCTIRD1,8881000,8887000).
|
GC1: CallActiveEvent
GC1: ConnCreatedEvent 8881000
GC1: ConnInprogressEvent 8881000
GC1: CallCtlConnOfferedEv 8881000
GC1: ConnAlertingEvent 8881000
GC1: CallCtlConnAlertingEv 8881000
|
CallingAddress = Unknown, CalledAddress = 8881000, CurrentCallingAddress = Unknown, CurrentCalledAddress = 8881000, ModifiedCallingAddress = Unknown, ModifiedCalledAddress = 8881000, No LastRedirectedPartyAddress
|
irvCTIPort7 rings
|
GC1: TermConnCreatedEvent irvCTIPort1
GC1: TermConnRingingEvent irvCTIPort1
GC1: CallCtlTermConnRingingEv irvCTIPort1
|
|
irvCTIRD1's Active remote destination of 919498231202 answers the call.
|
GC1: ConnConnectedEvent 8881000
GC1: CallCtlConnEstablishedEv 8881000
GC1: TermConnCreatedEvent irvCTIRD1
GC1: TermConnActiveEvent irvCTIRD1
GC1: CallCtlTermConnTalkingEv irvCTIRD1
|
CallingAddress = Unknown, CalledAddress = 8881000, CurrentCallingAddress = Unknown, CurrentCalledAddress = 8881000, ModifiedCallingAddress = Unknown, ModifiedCalledAddress = 8881000, No LastRedirectedPartyAddress
|
irvCTIPort7 rings
|
GC1: TermConnPassiveEvent irvCTIPort1
GC1: CallCtlTermConnBridgedEv irvCTIPort1
|
CallingAddress = Unknown, CalledAddress = 8887000, CurrentCallingAddress = 8881000, CurrentCalledAddress = 8887000, ModifiedCallingAddress = 8881000, ModifiedCalledAddress = 8887000, No LastRedirectedPartyAddress
|
irvCTIPort7 answers the call.
|
GC1: ConnCreatedEvent 8887000
GC1: ConnInprogressEvent 8887000
GC1: CallCtlConnOfferedEv 8887000
GC1: ConnAlertingEvent 8887000
GC1: CallCtlConnAlertingEv 8887000
GC1: TermConnCreatedEvent irvCTIPort7
GC1: TermConnRingingEvent irvCTIPort7
GC1: CallCtlTermConnRingingEv irvCTIPort7
GC1: ConnConnectedEvent 8887000
GC1: CallCtlConnEstablishedEv 8887000
GC1: TermConnActiveEvent irvCTIPort7
GC1: CallCtlTermConnTalkingEv irvCTIPort7
|
CurrentCalledAddress: 8887000 :: CurrentCallingAddress: 8881000:: No LastRedirectedPartyAddress
|
Disconnect the call from 8881000 connection.
|
GC1: TermConnDroppedEv irvCTIRD1
GC1: CallCtlTermConnDroppedEv irvCTIRD1
GC1: TermConnDroppedEv irvCTIPort1
GC1: CallCtlTermConnDroppedEv irvCTIPort1
GC1: ConnDisconnectedEvent 8881000
GC1: CallCtlConnDisconnectedEv 8881000
GC1: TermConnDroppedEv irvCTIPort7
GC1: CallCtlTermConnDroppedEv irvCTIPort7
GC1: ConnDisconnectedEvent 8887000
GC1: CallCtlConnDisconnectedEv 8887000
GC1: CallInvalidEvent
GC1: CallObservationEndedEv
|
CurrentCalledAddress: 8887000 :: CurrentCallingAddress: 8881000:: No LastRedirectedPartyAddress
|
Scenario 2-10 (Outgoing call from CTI Remote Device to CTI Port, but no answer on active remote destination):
E calls D, Application is observing both E and D on addresses and terminals. GC1 is the GCID of the call.
Action
|
Events
|
Call Info
|
User1 invokes call.connect(irvCTIRD2,8889000,8887000).
|
GC1: CallActiveEvent
GC1: ConnCreatedEvent 8889000
GC1: ConnInprogressEvent 8889000
GC1: CallCtlConnOfferedEv 8889000
|
CallingAddress = Unknown, CalledAddress = 8889000, CurrentCallingAddress = Unknown, CurrentCalledAddress = 8889000, ModifiedCallingAddress = Unknown, ModifiedCalledAddress = 8889000, No LastRedirectedPartyAddress
|
irvCTIRD2's Active remote destination of 916267829523 does not answer the call and time out.
|
GC1: ConnDisconnectedEvent 8889000
GC1: CallCtlConnDisconnectedEv 8889000
GC1: CallInvalidEvent
GC1: CallObservationEndedEv
|
CallingAddress = Unknown, CalledAddress = 8889000, CurrentCallingAddress = Unknown, CurrentCalledAddress = 8889000, ModifiedCallingAddress = Unknown, ModifiedCalledAddress = 8889000, No LastRedirectedPartyAddress
|
Scenario 2-11 (Outgoing call from CTI Remote Device to CTI Port, but no answer on CTI Port):
E calls D, Application is observing both D and E on addresses and terminals. GC1 is the GCID of the call.
Action
|
Events
|
Call Info
|
User1 invokes call.connect(irvCTIRD2,8889000,8887000).
|
GC1: CallActiveEvent
GC1: ConnCreatedEvent 8889000
GC1: ConnInprogressEvent 8889000
GC1: CallCtlConnOfferedEv 8889000
|
CallingAddress = Unknown, CalledAddress = 8889000, CurrentCallingAddress = Unknown, CurrentCalledAddress = 8889000, ModifiedCallingAddress = Unknown, ModifiedCalledAddress = 8889000, No LastRedirectedPartyAddress
|
irvCTIRD2's Active remote destination of 916267829523 answers the call.
|
GC1: ConnConnectedEvent 8889000
GC1: CallCtlConnEstablishedEv 8889000
GC1: TermConnCreatedEvent irvCTIRD2
GC1: TermConnActiveEvent irvCTIRD2
GC1: CallCtlTermConnTalkingEv irvCTIRD2
|
CallingAddress = Unknown, CalledAddress = 8889000, CurrentCallingAddress = Unknown, CurrentCalledAddress = 8889000, ModifiedCallingAddress = Unknown, ModifiedCalledAddress = 8889000, No LastRedirectedPartyAddress
|
irvCTIPort7 rings.
|
GC1: ConnCreatedEvent 8887000
GC1: ConnInprogressEvent 8887000
GC1: CallCtlConnOfferedEv 8887000
GC1: ConnAlertingEvent 8887000
GC1: CallCtlConnAlertingEv 8887000
GC1: TermConnCreatedEvent irvCTIPort7
GC1: TermConnRingingEvent irvCTIPort7
GC1: CallCtlTermConnRingingEv irvCTIPort7
|
CallingAddress = Unknown, CalledAddress = 8889000, CurrentCallingAddress = 8889000, CurrentCalledAddress = 8887000, ModifiedCallingAddress = 8889000, ModifiedCalledAddress = 8887000, No LastRedirectedPartyAddress
|
irvCTIPort7 does not answer the call, time out.
|
GC1: TermConnDroppedEv irvCTIPort7
GC1: CallCtlTermConnDroppedEv irvCTIPort7
GC1: ConnDisconnectedEvent 8887000
GC1: CallCtlConnDisconnectedEv 8887000
GC1: ConnFailedEvent 8889000
GC1: CallCtlConnFailedEv 8889000
GC1: TermConnDroppedEv irvCTIRD2
GC1: CallCtlTermConnDroppedEv irvCTIRD2
GC1: ConnDisconnectedEvent 8889000
GC1: CallCtlConnDisconnectedEv 8889000
GC1: CallInvalidEvent
GC1: CallObservationEndedEv
|
CurrentCalledAddress: 8887000 :: CurrentCallingAddress: 8889000 :: No LastRedirectedPartyAddress
|
Scenario 2-12 (Outgoing call from non-observed CTI Remote Device to CTI Port):
E calls D, Application is observing only on D on addresses and terminals. GC1 is the GCID of the call.
Action
|
Events
|
Call Info
|
From another provider, User1 invokes call.connect(irvCTIRD2,8889000,8887000).
|
GC1: CallActiveEvent
GC1: ConnCreatedEvent 8887000
GC1: ConnInprogressEvent 8887000
GC1: CallCtlConnOfferedEv 8887000
|
CurrentCalledAddress: 8887000 :: CurrentCallingAddress: Unknown :: No LastRedirectedPartyAddress
|
irvCTIRD2's Active remote destination of 916267829523 answers the call.
|
GC1: ConnCreatedEvent 8889000
GC1: ConnConnectedEvent 8889000
GC1: CallCtlConnEstablishedEv 8889000
GC1: ConnAlertingEvent 8887000
GC1: CallCtlConnAlertingEv 8887000
GC1: TermConnCreatedEvent irvCTIPort7
GC1: TermConnRingingEvent irvCTIPort7
GC1: CallCtlTermConnRingingEv irvCTIPort7
|
CurrentCalledAddress: 8887000 :: CurrentCallingAddress: 8889000 :: No LastRedirectedPartyAddress
|
irvCTIPort7 answers the call.
|
GC1: ConnConnectedEvent 8887000
GC1: CallCtlConnEstablishedEv 8887000
GC1: TermConnActiveEvent irvCTIPort7
GC1: CallCtlTermConnTalkingEv irvCTIPort7
|
CurrentCalledAddress: 8887000 :: CurrentCallingAddress: 8889000 :: LastRedirectedPartyAddress: 8887000
|
Scenario 2-13 (Outgoing call from CTI Remote Device to non-observed CTI Port):
E calls D, Application is observing only on E on addresses and terminals. GC1 is the GCID of the call.
Action
|
Events
|
Call Info
|
From another provider, User1 invokes call.connect(irvCTIRD2,8889000,8887000).
|
GC1: CallActiveEvent
GC1: ConnCreatedEvent 8889000
GC1: ConnInprogressEvent 8889000
GC1: CallCtlConnOfferedEv 8889000
|
CurrentCalledAddress: 8889000 :: CurrentCallingAddress: Unknown :: No LastRedirectedPartyAddress
|
irvCTIRD2's Active remote destination of 916267829523 answers the call.
|
GC1: ConnConnectedEvent 8889000
GC1: CallCtlConnEstablishedEv 8889000
GC1: TermConnCreatedEvent irvCTIRD2
GC1: TermConnActiveEvent irvCTIRD2
GC1: CallCtlTermConnTalkingEv irvCTIRD2
|
CurrentCalledAddress: 8889000 :: CurrentCallingAddress: Unknown:: No LastRedirectedPartyAddress
|
irvCTIPort7 rings and answers the call from another provider.
|
GC1: ConnCreatedEvent 8887000
GC1: ConnInprogressEvent 8887000
GC1: CallCtlConnOfferedEv 8887000
GC1: ConnAlertingEvent 8887000
GC1: CallCtlConnAlertingEv 8887000
GC1: ConnConnectedEvent 8887000
GC1: CallCtlConnEstablishedEv 8887000
|
CurrentCalledAddress: 8887000 :: CurrentCallingAddress: 8889000 :: LastRedirectedPartyAddress: 8887000
|
Scenario 2-14 (Outgoing call from CTI Remote Device to another CTI Remote Device):
E calls F, Application is observing both E and F on addresses and terminals. GC1 is the GCID of the call.
Action
|
Events
|
Call Info
|
User1 invokes call.connect(irvCTIRD2,8889000,8889001).
|
GC1: CallActiveEvent
GC1: ConnCreatedEvent 8889000
GC1: ConnInprogressEvent 8889000
GC1: CallCtlConnOfferedEv 8889000
|
CallingAddress = Unknown, CalledAddress = 8889000, CurrentCallingAddress = Unknown, CurrentCalledAddress = 8889000, ModifiedCallingAddress = Unknown, ModifiedCalledAddress = 8889000, No LastRedirectedPartyAddress
|
irvCTIRD2's Active remote destination of 916267829523 answers the call.
|
GC1: ConnConnectedEvent 8889000
GC1: CallCtlConnEstablishedEv 8889000
GC1: TermConnCreatedEvent irvCTIRD2
GC1: TermConnActiveEvent irvCTIRD2
GC1: CallCtlTermConnTalkingEv irvCTIRD2
|
CallingAddress = Unknown, CalledAddress = 8889000, CurrentCallingAddress = Unknown, CurrentCalledAddress = 8889000, ModifiedCallingAddress = Unknown, ModifiedCalledAddress = 8889000, No LastRedirectedPartyAddress
|
irvCTIRD3's Active remote destination of 916267829526 answers the call.
|
GC1: ConnCreatedEvent 8889001
GC1: ConnInprogressEvent 8889001
GC1: CallCtlConnOfferedEv 8889001
GC1: ConnAlertingEvent 8889001
GC1: CallCtlConnAlertingEv 8889001
GC1: TermConnCreatedEvent irvCTIRD3
GC1: TermConnRingingEvent irvCTIRD3
GC1: CallCtlTermConnRingingEv irvCTIRD3
GC1: ConnConnectedEvent 8889001
GC1: CallCtlConnEstablishedEv 8889001
GC1: TermConnActiveEvent irvCTIRD3
GC1: CallCtlTermConnTalkingEv irvCTIRD3
|
CallingAddress = Unknown, CalledAddress = 8889000, CurrentCallingAddress = Unknown, CurrentCalledAddress = 8889000, ModifiedCallingAddress = Unknown, ModifiedCalledAddress = 8889000, No LastRedirectedPartyAddress
|
Disconnect the call from 8889000 connection.
|
GC1: TermConnDroppedEv irvCTIRD2
GC1: CallCtlTermConnDroppedEv irvCTIRD2
GC1: ConnDisconnectedEvent 8889000
GC1: CallCtlConnDisconnectedEv 8889000
GC1: TermConnDroppedEv irvCTIRD3
GC1: CallCtlTermConnDroppedEv irvCTIRD3
GC1: ConnDisconnectedEvent 8889001
GC1: CallCtlConnDisconnectedEv 8889001
GC1: CallInvalidEvent
GC1: CallObservationEndedEv
|
CallingAddress = Unknown, CalledAddress = 8889000, CurrentCallingAddress = Unknown, CurrentCalledAddress = 8889000, ModifiedCallingAddress = Unknown, ModifiedCalledAddress = 8889000, No LastRedirectedPartyAddress
|
Scenario 2-15 (Outgoing call from CTI Remote Device to another CTI Remote Device, then redirect again to a third CTI Remote Device with a shared-line.):
E calls F, then F redirect to A (with a shared-line with B), Application is observing all A, B, E and F on addresses and terminals. GC1 is the GCID of the call.
Action
|
Events
|
Call Info
|
User1 invokes call.connect(irvCTIRD2,8889000,8889001).
|
GC1: CallActiveEvent
GC1: ConnCreatedEvent 8889000
GC1: ConnInprogressEvent 8889000
GC1: CallCtlConnOfferedEv 8889000
|
CurrentCalledAddress: 8889000 :: CurrentCallingAddress: Unknown:: No LastRedirectedPartyAddress
|
irvCTIRD2's Active remote destination of 916267829523 answers the call.
|
GC1: ConnConnectedEvent 8889000
GC1: CallCtlConnEstablishedEv 8889000
GC1: TermConnCreatedEvent irvCTIRD2
GC1: TermConnActiveEvent irvCTIRD2
GC1: CallCtlTermConnTalkingEv irvCTIRD2
|
CurrentCalledAddress: 8889000 :: CurrentCallingAddress: Unknown:: No LastRedirectedPartyAddress
|
irvCTIRD3's Active remote destination of 916267829526 answers the call.
|
GC1: ConnCreatedEvent 8889001
GC1: ConnInprogressEvent 8889001
GC1: CallCtlConnOfferedEv 8889001
GC1: ConnAlertingEvent 8889001
GC1: CallCtlConnAlertingEv 8889001
GC1: TermConnCreatedEvent irvCTIRD3
GC1: TermConnRingingEvent irvCTIRD3
GC1: CallCtlTermConnRingingEv irvCTIRD3
GC1: ConnConnectedEvent 8889001
GC1: CallCtlConnEstablishedEv 8889001
GC1: TermConnActiveEvent irvCTIRD3
GC1: CallCtlTermConnTalkingEv irvCTIRD3
|
CurrentCalledAddress: 8889001 :: CurrentCallingAddress: 8889000 :: LastRedirectedPartyAddress: 8889001
|
User invokes connection on irvCTIRD3.redirect(8881000, REDIRECT_NORMAL, DEFAULT_SEARCH_SPACE, CALLED_ADDRESS_UNCHANGED,REDIRECT,8881000,null,REDIRECT_WITHOUT_MODIFIED_CALLING_PARTY,1).
Both irvCTIRD1 and irvCTIPort1 are ringing.
|
GC1: ConnCreatedEvent 8881000
GC1: ConnInprogressEvent 8881000
GC1: CallCtlConnOfferedEv 8881000
GC1: ConnAlertingEvent 8881000
GC1: CallCtlConnAlertingEv 8881000
GC1: TermConnCreatedEvent irvCTIPort1
GC1: TermConnRingingEvent irvCTIPort1
GC1: CallCtlTermConnRingingEv irvCTIPort1
GC1: TermConnDroppedEv irvCTIRD3
GC1: CallCtlTermConnDroppedEv irvCTIRD3
GC1: ConnDisconnectedEvent 8889001
GC1: CallCtlConnDisconnectedEv 8889001
GC1: TermConnCreatedEvent irvCTIRD1
GC1: TermConnRingingEvent irvCTIRD1
GC1: CallCtlTermConnRingingEv irvCTIRD1
|
CurrentCalledAddress: 8881000 :: CurrentCallingAddress: 8889000 :: LastRedirectedPartyAddress: 8889001
|
irvCTIRD1's Active remote destination of 919498231202 answers the call. Terminal connection of irvCTIRD1 goes to 'talking' and irvCTIPort1 goes to 'bridged'.
|
GC1: ConnConnectedEvent 8881000
GC1: CallCtlConnEstablishedEv 8881000
GC1: TermConnActiveEvent irvCTIRD1
GC1: CallCtlTermConnTalkingEv irvCTIRD1
GC1: TermConnPassiveEvent irvCTIPort1
GC1: CallCtlTermConnBridgedEv irvCTIPort1
|
CurrentCalledAddress: 8881000 :: CurrentCallingAddress: 8889000 :: LastRedirectedPartyAddress: 8889001
|
Disconnect the call from 8889000 connection.
|
GC1: TermConnDroppedEv irvCTIRD2
GC1: CallCtlTermConnDroppedEv irvCTIRD2
GC1: ConnDisconnectedEvent 8889000
GC1: CallCtlConnDisconnectedEv 8889000
GC1: TermConnDroppedEv irvCTIRD1
GC1: CallCtlTermConnDroppedEv irvCTIRD1
GC1: TermConnDroppedEv irvCTIPort1
GC1: CallCtlTermConnDroppedEv irvCTIPort1
GC1: ConnDisconnectedEvent 8881000
GC1: CallCtlConnDisconnectedEv 8881000
GC1: CallInvalidEvent
GC1: CallObservationEndedEv
|
CurrentCalledAddress: 8881000 :: CurrentCallingAddress: 8889000 :: LastRedirectedPartyAddress: 8889001
|
Scenario 2-16 (Disconnect an incoming call on CTI Remote Device after answer while talking):
C calls E, Application is observing both C and E on addresses and terminals. GC1 is the GCID of the call.
Action
|
Events
|
Call Info
|
User1 invokes call.connect(irvCTIPort6,8886000,8889000).
|
GC1: CallActiveEvent
GC1: ConnCreatedEvent 8886000
GC1: ConnConnectedEvent 8886000
GC1: CallCtlConnInitiatedEv 8886000
GC1: TermConnCreatedEvent irvCTIPort6
GC1: TermConnActiveEvent irvCTIPort6
GC1: CallCtlTermConnTalkingEv irvCTIPort6
GC1: CallCtlConnDialingEv 8886000
GC1: CallCtlConnEstablishedEv 8886000
GC1: ConnCreatedEvent 8889000
GC1: ConnInprogressEvent 8889000
GC1: CallCtlConnOfferedEv 8889000
GC1: ConnAlertingEvent 8889000
GC1: CallCtlConnAlertingEv 8889000
GC1: TermConnCreatedEvent irvCTIRD2
GC1: TermConnRingingEvent irvCTIRD2
GC1: CallCtlTermConnRingingEv irvCTIRD2
|
CurrentCalledAddress: 8889000 :: CurrentCallingAddress: 8886000 :: No LastRedirectedPartyAddress
|
irvCTIRD2's Active remote destination of 916267829523 answers the call.
|
GC1: ConnConnectedEvent 8889000
GC1: CallCtlConnEstablishedEv 8889000
GC1: TermConnActiveEvent irvCTIRD2
GC1: CallCtlTermConnTalkingEv irvCTIRD2
|
CurrentCalledAddress: 8889000 :: CurrentCallingAddress: 8886000 :: No LastRedirectedPartyAddress
|
User invokes connection.disconnect on irvCTIRD2 while talking.
|
GC1: TermConnDroppedEv irvCTIRD2
GC1: CallCtlTermConnDroppedEv irvCTIRD2
GC1: ConnDisconnectedEvent 8889000
GC1: CallCtlConnDisconnectedEv 8889000
GC1: TermConnDroppedEv irvCTIPort6
GC1: CallCtlTermConnDroppedEv irvCTIPort6
GC1: ConnDisconnectedEvent 8886000
GC1: CallCtlConnDisconnectedEv 8886000
GC1: CallInvalidEvent
GC1: CallObservationEndedEv
|
CurrentCalledAddress: 8889000 :: CurrentCallingAddress: 8886000 :: No LastRedirectedPartyAddress
|
Scenario 2-17 (Disconnect an incoming call on CTI Remote Device after answer while talking):
C calls E, Application is observing both C and E on addresses and terminals. GC1 is the GCID of the call.
Action
|
Events
|
Call Info
|
User1 invokes call.connect(irvCTIPort6,8886000,8889000).
|
GC1: CallActiveEvent
GC1: ConnCreatedEvent 8886000
GC1: ConnConnectedEvent 8886000
GC1: CallCtlConnInitiatedEv 8886000
GC1: TermConnCreatedEvent irvCTIPort6
GC1: TermConnActiveEvent irvCTIPort6
GC1: CallCtlTermConnTalkingEv irvCTIPort6
GC1: CallCtlConnDialingEv 8886000
GC1: CallCtlConnEstablishedEv 8886000
GC1: ConnCreatedEvent 8889000
GC1: ConnInprogressEvent 8889000
GC1: CallCtlConnOfferedEv 8889000
GC1: ConnAlertingEvent 8889000
GC1: CallCtlConnAlertingEv 8889000
GC1: TermConnCreatedEvent irvCTIRD2
GC1: TermConnRingingEvent irvCTIRD2
GC1: CallCtlTermConnRingingEv irvCTIRD2
|
CurrentCalledAddress: 8889000 :: CurrentCallingAddress: 8886000 :: No LastRedirectedPartyAddress
|
User invokes connection.disconnect on irvCTIRD2 while it's still ringing on Active remote destination of 16267829523.
|
GC1: TermConnDroppedEv irvCTIRD2
GC1: CallCtlTermConnDroppedEv irvCTIRD2
GC1: ConnDisconnectedEvent 8889000
GC1: CallCtlConnDisconnectedEv 8889000
GC1: ConnFailedEvent 8886000
GC1: CallCtlConnFailedEv 8886000
GC1: TermConnDroppedEv irvCTIPort6
GC1: CallCtlTermConnDroppedEv irvCTIPort6
GC1: ConnDisconnectedEvent 8886000
GC1: CallCtlConnDisconnectedEv 8886000
GC1: CallInvalidEvent
GC1: CallObservationEndedEv
|
CurrentCalledAddress: 8889000 :: CurrentCallingAddress: 8886000 :: No LastRedirectedPartyAddress
|
Scenario 2-18 (Disconnect an Outgoing call from CTI Remote Device to CTI Port. That is to disconnect after answering on remote destination and answering on called CTI Port.):
E calls D, Application is observing both D and E on addresses and terminals. GC1 is the GCID of the call.
Action
|
Events
|
Call Info
|
User1 invokes call.connect(irvCTIRD2,8889000,8887000).
|
GC1: CallActiveEvent
GC1: ConnCreatedEvent 8889000
GC1: ConnInprogressEvent 8889000
GC1: CallCtlConnOfferedEv 8889000
|
CurrentCalledAddress: 8889000 :: CurrentCallingAddress: 8889000 :: No LastRedirectedPartyAddress
|
irvCTIRD2's Active remote destination of 916267829523 answers the call.
|
GC1: ConnConnectedEvent 8889000
GC1: CallCtlConnEstablishedEv 8889000
GC1: TermConnCreatedEvent irvCTIRD2
GC1: TermConnActiveEvent irvCTIRD2
GC1: CallCtlTermConnTalkingEv irvCTIRD2
|
CurrentCalledAddress: 8889000 :: CurrentCallingAddress: 8889000 :: No LastRedirectedPartyAddress
|
irvCTIPort7 rings and answers the call.
|
GC1: ConnCreatedEvent 8887000
GC1: ConnInprogressEvent 8887000
GC1: CallCtlConnOfferedEv 8887000
GC1: ConnAlertingEvent 8887000
GC1: CallCtlConnAlertingEv 8887000
GC1: TermConnCreatedEvent irvCTIPort7
GC1: TermConnRingingEvent irvCTIPort7
GC1: CallCtlTermConnRingingEv irvCTIPort7
GC1: ConnConnectedEvent 8887000
GC1: CallCtlConnEstablishedEv 8887000
GC1: TermConnActiveEvent irvCTIPort7
GC1: CallCtlTermConnTalkingEv irvCTIPort7
|
CurrentCalledAddress: 8887000 :: CurrentCallingAddress: 8889000 :: LastRedirectedPartyAddress: 8887000
|
Disconnect the call from 8889000 connection.
|
GC1: TermConnDroppedEv irvCTIRD2
GC1: CallCtlTermConnDroppedEv irvCTIRD2
GC1: ConnDisconnectedEvent 8889000
GC1: CallCtlConnDisconnectedEv 8889000
GC1: TermConnDroppedEv irvCTIPort7
GC1: CallCtlTermConnDroppedEv irvCTIPort7
GC1: ConnDisconnectedEvent 8887000
GC1: CallCtlConnDisconnectedEv 8887000
GC1: CallInvalidEvent
GC1: CallObservationEndedEv
|
CurrentCalledAddress: 8887000 :: CurrentCallingAddress: 8889000 :: LastRedirectedPartyAddress: 8887000
|
Scenario 2-19 (Disconnect an Outgoing call from CTI Remote Device to CTI Port. That is to disconnect after answering on remote destination but before answering on called CTI Port.):
E calls D, Application is observing both D and E on addresses and terminals. GC1 is the GCID of the call.
Action
|
Events
|
Call Info
|
User1 invokes call.connect(irvCTIRD2,8889000,8887000).
|
GC1: CallActiveEvent
GC1: ConnCreatedEvent 8889000
GC1: ConnInprogressEvent 8889000
GC1: CallCtlConnOfferedEv 8889000
|
CurrentCalledAddress: 8889000 :: CurrentCallingAddress: 8889000 :: No LastRedirectedPartyAddress
|
irvCTIRD2's Active remote destination of 916267829523 answers the call.
|
GC1: ConnConnectedEvent 8889000
GC1: CallCtlConnEstablishedEv 8889000
GC1: TermConnCreatedEvent irvCTIRD2
GC1: TermConnActiveEvent irvCTIRD2
GC1: CallCtlTermConnTalkingEv irvCTIRD2
|
CurrentCalledAddress: 8889000 :: CurrentCallingAddress: 8889000 :: No LastRedirectedPartyAddress
|
irvCTIPort7 rings
|
GC1: ConnCreatedEvent 8887000
GC1: ConnInprogressEvent 8887000
GC1: CallCtlConnOfferedEv 8887000
GC1: ConnAlertingEvent 8887000
GC1: CallCtlConnAlertingEv 8887000
GC1: TermConnCreatedEvent irvCTIPort7
GC1: TermConnRingingEvent irvCTIPort7
GC1: CallCtlTermConnRingingEv irvCTIPort7
|
CurrentCalledAddress: 8887000 :: CurrentCallingAddress: 8889000 :: LastRedirectedPartyAddress: 8887000
|
Disconnect the call from 8889000 connection.
|
GC1: TermConnDroppedEv irvCTIRD2
GC1: CallCtlTermConnDroppedEv irvCTIRD2
GC1: ConnDisconnectedEvent 8889000
GC1: CallCtlConnDisconnectedEv 8889000
GC1: TermConnDroppedEv irvCTIPort7
GC1: CallCtlTermConnDroppedEv irvCTIPort7
GC1: ConnDisconnectedEvent 8887000
GC1: CallCtlConnDisconnectedEv 8887000
GC1: CallInvalidEvent
GC1: CallObservationEndedEv
|
CurrentCalledAddress: 8887000 :: CurrentCallingAddress: 8889000 :: LastRedirectedPartyAddress: 8887000
|
Scenario 2-20 (Disconnect an Outgoing call from CTI Remote Device to CTI Port. That is to drop the call before even answering on remote destination. Note: Only 1 connection on CTI Remote Device which is in offering state.:
E calls D, Application is observing both D and E on addresses and terminals. GC1 is the GCID of the call.
Action
|
Events
|
Call Info
|
User1 invokes call.connect(irvCTIRD2,8889000,8887000).
|
GC1: CallActiveEvent
GC1: ConnCreatedEvent 8889000
GC1: ConnInprogressEvent 8889000
GC1: CallCtlConnOfferedEv 8889000
|
CurrentCalledAddress: 8889000 :: CurrentCallingAddress: 8889000 :: No LastRedirectedPartyAddress
|
irvCTIRD2's Active remote destination of 916267829523 rings, User1 drops the call to disconnect from 8889000 connection.
|
GC1: ConnDisconnectedEvent 8889000
GC1: CallCtlConnDisconnectedEv 8889000
GC1: CallInvalidEvent
GC1: CallObservationEndedEv
|
CurrentCalledAddress: 8889000 :: CurrentCallingAddress: 8889000 :: No LastRedirectedPartyAddress
|
Scenario 2-21 (Incoming call from CTI Port to CTI Remote Device with a shared-line of another CTI Port). Note: irvCTIRD1 remote destination answers the call; hold irvCTIRD1, unhold irvCTIRD1; then hold irvCTIRD1, unhold irvCTIPort1 which results irvCTIRD1 got disconnected; then hold irvCTIPort6, unhold irvCTIPort6, then disconnect 8886000.:
C calls A (with a shared line with B) with several hold/resume operations on different terminals. Application is observing A, B, and C on addresses and terminals. GC1 is the GCID of the call.
Action
|
Events
|
Call Info
|
User1 invokes call.connect(irvCTIPort6,8886000,8881000).
|
GC1: CallActiveEvent
GC1: ConnCreatedEvent 8886000
GC1: ConnConnectedEvent 8886000
GC1: CallCtlConnInitiatedEv 8886000
GC1: TermConnCreatedEvent irvCTIPort6
GC1: TermConnActiveEvent irvCTIPort6
GC1: CallCtlTermConnTalkingEv irvCTIPort6
GC1: CallCtlConnDialingEv 8886000
GC1: CallCtlConnEstablishedEv 8886000
GC1: ConnCreatedEvent 8881000
GC1: ConnInprogressEvent 8881000
GC1: CallCtlConnOfferedEv 8881000
GC1: ConnAlertingEvent 8881000
GC1: CallCtlConnAlertingEv 8881000
GC1: TermConnCreatedEvent irvCTIPort1
GC1: TermConnRingingEvent irvCTIPort1
GC1: CallCtlTermConnRingingEv irvCTIPort1
GC1: TermConnCreatedEvent irvCTIRD1
GC1: TermConnRingingEvent irvCTIRD1
GC1: CallCtlTermConnRingingEv irvCTIRD1
|
CurrentCalledAddress: 8881000 :: CurrentCallingAddress: 8886000 :: No LastRedirectedPartyAddress
|
irvCTIRD1's Active remote destination of 919498231202 answers the call.
|
GC1: ConnConnectedEvent 8881000
GC1: CallCtlConnEstablishedEv 8881000
GC1: TermConnActiveEvent irvCTIRD1
GC1: CallCtlTermConnTalkingEv irvCTIRD1
GC1: TermConnPassiveEvent irvCTIPort1
GC1: CallCtlTermConnBridgedEv irvCTIPort1
|
CurrentCalledAddress: 8881000 :: CurrentCallingAddress: 8886000 :: No LastRedirectedPartyAddress
|
User invoke hold on terminalconnection of irvCTIRD1
|
GC1: CallCtlTermConnHeldEv irvCTIRD1
GC1: TermConnActiveEvent irvCTIPort1
GC1: CallCtlTermConnHeldEv irvCTIPort1
|
CurrentCalledAddress: 8881000 :: CurrentCallingAddress: 8886000 :: No LastRedirectedPartyAddress
|
User invoke unhold on terminalconnection of irvCTIRD1
|
GC1: CallCtlTermConnTalkingEv irvCTIRD1
GC1: TermConnPassiveEvent irvCTIPort1
GC1: CallCtlTermConnBridgedEv irvCTIPort1
|
CurrentCalledAddress: 8881000 :: CurrentCallingAddress: 8886000 :: No LastRedirectedPartyAddress
|
User invoke hold on terminalconnection of irvCTIRD1
|
GC1: CallCtlTermConnHeldEv irvCTIRD1
GC1: TermConnActiveEvent irvCTIPort1
GC1: CallCtlTermConnHeldEv irvCTIPort1
|
CurrentCalledAddress: 8881000 :: CurrentCallingAddress: 8886000 :: No LastRedirectedPartyAddress
|
User invoke unhold on terminalconnection of irvCTIPort1 (while it's in Bridged state). This results in irvCTIRD1 being dropped.
|
GC1: CallCtlTermConnTalkingEv irvCTIPort1
GC1: TermConnDroppedEv irvCTIRD1
GC1: CallCtlTermConnDroppedEv irvCTIRD1
|
CurrentCalledAddress: 8881000 :: CurrentCallingAddress: 8886000 :: No LastRedirectedPartyAddress
|
User invoke hold on terminalconnection of irvCTIPort6
|
GC1: CallCtlTermConnHeldEv irvCTIPort6
|
CurrentCalledAddress: 8881000 :: CurrentCallingAddress: 8886000 :: No LastRedirectedPartyAddress
|
User invoke unhold on terminalconnection of irvCTIPort6
|
GC1: CallCtlTermConnTalkingEv irvCTIPort6
|
|
Disconnect the call from connection of irvCTIPort6.
|
GC1: TermConnDroppedEv irvCTIPort6
GC1: CallCtlTermConnDroppedEv irvCTIPort6
GC1: ConnDisconnectedEvent 8886000
GC1: CallCtlConnDisconnectedEv8886000
GC1: TermConnDroppedEv irvCTIPort1
GC1: CallCtlTermConnDroppedEv irvCTIPort1
GC1: ConnDisconnectedEvent 8881000
GC1: CallCtlConnDisconnectedEv 8881000
GC1: CallInvalidEvent
GC1: CallObservationEndedEv
|
CurrentCalledAddress: 8881000 :: CurrentCallingAddress: 8886000 :: No LastRedirectedPartyAddress
|
Scenario 2-22 (Outgoing call from CTI Remote Device (with a shared line of CTI Port) to another CTI Port). Note: irvCTIPort1 rings and remote destination on irvCTIRD1 rings, remote destination answers the call, call is then offered on irvCTIPort7. After answer on irvCTIPort7, disconnect from 8881000 connection.:
A (with a shared line of B) calls D, then with several hold/unhold operations at different terminals. Application is observing both A, B, and D on addresses and terminals. GC1 is the GCID of the call.
Action
|
Events
|
Call Info
|
User1 invokes call.connect(irvCTIRD1,8881000,8887000).
|
GC1: CallActiveEvent
GC1: ConnCreatedEvent 8881000
GC1: ConnInprogressEvent 8881000
GC1: CallCtlConnOfferedEv 8881000
GC1: ConnAlertingEvent 8881000
GC1: CallCtlConnAlertingEv 8881000
|
CurrentCalledAddress: 8881000:: CurrentCallingAddress: 8881000:: No LastRedirectedPartyAddress
|
irvCTIPort7 rings
|
GC1: TermConnCreatedEvent irvCTIPort1
GC1: TermConnRingingEvent irvCTIPort1
GC1: CallCtlTermConnRingingEv irvCTIPort1
|
|
irvCTIRD1's Active remote destination of 919498231202 answers the call.
|
GC1: ConnConnectedEvent 8881000
GC1: CallCtlConnEstablishedEv 8881000
GC1: TermConnCreatedEvent irvCTIRD1
GC1: TermConnActiveEvent irvCTIRD1
GC1: CallCtlTermConnTalkingEv irvCTIRD1
|
CurrentCalledAddress: 8881000:: CurrentCallingAddress: 8881000:: No LastRedirectedPartyAddress
|
irvCTIPort7 rings
|
GC1: TermConnPassiveEvent irvCTIPort1
GC1: CallCtlTermConnBridgedEv irvCTIPort1
|
CurrentCalledAddress: 8887000 :: CurrentCallingAddress: 8881000 :: No LastRedirectedPartyAddress
|
irvCTIPort7 answers the call.
|
GC1: ConnCreatedEvent 8887000
GC1: ConnInprogressEvent 8887000
GC1: CallCtlConnOfferedEv 8887000
GC1: ConnAlertingEvent 8887000
GC1: CallCtlConnAlertingEv 8887000
GC1: TermConnCreatedEvent irvCTIPort7
GC1: TermConnRingingEvent irvCTIPort7
GC1: CallCtlTermConnRingingEv irvCTIPort7
GC1: ConnConnectedEvent 8887000
GC1: CallCtlConnEstablishedEv 8887000
GC1: TermConnActiveEvent irvCTIPort7
GC1: CallCtlTermConnTalkingEv irvCTIPort7
|
CurrentCalledAddress: 8887000 :: CurrentCallingAddress: 8881000:: LastRedirectedPartyAddress: 8887000
|
User invoke hold on terminalconnection of irvCTIRD1
|
GC1: CallCtlTermConnHeldEv irvCTIRD1
GC1: TermConnActiveEvent irvCTIPort1
|
CurrentCalledAddress: 8887000 :: CurrentCallingAddress: 8881000 :: LastRedirectedPartyAddress: 8887000
|
User invoke unhold on terminalconnection of irvCTIPort1 (while it's in Bridged state). This results in irvCTIRD1 being dropped.
|
GC1: CallCtlTermConnHeldEv irvCTIPort1
GC1: CallCtlTermConnTalkingEv irvCTIPort1
GC1: TermConnDroppedEv irvCTIRD1
GC1: CallCtlTermConnDroppedEv irvCTIRD1
|
CurrentCalledAddress: 8887000 :: CurrentCallingAddress: 8881000 :: LastRedirectedPartyAddress: 8887000
|
Disconnect the call from 8881000 connection.
|
GC1: TermConnDroppedEv irvCTIPort1
GC1: CallCtlTermConnDroppedEv irvCTIPort1
GC1: ConnDisconnectedEvent 8881000
GC1: CallCtlConnDisconnectedEv 8881000
GC1: TermConnDroppedEv irvCTIPort7
GC1: CallCtlTermConnDroppedEv irvCTIPort7
GC1: ConnDisconnectedEvent 8887000
GC1: CallCtlConnDisconnectedEv 8887000
GC1: CallInvalidEvent
GC1: CallObservationEndedEv
|
CurrentCalledAddress: 8887000 :: CurrentCallingAddress: 8881000 :: LastRedirectedPartyAddress: 8887000
|
Scenario 2-23 (Superprovider acquires a CTIRD that is not on user control list).:
User1 open a provider which can observe any terminal (User1 with "Standard CTI Allow Control of All Devices" role), and then acquire a CTI Remote Device "CTIRD_UP" that is not on User1's control list).
Action
|
Events
|
Call Info
|
User1 opens Provider and adds a provider observer.
|
ProvInServiceEv
|
|
User1 invokes provider.createTerminal(CTIRD_UP).
|
CiscoAddrCreatedEv: 8889999
CiscoTermCreatedEv: CTIRD_UP
|
|
Use Cases Group 3 (CUCSF registration and unregistration, for Normal SIP mode <-> Extend mode, and terminal switching scenarios)
Pre-conditions on Use Cases group 3 below with default jtapi.ini settings, unless specified explicitly:
•
Provider is IN_SERVICE state.
•
Device A (CUCSF - Name: "irvCSF1", Line A (DN: 7771000))
Remote Destination 1 (Name: "IRVCell", Number: "916267829523", Active RD: true)
•
Scenario 3-1 (Registration of CUCSF in between Extend mode and SIP mode).:
Device A is registered in normal SIP mode when WebEx with Jabber client is running and configured this device as its associated phone. User1 open provider and add observers on this device to bring it in service. Now exit WebEx to unregister it from SIP, and then User1 calls CiscoTerminal.register() to register it to Extend mode from JTAPI, then add observers back to bring it in service. Now User1 unregister it from Extend mode in JTAPI by calling CiscoRemoteTerminal.unregister(). Now open WebEx again to register this device back to SIP mode, and add observers back to bring it in service.
Action
|
Events
|
Info
|
WebEx is opened.
User1 adds provider observer.
registerFeature 1235 on provider.
addObserver on address 7771000.
addObserver on terminal irvCSF1.
|
Provider: ProvInServiceEv
7771000: CiscoAddrOutOfServiceEv
irvCSF1: CiscoTermInServiceEv
7771000: CiscoAddrInServiceEv
irvCSF1: CiscoTermInServiceEv
|
CiscoTerminal.getProtocol = 2
CiscoTerminal.isRegistered() = true
CiscoRemoteTerminal.getType() = 503
CiscoRemoteTerminal.getTypeName() = Cisco Unified Client Services Framework
|
Exit WebEx
|
Provider: CiscoProvTerminalUnRegisteredEv irvCSF1
7771000: CiscoAddrOutOfServiceEv
irvCSF1: CiscoTermOutOfServiceEv
|
CiscoTerminal.getProtocol = 2
CiscoTerminal.isRegistered() = false
|
User1 calls CiscoTerminal.register() on irvCSF1.
addObserver on address 7771000.
addObserver on terminal irvCSF1.
|
Provider: CiscoAddrRemovedEv 7771000
Provider: CiscoTermRemovedEv irvCSF1
Provider: CiscoAddrCreatedEv 7771000
Provider: CiscoTermCreatedEv irvCSF1
Provider: CiscoProvTerminalRegisteredEv
irvCSF1: CiscoTermInServiceEv
7771000: CiscoAddrOutOfServiceEv
7771000: CiscoAddrInServiceEv
irvCSF1: CiscoTermInServiceEv
|
CiscoTerminal.getProtocol = 3
CiscoTerminal.isRegistered() = true
CiscoRemoteTerminal.getRegistrationType() = 8
CiscoRemoteTerminal.isRegisteredByThisApp() = true
|
User1 calls CiscoRemoteTerminal. unregister()
|
7771000: CiscoAddrOutOfServiceEv
irvCSF1: CiscoTermOutOfServiceEv
Provider: CiscoProvTerminalUnRegisteredEv
|
CiscoTerminal.getProtocol = 3
CiscoTerminal. isRegistered() = false
CiscoRemoteTerminal.getRegistrationType() = -1
CiscoRemoteTerminal. isRegisteredByThisApp() = false
|
Open WebEx
addObserver on address 7771000.
addObserver on terminal irvCSF1.
|
Provider: CiscoAddrRemovedEv 7771000
Provider: CiscoTermRemovedEv irvCSF1
Provider: CiscoAddrCreatedEv 7771000
Provider: CiscoTermCreatedEv irvCSF1
Provider: CiscoProvTerminalRegisteredEv
7771000: CiscoAddrOutOfServiceEv
irvCSF1: CiscoTermInServiceEv
7771000: CiscoAddrInServiceEv
irvCSF1: CiscoTermInServiceEv
|
CiscoTerminal.getProtocol = 2
CiscoTerminal.isRegistered() = true
|
Use Cases Group 4 (Set/Reset Active Remote Destination scenarios)
Pre-conditions on Use Cases group 4 below with default jtapi.ini settings, unless specified explicitly:
•
Provider is IN_SERVICE state. Single node.
•
Device A (CTI Remote Device - Name: "irvCTIRD2", Line A (DN: 8881000))
Remote Destination 1 (Name: "IRVCell1", Number: "916267829523", Active RD: false)
•
Scenario 4-1 (User1 opens provider P1, set RD1 as active. Now User1 opens another provider P2, and set same RD1 as active again. Now stop CTI Manager service in this single node, the active RD would be clear out. Now restart CTI Manager, JTAPI will do a provider retry, and upon successfully connection, it will automatically reset the same RD1 as active again seamlessly.):
Action
|
Events
|
Info
|
User1 open Provider P1 and adds provider observer.
|
P1: ProvInServiceEv
|
|
User1 calls CiscoRemoteTerminal.setActiveRemoteDestination("916267829523", true) from P1.
|
P1: CiscoProvTerminalRemoteDestinationChangedEv
|
P1 changed event: Remote Terminal: irvCTIRD2 :: [Remote Destination 1: Name:IRVCell1, Number:916267829523, IsActiveRD:true] :: IsMyAppLastToSetActiveRD : true
CiscoRemoteTerminal. isMyAppLastToSetActiveRD() = true
|
User1 open Provider P2 and adds provider observer.
|
P2: ProvInServiceEv
|
|
User1 calls CiscoRemoteTerminal.setActiveRemoteDestination("916267829523", true) from P2.
|
P1: CiscoProvTerminalRemoteDestinationChangedEv
P2: CiscoProvTerminalRemoteDestinationChangedEv
|
P1 changed event: Remote Terminal: irvCTIRD2 :: [Remote Destination 1: Name:IRVCell1, Number:916267829523, IsActiveRD:true] :: IsMyAppLastToSetActiveRD : false
CiscoRemoteTerminal. isMyAppLastToSetActiveRD() = false
P2 changed event: Remote Terminal: irvCTIRD2 :: [Remote Destination 1: Name:IRVCell1, Number:916267829523, IsActiveRD:true] :: IsMyAppLastToSetActiveRD : true
CiscoRemoteTerminal. isMyAppLastToSetActiveRD() = true
|
Stop CTI Manager on this single node where P1 & P2 are connected to. And this active RD will be clear out automatically from CTI/CCM side.
|
P1: ProvOutOfServiceEv
P2: ProvOutOfServiceEv
|
|
Start this CTI Manager. And JTAPI will automatically reset the same RD1 as active again seamlessly.
|
P1: ProvInServiceEv
P2: ProvInServiceEv
|
Note No CiscoProvTerminalRemoteDestinationChangedEv will be sent to application because it is the same active RD that application previously set.
|
Scenario 4-2 (User1 opens provider P1, add all observers on provider, terminals, addresses, then set RD1 as active. Now stop CTI Manager service, the active RD would be clear out. Now restart CTI Manager, JTAPI will do a provider retry, and upon successfully connection, it will automatically reset the same RD1 as active again seamlessly.):
Action
|
Events
|
Info
|
User1 open Provider P1 and adds provider observer.
|
P1: ProvInServiceEv
|
|
User1 calls CiscoRemoteTerminal.setActiveRemoteDestination("916267829523", true) from P1.
|
P1: CiscoProvTerminalRemoteDestinationChangedEv
|
P1 changed event: Remote Terminal: irvCTIRD2 :: [Remote Destination 1: Name:IRVCell1, Number:916267829523, IsActiveRD:true] :: IsMyAppLastToSetActiveRD : true
CiscoRemoteTerminal. isMyAppLastToSetActiveRD() = true
|
Stop CTI Manager where P1 is connected to. And this active RD will be clear out automatically from CTI/CCM side.
|
8881000:: Event: CiscoAddrOutOfServiceEv
irvCTIRD2:: Event: CiscoTermOutOfServiceEv
P1: ProvOutOfServiceEv
|
|
Start this CTI Manager. And JTAPI will automatically reset the same RD1 as active again seamlessly.
|
P1: ProvInServiceEv
irvCTIRD2:: Event: CiscoTermInServiceEv
8881000:: Event: CiscoAddrInServiceEv
|
Note: No CiscoProvTerminalRemoteDestinationChangedEv will be sent to application because it is the same active RD that application previously set.
|
Use Cases Group 5 (CTIRD Transfer/Conference/Multiple-Calls call scenarios)
Pre-conditions on Use Cases group 5 below with default jtapi.ini settings, unless specified explicitly (Note: The CTI Ports have Auto-Accept enabled):
•
Provider is IN_SERVICE state.
•
Device A (CTI Remote Device - Name: "irvCTIRD2", Line A (DN: 8889000))
Remote Destination 1 (Name: "IRVCell1", Number: "916267829523", Active RD: true)
•
Device B (CTI Port - Name: "irvCTIPort4", Line B (DN: 8884000))
•
Device C (CTI Port - Name: "irvCTIPort5", Line B (DN: 8884000))
•
Device D (CTI Port - Name: "irvCTIPort6", Line D (DN: 8886000))
•
Device E (CTI Remote Device - Name: "irvCTIRD3", Line E (DN: 8889001))
Remote Destination 1 (Name: "IRVHome1", Number: "916268210080", Active RD: true)
Scenario 5-1 (Direct Transfer on CTI Remote Device to CTI Port):
D calls A with GC1 as GCID of call; A calls B with GC2 as GCID of call. Set A as transfer controller, and then transfer call from GC2 to GC1. Application is observing all A, B, D.
Action
|
Events
|
Call Info
|
User1 invokes call. connect (irvCTIPort6, 8886000, 8889000)
|
GC1: CallActiveEvent
GC1: ConnCreatedEvent 8886000
GC1: ConnConnectedEvent 8886000
GC1: CallCtlConnInitiatedEv 8886000
GC1: TermConnCreatedEvent irvCTIPort6
GC1: TermConnActiveEvent irvCTIPort6
GC1: CallCtlTermConnTalkingEv irvCTIPort6
GC1: CallCtlConnDialingEv 8886000
GC1: CallCtlConnEstablishedEv 8886000
GC1: ConnCreatedEvent 8889000
GC1: ConnInprogressEvent 8889000
GC1: CallCtlConnOfferedEv 8889000
GC1: ConnAlertingEvent 8889000
GC1: CallCtlConnAlertingEv 8889000
GC1: TermConnCreatedEvent irvCTIRD2
GC1: TermConnRingingEvent irvCTIRD2
GC1: CallCtlTermConnRingingEv irvCTIRD2
|
CallingAddress = 8886000, CalledAddress = 8889000, CurrentCallingAddress = 8886000, CurrentCalledAddress = 8889000, ModifiedCallingAddress = 8886000, ModifiedCalledAddress = 8889000, No LastRedirectedPartyAddress
|
irvCTIRD2's Active remote destination of 916267829523 answers the call.
|
GC1: ConnConnectedEvent 8889000
GC1: CallCtlConnEstablishedEv 8889000
GC1: TermConnActiveEvent irvCTIRD2
GC1: CallCtlTermConnTalkingEv irvCTIRD2
|
CallingAddress = 8886000, CalledAddress = 8889000, CurrentCallingAddress = 8886000, CurrentCalledAddress = 8889000, ModifiedCallingAddress = 8886000, ModifiedCalledAddress = 8889000, No LastRedirectedPartyAddress
|
User1 invokes call. connect (irvCTIRD2, 8889000, 8884000) , and answer() on irvCTIPort4 terminal connection.
|
GC1: CallCtlTermConnHeldEv irvCTIRD2
GC2: CallActiveEvent
GC2: ConnCreatedEvent : Address: 8889000
GC2: ConnConnectedEvent : Address: 8889000
GC2: CallCtlConnInitiatedEv : Address: 8889000
GC2: TermConnCreatedEvent : Terminal: irvCTIRD2
GC2: TermConnActiveEvent : Terminal: irvCTIRD2
GC2: CallCtlTermConnTalkingEv : Terminal: irvCTIRD2
GC2: CallCtlConnDialingEv : Address: 8889000
GC2: CallCtlConnEstablishedEv : Address: 8889000
GC2: ConnCreatedEvent : Address: 8884000
GC2: ConnInprogressEvent : Address: 8884000
GC2: CallCtlConnOfferedEv : Address: 8884000
GC2: ConnAlertingEvent : Address: 8884000
GC2: CallCtlConnAlertingEv : Address: 8884000
GC2: TermConnCreatedEvent : Terminal: irvCTIPort4
GC2: TermConnRingingEvent : Terminal: irvCTIPort4
GC2: CallCtlTermConnRingingEv : Terminal: irvCTIPort4
GC2: TermConnCreatedEvent : Terminal: irvCTIPort5
GC2: TermConnRingingEvent : Terminal: irvCTIPort5
|
CallingAddress = 8886000, CalledAddress = 8889000, CurrentCallingAddress = 8886000, CurrentCalledAddress = 8889000, ModifiedCallingAddress = 8886000, ModifiedCalledAddress = 8889000, No LastRedirectedPartyAddress
CallingAddress = 8889000, CalledAddress = 8884000, CurrentCallingAddress = 8889000, CurrentCalledAddress = 8884000, ModifiedCallingAddress = 8889000, ModifiedCalledAddress = 8884000, No LastRedirectedPartyAddress
|
| |
GC2: CallCtlTermConnRingingEv : Terminal: irvCTIPort5
GC2: ConnConnectedEvent : Address: 8884000
GC2: CallCtlConnEstablishedEv : Address: 8884000
GC2: TermConnActiveEvent : Terminal: irvCTIPort4
GC2: CallCtlTermConnTalkingEv : Terminal: irvCTIPort4
GC2: TermConnPassiveEvent : Terminal: irvCTIPort5
GC2: CallCtlTermConnInUseEv : Terminal: irvCTIPort5
|
|
User1 invokes GC2.setTransferController(terminal connection of irvCTIRD2).
|
GC2: CiscoTermConnSelectChangedEv : Terminal: irvCTIRD2
GC1: CiscoTermConnSelectChangedEv : Terminal: irvCTIRD2
|
CallingAddress = 8889000, CalledAddress = 8884000, CurrentCallingAddress = 8884000, CurrentCalledAddress = 8886000, ModifiedCallingAddress = 8884000, ModifiedCalledAddress = 8886000, LastRedirectedPartyAddress = 8889000
CallingAddress = 8886000, CalledAddress = 8889000, CurrentCallingAddress = 8886000, CurrentCalledAddress = 8889000, ModifiedCallingAddress = 8886000, ModifiedCalledAddress = 8889000, No LastRedirectedPartyAddress
|
User1 invokes GC2.transfer(GC1).
|
GC2: CiscoTransferStartEv
GC1: TermConnDroppedEv irvCTIRD2
GC1: CallCtlTermConnDroppedEv : Terminal: irvCTIRD2
GC1: ConnDisconnectedEvent : Address: 8889000
GC1: CallCtlConnDisconnectedEv : Address: 8889000
GC2: TermConnDroppedEv : Terminal: irvCTIRD2
GC2: CallCtlTermConnDroppedEv : Terminal: irvCTIRD2
GC2: ConnDisconnectedEvent : Address: 8889000
GC2: CallCtlConnDisconnectedEv : Address: 8889000
GC1: CiscoCallChangedEv
GC2: ConnCreatedEvent : Address: 8886000
GC2: ConnConnectedEvent : Address: 8886000
GC2: CallCtlConnEstablishedEv : Address: 8886000
GC2: TermConnCreatedEvent : Terminal: irvCTIPort6
GC2: TermConnActiveEvent : Terminal: irvCTIPort6
GC2: CallCtlTermConnTalkingEv : Terminal: irvCTIPort6
GC1: TermConnDroppedEv : Terminal: irvCTIPort6
|
CallingAddress = 8889000, CalledAddress = 8884000, CurrentCallingAddress = 8884000, CurrentCalledAddress = 8886000, ModifiedCallingAddress = 8884000, ModifiedCalledAddress = 8886000. LastRedirectedPartyAddress = 8889000
|
| |
GC1: CallCtlTermConnDroppedEv : Terminal: irvCTIPort6
GC1: ConnDisconnectedEvent : Address: 8886000
GC1: CallCtlConnDisconnectedEv : Address: 8886000
GC1: CallInvalidEvent
GC1: CallObservationEndedEv
GC2: CiscoTransferEndEv
|
|
disconnect() the call on 8886000 connection.
|
GC2: TermConnDroppedEv irvCTIPort6
GC2: CallCtlTermConnDroppedEv : Terminal: irvCTIPort6
GC2: ConnDisconnectedEvent : Address: 8886000
GC2: CallCtlConnDisconnectedEv : Address: 8886000
GC2: TermConnDroppedEv : Terminal: irvCTIPort4
GC2: CallCtlTermConnDroppedEv : Terminal: irvCTIPort4
GC2: TermConnDroppedEv : Terminal: irvCTIPort5
GC2: CallCtlTermConnDroppedEv : Terminal: irvCTIPort5
GC2: ConnDisconnectedEvent : Address: 8884000
GC2: CallCtlConnDisconnectedEv : Address: 8884000
GC2: CallInvalidEvent
GC2: CallObservationEndedEv
|
CallingAddress = 8889000, CalledAddress = 8884000, CurrentCallingAddress = 8884000, CurrentCalledAddress = 8886000, ModifiedCallingAddress = 8884000, ModifiedCalledAddress = 8886000, LastRedirectedPartyAddress = 8889000
|
Scenario 5-2 (Conference call on CTI Remote Device and CTI Port with another CTI Remote Device):
D calls A with GC1 as GCID of call; A calls E with GC2 as GCID of call. Set A as conference controller, and then conference/join call from GC2 to GC1. Application is observing all A, D, E.
Action
|
Events
|
Call Info
|
User1 invokes call. connect (irvCTIPort6, 8886000, 8889000)
|
GC1: CallActiveEvent
GC1: ConnCreatedEvent 8886000
GC1: ConnConnectedEvent 8886000
GC1: CallCtlConnInitiatedEv 8886000
GC1: TermConnCreatedEvent irvCTIPort6
GC1: TermConnActiveEvent irvCTIPort6
GC1: CallCtlTermConnTalkingEv irvCTIPort6
GC1: CallCtlConnDialingEv 8886000
GC1: CallCtlConnEstablishedEv 8886000
GC1: ConnCreatedEvent 8889000
GC1: ConnInprogressEvent 8889000
GC1: CallCtlConnOfferedEv 8889000
GC1: ConnAlertingEvent 8889000
GC1: CallCtlConnAlertingEv 8889000
GC1: TermConnCreatedEvent irvCTIRD2
GC1: TermConnRingingEvent irvCTIRD2
GC1: CallCtlTermConnRingingEv irvCTIRD2
|
CallingAddress = 8886000, CalledAddress = 8889000, CurrentCallingAddress = 8886000, CurrentCalledAddress = 8889000, ModifiedCallingAddress = 8886000, ModifiedCalledAddress = 8889000, No LastRedirectedPartyAddress
|
irvCTIRD2's Active remote destination of 916267829523 answers the call.
|
GC1: ConnConnectedEvent 8889000
GC1: CallCtlConnEstablishedEv 8889000
GC1: TermConnActiveEvent irvCTIRD2
GC1: CallCtlTermConnTalkingEv irvCTIRD2
|
CallingAddress = 8886000, CalledAddress = 8889000, CurrentCallingAddress = 8886000, CurrentCalledAddress = 8889000, ModifiedCallingAddress = 8886000, ModifiedCalledAddress = 8889000, No LastRedirectedPartyAddress
|
User1 invokes call. connect (irvCTIRD2, 8889000, 8889001).
|
GC1: CallCtlTermConnHeldEv irvCTIRD2
GC2: CallActiveEvent
GC2: ConnCreatedEvent : Address: 8889000
GC2: ConnConnectedEvent : Address: 8889000
GC2: CallCtlConnInitiatedEv : Address: 8889000
GC2: TermConnCreatedEvent : Terminal: irvCTIRD2
GC2: TermConnActiveEvent : Terminal: irvCTIRD2
GC2: CallCtlTermConnTalkingEv : Terminal: irvCTIRD2
GC2: CallCtlConnDialingEv : Address: 8889000
GC2: CallCtlConnEstablishedEv : Address: 8889000
GC2: ConnCreatedEvent : Address: 8889001
GC2: ConnInprogressEvent : Address: 8889001
GC2: CallCtlConnOfferedEv : Address: 8889001
GC2: ConnAlertingEvent : Address: 8889001
GC2: CallCtlConnAlertingEv : Address: 8889001
GC2: TermConnCreatedEvent : Terminal: irvCTIRD3
GC2: TermConnRingingEvent : Terminal: irvCTIRD3
GC2: CallCtlTermConnRingingEv : Terminal: irvCTIRD3
|
CallingAddress = 8886000, CalledAddress = 8889000, CurrentCallingAddress = 8886000, CurrentCalledAddress = 8889000, ModifiedCallingAddress = 8886000, ModifiedCalledAddress = 8889000, No LastRedirectedPartyAddress
CallingAddress = 8889000, CalledAddress = 8889001, CurrentCallingAddress = 8889000, CurrentCalledAddress = 8889001, ModifiedCallingAddress = 8889000, ModifiedCalledAddress = 8889001, No LastRedirectedPartyAddress
|
irvCTIRD3's Active remote destination of 916268210080 answers the call.
|
GC2: ConnConnectedEvent : Address: 8889001
GC2: CallCtlConnEstablishedEv : Address: 8889001
GC2: TermConnActiveEvent : Terminal: irvCTIRD3
GC2: CallCtlTermConnTalkingEv : Terminal: irvCTIRD3
|
CallingAddress = 8886000, CalledAddress = 8889000, CurrentCallingAddress = 8886000, CurrentCalledAddress = Unknown, ModifiedCallingAddress = 8886000, ModifiedCalledAddress = Unknown, LastRedirectedPartyAddress: 8889000
|
User1 invokes GC2.setConferenceController(terminal connection of irvCTIRD2).
|
GC2: CiscoTermConnSelectChangedEv : Terminal: irvCTIRD2
GC2: CiscoTermConnSelectChangedEv : Terminal: irvCTIRD2
|
|
User1 invokes GC2.conference(GC1).
|
GC2: CiscoConferenceStartEv
GC1: TermConnDroppedEv : Terminal: irvCTIRD2
GC1: CallCtlTermConnDroppedEv : Terminal: irvCTIRD2
GC1: ConnDisconnectedEvent : Address: 8889000
GC1: CallCtlConnDisconnectedEv : Address: 8889000
GC1: CiscoCallChangedEv
GC2: ConnCreatedEvent : Address: 8886000
GC2: ConnConnectedEvent : Address: 8886000
GC2: CallCtlConnEstablishedEv : Address: 8886000
GC2: TermConnCreatedEvent : Terminal: irvCTIPort6
GC2: TermConnActiveEvent : Terminal: irvCTIPort6
GC2: CallCtlTermConnTalkingEv : Terminal: irvCTIPort6
GC1: TermConnDroppedEv : Terminal: irvCTIPort6
GC1: CallCtlTermConnDroppedEv : Terminal: irvCTIPort6
GC1: ConnDisconnectedEvent : Address: 8886000
GC1: CallCtlConnDisconnectedEv : Address: 8886000
GC1: CallInvalidEvent
GC1: CallObservationEndedEv
GC2: CiscoConferenceEndEv
|
CallingAddress = 8889000, CalledAddress = 8889001, CurrentCallingAddress = 8886000, CurrentCalledAddress = Unknown, ModifiedCallingAddress = 8886000, ModifiedCalledAddress = Unknown, LastRedirectedPartyAddress: 8889000
|
disconnect() the call on 8889000 connection.
|
GC2: TermConnDroppedEv : Terminal: irvCTIRD2
GC2: CallCtlTermConnDroppedEv : Terminal: irvCTIRD2
GC2: ConnDisconnectedEvent : Address: 8889000
GC2: CallCtlConnDisconnectedEv : Address: 8889000
GC2: TermConnDroppedEv : Terminal: irvCTIRD3
GC2: CallCtlTermConnDroppedEv : Terminal: irvCTIRD3
GC2: ConnDisconnectedEvent : Address: 8889001
GC2: CallCtlConnDisconnectedEv : Address: 8889001
|
CallingAddress = 8889000, CalledAddress = 8889001, CurrentCallingAddress = 8886000, CurrentCalledAddress = Unknown, ModifiedCallingAddress = 8886000, ModifiedCalledAddress = Unknown, LastRedirectedPartyAddress: 8889000
|
disconnect() the call on 8889001 connection.
|
GC2: TermConnDroppedEv : Terminal: irvCTIPort6
GC2: CallCtlTermConnDroppedEv : Terminal: irvCTIPort6
GC2: ConnDisconnectedEvent : Address: 8886000
GC2: CallCtlConnDisconnectedEv : Address: 8886000
GC2: CallInvalidEvent
GC2: CallObservationEndedEv
|
CallingAddress = 8889000, CalledAddress = 8889001, CurrentCallingAddress = 8886000, CurrentCalledAddress = 8889001, ModifiedCallingAddress = 8886000, ModifiedCalledAddress = 8889001, LastRedirectedPartyAddress: 8889000
|
Scenario 5-3 (Multiple calls on CTI Remote Device):
D calls A with GC1 as GCID of call; B calls A with GC2 as GCID of call. Application is observing all A, B, D.
Action
|
Events
|
Call Info
|
User1 invokes call. connect (irvCTIPort6, 8886000, 8889000)
|
GC1: CallActiveEvent
GC1: ConnCreatedEvent 8886000
GC1: ConnConnectedEvent 8886000
GC1: CallCtlConnInitiatedEv 8886000
GC1: TermConnCreatedEvent irvCTIPort6
GC1: TermConnActiveEvent irvCTIPort6
GC1: CallCtlTermConnTalkingEv irvCTIPort6
GC1: CallCtlConnDialingEv 8886000
GC1: CallCtlConnEstablishedEv 8886000
GC1: ConnCreatedEvent 8889000
GC1: ConnInprogressEvent 8889000
GC1: CallCtlConnOfferedEv 8889000
GC1: ConnAlertingEvent 8889000
GC1: CallCtlConnAlertingEv 8889000
GC1: TermConnCreatedEvent irvCTIRD2
GC1: TermConnRingingEvent irvCTIRD2
GC1: CallCtlTermConnRingingEv irvCTIRD2
|
CallingAddress = 8886000, CalledAddress = 8889000, CurrentCallingAddress = 8886000, CurrentCalledAddress = 8889000, ModifiedCallingAddress = 8886000, ModifiedCalledAddress = 8889000, No LastRedirectedPartyAddress
|
irvCTIRD2's Active remote destination of 916267829523 answers the call.
|
GC1: ConnConnectedEvent 8889000
GC1: CallCtlConnEstablishedEv 8889000
GC1: TermConnActiveEvent irvCTIRD2
GC1: CallCtlTermConnTalkingEv irvCTIRD2
|
CallingAddress = 8886000, CalledAddress = 8889000, CurrentCallingAddress = 8886000, CurrentCalledAddress = 8889000, ModifiedCallingAddress = 8886000, ModifiedCalledAddress = 8889000, No LastRedirectedPartyAddress
|
User1 invokes call. connect (irvCTIPort4, 8884000, 8889000)
|
GC2: CallActiveEvent
GC2: ConnCreatedEvent : Address: 8884000
GC2: ConnConnectedEvent : Address: 8884000
GC2: CallCtlConnInitiatedEv : Address: 8884000
GC2: TermConnCreatedEvent : Terminal: irvCTIPort4
GC2: TermConnActiveEvent : Terminal: irvCTIPort4
GC2: CallCtlTermConnTalkingEv : Terminal: irvCTIPort4
GC2: CallCtlConnDialingEv : Address: 8884000
GC2: TermConnCreatedEvent : Terminal: irvCTIPort5
GC2: TermConnPassiveEvent : Terminal: irvCTIPort5
GC2: CallCtlTermConnInUseEv : Terminal: irvCTIPort5
GC2: CallCtlConnEstablishedEv : Address: 8884000
GC2: ConnCreatedEvent : Address: 8889000
GC2: ConnInprogressEvent : Address: 8889000
GC2: CallCtlConnOfferedEv : Address: 8889000
GC2: ConnAlertingEvent : Address: 8889000
GC2: CallCtlConnAlertingEv : Address: 8889000
GC2: TermConnCreatedEvent : Terminal: irvCTIRD2
GC2: TermConnRingingEvent : Terminal: irvCTIRD2
GC2: CallCtlTermConnRingingEv : Terminal: irvCTIRD2
|
CallingAddress = 8884000, CalledAddress = 8889000, CurrentCallingAddress = 8884000, CurrentCalledAddress = 8889000, ModifiedCallingAddress = 8884000, ModifiedCalledAddress = 8889000, No LastRedirectedPartyAddress
CallingAddress = 8889000, CalledAddress = 8889001, CurrentCallingAddress = 8889000, CurrentCalledAddress = 8889001, ModifiedCallingAddress = 8889000, ModifiedCalledAddress = 8889001, No LastRedirectedPartyAddress
|
User1 invokes GC2.answer(terminal connection of irvCTIRD2).
|
GC1: CallCtlTermConnHeldEv : Terminal: irvCTIRD2
GC2: ConnConnectedEvent : Address: 8889000
GC2: CallCtlConnEstablishedEv : Address: 8889000
GC2: TermConnActiveEvent : Terminal: irvCTIRD2
GC2: CallCtlTermConnTalkingEv : Terminal: irvCTIRD2
|
allingAddress = 8884000, CalledAddress = 8889000, CurrentCallingAddress = 8884000, CurrentCalledAddress = 8889000, ModifiedCallingAddress = 8884000, ModifiedCalledAddress = 8889000, No LastRedirectedPartyAddress
|
disconnect() the GC2 call on 8889000 connection.
|
GC2: TermConnDroppedEv : Terminal: irvCTIRD2
GC2: CallCtlTermConnDroppedEv : Terminal: irvCTIRD2
GC2: ConnDisconnectedEvent : Address: 8889000
GC2: CallCtlConnDisconnectedEv : Address: 8889000
GC2: TermConnDroppedEv : Terminal: irvCTIPort4
GC2: CallCtlTermConnDroppedEv : Terminal: irvCTIPort4
GC2: TermConnDroppedEv : Terminal: irvCTIPort5
GC2: CallCtlTermConnDroppedEv : Terminal: irvCTIPort5
GC2: ConnDisconnectedEvent : Address: 8884000
GC2: CallCtlConnDisconnectedEv : Address: 8884000
GC2: CallInvalidEvent
GC2: CallObservationEndedEv
|
CallingAddress = 8884000, CalledAddress = 8889000, CurrentCallingAddress = 8884000, CurrentCalledAddress = 8889000, ModifiedCallingAddress = 8884000, ModifiedCalledAddress = 8889000, No LastRedirectedPartyAddress
|
User1 invokes unhold() on GC1 terminal connection of irvCTIRD2.
disconnect() the GC1 call on 8889000 connection.
|
GC1: CallCtlTermConnTalkingEv
GC1: TermConnDroppedEv : Terminal: irvCTIRD2
GC1: CallCtlTermConnDroppedEv : Terminal: irvCTIRD2
GC1: ConnDisconnectedEvent : Address: 8889000
GC1: CallCtlConnDisconnectedEv : Address: 8889000
GC1: TermConnDroppedEv : Terminal: irvCTIPort6
GC1: CallCtlTermConnDroppedEv : Terminal: irvCTIPort6
GC1: ConnDisconnectedEvent : Address: 8886000
GC1: CallCtlConnDisconnectedEv : Address: 8886000
GC1: CallInvalidEvent
GC1: CallObservationEndedEv
|
CallingAddress = 8886000, CalledAddress = 8889000, CurrentCallingAddress = 8886000, CurrentCalledAddress = 8889000, ModifiedCallingAddress = 8886000, ModifiedCalledAddress = 8889000, No LastRedirectedPartyAddress
|
Use Cases Group 6 (CTIRD URI-Dialing basic Incoming & Outgoing DVO call scenarios)
Pre-conditions on Use Cases group 6 below with default jtapi.ini settings, unless specified explicitly (Note: The CTI Ports have Auto-Accept enabled):
•
Provider is IN_SERVICE state.
•
Device A (CTI Remote Device - Name: "irvCTIRD3", Line A (DN: 8889001, Directory URIs: "8889001A@cisco.com"))
Remote Destination 1 (Name: "IRVCell1", Number: "916267829523", Active RD: true)
•
Device B (CTI Port - Name: "irvCTIPort2", Line B (DN: 8882000, Directory URIs: "8882000A@cisco.com"))
Scenario 6-1 (Basic Incoming call from CTI Port to CTI Remote Device via URI) :
B calls A with GC1 as GCID of call. Application is observing both A and B.
Action
|
Events
|
Call Info
|
User1 invokes call. connect (irvCTIPort2, 8882000, "8889001A@cisco.com")
|
GC1: CallActiveEvent
GC1: ConnCreatedEvent 8882000
GC1: ConnConnectedEvent 8882000
GC1: CallCtlConnInitiatedEv 8882000
GC1: TermConnCreatedEvent irvCTIPort2
GC1: TermConnActiveEvent irvCTIPort2
GC1: CallCtlTermConnTalkingEv irvCTIPort2
GC1: CallCtlConnDialingEv 8882000
GC1: CallCtlConnEstablishedEv 8882000
GC1: ConnCreatedEvent 8889001
GC1: ConnInprogressEvent 8889001
GC1: CallCtlConnOfferedEv 8889001
GC1: ConnAlertingEvent 8889001
GC1: CallCtlConnAlertingEv 8889001
GC1: TermConnCreatedEvent irvCTIRD3
GC1: TermConnRingingEvent irvCTIRD3
GC1: CallCtlTermConnRingingEv irvCTIRD3
|
CallingAddress = 8882000, CalledAddress = 8889001, CurrentCallingAddress = 8882000, CurrentCalledAddress = 8889001, ModifiedCallingAddress = 8882000, ModifiedCalledAddress = 8889001, No LastRedirectedPartyAddress
|
irvCTIRD3's Active remote destination of 916267829523 answers the call.
|
GC1: ConnConnectedEvent 8889001
GC1: CallCtlConnEstablishedEv 8889001
GC1: TermConnActiveEvent irvCTIRD3
GC1: CallCtlTermConnTalkingEv irvCTIRD3
|
CallingAddress = 8882000, CalledAddress = 8889001, CurrentCallingAddress = 8882000, CurrentCalledAddress = 8889001, ModifiedCallingAddress = 8882000, ModifiedCalledAddress = 8889001, No LastRedirectedPartyAddress
|
Disconnect() the call on 8882000 connection.
|
GC1: TermConnDroppedEv irvCTIPort2
GC1: CallCtlTermConnDroppedEv irvCTIPort2
GC1: ConnDisconnectedEvent 8882000
GC1: CallCtlConnDisconnectedEv 8882000
GC1: TermConnDroppedEv irvCTIRD3
GC1: CallCtlTermConnDroppedEv irvCTIRD3
GC1: ConnDisconnectedEvent 8889001
GC1: CallCtlConnDisconnectedEv 8889001
GC1: CallInvalidEvent
GC1: CallObservationEndedEv
|
CallingAddress = 8882000, CalledAddress = 8889001, CurrentCallingAddress = 8882000, CurrentCalledAddress = 8889001, ModifiedCallingAddress = 8882000, ModifiedCalledAddress = 8889001, No LastRedirectedPartyAddress
|
Scenario 6-2 (Basic Outgoing DVO call from CTI Remote Device to CTI Port via URI) :
A calls B with GC1 as GCID of call. Application is observing both A and B.
Action
|
Events
|
Call Info
|
User1 invokes call. connect (irvCTIRD3, 8889001, "8882000A@cisco.com")
|
GC1: CallActiveEvent
GC1: ConnCreatedEvent 8889001
GC1: ConnInprogressEvent 8889001
GC1: CallCtlConnOfferedEv 8889001
|
CallingAddress = Unknown, CalledAddress = 8889001, CurrentCallingAddress = Unknown, CurrentCalledAddress = 8889001, ModifiedCallingAddress = Unknown, ModifiedCalledAddress = 8889001, No LastRedirectedPartyAddress
|
irvCTIRD3's Active remote destination of 916267829523 answers the call.
|
GC1: ConnConnectedEvent 8889001
GC1: CallCtlConnEstablishedEv 8889001
GC1: TermConnCreatedEvent irvCTIRD3
GC1: TermConnActiveEvent irvCTIRD3
GC1: CallCtlTermConnTalkingEv irvCTIRD3
GC1: ConnCreatedEvent 8882000
GC1: ConnInprogressEvent 8882000
GC1: CallCtlConnOfferedEv 8882000
GC1: ConnAlertingEvent 8882000
GC1: CallCtlConnAlertingEv 8882000
GC1: TermConnCreatedEvent irvCTIPort2
GC1: TermConnRingingEvent irvCTIPort2
GC1: CallCtlTermConnRingingEv irvCTIPort2
|
CallingAddress = Unknown, CalledAddress = 8889001, CurrentCallingAddress = 8889001, CurrentCalledAddress = 8882000, ModifiedCallingAddress = 8889001, ModifiedCalledAddress = 8882000, No LastRedirectedPartyAddress
|
Answer() the call on 8882000 terminal connection.
|
GC1: ConnConnectedEvent 8882000
GC1: CallCtlConnEstablishedEv 8882000
GC1: TermConnActiveEvent irvCTIPort2
GC1: CallCtlTermConnTalkingEv irvCTIPort2
|
CallingAddress = Unknown, CalledAddress = 8889001, CurrentCallingAddress = 8889001, CurrentCalledAddress = 8882000, ModifiedCallingAddress = 8889001, ModifiedCalledAddress = 8882000, No LastRedirectedPartyAddress
|
Disconnect() the call on 8889001 connection.
|
GC1: TermConnDroppedEv irvCTIRD3
GC1: CallCtlTermConnDroppedEv irvCTIRD3
GC1: ConnDisconnectedEvent 8889001
GC1: CallCtlConnDisconnectedEv 8889001
GC1: TermConnDroppedEv irvCTIPort2
GC1: CallCtlTermConnDroppedEv irvCTIPort2
GC1: ConnDisconnectedEvent 8882000
GC1: CallCtlConnDisconnectedEv 8882000
GC1: CallInvalidEvent
GC1: CallObservationEndedEv
|
CallingAddress = Unknown, CalledAddress = 8889001, CurrentCallingAddress = 8889001, CurrentCalledAddress = 8882000, ModifiedCallingAddress = 8889001, ModifiedCalledAddress = 8882000, No LastRedirectedPartyAddress
|
Device and Line Restriction
S.No
|
Scenario
|
Events
|
1
|
Application has Devices T1, T2, T3 whose lines are A1, A2, A3 in the control list. T1 and A3 is added into the restricted list. Application opens the provider
Application queries for is Restricted on T1,T2, T3
Application queries for is Restricted on Address A1, A2, A3
Application tries to addObserver and addCallObserver on T1,T2,T3, A1,A2,A3
|
CiscoTerminal.isRestricted() returns true for T1 and false for T2 and T3
CiscoAddress.isRestricted() returns true for A1, A3, false for A2.
CiscoAddress.getRestrictedAddrTerminals() on A1, A3 returns T1, T3 respectively, returns null for A2.
addObserver and addCallObserver fails for T1, A1, A3. For T3 observer is added, but no events are received on A3. For A2, application will be able to add observers successfully and events will be received
|
2
|
Application has Devices T1, T2, T3 whose lines are A1, A2, A3 in the control list.
Application opens the provider and adds observer on all terminals and addresses.
T1 and A2 are added to the restricted list.
T1 and L2 are removed from restricted list
|
CiscoTermRestrictedEv for T1 CiscoAddrRestrictedEv for L1 CiscoAddrRestrictedEv for A2 sent to providerObserver.
CiscoTermOutOfServiceEv for T1 CiscoAddrOutOfServiceEv for L1 CiscoAddrOutOfServiceEv for A2
CiscoTermActivatedEv for T1 and CiscoAddrActivatedEv for A1 CiscoAddrActivatedEv for A2 sent to providerObserver. CiscoTermInServiceEv for T1and CiscoAddrInServiceEv for A1 CiscoAddrInServiceEv for A2 sent to terminal and address observers.
|
3
|
Application has Devices T1, T2, T3 whose lines are A1, A1, A2 in the control list. A1 is the shared line on T1 and T2
Application opens provider and adds observer on all terminals/addresses
T1 is added into the restricted list.
T1 is removed from the restricted list
|
Application will see CiscoTermRestrictedEv for T1 and CiscoAddrRestrictedOnTerminalEv which contains getAddress is L1 and getTerminal as T1. Application will also see CiscoTermOutOfServiceEv for T1 and CiscoAddrOutOfService for A1/T1
CiscoTermActivatedEv for T1 CiscoAddrActivatedEv for L1 CiscoTermInServiceEv for T1 CiscoAddrInServiceEv for A1/T1
|
4
|
Application has Devices T1, T2, T3 whose lines are A1, A1, A1 in the control list. A1 is the shared line on T1, T2 and T3
Application opens the provider and adds observer on all terminals and addresses
A1 on T1 is added to the restricted list
A1 on T2 is added to the restricted list
A1 on T3 is added to the restricted list
A1 on T1 is removed from the restricted list
A1 on T2 is removed from the restricted list
A1 on T3 is removed from the restricted list
|
CiscoAddrRestrictedOnTerminalEv for A1/T1 CiscoAddrOutOfServiceEv for A1/T1
CiscoAddrRestrictedOnTerminalEv for A1/T2 CiscoAddrOutOfServiceEv for A1/T2
CiscoAddrRestrictedEv for A1 CiscoAddrOutOfServiceEv for A1/T3
CiscoAddrActivatedOnTerminalEv for A1/T1 CiscoAddrInServiceEv for A1/T1
CiscoAddrActivatedOnTerminalEv for A1/T2 CiscoAddrInServiceEv for A1/T2
CiscoAddrActivatedEv for A1 CiscoAddrInServiceEv for A1/T3
|
5
|
Application has Devices T1, T2, T3 whose lines are A1, A2, A3 in the control list.
Application opens the provider and adds observer on all terminals and addresses. A1 is involved in a call with party X.
A1 is added into the restricted list.
|
CiscoAddrRestrictedEv for A1 CiscoAddrOutOfServiceEv for A1
ConnDisconnectedEv CallCtlConnDisconnectedEv TermConnDroppedEv CallCtlConnDroppedEv CallInvalidEv
|
Device State Server
Do Not Disturb
Configuration: Application is observing terminal A and terminal B.
Scenario One
Application adds Terminal observer to terminal A using Terminal.addObserver(). Filter is enabled via setDNDChangedEvFilter. DND is enabled on the terminal. Application invokes getDNDStatus() from CiscoTerminal.
Action
|
Events
|
Call Info
|
Application adds terminal observer to terminal A. Filter is enabled via setDNDChangedEvFilter() in CiscoTermEvFilter. DND is enabled on the terminal through phone or admin page.
Application invokes getDNDStatus() from CiscoTerminal.
|
NEW META EVENT_________ META_CALL_STARTING
CiscoTermDNDStatusChangedEv A Cause: CAUSE_NORMAL for DND Status: true
DND status = true is returned to the application
|
N.A
|
Scenario Two
Application enables filter to receive events. Application adds Terminal observer to terminal A using Terminal.addObserver(). DND is enabled on the terminal. Application invokes getDNDStatus() from CiscoTerminal.
Action
|
Events
|
Call Info
|
Application enables filter to receive events. Application adds terminal observer to terminal
A. DND is enabled on the device through phone or admin pages.
Application invokes getDNDStatus() from CiscoTerminal.
|
NEW META
EVENT_________META_CALL_STARTING
CiscoTermDNDStatusChangedEv A Cause: CAUSE_NORMAL for DND Status: true
DND status = true is returned to the application
|
N.A
|
Scenario Three
Application adds Terminal observer to terminal A using Terminal.addObserver(). Filter is disabled via setDNDChangedEvFilter() in CiscoTermEvFilter. Application invokes getDNDStatus() from CiscoTerminal.
Action
|
Events
|
Call Info
|
Application adds Terminal observer to terminal A using Terminal.addObserver(). Filter is disabled via setDNDChangedEvFilter() in CiscoTermEvFilter.
Application invokes getDNDStatus() from CiscoTerminal.
|
CiscoTermDNDStatusChangedEv is not delivered to application.
|
N.A
|
Scenario Four
Application does not add Terminal observer to terminal. Application invokes getDNDStatus() from CiscoTerminal.
Action
|
Events
|
Call Info
|
Application does not add Terminal observer to terminal. Application invokes getDNDStatus() from CiscoTerminal.
|
InvalidStateException is thrown
|
N.A
|
Scenario Five
Application does not enable the filter to receive events. Application adds Terminal observer to terminal A. DND status is set to true through the phone or admin pages. Application now enables the filter to receive events. Application invokes getDNDStatus() from CiscoTerminal.
Action
|
Events
|
Call Info
|
Application does not enable the filter to receive events.Application adds Terminal observer to terminal A. DND status is set to true through the phone or admin pages.
Application now enables the filter to receive events
Application invokes getDNDStatus() from
CiscoTerminal.
|
CiscoTermDNDStatusChangedEv is not delivered to application.
NEW META EVENT_________META_CALL_STARTING
CiscoTermDNDStatusChangedEv A Cause: CAUSE_NORMAL for DND Status: true
DND status = true is returned to application
|
N.A
|
Scenario Six
Application sets DND status to false by invoking the setDNDStatus() interface on CiscoTerminal.
Action
|
Events
|
Call Info
|
Application invokes setDNDStatus() from CiscoTerminal.
|
NEW META EVENT_________META_CALL_STARTINGCiscoTermDNDStatusChangedEv A Cause: CAUSE_NORMAL for DND Status: false
|
N.A
|
Scenario Seven
Application 1 and Application 2 are observing terminal a, and both the applications have enabled the filter to receive events. Application 1 sets DND status to false on Terminal A. Application 2 is observing Terminal A.
Action
|
Events
|
Call Info
|
Application invokes setDNDStatus() from CiscoTerminal.
|
NEW META EVENT_________META_CALL_STARTINGCiscoTermDNDStatusChangedEv A Cause: CAUSE_NORMAL for DND Status: false
|
N.A
|
Scenario Eight
DND Type is RingerOff and CFNA is not set. Terminal B calls Terminal A. Call is presented to A and call is not answered.
Action
|
Events
|
Call Info
|
Application invokes redirect() API with feature priority set to 3 from CiscoCall.
|
Call is presented to the device, irrespective of the DND settings on the device. CER call overrides DND setting.
|
N.A
|
Application invokes selectRoute() API with feature priority set to 3 from CiscoRouteSession.
|
Call is presented to the device, irrespective of the DND settings on the device. CER call overrides DND setting.
|
N.A
|
Action
|
Events
|
Call Info
|
DND Type is RingerOff and CFNA is not set. Terminal B calls Terminal A .Call is presented to A and call is not answered.
|
ConnFailedEv Cause: CAUSE_NO ANSWER
|
N.A
|
Scenario Nine
Scenario Ten
DND Type is CallReject and CFB is not set. Terminal B calls Terminal A. Call is not presented to A.
Action
|
Events
|
Call Info
|
DND Type is CallReject and CFB is not set. Terminal B calls Terminal A. Call is not presented to A
|
ConnFailedEv Cause: CAUSE_USER BUSY
|
N.A
|
Scenario Eleven
DND is enabled on the terminal A. Terminal A comes IN_SERVICE. Application invokes getDNDStatus() on CiscoTerm in ServiceEv.
Action
|
Events
|
Call Info
|
DND is enabled on the terminal A. Terminal A comes IN_SERVICE.
|
CiscoTermInServiceEv Cause: CAUSE_NORMAL
DND Status =true
|
N.A
|
Scenario Twelve
DND is enabled on terminal A. Terminal A comes IN_SERVICE. Application invokes setDNDStatus(). DB failure happens after the setDNDStatus() request is sent.
Action
|
Events
|
Call Info
|
DND is enabled on the terminal A. Terminal A comes IN_SERVICE. Application invokes setDNDStatus(). DB failure follows and value is not updated in DB.
|
PlatformException is thrown "Could not meet post conditions of setDNDStatus()"
No CiscoTermDNDStatusChangedEv is received.
|
N.A
|
Scenario Thirteen
DND is enabled on the terminalA. Terminal A comes IN_SERVICE,DND status is currently true in phone/admin. Application tries to set the same value i.e. invokes setDNDStatus(true).
Action
|
Events
|
Call Info
|
DND is enabled on the terminal A. Terminal A comes IN_SERVICE.DND status is currently true in phone/admin.Application tries to set the same value i.e. invokes setDNDStatus(true).
|
InvalidStateException is caught: DND status with value true is already set
No CiscoTermDNDStatusChangedEv is received.
|
N.A
|
DND-R
Scenario One
Application adds Terminal observer to terminal A using Terminal.addObserver (). DND-R is enabled on the terminal B via the Admin page or the Common profile page.
Action
|
Events
|
Call Info
|
Application adds terminal observers to terminal A and B. DND-R is enabled on the terminal B through phone or admin page.
A issues Call.connect to B with the feature Priority = 1 (Normal)
|
NEW META EVENT_________ META_CALL_STARTING
CallActiveEv for callID=GC1 Cause: CAUSE_NEW_CALL
ConnCreatedEv for A Cause: CAUSE_NORMAL
ConnConnectedEv for A Cause: CAUSE_NORMAL
CallCtlConnInitiatedEv for A Cause: CAUSE_NORMAL
ConnFailedEv B Cause:.
Cause: CAUSE_USERBUSY.
|
N.A
|
Scenario Two
Application adds Terminal observer to terminal A using Terminal.addObserver (). DND-R is enabled on the Terminal B via the Admin page or the Common profile page.
Action
|
Events
|
Call Info
|
Application adds terminal observers to terminal A and B. DND-R is enabled on the terminal B through phone or admin page.
A issues Call.connect to B with the feature Priority = 3 (Emergency)
|
NEW META EVENT_________META_CALL_STARTING
CallActiveEv for callID=GC1 Cause: CAUSE_NEW_CALL
ConnCreatedEv for A Cause: CAUSE_NORMAL
ConnConnectedEv for A Cause: CAUSE_NORMAL
CallCtlConnInitiatedEv for A Cause: CAUSE_NORMAL
TermConnCreatedEv for A Cause: CAUSE_NORMAL
TernConnActiveEv for A Cause: CAUSE_NORMAL
CallCtlConnDialingEv for A Cause: CAUSE_NORMAL
CallCtlConnEstabilishedEv for A Cause: CAUSE_NORMAL
ConnCreatedEv for B cause: CAUSE_NORMAL
ConnInProgressEv for B Cause: CAUSE_NORMAL
CallCtlConnOfferedEv for B Cause: CAUSE_NORMAL
ConnAlertingEv for B Cause: CAUSE_NORMAL
CallCtlConnAlertingEv for B Cause: CAUSE_NORMAL
TermConnCreatedEv for B Cause: CAUSE_NORMAL
TermConnRingingEv for B Cause: CAUSE_NORMAL
CallCtlTermConnTalkingEv Cause: CAUSE_NORMAL
|
Calling: A
Called: B
|
Scenario Three
DND-Call reject with CFB not set.
Action
|
Events
|
Call Info
|
Application adds terminal observers to terminal A and B. DND-R is enabled on the terminal B through phone or admin page with no CFB Setting.
Terminal A issues Call.connect to Terminal B.
|
NEW META EVENT_________ META_CALL_STARTING
CallActiveEv for callID=GC1 Cause: CAUSE_NEW_CALL
ConnCreatedEv for A Cause: CAUSE_NORMAL
ConnConnectedEv for A Cause: CAUSE_NORMAL
CallCtlConnInitiatedEv for A Cause: CAUSE_NORMAL
ConnFailedEv B Cause: CAUSE_USERBUSY.
|
NA
|
Scenario Four
DND - Call reject with CFB set to C.
Action
|
Events
|
Call Info
|
Application is Observing Terminal A, B & C.
DND-R is Enabled in Terminal B with CFB set to Terminal C.
Terminal A issues Call.connect to Terminal B.
Call is not Presented on Terminal B and is Forwarded to Terminal C.
|
NEW META EVENT_________META_CALL_STARTING
CallActiveEv for callID=GC1 Cause: CAUSE_NEW_CALL
ConnCreatedEv for A Cause: CAUSE_NORMAL
ConnConnectedEv for A Cause: CAUSE_NORMAL
CallCtlConnInitiatedEv for A Cause: CAUSE_NORMAL
TermConnCreatedEv for A Cause: CAUSE_NORMAL
TernConnActiveEv for A Cause: CAUSE_NORMAL
CallCtlConnDialingEv for A Cause: CAUSE_NORMAL
CallCtlConnEstabilishedEv for A Cause: CAUSE_NORMAL
ConnCreatedEv for C cause: REDIRECTED CALL
ConnInProgressEv for C Cause: REDIRECTED CALL
CallCtlConnOfferedEv for C Cause: REDIRECTED CALL
ConnAlertingEv for C Cause REDIRECTED CALL
CallCtlConnAlertingEv for C Cause: REDIRECTED CALL
TermConnCreatedEv for C Cause: REDIRECTED CALL
TermConnRingingEv for C Cause: REDIRECTED CALL
CallCtlTermConnTalkingEv Cause: CAUSE_REDIRECTED
|
Calling: A
Called: C
LastRedirectedParty: B
|
Dynamic CTIPort Registration Per Call
The following diagram illustrates the message flows for Dynamic CTIPort Registration per call.
E911 Teleworker
Use Case
|
Events
|
Call Info
|
No changes in use case with selectRoute Method
|
No changes in the events
|
No changes in the callinfo
|
SelectRoute Method
Use Case
|
Events
|
Call Info
|
No changes in use case with redirect Method
|
No changes in the events
|
No changes in the callinfo
|
Redirect Method
End to End Call Tracing
Actions
|
Events
|
Call Info
|
1.a) Both A and B are in user's control list.
Basic Call
A calls B; App is observing only B
|
GC1: CallActiveEv
GC1: ConnCreatedEv for B
GC1: ConnConnectedEv for B
GC1: CallCtlConnOfferedEv for B
GC1: ConnCreatedEv for A
GC1: ConnConnectedEv for A
...
...
GC1: TermConnCreatedEv for TB
GC1: TermConnActiveEvent for TB
GC1: CallCtlTermConnTalkingEv for TB
|
( (CiscoConnection)(ConnCreatedEv for B).getConnection() ).getUniqueID(null) returns ID1
( (CiscoConnection)(ConnCreatedEv for B).getConnection() ).getUniqueID(TB) returns ID1
( (CiscoConnection)(ConnCreatedEv for A).getConnection() ).getUniqueID(term) will throw InvalidStateException
|
1.b) Only B is in User's control list
Basic Call
A calls B; App is observing only B
|
GC1: CallActiveEv
GC1: ConnCreatedEv for B
GC1: ConnConnectedEv for B
GC1: CallCtlConnOfferedEv for B
GC1: ConnCreatedEv for A
GC1: ConnConnectedEv for A
......
......
GC1: TermConnCreatedEv for TB
GC1: TermConnActiveEvent for TB
GC1: CallCtlTermConnTalkingEv for TB
|
( (CiscoConnection)(ConnCreatedEv for B).getConnection() ).getUniqueID(null) returns ID1
( (CiscoConnection)(ConnCreatedEv for B).getConnection() ).getUniqueID(TB) returns ID1
( (CiscoConnection)(ConnCreatedEv for A).getConnection() ).getUniqueID(term) will throw PrivilegeViolationException
|
2.a) Redirect in offering state Scenario All Observed
A calls B;
B redirects the call to C in offering state
C Accepts the call
C answers the call
|
GC1: CallActiveEv
GC1: ConnCreatedEv for A
GC1: CallCtlConnInitiatedEv for A
GC1: TermConnCreatedEv for TA
GC1: TermConnActiveEvent for TA
GC1: CallCtlTermConnTalkingEv for TA
GC1: ConnCreatedEv for B
GC1: ConnConnectedEv for B
GC1: CallCtlConnOfferedEv for B
GC1: TermConnCreatedEv for TB
GC1: ConnCreatedEv for C
GC1: ConnConnectedEv for C
GC1: CallCtlConnOfferedEv for C
GC1: TermConnDroppedEv for TB
GC1: CallCtlTermConnDroppedEv for TB
GC1: ConnDisconnectedEv for B
GC1: CallCtlConnDisconnectedEv for B
GC1: TermConnCreatedEv for TC
GC1: TermConnActiveEvent for TC
GC1: CallCtlConnEstablishedEv for C
GC1: CallCtlTermConnTalkingEv for TC
|
( (CiscoConnection)(ConnCreatedEv for A).getConnection() ).getUniqueID(null) returns ID2
( (CiscoConnection)(ConnCreatedEv for B).getConnection() ).getUniqueID(null) returns ID3
( (CiscoConnection)(ConnCreatedEv for C).getConnection() ).getUniqueID(null) returns ID4
|
2.b) Redirect in connected state Scenario All Observed
A calls B
B answers
B redirects the call to C in connected state
|
GC1: CallActiveEv
GC1: ConnCreatedEv for A
GC1: ConnConnectedEv for A
GC1: CallCtlConnInitiatedEv for A
GC1: TermConnCreatedEv for TA
GC1: TermConnActiveEvent for TA
GC1: CallCtlTermConnTalkingEv for TA
GC1: ConnCreatedEv for B
GC1: ConnConnectedEv for B
GC1: CallCtlConnOfferedEv for B
GC1: TermConnCreatedEv for TB
GC1: ConnConnectedEv for A
GC1: CallCtlConnEstablishedEv for A
GC1: ConnConnectedEv for B
GC1: CallCtlConnEstablishedEv for B
GC1: ConnCreatedEv for C
GC1: ConnConnectedEv for C
GC1: CallCtlConnOfferedEv for C
GC1: TermConnCreatedEv for TC
GC1: TermConnActiveEvent for TC
GC1: CallCtlTermConnTalkingEv for TC
GC1: TermConnDroppedEv for TB
GC1: CallCtlTermConnDroppedEv for TB
GC1: ConnDisconnectedEv for B
GC1: CallCtlConnDisconnectedEv for B
|
( (CiscoConnection)(ConnCreatedEv for A).getConnection() ).getUniqueID(null) returns ID6
( (CiscoConnection)(ConnCreatedEv for B).getConnection() ).getUniqueID(null) returns ID7
( (CiscoConnection)(ConnCreatedEv for C).getConnection() ).getUniqueID(null) returns ID8
|
3. Redirect Scenario Only B & C are Observed
A calls B; B answers
B redirects the call to C in connected state
|
GC1: CallActiveEv
GC1: ConnCreatedEv for B
GC1: ConnConnectedEv for B
GC1: CallCtlConnOfferedEv for B
GC1: ConnCreatedEv for A
GC1: ConnConnectedEv for A
GC1: TermConnCreatedEv for TB
GC1: TermConnActiveEvent for TB
GC1: CallCtlConnEstablishedEv for A
GC1: CallCtlConnEstablishedEv for B
GC1: CallCtlTermConnTalkingEv for TB
GC1: ConnCreatedEv for C
GC1: ConnConnectedEv for C
GC1: CallCtlConnOfferedEv for C
GC1: TermConnCreatedEv for TC
GC1: TermConnActiveEvent for TC
GC1: CallCtlTermConnTalkingEv for TC
GC1: TermConnDroppedEv for TB
GC1: CallCtlTermConnDroppedEv for TB
GC1: ConnDisconnectedEv for B
GC1: CallCtlConnDisconnectedEv for B
|
( (CiscoConnection)(ConnCreatedEv for B).getConnection() ).getUniqueID(null) returns ID10
( (CiscoConnection)(ConnCreatedEv for A).getConnection() ).getUniqueID(null) throws InvalidStateException
( (CiscoConnection)(ConnCreatedEv for C).getConnection() ).getUniqueID(null) returns ID11
|
4. Conference Scenario; All observed
GC1: A calls B; B answers
GC2: B calls C; C answers
|
GC1: CallActiveEv
GC1: ConnCreatedEv for A
GC1: ConnConnectedEv for A
GC1: CallCtlConnInitiatedEv for A
GC1: TermConnCreatedEv for TA
GC1: TermConnActiveEvent for TA
GC1: CallCtlTermConnTalkingEv for TA
GC1: ConnCreatedEv for B
GC1: ConnConnectedEv for B
GC1: CallCtlConnOfferedEv for B
GC1: TermConnCreatedEv for TB
GC1: ConnConnectedEv for A
GC1: CallCtlConnEstablishedEv for A
GC1: ConnConnectedEv for B
GC1: CallCtlConnEstablishedEv for B
GC1: CallCtlTermConnHeldEv for TB
GC2: CallActiveEv
GC2: ConnCreatedEv for B
GC2: ConnConnectedEv for B
GC2: CallCtlConnInitiatedEv for B
GC2: TermConnCreatedEv for TB
GC2: TermConnActiveEvent for TB
GC2: CallCtlTermConnTalkingEv for TB
GC2: ConnCreatedEv for C
GC2: ConnConnectedEv for C
GC2: CallCtlConnOfferedEv for C
GC2: TermConnCreatedEv for TC
GC2: ConnConnectedEv for B
GC2: CallCtlConnEstablishedEv for B
|
( (CiscoConnection)(ConnCreatedEv for A).getConnection() ).getUniqueID(null) returns ID12
( (CiscoConnection)(ConnCreatedEv for B).getConnection() ).getUniqueID(null) returns ID13
( (CiscoConnection)(ConnCreatedEv for B).getConnection() ).getUniqueID(null) returns ID14
( (CiscoConnection)(ConnCreatedEv for C).getConnection() ).getUniqueID(null) returns ID15
|
GC1.conference(GC2)
|
GC2: ConnConnectedEv for C
GC1: CiscoConferenceStartEv
GC1: CiscoCallFeatureCancelledEv
GC2: CiscoCallChangedEv
GC1: ConnCreatedEvent for C
GC1: ConnConnectedEvent for C
GC1: CallCtlConnEstablishedEv for C
GC1: TermConnCreatedEvent for TC
GC1: TermConnActiveEvent for TC
GC1: CallCtlTermConnTalkingEv TC
GC2: TermConnDroppedEv for TC
GC2: CallCtlTermConnDroppedEv for TC
GC2: ConnDisconnectedEvent for C
GC2: CallCtlConnDisconnectedEv for C
GC2: TermConnDroppedEv for TB
GC2: CallCtlTermConnDroppedEv for TB
GC2: ConnDisconnectedEvent for B2
GC2: CallCtlConnDisconnectedEv for B2
GC2: CallInvalidEvent
GC1: CiscoConferenceEndEv
|
( (CiscoConnection)(ConnCreatedEv for C).getConnection() ).getUniqueID(null) returns ID16
|
5. Transfer Scenario; All observed
GC1: A calls B; B answers
GC2: B calls C; C answers
|
GC1: CallActiveEv
GC1: ConnCreatedEv for A
GC1: ConnConnectedEv for A
GC1: CallCtlConnInitiatedEv for A
GC1: TermConnCreatedEv for TA
GC1: TermConnActiveEvent for TA
GC1: CallCtlTermConnTalkingEv for TA
GC1: ConnCreatedEv for B
GC1: ConnConnectedEv for B
GC1: CallCtlConnOfferedEv for B
GC1: TermConnCreatedEv for TB
GC1: ConnConnectedEv for A
GC1: CallCtlConnEstablishedEv for A
GC1: ConnConnectedEv for B
GC1: CallCtlConnEstablishedEv for B
GC1: CallCtlTermConnHeldEv for TB
GC2: CallActiveEv
GC2: ConnCreatedEv for B
GC2: ConnConnectedEv for B
GC2: CallCtlConnInitiatedEv for B
GC2: TermConnCreatedEv for TB
GC2: TermConnActiveEvent for TB
GC2: CallCtlTermConnTalkingEv for TB
GC2: ConnCreatedEv for C
GC2: ConnConnectedEv for C
GC2: CallCtlConnOfferedEv for C
GC2: TermConnCreatedEv for TC
GC2: ConnConnectedEv for B
|
( (CiscoConnection)(ConnCreatedEv for A).getConnection() ).getUniqueID(null) returns ID19
( (CiscoConnection)(ConnCreatedEv for B).getConnection() ).getUniqueID(null) returns ID20
( (CiscoConnection)(ConnCreatedEv for B).getConnection() ).getUniqueID(null) returns ID21
( (CiscoConnection)(ConnCreatedEv for C).getConnection() ).getUniqueID(null) returns ID22
|
GC1.transfer(GC2)
|
GC2: CallCtlConnEstablishedEv for B
GC2: ConnConnectedEv for C
GC2: CallCtlConnEstablishedEv for C
GC1: CiscoTransferStartEv
GC2: CiscoCallChangedEv
GC1: ConnCreatedEv for C
GC1: ConnConnectedEv for C
GC1: CallCtlConnEstablishedEv for C
GC1: TermConnCreatedEv for TC
GC1: TermConnActiveEvent for TC
GC1: CallCtlTermConnTalkingEv for TC
GC2: TermConnDroppedEv for TC
GC2: CallCtlTermConnDroppedEv for TC
GC2: ConnDisconnectedEv for C
GC2: CallCtlConnDisconnectedEv for C
GC1: TermConnDroppedEv for TB
GC1: CallCtlTermConnDroppedEv for TB
GC1: ConnDisconnectedEv for B
GC1: CallCtlConnDisconnectedEv for B
GC2: TermConnDroppedEv for TB
GC2: CallCtlTermConnDroppedEv for TB
GC2: ConnDisconnectedEv for B
GC2: CallCtlConnDisconnectedEv for B
GC2: CallInvalidEvent
GC2: CallObservationEndedEv
GC1: CiscoTransferEndEv
|
( (CiscoConnection)(ConnCreatedEv for C).getConnection() ).getUniqueID(null) returns ID23
|
6. Shared Line Scenario; All Observed; DN B is present on T1, T2
A calls B;
B(T1) Answers
|
GC1: CallActiveEv
GC1: ConnCreatedEv for A
GC1: ConnConnectedEv for A
GC1: CallCtlConnInitiatedEv for A
GC1: TermConnCreatedEv for TA
GC1: TermConnActiveEvent for TA
GC1: CallCtlTermConnTalkingEv for TA
GC1: CallCtlConnDialingEv for A
GC1: CallCtlConnEstablishedEv for A
GC1: ConnCreatedEv for B
GC1: ConnInProgressEv for B
GC1: CallCtlConnOfferedEv for B
GC1: ConnAlertingEv for B
GC1: TermConnCreatedEv for T1B
GC1: TermConnRingingEv for T1B
GC1: CallCtlTermConnRingingEv for T1B
GC1: TermConnCreatedEv for T2B
GC1: TermConnRingingEv for T2B
GC1: CallCtlTermConnRingingEv for T2B
GC1: ConnConnectedEv for B
GC1: CallCtlConnEstablishedEv for B
GC1: TermConnActiveEv for T1B
GC1: CallCtlTermConnTalkingEv for T1B
GC1: TermConnPassiveEv for T2B
GC1: CallCtlTermConnBridgedEv
|
( (CiscoConnection)(ConnCreatedEv for A).getConnection() ).getUniqueID(TA) returns ID25
( (CiscoConnection)(ConnCreatedEv for B).getConnection() ).getUniqueID(null) returns ID26
( (CiscoConnection)(ConnCreatedEv for B).getConnection() ).getUniqueID(T1) returns ID26
( (CiscoConnection)(ConnCreatedEv for B).getConnection() ).getUniqueID(T2) returns ID26
(Connection of B).getUniqueID(null) returns returns ID26
(Connection of B).getUniqueID(T1) returns returns ID26
(Connection of B).getUniqueID(T2) returns returns ID26
|
7. Shared Line Barge Scenario; All Observed; DN B is present on T1, T2
A calls B;
B(T1) Answers
|
GC1: CallActiveEv
GC1: ConnCreatedEv for A
GC1: ConnConnectedEv for A
GC1: CallCtlConnInitiatedEv for A
GC1: TermConnCreatedEv for TA
GC1: TermConnActiveEvent for TA
GC1: CallCtlTermConnTalkingEv for TA
GC1: CallCtlConnDialingEv for A
GC1: CallCtlConnEstablishedEv for A
GC1: ConnCreatedEv for B
GC1: ConnInProgressEv for B
GC1: CallCtlConnOfferedEv for B
GC1: ConnAlertingEv for B
GC1: TermConnCreatedEv for T1B
GC1: TermConnRingingEv for T1B
GC1: CallCtlTermConnRingingEv for T1B
GC1: TermConnCreatedEv for T2B
GC1: TermConnRingingEv for T2B
GC1: CallCtlTermConnRingingEv for T2B
GC1: ConnConnectedEv for B
GC1: CallCtlConnEstablishedEv for B
GC1: TermConnActiveEv for T1B
GC1: CallCtlTermConnTalkingEv for T1B
GC1: TermConnPassiveEv for T2B
GC1: CallCtlTermConnBridgedEv
|
( (CiscoConnection)(ConnCreatedEv for A).getConnection() ).getUniqueID(TA) returns ID27
(Connection of B).getUniqueID(null) returns returns ID28
(Connection of B).getUniqueID(T1) returns returns ID28
(Connection of B).getUniqueID(T2) returns returns ID28
|
B(T2) Presses Barge
|
GC2: CallActiveEv
GC2: ConnCreatedEv for B
GC2: ConnConnectedEv for B
GC2: CallCtlConnInitiatedEv for B
GC2: TermConnCreatedEv for T2B
GC2: TermConnCreatedEv for T1B
GC2: CiscoCallChangedEv
GC1: TermConnActiveEv for T2B
GC1: CallCtlTermConnTalkingEv for T2B
GC2: TermConnDroppedEv for T2B
GC2: CallCtlTermConnDroppedEv for T2B
GC2: TermConnDroppedEv for T2B
GC2: CallCtlTermConnDroppedEv for T2B
GC2: ConnDisconnectedEv for B
GC2: CallCtlConnDisconnectedEv for B
GC2: CallInvalidEv
GC2: CallObservationEndedEv
|
( (CiscoConnection)(GC2: ConnCreatedEv for B).getConnection() ).getUniqueID(null) returns ID29
(GC1: Connection of B).getUniqueID(T1) returns returns ID28
(GC1: Connection of B).getUniqueID(T2) returns returns ID30
(GC1: Connection of B).getUniqueID(null) is unpredictible
(can be either of above two)
|
8. Park/Unpark Scenario (All Observed)
A calls B; B answers
B does PARK
C Unparks
|
GC1: CallActiveEv
GC1: ConnCreatedEv for A
GC1: ConnConnectedEv for A
GC1: CallCtlConnInitiatedEv for A
GC1: TermConnCreatedEv for TA
GC1: TermConnActiveEvent for TA
GC1: CallCtlTermConnTalkingEv for TA
GC1: ConnCreatedEv for B
GC1: ConnConnectedEv for B
GC1: CallCtlConnOfferedEv for B
GC1: TermConnCreatedEv for TB
GC1: ConnConnectedEv for A
GC1: CallCtlConnEstablishedEv for A
GC1: ConnConnectedEv for B
GC1: CallCtlConnEstablishedEv for B
GC1: ConnCreatedEv for ParkDN
GC1: CallCtlConnQueuedEv for ParkDN
GC1: TermConnDroppedEv for TB
GC1: CallCtlTermConnDroppedEv for TB
GC1: ConnDisconnectedEv for B
GC1: CallCtlConnDisconnectedEv for B
GC2: CallActiveEv
GC2: ConnCreatedEv for C
GC2: ConnConnectedEv for C
GC2: CallCtlConnInitiatedEv for C
GC2: TermConnCreatedEv for TC
GC2: CiscoCallChangedEv
|
( (CiscoConnection)(ConnCreatedEv for A).getConnection() ).getUniqueID(null) returns ID31
( (CiscoConnection)(ConnCreatedEv for B).getConnection() ).getUniqueID(null) returns ID32
( (CiscoConnection)(GC1: ConnCreatedEv for ParkDN).getConnection() ).getUniqueID(null) throws PrivilegeVoilationException
( (CiscoConnection)(GC2: ConnCreatedEv for C).getConnection() ).getUniqueID(null) returns ID34
|
| |
GC1: ConnCreatedEv for C
GC1: ConnConnectedEv for C
GC1: TermConnCreatedEv for TC
GC1: ConnDisconnectedEv for ParkDN
GC1: CallCtlConnDisconnectedEv for ParkDN
GC2: TermConnDroppedEv for TC
GC2: CallCtlTermConnDroppedEv for TC
GC2: ConnDisconnectedEv for C
GC2: CallCtlConnDisconnectedEv for C
GC2: CallInvalidEv
GC2: CallObservationEndedEv
|
( (CiscoConnection)(GC1: ConnCreatedEv for C).getConnection() ).getUniqueID(null) returns ID35
|
9. Conference Chaining Scenario; All Observed
GC1: A calls B; B answers and adds C to conference
GC3: C calls D; D answers and adds E to conference
App sends GC1.conference(GC3) to chain two conferences
|
GC1 and GC3 are created as normal
GC1 has connections for A, B and C(Held)
GC3 has connections for C(Talking), D and E
GC3: ConnCreatedEvent for cBridge-GC1
GC3: CiscoConferenceChainAddedEv
GC3: ConnConnectedEvent for cBridge-GC1
GC3: CallCtlConnEstablishedEv for cBridge-GC1
GC3: TermConnDroppedEv for TC
GC3: CallCtlTermConnDroppedEv for TC
GC3: ConnDisconnectedEvent for C
GC3: CallCtlConnDisconnectedEv C
GC1: CallCtlTermConnTalkingEv for TC
GC1: ConnCreatedEvent for cBridge-GC3
GC1: CiscoConferenceChainAddedEv
GC1: ConnConnectedEvent for cBridge-GC3
GC3: CallCtlConnEstablishedEv for cBridge-GC3
|
(Connection for A ).getUniqueID(null) returns ID37
(Connection for B ).getUniqueID(null) returns ID38
(GC1: Connection for C ).getUniqueID(null) returns ID39
(Connection for C ).getUniqueID(null) returns ID40
(Connection for D ).getUniqueID(null) returns ID41
(GC3: Connection for E ).getUniqueID(null) returns ID42
( (CiscoConnection)(GC3: ConnCreatedEv for cBridge-GC1).getConnection() ).getUniqueID(null) throws PrivilegeVoilationException
( (CiscoConnection)(GC1: ConnCreatedEv for cBridge-GC3).getConnection() ).getUniqueID(null) throws PrivilegeVoilationException
(Connection for A ).getUniqueID(null) returns ID37
(Connection for B ).getUniqueID(null) returns ID38
(Connection for C ).getUniqueID(null) returns ID39
(Connection for D ).getUniqueID(null) returns ID41
(Connection for E ).getUniqueID(null) returns ID42
|
Application sends E.disconnect()
|
GC3: TermConnDroppedEv for TE
GC3: CallCtlTermConnDroppedEv for TE
GC3: ConnDisconnectedEvent for E
GC3: CallCtlConnDisconnectedEv E
GC1: ConnDisconnectedEvent for cBridge-GC3
GC1: CiscoConferenceChainRemovedEv
GC1: CallCtlConnDisconnectedEv cBridge-GC3
GC3: CiscoCallChangedEv
GC1: ConnCreatedEvent for D
GC1: ConnConnectedEvent for D
GC1: CallCtlConnEstablishedEv for D
GC1: TermConnCreatedEvent for TD
GC1: TermConnActiveEvent for TD
GC1: CallCtlTermConnTalkingEv for TD
GC3: ConnDisconnectedEvent for cBridge-GC1
GC3: CiscoConferenceChainRemovedEv
GC3: CallCtlConnDisconnectedEv cBridge-GC31
GC3: TermConnDroppedEv for TD
GC3: CallCtlTermConnDroppedEv for TD
GC3: ConnDisconnectedEvent for D
GC3: CallCtlConnDisconnectedEv D
GC3: CallInvalidEvent
GC3: CallObservationEndedEv
|
( (CiscoConnection)(GC1: ConnCreatedEv for D).getConnection() ).getUniqueID(null) returns ID43
|
Energywise Deep Sleep Mode
Scenario 1
JTAPI reports new reason "ENERGYWISE_POWER_SAVE_PLUS" in CiscoProvTerminalUnRegisteredEv and cause "CAUSE_ENERGYWISE_POWER_SAVE_PLUS" in CiscoTermOutOfServiceEv and CiscoAddrOutOfServiceEv to the application when a terminal/address unregisters from Cisco Unified CM due to deep sleep time.
Description
|
Events
|
Information
|
Application opens the provider and adds observer on provider, terminal and address of `A'
|
ProvInServiceEv P1
[Term A] CiscoTermInServiceEv
[Addr A] CiscoAddrInServiceEv
|
|
Terminal `A' enters Deep Sleep mode and gets unregistered
|
[Term A] CiscoProvTerminalUnRegisteredEv
[Term A] CiscoTermOutOfServiceEv
[Addr A] CiscoAddrOutOfServiceEv
|
CiscoProvTerminalUnRegisteredEv.getReason() = CiscoProvTerminalUnRegisteredEv.ENERGYWISE_POWER_SAVE_PLUS
CiscoTermOutOfServiceEv.getCause() = CiscoOutOfServiceEv.CAUSE_ENERGYWISE_POWER_SAVE_PLUS
CiscoAddrOutOfServiceEv.getCause() = CiscoOutOfServiceEv.CAUSE_ENERGYWISE_POWER_SAVE_PLUS
|
Scenario 2
Terminal gets unregistered due to Deep Sleep mode and the user tries to manually register the terminal during the Deep Sleep time.
Description
|
Events
|
Information
|
Application opens the provider and adds observer on provider, terminal and address of `A''
|
ProvInServiceEv P1
[Term A] CiscoTermInServiceEv
[Addr A] CiscoAddrInServiceEv
|
|
Terminal `A' goes to Deep Sleep mode and gets unregistered
|
[Term A] CiscoProvTerminalUnRegisteredEv
[Term A] CiscoTermOutOfServiceEv
[Addr A] CiscoAddrOutOfServiceEv
|
CiscoProvTerminalUnRegisteredEv.getReason() = CiscoProvTerminalUnRegisteredEv.ENERGYWISE_POWER_SAVE_PLUS
CiscoTermOutOfServiceEv.getCause() = CiscoOutOfServiceEv.CAUSE_ENERGYWISE_POWER_SAVE_PLUS
CiscoAddrOutOfServiceEv.getCause() = CiscoOutOfServiceEv.CAUSE_ENERGYWISE_POWER_SAVE_PLUS
|
A user tries to register the phone with Cisco Unified CM during deep sleep mode.
|
|
Cisco Unified IP 7900 Series phones do not re-register with the Cisco Unified CM during the Deep Sleep time. This is a limitation of the phone.
Cisco Unified IP 9900 and 6900 Series phones register back with the Cisco Unified CM by pressing the select key on the phone.
|
Phone registers with the Cisco Unified CM after the Deep Sleep time expires.
|
[Term A] CiscoProvTerminalRegisteredEv
[Term A] CiscoTermInServiceEv
[Addr A] CiscoAddrInServiceEv
|
|
Scenario 3
Shared line scenario. Two devices A (Cisco Unified IP Phones 7900 Series phone) and A' (CTI Port) are configured with the same line. Deep Seep mode is enabled on device A
Description
|
Events
|
Information
|
Application opens the provider and adds observer on provider, terminal and address of A and A'
|
ProvInServiceEv P1
[Term A] CiscoTermInServiceEv
[Addr A] CiscoAddrInServiceEv
[Term A'] CiscoTermInServiceEv
[Addr A'] CiscoAddrInServiceEv
|
|
Terminal A goes to Deep Sleep mode and gets unregistered.
(Terminal A' remains in registered state.)
|
[Term A] CiscoProvTerminalUnRegisteredEv
[Term A] CiscoTermOutOfServiceEv
[Addr A] CiscoAddrOutOfServiceEv
|
CiscoProvTerminalUnRegisteredEv.getReason() = CiscoProvTerminalUnRegisteredEv. ENERGYWISE_POWER_SAVE_PLUS
CiscoTermOutOfServiceEv.getCause() = CiscoOutOfServiceEv.CAUSE_ENERGYWISE_POWER_SAVE_PLUS
CiscoAddrOutOfServiceEv.getCause() = CiscoOutOfServiceEv.CAUSE_ENERGYWISE_POWER_SAVE_PLUS
|
Scenario 4
Shared line scenario. Two devices A and A' (both are Cisco Unified IP Phones 7900 Series phones) that have are configured with the same line. Deep Sleep mode is enabled on A. Another device B calls the shared line after device A enters to the Deep Sleep mode.
Description
|
Events
|
Information
|
Application opens the provider and adds observer on provider, terminal and address of A and A'
|
ProvInServiceEv P1
[Term A] CiscoTermInServiceEv
[Addr A] CiscoAddrInServiceEv
[Term A'] CiscoTermInServiceEv
[Addr A'] CiscoAddrInServiceEv
|
|
Terminal A goes to deep sleep mode and gets unregistered.
(Terminal A' remains in registered state.)
|
[Term A] CiscoTermOutOfServiceEv
[Addr A] CiscoAddrOutOfServiceEv
|
CiscoTermOutOfServiceEv.getCause() = CiscoOutOfServiceEv.CAUSE_ENERGYWISE_POWER_SAVE_PLUS
CiscoAddrOutOfServiceEv.getCause() = CiscoOutOfServiceEv.CAUSE_ENERGYWISE_POWER
|
Another terminal B calls to the shared line DN.
|
GC1 CallActiveEv
GC1 ConnCreatedEv [Addr B]
GC1 ConnConnectedEv [Addr B]
GC1 CallCtlConnInitiatedEv [Addr B]
- - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - -
GC1 ConnCreatedEv [Addr A']
GC1 ConnInProgressEv [Addr A']
GC1 CallCtlConnOfferedEv [Addr A']
- - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - -
GC1 ConnConnectedEv [Addr A']
GC1 CallCtlConnEstablishedEv [Addr A']
GC1 TermConnActiveEv [Term A']
GC1 CallCtlTermConnTalkingEv [Term A'
|
|
Scenario 5
Shared line scenario. Two device A (Cisco Unified IP Phones Series 9900/6900 phone) and A' (Cisco Unified IP Phones Series 9900/6900 phone) are configured with the same line. Deep Sleep mode is enabled on both devices.
Description
|
Events
|
Information
|
Application opens the provider and adds observer on provider, terminal and address of A and A'
|
ProvInServiceEv P1
[Term A] CiscoTermInServiceEv
[Addr A] CiscoAddrInServiceEv
[Term A'] CiscoTermInServiceEv
[Addr A'] CiscoAddrInServiceEv
|
|
Terminal A and A' enters Deep Sleep mode and gets unregistered
|
[Term A] CiscoProvTerminalUnRegisteredEv
[Term A'] CiscoProvTerminalUnRegisteredEv
[Term A] CiscoTermOutOfServiceEv
[Term A'] CiscoTermOutOfServiceEv
[Addr A] CiscoAddrOutOfServiceEv
[Addr A'] CiscoAddrOutOfServiceEv
|
CiscoProvTerminalUnRegisteredEv.getReason() = CiscoProvTerminalUnRegisteredEv. ENERGYWISE_POWER_SAVE_PLUS
CiscoProvTerminalUnRegisteredEv.getReason() = CiscoProvTerminalUnRegisteredEv. ENERGYWISE_POWER_SAVE_PLUS
CiscoTermOutOfServiceEv.getCause() = CiscoOutOfServiceEv.CAUSE_ENERGYWISE_POWER_SAVE_PLUS
CiscoTermOutOfServiceEv.getCause() = CiscoOutOfServiceEv.CAUSE_ENERGYWISE_POWER_SAVE_PLUS
CiscoAddrOutOfServiceEv.getCause() = CiscoOutOfServiceEv.CAUSE_ENERGYWISE_POWER_SAVE_PLUS
CiscoAddrOutOfServiceEv.getCause() = CiscoOutOfServiceEv.CAUSE_ENERGYWISE_POWER_SAVE_PLUS
|
Deep Sleep mode power off time has expired and A and A' reregister to the Cisco Unified CM
|
Term A] CiscoProvTerminalRegisteredEv
[Term A'] CiscoProvTerminalRegisteredEv
[Term A] CiscoTermInServiceEv
[Term A'] CiscoTermInServiceEv
[Addr A] CiscoAddrInServiceEv
[Addr A'] CiscoAddrInServiceEv
|
|
Scenario 6
Basic call scenario. Two devices A (CTI port) and B (Cisco Unified IP Phones 7900 Series phone) are configured on a Cisco Unified CM and Deep Sleep mode is enabled on B with power off time configured for 6:00 PM. A calls B at 5:55 pm and the call continues until 6:10 pm. The idle timer is set for 10 minutes.
Description
|
Events
|
Information
|
Application opens the provider and adds observer on provider, terminal and address of A and B
|
ProvInServiceEv P1
[Term A] CiscoTermInServiceEv
[Addr A] CiscoAddrInServiceEv
[Term B] CiscoTermInServiceEv
[Addr B] CiscoAddrInServiceEv
|
|
Terminal B calls A at 5:55 pm. A answers the call and goes to connected state.
|
GC1 CallActiveEv
GC1 ConnCreatedEv [Addr B]
GC1 ConnConnectedEv [Addr B]
GC1 CallCtlConnInitiatedEv [Addr B]
- - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - -
GC1 ConnCreatedEv [Addr A]
GC1 ConnInProgressEv [Addr A]
GC1 CallCtlConnOfferedEv [Addr A]
- - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - -
GC1 ConnConnectedEv [Addr A]
GC1 CallCtlConnEstablishedEv [Addr A]
GC1 TermConnActiveEv [Term A]
GC1 CallCtlTermConnTalkingEv [Term A]
|
CiscoProvTerminalUnRegisteredEv.getReason() = CiscoProvTerminalUnRegisteredEv. ENERGYWISE_POWER_SAVE_PLUS
CiscoTermOutOfServiceEv.getCause() = CiscoOutOfServiceEv.CAUSE_ENERGYWISE_POWER_SAVE_PLUS
CiscoAddrOutOfServiceEv.getCause() = CiscoOutOfServiceEv.CAUSE_ENERGYWISE_POWER_SAVE_PLUS
|
At 6:00 pm Deep Sleep time is enabled but the call does not get dropped and remains active.
|
|
|
The user disconnects the call from the phone at 6:10 PM and the idle timer (set for 10 minutes) starts.
|
GC1 TermConnDroppedEv [Term B]
GC1 CallCtlTermConnDroppedEv [Term B]
GC1 ConnDisconnectedEv [Addr B]
GC1 CallCtlConnDisconnectedEv [Addr B]
GC1 CallInvalidEv
|
|
There is no action on phone A for the next 10 minutes. So at 6:20 pm, after the idle timer has expired, the terminal enters Deep Sleep mode and unregisters from the Cisco Unified CM.
|
[Term B] CiscoProvTerminalUnRegisteredEv
[Term B] CiscoTermOutOfServiceEv
[Addr B] CiscoAddrOutOfServiceEv
|
CiscoProvTerminalUnRegisteredEv.getReason() = CiscoProvTerminalUnRegisteredEv. ENERGYWISE_POWER_SAVE_PLUS
CiscoTermOutOfServiceEv.getCause() = CiscoOutOfServiceEv.CAUSE_ENERGYWISE_POWER_SAVE_PLUS
CiscoAddrOutOfServiceEv.getCause() = CiscoOutOfServiceEv. CAUSE_ENERGYWISE_POWER_SAVE_PLUS
|
External Call Control
You should assume that all devices in the following use cases are obsereved, unless explicilty stated otherwise in the use case description.
The first few use cases go through the full event series for the basic call setup. After the first three or four, the use cases leave this part out, as it is standard for most of the use cases. If you do not see the basic call event series at the beginning of a use case, you can assume that it was intended to have happened successfully before the first event in the use case.
The last column in the use cases, that specifies the call info for a various stage of the use case, will initially have the full method invocation to retrieve the call information, for example CiscoCall.getModifiedCallingParty(). After the first three or four uses cases, only the method name is specified, such as .getModifiedCallingParty(). You can assume that this is to be prefixed with CiscoCall unless explicitly stated otherwise, such as for the CiscoCallChangeEvs.
Use Cases for BasicCall
Basic Call initiated from JTAPI / Phone
Configuration:
Phone A, B are in cluster devices.
Procedure:
Application invokes connect() at A to call B, or physical phone for A dials the number for B.
Actions
|
Events
|
Call Info
|
A initiates call to B
Connection of A created, called party info set
|
GC1-CallActiveEvent
GC1-ConnCreatedEvent-A
GC1-ConnConnectedEvent-A
GC1-CallCtlConnInitiatedEv-A
GC1-TermConnCreatedEvent
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv-A
GC1-CallCtlConnDialingEv-A
GC1-CallCtlConnEstablishedEv-A
|
CiscoCall.getCurrentCallingAddress() = A,
CiscoCall.getCallingAddress() = A,
CiscoCall.getModifiedCalledAddress() = "",
CiscoCall.getCalledAddress() = "",
CiscoCall.getCurrentCallingTerminal()= Terminal of A. CiscoCall.getCurrentCalledTerminal() = null
CiscoCall.getCurrntCallingAddress() = A,
CiscoCall.getCallingAddress() = A,
CiscoCall.getModifiedCalledAddress() = "",
CiscoCall.getCalledAddress() = "",
CiscoCall.getCurrentCallingTerminal()=Terminal of A. CiscoCall.getCurrentCalledTerminal() = null
CiscoCall.getModifiedCallingAddress() = A,
CiscoCall getCallingAddress() = A,
CiscoCall getModifiedCalledAddress() = B,
CiscoCall getCalledAddress() = B,
CiscoCall getCurrentCallingTerminal()=Terminal of A.
CiscoCall getCurrentCalledTerminal() = null
|
Connection of B created
B starts ringing
B Answers
|
GC1-ConnCreatedEvent-B
GC1-ConnInprogressEvent-B
GC1-CallCtlConnOfferedEv-B
GC1-ConnAlertingEvent-B
GC1-CallCtlConnAlertingEv-B
GC1-TermConnCreatedEvent
GC1-TermConnRingingEvent
GC1-CallCtlTermConnRingingEv-B
GC1-ConnConnectedEvent-B
GC1-CallCtlConnEstablishedEv-B
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv
|
CiscoCall.getModifiedCallingAddress() = A,
CiscoCall getCallingAddress() = A,
CiscoCall getModifiedCalledAddress() = B,
CiscoCall getCalledAddress() = B,
CiscoCall getCurrentCallingTerminal()=Terminal of A.
CiscoCall getCurrentCalledTerminal() = null
CiscoCall.getModifiedCallingAddress()= A,
CiscoCall.getCallingAddress()= A,
CiscoCall.getModifiedCalledAddress()= B,
CiscoCall.getCalledAddress() = B,
CiscoCall.getCurrentCallingTerminal()=Terminal of A.
CiscoCall.getCurrentCalledTerminal() = Terminal of B
|
Use Cases for Calls Going through Translation Pattern with CEPN Info in Cc Signals
Basic Call initiated from JTAPI to the DN with Translation Pattern configured to transform called party
Configuration:
Phone A, B are in cluster devices.
B has a translation pattern configured where called party get transformed to B1.
Procedure:
Application invokes connect() at A to call B.
Actions
|
Events
|
Call Info
|
A initiates call to B
Connection of A created,
|
GC1-CallActiveEvent
GC1-ConnCreatedEvent-A
GC1-ConnConnectedEvent-A
GC1-CallCtlConnInitiatedEv-A
GC1-TermConnCreatedEvent
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv-A
GC1-CallCtlConnDialingEv-A
GC1-CallCtlConnEstablishedEv-A
|
CiscoCall.getModifiedCallingAddress() = A,
CiscoCall.getCallingAddress() = A,
CiscoCall.getModifiedCalledAddress() = "",
CiscoCall.getCalledAddress() = "",
CiscoCall.getCurrentCallingTerminal()= Terminal of A. CiscoCall.getCurrentCalledTerminal() = null
CiscoCall.getModifiedCallingAddress() = A,
CiscoCall.getCallingAddress() = A,
CiscoCall.getModifiedCalledAddress() = "",
CiscoCall.getCalledAddress() = "",
CiscoCall.getCurrentCallingTerminal()=Terminal of A. CiscoCall.getCurrentCalledTerminal() = null
CiscoCall.getModifiedCallingAddress() = A,
CiscoCall.getCallingAddress() = A,
CiscoCall.getModifiedCalledAddress() = B1,
CiscoCall.getCalledAddress() = B1,
CiscoCall.getCurrentCallingTerminal()=Terminal of A.
CiscoCall.getCurrentCalledTerminal() = null
|
Connection of B1 created
B1 starts ringing
B1 Answers
|
GC1-ConnCreatedEvent-B1
GC1-ConnInprogressEvent-B1
GC1-CallCtlConnOfferedEv-B1
GC1-ConnAlertingEvent-B1
GC1-CallCtlConnAlertingEv-B1
GC1-TermConnCreatedEvent
GC1-TermConnRingingEvent
GC1-CallCtlTermConnRingingEv-B1
GC1-ConnConnectedEvent-B1
GC1-CallCtlConnEstablishedEv-B1
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv
|
CiscoCall.getModifiedCallingAddress() = A,
CiscoCall.getCallingAddress() = A,
CiscoCall.getModifiedCalledAddress() = "",
CiscoCall.getCalledAddress() = "",
CiscoCall.getCurrentCallingTerminal()= Terminal of A. CiscoCall.getCurrentCalledTerminal() = null
CiscoCall.getCurrentCallingAddress()= A,
CiscoCall.getCallingAddress()= A,
CiscoCall.getCurrentCalledAddress()= B1,
CiscoCall.getCalledAddress() = B1,
CiscoCall.getCurrentCallingTerminal()=Terminal of A.
CiscoCall.getCurrentCalledTerminal() = Terminal of B1
|
Basic Call initiated from JTAPI to the DN with Translation Pattern configured to transform calling party
Configuration:
Phone A, B are in cluster devices.
B has a translation pattern configured where calling party gets transformed to A1.
Procedure:
Application invokes connect() at A to call B.
Action
|
Events
|
Call Info
|
A initiates call to B
Connection of A created,
Connection of B created
B starts ringin
|
GC1-CallActiveEvent
GC1-ConnCreatedEvent-A
GC1-ConnConnectedEvent-A
GC1-CallCtlConnInitiatedEv-A
GC1-TermConnCreatedEvent
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv-A
GC1-CallCtlConnDialingEv-A
GC1-CallCtlConnEstablishedEv-A
GC1-ConnCreatedEvent-B
GC1-ConnInprogressEvent-B
GC1-CallCtlConnOfferedEv-B
GC1-ConnAlertingEvent-B
GC1-CallCtlConnAlertingEv-B
GC1-TermConnCreatedEvent
GC1-TermConnRingingEvent
GC1-CallCtlTermConnRingingEv-B
|
CiscoCall.getModifiedCallingAddress() = A,
CiscoCall.getCallingAddress() = A,
CiscoCall.getModifiedCalledAddress() = "",
CiscoCall.getCalledAddress() = "",
CiscoCall.getCurrentCallingTerminal()= Terminal of A. CiscoCall.getCurrentCalledTerminal() = null
CiscoCall.getModifiedCallingAddress() = A,
CiscoCall.getCallingAddress() = A,
CiscoCall.getModifiedCalledAddress() = "",
CiscoCall.getCalledAddress() = "",
CiscoCall.getCurrentCallingTerminal()=Terminal of A. CiscoCall.getCurrentCalledTerminal() = null
CiscoCall.getModifiedCallingAddress() = A1,
CiscoCall getCallingAddress() = A,
CiscoCall getCurrentCallingAddress() = A,
CiscoCall getModifiedCalledAddress() = B,
CiscoCall getCalledAddress() = B,
CiscoCall getCurrentCallingTerminal()=Terminal of A.
CiscoCall.getCurrentCalledTerminal() = null
|
B Answers
|
GC1-ConnConnectedEvent-B
GC1-CallCtlConnEstablishedEv-B
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv
|
CiscoCall.getModifiedCallingAddress()= A1,
CiscoCall.getCallingAddress()= A,
CiscoCall.getModifiedCalledAddress()= B,
CiscoCall.getCalledAddress() = B,
CiscoCall.getCurrentCallingTerminal()=Terminal of A
CiscoCall.getCurrentCalledTerminal() = Terminal of B
|
Basic Call initiated from JTAPI to the DN with Translation Pattern configured to transform both calling and called parties
Configuration:
Phone A, B are in cluster devices.
B has a translation pattern configured where both calling and called parties get transformed to A1 and B1 respectively
Procedure:
Application invokes connect() at A to call B
Action
|
Events
|
Call Info
|
A initiates call to B
Connection of A created, called party info set
Connection of B1 created
B1 starts ringing
A gets CallStateChg
For Ringback
|
GC1-CallActiveEvent
GC1-ConnCreatedEvent-A
GC1-ConnConnectedEvent-A
GC1-CallCtlConnInitiatedEv-A
GC1-TermConnCreatedEvent
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv-A
GC1-CallCtlConnDialingEv-A
GC1-CallCtlConnEstablishedEv-A
GC1-ConnCreatedEvent-B
GC1-ConnInprogressEvent-B
GC1-CallCtlConnOfferedEv-B
GC1-ConnAlertingEvent-B
GC1-CallCtlConnAlertingEv-B
GC1-TermConnCreatedEvent
GC1-TermConnRingingEvent
GC1-CallCtlTermConnRingingEv-B
|
CiscoCall.getModifiedCallingAddress() = A,
CiscoCall.getCallingAddress() = A,
CiscoCall.getModifiedCalledAddress() = "",
CiscoCall.getCalledAddress() = "",
CiscoCall.getCurrentCallingTerminal()= Terminal of A. CiscoCall.getCurrentCalledTerminal() = null
CiscoCall.getModifiedCallingAddress() = A1,
CiscoCall.getCallingAddress() = A,
CiscoCall.getModifiedCalledAddress() = "",
CiscoCall.getCalledAddress() = "",
CiscoCall.getCurrentCallingTerminal()=Terminal of A. CiscoCall.getCurrentCalledTerminal() = null
CiscoCall.getModifiedCallingAddress() = A1,
CiscoCall getCallingAddress() = A,
CiscoCall getModifiedCalledAddress() = B1,
CiscoCall getCalledAddress() = B1,
CiscoCall getCurrentCallingTerminal()=Terminal of A.
CiscoCall.getCurrentCalledTerminal() = null
CiscoCall.getModifiedCallingAddress() = A1,
CiscoCall.getCallingAddress() = A,
CiscoCall.getModifiedCalledAddress() = B1,
|
B1 Answers
|
GC1-ConnConnectedEvent-B
GC1-CallCtlConnEstablishedEv-B
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv
|
CiscoCall.getCalledAddress() = B1,
CiscoCall.getCurrentCallingTerminal()=Terminal of A.
CiscoCall.getCurrentCalledTerminal() = null
CiscoCall.getModifiedCallingAddress()= A1,
CiscoCall.getCallingAddress()= A,
CiscoCall.getModifiedCalledAddress()= B1,
CiscoCall.getCalledAddress() = B1,
CiscoCall.getCurrentCallingTerminal()=Terminal of A.
CiscoCall.getCurrentCalledTerminal() = Terminal of B1
|
Called party redirects a call which has transformed calling and called parties
Configuration:
Phone A, B, C are in cluster devices.
B has a translation pattern configured where both calling and called parties get transformed to A1 and B1 respectively
Procedure:
Application invokes connect() at A to call B. B1 redirects the call in connected state.
Actions
|
Events
|
Call Info
|
A and B1 receive Connected Call State
(Basic Call)
B1 redirects the call to C
Connection for C is created
C rings
B1 gets dropped
A gets CallStateChg for Ringback
|
GC1-ConnConnectedEvent-B1
GC1-CallCtlConnEstablishedEv-B1
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv
GC1-ConnCreatedEvent-C
GC1-ConnInprogressEvent-C
GC1-CallCtlConnOfferedEv-C
GC1-ConnAlertingEvent-C
GC1-CallCtlConnAlertingEv-C
GC1-TermConnCreatedEvent
GC1-TermConnRingingEvent
GC1-CallCtlTermConnRingingEv
GC1-TermConnDroppedEv
GC1-CallCtlTermConnDroppedEv
GC1-ConnDisconnectedEvent-B1
GC1-CallCtlConnDisconnectedEv-B1
|
CiscoCall.getModifiedCallingAddress()= A1,
CiscoCall.getCallingAddress()= A,
CiscoCall.getModifiedCalledAddress()= B1,
CiscoCall.getCalledAddress() = B1,
CiscoCall.getCurrentCallingTerminal()=Terminal of A. CiscoCall.getCurrentCalledTerminal() = Terminal of B1
CiscoCall.getModifiedCallingAddress() = A1,
CiscoCall.getCallingAddress() = A,
CiscoCall.getModifiedCalledAddress() = C,
CiscoCall.getCalledAddress() = C,
CiscoCall.getLastRedirectedAddress() = B1,
CiscoCall.getCurrentCallingTerminal() = terminal of A.
CiscoCall.getCurrentCalledTerminal() = null
CiscoCall.getModifiedCallingAddress() = A1,
CiscoCall.getCallingAddress() = A,
CiscoCall.getModifiedCalledAddress() = C,
CiscoCall.getCalledAddress() = C,
CiscoCall.getLastRedirectedAddress() = B1,
CiscoCall.getCurrentCallingTerminal() = terminal of A.
CiscoCall.getCurrentCalledTerminal() = null
|
C Answers
|
GC1-ConnConnectedEvent-C
GC1-CallCtlConnEstablishedEv-C
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv
|
CiscoCall.getModifiedCallingAddress() = A1,
CiscoCall.getCallingAddress() = A,
CiscoCall.getModifiedCalledAddress() = C,
CiscoCall.getCalledAddress() = C,
CiscoCall.getLastRedirectedAddress() = B1,
CiscoCall.getCurrentCallingTerminal() = terminal of A.
CiscoCall.getCurrentCalledTerminal() = terminal of C
|
Called party which has transformed calling and called parties parks the call and receives a Park reminder call.
Configuration:
Phone A, B are in cluster devices. C is a park DN (also in cluster)
B has a translation pattern configured where both calling and called parties get transformed to A1 and B1 respectively
Procedure:
Application invokes connect() at A to call B. B1 answers and then B1 parks the call and after park reversion timer expiry receives the reminder call.
Actions
|
Events
|
Call Info
|
A and B1 receive Connected Call State
(Basic Call)
B1 Parks the call
Connection for C is created
B1 gets park reminder
B1 rings
|
... See use case 15.7.1.1.1 ...
GC1-ConnConnectedEvent-B1
GC1-CallCtlConnEstablishedEv-B1
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv
GC1-TermConnDroppedEv
GC1-CallCtlTermConnDroppedEv
GC1-ConnDisconnectedEvent-B1
GC1-CallCtlConnDisconnectedEv-B1
GC1-ConnCreatedEvent-C
GC1-ConnInprogressEvent-C
GC1-CallCtlConnQueuedEv-C
GC1-ConnCreatedEvent-B1
GC1-ConnInprogressEvent-B1
GC1-CallCtlConnOfferedEv-B1
GC1-ConnAlertingEvent-B1
GC1-CallCtlConnAlertingEv-B1
GC1-TermConnCreatedEvent
|
.getModifiedCallingAddress()= A1,
.getCallingAddress()= A,
.getModifiedCalledAddress()= B1,
.getCalledAddress() = B1,
.getCurrentCallingTerminal()=Terminal of A.
.getCurrentCalledTerminal() = Terminal of B1
.getModifiedCallingAddress() = A1,
.getCallingAddress() = A,
.getModifiedCalledAddress() = C,
.getCalledAddress() = C,
.getLastRedirectedAddress() = B1,
.getCurrentCallingTerminal() = terminal of A.
.getCurrentCalledTerminal() = null
.getModifiedCallingAddress() = A1,
.getCallingAddress() = A,
.getModifiedCalledAddress() = B1,
.getCalledAddress() = B1,
.getLastRedirectedAddress() = Park DN C,
.getCurrentCallingTerminal() = terminal of A.
.getCurrentCalledTerminal() = null
|
C gets dropped
B1 Answers
|
GC1-TermConnRingingEvent
GC1-CallCtlTermConnRingingEv
GC1-ConnDisconnectedEvent-C
GC1-CallCtlConnDisconnectedEv-C
GC1-ConnConnectedEvent-B1
GC1-CallCtlConnEstablishedEv-B1
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv
|
.getModifiedCallingAddress() = A1,
.getCallingAddress() = A,
.getModifiedCalledAddress() = B1,
.getCalledAddress() = B1,
.getLastRedirectedAddress() = Park DN C,
.getCurrentCallingTerminal() = terminal of A.
.getCurrentCalledTerminal() = terminal of B1
|
Calling party parks the call and receives a Park reminder call after a transformation from Called party translation pattern
Configuration:
Phone A, B are in cluster devices. C is a park DN
B has a translation pattern configured where both calling and called parties get transformed to A1 and B1 respectively
Procedure:
Application invokes connect() at A to call B. B1 answers and then A parks the call and after park reversion timer expiry receives the reminder call.
Actions
|
Events
|
Call Info
|
A and B1 receive Connected Call State
(Basic Call)
A Parks the call
Connection for C is created
A gets park reminder
A rings
|
GC1-ConnConnectedEvent-B1
GC1-CallCtlConnEstablishedEv-B1
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv
GC1-TermConnDroppedEv
GC1-CallCtlTermConnDroppedEv
GC1-ConnDisconnectedEvent-A
GC1-CallCtlConnDisconnectedEv-A
GC1-ConnCreatedEvent-C
GC1-ConnInprogressEvent-C
GC1-CallCtlConnQueuedEv-C
GC1-ConnCreatedEvent-A
GC1-ConnInprogressEvent-A
GC1-CallCtlConnOfferedEv-A
GC1-ConnAlertingEvent-A
GC1-CallCtlConnAlertingEv-A
GC1-TermConnCreatedEvent
GC1-TermConnRingingEvent
GC1-CallCtlTermConnRingingEv
|
.getModifiedCallingAddress()= A1,
.getCallingAddress()= A,
.getModifiedCalledAddress()= B1,
.getCalledAddress() = B1,
.getCurrentCallingTerminal()=Terminal of A.
.getCurrentCalledTerminal() = Terminal of B1
.getModifiedCallingAddress() = B1,
.getCallingAddress() = B1,
.getModifiedCalledAddress() = C,
.getCalledAddress() = C,
.getLastRedirectedAddress() = A,
.getCurrentCallingTerminal() = terminal of B1.
.getCurrentCalledTerminal() = null
.getModifiedCallingAddress() = B1,
.getCallingAddress() = B1,
.getModifiedCalledAddress() = A,
.getCalledAddress() = A,
.getLastRedirectedAddress() = Park DN C,
.getCurrentCallingTerminal() = terminal of B1
.getCurrentCalledTerminal() = null
|
C gets dropped
A Answers
|
GC1-ConnDisconnectedEvent-C
GC1-CallCtlConnDisconnectedEv-C
GC1-ConnConnectedEvent-A
GC1-CallCtlConnEstablishedEv-A
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv
|
.getModifiedCallingAddress() = B1,
.getCallingAddress() = B1,
.getModifiedCalledAddress() = A,
.getCalledAddress() = A,
.getLastRedirectedAddress() = Park DN C,
.getCurrentCallingTerminal() = terminal of B1.
.getCurrentCalledTerminal() = terminal of A
|
Caller redirects a call which has transformed calling and called parties
Configuration:
Phone A, B, C are in cluster devices.
B has a translation pattern configured where both calling and called parties get transformed to A1 and B1 respectively
Procedure:
Application invokes connect() at A to call B. A redirects the call in connected state.
Actions
|
Events
|
Call Info
|
A and B1 receive Connected Call State
(Basic Call)
A redirects the call to C
Connection for C is created
C rings
A gets dropped
B1 gets CallStateChg for Ringback
|
GC1-ConnConnectedEvent-B1
GC1-CallCtlConnEstablishedEv-B1
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv
GC1-ConnCreatedEvent-C
GC1-ConnInprogressEvent-C
GC1-CallCtlConnOfferedEv-C
GC1-ConnAlertingEvent-C
GC1-CallCtlConnAlertingEv-C
GC1-TermConnCreatedEvent
GC1-TermConnRingingEvent
GC1-CallCtlTermConnRingingEv
GC1-TermConnDroppedEv
GC1-CallCtlTermConnDroppedEv
GC1-ConnDisconnectedEvent-A
GC1-CallCtlConnDisconnectedEv-A
|
CiscoCall.getModifiedCallingAddress()= A1,
CiscoCall.getCallingAddress()= A,
CiscoCall.getModifiedCalledAddress()= B1,
CiscoCall.getCalledAddress() = B1,
CiscoCall.getCurrentCallingTerminal()=Terminal of A. CiscoCall.getCurrentCalledTerminal() = Terminal of B1
CiscoCall.getModifiedCallingAddress() = B1,
CiscoCall.getCallingAddress() = B1,
CiscoCall.getModifiedCalledAddress() = C,
CiscoCall.getCalledAddress() = C,
CiscoCall.getLastRedirectedAddress() = A,
CiscoCall.getCurrentCallingTerminal() = terminal of B1.
CiscoCall.getCurrentCalledTerminal() = null
CiscoCall.getModifiedCallingAddress() = B1,
CiscoCall.getCallingAddress() = B1,
CiscoCall.getModifiedCalledAddress() = C,
CiscoCall.getCalledAddress() = C,
CiscoCall.getLastRedirectedAddress() = A,
|
C Answers
|
GC1-ConnConnectedEvent-C
GC1-CallCtlConnEstablishedEv-C
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv
|
CiscoCall.getCurrentCallingTerminal() = terminal of B1.
CiscoCall.getCurrentCalledTerminal() = null
CiscoCall.getModifiedCallingAddress() = B1,
CiscoCall.getCallingAddress() = B1,
CiscoCall.getModifiedCalledAddress() = C,
CiscoCall.getCalledAddress() = C,
CiscoCall.getLastRedirectedAddress() = A,
CiscoCall.getCurrentCallingTerminal() = terminal of B1.
|
Called party transfers the call which has transformed calling and called parties
Configuration:
Phone A, B, C are in cluster devices.
B has a translation pattern configured where both calling and called parties get transformed to A1 and B1 respectively
Procedure:
Application invokes connect() at A to call B. B1 consult transfer the call to C.
Actions
|
Events
|
Call Info
|
A and B1 receive Connected Call State
(Basic Call)
B1 consults call to C
Connection for C is created (GC2)
C rings
C Answers
|
GC1-ConnConnectedEvent-B1
GC1-CallCtlConnEstablishedEv-B1
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv
CG1-CallCtlTermConnHeldEv
GC2-ConsultCallActiveEvent
GC2-ConnCreatedEvent-B1
GC2-ConnConnectedEvent-B1
GC2-CallCtlConnInitiatedEv-B1
GC2-TermConnCreatedEvent
GC2-TermConnActiveEvent
GC2-CallCtlTermConnTalkingEv
GC2-CallCtlConnDialingEv-B1
GC2-CallCtlConnEstablishedEv-B1
GC2-ConnCreatedEvent-C
GC2-ConnInprogressEvent-C
GC2-CallCtlConnOfferedEv-C
GC2-ConnAlertingEvent-C
GC2-CallCtlConnAlertingEv-C
GC2-TermConnCreatedEvent
GC2-TermConnRingingEvent
GC2-CallCtlTermConnRingingEv
|
.getModifiedCallingAddress()= A1,
.getCallingAddress()= A,
.getModifiedCalledAddress()= B1,
.getCalledAddress() = B1,
.getCurrentCallingTerminal()=Terminal of A.
.getCurrentCalledTerminal() = Terminal of B1
.getModifiedCallingAddress() = B1,
.getCallingAddress() = B1,
.getModifiedCalledAddress() = null,
.getCalledAddress() = null,
.getLastRedirectedAddress() =
.getCurrentCallingTerminal() = terminal of B1.
.getCurrentCalledTerminal() = null
.getModifiedCallingAddress() = B1,
.getCallingAddress() = B1,
.getModifiedCalledAddress() = C,
.getCalledAddress() = C,
.getLastRedirectedAddress() = null
.getCurrentCallingTerminal() = terminal of B1.
.getCurrentCalledTerminal() = null
|
| |
|
|
Transfer starts
Call Changes
|
GC2-ConnConnectedEvent-C
GC2-CallCtlConnEstablishedEv-C
GC2-TermConnActiveEvent
GC2-CallCtlTermConnTalkingEv
GC1-CiscoTermConnSelectChangedEv
GC2-CiscoTermConnSelectChangedEv
GC1-CiscoTransferStartEv
GC2-CiscoCallChangedEv
|
.getModifiedCallingAddress() = B1,
.getCallingAddress() = B1,
.getModifiedCalledAddress() = C,
.getCalledAddress() = C,
.getLastRedirectedAddress() = null
.getCurrentCallingTerminal() = terminal of B1.
.getCurrentCalledTerminal() = terminal of C
Ev.getOriginalCall = GC2 (OCall)
Ev.getSurvivingCall = GC1 (FCall)
OCall.getModifiedCallingAddress() = B1,
OCall.getCallingAddress() = B1,
OCall.getModifiedCalledAddress() = C,
OCall.getCalledAddress() = C,
OCall.getLastRedirectedAddress() =
OCall.getCurrentCallingTerminal()=terminal of B1
OCall.getCurrentCalledTerminal() = terminal of C
FCall.getModifiedCallingAddress() = A1,
FCall.getCallingAddress() = A,
FCall.getModifiedCalledAddress() = B1,
FCall.getCalledAddress() = B1,
FCall.getLastRedirectedAddress() =
FCall.getCurrentCallingTerminal()=terminal of A
FCall.getCurrentCalledTerminal() = terminal of B1
|
Connection for C is created (GC1)
C gets dropped (GC2)
B1 gets dropped
(GC1)
B1 gets dropped
(GC2)
GC2 Invalid
Transfer comple
|
GC1-ConnCreatedEvent-C
GC1-ConnConnectedEvent-C
GC1-CallCtlConnEstablishedEv-C
GC1-TermConnCreatedEvent
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv
GC2-TermConnDroppedEv
GC2-CallCtlTermConnDroppedEv
GC2-ConnDisconnectedEvent-C
GC2-CallCtlConnDisconnectedEv-C
GC1-TermConnDroppedEv
GC1-CallCtlTermConnDroppedEv
GC1-ConnDisconnectedEvent-B1
GC1-CallCtlConnDisconnectedEv-B1
GC2-TermConnDroppedEv
GC2-CallCtlTermConnDroppedEv
GC2-ConnDisconnectedEvent-B1
GC2-CallCtlConnDisconnectedEv-B1
GC2-CallInvalidEvent
GC2-CallObservationEndedEv
GC1-CiscoTransferEndEv
|
.getModifiedCallingAddress() = A1,
.getCallingAddress() = A,
.getModifiedCalledAddress() = C,
.getCalledAddress() = C,
.getLastRedirectedAddress() = B1
.getCurrentCallingTerminal() = terminal of A.
.getCurrentCalledTerminal() = terminal of C
|
Called party transfers the call which has transformed calling and called parties to a DN which matches the translation pattern with calling party transformation defined
Configuration:
Phone A, B, C are in cluster devices.
B has a translation pattern configured where both calling and called parties get transformed to A1 and B1 respectively
C matches the the translation pattern with calling party transformation to B2
Procedure:
Application invokes connect() at A to call B. B1 consult transfer the call to C.
Actions
|
Events
|
Call Info
|
A and B1 receive Connected Call State
(Basic Call)
B1 consults call to C
Connection for C is created (GC2)
C rings
C Answers
|
GC1-ConnConnectedEvent-B1
GC1-CallCtlConnEstablishedEv-B1
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv
CG1-CallCtlTermConnHeldEv
GC2-ConsultCallActiveEvent
GC2-ConnCreatedEvent-B1
GC2-ConnConnectedEvent-B1
GC2-CallCtlConnInitiatedEv-B1
GC2-TermConnCreatedEvent
GC2-TermConnActiveEvent
GC2-CallCtlTermConnTalkingEv
GC2-CallCtlConnDialingEv-B1
GC2-CallCtlConnEstablishedEv-B1
GC2-ConnCreatedEvent-C
GC2-ConnInprogressEvent-C
GC2-CallCtlConnOfferedEv-C
GC2-ConnAlertingEvent-C
GC2-CallCtlConnAlertingEv-C
GC2-TermConnCreatedEvent
GC2-TermConnRingingEvent
GC2-CallCtlTermConnRingingEv
GC2-ConnConnectedEvent-C
GC2-CallCtlConnEstablishedEv-C
GC2-TermConnActiveEvent
GC2-CallCtlTermConnTalkingEv
GC1-CiscoTermConnSelectChangedEv
GC2-CiscoTermConnSelectChangedEv
|
.getModifiedCallingAddress()= A1,
.getCallingAddress()= A,
.getModifiedCalledAddress()= B1,
.getCalledAddress() = B1,
.getCurrentCallingTerminal()=Terminal of A. .getCurrentCalledTerminal() = Terminal of B1
.getModifiedCallingAddress() = B2,
.getCallingAddress() = B1,
.getModifiedCalledAddress() = null,
.getCalledAddress() = null,
.getLastRedirectedAddress() =
.getCurrentCallingTerminal() = terminal of B1.
.getCurrentCalledTerminal() = null
.getModifiedCallingAddress() = B2,
.getCallingAddress() = B1,
.getModifiedCalledAddress() = C,
.getCalledAddress() = C,
.getLastRedirectedAddress() =
.getCurrentCallingTerminal() = terminal of B1.
.getCurrentCalledTerminal() = null
.getModifiedCallingAddress() = B2,
.getCallingAddress() = B1,
.getModifiedCalledAddress() = C,
|
Transfer starts Call Changes
|
GC1-CiscoTransferStartEv
GC2-CiscoCallChangedEv
|
.getCalledAddress() = C,
.getLastRedirectedAddress() = null
.getCurrentCallingTerminal() = terminal of B1.
.getCurrentCalledTerminal() = terminal of C
Ev.getOriginalCall = GC2 (OCall)
Ev.getSurvivingCall = GC1 (FCall)
OCall.getModifiedCallingAddress() = B2,
OCall.getCallingAddress() = B1,
OCall.getModifiedCalledAddress() = C,
OCall.getCalledAddress() = C,
OCall.getLastRedirectedAddress() =
OCall.getCurrentCallingTerminal()=terminal of B1
OCall.getCurrentCalledTerminal() = terminal of C
FCall.getModifiedCallingAddress() = A1,
FCall.getCallingAddress() = A,
FCall.getModifiedCalledAddress() = B1,
FCall.getCalledAddress() = B1,
FCall.getLastRedirectedAddress() =
FCall.getCurrentCallingTerminal()=terminal of A
FCall.getCurrentCalledTerminal() = terminal of B1
.getModifiedCallingAddress() = A1,
|
Connection for C is created (GC1)
C gets dropped (GC2)
B1 gets dropped (GC1)
B1 gets gropped(GC2)
GC2 Invalid
Transfer complete
|
GC1-ConnCreatedEvent-C
GC1-ConnConnectedEvent-C
GC1-CallCtlConnEstablishedEv-C
GC1-TermConnCreatedEvent
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv
GC2-TermConnDroppedEv
GC2-CallCtlTermConnDroppedEv
GC2-ConnDisconnectedEvent-C
GC2-CallCtlConnDisconnectedEv-C
GC1-TermConnDroppedEv
GC1-CallCtlTermConnDroppedEv
GC1-ConnDisconnectedEvent-B1
GC1-CallCtlConnDisconnectedEv-B1
GC2-TermConnDroppedEv
GC2-CallCtlTermConnDroppedEv
GC2-ConnDisconnectedEvent-B1
GC2-CallCtlConnDisconnectedEv-B1
GC2-CallInvalidEvent
GC2-CallObservationEndedEv
GC1-CiscoTransferEndEv
|
.getCallingAddress() = A,
.getModifiedCalledAddress() = C,
.getCalledAddress() = C,
.getLastRedirectedAddress() = B1
.getCurrentCallingTerminal() = terminal of A.
.getCurrentCalledTerminal() = terminal of C
|
Called party with transformed calling and called parties conferences a DN
Configuration:
Phone A, B, C are in cluster devices.
B has a translation pattern configured where both calling and called parties get transformed to A1 and B1 respectively
Procedure:
Application invokes connect() at A to call B. B1 consult conference the call to C.
Actions
|
Events
|
Call Info
|
A and B1 receive Connected Call State
(Basic Call)
B1 consults call to C
Connection for C is created (GC2)
C rings
C Answers
|
GC1-ConnConnectedEvent-B1
GC1-CallCtlConnEstablishedEv-B1
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv
GC1-CiscoTermConnSelectChangedEv
CG1-CallCtlTermConnHeldEv
GC2-CiscoConsultCallActiveEv
GC2-ConnCreatedEvent-B1
GC2-ConnConnectedEvent-B1
GC2-CallCtlConnInitiatedEv-B1
GC2-TermConnCreatedEvent
GC2-TermConnActiveEvent
GC2-CallCtlTermConnTalkingEv
GC2-CallCtlConnDialingEv-B1
GC2-CallCtlConnEstablishedEv-B1
GC2-ConnCreatedEvent-C
GC2-ConnInprogressEvent-C
GC2-CallCtlConnOfferedEv-C
GC2-ConnAlertingEvent-C
GC2-CallCtlConnAlertingEv-C
GC2-TermConnCreatedEvent
GC2-TermConnRingingEvent
GC2-CallCtlTermConnRingingEv
GC2-ConnConnectedEvent-C
GC2-CallCtlConnEstablishedEv-C
GC2-TermConnActiveEvent
GC2-CallCtlTermConnTalkingEv
|
.getModifiedCallingAddress()= A1,
.getCallingAddress()= A,
.getModifiedCalledAddress()= B1,
.getCalledAddress() = B1,
.getCurrentCallingTerminal()=Terminal of A. .getCurrentCalledTerminal() = Terminal of B1
.getModifiedCallingAddress() = B1,
.getCallingAddress() = B1,
.getModifiedCalledAddress() = null,
.getCalledAddress() = null,
.getLastRedirectedAddress() =
.getCurrentCallingTerminal() = terminal of B1.
.getCurrentCalledTerminal() = null
.getModifiedCallingAddress() = B1,
.getCallingAddress() = B1,
.getModifiedCalledAddress() = C,
.getCalledAddress() = C,
.getLastRedirectedAddress() =
.getCurrentCallingTerminal() = terminal of B1.
.getCurrentCalledTerminal() = null
.getModifiedCallingAddress() = B1,
.getCallingAddress() = B1,
.getModifiedCalledAddress() = C,
.getCalledAddress() = C,
|
Conference Starts
B1 gets dropped (GC2)
|
GC1-CiscoConferenceStartEv
GC2-TermConnDroppedEv
GC2-CallCtlTermConnDroppedEv
GC2-ConnDisconnectedEvent-B1
GC2-CallCtlConnDisconnectedEv-B1
GC1-CiscoTermConnSelectChangedEv
GC1-CallCtlTermConnTalkingEv
GC2-CiscoCallChangedEv
|
.getLastRedirectedAddress() =
.getCurrentCallingTerminal() = terminal of B1.
.getCurrentCalledTerminal() = terminal of C
Ev.getOriginalCall = GC2 (OCall)
Ev.getSurvivingCall = GC1 (FCall)
OCall.getModifiedCallingAddress() = B1,
OCall.getCallingAddress() = B1,
OCall.getModifiedCalledAddress() = C,
OCall.getCalledAddress() = C,
OCall.getLastRedirectedAddress() =
OCall.getCurrentCallingTerminal()=terminal of B1
OCall.getCurrentCalledTerminal() = terminal of C
FCall.getModifiedCallingAddress() = A1,
FCall.getCallingAddress() = A,
FCall.getModifiedCalledAddress() = B1,
FCall.getCalledAddress() = B1,
FCall.getLastRedirectedAddress() =
FCall.getCurrentCallingTerminal()=terminal of A
FCall.getCurrentCalledTerminal() = terminal of B1
|
Connection for C is created (GC1)
C gets dropped (GC2)
GC2 invalid
Conferece Ends
|
GC1-ConnCreatedEvent-C
GC1-ConnConnectedEvent-C *
GC1-CallCtlConnEstablishedEv-C
GC1-TermConnCreatedEvent
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv
GC2-TermConnDroppedEv-C
GC2-CallCtlTermConnDroppedEv
GC2-ConnDisconnectedEvent-C
GC2-CallCtlConnDisconnectedEv-C
GC2-CallInvalidEvent
GC2-CallObservationEndedEv
GC1-CiscoConferenceEndEv
|
.getModifiedCallingAddress() = A1,
.getCallingAddress() = A,
.getModifiedCalledAddress() = null,
.getCalledAddress() = C,
.getLastRedirectedAddress() = B1
.getCurrentCallingTerminal() = terminal of A.
.getCurrentCalledTerminal() = null
|
Called party with transformed calling and called parties conferences a DN which matches the translation pattern with calling party transformation defined.
Configuration:
Phone A, B, C are in cluster devices.
B has a translation pattern configured where both calling and called parties get transformed to A1 and B1 respectively
C has a translation pattern configured where calling party gets transformed to B2.
Procedure:
Application invokes connect() at A to call B. B1 consult conference the call to C.
Actions
|
Events
|
Call Info
|
A and B1 receive Connected Call State
(Basic Call)
B1 consults call to C
Connection for C is created (GC2)
C rings
C Answers
|
GC1-ConnConnectedEvent-B1
GC1-CallCtlConnEstablishedEv-B1
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv
GC1-CiscoTermConnSelectChangedEv
CG1-CallCtlTermConnHeldEv
GC2-CiscoConsultCallActiveEv
GC2-ConnCreatedEvent-B1
GC2-ConnConnectedEvent-B1
GC2-CallCtlConnInitiatedEv-B1
GC2-TermConnCreatedEvent
GC2-TermConnActiveEvent
GC2-CallCtlTermConnTalkingEv
GC2-CallCtlConnDialingEv-B1
GC2-CallCtlConnEstablishedEv-B1
GC2-ConnCreatedEvent-C
GC2-ConnInprogressEvent-C
GC2-CallCtlConnOfferedEv-C
GC2-ConnAlertingEvent-C
GC2-CallCtlConnAlertingEv-C
GC2-TermConnCreatedEvent
GC2-TermConnRingingEvent
GC2-CallCtlTermConnRingingEv
|
.getModifiedCallingAddress()= A1,
.getCallingAddress()= A,
.getModifiedCalledAddress()= B1,
.getCalledAddress() = B1,
.getCurrentCallingTerminal()=Terminal of A. .getCurrentCalledTerminal() = Terminal of B1
.getModifiedCallingAddress() = B1,
getCallingAddress() = B1,
.getModifiedCalledAddress() = null,
.getCalledAddress() = null,
.getLastRedirectedAddress() =
.getCurrentCallingTerminal() = terminal of B1.
.getCurrentCalledTerminal() = null
.getModifiedCallingAddress() = B2,
.getCallingAddress() = B1,
.getModifiedCalledAddress() = C,
.getCalledAddress() = C,
.getLastRedirectedAddress() =
.getCurrentCallingTerminal() = terminal of B1.
.getCurrentCalledTerminal() = null
|
Conference Starts
B1 gets dropped (GC2)
|
GC2-ConnConnectedEvent-C
GC2-CallCtlConnEstablishedEv-C
GC2-TermConnActiveEvent
GC2-CallCtlTermConnTalkingEv
GC1-CiscoConferenceStartEv
GC2-TermConnDroppedEv
GC2-CallCtlTermConnDroppedEv
GC2-ConnDisconnectedEvent-B1
GC2-CallCtlConnDisconnectedEv-B1
GC1-CiscoTermConnSelectChangedEv
GC1-CallCtlTermConnTalkingEv
GC2-CiscoCallChangedEv
|
.getModifiedCallingAddress() = B2,
.getCallingAddress() = B1,
.getModifiedCalledAddress() = C,
.getCalledAddress() = C,
.getLastRedirectedAddress() =
.getCurrentCallingTerminal() = terminal of B1.
.getCurrentCalledTerminal() = terminal of C
Ev.getOriginalCall = GC2 (OCall)
Ev.getSurvivingCall = GC1 (FCall)
OCall.getModifiedCallingAddress() = B2,
OCall.getCallingAddress() = B1,
OCall.getModifiedCalledAddress() = C,
OCall.getCalledAddress() = C,
OCall.getLastRedirectedAddress() =
OCall.getCurrentCallingTerminal()=terminal of B1
OCall.getCurrentCalledTerminal() = terminal of C
|
Connection for C is created (GC1)
C gets dropped (GC2)
GC2 invalid
Conferece Ends
|
GC1-ConnCreatedEvent-C *
GC1-ConnConnectedEvent-C
GC1-CallCtlConnEstablishedEv-C
GC1-TermConnCreatedEvent
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv
GC2-TermConnDroppedEv-C
GC2-CallCtlTermConnDroppedEv
GC2-ConnDisconnectedEvent-C
GC2-CallCtlConnDisconnectedEv-C
GC2-CallInvalidEvent
GC2-CallObservationEndedEv
GC1-CiscoConferenceEndEv
|
FCall.getModifiedCallingAddress() = A1,
FCall.getCallingAddress() = A,
FCall.getModifiedCalledAddress() = B1,
FCall.getCalledAddress() = B1,
FCall.getLastRedirectedAddress() =
FCall.getCurrentCallingTerminal()=terminal of A
FCall.getCurrentCalledTerminal() = terminal of B1
.getModifiedCallingAddress() = A1,
.getCallingAddress() = A,
.getModifiedCalledAddress() = null,
.getCalledAddress() = C,
.getLastRedirectedAddress() = B1
.getCurrentCallingTerminal() = terminal of A.
.getCurrentCalledTerminal() = null
|
WildCard Routepoint Interaction (Behavior Change)
WildCard RoutePoint redirects a basic incoming-call to IPPhone
Configuration:
Phone A, B are in cluster devices. 4XXX is a wildcard routepoint
Service parameter "Use WildCard pattern in CTI Call Info" is set to true.
Procedure:
Application invokes connect() at A to call 4000. 4XXX redirects the call to B.
Actions
|
Events
|
Call Info
|
A initiates call to 4000
Connection of A created, called party info set
Connection of 4XXX created
4XXX Redirects to B
Connection for B created
B is ringing
|
GC1-CallActiveEvent
GC1-ConnCreatedEvent-A
GC1-ConnConnectedEvent-A
GC1-CallCtlConnInitiatedEv-A
GC1-TermConnCreatedEvent
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv-A
GC1-CallCtlConnDialingEv-A
GC1-CallCtlConnEstablishedEv-A
GC1-ConnCreatedEvent-4XXX
GC1-ConnInprogressEvent-4XXX
GC1-CallCtlConnOfferedEv-4XXX
GC1-ConnAlertingEvent-4XXX
GC1-ConnCreatedEvent-B
GC1-ConnInprogressEvent-B
GC1-CallCtlConnOfferedEv-B
GC1-ConnAlertingEvent-B
GC1-CallCtlConnAlertingEv-B
GC1-TermConnCreatedEvent
|
.getModifiedCallingAddress() = A,
.getCallingAddress() = A,
.getModifiedCalledAddress() = "",
.getCalledAddress() = "",
.getCurrentCallingTerminal()= Terminal of A.
.getCurrentCalledTerminal() = null
.getModifiedCallingAddress() = A,
.getCallingAddress() = A,
.getModifiedCalledAddress() = "",
.getCalledAddress() = "",
.getCurrentCallingTerminal()=Terminal of A.
.getCurrentCalledTerminal() = null
.getModifiedCallingAddress() = A,
.getCurrentCallingAddress() = A,
.getCallingAddress() = A,
.getModifiedCalledAddress() = 4000,
.getCalledAddress() = 4XXX,
.getCurrentCalledAddress() = 4XXX
.getCurrentCallingTerminal()=Terminal of A.
.getCurrentCalledTerminal() = null
.getModifiedCallingAddress() = A,
getCurrentCallingAddress() = A,
.getCallingAddress() = A,
.getModifiedCalledAddress() = B,
.getCurrentCalledAddress() = B
.getCalledAddress() = 4XXX,
|
4XXX gets dropped
B Answers
|
GC1-TermConnRingingEvent
GC1-CallCtlTermConnRingingEv
GC1-TermConnDroppedEv
GC1-CallCtlTermConnDroppedEv
GC1-ConnDisconnectedEvent-4XXX
GC1-CallCtlConnDisconnectedEv-4XXX
GC1-ConnConnectedEvent-B
GC1-CallCtlConnEstablishedEv-B
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv
|
.getLastRedirectedAddress() = 4XXX,
.getCurrentCallingTerminal()=Terminal of A.
.getCurrentCalledTerminal()= null
.getModifiedCallingAddress() = A,
.getCurrentCallingAddress() = A,
.getCallingAddress() = A,
.getModifiedCalledAddress() = B,
.getCalledAddress() = 4XXX,
.getLastRedirectedAddress() = 4XXX,
.getCurrentCallingTerminal()= terminal of A.
.getCurrentCalledTerminal()=terminal of B
|
WildCard Routepoint Interaction (Original Behavior)
WildCard RoutePoint redirects a basic incoming-call to IPPhone
Notes / Caveats:
This configuration is not supported. This use case is only intended to show the call flow or events for the above use case with the Use WildCard pattern in CTI Call Info service parameter turned off. Applications should not count on this information to be correct, and to properly support Wildcard Routepoint scenarios, should look to adapting their applications so that they can support the new service parameter being enabled.
An important thing to note is that a connection is created for the dialed DN, 4000. This connection, as well as the connection of 4XXX is not dropped from the call until the redirect happens. This means that if a Wildcard DN is configured on a phone or device, you will see connections for the calling party, 4000, and 4XXX. This basic call will have three connections, which may confuse applications, which might believe it to be a conference call. CiscoCall.isConference() would still return false in this scenario. As stated in previous sections, this extra connection is created in error, and applications should not rely on this connection being there.
Configuration:
Phone A, B are in cluster devices. 4XXX is a wildcard routepoint
Service parameter "Use WildCard pattern in CTI Call Info" is set to false / OFF.
Procedure:
Application invokes connect() at A to call 4000. 4XXX redirects the call to B.
Actions
|
Events
|
Call Info
|
A initiates call to 4000
Connection of A created, called party info set
Connection of 4000 created
Connection of 4XXX created
|
GC1-CallActiveEvent
GC1-ConnCreatedEvent-A
GC1-ConnConnectedEvent-A
GC1-CallCtlConnInitiatedEv-A
GC1-TermConnCreatedEvent
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv-A
GC1-CallCtlConnDialingEv-A
GC1-CallCtlConnEstablishedEv-A
GC1-ConnCreatedEvent-4000
GC1-ConnInprogressEvent-4000
GC1-CallCtlConnOfferedEv-4000
GC1-ConnAlertingEvent-4000
GC1-ConnCreatedEvent-4XXX
GC1-ConnInprogressEvent-4XXX
GC1-CallCtlConnOfferedEv-4XXX
|
.getModifiedCallingAddress() = A,
.getCurrentCallingAddress() = A,
.getCallingAddress() = A,
.getModifiedCalledAddress() = "",
.getCurrentCalledAddress() = "",
.getCalledAddress() = "",
.getCurrentCallingTerminal()= Terminal of A.
.getCurrentCalledTerminal() = null
.getModifiedCallingAddress() = A,
.getCurrentCallingAddress() = A,
.getCallingAddress() = A,
.getModifiedCalledAddress() = "",
.getCurrentCalledAddress() = "",
.getCalledAddress() = "",
.getCurrentCallingTerminal()=Terminal of A.
.getCurrentCalledTerminal() = null
.getModifiedCallingAddress() = A,
.getCurrentCallingAddress() = A,
.getCallingAddress() = A,
.getModifiedCalledAddress() = 4000,
.getCurrentCalledAddress() = 4000,
.getCalledAddress() = 4000,
.getCurrentCallingTerminal()=Terminal of A.
.getCurrentCalledTerminal() = null
|
4XXX Redirects to B
Connection for B created
B is ringing
B Answers
|
GC1-ConnAlertingEvent-4XXX
(note: 3 connections on the 2 party call.)
GC1-TermConnDroppedEv
GC1-CallCtlTermConnDroppedEv
GC1-ConnDisconnectedEvent-4XXX
GC1-CallCtlConnDisconnectedEv-4XXX
GC1-TermConnDroppedEv
GC1-CallCtlTermConnDroppedEv
GC1-ConnDisconnectedEvent-4000
GC1-CallCtlConnDisconnectedEv-4000
GC1-ConnCreatedEvent-B
GC1-ConnInprogressEvent-B
GC1-CallCtlConnOfferedEv
GC1-ConnAlertingEvent-B
GC1-CallCtlConnAlertingEv-B
GC1-TermConnCreatedEvent
GC1-TermConnRingingEvent
GC1-CallCtlTermConnRingingEv
GC1-ConnConnectedEvent-B
GC1-CallCtlConnEstablishedEv-B
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv
|
.getModifiedCallingAddress() = A,
.getCurrentCallingAddress() = A,
.getCallingAddress() = A,
.getModifiedCalledAddress() = 4000,
.getCurrentCalledAddress() = 4000,
.getCalledAddress() = 4000,
.getCurrentCallingTerminal()=Terminal of A.
.getCurrentCalledTerminal() = null
.getModifiedCallingAddress() = A,
.getCallingAddress() = A,
.getModifiedCalledAddress() = B,
.getCurrentCalledAddress() = B
.getCalledAddress() = 4000,
.getLastRedirectedAddress() = 4000,
.getCurrentCallingTerminal()=Terminal of A.
.getCurrentCalledTerminal()= null
.getModifiedCallingAddress() = A,
.getCallingAddress() = A,
.getModifiedCalledAddress() = B,
.getCurrentCalledAddress() = B
.getCalledAddress() = 4000,
.getLastRedirectedAddress() = 4000,
.getCurrentCallingTerminal()= terminal of A.
.getCurrentCalledTerminal()= terminal of B
|
External Call Control Use Cases
External Call Control on Translation Pattern and CEPM returns "continue"
Configuration:
Phone A, B are in cluster devices. B matches the translation pattern BXXX which has calling and called party transformation defined to transform A to A1 and B to B1 and External Call Control is also enabled.
Procedure:
Application invokes connect() at A to call B.
Result:
Dialed number B matches the translation pattern BXXX which has External Call Control enabled. This takes precedence and CUCM requests CEPM to get routing rule for B.
CEPM returns continue and hence call will be presented to B1 (see use case above "15.7.1.2.1 - Basic Call initiated from JTAPI to the DN with Translation Pattern configured to transform called party".
External Call Control on Translation Pattern and CEPM returns "divert"
Configuration:
Phone A, B are in cluster devices. B matches the translation pattern BXXX which has calling and called party transformation defined to transform A to A1 and B to B1 and External Call Control is also enabled.
Procedure:
Application invokes connect() at A to call B.
Result:
Dialed number B matches the translation pattern BXXX which has External Call Control enabled. This takes precedence and CUCM requests CEPM to get routing rule for B.
CEPM returns divert to C.
Actions
|
Events
|
Call Info
|
A initiates call to B
Connection of A created, called party info set
CEPM Returns divert to C
Connection of C created
C starts ringing
|
GC1-CallActiveEvent
GC1-ConnCreatedEvent-A
GC1-ConnConnectedEvent-A
GC1-CallCtlConnInitiatedEv-A
GC1-TermConnCreatedEvent
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv-A
GC1-CallCtlConnDialingEv-A
GC1-CallCtlConnEstablishedEv-A
GC1-ConnCreatedEvent-C
GC1-ConnInprogressEvent-C
GC1-CallCtlConnOfferedEv-C
GC1-ConnAlertingEvent-C
GC1-CallCtlConnAlertingEv-C
GC1-TermConnCreatedEvent
|
.getModifiedCallingAddress() = A,
.getCallingAddress() = A,
.getModifiedCalledAddress() = "",
.getCalledAddress() = "",
.getCurrentCallingTerminal()= Terminal of A.
.getCurrentCalledTerminal() = null
.getModifiedCallingAddress() = A,
.getCallingAddress() = A,
.getModifiedCalledAddress() = "",
.getCalledAddress() = "",
.getCurrentCallingTerminal()=Terminal of A.
.getCurrentCalledTerminal() = null
.getModifiedCallingAddress() = A1,
.getCallingAddress() = A,
.getModifiedCalledAddress() = B1,
.getCurrentCalledAddress() = BXXX,
.getCalledAddress() = BXXX,
.getLastRedirectedAddress() = BXXX
.getCurrentCallingTerminal() = terminal of A.
.getCurrentCalledTerminal() = null
.getModifiedCallingAddress() = A1,
.getCallingAddress() = A,
.getModifiedCalledAddress() = C,
.getCurrentCalledAddress() = C,
|
C Answers
|
GC1-TermConnRingingEvent
GC1-CallCtlTermConnRingingEv-C
GC1-ConnConnectedEvent-C
GC1-CallCtlConnEstablishedEv-C
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv
|
.getCalledAddress() = BXXX,
.getLastRedirectedAddress() = BXXX
.getCurrentCallingTerminal() = terminal of A.
.getCurrentCalledTerminal() = null
.getModifiedCallingAddress() = A1,
.getCallingAddress() = A,
.getModifiedCalledAddress() = C,
.getCalledAddress() = BXXX,
.getLastRedirectedAddress() = B1
.getCurrentCallingTerminal() = terminal of A.
.getCurrentCalledTerminal() = terminal of C
|
External Call Control on Translation Pattern and CEPM returns <reject>
Configuration:
Phone A, B are in cluster devices. B matches the translation pattern BXXX which has calling and called party transformation defined to transform A to A1 and B to B1 and External Call Control is also enabled.
Procedure:
Application invokes connect() at A to call B.
Result:
Dialed number B matches the translation pattern BXXX which has External Call Control enabled. This takes precedence and CUCM requests CEPM to get routing rule for B. The routing rule for B says "Reject"<reject>
CEPM returns reject.
A receives ConnFailedEvent (cause=CtiCallRejected), ConnDisconnectedEv (cause=normal), CallInvalidEvent (caue=Normal).
Actions
|
Events
|
Call Info
|
A initiates call to B
Connection of A created,
CEPM Returns Reject
|
GC1-CallActiveEvent
GC1-ConnCreatedEvent-A
GC1-ConnConnectedEvent-A
GC1-CallCtlConnInitiatedEv-A
GC1-TermConnCreatedEvent
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv-A
GC1-CallCtlConnDialingEv-A
GC1-CallCtlConnEstablishedEv-A
GC1-ConnFailedEv-A
GC1-TermConnDroppedEv
GC1-CallCtlTermConnDroppedEv
GC1-ConnDisconnectedEvent-A
GC1-CallCtlConnDisconnectedEv-A
GC1-CallInvalidEvent
GC1-CallObservationEndedEv
|
.getModifiedCallingAddress() = A,
.getCallingAddress() = A,
.getModifiedCalledAddress() = "",
.getCalledAddress() = "",
.getCurrentCallingTerminal()= Terminal of A.
.getCurrentCalledTerminal() = null
.getModifiedCallingAddress() = A,
.getCallingAddress() = A,
.getModifiedCalledAddress() = "",
.getCalledAddress() = "",
.getCurrentCallingTerminal()=Terminal of A.
.getCurrentCalledTerminal() = null
Cause=CtiCallRejected
Cause=Normal
|
External Call Control on Translation Pattern and CEPM returns "continue" with modified calling and called parties.
Configuration:
Phone A, B are in cluster devices. B matches the translation pattern BXXX which has calling and called party transformation defined to transform A to A1 and B to B1 and External Call Control is also enabled.
Procedure:
Application invokes connect() at A to call B.
Result:
Dialed number B matches the translation pattern BXXX which has External Call Control enabled. This takes precedence and CUCM requests CEPM to get routing rule for B.
CEPM returns continue with ModifiedCalling= "MA" and ModifiedCalled = "MB"
Call will be extended to "C" (based on description in 8.1.6.1 - modified calling and modified called in divertTo routing directive, overrides the calling & called number transformation configured for translation pattern and the call is diverted to C)
Call Events:
Actions
|
Events
|
Call Info
|
A initiates call to B
Connection of A created, called party info set
CEPM Returns continue with modified calling/called
Connection of MBcreated
MB starts ringing
|
GC1-CallActiveEvent
GC1-ConnCreatedEvent-A
GC1-ConnConnectedEvent-A
GC1-CallCtlConnInitiatedEv-A
GC1-TermConnCreatedEvent
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv-A
GC1-CallCtlConnDialingEv-A
GC1-CallCtlConnEstablishedEv-A
GC1-ConnCreatedEvent-MB
GC1-ConnInprogressEvent-MB
GC1-CallCtlConnOfferedEv-MB
GC1-ConnAlertingEvent-MB
GC1-CallCtlConnAlertingEv-MB
GC1-TermConnCreatedEvent
GC1-TermConnRingingEvent
GC1-CallCtlTermConnRingingEv-MB
|
.getModifiedCallingAddress() = A,
.getCallingAddress() = A,
.getModifiedCalledAddress() = "",
.getCalledAddress() = "",
.getCurrentCallingTerminal()= Terminal of A.
.getCurrentCalledTerminal() = null
.getModifiedCallingAddress() = A1,
.getCallingAddress() = A,
.getModifiedCalledAddress() = "",
.getCalledAddress() = "",
.getCurrentCallingTerminal()=Terminal of A.
.getCurrentCalledTerminal() = null
.getModifiedCallingAddress() = MA,
.getCallingAddress() = A,
.getCurrentCallingAddress() = A
.getModifiedCalledAddress() = MB,
.getCurrentCalledAddess() = MB,
.getCalledAddress() = B1,
.getLastRedirectedAddress() =
.getCurrentCallingTerminal()=terminal of A.
.getCurrentCalledTerminal() = null
|
MBAnswers
|
GC1-ConnConnectedEvent-MB
GC1-CallCtlConnEstablishedEv-MB
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv
|
.getModifiedCallingAddress() = MA,
.getCallingAddress() = A,
.getModifiedCalledAddress() = MB,
.getCalledAddress() = MB,
.getLastRedirectedAddress() =
.getCurrentCallingTerminal() = terminal of A.
.getCurrentCalledTerminal() = terminal of MB
|
External Call Control on Translation Pattern and CEPM returns "divert" with modified calling and called parties
Configuration:
Phone A, B are in cluster devices. B matches the translation pattern BXXX which has calling and called party transformation defined to transform A to A1 and B to B1 and External Call Control is also enabled.
Procedure:
Application invokes connect() at A to call B.
Result:
Dialed number B matches the translation pattern BXXX which has External Call Control enabled. This takes precedence and CUCM requests CEPM to get routing rule for B.
CEPM returns divertTo=C, with ModifiedCalling= "MA" and ModifiedCalled = "MB"
Call will be extended to "C" (based on description in 8.1.6.1 - modified calling and modified called in divertTo routing directive, overrides the calling & called number transformation configured for translation pattern and the call is diverted to C)
Call Events:
Actions
|
Events
|
Call Info
|
A initiates call to B
Connection of A created, called party info set
CEPM Returns divert to C, modify Called/Calling
Connection of C created
C starts ringing
C Answers
|
GC1-CallActiveEvent
GC1-ConnCreatedEvent-A
GC1-ConnConnectedEvent-A
GC1-CallCtlConnInitiatedEv-A
GC1-TermConnCreatedEvent
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv-A
GC1-CallCtlConnDialingEv-A
GC1-CallCtlConnEstablishedEv-A
GC1-ConnCreatedEvent-C
GC1-ConnInprogressEvent-C
GC1-CallCtlConnOfferedEv-C
GC1-ConnAlertingEvent-C
GC1-CallCtlConnAlertingEv-C
GC1-TermConnCreatedEvent
GC1-TermConnRingingEvent
GC1-CallCtlTermConnRingingEv-C
GC1-ConnConnectedEvent-C
GC1-CallCtlConnEstablishedEv-C
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv
|
.getModifiedCallingAddress() = A,
.getCallingAddress() = A,
.getModifiedCalledAddress() = "",
.getCalledAddress() = "",
.getCurrentCallingTerminal()= Terminal of A.
.getCurrentCalledTerminal() = null
.getModifiedCallingAddress() = A1,
.getCallingAddress() = A,
.getModifiedCalledAddress() = "",
.getCalledAddress() = "",
.getCurrentCallingTerminal()=Terminal of A.
.getCurrentCalledTerminal() = null
.getModifiedCallingAddress() = MA,
.getCallingAddress() = A,
.getModifiedCalledAddress() = MB,
.getCurrentCalledAddress() = C
.getCalledAddress() = B1,
.getLastRedirectedAddress() = MB,
.getCurrentCallingTerminal() = terminal of A.
.getCurrentCalledTerminal() = null
.getModifiedCallingAddress() = MA,
.getCallingAddress() = A,
.getModifiedCalledAddress() = C,
|
Actions
|
Events
|
Call Info
|
| |
|
.getCalledAddress() = C,
.getLastRedirectedAddress() = MB,
.getCurrentCallingTerminal() = terminal of A.
.getCurrentCalledTerminal() = terminal of C
|
External Call Control on Translation Pattern and CEPM returns "divert" with modified calling and called parties with resetCallHistory flag = resetLastHop
Configuration:
Phone A, B are in cluster devices. B matches the translation pattern BXXX which has calling and called party transformation defined to transform A to A1 and B to B1 and External Call Control is also enabled.
Procedure:
Application invokes connect at A to call B.
Result:
Dialed number B matches the translation pattern BXXX which has External Call Control enabled. This takes precedence and CUCM requests CEPM to get routing rule for B.
CEPM returns divertTo=C, with ModifiedCalling= "MA" and ModifiedCalled = "MB", resetCallHistory= "resetLastHop"
Call will be extended to "C" (based on description in 8.1.6.1 - modified calling and modified called in divertTo routing directive, overrides the calling & called number transformation configured for translation pattern and the call is diverted to C)
Actions
|
Events
|
Call Info
|
A initiates call to B
Connection of A created, called party info set
CEPM Returns divert to C, modify Called/Calling
Connection of C created
C starts ringing
|
GC1-CallActiveEvent
GC1-ConnCreatedEvent-A
GC1-ConnConnectedEvent-A
GC1-CallCtlConnInitiatedEv-A
GC1-TermConnCreatedEvent
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv-A
GC1-CallCtlConnDialingEv-A
GC1-CallCtlConnEstablishedEv-A
GC1-ConnCreatedEvent-C
GC1-ConnInprogressEvent-C
GC1-CallCtlConnOfferedEv-C
GC1-ConnAlertingEvent-C
GC1-CallCtlConnAlertingEv-C
GC1-TermConnCreatedEvent
GC1-TermConnRingingEvent
GC1-CallCtlTermConnRingingEv-C
|
.getModifiedCallingAddress() = A,
.getCallingAddress() = A,
.getModifiedCalledAddress() = "",
.getCalledAddress() = "",
.getCurrentCallingTerminal()= Terminal of A.
.getCurrentCalledTerminal() = null
.getModifiedCallingAddress() = A1,
.getCallingAddress() = A,
.getModifiedCalledAddress() = B1,
.getCalledAddress() = B1,
.getCurrentCallingTerminal()=Terminal of A.
.getCurrentCalledTerminal() = null
.getModifiedCallingAddress() = MA,
.getCallingAddress() = A,
.getModifiedCalledAddress() = C,
.getCalledAddress() = B1,
.getLastRedirectedAddress() =
.getCurrentCallingTerminal() = terminal of A.
.getCurrentCalledTerminal() = null
|
C Answers
|
GC1-ConnConnectedEvent-C
GC1-CallCtlConnEstablishedEv-C
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv
|
.getModifiedCallingAddress() = MA,
.getCallingAddress() = A,
.getModifiedCalledAddress() = C,
.getCalledAddress() = B1,
.getLastRedirectedAddress() =
.getCurrentCallingTerminal() = terminal of A.
.getCurrentCalledTerminal() = terminal of C
|
External Call Control on Translation Pattern and CEPM returns "divert" with modified calling and called parties with resetCallHistory flag = resetAll
Configuration:
Phone A, B are in cluster devices. B matches the translation pattern BXXX which has calling and called party transformation defined to transform A to A1 and B to B1 and External Call Control is also enabled.
Procedure:
Application invokes connect() at A to call B.
Result:
Dialed number B matches the translation pattern BXXX which has External Call Control enabled. This takes precedence and CUCM requests CEPM to get routing rule for B.
CEPM returns divertTo= "C", with ModifiedCalling= "MA" and ModifiedCalled = "MB"
C has a userRule configured to DivertTo= "D" with ModifiedCalling = "MMA", ModifiedCalled = "MMB", resetCallHistory= "resetAll"
Call will be extended to "D"
Actions
|
Events
|
Call Info
|
A initiates call to B
Connection of A created, called party info set
CEPM Returns divert to C, modify Called/Calling
CEPM Returns divert to D, modify Called/Calling
Connection of D created
D starts ringing
|
GC1-CallActiveEvent
GC1-ConnCreatedEvent-A
GC1-ConnConnectedEvent-A
GC1-CallCtlConnInitiatedEv-A
GC1-TermConnCreatedEvent
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv-A
GC1-CallCtlConnDialingEv-A
GC1-CallCtlConnEstablishedEv-A
GC1-ConnCreatedEvent-D
GC1-ConnInprogressEvent-D
GC1-CallCtlConnOfferedEv-D
GC1-ConnAlertingEvent-D
GC1-CallCtlConnAlertingEv-D
GC1-TermConnCreatedEvent
GC1-TermConnRingingEvent
GC1-CallCtlTermConnRingingEv-D
|
.getModifiedCallingAddress() = A,
.getCallingAddress() = A,
.getModifiedCalledAddress() = "",
.getCalledAddress() = "",
.getCurrentCallingTerminal()= Terminal of A.
.getCurrentCalledTerminal() = null
.getModifiedCallingAddress() = A1,
.getCallingAddress() = A,
.getModifiedCalledAddress() = "",
.getCalledAddress() = "",
.getCurrentCallingTerminal()=Terminal of A.
.getCurrentCalledTerminal() = null
.getModifiedCallingAddress() = MMA,
.getCallingAddress() = A,
.getModifiedCalledAddress() = D,
.getCurrentCalledAddress() = D,
.getCalledAddress() = B1,
.getLastRedirectedAddress() =
.getCurrentCallingTerminal() = terminal of A.
.getCurrentCalledTerminal() = null
|
D Answers
|
GC1-ConnConnectedEvent-D
GC1-CallCtlConnEstablishedEv-D
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv
|
.getModifiedCallingAddress() = MMA,
.getCallingAddress() = A,
.getModifiedCalledAddress() = D,
.getCalledAddress() = D,
.getLastRedirectedAddress() =
.getCurrentCallingTerminal() = terminal of A.
.getCurrentCalledTerminal() = terminal of D
|
External Call Control on Translation Pattern and CEPM returns <reject> and service parameter CTI use Wildcard Pattern as calledPartyDN is set to false.
Configuration:
Phone A, B are in cluster devices. B matches the translation pattern BXXX which has calling and called party transformation defined to transform A to A1 and B to B1 and External Call Control is also enabled.
Procedure:
Application invokes connect() at A to call B.
Result:
Dialed number B matches the translation pattern BXXX which has External Call Control enabled. This takes precedence and CUCM requests CEPM to get routing rule for B. The routing rule for B says "Reject"<reject>
CEPM returns reject.
Jtapi throws platform exception to the application. A receives ConnFailedEvent (cause=CtiCallRejected), ConnDisconnectedEv (cause=normal), CallInvalidEvent (caue=Normal).
Actions
|
Events
|
Call Info
|
A initiates call to B
Connection of A created,
CEPM Returns Reject
|
GC1-CallActiveEvent
GC1-ConnCreatedEvent-A
GC1-ConnConnectedEvent-A
GC1-CallCtlConnInitiatedEv-A
GC1-TermConnCreatedEvent
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv-A
GC1-CallCtlConnDialingEv-A
GC1-CallCtlConnEstablishedEv-A
GC1-ConnFailedEv-A
Jtapi throws Exception: PlatformException
GC1-TermConnDroppedEv
GC1-CallCtlTermConnDroppedEv
GC1-ConnDisconnectedEvent-A
GC1-CallCtlConnDisconnectedEv-A
GC1-CallInvalidEvent
GC1-CallObservationEndedEv
|
.getModifiedCallingAddress() = A,
.getCallingAddress() = A,
.getModifiedCalledAddress() = "",
.getCalledAddress() = "",
.getCurrentCallingTerminal()= Terminal of A.
.getCurrentCalledTerminal() = null
.getModifiedCallingAddress() = A,
.getCallingAddress() = A,
.getModifiedCalledAddress() = "",
.getCalledAddress() = "",
.getCurrentCallingTerminal()=Terminal of A.
.getCurrentCalledTerminal() = null
Exception info: Could not meet post conditions of connect()
Cause=CtiCallRejected
Cause=Normal
|
Transfer and External Call Control with modified calling and called parties
Configuration:
Phone A, B are in cluster devices. B matches the translation pattern BXXX where External Call Contol is enabled.
Phone C and D does not match any translation pattern, and have no External Call Control defined.
Procedure:
Application invokes connect() at A to call B. CEPM returns divertTo=C, with ModifiedCalling= "MA" and ModifiedCalled = "MB".
C initiate transfer to D and completes the transfer.
Result:
Transfer is successfully completed
Actions
|
Events
|
Call Info
|
A initiates call to B
Connection of A created, called party info set
CEPM Returns divert to C, modify Called/Calling
Connection of C created
C starts ringing
|
GC1-CallActiveEvent
GC1-ConnCreatedEvent-A
GC1-ConnConnectedEvent-A
GC1-CallCtlConnInitiatedEv-A
GC1-TermConnCreatedEvent
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv-A
GC1-CallCtlConnDialingEv-A
GC1-CallCtlConnEstablishedEv-A
GC1-ConnCreatedEvent-C
GC1-ConnInprogressEvent-C
GC1-CallCtlConnOfferedEv-C
GC1-ConnAlertingEvent-C
GC1-CallCtlConnAlertingEv-C
GC1-TermConnCreatedEvent
GC1-TermConnRingingEvent
GC1-CallCtlTermConnRingingEv-C
|
.getModifiedCallingAddress() = A,
.getCallingAddress() = A,
.getModifiedCalledAddress() = "",
.getCalledAddress() = "",
.getCurrentCallingTerminal()= Terminal of A.
.getCurrentCalledTerminal() = null
.getModifiedCallingAddress() = A,
.getCallingAddress() = A,
.getModifiedCalledAddress() = B1,
.getCalledAddress() = B1,
.getLastRedirectedAddress() = null,
.getCurrentCallingTerminal() = terminal of A.
.getCurrentCalledTerminal() = null
.getModifiedCallingAddress() = MA,
.getCallingAddress() = A,
.getModifiedCalledAddress() = C,
.getCalledAddress() = B1,
.getLastRedirectedAddress() = MB
.getCurrentCallingTerminal() = terminal of A.
.getCurrentCalledTerminal() = null
|
C Answers
C consult transfer to D
Connection for C created (GC2)
Connection for D created (GC2)
D Answers
|
GC1-ConnConnectedEvent-C
GC1-CallCtlConnEstablishedEv-C
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv
CG1-CallCtlTermConnHeldEv
GC2-ConsultCallActiveEvent
GC2-ConnCreatedEvent-C
GC2-ConnConnectedEvent-C
GC2-CallCtlConnInitiatedEv-C
GC2-TermConnCreatedEvent
GC2-TermConnActiveEvent
GC2-CallCtlTermConnTalkingEv
GC2-CallCtlConnDialingEv-C
GC2-CallCtlConnEstablishedEv-C
GC2-ConnCreatedEvent-D
GC2-ConnInprogressEvent-D
GC2-CallCtlConnOfferedEv-D
GC2-ConnAlertingEvent-D
GC2-CallCtlConnAlertingEv-D
GC2-TermConnCreatedEvent
GC2-TermConnRingingEvent
GC2-CallCtlTermConnRingingEv
GC2-ConnConnectedEvent-D
GC2-CallCtlConnEstablishedEv-D
GC2-TermConnActiveEvent
GC2-CallCtlTermConnTalkingEv
|
.getModifiedCallingAddress() = MA,
.getCallingAddress() = A,
.getModifiedCalledAddress() = C,
.getCalledAddress() = C,
.getLastRedirectedAddress() = MB,
.getCurrentCallingTerminal() = terminal of A.
.getCurrentCalledTerminal() = terminal of C
.getModifiedCallingAddress() = C,
.getCallingAddress() = C,
.getModifiedCalledAddress() = "",
.getCalledAddress() = "",
.getLastRedirectedAddress() =
.getCurrentCallingTerminal() = terminal of C.
.getCurrentCalledTerminal() = null
.getModifiedCallingAddress() = C,
.getCallingAddress() = C,
.getModifiedCalledAddress() = D,
.getCalledAddress() = D,
.getLastRedirectedAddress() =
.getCurrentCallingTerminal() = terminal of C.
.getCurrentCalledTerminal() = null
.getModifiedCallingAddress() = C,
.getCallingAddress() = C,
.getModifiedCalledAddress() = D,
.getCalledAddress() = D,
|
Transfer Starts
D gets added to GC1
|
GC1-CiscoTermConnSelectChangedEv
GC2-CiscoTermConnSelectChangedEv
GC1-CiscoTransferStartEv
GC2-CiscoCallChangedEv
GC1-ConnCreatedEvent-D
GC1-ConnConnectedEvent-D
GC1-CallCtlConnEstablishedEv-D
GC1-TermConnCreatedEvent
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv
|
.getLastRedirectedAddress() =
.getCurrentCallingTerminal() = terminal of C.
.getCurrentCalledTerminal() = terminal of D
Ev.getOriginalCall = GC2 (OCall)
Ev.getSurvivingCall = GC1 (FCall)
OCall.getModifiedCallingAddress() = C,
OCall.getCallingAddress() = C,
OCall.getModifiedCalledAddress() = D,
OCall.getCalledAddress() = D,
OCall.getLastRedirectedAddress() =
OCall.getCurrentCallingTerminal()=terminal of C
OCall.getCurrentCalledTerminal() = terminal of D
FCall.getModifiedCallingAddress() = MA,
FCall.getCallingAddress() = A,
FCall.getModifiedCalledAddress() = C,
FCall.getCalledAddress() = C,
FCall.getLastRedirectedAddress() = MB
FCall.getCurrentCallingTerminal()=terminal of A
FCall.getCurrentCalledTerminal() = terminal of C
.getModifiedCallingAddress() = MA,
.getCallingAddress() = A,
.getModifiedCalledAddress() = D,
.getCurrentCalledAddress() = D,
.getCalledAddress() = B1,
.getLastRedirectedAddress() = C
.getCurrentCallingTerminal() = terminal of A.
.getCurrentCalledTerminal() = terminal of D
|
D gets dropped from GC2
C gets dropped from GC1
C gets dropped fromGC2
GC2 Invalid
Transfer ends
|
GC2-TermConnDroppedEv
GC2-CallCtlTermConnDroppedEv
GC2-ConnDisconnectedEvent-D
GC2-CallCtlConnDisconnectedEv-D
GC1-TermConnDroppedEv
GC1-CallCtlTermConnDroppedEv
GC1-ConnDisconnectedEvent-C
GC1-CallCtlConnDisconnectedEv-C
GC2-TermConnDroppedEv
GC2-CallCtlTermConnDroppedEv
GC2-ConnDisconnectedEvent-C
GC2-CallCtlConnDisconnectedEv-C
GC2-CallInvalidEvent
GC2-CallObservationEndedEv
GC1-CiscoTransferEndEv
|
|
Chaperone Use Cases
Call is redirected to a hunt list of chaperones and the chaperone enables call recording and conferences in the called party
Configuration:
A calls X, X's DN matches the translation pattern where External Call Control is enabled.
CEPM determines this call needs to have a chaperone's supervise. CEPM returns the permit decision with the obligation <divert>, destination HuntPilot B, which is a hunt pilot of chaperones, and a reason string "chaperone".
CUCM redirects the call to the hunt pilot B, and the chaperone C1 answers the call.
After talking to A briefly and discovered that A intended to talk to D, the chaperone C1 starts to establish a conference to D. C1 presses the conference softkey and dials D.
CUCM queries CEPM for the call, with calling user C1 with DN C1, and called user D with DN D.
CEPM returns the response with permit decision with <continue> call routing directive, since the policy server detects that the caller is the chaperone.
CUCM rings D's phone and D answers the call.
C1 presses the conference softkey again, and the conference is established.
The chaperone C1 presses the "record" softkey. This triggers the call recording being setup from C1's IP phone to the recorder.
As one of the steps to establish recording calls to the recorder, two recording calls setup are first sent to the BIB of C1's IP phone (INVITE for SIP phone and SCCP only the media message are involved). Note only one recording is shown in the picture.
As another step to establish the recording calls to the recorder, the two calls are then redirected to the recorder.
When the call recording is eablished successfully, the recording warning tone is playing to the C1's phone. The recording warning tone is enabled by setting service parameter "Play Recording Notification Tone To Observed Target" to True.
After comfirming the call recording is established successfully, the chaperone reads an announcement to both A and D and informs them the call is being recorded.
A and D starts to talk under the supervision of the chaperone.
NOTE:
Chaperones have limited abilities in what they can do on a call. The most obvious example is that they cannot put the call on hold, because they are required to be on the call at all times. To learn more about Chaperone limitations, please see the related sections of the External Call Control FFS.
Call Events:
Actions
|
Events
|
Call Info
|
A initiates call to X
Connection of A created,
Hunt connection created (see Hunt List section)
Connection of C1 created
C1 starts ringing
|
GC1-CallActiveEvent
GC1-ConnCreatedEvent-A
GC1-ConnConnectedEvent-A
GC1-CallCtlConnInitiatedEv-A
GC1-TermConnCreatedEvent
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv-A
GC1-CallCtlConnDialingEv-A
GC1-CallCtlConnEstablishedEv-A
GC1-CiscoHuntConnCreatedEv-B
GC1-ConnInProgressEv-B
GC1-CallCtlConnOfferedEv-B
GC1-ConnAlertingEv-B
GC1-CallCtlConnAlertingEv-B
GC1-ConnCreatedEvent-C1
GC1-ConnInprogressEvent-C1
GC1-CallCtlConnOfferedEv-C1
GC1-ConnAlertingEvent-C1
GC1-CallCtlConnAlertingEv-C1
|
.getModifiedCallingAddress() = A,
.getCallingAddress() = A,
.getModifiedCalledAddress() = "",
.getCalledAddress() = "",
.getCurrentCallingTerminal()= Terminal of A.
.getCurrentCalledTerminal() = null
.getModifiedCallingAddress() = A,
.getCallingAddress() = A,
.getModifiedCalledAddress() = "",
.getCalledAddress() = "",
.getLastRedirectedParty() = "",
.getCurrentCallingTerminal()=Terminal of A.
.getCurrentCalledTerminal() = null
.getModifiedCallingAddress() = A,
.getCallingAddress() = A,
.getModifiedCalledAddress() = B,
.getCurrentCalledAddress() = B
.getCalledAddress() = X,
.getLastRedirectedAddress() = X,
.getCurrentCallingTerminal() = terminal of A.
.getCurrentCalledTerminal() = null
.getModifiedCallingAddress() = A,
.getCallingAddress() = A,
.getModifiedCalledAddress() = B,
.getCurrentCalledAddress() = B
.getCalledAddress() = X,
.getLastRedirectedAddress() = X,
|
C1 Answers
C1 initiates conference
Conference consult call to D , D answers
|
GC1-TermConnCreatedEvent
GC1-TermConnRingingEvent
GC1-CallCtlTermConnRingingEv-C1
GC1-ConnConnectedEvent-C1
GC1-CallCtlConnEstablishedEv-C1
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv
GC1-CallCtlTermConnHeldEv-TermC1
GC2-CiscoConsultCallActiveEv
GC2-ConnCreatedEv-C1
GC2-CallCtlTermConnTalkingEv-TermC1
GC2-CallCtlConnDialingEv-C1
GC2-CallCtlConnEstablishedEv-C1
GC2-CiscoConnCreatedEv-D
GC2-ConnInProgressEv-D
GC2-CallCtlConnOfferedEv-D
GC2-ConnAlertingEv-D
|
.getCurrentCallingTerminal() = terminal of A.
.getCurrentCalledTerminal() = null
Reason = REASON_EXTERNALCALLCONTROL
.getModifiedCallingAddress() = A,
.getCallingAddress() = A,
.getModifiedCalledAddress() = B,
.getCurrentCalledAddress() = B
.getCalledAddress() = X,
.getLastRedirectedAddress() = X,
.getCurrentCallingTerminal() = terminal of A.
.getCurrentCalledTerminal() = terminal of C1
Reason = REASON_ EXTERNALCALLCONTROL
.getModifiedCallingAddress() = C1,
.getCallingAddress() = C1,
.getModifiedCalledAddress() =
.getCurrentCalledAddress() =
.getCalledAddress() =
.getLastRedirectedAddress() =
.getCurrentCallingTerminal() = terminal of C1
.getCurrentCalledTerminal() = null
.getModifiedCallingAddress() = C1,
.getCallingAddress() = C1,
.getModifiedCalledAddress() = D
.getCurrentCalledAddress() = D
.getCalledAddress() = D
|
Call 2 merges
Conn for D created on GC1
Call 2 cleaned up
Chaperone C1 starts recording
Chaperone C1 tries to redirect the call
|
GC2-CallCtlConnAlertingEv-D
GC2-ConnConnectedEv-D
GC2-CallCtlConnEstablishedEv D
CiscoCallChangedEv final call=GC1, consult call=GC2
GC1-ConnCreatedEv D
GC1-ConnConnectedEv D
GC1-CallCtlConnEstablishedEvD
GC2-ConnDisconntedEv C1
GC2-ConnDisconntedEv D
GC2-CallCtlConnDisconnectedEv C1
GC2-CallCtlConnDisconnectedEv D
GC2-CallCtlTermConnDroppedEv C1
GC2-CallCtlTermConnDroppedEv D
GC2-CallInvalidEv
Normal recording events when recording is initiated on a conference call will be received.
InvalidStateException : Did not meet pre conditions.
|
.getLastRedirectedAddress() =
.getCurrentCallingTerminal() = terminal of C1
.getCurrentCalledTerminal() = terminal of D
|
Call is redirected to a hunt list of chaperones and the chaperone conferences in the called party from application.
Configuration:
A calls X, X's DN matches the translation pattern where External Call Control is enabled.
CUCM redirect the call to the hunt pilot B. Call is intercepted by the chaperone and the chaperone C1 answers the call.
After talking to A briefly and discovered that A intended to talk to D, the chaperone C1 starts to establish a conference to D. C1 initiates a consult call to D. A new global call id GC2 is created.
CUCM rings D's phone and D answers the call.
C1 invokes GC2.conference(GC1) from application.
At this step, request for establishing the conference would fail. Jtapi would throw InvalidStateException with the error code as "Call state not valid".
In order to establish a conference successfully, application must invoke the conference by passing the CI of the call in which chaperone is the controller as the primary CI. So in this case, if application invokes GC1.conference(GC2), it would be able to establish the conference successfully and if application invokes GC2.conference(GC1), Jtapi would throw an exception.
Also application can use CiscoConnection.isChaperone() API to determine controller is chaperone on which call.
Call Events:
Actions
|
Events
|
Call Info
|
A initiates call to X
Connection of A created,
Hunt connection created (see Hunt List section)
Connection of C1 created
|
GC1-CallActiveEvent
GC1-ConnCreatedEvent-A
GC1-ConnConnectedEvent-A
GC1-CallCtlConnInitiatedEv-A
GC1-TermConnCreatedEvent
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv-A
GC1-CallCtlConnDialingEv-A
GC1-CallCtlConnEstablishedEv-A
GC1-CiscoHuntConnCreatedEv-B
GC1-ConnInProgressEv-B
GC1-CallCtlConnOfferedEv-B
GC1-ConnAlertingEv-B
GC1-CallCtlConnAlertingEv-B
GC1-ConnCreatedEvent-C1
GC1-ConnInprogressEvent-C1
GC1-CallCtlConnOfferedEv-C1
|
.getModifiedCallingAddress() = A,
.getCallingAddress() = A,
.getModifiedCalledAddress() = "",
.getCalledAddress() = "",
.getCurrentCallingTerminal()= Terminal of A.
.getCurrentCalledTerminal() = null
.getModifiedCallingAddress() = A,
.getCallingAddress() = A,
.getModifiedCalledAddress() = "",
.getCalledAddress() = "",
.getLastRedirectedParty() = "",
.getCurrentCallingTerminal()=Terminal of A.
.getCurrentCalledTerminal() = null
.getModifiedCallingAddress() = A,
.getCallingAddress() = A,
.getModifiedCalledAddress() = B,
.getCurrentCalledAddress() = B
.getCalledAddress() = X,
.getLastRedirectedAddress() = X,
.getCurrentCallingTerminal() = terminal of A.
.getCurrentCalledTerminal() = null
.getModifiedCallingAddress() = A,
.getCallingAddress() = A,
.getModifiedCalledAddress() = B,
.getCurrentCalledAddress() = B
.getCalledAddress() = X,
.getLastRedirectedAddress() = X,
|
C1 starts ringing
C1 Answers
C1 initiates conference
|
GC1-ConnAlertingEvent-C1
GC1-CallCtlConnAlertingEv-C1
GC1-TermConnCreatedEvent
GC1-TermConnRingingEvent
GC1-CallCtlTermConnRingingEv-C1
GC1-ConnConnectedEvent-C1
GC1-CallCtlConnEstablishedEv-C1
GC1-TermConnActiveEvent
GC1-CallCtlTermConnTalkingEv
GC1-CallCtlTermConnHeldEv-TermC1
GC2-CiscoConsultCallActiveEv
GC2-ConnCreatedEv-C1
GC2-CallCtlTermConnTalkingEv-TermC1
GC2-CallCtlConnDialingEv-C1
GC2-CallCtlConnEstablishedEv-C1
|
.getCurrentCallingTerminal() = terminal of A.
.getCurrentCalledTerminal() = null
Reason = REASON_EXTERNALCALLCONTROL
.getModifiedCallingAddress() = A,
.getCallingAddress() = A,
.getModifiedCalledAddress() = B,
.getCurrentCalledAddress() = B
.getCalledAddress() = X,
.getLastRedirectedAddress() = X,
.getCurrentCallingTerminal() = terminal of A.
.getCurrentCalledTerminal() = terminal of C1
Reason = REASON_ EXTERNALCALLCONTROL
.getModifiedCallingAddress() = C1,
.getCallingAddress() = C1,
.getModifiedCalledAddress() =
.getCurrentCalledAddress() =
.getCalledAddress() =
.getLastRedirectedAddress() =
.getCurrentCallingTerminal() = terminal of C1
|
Conference consult call to D , D answers
C1 completes the conference by invoking GC2.conference(GC1) from application.
C1 tries to complete the conference by invoking GC1.conference(GC2_ from application
|
GC2-CiscoConnCreatedEv-D
GC2-ConnInProgressEv-D
GC2-CallCtlConnOfferedEv-D
GC2-ConnAlertingEv-D
GC2-CallCtlConnAlertingEv-D
GC2-ConnConnectedEv-D
GC2-CallCtlConnEstablishedEv D
InvalidStateException : Call state not valid.
CiscoCallChangedEv final call=GC1, consult call=GC2
GC1-ConnCreatedEv D
GC1-ConnConnectedEv D
GC1-CallCtlConnEstablishedEv D
GC2-ConnDisconntedEv C1
GC2-ConnDisconntedEv D
GC2-CallCtlConnDisconnectedEv C1
GC2-CallCtlConnDisconnectedEv D
GC2-CallCtlTermConnDroppedEv C1
GC2-CallCtlTermConnDroppedEv D
GC2-CallInvalidEv
|
.getCurrentCalledTerminal() = null
.getModifiedCallingAddress() = C1,
.getCallingAddress() = C1,
.getModifiedCalledAddress() = D
.getCurrentCalledAddress() = D
.getCalledAddress() = D
.getLastRedirectedAddress() =
.getCurrentCallingTerminal() = terminal of C1
.getCurrentCalledTerminal() = terminal of
|
Extension Mobility Cross Cluster
Actions
|
Events
|
Call Info
|
1. User1 has a device profile configured with DN A in cluster1. This profile is included in the control list of application. User1 goes to a visiting cluster and EM login to a device TERMA. Device registers to cluster1
|
Events to provider observer
CiscoAddrCreatedEv A
CiscoTermCreatedEv TERMA
|
CiscoTerminal.getLoginType() returns CiscoTerminal.NO_LOGIN
getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGIN
getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGIN
CiscoTerminal.getLoginType() returns CiscoTerminal.VISITOR_LOGIN
|
User1 logs off from the Device
|
CiscoAddrRemovedEv A
CiscoTermRemovedEv TERMA
|
getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGOUT
getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGOUT
CiscoTerminal.getLoginType() returns CiscoTerminal.NO_LOGIN
|
2. User1 has a device profile configured with DN A in cluster1. This device profile is included in the control list of application. User1 EM into a device TERMA on cluster1. Device re-registers with DN A. The device TERMA is not in application control listapplication control list
|
CiscoAddrCreatedEv A
CiscoTermCreatedEv TERMA
|
getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGIN
getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGIN
CiscoTerminal.getLoginType() returns CiscoTerminal.NATIVE_LOGIN
|
User1 log off from the device. Device re-registers to cluster1 with default DN.
|
CiscoAddrRemovedEv A
CiscoTermRemovedEv TERMA
|
getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGOUT
getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGOUT
|
3. EM into a controlled Device:
User1 has a device profile configured with DN A in cluster1. This device profile is included in the control list of application. User1 EM into a device TERMA on cluster1. TERMA with default DN X is in application control list. Device re-registers with DN A.
|
CiscoAddrRemovedEv X
CiscoAddrCreatedEv A
|
getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGIN
getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGIN
|
User1 logs out of the device.
Device Unregister, Device and line out of service
Device Register to CM with default DN X.
|
CiscoAddrRemovedEv A
CiscoAddrCreatedEv X
|
getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGOUT
getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGOUT
|
4. Application uses user1 userid. Device profile agent1 is added to application control list after application is started
User EMs into a device TERMA and gets the device profile.
Agent1 device profile is removed from application control list
|
CiscoAddrCreatedEv A
CiscoTermCreatedEv TERMA
CiscoAddrRemovedEv A
CiscoTermRemovedEv TERMA
|
getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGIN
getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGIN
getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGIN_PROFILE_REMOVE
getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGOUT_PROFILE_REMOVE
|
5. EMCC scenario resulting in CiscoAddrAddedToTerminalEv and CiscoAddrRemovedFromTerminalEv
Cluster1 has application with
Terminal TermA (address A) in control list. User1 is a device profile which is configured with line A is included in app control list. User goes to a visiting cluster and logs into a device (TermX, Addr X). TermX registers with cluster1 with address A
User logs out of device TermX
|
CiscoTermCreatedEv TERMX
CiscoAddrAddedToTerminalEv AddrA
CiscoAddrRemovedFromTerminalEv AddA
CiscoTermRemovedEv TERMx
|
getCiscoCause() returns CiscoProvEv.CAUSE_EM
getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGIN
getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGOUT
getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGOUT
|
6. Device profile Agent1 with DN A is logged into a device TERMA. User1 opens provider and then adds the profile Agent1 to the control list through the admin pages.
User1 then removes the profile from the control list
|
CiscoAddrCreatedEv A
CiscoTermCreatedEv TERMA
CiscoAddrRemovedEv A
CiscoTermRemovedEv TERMA
|
getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGIN_PROFILE_ADD
getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGIN_PROFILE_ADD
getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGOUT_PROFILE_REMOVE
getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGOUT_PROFILE_REMOVE
|
7. Device profile Agent1 is not in the applications control list but it is there as a controlled profiles for extension mobility for user1. User1 opens provider and logs into terminal TERMA with profile agent1 and the same user id with which it had opened the provider.
User1 logs out of the device
|
CiscoAddrCreatedEv A
CiscoTermCreatedEv TERMA
CiscoAddrRemovedEv A
CiscoTermRemovedEv TERMA
|
getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGIN
getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGIN
getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGOUT
getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGOUT
|
8. Device profile Agent1 (DN A) is in the applications control list with user as user1.
User1 opens the provider and does an EM login into TERMA with profile as agent1. TERMA is not in control list.
User1 logs out of TERMA.
|
CiscoAddrCreatedEv A
CiscoTermCreatedEv TERMA
CiscoAddrRemovedEv A
CiscoTermRemovedEv TERMA
|
getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGIN
getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGIN
getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGOUT
getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGOUT
|
9. Device profile Agent1 (DN A) is in the applications control list with user as user1.
User1 opens the provider and does an EM login into TERMA with profile as agent1. TERMA is in control list with default DN as X.
User1 logs out of TERMA.
|
CiscoAddrRemovedEv X
CiscoAddrCreatedEv A
CiscoAddrRemovedEv A
CiscoAddrCreatedEv X
|
getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGIN
getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGIN
getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGOUT
getCiscoCause() returns CiscoProvEv.CAUSE_EM_LOGOUT
|
Forced Authorization and Customer Matter Codes
Scenario One
The application controls A and B; B requires a forced authorization code (FAC) to extend the call.
Action
|
Event
|
A calls B by using call.Connect(), or A places a consult call to B by using Call.Consult().
|
NEW META EVENT_________META_CALL_STARTING CallActiveEv Cause: CAUSE_NEW_CALL ConnCreatedEv A Cause: CAUSE_NORMAL ConnConnectedEv A Cause: CAUSE_NORMAL CallCtlConnInitiatedEv Cause: CAUSE_NORMAL CallControlCause: CAUSE_NORMAL TermConnCreatedEv SEPA Cause: Other: 0 TermConnActiveEv SEPA Cause: CAUSE_NORMAL CallCtlTermConnTalkingEv SEPA Cause: CAUSE_NORMAL CallControlCause: CAUSE_NORMAL
NEW META EVENT_________META_CALL_PROGRESS CallCtlConnDialingEv A
NEW META EVENT_________META_CALL_PROGRESS CiscoToneChangedEv ToneType = CiscoTone.ZIPZIP cause = CiscoCallEv.CAUSE_FAC_CMC getWhichCodRequired = CiscoToneChangedEv. FAC_REQUIRED
|
Application enters additional digits by using CiscoConnection.addToAddress.
|
NEW META EVENT_________META_CALL_ADDITIONAL_PARTY ConnCreatedEv B ConnInProgressEv B CallCtlConnOfferedEv B
NEW META EVENT_________META_CALL_PROGRESS ConnAlertingEv B CallCtlConnAlertingEv B TermConnCreatedEv B TermConnRingingEv B CallCtlTermConnRingingEv B ConnConnectedEv B CallCtlConnEstablishedEv B
|
B answers the call.
|
TermConnActiveEv B
|
Scenario Two
The application controls A and B; B requires both an FAC and a CMC (client matter code) to extend the call.
Action
|
Event
|
A calls B by using call.Connect(), or A places a consult call to B by using Call.Consult().
|
NEW META EVENT_________META_CALL_STARTING CallActiveEv Cause: CAUSE_NEW_CALL ConnCreatedEv A Cause: CAUSE_NORMAL ConnConnectedEv A Cause: CAUSE_NORMAL CallCtlConnInitiatedEv Cause: CAUSE_NORMAL CallControlCause: CAUSE_NORMAL TermConnCreatedEv SEPA Cause: Other: 0 TermConnActiveEv SEPA Cause: CAUSE_NORMAL CallCtlTermConnTalkingEv SEPA Cause: CAUSE_NORMAL CallControlCause: CAUSE_NORMAL
NEW META EVENT_________META_CALL_PROGRESS CallCtlConnDialingEv A
NEW META EVENT_________META_CALL_PROGRESS CiscoToneChangedEv ToneType = CiscoTone.ZIPZIP cause = CiscoCallEv.CAUSE_FAC_CMC getWhichCodRequired = CiscoToneChangedEv. FAC_CMC_REQUIRED
|
Application enters FAC code digits with # termination by using CiscoConnection.addToAddress within the T302 timer.
|
NEW META EVENT_________META_CALL_PROGRESS CiscoToneChangedEv ToneType = CiscoTone.ZIPZIP cause = CiscoCallEv.CAUSE_FAC_CMC getWhichCodRequired = CiscoToneChangedEv. CMC_REQUIRED
|
Application enters CMC code digits with # terminated by using CiscoConnection.addToAddress within T302 timer.
|
NEW META EVENT_________META_CALL_ADDITIONAL_PARTY ConnCreatedEv B ConnInProgressEv B CallCtlConnOfferedEv B
NEW META EVENT_________META_CALL_PROGRESS ConnAlertingEv B CallCtlConnAlertingEv B TermConnCreatedEv B TermConnRingingEv B CallCtlTermConnRingingEv B
|
B answers the call.
|
ConnConnectedEv B CallCtlConnEstablishedEv B TermConnActiveEv B CallCtlTermConnTalkingEv B
|
Scenario Three
The application controls A and B;
B requires a CMC, and the application enters an invalid code.
Action
|
Event
|
A calls B by using call.Connect(), or A places a consult call to B by using Call.Consult().
|
NEW META EVENT_________META_CALL_STARTING CallActiveEv Cause: CAUSE_NEW_CALL ConnCreatedEv A Cause: CAUSE_NORMAL ConnConnectedEv A Cause: CAUSE_NORMAL CallCtlConnInitiatedEv Cause: CAUSE_NORMAL CallControlCause: CAUSE_NORMAL TermConnCreatedEv SEPA Cause: Other: 0 TermConnActiveEv SEPA Cause: CAUSE_NORMAL CallCtlTermConnTalkingEv SEPA Cause: CAUSE_NORMAL CallControlCause: CAUSE_NORMAL
NEW META EVENT_________META_CALL_PROGRESS CallCtlConnDialingEv A
NEW META EVENT_________META_CALL_PROGRESS CiscoToneChangedEv ToneType = CiscoTone.ZIPZIP cause = CiscoCallEv.CAUSE_FAC_CMC getWhichCodRequired = CiscoToneChangedEv. CMC_REQUIRED
|
The application enters the incorrect CMC digits (# terminated) by using CiscoConnection.addToAddress within the T302 timer limit.
The application receives reorder tone.
|
NEW META EVENT_________META_CALL_PROGRESS ConnFailedEv A CallCtlConnFailedEv A getCiscoCause () = CiscoCallEv.FAC_CMC
NEW META EVENT_________META_CALL_ENDING TermConnDroppedEv CallCtlTermConnDropped ConnDisconnectedEv CallCtlConnDisconnectedEv CallInvalidEv CallObservationEndedEv
|
Scenario Four
The application controls both A and B; A calls B; B redirects the call to C, which needs both an FAC and a CMC.
Action
|
Event
|
A calls B by using call.Connect(), or A places a consult call to B by using Call.Consult().
|
NEW META EVENT_________META_CALL_STARTING CallActiveEv Cause: CAUSE_NEW_CALL ConnCreatedEv A Cause: CAUSE_NORMAL ConnConnectedEv A Cause: CAUSE_NORMAL CallCtlConnInitiatedEv Cause: CAUSE_NORMAL CallControlCause: CAUSE_NORMAL TermConnCreatedEv SEPA Cause: Other: 0 TermConnActiveEv SEPA Cause: CAUSE_NORMAL CallCtlTermConnTalkingEv SEPA Cause: CAUSE_NORMAL CallControlCause: CAUSE_NORMAL
NEW META EVENT_________META_CALL_PROGRESS CallCtlConnDialingEv A
NEW METAEVENT_________META_CALL_ADDITIONAL_PARTY ConnCreatedEv B ConnInProgressEv B CallCtlConnOfferedEv B
NEW META EVENT_________META_CALL_PROGRESS ConnAlertingEv B CallCtlConnAlertingEv B TermConnCreatedEv SEPB TermConnRingingEv SEPB CallCtlTermConnRingingEv SEPB ConnConnectedEv B CallCtlConnEstablishedEv B TermConnActiveEv SEPB CallCtlTermConnTalkingEv SEPB
|
B issues a redirect request to C and passes an FAC and a CMC code.
|
NEW META EVENT_________META_CALL_REMOVING_PARTY TermConnDroppedEv SEPB CallCtlTermConnDroppedEv SEPB Cause: CAUSE_NORMAL CallControlCause: CAUSE_REDIRECTED CiscoCause: CAUSE_NORMALUNSPECIFIED ConnDisconnectedEv B Cause: CAUSE_NORMAL CiscoCause: CAUSE_NORMALUNSPECIFIED CallCtlConnDisconnectedEv B Cause: CAUSE_NORMAL CallControlCause: CAUSE_REDIRECTED CiscoCause: CAUSE_NORMALUNSPECIFIED
NEW META EVENT_________META_CALL_PROGRESS
ConnCreatedEv C Cause: CAUSE_NORMAL CiscoCause: CAUSE_NORMALUNSPECIFIED
NEW META EVENT_________META_CALL_PROGRESS ConnInProgressEv C Cause: CAUSE_NORMAL CiscoCause: CAUSE_NORMALUNSPECIFIED CallCtlConnOfferedEv C Cause: CAUSE_NORMAL CallControlCause: CAUSE_REDIRECTED CiscoCause: CAUSE_NORMALUNSPECIFIED
NEW META EVENT_________META_CALL_PROGRESS ConnAlertingEv A Cause: CAUSE_NORMAL CiscoCause: CAUSE_NORMALUNSPECIFIED CallCtlConnAlertingEv C Cause: CAUSE_NORMAL CallControlCause: CAUSE_NORMAL CiscoCause: CAUSE_NORMALUNSPECIFIED
NEW META EVENT_________META_CALL_PROGRESS ConnConnectedEv C Cause: CAUSE_NORMAL CiscoCause: CAUSE_NOERROR CallCtlConnEstablishedEv C Cause: CAUSE_NORMAL CallControlCause: CAUSE_NORMAL CiscoCause: CAUSE_NOERROR
|
Scenario Five
Application controls the device Route Point (RP) and registers the RP.
A and B are PNO and within the Cisco Unified Communications Manager cluster.
Action
|
Event
|
Fields
|
Call arrives at RP
|
RouteEvent
|
State = ROUTE getCurrentRouteAddress () = RP getCallingAddress () = A getCallingTerminal () = SEPA (Terminal associated with A)
|
Application invokes
selectRoute(routeselected[], callingsearchspace, modifiyingcallingnumber[], preferredOriginalCdNumber[], preferredOriginalCdOption[], facCode[], cmcCode[]) where routeSelected[] = B callingSearchSpace = CiscoRouteSession.DEFAULT_SEARCH_SPACE modifyingCgNumber = null, preferredOriginalCdNumber = null, preferredOriginalCdOption = CiscoRouteSession.DONOT_RESET_ORIGINALCALLED, facCode[] = "facCode for B" cmcCode[] = "cmcCode for B"
|
RouteUsedEvent
|
State = ROUTE_USED getCallingAddress () = A getCallingTerminal () = SEPA (Terminal associated with A) getRouteUsed () = B
|
Application invokes
endRoute (ERROR_NONE)
|
RouteEndEvent
|
State = ROUTE_END getRouteAddress () = RP
|
Hairpin Support
S.No.
|
Pre-Condition
|
Use Case
|
Expected Behavior
|
Result
|
1
|
IP Phones A and C are in same cluster, IP phone B is in another cluster. JTAPI observes A and C. Gateway does not pass new party information to each other. There will be no transfer start and end events as transfer controller is not a controlled device.
|
A calls B via gateway. B transfers call to C via gateway. B completes the transfer and goes out of scenario. Now IP Phones A and C are connected
|
At A: It is connected to B. A's type is CiscoAddress.Internal B's type is CiscoAddress.External At C: It is connected to B. C's type is CiscoAddress.Internal B's type is CiscoAddress.External
|
A and C are connected.
|
2
|
IP Phones A and C are in same cluster, IP phone B is in another cluster. JTAPI observes A and C. Gateway is able to pass new party information to each other.
|
A calls B via gateway. B transfers call to C via gateway. B completes the transfer and goes out of scenario. Now IP Phones A and C are connected.
|
At A: It is connected to C. A's type is CiscoAddress.Internal C's type is CiscoAddress.External At C: It is connected to A. C's type is CiscoAddress.Internal A's type is CiscoAddress.External
|
A and C are connected.
|
3
|
IP Phones A and B are in same cluster, IP phone C is in another cluster. JTAPI observes A and B.
|
A calls B. B does a conference call to C via gateway. B completes the conference and all A,B and C are in conference.
|
At A and B, ConferenceCallStateChanged event has participantInfo with following types: A: CiscoAddress.Internal B: CiscoAddress.Internal C: CiscoAddress.External
|
A, B and C are in conference call.
|
4
|
IP Phones A and B are in same cluster, IP phone C is in another cluster. JTAPI observes A,B and C.
|
A calls B. B does a conference call to C via gateway. B completes the conference and all A,B and C are in conference.
|
At A and B, ConferenceCallStateChanged event has participantInfo with following types: A: CiscoAddress.Internal B: CiscoAddress.Internal C: CiscoAddress.External
|
A, B and C are in conference call.
|
5
|
IP Phones A, B, C are in same cluster, IP phone D is in another cluster. JTAPI observes A, B and C. Gateway is able to pass new party information to each other.
|
A calls B. B does a conference call to D via gateway. D transfers the call to C. B completes the conference and all A,B and C are in conference.
|
At A and B, ConferenceCallStateChanged event has participantInfo with following types: A: CiscoAddress.Internal B: CiscoAddress.Internal C: CiscoAddress.External
|
A, B and C are in conference call.
|
6
|
IP Phones A, B, C are in same cluster, IP phone D is in another cluster. JTAPI observes A, B and C. Gateway does not pass new party information to each other.
|
A calls B. B does a conference call to D via gateway. D transfers the call to C. B completes the conference and all A,B and C are in conference.
|
At A and B, ConferenceCallStateChanged event has participantInfo with following types: A: CiscoAddress.Internal B: CiscoAddress.Internal D: CiscoAddress.External
|
A, B and C are in conference call.
|
7
|
IP Phones A and C are in same cluster, IP phone B is in another cluster. JTAPI observes A and C.
|
A calls B via gateway. B redirects call to C. Now IP Phones A and C are connected.
|
At A: It is connected to C. A's type is CiscoAddress.Internal C's type is CiscoAddress.External At C: It is connected to A. C's type is CiscoAddress.Internal A's type is CiscoAddress.External
|
A and C are connected.
|
Half Duplex Media
RTP Event at A and B.
Action
|
RTP Events
|
Check Interface
|
A calls B , B answers the call.
|
A - CiscoRTPInputStartedEv CiscoRTPOutputStartedEv
B - CiscoRTPInputStartedEv CiscoRTPOutputStartedEv
|
Ev.isHalfDuplex() returns false Ev.isHalfDuplex() returns false
Ev.isHalfDuplex() returns false Ev.isHalfDuplex() returns false
|
B puts Call on hold
|
A - CiscoRTPInputStoppedEv CiscoRTPOutputStoppedEv
B - CiscoRTPInputStoppredEv CiscoRTPOutputStoppedEv
A-CiscoRTPInputStartedEv
|
Ev.isHalfDuplex() returns false Ev.isHalfDuplex() returns false
Ev.isHalfDuplex() returns false Ev.isHalfDuplex() returns false
Ev.isHalfDuplex() returns True
|
B Retrieves the Call
|
A- CiscoRTPInputStoppredEv
A - CiscoRTPInputStartedEv CiscoRTPOutputStartedEv
B - CiscoRTPInputStartedEv CiscoRTPOutputStartedEv
|
Ev.isHalfDuplex() returns True
Ev.isHalfDuplex() returns false Ev.isHalfDuplex() returns false
Ev.isHalfDuplex() returns false Ev.isHalfDuplex() returns false
|
Hunt List
Configuration:
•
HuntList feature is enabled for use cases from Scenario 1 to Scenario 20
•
HuntList pilot1 : 2000
•
HuntList1 LineGroup Member : 3001, 3002, 3003
•
HuntList pilot2: 4000
•
HuntList2 LineGroup Member : 5001, 5002, 5003
Cisco Hunt Address mentioned in the call models below indicates that CiscoAddress.getType() returns CiscoAddress.HUNT_PILOT.
Scenario 1:
Scenario
|
Result
|
A (1000) calls Hunt Pilot B (2000), Application is observing only A. GC1 is the GCID of the call.
|
GC1: CallActiveEv
GC1: ConnCreatedEv A
GC1:ConnConnectedEv A
GC1:CallCtlConnInitiatedEv A
GC1:TermConnCreatedEv TermA
GC1:TermConnActiveEv TermA
GC1:CallCtlTermConnTalkingEv TermA
CallingParty = A, current calling = A
Called Party = null, current called = null
Lrp = null
GC1:CallCtlConnDialingEv A
GC1:CallCtlConnEstablishedEv A
GC1: CiscoHuntConnCreatedEv B
GC1: ConnInProgressEv B
GC1: CallCtlConnOfferedEv B
GC1: ConnAlertingEv B
GC1: CallCtlConnAlertingEv B
CallingParty = A, current calling = A
Called Party = B, current called = B
Lrp = null
|
JTAPI CallInfo:
CallingParty = 1000
CurrentCallingParty=1000
CalledParty=2000 type = CiscoAddress.HUNT_PILOT
CurrentCalledParty=2000 type = CiscoAddress.HUNT_PILOT
LastRedirectingParty=Null
Current called display name = 2000Name.
Scenario 2
Scenario
|
Result
|
A (1000) calls Hunt Pilot B (2000), call is offered at C (3001); application is observing A. GC1 is the GCID of the call.
|
GC1: CallActiveEv
GC1: ConnCreatedEv A
GC1:ConnConnectedEv A
GC1:CallCtlConnInitiatedEv A
GC1:TermConnCreatedEv TermA
GC1:TermConnActiveEv TermA
GC1:CallCtlTermConnTalkingEv TermA
CallingParty = A, current calling = A
Called Party = null, current called = null
Lrp = null
GC1:CallCtlConnDialingEv A
GC1:CallCtlConnEstablishedEv A
GC1:CallCtlConnDialingEv A
GC1:CallCtlConnEstablishedEv A
GC1: CiscoHuntConnCreatedEv B
GC1: ConnInProgressEv B
GC1: CallCtlConnOfferedEv B
GC1: ConnAlertingEv B
GC1: CallCtlConnAlertingEv B
|
C(3001) answers the call
|
CallingParty = A, current calling = A
Called Party = B, current called = B
Lrp = null
GC1: ConnCreatedEv C
GC1: ConnConnectedEv C
GC1: CallCtlConnEstablishedEv C
GC1: ConnConnectedEv B
GC1: CallCtlConnEstablishedEv B
|
JTAPI CallInfo:
CallingParty = 1000
CurrentCallingParty=1000
CalledParty=2000
CurrentCalledParty=2000
LastRedirectingParty=Null
Current called party display name = 3001Name. Called party display name changes to the display name of the hunt pilot member that answered the call.
Scenario 3
Scenario
|
Result
|
A (1000) calls Hunt Pilot B(2000), call is offered at C (3001). Application is observing C. GC1 is the GCID of the call.
|
GC1: CallActiveEv
GC1: ConnCreatedEv C
GC1: ConnInProgressEv C
GC1: CallCtlConnOfferedEv C
GC1: ConnCreatedEv A
GC1: CiscoHuntConnCreatedEv B
GC1: ConnConnectedEv A
GC1: CallCtlConnEstablishedEv A
GC1: ConnConnectedEv B
GC1: CallCtlConnEstablishedEv B
CallingParty = A, current calling = A
Called Party = B, current called = B
Lrp = null
GC1: CallCtlConnAlertingEv C
GC1:TermConnCreatedEv TermC
GC1: TermConnRingingEv TermC
GC1: CallCtlTermConnRingingEvTermC:
|
JTAPI CallInfo:
CallingParty = 1000
CurrentCallingParty=1000
CalledParty=2000
CurrentCalledParty=2000
LastRedirectingParty=Null
Scenario 4
JTAPI CallInfo:
CallingParty = 1000
CurrentCallingParty=1000
CalledParty=2000
CurrentCalledParty=2000
LastRedirectingParty=Null
Scenario 5
Scenario
|
Result
|
A (1000) calls Hunt Pilot B (2000), call is offered at C (3001) Application is observing A and C. GC1 is the GCID of the call.
|
GC1: CallActiveEv
GC1: ConnCreatedEv A
...
GC1: CallCtlTermConnTalkingEv A
GC1: ConnCreatedEv C
GC1: ConnInProgressEv C
GC1: CallCtlConnOfferedEv C
GC1: CiscoHuntConnCreatedEv B
GC1: ConnInProgressEv B
GC1: CallCtlConnOfferedEv B
GC1: ConnAlertingEv B
GC1: CallCtlConnAlertingEv B
GC1: ConnAlertingEv C
GC1: CallCtlConnAlertingEv C
GC1:TermConnCreatedEv TermC
GC1: TermConnRingingEv TermC
GC1: CallCtlTermConnRingingEvTermC
CallingParty = A, current calling = A
Called Party = B, current called = B
Lrp = null
\
|
JTAPI CallInfo:
CallingParty = 1000
CurrentCallingParty=1000
CalledParty=2000
CurrentCalledParty=2000
LastRedirectingParty=Null
Scenario 6
Scenario
|
Result
|
A (1000) calls Hunt Pilot (B or 2000), call is offered at C (3001) Application is observing A and C. GC1 is the GCID of the call.
|
GC1: CallActiveEv
GC1: ConnCreatedEv A
...
GC1: CallCtlTermConnTalkingEv A
GC1: ConnCreatedEv C
GC1: ConnInProgressEv C
GC1: CallCtlConnOfferedEv C
GC1: CiscoHuntConnCreatedEv B
GC1: ConnInProgressEv B
GC1: CallCtlConnOfferedEv B
GC1: ConnAlertingEv B
GC1: CallCtlConnAlertingEv B
GC1: ConnAlertingEv C
GC1: CallCtlConnAlertingEv C
GC1:TermConnCreatedEv TermC
GC1: TermConnRingingEv TermC
GC1: CallCtlTermConnRingingEvTermC
CallingParty = A, current calling = A
Called Party = B, current called = B
Lrp = null
GC1:CallCtlTermConnTalkingEv TermC
|
JTAPI CallInfo:
CallingParty = 1000
CurrentCallingParty=1000
CalledParty=2000
CurrentCalledParty=2000
LastRedirectingParty=Null
Scenario 7
Scenario
|
Result
|
A (1000) calls Hunt Pilot B (2000), call is offered at C (3001). Application is observing A and C. GC1 is the GCID of the call.
A redirects the call to another Hunt Pilot D(4000)
|
GC1: CallActiveEv
GC1: ConnCreatedEv A
...
GC1: CallCtlTermConnTalkingEv A
GC1: ConnCreatedEv C
GC1: ConnInProgressEv C
GC1: CallCtlConnOfferedEv C
GC1: CiscoHuntConnCreatedEv B
GC1: CallCtlConnEstablishedEv B
GC1: ConnAlertingEv C
GC1: CallCtlConnAlertingEv C
GC1:TermConnCreatedEv TermC
GC1: TermConnRingingEv TermC
GC1: CallCtlTermConnRingingEvTermC
CallingParty = A, current calling = A
Called Party = B, current called = B
Lrp = null
GC1:CallCtlTermConnTalkingEv TermC
GC1: CiscoHuntConnCreatedEv D
GC1: ConnAlertingEv D
GC1: CallCtlConnAlertingEv D
GC1: TermConnDroppedEv TA
GC1: CallCtlTermConnDroppedEv TA getCallControlCause () = CAUSE_REDIRECTED
GC1: ConnDisconnectedEv A
GC1: CallCtlConnDisconnectedEv A
getCallControlCause () = CAUSE_REDIRECTED
|
JTAPI CallInfo:
CallingParty = 2000
CurrentCallingParty=2000
CalledParty= 2000
CurrentCalledParty=4000
LastRedirectingParty=1000
Scenario 8
Scenario
|
Result
|
A (1000) calls Hunt Pilot B (2000), call is offered at C (3001) Application is observing A and C. GC1 is the GCID of the call. A redirects the call to D(4000). E(5001) answers the call
|
.....
.....
GC1: CiscoHuntConnCreatedEv D
GC1: TermConnDroppedEv TermA
GC1: CallCtlTermConnDroppedEv TermA
getCallControlCause () = CAUSE_REDIRECTED
GC1: ConnDisconnectedEv A
GC1: CallCtlConnDisconnectedEv A
getCallControlCause () = CAUSE_REDIRECTED
GC1: ConnCreatedEv E
GC1: ConnConnectedEv E
GC1: CallCtlConnEstablishedEv E
|
JTAPI CallInfo:
CallingParty = 1000
CurrentCallingParty=2000
CalledParty= 2000
CurrentCalledParty=4000
LastRedirectingParty=1000
Scenario 9
Scenario
|
Result
|
A (1000) calls Hunt Pilot B(2000), call is offered at C (3001). Application is observing A, E and C. GC1 is the GCID of the call. A redirects the call to D(4000). E(5001) answers the call
|
.....
.....
GC1: ConnCreatedEv E
GC1: ConnInProgressEv E
GC1: CallCtlConnOfferedEv E
getCallControlCause () = CAUSE_REDIRECTED
GC1: CiscoHuntConnCreatedEv D
GC1: TermConnDroppedEv TermA
GC1: CallCtlTermConnDroppedEv TermA
GC1: ConnDisconnectedEv A
GC1: CallCtlConnDisconnectedEv A
GC1: CallCtlConnEstablishedEv E
|
JTAPI CallInfo:
CallingParty = 1000
CurrentCallingParty=2000
CalledParty= 2000
CurrentCalledParty=4000
LastRedirectingParty=1000
Scenario 10
JTAPI CallInfo:
CallingParty = 1000
CurrentCallingParty=2000
CalledParty= 2000
CurrentCalledParty=4000
LastRedirectingParty=1000
Scenario 11
Scenario
|
Result
|
A (1000) calls Hunt Pilot B(2000), call is offered at C (3001) and D (3002). Application is observing A,C and D. GC1 is the GCID of the call.
|
GC1: CallActiveEv
GC1: ConnCreatedEv A
...
GC1: CallCtlTermConnTalkingEv A
GC1: ConnCreatedEv C
GC1: ConnInProgressEv C
GC1: CallCtlConnOfferedEv C
GC1: CiscoHuntConnCreatedEv B
GC1: ConnInProgressEv B
GC1: CallCtlConnOfferedEv B
GC1: ConnAlertingEv B
GC1: CallCtlConnAlertingEv B
GC1: ConnCreatedEv C
GC1: ConnInProgressEv C
GC1: CallCtlConnOfferedEv C
GC1: CallCtlConnEstablishedEv B
GC1: ConnCreatedEv D
GC1: ConnInProgressEv D
GC1: CallCtlConnOfferedEv D
GC1: CallCtlConnAlertingEv C
GC1: CallCtlTermConnCreatedEv TermC
GC1: CallCtlTermConnRingingEv TermC
GC1: CallCtlConnAlertingEv D
GC1: CallCtlTermConnCreatedEv TermD
GC1: CallCtlTermConnRingingEv TermD
|
JTAPI CallInfo:
CallingParty = 1000
CurrentCallingParty=1000
CalledParty= 2000
CurrentCalledParty=2000
LastRedirectingParty=Null
Scenario 12
Scenario
|
Result
|
A (1000) calls Hunt Pilot B(2000), call is offered at C (3001) and D (3002). Application is observing A,C and D. GC1 is the GCID of the call.
D answers the call
|
GC1: CallActiveEv
GC1: ConnCreatedEv A
...
GC1: CallCtlTermConnTalkingEv A
GC1: ConnCreatedEv C
GC1: ConnInProgressEv C
GC1: CallCtlConnOfferedEv C
GC1: CiscoHuntConnCreatedEv B
GC1: ConnInProgressEv B
GC1: CallCtlConnOfferedEv B
GC1: ConnAlertingEv B
GC1: CallCtlConnAlertingEv B
GC1: ConnCreatedEv C
GC1: ConnInProgressEv C
GC1: CallCtlConnOfferedEv C
GC1: CallCtlConnEstablishedEv B
GC1: ConnCreatedEv D
GC1: ConnInProgressEv D
GC1: CallCtlConnOfferedEv D
GC1: CallCtlConnAlertingEv C
|
| |
GC1: CallCtlTermConnCreatedEv TermC
GC1: CallCtlTermConnRingingEv TermC
GC1: CallCtlConnAlertingEv D
GC1: CallCtlTermConnCreatedEv TermD
GC1: CallCtlTermConnRingingEv TermD
GC1: CallCtlTermConnTalkingEv TermD
GC1: CallCtlTermConnDroppedEv TermC
GC1: ConnDisconnectedEv C
GC1: CallCtlConnDisconnectedEv C
|
JTAPI CallInfo:
CallingParty = 1000
CurrentCallingParty=1000
CalledParty= 2000
CurrentCalledParty=2000
LastRedirectingParty=Null
Scenario 13
JTAPI CallInfo:
CallingParty = 1000
CurrentCallingParty=1000
CalledParty= 2000
CurrentCalledParty=2000
LastRedirectingParty=Null
Scenario 14
Scenario
|
Result
|
A (1000) calls Hunt Pilot (B or 2000), call is offered at C (3001) and D (3002). Application is observing A and D. GC1 is the GCID of the call.
C answers the call
|
GC1:CallActiveEv
GC1:ConnCreatedEv A
GC1:ConnConnectedEv A
GC1:CallCtlConnInitiatedEv A
GC1:TermConnCreatedEv TermA
GC1:TermConnActiveEv TermA
GC1:CallCtlTermConnTalkingEv TermA
GC1: CallCtlConnEstablishedEv A
GC1: CiscoHuntConnCreatedEv B
GC1: ConnCreatedEv D
GC1: ConnOfferedEv D
....
GC1: TermConnCreatedEv TermD
GC1: CallCtlTermConnRingingEv TermD
GC1: ConnCreatedEv C
GC1: ConnConnectedEv C
GC1: CallCtlConnEstablishedEv C
GC1: CallCtlTermConnDroppedEv TermD
GC1: ConnDisconnectedEv D
GC1: CallCtlConnDisconnectedEv D
|
JTAPI CallInfo:
CallingParty = 1000
CurrentCallingParty=1000
CalledParty= 2000
CurrentCalledParty=2000
LastRedirectingParty=Null
Scenario 15
Event flow is same as first scenario.
JTAPI CallInfo:
CallingParty = 1000
CurrentCallingParty=1000
CalledParty= 2000
CurrentCalledParty=2000
LastRedirectingParty=Null
Scenario 16
JTAPI CallInfo:
CallingParty = 1000
CurrentCallingParty=1000
CalledParty= 2000
CurrentCalledParty=2000
LastRedirectingParty=Null
Scenario 17
Scenario
|
Result
|
A (1000) calls Hunt Pilot B (2000), call is offered at C (3001) and is answered. A consults with D (4000) and call is offered at E(5001). A completes the conference. Application is observing A.
Initially connection is created to an address with DN=B type=UNKNOWN
GC1 is the GCID of the final call.
GC2 is the consult call
C answers the call
E answers the call
Conference is completed
|
GC1:CallActiveEv
GC1:ConnCreatedEv A
GC1:ConnConnectedEv A
GC1:CallCtlConnInitiatedEv A
GC1:TermConnCreatedEv TermA
GC1:TermConnActiveEv TermA
GC1:CallCtlTermConnTalkingEv TermA
GC1: CallCtlConnEstablishedEv A
GC1: CiscoHuntConnCreatedEv B-U
GC1: ConnInProgressEv B-U
GC1: CallCtlConnOfferedEv B-U
GC1: CiscoHuntConnCreatedEv B
GC1: ConnInProgressEv B
GC1: CallCtlConnOfferedEv B
GC1: ConnAlertingEv B
GC1: CallCtlConnAlertingEv B
GC1: ConnDisconnectedEv B-U
GC1: CallCtlConnDisconnectedEv B-U
GC1: ConnCreatedEv C
GC1: ConnOfferedEv C
....
GC1: CallCtlConnEstablishedEv C
GC1: CallCtlTermConnHeldEv TermA
GC2: CiscoConsultCallActiveEv
GC2: ConnCreatedEv A
.....
GC2: CallCtlTermConnTalkingEv TermA
GC2: CallCtlConnDialingEv A
GC2: CallCtlConnEstablishedEv A
|
| |
GC2: CiscoHuntConnCreatedEv D
GC2: ConnInProgressEv D
GC2: CallCtlConnOfferedEv D
GC2: ConnAlertingEv D
GC2: CallCtlConnAlertingEv D
GC2: ConnCreatedEv E
GC2: ConnConnectedEv E
GC2: CallCtlConnEstablishedEv E
GC2: ConnConnectedEv D
GC2: CallCtlConnEstablishedEv D
CiscoCallChangedEv final call -GC1, consult call=GC2
GC1: CiscoHuntConnCreatedEv B
GC1: ConnCreatedEv C
GC1: ConnConnectedEv C
GC1: CallCtlConnEstablishedEv C
GC1: CiscoHuntConnCreatedEv E
GC1: ConnCreatedEv E
GC1: ConnConnectedEv E
GC1: CallCtlConnEstablishedEv E
GC2: ConnDisconntedEv B
GC2: ConnDisconntedEv C
GC2: CallCtlConnDisconnectedEv C
GC2: ConnDisconntedEv D
GC2: ConnDisconntedEv E
GC2: CallCtlConnDisconnectedEv E
GC2: CallCtlTermConnDroppedEv TermA
..
GC2: ConnDisconntedEv A
GC2: CallCtlConnDisconnectedEv A
GC2: CallInvalidEv
|
JTAPI CallInfo:
CallingParty = 1000
CurrentCallingParty= [No guaranted for conference scenario]
CalledParty= 2000
CurrentCalledParty= [No guaranted for conference scenario]
LastRedirectingParty=1000
Scenario 18
Transfer to a line group member.
Scenario
|
Result
|
A (1000) calls B(1001), consult to Hunt Pilot P (2000), call is offered at C (3001) and is answered. B completes the transfer. Application is observing A, B and C.
GC1 is the GCID of the final call.
GC2 is the consult call
B answers the call
B consults to Hunt pilot
C answers the call
Transfer is completed
|
GC1:CallActiveEv
GC1:ConnCreatedEv A
GC1:ConnConnectedEv A
GC1:CallCtlConnInitiatedEv A
GC1:TermConnCreatedEv TermA
GC1:TermConnActiveEv TermA
GC1:CallCtlTermConnTalkingEv TermA
GC1: CallCtlConnEstablishedEv A
GC1: ConnCreatedEv B
GC1: ConnOfferedEv B
...
GC1: TermConnRingingEv TermB
GC1: TermConnTalkingEv TermB
GC1: CallCtlTermConnHeldEv TermB
GC2: CiscoConsultCallActiveEv
GC2: ConnCreatedEv B
.....
GC2: CallCtlTermConnTalkingEv TermB
|
| |
GC2: CiscoHuntConnCreatedEv P
GC2: ConnInProgressEv P
GC2: CallCtlConnOfferedEv P
GC2: ConnCreatedEv C
GC2: ConnOfferedEv C
GC2: TermConnRingingEv TermC
GC2: ConnConnectedEv P
GC2: CallCtlConnEstablishedEv P
GC2: CiscoHuntConnCreatedEv P
GC2: ConnInProgressEv P
GC2: CallCtlConnOfferedEv P
GC2: ConnAlertingEv P
GC2: CallCtlConnAlertingEv P
GC2: ConnDisconnectedEv P
GC2: CallCtlConnDisconnectedEv P
GC2: ConnConnectedEv P
GC2: CallCtlConnEstablishedEv P
GC2: ConnConnectedEv C
GC2: CallCtlConnEstablishedEv C
GC2: TermConnTalkingEv TermC
GC1: CiscoHuntConnCreatedEv P
GC1: ConnInProgressEv P
GC1: CallCtlConnOfferedEv P
GC1: ConnAlertingEv P
GC1: CallCtlConnAlertingEv P
|
| |
CiscoCallChangedEv final call -GC1, consult call=GC2
GC1: ConnCreatedEv C
GC1: ConnConnectedEv C
GC1: CallCtlConnEstablishedEv C
GC1: TermConnTalkingEv TC
GC1: ConnConnectedEv P
GC1: CallCtlConnEstablishedEv P
GC2: ConnDisconntedEv P
GC2: CallCtlConnDisconnectedEv P
GC2: ConnDisconntedEv B
GC2: CallCtlConnDisconnectedEv B
...
....
GC2: ConnDisconntedEv C
GC2: CallCtlConnDisconnectedEv C
..
GC2: CallInvalidEv
GC1: ConnDisconntedEv B
GC1: CallCtlConnDisconnectedEv B
GC1: TermConnDroppedEv TB
GC1: CallCtlTermConnDroppedEv TB
|
Scenario 19
Pickup from line group
Scenario
|
Result
|
A (1000) calls (GC1) Hunt Pilot B (2000), call is offered at C (3001). Application is observing A, C and D.
C and D are in the same pickup group.
D picks up the call ringing at C.
GC2 is the initial call at D.
A and D are connected on GC1
D goes off-hook and answers call from C.
|
GC1: CallActiveEv
GC1: ConnCreatedEv A
...
GC1: CallCtlTermConnTalkingEv A
GC1: ConnCreatedEv C
GC1: ConnInProgressEv C
GC1: CallCtlConnOfferedEv C
GC1: CiscoHuntConnCreatedEv B
GC1: ConnInProgressEv B
GC1: CallCtlConnOfferedEv B
GC1: ConnAlertingEv B
GC1: CallCtlConnAlertingEv B
GC1: TermConnRingingEv TC
GC1: CallCtlTermConnRingingEv TC
GC1: ConnAlertingEv C
GC1: CallCtlConnAlertingEv C
GC2: CallActiveEv
GC2: ConnCreatedEv D
GC2: ConnConnectedEv D
GC2: CallCtlConnInitiatedEv D
GC2: TermConnCreatedEv TD
GC2: TermConnActiveEv TD
GC2: CallCtlTermConnTalkingEv TD
GC2: CiscoCallChangedEv GC2->GC1
GC1: ConnCreatedEv D
GC1: ConnConnectedEv D
GC1: CallCtlConnInitiatedEv D
GC1: TermConnCreatedEv TD
GC1: TermConnActiveEv TD
GC1: CallCtlTermConnTalkingEv TD
|
| |
GC2: TermConnDroppedEv TD
GC2: CallCtlTermConnDroppedEv TD
GC2: ConnDisconnectedEv D
GC2: CallCtlConnDisconnectedEv D
GC2: CallInvalidEv
GC1: TermConnDroppedEv TC
GC1: TermConnTermConnDroppedEv TC
GC1: ConnDisconnectedEv B
GC1: CallCtlConnDisconnectedEv B
|

Note
Note: For this scenario, if the pickup is done from the address of the hunt member that is currently ringing with Auto Pickup disabled, then getCiscoHuntConnection() returns the connection to the hunt pilot. If the pickup is done from an address that is in the pickup group but is not the current ringing terminal, then getCiscoHuntConnection() returns null. If Auto Pickup is enabled, then getCiscoHuntConnection() always returns null after the call is picked up (it does not matter whether the pickup is done from the ringing terminal or from another address in the pickup group). This is true for Pickup, Group Pickup, Other Pickup, and Directed Call Pickup.
Scenario 20
Gpickup a ringing hunt list member.
Scenario
|
Result
|
A (1000) calls (GC1) Hunt Pilot B (2000), call is offered at C (3001). Application is observing A, C and D.
D picks up the call ringing at C.
GC2 is the initial call at D.
A and D are connected on GC1
|
GC1: CallActiveEv
GC1: ConnCreatedEv A
...
GC1: CallCtlTermConnTalkingEv A
GC1: ConnCreatedEv C
GC1: ConnInProgressEv C
GC1: CallCtlConnOfferedEv C
GC1: CiscoHuntConnCreatedEv B
GC1: ConnInProgressEv B
GC1: CallCtlConnOfferedEv B
|
D goes off-hook and dials the pickup number Z.
|
GC1: ConnAlertingEv B
GC1: CallCtlConnAlertingEv B
GC1: TermConnRingingEv TC
GC1: CallCtlTermConnRingingEv TC
GC1: ConnAlertingEv C
GC1: CallCtlConnAlertingEv C
GC2: CallActiveEv
GC2: ConnCreatedEv D
GC2: ConnConnectedEv D
GC2: CallCtlConnInitiatedEv D
GC2: TermConnCreatedEv TD
GC2: TermConnActiveEv TD
GC2: CallCtlTermConnTalkingEv TD
GC2: CallCtlConnDialingEv D
GC2: ConnCretatedEv Z
GC2: ConnInProgressEv Z
GC2: CallCtlConnOfferedEv Z
GC2: CallCtlConnEstablishedEv D
GC2: CiscoCallChangedEv GC2->GC1
GC1: ConnCreatedEv D
GC1: ConnCreatedEv Z
GC1: ConnConnectedEv D
GC1: CallCtlConnEstablishedEv D
GC1: TermConnCreatedEv TD
GC1: TermConnActiveEv TD
GC1: CallCtlTermConnTalkingEv TD
GC1: ConnInProgressEv Z
GC1: CallCtlConnOfferedEv Z
GC2: ConnDisconnectedEv Z
GC2: CallCtlConnDisconnectedEv Z
GC2: TermConnDroppedEv TD
|
| |
GC2: CallCtlTermConnDroppedEv TD
GC2: ConnDisconnectedEv D
GC2: CallCtlConnDisconnectedEv D
GC2: CallInvalidEv
GC1: ConnDisconnectedEv Z
GC1: CallCtlConnDisconnectedEv Z
GC1: TermConnDroppedEv TC
GC1: TermConnTermConnDroppedEv TC
GC1: ConnDisconnectedEv B
GC1: CallCtlConnDisconnectedEv B
|

Note
Note: For this scenario, if the pickup is done from the address of the hunt member that is currently ringing with Auto Pickup disabled, getCiscoHuntConnection() returns the connection to the hunt pilot. If the pickup is done from an address that is in the pickup group but is not the current ringing terminal, getCiscoHuntConnection() returns null. If the Auto Pickup is enabled, getCiscoHuntConnection() always returns null after the call is picked up (it does not matter whether the pickup is done from the ringing terminal or from another address in the pickup group). This is true for Pickup, Group Pickup, Other Pickup, and Directed Call Pickup.
Scenario 21
Redirect by a hunt member:
Scenario
|
Result
|
A (1000) calls (GC1) Hunt Pilot B (2000), call is offered at C (3001). Application is observing A, C and D.
C redirects the call to D. D is not a member.
|
GC1: CallActiveEv
GC1: ConnCreatedEv A
...
GC1: CallCtlTermConnTalkingEv A
GC1: ConnCreatedEv C
GC1: ConnInProgressEv C
GC1: CallCtlConnOfferedEv C
GC1: CiscoHuntConnCreatedEv B
GC1: ConnInProgressEv B
GC1: CallCtlConnEstablishedEv B
GC1: ConnAlertingEv B
|
C answers the call.
Application redirects the call from C to D
|
GC1: TermConnRingingEv TC
GC1: CallCtlTermConnRingingEv TC
GC1: ConnAlertingEv C
GC1: CallCtlConnAlertingEv C
GC1: CallCtlEstablishedEv C
GC1: ConnCreatedEv D
GC1: ConnInProgressEv D
GC1: CallCtlConnOfferedEv D
getCallControlCause() = CAUSE.REDIRECTED
GC1: CallCtlConnDisconnectedEv B
GC1: CallCtlConnDisconnected C
GC1: TermConnDisconnEv C
GC1: CallCtlTermConnDisconnectedEv C
getCallControlCause() = CAUSE.REDIRECTED
Call info:
Current calling A
Current Called D
LRP B type CiscoAdress.UNKNOWN
|
Calls moving between members
When call is moving between hunt members call could go to invalid state.
Scenario
|
Result
|
A (1000) calls (GC1) Hunt Pilot B (2000), call is offered at C (3001). C does not answer the call, call is offered at D.
Application is observing C and D
|
GC1: CallActiveEv
...
GC1: ConnCreatedEv C
GC1: ConnInProgressEv C
GC1: CallCtlConnOfferedEv C
GC1: ConnCreatedEv A
GC1: CiscoHuntConnCreatedEv B
GC1: CallCtlConnEstablishedEv B
GC1: TermConnRingingEv TC
|
Call moves to D.
|
GC1: CallCtlTermConnRingingEv TC
GC1: ConnAlertingEv C
GC1: CallCtlConnAlertingEv C
GC1: ConnCreatedEv D
GC1: ConnInProgressEv D
GC1: CallCtlConnOfferedEv D
GC1: ConnAlertingEv D
GC1: CallCtlConnAlertingEv D
GC1: TermConnCreatedEv TD
GC1: TermConnRingingEv TD
GC1: CallCtlTermConnRingingEv TD
GC1: TermConnDroppedEv TC
GC1: CallCtlTermConnDroppedEv TC
getCallControlCause() = CAUSE.REDIRECTED
GC1: ConnDisconnectedEvTC
GC1: CallCtlConnDisconnectedEv TC
getCallControlCause() = CAUSE.REDIRECTED
Call info:
Current calling A
Current Called D
LRP = null
|
Not all members are observed
If all members are not observed call could go to invalid state when moving between hunt members
Scenario
|
Result
|
A (1000) calls (GC1) Hunt Pilot B (2000), call is offered at C (3001). C does not answer the call, call moves to D, and to E where it is answered.
C, D, E and F are the members. Application is observing C and E.
|
GC1: CallActiveEv
GC1: ConnCreatedEv C
GC1: ConnInProgressEv C
|
Call moves to D (not unobserved).
|
GC1: CallCtlConnOfferedEv C
GC1: ConnCreatedEv A
GC1: CiscoHuntConnCreatedEv B
GC1: ConnConnectedEv B
GC1: CallCtlConnEstablishedEv B
GC1: ConnConnectedEv A
GC1: CallCtlConnEstablishedEv A
GC1: ConnAlertingEv C
GC1: CallCtlConnAlertingEv C
GC1: TermConnRingingEv TC
GC1: CallCtlTermConnRingingEv TC
GC1: ConnDisconnectedEv B
GC1: CallCtlConnDisconnectedEv B
getCallControlCause() = CAUSE.REDIRECTED
GC1: ConnDisconnectedEv A
GC1: CallCtlConnDisconnectedEv A
getCallControlCause() = CAUSE.REDIRECTED
GC1: TermConnDroppedEv TC
GC1: CallCtlTermConnDroppedEv
getCallControlCause() = CAUSE.REDIRECTED
GC1: ConnDisconnectedEv C
GC1: CallCtlConnDisconnectedEv C
getCallControlCause() = CAUSE.REDIRECTED
|
Call moves from D to E.
|
GC1: CallInvalidEv
GC1: CallActiveEv
GC1: ConnCreatedEv E
GC1: ConnInProgressEv E
GC1: CallCtlConnOfferedEv E
GC1: ConnCreatedEv A
|
E answers the call.
|
GC1: CiscoHuntConnCreatedEv B
GC1: ConnConnectedEv B
GC1: CallCtlConnEstablishedEv B
GC1: ConnConnectedEv A
GC1: CallCtlConnEstablishedEv A
GC1: ConnAlertingEv E
GC1: CallCtlConnAlertingEv E
GC1: TermConnRingingEv TE
GC1: CallCtlTermConnRingingEv TE
GC1: ConnConnectedEv E
GC1: CallCtlConnEstablishedEv E
GC1: TermConnActiveEv TE
GC1: CallCtlTermConnTalkingEv TE
Call info:
Current calling A
Current Called E
LRP = null
|
Not all members are observed but calling party is observed
Scenario
|
Result
|
A (1000) calls (GC1) Hunt Pilot B (2000), call is offered at C (3001). C does not answer the call, call moves to D, and to E where it is answered.
C, D, E and F are the members. Application is observing A, C and E.
Call moves to D (not unobserved).
Call moves from D to E.
E answers the call.
|
GC1: CallActiveEv
GC1: ConnCreatedEv A
GC1: ConnConnectedEv A
GC1: CallCtlConnInitiatedEv A
GC1: TermConnCreatedEv TA
GC1: TermConnActiveEv TA
GC1: CallCtlTermConnTalkingEv TA
GC1: CallCtlConnDialingEv A
GC1: CallCtlConnEstablishedEv A
GC1: CiscoHuntConnCreatedEv B
GC1; ConnInProgressEv B
GC1: CallCtlConnOfferedEv B
GC1: ConnCreatedEv C
GC1: ConnInProgressEv C
GC1: CallCtlConnOfferedEv C
GC1: ConnAlertingEv C
GC1: CallCtlConnAlertingEv C
GC1: TermConnRingingEv TC
GC1: CallCtlTermConnRingingEv TC
GC1: ConnConnectedEv B
GC1: CallCtlConnEstablishedEv B
GC1: TermConnDroppedEv TC
GC1: CallCtlTermConnDroppedEv
getCallControlCause() = CAUSE.REDIRECTED
GC1: ConnDisconnectedEv C
GC1: CallCtlConnDisconnectedEv C
getCallControlCause() = CAUSE.REDIRECTED
|
| |
GC1: ConnCreatedEv E
GC1: ConnInProgressEv E
GC1: CallCtlConnOfferedEv E
GC1: ConnAlertingEv E
GC1: CallCtlConnAlertingEv E
GC1: TermConnRingingEv TE
GC1: CallCtlTermConnRingingEv TE
GC1: ConnConnectedEv E
GC1: CallCtlConnEstablishedEv E
GC1: TermConnActiveEv TE
GC1: CallCtlTermConnTalkingEv TE
Call info:
Current calling A
Current Called E
LRP = null
|
Calling and all Hunt List members are observed. The call is not answered and goes to hunt no answer forward destination
Scenario
|
Result
|
A (1000) calls (GC1) Hunt Pilot B (2000), call is offered at C (3001). C does not answer the call, call moves to D, and to E. The call goes to hunt no answer forward destination F which is observed.
C, D, E and F are the members.Application is observing A, C, D, E and F.
Call moves to D.
Call moves from D to E.
Call moves to F.
|
GC1: CallActiveEv
GC1: ConnCreatedEv A
GC1: ConnConnectedEv A
GC1: CallCtlConnInitiatedEv A
GC1: TermConnCreatedEv TA
GC1: TermConnActiveEv TA
GC1: CallCtlTermConnTalkingEv TA
GC1: CallCtlConnDialingEv A
GC1: CallCtlConnEstablishedEv A
GC1: CiscoHuntConnCreatedEv B
GC1; ConnInProgressEv B
GC1: CallCtlConnOfferedEv B
GC1: ConnCreatedEv C
GC1: ConnInProgressEv C
GC1: CallCtlConnOfferedEv C
GC1: ConnAlertingEv C
GC1: CallCtlConnAlertingEv C
GC1: TermConnRingingEv TC
GC1: CallCtlTermConnRingingEv TC
GC1: ConnConnectedEv B
GC1: CallCtlConnEstablishedEv B
GC1: ConnCreatedEv D
GC1: ConnInProgressEv D
GC1: CallCtlConnOfferedEv D
GC1: ConnAlertingEv D
GC1: CallCtlConnAlertingEv D
GC1: TermConnCreatedEv TD
GC1: TermConnRingingEv TD
GC1: CallCtlTermConnRingingEv TD
|
| |
GC1: TermConnDroppedEv TC
GC1: CallCtlTermConnDroppedEv
getCallControlCause() = CAUSE.REDIRECTED
GC1: ConnDisconnectedEv C
GC1: CallCtlConnDisconnectedEv C
getCallControlCause() = CAUSE.REDIRECTED
GC1: ConnCreatedEv E
GC1: ConnInProgressEv E
GC1: CallCtlConnOfferedEv E
GC1: ConnAlertingEv E
GC1: CallCtlConnAlertingEv E
GC1: TermConnRingingEv TE
GC1: CallCtlTermConnRingingEv TE
GC1: TermConnDroppedEv TD
GC1: CallCtlTermConnDroppedEv TD
getCallControlCause() = CAUSE.REDIRECTED
GC1: ConnDisconnectedEv D
GC1: CallCtlConnDisconnectedEv D
getCallControlCause() = CAUSE.REDIRECTED
GC1: ConnCreatedEv F
GC1: ConnInProgressEv F
GC1: CallCtlConnOfferedEv F
GC1: ConnAlertingEv F
GC1: CallCtlConnAlertingEv F
GC1: TermConnRingingEv TF
GC1: CallCtlTermConnRingingEv TF
|
| |
GC1: ConnDisconnectedEv B
GC1: CallCtlConnDisconnectedEv B
GC1: TermConnDroppedEv TE
GC1: CallCtlTermConnDroppedEv TE
getCallControlCause() = CAUSE.REDIRECTED
GC1: ConnDisconnectedEv E
GC1: CallCtlConnDisconnectedEv E
getCallControlCause() = CAUSE.REDIRECTED
Call info:
Current calling A
Current Called F
LRP = null
|
Forward Hunt No Answer to another hunt pilot
Scenario
|
Result
|
A (1000) calls (GC1) Hunt Pilot HP1 (2000), call is offered at C (3001). C does not answer the call, call moves to D, and to E. The call goes to hunt no answer forward destination F which is observed.
C, D, E are the members .
HP2 is the forward hunt no answer destination.
H, L are its members. All parties are observed.
|
GC1: CallActiveEv
GC1: ConnCreatedEv A
GC1: ConnConnectedEv A
GC1: CallCtlConnInitiatedEv A
GC1: TermConnCreatedEv TA
GC1: TermConnActiveEv TA
GC1: CallCtlTermConnTalkingEv TA
GC1: CallCtlConnDialingEv A
GC1: CallCtlConnEstablishedEv A
GC1: CiscoHuntConnCreatedEv HP1
GC1; ConnInProgressEv HP1
GC1: CallCtlConnOfferedEv HP1
GC1: ConnCreatedEv C
GC1: ConnInProgressEv C
GC1: CallCtlConnOfferedEv C
GC1: ConnAlertingEv C
GC1: CallCtlConnAlertingEv C
GC1: TermConnRingingEv TC
GC1: CallCtlTermConnRingingEv TC
|
Call moves to D
Call moves from D to E.
|
GC1: ConnConnectedEv HP1
GC1: CallCtlConnEstablishedEv HP1
GC1: ConnCreatedEv D
GC1: ConnInProgressEv D
GC1: CallCtlConnOfferedEv D
GC1: ConnAlertingEv D
GC1: CallCtlConnAlertingEv D
GC1: TermConnCreatedEv TD
GC1: TermConnRingingEv TD
GC1: CallCtlTermConnRingingEv TD
GC1: TermConnDroppedEv TC
GC1: CallCtlTermConnDroppedEv
getCallControlCause() = CAUSE.REDIRECTED
GC1: ConnDisconnectedEv C
GC1: CallCtlConnDisconnectedEv C
getCallControlCause() = CAUSE.REDIRECTED
GC1: ConnCreatedEv E
GC1: ConnInProgressEv E
GC1: CallCtlConnOfferedEv E
GC1: ConnAlertingEv E
GC1: CallCtlConnAlertingEv E
GC1: TermConnRingingEv TE
GC1: CallCtlTermConnRingingEv TE
GC1: TermConnDroppedEv TD
GC1: CallCtlTermConnDroppedEv TD
getCallControlCause() = CAUSE.REDIRECTED
GC1: ConnDisconnectedEv D
GC1: CallCtlConnDisconnectedEv D
getCallControlCause() = CAUSE.REDIRECTED
|
Call goes t HP2, call is offered at H
Call moves from H to L
|
GC1: ConnCreatedEv H
GC1: ConnInProgressEv H
GC1: CallCtlConnOfferedEv H
GC1: CiscoHuntConnCreatedEv HP2
GC1: ConnAlertingEv H
GC1: CallCtlConnAlertingEv H
GC1: TermConnRingingEv TH
GC1: CallCtlTermConnRingingEv TH
GC1: ConnConnectedEv HP2
GC1: CallCtlConnEstablishedEv HP2
GC1: ConnCreatedEv L
GC1: ConnInProgressEv L
GC1: CallCtlConnOfferedEv L
GC1: ConnAlertingEv L
GC1: CallCtlConnAlertingEv L
GC1: TermConnRingingEv TL
GC1: CallCtlTermConnRingingEv TL
GC1: ConnDisconnectedEv HP1
GC1: CallCtlConnDisconnectedEv HP1
GC1: TermConnDroppedEv TH
GC1: CallCtlTermConnDroppedEv TH
getCallControlCause() = CAUSE.REDIRECTED
GC1: ConnDisconnectedEv H
GC1: CallCtlConnDisconnectedEv H
getCallControlCause() = CAUSE.REDIRECTED
Call info:
Current calling A
Current Called F
LRP = null
|
Consult transfer by a member to another Hunt Pilot
Scenario
|
Result
|
A (1000) calls (GC1) Hunt Pilot HP1 (2000), call is offered at C (3001). C answers the call and consult to HP2. L in HP2 is ringing. C completes the transfer.
C and L are observed
C answers the call
C consults with HP2 (GC2)
|
GC1: CallActiveEv
GC1: ConnCreatedEv C
GC1: ConnInProgressEv C
GC1: CallCtlConnOfferedEv C
GC1: ConnCreatedEv A
GC1: CiscoHuntConnCreatedEv HP1
GC1: ConnConnectedEv A
GC1: CallCtlConnEstablishedEv A
GC1: ConnConnectedEv HP1
GC1: CallCtlConnEstablishedEv HP1
GC1: ConnAlertingEv C
GC1: CallCtlConnAlertingEv C
GC1: TermConnRingingEv TC
GC1: CallCtlTermConnRingingEv TC
GC1: ConnConnectedEv C
GC1: CallCtlConnEstablishedEv C
GC1: TermConnActiveEv TC
GC1: CallCtlTermConnTalkingEv TC
GC1: CiscoTermConnSelectChangedEv TC
GC1: CallCtlTermConnHeldEv TC
GC2: ConsultCallActive
GC2: ConnCreatedEv C
GC2: ConnConnectedEv C
GC2: CallCtlConnInitiatedEv C
GC2: TermConnCreatedEv C
GC2: TermConnActiveEv C
GC2: CallCtlTermConnTalkingEv TC
GC2: CallCtlConnDialingEv TC
GC2: CallCtlConnEstablishedEv TC
|
Call is offered to L
C completes the transfer
|
GC2: CiscoHuntConnCreatedEv HP2
GC2: ConnInProgressEv HP2
GC2: CallCtlConnOfferedEv HP2
GC2: ConnCreatedEv L
GC2: ConnInProgressEv L
GC2: CallCtlConnOfferedEv L
GC2: ConnAlertingEv L
GC2: CallCtlConnAlertingEv L
GC2: TermConnRingingEv TL
GC2: CallCtlTermConnRingingEv TL
GC2: ConnConnectedEv HP2
GC2: CallCtlConnEstablishedEv HP2
GC2: CiscoCallChangedEv
GC1: ConnCreatedEv L
GC1: ConnAlertingEv L
GC1: CallCtlConnAlertingEv L
GC1: TermConnCreatedEv TL
GC1: TermConnRingingEv TL
GC1: CallCtlTermConnRingingEv TL
GC2: ConnDisconnectedEv HP2
GC2: CallCtlConnDisconnectedEv HP2
GC2: TermConnDroppedEv TL
GC2: CallCtlTermConnDroppedEv TL
GC2: ConnDisconnectedEv L
GC2: CallCtlConnDisconnectedEv L
GC2: TermConnDroppedEv C
GC2: CallCtlTermConnDroppedEv C
GC2: ConnDisconnectedEv C
GC2: CallCtlConnDisconnectedEv C
GC1: ConnDisconnectedEv HP1
GC1: CallCtlConnDisconnectedEv HP1
GC2: CallInvalidEv
GC1: CiscoHuntConnCreatedEv HP2
GC2: ConnConnectedEv HP2
GC2: CallCtlConnEstablishedEv HP2
|
L answers the call
|
GC1: TermConnDroppedEv C
GC1: CallCtlTermConnDroppedEv C
GC1: ConnDisconnectedEv C
GC1: CallCtlConnDisconnectedEv C
GC1: ConnConnectedEv L
GC1: CallCtlConnEstablishedEv L
GC1: TermConnActiveEv L
GC1: CallCtlTermConnTalkingEv TL
|
The following call scenarios are generally un-supported and applications are encouraged to enable the huntlist feature and adapt to the event flows described above.
Following are the expected events when the feature is disabled.
Scenario 23
Hunt list feature is disabled.
Basic call to hunt pilot
Scenario
|
Result
|
A (1000) calls Hunt Pilot P (2000), call is offered at C (3001) and is answered. Application is observing A. GCID is the call is GC1.
C answers the call
|
GC1:CallActiveEv
GC1:ConnCreatedEv A
GC1:ConnConnectedEv A
GC1:CallCtlConnInitiatedEv A
GC1:TermConnCreatedEv TermA
GC1:TermConnActiveEv TermA
GC1:CallCtlTermConnTalkingEv TermA
GC1: CallCtlConnEstablishedEv A
GC1: ConnCreatedEv P
GC1: ConnOfferedEv P
...
GC1: ConnAlertingEv P
GC1: ConnConnected P
GC1: CallCtlConnEstablishedEv A
|
bvHunt list feature is disabled
Scenario 24
Consult - Transfer Scenario
Scenario
|
Result
|
A (1000) calls B(1001), consult to Hunt Pilot P (2000), call is offered at C (3001) and is answered. B completes the transfer. Application is observing A and B.
GC1 is the GCID of the final call.
GC2 is the consult call
B answers the call
B consults to Hunt pilot
C answers the call
|
GC1:CallActiveEv
GC1:ConnCreatedEv A
GC1:ConnConnectedEv A
GC1:CallCtlConnInitiatedEv A
GC1:TermConnCreatedEv TermA
GC1:TermConnActiveEv TermA
GC1:CallCtlTermConnTalkingEv TermA
GC1: CallCtlConnEstablishedEv A
GC1: ConnCreatedEv B
GC1: ConnOfferedEv B
...
GC1: TermConnRingingEv TermB
GC1: TermConnTalkingEv TermB
GC1: CallCtlTermConnHeldEv TermB
GC2: CiscoConsultCallActiveEv
GC2: ConnCreatedEv B
.....
GC2: CallCtlTermConnTalkingEv TermB
GC2: ConnCreatedEv P
..
..
GC2: ConnAlertingEv P
GC2: CallCtlConnEstablishedEv P
|
Transfer is completed
|
CiscoTransferStartEv final call -GC1, consult call=GC2
GC1: ConnCreatedEv P
CiscoCallChangedEv GC2=>GC1
GC2: ConnDisconnectedEv P
GC2: ConnDisconntedEv B
GC2: CallCtlConnDisconnectedEv B
...
....
GC2: CallInvalidEv
GC1: CallCtlConnEstablishedEv P
GC1: ConnDisconnectedEv B
CiscoTransferEndEv
|
Scenario 25
Hunt list feature is disabled
Consult - Transfer Scenario
Scenario
|
Result
|
A (1000) calls B(1001), consult to Hunt Pilot P (2000), call is offered at C (3001) and is answered. B completes the transfer. Application is observing A, B and C.
|
UnSupported Configuration
|
Hunt list Connected Number
Hunt pilot B configured with "Display Line Group Member DN as Connected Party" enabled.B has HL1 as its hunt list which has C and D as its hunt members
Scenario
|
Expected Results
|
Call Info
|
A calls B, Application is observing A only. GC1 is the GCID of the call.
Call is offered on the huntmemeber C and C answers
|
GC1: CallActiveEv
GC1: ConnCreatedEv A
GC1:ConnConnectedEv A
GC1:CallCtlConnInitiatedEv A
GC1:TermConnCreatedEv TermA
GC1:TermConnActiveEv TermA
GC1:CallCtlTermConnTalkingEv TermA
GC1:CallCtlConnDialingEv A
GC1:CallCtlConnEstablishedEv A
GC1: CiscoHuntConnCreatedEv B
GC1: ConnInProgressEv B
GC1: CallCtlConnOfferedEv B
GC1: ConnAlertingEv B
GC1: CallCtlConnAlertingEv B
GC1: ConnCreatedEv C
GC1: ConnConnectedEv C
GC1: CallCtlConnEstablishedEv C
GC1: ConnConnectedEv B
GC1: CallCtlConnEstablishedEv B
|
Call.getCurrentCallingAddress = A
Call.getModifiedCallingAddress= A
Call.getCurrentCalledAddress = null
Call.getModifiedCalledAddress = null
Call.getCurrentCallingAddress = A
Call.getModifiedCalledAddress= A
Call.getCurrentCalledAddress = B
Call.getModifiedCalledAddress = B
Call.getCurrentCallingAddress = A
Call.getModifiedCalledAddress= A
Call.getCurrentCalledAddress = B
Call.getModifiedCalledAddress = C
|
A calls Hunt Pilot B, call is offered at C. Application is observing C. GC1 is the GCID of the call.
C answers the call
|
GC1: CallActiveEv
GC1: ConnCreatedEv C
GC1: ConnInProgressEv C
GC1: CallCtlConnOfferedEv C
GC1: ConnCreatedEv A
GC1: CiscoHuntConnCreatedEv B
GC1: ConnConnectedEv A
GC1: CallCtlConnEstablishedEv A
GC1: ConnConnectedEv B
GC1: CallCtlConnEstablishedEv B
GC1: CallCtlConnAlertingEv C
GC1:TermConnCreatedEv TermC
GC1: TermConnRingingEv TermC
GC1: CallCtlTermConnRingingEvTermC:
GC1: ConnConnectedEv C
GC1: CallCtlConnEstablishedEv C
GC1: TermConnActiveEv TermC
CG1: CallCtlTermConnTalkingEv termC
|
Call.getCurrentCallingAddress = A
Call.getModifiedCalledAddress= A
Call.getCurrentCalledAddress = B
Call.getModifiedCalledAddress = B
Call.getCurrentCallingAddress = A
Call.getModifiedCalledAddress= A
Call.getCurrentCalledAddress = B
Call.getModifiedCalledAddress = C
|
A calls Hunt Pilot B, call is offered at C Application is observing A and C. GC1 is the GCID of the call.
C answers the call.
|
GC1: CallActiveEv
GC1: ConnCreatedEv A
...
GC1: CallCtlTermConnTalkingEv A
GC1: ConnCreatedEv C
GC1: ConnInProgressEv C
GC1: CallCtlConnOfferedEv C
GC1: CiscoHuntConnCreatedEv B
GC1: ConnInProgressEv B
GC1: CallCtlConnOfferedEv B
GC1: ConnAlertingEv B
GC1: CallCtlConnAlertingEv B
GC1: ConnAlertingEv C
GC1: CallCtlConnAlertingEv C
GC1:TermConnCreatedEv TermC
GC1: TermConnRingingEv TermC
GC1: CallCtlTermConnRingingEvTermC
GC1:CallCtlTermConnTalkingEv TermC
|
Call.getCurrentCallingAddress = A
Call.getModifiedCalledAddress= A
Call.getCurrentCalledAddress = B
Call.getModifiedCalledAddress = C
|
A calls Hunt Pilot B, call is offered at C and then to D Application is observing A, C and D. GC1 is the GCID of the call.
Call moves to D and D answers
|
GC1: CallActiveEv
GC1: ConnCreatedEv A
...
GC1: CallCtlTermConnTalkingEv A
GC1: ConnCreatedEv C
GC1: ConnInProgressEv C
GC1: CallCtlConnOfferedEv C
GC1: CiscoHuntConnCreatedEv B
GC1: ConnInProgressEv B
GC1: CallCtlConnOfferedEv B
GC1: ConnAlertingEv B
GC1: CallCtlConnAlertingEv B
GC1: ConnAlertingEv C
GC1: CallCtlConnAlertingEv C
GC1:TermConnCreatedEv TermC
GC1: TermConnRingingEv TermC
GC1: CallCtlTermConnRingingEvTermC
GC1: ConnCreatedEv D
GC1: ConnAlertingEv D
GC1: ConnDisConnEv C
GC1: CallCtlConnDiscConnEv C
GC1:TermConnDroppedEv TermC
GC1: CallCtlTermConnDroppedEv TermC
GC1: ConnConnectedEv D
GC1: CallCtlConnEstablishedEv D
GC1: TermConnActiveEv TermD
CG1: CallCtlTermConnTalkingEv termD
|
Call.getCurrentCallingAddress = A
Call.getModifiedCalledAddress= A
Call.getCurrentCalledAddress = B
Call.getModifiedCalledAddress = B
Call.getCurrentCallingAddress = A
Call.getModifiedCalledAddress= A
Call.getCurrentCalledAddress = B
Call.getModifiedCalledAddress = D
|
A calls Hunt Pilot B, call is offered at C Application is observing A,C and D. GC1 is the GCID of the call.
C answers the call.
C consults D and completes transfer
|
GC1: CallActiveEv
GC1: ConnCreatedEv A
...
GC1: CallCtlTermConnTalkingEv A
GC1: ConnCreatedEv C
GC1: ConnInProgressEv C
GC1: CallCtlConnOfferedEv C
GC1: CiscoHuntConnCreatedEv B
GC1: ConnInProgressEv B
GC1: CallCtlConnOfferedEv B
GC1: ConnAlertingEv B
GC1: CallCtlConnAlertingEv B
GC1: ConnAlertingEv C
GC1: CallCtlConnAlertingEv C
GC1:TermConnCreatedEv TermC
GC1: TermConnRingingEv TermC
GC1: CallCtlTermConnRingingEvTermC
GC1:CallCtlTermConnTalkingEv TermC
GC2: CallActiveEv
GC2: ConnCreatedEv C
...
GC2: CallCtlTermConnTalkingEv A
|
Call.getCurrentCallingAddress = A
Call.getModifiedCalledAddress= A
Call.getCurrentCalledAddress = B
Call.getModifiedCalledAddress = C
|
| |
GC2: ConnCreatedEv D
GC2: ConnInProgressEv D
GC2: CallCtlConnOfferedEv D
...
GC2: ConnAlertingEv D
GC2: CallCtlConnAlertingEv D
GC2:TermConnCreatedEv TermD
GC2: TermConnRingingEv TermD
GC2:CallCtlTermConnRingingEvTermD
GC2:CallCtlTermConnTalkingEv TermD
CiscoTransferStartEv
GC1 ConnCreatedEv D
GC1: CallCtlConnEstablishedEv D
GC1:CallCtlTermConnTalkingEv TermD
...
...
GC1 ConnDroppedEv C
GC1 ConnDroppedEv B
...
GC2 CallInvalidEv
CiscoTransferEndEv
|
Call.getCurrentCallingAddress = C
Call.getModifiedCalledAddress= C
Call.getCurrentCalledAddress = D
Call.getModifiedCalledAddress = D
Call.getCurrentCallingAddress = A
Call.getModifiedCalledAddress= A
Call.getCurrentCalledAddress = D
Call.getModifiedCalledAddress = D
|
A calls D.
D calls HP B, call is offered on C
|
GC1: CallActiveEv
GC1: ConnCreatedEv A
...
GC1: CallCtlTermConnTalkingEv A
GC1: ConnCreatedEv D
GC1: ConnInProgressEv D
GC1: CallCtlConnOfferedEv D
GC1: ConnAlertingEv D
GC1: CallCtlConnAlertingEv D
GC1:TermConnCreatedEv TermD
GC1: TermConnRingingEv TermD
GC1: CallCtlTermConnRingingEvTermD
GC1 CallCtlConnEstablishedEv D
GC1:CallCtlTermConnTalkingEv TermD
GC2: CallActiveEv
GC2: ConnCreatedEv D
...
GC2: CallCtlTermConnTalkingEv D
GC2: ConnCreatedEv C
GC2: ConnInProgressEv C
GC2: CallCtlConnOfferedEv C
GC2: ConnCreatedEv D
GC2: CiscoHuntConnCreatedEv B
GC2: ConnConnectedEv D
GC2: CallCtlConnEstablishedEv A
GC2: ConnConnectedEv B
GC2: CallCtlConnEstablishedEv B
|
Call.getCurrentCallingAddress = A
Call.getModifiedCalledAddress= A
Call.getCurrentCalledAddress = D
Call.getModifiedCalledAddress = D
|
C answers the call
D completes transfer
|
GC2: CallCtlConnAlertingEv C
GC2:TermConnCreatedEv TermC
GC2: TermConnRingingEv TermC
GC2: CallCtlTermConnRingingEvTermC:
GC2 CallCtlConnEstablishedEv C
GC2 CallCtlTermConnTalkingEv termC
CiscoTransferStartEv
GC1 ConnCreatedEv C
GC1 CiscoHuntConnectionCreatedEv B
GC1: ConnConnectedEv B
GC1: CallCtlConnEstablishedEv B
GC1: CallCtlConnEstablishedEv C
GC1:CallCtlTermConnTalkingEv TermD
...
...
GC1 ConnDroppedEv D
...
GC2 CallInvalidEv
CiscoTransferEndEv
|
Call.getCurrentCallingAddress = D
Call.getModifiedCalledAddress= B
Call.getCurrentCallingAddress = D
Call.getModifiedCalledAddress = B
Call.getCurrentCallingAddress = D
Call.getModifiedCalledAddress= B
Call.getCurrentCallingAddress = D
Call.getModifiedCalledAddress = C
Call.getCurrentCallingAddress = A
Call.getModifiedCalledAddress= A
Call.getCurrentCalledAddress = B
Call.getModifiedCalledAddress = C
|
Intercom
Configuration: terminal T1 has intercom line A with TargetDN B, label Bob, Unicode label UBob. Terminal T2 has intercom line B. Application provider has both T1 and T2 in control list.
C, Carol, UCarol is in the same intercom group as A, and B.
D, David, UDavid is not in the same intercom group as A, B and C.
Action
|
Result
|
Call Info
|
Application opens provider, after provider comes in service, application issues provider.getIntercomAddresses()
|
JTAPI returns A and B as array of CiscoIntercomAddress.
|
N.A
|
Application issues CiscoIntercomAddress.getIntercomTargetDN(),
CiscoIntercomAddress.getIntercomTargetLabel() and CiscoIntercomAddress.getIntercomUnicodeTarget Label() request at A.
|
JTAPI will return B as target DN and Bob and UBob as target label.
|
N.A
|
Application issues CiscoIntercomAddress.getDafaultIntercomTargetDN(),
CiscoIntercomAddress.getDefaultIntercomTargetLabel() and CiscoIntercomAddress.getDefaultIntercomUnicodeTargetLabel() request at A.
|
JTAPI will return B as target DN and Bob and UBob as target label.
|
N.A
|
Application issues CiscoIntercomAddres.setIntercomTarget(C, Carol, UCarol) on intercom address A.
After successful response, Application issues CiscoIntercomAddress.getIntercomTargetDN(), CiscoIntercomAddress.getIntercomTargetLabel() and CiscoIntercomAddress.getIntercomUnicodeTargetLabel() request at A.
|
AddressObserver at A: CiscoAddrIntercomInfoChangedEv Cause: CAUSE_NORMAL
JTAPI will return C as target DN and Carol and UCarol as target label.
|
N.A
|
Application1 is observing CiscoIntercomAddress A and has AddressObserverAdded to it. Application2 sets intercom target, label to C, Carol, UCarol.
|
App1 : AddressObserver at A: CiscoAddrIntercomInfoChangedEv Cause: CAUSE_NORMAL
|
N.A
|
After above step Application1 issues CiscoIntercomAddres.setIntercomTarget(B, Bob, UBob) on intercom address A.
|
Exception will be thrown to application as another application instance has already set the target to C, Carol, UCarol.
|
N.A
|
Intercom target DN and label for intercom address A is set to default, now application issues CiscoIntercomAddres.setIntercomTarget(D, David, UDavid) on intercom address A.
|
Exception will be thrown as D, David, UDavid is not in the same intercom group.
|
N.A
|
Application has set intercom target DN and label to C, Carol, UCarol for intercom address A. Now CTI Manager goes out of service, JTAPI failover to another CTIManager node. After intercom address A come back in service, JTAPI will restore intercom target DN and label to C, Carol, UCarol respectively.
Application issues CiscoIntercomAddress.getIntercomTargetDN(), CiscoIntercomAddress.getIntercomTargetLabel() and CiscoIntercomAddress.getIntercomUnicodeTargetLabel() request at A.
|
AddressObserver at A: CiscoAddrIntercomInfoChangedEv Cause: CAUSE_NORMAL
JTAPI will return C as target DN and Carol and UCarol as target label.
|
N.A
|
Application has set intercom target DN and label to C, Carol for intercom address A. Now CTI Manager goes out of service, JTAPI failsover to another CTIManager node. After intercom address A come back in service, JTAPI tries to restore intercom target DN, label and UnicodeLabel to C, Carol, UCarol respectively, however due to race condition some other application has already set the target DN, JTAPI get failure response from CTI.
|
AddressObserver at A: CiscoAddrIntercomInfoRestorationFailedEv Cause: CAUSE_NORMAL
|
N.A
|
Application is connected to a CTIManager node, Cisco Unified Communications Manager node goes down, intercom device failsover to another Cisco Unified Communications Manager node, after intercom address comes back in service. CTIManager should restore intercom target Dn and label.
Application issues CiscoIntercomAddress.getIntercomTargetDN(), CiscoIntercomAddress.getIntercomLabel() and CiscoIntercomAddress.getIntercomUnicodeTargetLabel() request at A.
|
AddressObserver at A:
CiscoAddrIntercomInfoChangedEv Cause: CAUSE_NORMAL
JTAPI will return C as target DN and Carol and UCarol as target label.
|
N.A
|
Application is connected to a CTIManager node, Cisco Unified Communications Manager node goes down, intercom device failsover to another Cisco Unified Communications Manager node, after intercom address comes back in service. CTIManager tries to restore intercom target Dn and label, however due to race condition some other application has already set the target Dn and Label, hence CTI is not able to restore the intercom target DN and label.
|
AddressObserver at A: CiscoAddrIntercomInfoRestorationFailedEv Cause: CAUSE_NORMAL
|
N.A
|
Application is observing intercom addresses A and B. A has target set to B. User initiates intercom call.
Intercom call is successful.
|
CallObserver at A and B: CallActiveEv GC1 Cause: CAUSE_NORMALConnCreatedEv A, Cause: CAUSE_NORMALConnConnectedEv A Cause: CAUSE_NORMAL
CallCtlConnInitiatedEv A Cause: CAUSE_NORMAL CallCtlCause=CAUSE_NORMALTermConnCreatedEv A- T1 Cause: CAUSE_NORMAL TermConnActiveEv A- T1 Cause: CAUSE_NORMAL
CallCtlTermConnTalkingEv A - T1 Cause: CAUSE_NORMAL
CallCtlCause=CAUSE_NORMAL
CallCtlConnDialingEv A Cause: CAUSE_NORMAL
CallCtlCause=CAUSE_NORMAL
CallCtlConnEstablishedEv A Cause: CAUSE_NORMAL
CallCtlCause=CAUSE_NORMAL
ConnCreatedEv B, Cause: CAUSE_NORMAL ConnConnectedEv B Cause: CAUSE_NORMAL CallCtlConnOfferedEv B Cause: CAUSE_NORMAL CallCtlCause=CAUSE_NORMAL
CallCtlConnEstablishedEv B Cause: CAUSE_NORMAL CallCtlCause=CAUSE_NORMAL
|
Cg=A
Cd=B
CurrentCg=A
CurredCd=B
LRP = null
|
| |
TermConnCreatedEv B- T2 Cause: CAUSE_NORMAL TermConnPassiveEv B - T2 Cause: CAUSE_NORMAL
CallCtlTermConnBridgeEv B - T2 Cause: CAUSE_NORMAL CallCtl Cause=CAUSE_NORMAL
CiscoToneChangedEv - T1 -GC1
CiscoToneChangedEv - T2 -GC1
CiscoRTPOutputStartedEv - T1
CiscoRTPInputStartedEv - T2
|
|
User at B presses talkback softkey to get connected to intercom initiator.
|
CallObserver at A and B: TermConnActiveEv B - T2 Cause: CAUSE_NORMAL CallCtlTermConnTalkingEv B - T2 Cause: CAUSE_NORMAL CallCtlCause=CAUSE_NORMAL
CiscoRTPOutputStartedEv - T2CiscoRTPInputStartedEv - T1
|
Cg=A
Cd=B
CurrentCg=A
CurredCd=B
LRP = null
|
Intercom address A has target defined as B. Application initiates an intercom call by calling interface Address.ConnectIntercom() with dialeddigit as empty.
Intercom call is successful.
|
CallObserver at A and B :
CallActiveEv GC1 Cause: CAUSE_NORMAL ConnCreatedEv A Cause: CAUSE_NORMAL ConnConnectedEv A Cause: CAUSE_NORMAL CallCtlConnInitiatedEv A Cause: CAUSE_NORMAL CallCtlCause=CAUSE_NORMAL
TermConnCreatedEv T1 Cause: CAUSE_NORMAL TermConnActiveEv T1 Cause: CAUSE_NORMAL CallCtlTermConnTalkingEv T1 Cause: CAUSE_NORMAL CallCtlCause=CAUSE_NORMAL
CallCtlConnDialingEv A Cause: CAUSE_NORMAL CallCtlConnEstablishedEv A Cause: CAUSE_NORMAL CallCtlCause=CAUSE_NORMAL
ConnCreatedEv B Cause: CAUSE_NORMAL C ConnConnectedEv B Cause: CAUSE_NORMAL CallCtlConnOfferedEv B Cause: CAUSE_NORMAL CallCtlCause=CAUSE_NORMAL
CallCtlConnEstablishedEv B Cause: CAUSE_NORMAL CallCtlCause=CAUSE_NORMAL
TermConnCreatedEv B- T2 Cause: CAUSE_NORMAL TermConnPassiveEv B - T2 Cause: CAUSE_NORMAL CallCtlTermConnBridgeEv B - T2 Cause: CAUSE_NORMAL CallCtlCause=CAUSE_NORMAL
|
Cg=A
Cd=B
CurrentCg=A
CurredCd=B
LRP = null
|
| |
CiscoToneChangedEv - T1 -GC1
CiscoToneChangedEv - T2 -GC1
CiscoRTPOutputStartedEv - T1
CiscoRTPInputStartedEv - T2
|
|
Application initiate TerminalConnection.join() request on TerminalConnection of B to talkback.
Request is successful.
|
CallObserver at A and B :
TermConnActiveEv B - T2 Cause: CAUSE_NORMAL CallCtlTermConnTalkingEv B - T2 Cause: CAUSE_NORMAL CallCtlCause=CAUSE_NORMAL
CiscoRTPOutputStartedEv - T2 CiscoRTPInputStartedEv - T1
|
Cg=A
Cd=B
CurrentCg=A
CurredCd=B
LRP = null
|
Application tried to put the intercom call on hold at A by issuing TerminalConnection.hold()
|
PlatformException will be thrown, intercom call stay connected.
|
N.A
|
Application tried to accept intercom call at intercom target by issuing connection.accept() at connection of B.
|
PlatformException will be thrown, intercom call stay connected.
|
N.A
|
Application tried to reject intercom call at intercom target by issuing connection.reject() at connection of B.
|
Intercom call will be disconnected.
|
N.A
|
Application tried to redirect intercom call by issuing connection.redirect() at connection of A or B.
|
PlatformException will be thrown, intercom call stay connected.
|
N.A
|
Application tried to park call by issuing connection.park() at Connection of A or B.
|
PlatformException will be thrown, intercom call stay connected.
|
N.A
|
Terminal T1 has intercom address A which has intercom target set to B.
Terminal T2 has intercom address B and another address C. C is in call with D, GC1.
A initiates intercom call to B, intercom call is auto-answered at B
|
No event to GC1 call, it will stay in Connected State.
|
N.A
|
Application tries to set forward on intercom address A by issuing CiscoIntercomAddress. setForwarding ()
|
PlatformException will be thrown.
|
N.A
|
Application tries to setRingerStatus on intercom address A by issuing CiscoIntercomAddress. setRingerStatus()
|
PlatformException will be thrown.
|
N.A
|
Application tries to setMessageWaiting on intercom address A by issuing CiscoIntercomAddress.setMessageWaiting()
|
PlatformException will be thrown.
|
N.A
|
Application tries to setAutoAcceptEnabled on intercom address A at CTIPort by issuing CiscoIntercomAddress. setAutoAcceptStatus ()
|
PlatformException will be thrown.
|
N.A
|
Application tries to getAutoAcceptEnabled on intercom address A at CTIPort by issuing CiscoIntercomAddress. getAutoAcceptStatus ()
|
PlatformException will be thrown.
|
N.A
|
DeviceState Whisper Scenario
Configuration: Terminal T1 has intercom address B, Terminal T2 has intercom address A. Application has set CiscoTermEvFilter to enable CiscoTermDeviceStateWhisperEv as well as all other DeviceState filters on T1 and T2. Application had added Terminal observer on both T1 and T2.
Action
|
Events
|
Call Info
|
Intercom address A has target defined as B. Application initiates an intercom call by calling interface Address.ConnectIntercom() with dialeddigit as empty.
|
Event received at TerminalObserver of T1
CiscoTermDeviceStateActiveEv T1 Cause: CAUSE_NORMAL
Event received at TerminalObserver of T2
CiscoTermDeviceStateWhisperEv T1 Cause: CAUSE_NORMAL
|
N.A
|
Application issue join() request on TerminalConnection of T2 (intercomTarget) to talkback to T1(intecomInitiator)
|
Event received at TerminalObserver of T1
None.
Event received at TerminalObserver of T2
CiscoTermDeviceStateActiveEv T1 Cause: CAUSE_NORMAL
|
N.A
|
Terminal T2 already have intercom target call, Application enables CiscoTermFilter for CiscoTermDeviceStateWhisperEv.
|
Event received at TerminalObserver of T2
CiscoTermDeviceStateWhisperEv T1 Cause: CAUSE_SNAPSHOT
|
N.A
|
iSac Codec
CiscoMediaTerminal Static Registration with iSac codec
Actions
|
Events
|
Call Info
|
1. Observe both A(CiscoMediaTerminal) and B
Static Register A with media capability as CiscoMediaCapability.ISAC
A calls B
|
CiscoTermInServirceEv for TA
CiscoAddrInServiceEv for A
|
|
B answers
|
GC1: CallActiveEv
GC1: ConnCreatedEv for A
GC1: ConnConnectedEv for B
GC1: CallCtlConnInitiatedEv for A
GC1: TermConnCreatedEv for TA
GC1: TermConnActiveEvent for TA
GC1: CallCtlTermConnTalkingEv for TA
GC1: CallCtlConnDialingEv for A
GC1: CallCtlConnEstablishedEv for B
|
|
| |
GC1: ConnCreatedEv for B
GC1: ConnInProgressEv for B
GC1: CallCtlConnOfferedEv for B
GC1: ConnAlertingEv for B
GC1: CallCtlConnAlertingEv for B
GC1: TermConnCreatedEv for TB
GC1: TermConnRingingEv for TB
GC1: CallCtlTermConnRingingEv for TB
|
|
| |
GC1: ConnConnectedEv for B
GC1: CallCtlConnEstablishedEv for B
GC1: TermConnActiveEv for TB
GC1: CallCtlTermConnTalkingEv for TB
TB: CiscoRTPOutputStartedEv for TB
TA: CiscoRTPInputStartedEv for TA
TA: CiscoRTPOutputStartedEv for TB
TB: CiscoRTPInputStartedEv for TA
|
(CiscoRTPInputStartedEv for TA).getRTPInputProperties().getPayloadType() will return CiscoRTPPayload.ISAC
(CiscoRTPInputStartedEv for TA).getRTPInputProperties().getBitRate() is not deterministic
(CiscoRTPInputStartedEv for TA).getRTPInputProperties().getPacketSize() is not deterministic
(CiscoRTPOutputStartedEv for TA).getRTPOutputProperties().getPayloadType() will return CiscoRTPPayload.ISAC
(CiscoRTPOutputStartedEv for TA).getRTPOutputProperties().getBitRate() is not deterministic
(CiscoRTPOutputStartedEv for TA).getRTPOutputProperties().getPacketSize() is not deterministic
|
CiscoMediaTerminal Dynamic Registraiton with iSac codec
Actions
|
Events
|
Call Info
|
1. Observe both A and B (CiscoMediaTerminal)
Dynamic Register B with media capability as CiscoMediaCapability.ISAC
|
CiscoTermInServirceEv for TB
CiscoAddrInServiceEv for B
|
|
A calls B
|
GC1: CallActiveEv
GC1: ConnCreatedEv for A
GC1: ConnConnectedEv for B
GC1: CallCtlConnInitiatedEv for A
GC1: TermConnCreatedEv for TA
GC1: TermConnActiveEvent for TA
GC1: CallCtlTermConnTalkingEv for TA
|
|
| |
GC1: CallCtlConnDialingEv for A
GC1: CallCtlConnEstablishedEv for B
GC1: ConnCreatedEv for B
GC1: ConnInProgressEv for B
GC1: CallCtlConnOfferedEv for B
GC1: ConnAlertingEv for B
GC1: CallCtlConnAlertingEv for B
GC1: TermConnCreatedEv for TB
GC1: TermConnRingingEv for TB
GC1: CallCtlTermConnRingingEv for TB
|
|
B answers
App sets RTP params on B
|
GC1: ConnConnectedEv for B
GC1: CallCtlConnEstablishedEv for B
GC1: TermConnActiveEv for TB
GC1: CallCtlTermConnTalkingEv for TB
TB: CiscoMediaOpenLogicalChannelEv for TB
TB: CiscoRTPOutputStartedEv for TA
TA: CiscoRTPInputStartedEv for TB
TA: CiscoRTPOutputStartedEv for TB
TB: CiscoRTPInputStartedEv for TA
|
CiscoMediaOpenLogicalChannelEv.getPayloadType() will return CiscoRTPPayload.ISAC
CiscoMediaOpenLogicalChannelEv.getPacketSize() is not deterministic
(CiscoRTPInputStartedEv for TB).getRTPInputProperties().getPayloadType() will return CiscoRTPPayload.ISAC
(CiscoRTPInputStartedEv for TB).getRTPInputProperties().getBitRate() is not deterministic
(CiscoRTPInputStartedEv for TB).getRTPInputProperties().getPacketSize() is not deterministic
(CiscoRTPOutputStartedEv for TB).getRTPOutputProperties().getPayloadType() will return CiscoRTPPayload.ISAC
(CiscoRTPOutputStartedEv for TB).getRTPOutputProperties().getBitRate() is not deterministic
(CiscoRTPOutputStartedEv for TB).getRTPOutputProperties().getPacketSize() is not deterministic
|
CiscoRouteTerminal Dynamic Registration with iSac codec
Actions
|
Events
|
Call Info
|
1. Observe both A and B (CiscoRouteTerminal)
Dynamic Register B with media capability as CiscoMediaCapability.ISAC
|
CiscoTermInServirceEv for TB
CiscoAddrInServiceEv for B
|
|
A calls B
|
GC1: CallActiveEv
GC1: ConnCreatedEv for A
GC1: ConnConnectedEv for B
GC1: CallCtlConnInitiatedEv for A
GC1: TermConnCreatedEv for TA
GC1: TermConnActiveEvent for TA
GC1: CallCtlTermConnTalkingEv for TA
GC1: CallCtlConnDialingEv for A
GC1: CallCtlConnEstablishedEv for B
GC1: ConnCreatedEv for B
GC1: ConnInProgressEv for B
GC1: CallCtlConnOfferedEv for B
GC1: ConnAlertingEv for B
GC1: CallCtlConnAlertingEv for B
GC1: TermConnCreatedEv for TB
GC1: TermConnRingingEv for TB
GC1: CallCtlTermConnRingingEv for TB
|
|
B answers
|
GC1: ConnConnectedEv for B
GC1: CallCtlConnEstablishedEv for B
GC1: TermConnActiveEv for TB
GC1: CallCtlTermConnTalkingEv for TB
TB: CiscoMediaOpenLogicalChannelEv for TB
|
CiscoMediaOpenLogicalChannelEv.getPayloadType() will return CiscoRTPPayload.ISAC
CiscoMediaOpenLogicalChannelEv.getPacketSize() is not deterministic
|
App sets RTP params on B
|
TB: CiscoRTPOutputStartedEv for TA
TA: CiscoRTPInputStartedEv for TB
TA: CiscoRTPOutputStartedEv for TB
TB: CiscoRTPInputStartedEv for TA
|
(CiscoRTPInputStartedEv for TB).getRTPInputProperties().getPayloadType() will return CiscoRTPPayload.ISAC
(CiscoRTPInputStartedEv for TB).getRTPInputProperties().getBitRate() is not deterministic
(CiscoRTPInputStartedEv for TB).getRTPInputProperties().getPacketSize() is not deterministic
(CiscoRTPOutputStartedEv for TB).getRTPOutputProperties().getPayloadType() will return CiscoRTPPayload.ISAC
(CiscoRTPOutputStartedEv for TB).getRTPOutputProperties().getBitRate() is not deterministic
(CiscoRTPOutputStartedEv for TB).getRTPOutputProperties().getPacketSize() is not deterministic
|
JTAPI Cisco Unified IP 7931G Phone Interaction
A and C are JTAPI application controllable Addresses. B1 and B2 are Address on Cisco Unified IP 7931G Terminal. Cisco Unified IP 7931G Terminal is configured to do Transfer across Addresses. B1 and B2 has shared Line B1' and B2' respectively configured on JTAPI controllable Terminal.
Action
|
Events
|
Call Info
|
Scenario:1
Application is observing A:
A calls B1, B1 answers - GC1
User presses transfer key on Cisco Unified IP 7931G phone and dials C, call initiated from B2 to C: B2 calls C, C answers - GC2
User presses transfer key to complete transfer.
|
JTAPI Event received to CallObserver at A
GC-1 CiscoTransferStartedEv (ControllerAddress=B1,
ControllerTerminalConnection=Null, FinalCall=GC1,
TransferredCall= null)
GC-1 ConnDisconnectedEv for B1 Cause: CAUSE_UNKNOWN
GC-1 CallCtlConnDisconnectedEv for B1 Cause: CAUSE_UNKNOWN CallControlCause: CAUSE_TRANSFER
GC-1 ConnCreatedEv for C Cause: CAUSE_NORMAL
GC-1 ConnConnectedEv for C Cause: CAUSE_NORMAL
GC-1 CallCtlConnEstablishedEv for C Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER
GC-1 CiscoTransferEndEv
|
Calling=A
Called=B1
CurrCalling=A
CurrCalled=B1
LRP=B1
|
Scenario:2
Application is observing A, B1':
A calls B1, B1 answers - GC1
User presses transfer key on Cisco Unified IP 7931G phone and dials C, call initiated from B2 to C:
B2 calls C, C answers - GC2
User presses transfer key to complete transfer
|
JTAPI Event received to CallObservers at A and B1'
GC-1 CiscoTransferStartedEv (ControllerAddress=B1,
ControllerTerminalConnection= TC at TB1', FinalCall=GC1,
TransferredCall= null)
GC1- TermConnDroppedEv for TB1' Cause: CAUSE_NORMAL
GC1- CallCtlTermConnDroppedEv for TB1' Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER
GC-1 ConnDisconnectedEv for B1 Cause: CAUSE_UNKNOWN
GC-1 CallCtlConnDisconnectedEv for B1 Cause: CAUSE_UNKNOWN CallControlCause: CAUSE_TRANSFER
GC-1 ConnCreatedEv for C Cause: CAUSE_NORMAL
GC-1 ConnConnectedEv for C Cause: CAUSE_NORMAL
GC-1 CallCtlConnEstablishedEv for C Cause:
CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER
GC-1 CiscoTransferEndEv
|
Calling=A
Called=B1
CurrCalling=A
CurrCalled=B1
LRP=B1
|
Scenario:3
Application is observing A, B1', B2':
A calls B1, B1 answers - GC1
User presses transfer key on Cisco Unified IP 7931G phone and dials C, call initiated from B2 to C:
B2 calls C, C answers - GC2
User presses transfer key to complete transfer
|
JTAPI Event received to CallObserver at A and B1'
GC-1 CiscoTransferStartedEv (ControllerAddress=B1,
ControllerTerminalConnection= TC at TB1', FinalCall=GC1, TransferredCall= GC2)
GC1- TermConnDroppedEv for TB1' Cause: CAUSE_NORMAL
GC1- CallCtlTermConnDroppedEv for TB1' Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER
GC-1 ConnDisconnectedEv for B1 Cause: CAUSE_UNKNOWN
GC-1 CallCtlConnDisconnectedEv for B1 Cause: CAUSE_UNKNOWN CallControlCause: CAUSE_TRANSFER
GC-1 ConnCreatedEv for C Cause: CAUSE_NORMAL GC-1 ConnConnectedEv for C Cause: CAUSE_NORMAL
GC-1 CallCtlConnEstablishedEv for C Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER
GC2- ConnDisconnectedEv for B2 Cause: CAUSE_NORMAL
GC2- CallCtlConnDisconnectedEv for B2 Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER
|
Calling=A
Called=B1
CurrCalling=A
CurrCalled=B1
LRP=B1
|
| |
GC2- TermConnDroppedEv for TB2' Cause: CAUSE_NORMAL
GC2- CallCtlTermConnDroppedEv for TB2' Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER
GC2- ConnDisconnectedEv for C Cause: CAUSE_NORMAL
GC2- CallCtlConnDisconnectedEv for C Cause: CAUSE_NORMAL
CallControlCause: CAUSE_TRANSFER
GC2- CallInvalidEv Cause: CAUSE_NORMAL
GC-1 CiscoTransferEndEv
CallControlCause: CAUSE_TRANSFER
GC2- CallInvalidEv Cause: CAUSE_NORMAL
GC-1 CiscoTransferEndEv
|
|
Scenario:4
Application is observing A, B1', B2' and C:
A calls B1, B1 answers - GC1
User presses transfer key on Cisco Unified IP 7931G phone and dials C, call initiated from B2 to C:
B2 calls C, C answers - GC2
User presses transfer key to complete transfer
|
JTAPI Event received to CallObserver at A, B1', B2' and C
GC-1 CiscoTransferStartedEv (ControllerAddress=B1,
ControllerTerminalConnection=TC at TB1', FinalCall=GC1,
TransferredCall= GC2)
GC1- TermConnDroppedEv for TB1' Cause: CAUSE_NORMAL
GC1- CallCtlTermConnDroppedEv for TB1' Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER
GC-1 ConnDisconnectedEv for B1 Cause: CAUSE_UNKNOWN
GC-1 CallCtlConnDisconnectedEv for B1 Cause: CAUSE_UNKNOWN CallControlCause: CAUSE_TRANSFER
GC-1 ConnCreatedEv for C Cause: CAUSE_NORMAL
GC-1 ConnConnectedEv for C Cause: CAUSE_NORMAL
GC-1 CallCtlConnEstablishedEv for C Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER
GC1- TermConnCreatedEv CT Cause: Other: 31
GC1- TermConnActiveEv CT Cause: CAUSE_NORMAL
GC1- CallCtlTermConnTalkingEv CT Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER
|
Calling=A
Called=B1
CurrCalling=A
CurrCalled=B1
LRP=B1
|
| |
GC2- CiscoCallChangedEv for C Cause: CAUSE_NORMAL
GC2- TermConnDroppedEv for TB2' Cause: CAUSE_NORMAL
GC2- CallCtlTermConnDroppedEv for TB2' Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER
GC2- ConnDisconnectedEv for B2 Cause: CAUSE_NORMAL
GC2- CallCtlConnDisconnectedEv for B2 Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER
GC2- TermConnDroppedEv for CT Cause: CAUSE_NORMAL
GC2- CallCtlTermConnDroppedEv for CT Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER
GC2- ConnDisconnectedEv for C Cause: CAUSE_NORMAL
GC2- CallCtlConnDisconnectedEv for
C Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER
GC2- CallInvalidEv Cause: CAUSE_NORMAL
GC-1 CiscoTransferEndEv
|
|
Scenario:5
Application is observing C:
A calls B1, B1 answers - GC1
User presses transfer key on Cisco Unified IP 7931G phone and
dials C, call initiated from B2 to C:
B2 calls C, C answers - GC2
User presses transfer key to complete transfer
|
JTAPI Event received to CallObserver at C
GC1- CallActiveEv for callID=101 Cause: CAUSE_NEW_CALL
GC1- ConnCreatedEv for C Cause: CAUSE_NORMAL
GC1- ConnCreatedEv for B2 Cause: CAUSE_NORMAL
GC-1CiscoTransferStartEv (ControllerAddress=B1,
ControllerTerminalConnection=Null, FinalCall=GC1,
TransferredCall= GC2) Cause: CAUSE_NORMAL
GC1- ConnConnectedEv for C Cause: CAUSE_NORMAL
GC1- CallCtlConnEstablishedEv for C Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER
GC1- TermConnCreatedEv CT Cause: Other: 31
GC1- TermConnActiveEv CT Cause: CAUSE_NORMAL
GC1- CallCtlTermConnTalkingEv CT Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER
|
Calling=B2
Called=C
CurrCalling=A
CurrCalled=C
LRP=B1
|
| |
GC2- CiscoCallChangedEv for C Cause: CAUSE_NORMAL
GC2- ConnDisconnectedEv for B2 Cause: CAUSE_NORMAL
GC2- CallCtlConnDisconnectedEv for B2 Cause: CAUSE_NORMAL
GC2- TermConnDroppedEv for CT Cause: CAUSE_NORMAL
GC2- CallCtlTermConnDroppedEv for CT Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER
CallControlCause: CAUSE_TRANSFER
GC2- ConnDisconnectedEv for C Cause: CAUSE_NORMAL
GC2-
CallCtlConnDisconnectedEv for C Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER
GC2- CallInvalidEv Cause: CAUSE_NORMAL
GC1- ConnDisconnectedEv for B2 Cause: CAUSE_NORMAL
GC1- CallCtlConnDisconnectedEv for B2 Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER
GC1- 1 CiscoTransferEndEv Cause: CAUSE_NORMAL
|
|
| |
GC1- ConnCreatedEv for A Cause: CAUSE_NORMAL
GC1- ConnConnectedEv for A Cause: CAUSE_NORMAL
GC1- CallCtlConnEstablishedEv for A Cause: CAUSE_NORMAL
GC1- ConnConnectedEv for B2 Cause: CAUSE_NORMAL
GC1- CallCtlConnEstablishedEv for B2 Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER
CallControlCause: CAUSE_TRANSFER
|
|
Scenario:6
Application is observing both A and C:
A calls B1, B1 answers - GC1
User presses transfer key on Cisco Unified IP 7931G phone and
dials C, call initiated from B2 to C:
B2 calls C, C answers - GC2
User presses transfer key to complete transfer
|
JTAPI events at observer of A & C:
GC-1CiscoTransferStartEv (ControllerAddress=B1,
ControllerTerminalConnection=Null, FinalCall=GC1,
TransferredCall= GC2) Cause: CAUSE_NORMAL
GC2- CiscoCallChangedEv for C Cause: CAUSE_NORMAL
GC2- ConnDisconnectedEv for B2 Cause: CAUSE_NORMAL
GC2- CallCtlConnDisconnectedEv for B2 Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER
GC2- TermConnDroppedEv for CT Cause: CAUSE_NORMAL
GC2- CallCtlTermConnDroppedEv for CT Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER
GC2- ConnDisconnectedEv for C Cause: CAUSE_NORMAL
GC2- CallCtlConnDisconnectedEv for C Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER
GC2- CallInvalidEv Cause: CAUSE_NORMAL
GC1- 1 CiscoTransferEndEv Cause: CAUSE_NORMAL
|
Calling=A
Called=B1
CurrCalling=A
CurrCalled=C
LRP=B1
|
| |
GC1- ConnCreatedEv for C Cause: CAUSE_NORMAL
GC1- ConnConnectedEv for C Cause: CAUSE_NORMAL
GC1- CallCtlConnEstablishedEv for C Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER
GC1- TermConnCreatedEv CT Cause: Other: 31
GC1- TermConnActiveEv CT Cause: CAUSE_NORMAL
GC1- CallCtlTermConnTalkingEv CT Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER NEW META
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 Caus |