Table Of Contents
Message Sequence Charts
Shared Line Support
AddressInService/AddressOutofService Events
Incoming Call to Shared Address
Outgoing Call from Shared Address
Shared Address Calling Itself
Transfer and Direct Transfer
DirectTransfer/Arbitrary Transfer Scenario—Page 1
Direct Transfer/Arbitrary Transfer—Page 2
Consult Transfer Scenario
Conference and Join
Join/Arbitrary Conference Scenario—Page 1
Join/Arbitrary Conference Scenario—Page 2
Consult Conference Scenario
Barge and Privacy
Barge
CBarge
Privacy
CallSelect and UnSelect
CallSelect and UnSelect Scenario
Dynamic CTIPort Registration Per Call
Dynamic Registration for CTIPort
Media Termination at Route Point
Media Termination at Route Point Scenario
Redirect Set OriginalCalledID
Scenario One
Scenario Two
Single Step Transfer
Modifying Calling Number
Scenario One
Scenario Two
AutoAccept for CTIPort and RoutePoint
Forced Authorization and Customer Matter Codes Scenarios
Scenario One
Scenario Two
Scenario Three
Scenario Four
Scenario Five
Super Provider Message Flow
QSIG Path Replacement Use Cases
Device State Server Message Flow
VoiceMailBox Support
Scenario 1
Scenario 2
Scenario 3
Scenario 4
Privacy on Hold
Message Sequence Charts
This appendix contains the message sequence charts, which illustrate the message flows for the following scenarios:
•
Shared Line Support
–
AddressInService/AddressOutofService Events
–
Incoming Call to Shared Address
–
Outgoing Call from Shared Address
–
Shared Address Calling Itself
•
Transfer and Direct Transfer
–
DirectTransfer/Arbitrary Transfer Scenario—Page 1
–
Consult Transfer Scenario
•
Conference and Join
–
Join/Arbitrary Conference Scenario—Page 1
–
Consult Conference Scenario
•
Barge and Privacy
–
Barge
–
CBarge
–
Privacy
•
CallSelect and UnSelect
•
Dynamic CTIPort Registration Per Call
•
Media Termination at Route Point
•
Redirect Set OriginalCalledID
•
Single Step Transfer
•
Modifying Calling Number
•
AutoAccept for CTIPort and RoutePoint
•
Forced Authorization and Customer Matter Codes Scenarios
•
Super Provider Message Flow
•
QSIG Path Replacement Use Cases
•
Device State Server Message Flow
•
VoiceMailBox Support
•
Privacy on Hold
Shared Line Support
The following diagrams illustrate the message flows for Shared Line support.
AddressInService/AddressOutofService Events
Incoming Call to Shared Address
Outgoing Call from Shared Address
Shared Address Calling Itself
Transfer and Direct Transfer
The following diagrams illustrate the message flows for Transfer and Direct Transfer.
DirectTransfer/Arbitrary Transfer Scenario—Page 1
Direct Transfer/Arbitrary Transfer—Page 2
Consult Transfer Scenario
The message flow for Consult Transfer acts the same as the flow for Arbitrary Transfer.
Conference and Join
The following diagrams illustrate the message flows for Conference and Join.
Join/Arbitrary Conference Scenario—Page 1
Join/Arbitrary Conference Scenario—Page 2
Consult Conference Scenario
The message flow for Consult Conference acts the same as the flow for Arbitrary Conference.
Barge and Privacy
The following diagrams illustrate the message flows for Barge and Privacy.
Barge
CBarge
Privacy
CallSelect and UnSelect
The following diagram illustrates the message flows for CallSelect and UnSelect.
CallSelect and UnSelect Scenario
Dynamic CTIPort Registration Per Call
The following diagram illustrates the message flows for Dynamic CTIPort Registration per call.
Dynamic Registration for CTIPort
Media Termination at Route Point
The following diagram illustrates the message flows for Media Termination at Route Point.
Media Termination at Route Point Scenario
Redirect Set OriginalCalledID
The following scenario illustrates the message flows for Redirect Set OriginalCalledID.
Scenario One
A, B, and C appear in an applications controlled list.
D is does not appear in the control list.
A calls B.
B redirects call to D with C as preferredOriginalCalledParty.
Application will see following events for parties A and B
Meta Event Cause
|
Call
|
Event
|
Fields
|
META_CALL_ADDING_PARTY
|
Call1
|
ConnCreatedEv for D ConnConnectedEv for D CallCtlConnEstablishedEv for D
|
CallingParty=A CalledParty = B LastRedirectedParty=C CurrentCalledParty=D
|
META_CALL_REMOVE_PARTY
|
Call1
|
ConnDisconnectedEv for B CallCtlConnDisconnectedEv for B TermConnDroppedEv for B CallCtlTermConnDroppedEv for B CallObservationEndedEv for B
|
CallingParty=A CalledParty = B LastRedirectedParty=C CurrentCalledParty=D
|
Note
The specified event group may not be in the same order and might change depending on where parties are present in the cluster, on the load, and other conditions.
Scenario Two
A, B, and C do not appear in the Control list, and
D is in the application control list.
A calls B.
B redirects the call to D with C as preferredOriginalCalledParty.
The application will see following events for party D
Meta Event Cause
|
Call
|
Event
|
Fields
|
META_CALL_STARTING
|
Call1
|
CallActiveEv ConnCreatedEv for D ConnInProgressEv for D CallCtlConnOfferedEv for D ConnCreatedEv for A CallCtlConnInitiatedEv for A
|
CallingParty=A CalledParty = D LastRedirectedParty=C CurrentCalledParty=D
|
META_CALL_PROGRESS
|
Call1
|
ConnAlertingEv for D CallCtlConnAlertingEv for D TermConnCreatedEv for D CallCtlTermConnRingingEv for D ConnConnectedEv for A CallCtlConnEstablishedEv for A
|
CallingParty=A CalledParty = D LastRedirectedParty=C CurrentCalledParty=D
|
META_CALL_PROGRESS
|
Call
|
ConnConnectedEv for D CallCtlConnEstablishedEv for D TermConnActiveEv for D CallCtlTermConnTalkingEv for D
|
CallingParty=A CalledParty = D LastRedirectedParty=C CurrentCalledParty=D
|
.
Single Step Transfer
Adresses A, B, and C appear in the control list, and the call between A and B is then gets transferred to C with B as the transfer controller. Applications will see the following events:
Action
|
Address A (5001)
Terminal CTIP1
|
Address B (5002)
Terminal CTIP2
|
Address C (5003)
Terminal CTIP3
|
Call.transfer(string)
|
ConnCreatedEv 5003 Cause: CAUSE_NORMAL
ConnInProgressEv 5003 Cause: CAUSE_NORMAL
CallCtlConnOfferedEv 5003 Cause: CAUSE_NORMAL
CallControlCause: CAUSE_TRANSFER
ConnAlertingEv 5003 Cause: CAUSE_NORMAL
CallCtlConnAlertingEv 5003 Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER
|
NEW META EVENT_________META_CALL_REMOVING_PARTY
TermConnDroppedEv CTIP2 Cause: CAUSE_NORMAL
CallCtlTermConnDroppedEv CTIP2 Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER
ConnDisconnectedEv 5002 Cause: CAUSE_NORMAL
CallCtlConnDisconnectedEv 5002 Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER
|
CallActiveEv Cause: CAUSE_NEW_CALL
ConnCreatedEv 5003 Cause: CAUSE_NORMAL
ConnInProgressEv 5003 Cause: CAUSE_NORMAL
CallCtlConnOfferedEv 5003 Cause: CAUSE_NORMAL CallControlCause: CAUSE_TRANSFER
ConnCreatedEv 5001Cause: CAUSE_NORMAL
ConnConnectedEv 5001 Cause: CAUSE_NORMAL
CallCtlConnEstablishedEv 5001Cause: CAUSE_NORMAL CallControlCause: CAUSE_NORMAL
|
Action
|
Address A (5001)
Terminal CTIP1
|
Address B (5002)
Terminal CTIP2
|
Address C (5003)
Terminal CTIP3
|
Call.transfer(string)
(continued)
|
CiscoRTPInputStartedEv Cause: CAUSE_NORMAL
CiscoRTPOutputStartedEv Cause: CAUSE_NORMAL
ConnConnectedEv 5003 CAUSE_NORMAL
CallCtlConnEstablishedEv 5003 Cause: CAUSE_NORMAL CallControlCause: CAUSE_NORMAL
|
NEW META EVENT_________META_UNKNOWN
CallObservationEndedEv Cause: CAUSE_NORMAL
|
ConnAlertingEv 5003 Cause: CAUSE_NORMALCallCtlConnAlertingEv 5003 Cause: CAUSE_NORMAL CallControlCause: CAUSE_NORMAL
TermConnCreatedEv CTIP3
TermConnRingingEv CTIP3Cause: CAUSE_NORMAL
CallCtlTermConnRingingEvImpl CTIP3 Cause: CAUSE_NORMAL CallControlCause: CAUSE_NORMAL
CiscoRTPInputStartedEv Cause: CAUSE_NORMAL
CiscoRTPOutputStartedEv Cause: CAUSE_NORMAL
ConnConnectedEv 2004 Cause: CAUSE_NORMAL
CallCtlConnEstablishedEv 5003Cause: CAUSE_NORMAL CallControlCause: CAUSE_NORMAL
|
Action
|
Address A (5001)
Terminal CTIP1
|
Address B (5002)
Terminal CTIP2
|
Address C (5003)
Terminal CTIP3
|
Call.transfer(string)
(continued)
|
|
|
TermConnActiveEv CTIP3 Cause: CAUSE_NORMAL
CallCtlTermConnTalkingEv CTIP3 Cause: CAUSE_NORMAL CallControlCause: CAUSE_NORMAL
CiscoRTPInputStoppedEv Cause: CAUSE_NORMAL
CiscoRTPOutputStoppedEv Cause: CAUSE_NORMAL
ConnDisconnectedEv 5001 Cause: CAUSE_NORMAL
CallCtlConnDisconnectedEv 5001 Cause: CAUSE_NORMAL CallControlCause: CAUSE_NORMAL
TermConnDroppedEv CTIP3 Cause: CAUSE_NORMAL
CallCtlTermConnDroppedEv CTIP3 Cause: CAUSE_NORMAL CallControlCause: CAUSE_NORMAL
|
Action
|
Address A (5001)
Terminal CTIP1
|
Address B (5002)
Terminal CTIP2
|
Address C (5003)
Terminal CTIP3
|
Call.transfer(string)
(continued)
|
|
|
ConnDisconnectedEv 5003 Cause: CAUSE_NORMAL
CallCtlConnDisconnectedEv 5003 Cause: CAUSE_NORMAL CallControlCause: CAUSE_NORMAL
META_UNKNOWN
CallInvalidEv [#32] Cause: CAUSE_NORMAL
|
Modifying Calling Number
The following scenario illustrates the message flows for Modifying Calling Number.
Scenario One
The application controls the device Route Point (RP) and registers RP .
A and B are PNO and appear within the Cisco CallManager cluster.
A calls RP.
Call arrives at RP
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[] ) where routeSelected[] = C callingSearchSpace = CiscoRouteSession.DEFAULT_SEARCH_SPACE
|
RouteUsedEvent
|
State = ROUTE_USED getCallingAddress () = A getCallingTerminal () = SEPA (Terminal associated with A) getRouteUsed () = C
|
Application invokes
endRoute (ERROR_NONE)
|
RouteEndEvent
|
State = ROUTE_END getRouteAddress () = RP
|
Scenario Two
The application is controls A and B.
A calls RP, which selectsRoute call to B with modified calling number as M.
Action
|
Event
|
Fields
|
A calls RP, which is not in controlled list.
|
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 CallCtlConnEstablishedEv A ConnCreatedEv RP ConnInProgressEv RP CallCtlConnOfferedEv RP
|
getCallingAddress() = A getCalledAddress() = getLastRedirectedAddress ()= getCurrentCallingAddress ()= A getCurrentCalledAddress()= getModifiedCallingAddress()=A getModifiedCalledAddress() =
getCallingAddress() = A getCalledAddress() = getLastRedirectedAddress ()= getCurrentCallingAddress ()= A getCurrentCalledAddress()= getModifiedCallingAddress()=A getModifiedCalledAddress() =
getCallingAddress() = A getCalledAddress() = B getLastRedirectedAddress ()= getCurrentCallingAddress ()= A getCurrentCalledAddress()= B getModifiedCallingAddress()=A getModifiedCalledAddress() =B
|
Another application controls the RP selectRoute to B with modifying calling number as M.
|
NEW META EVENT_________META_CALL_ ADDITIONAL_PARTY ConnCreatedEv B ConnInProgressEv B CallCtlConnOfferedEv B ConnDisconnectedEv RP CallCtlConnDisconnectedEv RP
NEW META EVENT_________META_CALL_ PROGRESS ConnAlertingEv B CallCtlConnAlertingEv B TermConnCreatedEv B
|
getCallingAddress() = A getCalledAddress() = B getLastRedirectedAddress ()= RP getCurrentCallingAddress ()= A getCurrentCalledAddress()= B getModifiedCallingAddress()=M getModifiedCalledAddress() =B
getCallingAddress() = A getCalledAddress() = B getLastRedirectedAddress ()= RP
|
| |
TermConnRingingEv B CallCtlTermConnRingingEv B
|
getCurrentCallingAddress ()= A getCurrentCalledAddress()= B getModifiedCallingAddress()=M getModifiedCalledAddress() =B
|
B answers the call.
|
ConnConnectedEv B CallCtlConnEstablishedEv B TermConnActiveEv B CallCtlTermConnTalkingEv B
|
getCallingAddress() = A getCalledAddress() = B getLastRedirectedAddress ()= RP getCurrentCallingAddress ()= A getCurrentCalledAddress()= B getModifiedCallingAddress()=M getModifiedCalledAddress() =B
|
AutoAccept for CTIPort and RoutePoint
Forced Authorization and Customer Matter Codes Scenarios
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 CallManager 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
|
Super Provider Message Flow
The application tries to create Terminal for CTIPort1 that has Addresses 2000 and 2001. The following events get sent to the application.
No.
|
Action
|
Event
|
1
|
Application invokes CiscoProvider.CreateTerminal (CTIPort1)
where CiscoProviderCapabilities. canObserveAnyTerminal() returns TRUE.
|
JTAPI would returm CiscoTerminal object and the following events get sent:
CiscoTermCreatedEv CTIPort1<------------------
CiscoAddrCreated 2000<---------------------------
CiscoAddrCreated 2001<----------------------------
|
2
|
If the application already has a terminal where the 2001 address already exists, that is, 2001 is a SharedLine Address.
Now, the application invokes CiscoProvider. CreateTerminal(CTIPort1)
|
JTAPI would returm CiscoTerminal object and the following events get sent
CiscoTermCreatedEv CTIPort1<-------------------
CiscoAddrCreated 2000<---------------------------
CiscoAddrAddedToTerminalEv 2001<-----------
|
3
|
Application invokes
CiscoProvider. CreateTerminal(CTIPortX)
where CTIPortX does not exist in Cisco CallManager cluster.
|
JTAPI would throw an exception: InvalidArgumentException
|
4
|
Application invokes
CiscoProvider. CreateTerminal(CTIPort1)
where CiscoProviderCapabilities. canObserveAnyTerminal() returns FALSE.
|
JTAPI would throw an exception: PrivilegeViolationException
|
QSIG Path Replacement Use Cases
The following table shows the JTAPI events that are delivered to applications when calls between PBXs that are connected by Q.Signaling (QSIG) trunks are transferred and forwarded. This table also shows the events that are delivered to applications when the real-time path (RTP) is optimized by the QSIG Path Replacement feature.
Calls going out on a QSIG trunk may not have a connection for the far end if any translation pattern is changing the pattern. In other words, when the application sees two calls in the trombone case, B may not serve as the common connection on the calls.
No.
|
Action
|
Event
|
1
|
A registered with CM1, B is registered with CM2, and C registered with CM3.
A calls B (GC1); B transfers the call to C. The application is monitors C. The PR feature replaces the path after the call gets connected to C.
The same action applies to scenarios that involve call forward at B. (The called party transfers the call.)
|
These events get delivered to applications:
CallCtrlConnectionEstablishedEv A
CallCtrlConnectionDisConnectEv B
OpenLogicalChannelEvent if C is a CTI device (Dynamically registered CTIPorts and RP)
|
2
|
A registered with CM1, B registered with CM2, and C registered with CM3. B calls C; C answers; B transfers the call to A. A answers. The application is monitors only C. (The calling party transfers the call.)
|
In this case, both A are C represent called parties when transfer completes. After the call is answered, PR replaces the path. In this case, A and C represent IP phones; the display will be updated as a part of PR feature operation, that makes either A or C as calling.
JTAPI events: GC1: CallCtlConnEstablishedEv A GC1: CallCtlConnDisconnectedEv B
|
3
|
3. Trombone case: A registered to CM1, B registered to CM2, and C registered to CM1. A calls B (GC1); B answers and transfers the call to C (GC2). Path replacement connects A and C bypassing CM2. The application observes both A and C. (The called party transfers the call.)
|
For GC1 Call Observer:
GC1: CallCtlConnEstablishedEv C
GC1: CallCtlConnDisconnected B
Before the PR feature replaces the path, the application sees two calls: GC1 with connections to A and C (external) and GC2 with connections to C and A(external).
When the PR feature replaces the path, either GC1 changes GC2, or GC2 changes to GC1.
Assuming A's GCID changes from GC1 to GC2:
GC1: CiscoCallChangedEv (oldGCID=GC1,newGCID=GC2 )
GC1: CallCtlConnDisconnected for A
GC1: CallCtlConnDisconnected for C
GC1: CallInValid
GC2: TermConnTalkingEvent for TerminalA cause= CAUSE_QSIG_PR
|
4
|
Trombone case: A registered to CM1, B registered to CM2, and C registered to CM1. B calls A and transfers the call to C. Path replacement connects A and C, bypassing CM2. Application observes both A and C. (The calling party transfers the call.)
|
Before the PR feature replaces the path, the application will see two calls: GC1 with connections to A and B (external) and GC2 with connections to C and B(external). In this case, the application will not see any transfer start events.
When PR feature replaces the path, it updates the display of A and C and path gets replaced, resulting in a GCID change. Assuming A's GCID is changed and made the calling party, the following JTAPI events occur:
GC1: CiscoCallChangedEv (GC1 to GC2)
GC1: CallCtlConnDisconnected for A
GC1: CallCtlConnDisconnected for C
GC1: CallInValid
GC2: ConnCreatedEv A
GC2: ConnConnectedEv A
GC2: TermConnTalkingEvent for TerminalA cause= CAUSE_QSIG_PR
|
5
|
A registered to CM1, B registered to CM2, and C registered to CM1. A calls B; B transfers the call to C. C answers and before path replacement completes, C invokes a feature (park, redirect, and so on).
|
Path replacement gets abandoned.
|
6
|
In some conditions, call processing ignores feature requests (redirect, park, transfer, and so on). This happens when a setup request is sent out, and the local CM is waiting for connect from the other end.
|
JTAPI:
Exception will be trhown from JTAPI for feature requests.
|
7
|
In some cases, the application could receive dead air when CM goes down when the PR feature is trying to switch the RTP path. This could happen to a previously connected call.
|
No events
JTAPI Apps: Hang up the call
|
Device State Server Message Flow
VoiceMailBox Support
Scenario 1
B has a voicemail profile configured. B's voicemail box is B1. A calls B.
Action
|
Events
|
Fields
|
A calls B. Both A and B are in a controlled list.
|
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
|
getCalledPartyInfo.getVoiceMailbox()=
getCurrentCalledPartyInfo.getVoiceMailbox()=
getLastRedirectedPartyInfo.getVoiceMailbox()=
|
| |
NEW META EVENT_________META_CALL_PROGRESS
CallCtlConnDialingEv A
|
getCalledPartyInfo.getVoiceMailbox()=
getCurrentCalledPartyInfo.getVoiceMailbox()=
getLastRedirectedPartyInfo.getVoiceMailbox()=
|
| |
NEW META EVENT_________META_CALL_PROGRESS
CallCtlConnEstablishedEv A
|
getCalledPartyInfo.getVoiceMailbox()= B1
getCurrentCalledPartyInfo.getVoiceMailbox()= B1
getLastRedirectedPartyInfo.getVoiceMailbox()=
|
| |
NEW META EVENT_________META_CALL_ADDITIONALPARTY
ConnCreatedEv B
ConnInProgressEv B
CallCtlConnOfferedEv B
|
getCalledPartyInfo.getVoiceMailbox()= B1
getCurrentCalledPartyInfo.getVoiceMailbox()=B1
getLastRedirectedPartyInfo.getVoiceMailbox()=
|
| |
NEW META EVENT_________META_CALL_PROGRESS
ConnAlertingEv B
CallCtlConnAlertingEv B
TermConnCreatedEv B
TermConnRingingEv B
CallCtlTermConnRingingEv B
|
getCalledPartyInfo.getVoiceMailbox()=B1
getCurrentCalledPartyInfo.getVoiceMailbox()=B1
getLastRedirectedPartyInfo.getVoiceMailbox()=
|
B answers the call.
|
NEW META EVENT_________META_CALL_PROGRESS
ConnConnectedEv B
CallCtlConnEstablishedEv B
TermConnActiveEv B
CallCtlTermConnTalkingEv B
|
getCalledPartyInfo.getVoiceMailbox()=B1
getCurrentCalledPartyInfo.getVoiceMailbox()=B1
getLastRedirectedPartyInfo.getVoiceMailbox()=
|
Scenario 2
B has voicemail profile configured. B's voicemail box is B1 and C's voicemail box is C1. A calls B and the call rolls to C as a result of CFNA.
Action
|
Events
|
Fields
|
A calls B. A, B, and C are in a controlled list
|
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
|
getCalledPartyInfo.getVoiceMailbox()=
getCurrentCalledPartyInfo.getVoiceMailbox()=
getLastRedirectedPartyInfo.getVoiceMailbox()=
|
| |
NEW META EVENT_________META_CALL_PROGRESS
CallCtlConnDialingEv A
|
getCalledPartyInfo.getVoiceMailbox()=
getCurrentCalledPartyInfo.getVoiceMailbox()=
getLastRedirectedPartyInfo.getVoiceMailbox()=
|
| |
NEW META EVENT_________META_CALL_PROGRESS
CallCtlConnEstablishedEv A
|
getCalledPartyInfo.getVoiceMailbox()=B1
getCurrentCalledPartyInfo.getVoiceMailbox()=B1
getLastRedirectedPartyInfo.getVoiceMailbox()=
|
| |
NEW META EVENT_________META_CALL_ADDITIONALPARTY
ConnCreatedEv B
ConnInProgressEv B
CallCtlConnOfferedEv B
|
getCalledPartyInfo.getVoiceMailbox()=B1
getCurrentCalledPartyInfo.getVoiceMailbox()=B1
getLastRedirectedPartyInfo.getVoiceMailbox()=
|
| |
NEW META EVENT_________META_CALL_PROGRESS
ConnAlertingEv B
CallCtlConnAlertingEv B
TermConnCreatedEv B
TermConnRingingEv B
CallCtlTermConnRingingEv B
|
getCalledPartyInfo.getVoiceMailbox()=B1
getCurrentCalledPartyInfo.getVoiceMailbox()=C1
getLastRedirectedPartyInfo.getVoiceMailbox()=B1
|
| |
NEW META EVENT_________META_CALL_PROGRESS
ConnAlertingEv C
CallCtlConnAlertingEv C
TermConnCreatedEv C
TermConnRingingEv C
CallCtlTermConnRingingEv C
|
getCalledPartyInfo.getVoiceMailbox()=B1
getCurrentCalledPartyInfo.getVoiceMailbox()=C1
getLastRedirectedPartyInfo.getVoiceMailbox()=B1
|
C answers the call.
|
NEW META EVENT_________META_CALL_PROGRESS
ConnConnectedEv C
CallCtlConnEstablishedEv C
TermConnActiveEv C
CallCtlTermConnTalkingEv C
|
getCalledPartyInfo.getVoiceMailbox()=B1
getCurrentCalledPartyInfo.getVoiceMailbox()=C1
getLastRedirectedPartyInfo.getVoiceMailbox()=B1
|
Scenario 3
B has a voicemail profile configured. B's voicemail box is B1 and C's voicemail box is C1. B has CallForwardAll configured to C. A calls B and the call rolls to C as a result of ForwardAll.
Action
|
Events
|
Fields
|
A calls B. A, B, and C are in a controlled list
|
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
|
getCalledPartyInfo.getVoiceMailbox()=
getCurrentCalledPartyInfo.getVoiceMailbox()=
getLastRedirectedPartyInfo.getVoiceMailbox()=
|
| |
NEW META EVENT_________META_CALL_PROGRESS
CallCtlConnDialingEv A
|
getCalledPartyInfo.getVoiceMailbox()=
getCurrentCalledPartyInfo.getVoiceMailbox()=
getLastRedirectedPartyInfo.getVoiceMailbox()=
|
| |
NEW META EVENT_________META_CALL_PROGRESS
CallCtlConnEstablishedEv A
|
getCalledPartyInfo.getVoiceMailbox()=B1
getCurrentCalledPartyInfo.getVoiceMailbox()=B1
getLastRedirectedPartyInfo.getVoiceMailbox()=
|
Call is landed at C because of ForwardAll
|
NEW META EVENT_________META_CALL_ADDITIONALPARTY
ConnCreatedEv C
ConnInProgressEv C
CallCtlConnOfferedEv C
|
getCalledPartyInfo.getVoiceMailbox()=B1
getCurrentCalledPartyInfo.getVoiceMailbox()=C1
getLastRedirectedPartyInfo.getVoiceMailbox()=B1
|
| |
NEW META EVENT_________META_CALL_PROGRESS
ConnAlertingEv C
CallCtlConnAlertingEv C
TermConnCreatedEv C
TermConnRingingEv C
CallCtlTermConnRingingEv C
|
getCalledPartyInfo.getVoiceMailbox()=B1
getCurrentCalledPartyInfo.getVoiceMailbox()=C1
getLastRedirectedPartyInfo.getVoiceMailbox()=B1
|
C answers the call
|
NEW META EVENT_________META_CALL_PROGRESS
ConnConnectedEv C
CallCtlConnEstablishedEv C
TermConnActiveEv C
CallCtlTermConnTalkingEv C
|
getCalledPartyInfo.getVoiceMailbox()=B1
getCurrentCalledPartyInfo.getVoiceMailbox()=C1
getLastRedirectedPartyInfo.getVoiceMailbox()=B1
|
Scenario 4
B has a voicemail profile configured. B's voicemailbox is B1 and C's voicemail box is C1. B has CallForwardBusy configured to C. A calls B and the call rolls to C as a result of ForwardBusy.
Action
|
Events
|
Fields
|
A calls B. A, B, and C are in a controlled list. B is busy in someother call when A calls B.
|
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
|
getCalledPartyInfo.getVoiceMailbox()=
getCurrentCalledPartyInfo.getVoiceMailbox()=
getLastRedirectedPartyInfo.getVoiceMailbox()=
|
| |
NEW META EVENT_________META_CALL_PROGRESS
CallCtlConnDialingEv A
|
getCalledPartyInfo.getVoiceMailbox()=
getCurrentCalledPartyInfo.getVoiceMailbox()=
getLastRedirectedPartyInfo.getVoiceMailbox()=
|
| |
NEW META EVENT_________META_CALL_PROGRESS
CallCtlConnEstablishedEv A
|
getCalledPartyInfo.getVoiceMailbox()=B1
getCurrentCalledPartyInfo.getVoiceMailbox()=B1
getLastRedirectedPartyInfo.getVoiceMailbox()=
|
Call lands at C because of ForwardBusy.
|
NEW META EVENT_________META_CALL_ADDITIONALPARTY
ConnCreatedEv C
ConnInProgressEv C
CallCtlConnOfferedEv C
|
getCalledPartyInfo.getVoiceMailbox()=B1
getCurrentCalledPartyInfo.getVoiceMailbox()=C1
getLastRedirectedPartyInfo.getVoiceMailbox()=B1
|
| |
NEW META EVENT_________META_CALL_PROGRESS
ConnAlertingEv C
CallCtlConnAlertingEv C
TermConnCreatedEv C
TermConnRingingEv C
CallCtlTermConnRingingEv C
|
getCalledPartyInfo.getVoiceMailbox()=B1
getCurrentCalledPartyInfo.getVoiceMailbox()=C1
getLastRedirectedPartyInfo.getVoiceMailbox()=B1
|
C answers the call.
|
NEW META EVENT_________META_CALL_PROGRESS
ConnConnectedEv C
CallCtlConnEstablishedEv C
TermConnActiveEv C
CallCtlTermConnTalkingEv C
|
getCalledPartyInfo.getVoiceMailbox()=B1
getCurrentCalledPartyInfo.getVoiceMailbox()=C1
getLastRedirectedPartyInfo.getVoiceMailbox()=B1
|
Privacy on Hold
B is a shared line on two Terminals T1 and T2 and application is monitoring both the terminals.
Action
|
Event
|
A calls B and both B on T1 and B on T2 starts ringing. Application is monitoring all the devices.
Privacy is disabled and "Enforce Privacy on Held Call" is enabled.
|
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
CallCtlConnEstablishedEv A
|
| |
NEW META EVENT_________META_CALL_ADDITIONALPARTY
ConnCreatedEv B
ConnInProgressEv B
CallCtlConnOfferedEv B
|
| |
NEW META EVENT_________META_CALL_PROGRESS
ConnAlertingEv B
CallCtlConnAlertingEv B
TermConnCreatedEv T1
TermConnRingingEv T1
CallCtlTermConnRingingEv T1
|
| |
NEW META EVENT_________META_CALL_PROGRESS
TermConnCreatedEv T2
TermConnRingingEv T2
CallCtlTermConnRingingEv T2
|
| |
NEW META EVENT_________META_CALL_PROGRESS
ConnConnectedEv B
CallCtlConnEstablishedEv B
TermConnActiveEv T1
CallCtlTermConnTalkingEv T1
|
B on T1 answers the call.
|
NEW META EVENT_________META_CALL_PROGRESS
TermConnPassiveEv T2
CallCtlTermConnBridgedEv T2
|
B on T1 presses privacy softkey.
|
NEW META EVENT_________META_CALL_PROGRESS
CallPrivacyChangedEv
CallCtlTermConnInUseEv T2
|
B on T1 presses hold softkey.
|
NEW META EVENT_________META_CALL_PROGRESS
CallCtlTermConnHeldEv T1
|
B on T1 disables privacy soft key.
|
NEW META EVENT_________META_CALL_PROGRESS
CallPrivacyChangedEv
CallCtlTermConnHeldEv T2
|
Action
|
Event
|
A calls B and both B on T1 and B on T2 starts ringing. Application is monitoring all the devices.
|
|
A calls B and B on T1 answers the call and has privacy enabled and "Enforce Privacy on Held Calls" Enabled.
|
NEW META EVENT_________META_CALL_PROGRESS
CallPrivacyChangedEv
CallCtlTermConnInUseEv T2
|
B on T1 initiates a new call to C and C answers the call.
|
NEW META EVENT_________META_CALL_STARTING
CallActiveEv Cause: CAUSE_NEW_CALL
ConnCreatedEv B Cause: CAUSE_NORMAL
ConnConnectedEv B Cause: CAUSE_NORMAL
CallCtlConnInitiatedEv Cause: CAUSE_NORMAL CallControlCause: CAUSE_NORMAL
TermConnCreatedEv SEPT1 Cause: Other: 0
TermConnActiveEv SEPT1 Cause: CAUSE_NORMAL
CallCtlTermConnTalkingEv SEPT1 Cause: CAUSE_NORMAL CallControlCause: CAUSE_NORMAL
|
| |
NEW META EVENT_________META_CALL_PROGRESS
CallCtlConnDialingEv B
|
| |
NEW META EVENT_________META_CALL_PROGRESS
TermConnCreatedEv SEPT2 Cause: Other: 0
TermConnPassiveEv SEPT2 Cause: CAUSE_NORMAL
CallCtlTermConnInUse SEPT1 Cause: CAUSE_NORMAL CallControlCause: CAUSE_NORMAL
|
| |
NEW META EVENT_________META_CALL_PROGRESS
CallCtlConnEstablishedEv B
|
| |
NEW META EVENT_________META_CALL_ADDITIONALPARTY
ConnCreatedEv C
ConnInProgressEv C
CallCtlConnOfferedEv C
|
| |
NEW META EVENT_________META_CALL_PROGRESS
ConnAlertingEv C
CallCtlConnAlertingEv C
TermConnCreatedEv C
TermConnRingingEv C
CallCtlTermConnRingingEv C
|
| |
NEW META EVENT_________META_CALL_PROGRESS
ConnConnectedEv C
CallCtlConnEstablishedEv C
TermConnActiveEv C
CallCtlTermConnTalkingEv C
|
Now, B selects the primary call
|
|
B unselects the primary call and disables the privacy softkey
|
NEW META EVENT_________META_CALL_PROGRESS
CallPrivacyStatusChangedEv
CallCtlTermConnHeldEv for T2
|