Table Of Contents
Message Sequence Charts
Abbreviations
3XX
Agent Greeting
Agent Zip Tone
Application issues the Play Tone request on a CTI Port with PlayToneDirection - Local/Remote
Application issues the Play tone request when the call is established between customer and agent (Shared Line). PlayToneDirection - Local
Conference Scenario. PlayToneDirection - local.
Application issues the Play Tone request when the call is established between customer and agent, Agent puts the call on Hold. PlayToneDirection - Remote.
Blind Transfer
Call Control Discovery
Basic Call Initiated from TAPI from Phone A on Cluster 1 to Phone B on Cluster2
Basic Call Initiated from TAPI from Phone A on Cluster 1 to Phone B on Cluster2 with PSTN Failover Rule not Set
Basic Call Initiated from TAPI from Phone A(1900) and B(1901) on Cluster 1, B Redirects to Phone C(1000) on Cluster2 with PSTN Failover Rule Set
Basic Call Initiated from TAPI from Phone A and B on Cluster 1, B Transfers to Phone C(1000) on Cluster 2 with PSTN Failover Rule
Call Initiated from TAPI from Phone A and B on Cluster 1, B setsupconference to Phone C(1000) on Cluster 2 with PSTN Failover Rule
Basic Call Initiated from TAPI from Phone A on Cluster 1 to Phone B on Cluster 2 over SAF Trunk
Basic Call Initiated from TAPI from Phone A and B on Cluster 1, B Redirects to Phone C(1000) on Cluster 2 over SAF Trunk
Basic Call Initiated from TAPI from Phone A and B on Cluster 1, B Transfers to Phone C(1000) on Cluster 2 over SAF Trunk
CallFwdAll Notification
Application Pressed CFwdAll on TAPI Monitored Device
TAPI Monitored Device Goes Off Hook
Application Monitors Off Hook Device
Application Monitors Device after User Presses CFwdAll
User Presses CFwdAll Softkey after Device is Off Hook
User Presses CFwdAll Softkey on a Multiline Device
User Presses CFwdAll on a Multiline Device by Selecting a Line
Shared Line Scenario on Pressing CFwdAll Softkey
Cancellation of CFwdAll
Calling Party IP Address
Basic Call
Consultation Transfer
Consultation Conference
Redirect
Calling Party Normalization
Incoming Call from PSTN to End Point
Incoming Call from National PSTN to CTI-Observed End Point
Incoming Call from International PSTN to CTI-Observed End Point
Outgoing Call from CTI-Observed End Point to PSTN Number
Outgoing Call from CTI-Observed End Point to National PSTN Number
Outgoing Call from CTI-Observed End Point to International PSTN Number
Call PickUp
Registering CallPickUpGroup for Notification
UnRegistering CallPickUpGroup for Notification
Re-Registering CallPickUpGroup for Notification
Registering/UnRegistering CallPickUpGroup for Notification with InValid Information
CallPickUp after Enabling Auto Call Pickup Enabled
CallPickUp with Auto Call Pickup Enabled Disabled
CallPickUp with Multiple Calls Available
CallPickupGroup Changed for a Device on AdminPage
CallPickUpGroup Partition or DN Information Updated
CallPickUpGroup is Deleted
Call Queuing
FailOver or FailBack Scenario
GroupCallPickup
OtherCallPickup
DirectCallPickup
CallPickup (Negative Use Case)
GroupCallPickup with SuperSet Call PickupDN
Group or Direct CallPickup with Invalid DN
CIUS Session Persistency
Notify the Line application and expose the changed IP address
Notify the Phone application and expose the changed IP address
Click to Conference
Drop Party by Using Click-2-Conference
Drop Entire Conference by Using Click-2-Conference Feature
Conference Enhancements
Noncontroller Adding Parties to Conferences
Chaining Two Ad Hoc Conferences by Using Join
CIT Remote Device
Direct Transfer Across Lines
Do Not Disturb-Reject
Application Enables DND-R on a Phone
Normal Feature Priority
Feature Priority - Emergency
Drop Any Party
Early Offer
Application Dynamically Registers CTI Port with Early Offer Support
Application Dynamically Registers CTI Port with out Early Offer Support
Application Dynamically Registers IPV6 CTI Port with Early Offer Support
Mutiple Applications Dynamically Register CTI Port/RP
Multiple Applications Dynamically Register CTI Port/RP with Early Offer Support
Application Statically Registers CTI Port with Early Offer Support and then Disable the Early Offer Support
Application Statically Registers CTI Port with out Early Offer Support and then Enables Early Offer Support
Application registers CTI Port with Legacy Wave Driver and enables Early Offer Support
Application Registers CTI Port with new Cisco Wave Driver and enables Early Offer Support
Mutiple Applications Statically Register CTI Port
End-To-End Call Trace
Direct Call Scenario: Variation 1
Direct Call Scenario: Variation 2
Consult Transfer Scenario: Variation 1
Consult Transfer Scenario: Variation 2
Blind Transfer Scenario
Redirect Scenario
Shared Line Scenario
Shared Line Scenario with Barge
Call Park Scenario: Variation 1
Call Park Scenario: Variation 2
3- Party Conference Call Scenario
Three-party Conference Drop Down to Two-party Call Scenario
Conference Chaining Scenario using Join
Transfer Call Scenario via QSIP without Path Replacement
Transfer Call Scenario via QSIP with Path Replacement
Hunt List Scenario
Call Pickup Scenario: Variation 1
Call Pickup Scenario: Variation 2
EnergyWise Deep Sleep Mode Use Cases
Verify EnergyWisePowerSavePlus Reason Code in LINEDEVSTATE Message
Verify EnergyWisePowerSavePlus Reason Code in PhoneState Suspend
Verify Reason EnergyWisePowerSavePlus Reason Code in LineDevstate/Phone State Message
Verify Call Manager Failure Reason Code in LineDevstate/Phone State Message
Verify DeviceUnregister Reason Code in LineDevstate/Phone State Event
Verify CTILinkFailure Reason code in LineDevstate/Phone State Message
Extension Mobility Cross Cluster
TAPI Application does LineInitializeEx and EMCC User Logs into a Device
TAPI Application does LineInitializeEx and EMCCUser Logs Out of a Device
Application does PhoneInitializeEx and EMCC User Logs in to a Device
TAPI Application does PhoneInitializeEx and EMCC User Logs out of a Device
EMCC User Logs in to a Device from Cluster 2 (Visiting Cluster)
EMCC User Logs out of a Device from Cluster 2 (Visiting Cluster)
EMCC User Logs in to a Device with LineH Configured
EMCC User Logs out of a Device with LineH Configured
EMCC User Logs in to a DeviceH Configured for Multiple Lines (LineH)
EMCC User Logs in to a Device with LineH Configured and Administrator Removes the Device from Application Control list
EMCC User Logs in and out of a Device with LineH Configured and Administrator Removes the Device from Application Control List
EMCC User Logs in to a Device with LineH Configured and EM_Profile not Included in Application Control List
EMCC User Logs in to a DeviceV and EM_Profile is Removed by Administrator from Application Control List
EMCC User Logs in to a Device then Application does Provider Open
EMCC User Log in to a DeviceV in Visiting Cluster and Administrator Adds the EM_Profile to Application Control List
Extension Mobility Memory Optimization Option
Common Configuration
Use Cases
External Call Control
Basic Call Initiated from TAPI with External Call Control on Translation Pattern and CEPM Returns Reject
Basic Call Initiated from TAPI Using External Call Control on Translation Pattern and CEPM Returns Divert with Modified Calling and Called Parties
Basic Call Initiated from TAPI Using External Call Control on Translation Pattern and CEPM Returns Continue with Modified Calling and Called Parties
Conference Call Initiated from TAPI Using External Call Control on Translation Pattern and CEPM Returns Continue with Modified Calling and Called Parties in the Consult Call
Call is Redirected to a Hunt List of Chaperones and Chaperone Enables Call Recording and Conferences in the Called Party
Forced Authorization and Client Matter Code Scenarios
Manual Call to a Destination that Requires an FAC
Manual Call to a Destination that Requires both FAC and CMC
lineMakeCall to a Destination that Requires an FAC
lineMakeCall to a Destination that Requires Both FAC and CMC
Timeout Waiting for FAC or Invalid FAC
Hunt List
Basic Hunt List Call
Hunt List Call Moved to Next Member
Hunt List Calls FWNA and FWNA is not Configured on HuntPilot
Hunt List Call FWNA with FWNA to B
Hunt List Call Dropped when Hunt List is Busy and FWB is not Configured
Hunt List Call is Forwarded when Hunt List is Busy and FWB is Configured to B
HuntList Call Redirected when in ACCEPT State
Hunt List Call Redirected when in Connected State
Hunt List Call - Member is CTI or RP Port
Hunt List Call Moved to Different Line Group Members and Answered by CTI Port
Hunt List Call is Redirected to Another Hunt List
Hunt List Call is Consult Transferred to Another Line
Hunt List Call Direct Transferred to Another Line
Hunt List Call is Conferenced to Another Line
Hunt List Call is Joined to Another Line
Hunt List Call is Conferenced to Another Hunt List after LG11 Answers
Hunt List Call Conferenced to the Same Hunt List and Completes Conference Before Hunt List Agent Answers
Hunt List Basic Call with SharedLine
Hunt List Basic Call with DND-R Configured on LG1
Hunt List Call Put in Conference via Join Operation
Hunt List Call is Picked up from Pickup Group - G-Pickup, Auto Pick Pp is Enabled
Hunt List Call is Picked Up from Pickup Group when LG1 is in Pickup Group 1 - Auto Pickup Disabled
Hunt List Call is Picked Up from Pickup Group when HP2 is in Pickup Group 2 - Auto Pick Up Enabled
Conferenced Hunt List Call Becomes Two-party Call
Hunt List Broadcast Scenario (Broadcast Option is Configured on HP1)
Hunt List Call is Involved in c-Barge Conference
Hunt List Feature Interact with Four-Party Conference
Hunt Pilot Connected Number Feature
Caller Consult Transfer Call to Another Hunt List
Intercom
Application Invoking Speeddial
Agent Invokes Talkback
Change the SpeedDial
IPv6 Use Cases
Join Across Lines
Logical Partitioning
Manual Outbound Call
Monitoring and Recording
Monitoring a Call
Automatic Recording
Application-Controlled Recording
Park Monitoring
Presentation Indication
Making a Call Through Translation Pattern
Blind Transfer Through Translation Pattern
Redirect Set Original Called (TxToVM)
Refer and Replaces Scenarios
In-Dialog Refer - Referrer in Cisco Unified Communications Manager Cluster
In-Dialog Refer Where ReferToTarget Redirects the Call in Offering State
In-Dialog Refer Where Refer Fails or Refer to Target is Busy
Out-of-Dialog Refer
Invite with Replace for Confirmed Dialog
Refer with Replace for All in Cluster
Refer with Replace for All in Cluster, Replace Dialog Belongs to Another Station
Secure Conferencing
Conference with All Parties as Secure
Hold or Resume in Secure Conference
Secure Monitoring and Recording
Silent Monitoring
Basic Silent Monitoring Scenario in Secure Mode
Silent Monitoring Scenario on Non-Secure Call in Secure Mode
Silent Monitoring Scenario on non-Secure Call from Supervisor which is Secure
Silent Monitoring Scenario on Secure Call from Supervisor which is Non-Secure
Transfer of Monitored call from supervisor to other supervisor
Transfer of call from one customer to other
Park on Supervisor
Silent Monitoring on Conferenced Call
Conference on Monitored Call
Conference on Monitored Call
Supervisor Holds the Call
Recording
Basic Recording Scenario
Basic Recording Scenario in Secure Mode
Recording Scenario on Non-Secure call in Secure Mode
Recording Scenario on non-Secure Call using Secure Recording Profile/Device
Recording Scenario when Agent holds the call
Recording and Monitoring
Both Silent Monitoring and Recording on Agent Call in Secure Mode
Recording Silent Monitored Call on Supervisor
Shared Lines-Initiating a New Call Manually
SRTP
Media Terminate by Application (Open Secure CTI Port or RP)
Media Terminate by TSP Wave Driver (open secure CTI port)
Support for Cisco IP Phone 6900 Series
Support for Cisco Unified IP Phone 6900 and 9900 Series Use Cases
Swap or Cancel
Unrestricted Unified CM
Whisper Coaching
Application Initiates a Whisper Coaching Session
Application Updates the Monitoring Mode
Agent Holds the Customer Call with Whisper Coaching, then Agent's Shared Line Resumes the Call
Agent Transfers a Whisper Coaching Call, Monitoring Call Goes Idle at the Supervisor
Application Updates the Monitoring Mode (WhisperCoaching to Silent)
Supervisor Holds/Resumes the Whisper Coaching Monitoring Session
Supervisor Transfers the Whisper Coaching Session to Another Supervisor
Supervisor Conferences the Whisper Coaching Session to Another Supervisor
Application Initiates a Whisper Coaching Session, Second Application on a Different Client Opens All Lines
Secure R & M with Whisper Coaching Supports
Application Initiates a Secure Whisper Coaching Session
Application Updates the Monitoring Mode on an Agent Call That is on Hold
Application Initiates Whisper Coaching where the Agent is a SIP Device with Older Firmware Version That Does not Support Media Mixing
Application Updates the Monitoring Mode where the Agent is a SIP Device with Older Firmware Version That Does not support Media Mixing
Application Updates the Monitoring Mode on a Monitoring Call at the Supervisor That is in a Conference
Application Initiates Whisper Coaching on an Agent That is Already Playing an Agent Greeting
Application Initiates Agent Greeting on a Call That Already has a Whisper Coaching Session
Message Sequence Charts
This appendix contains message sequences or call scenarios and illustrates a subset of these scenarios that are supported by the Cisco Unified TSP. Be aware that the event order is not guaranteed in all cases and can vary depending on the scenario and the event.
This appendix contains the following sections:
•
Abbreviations
•
3XX
•
Agent Greeting
•
Agent Zip Tone
•
Blind Transfer
•
Call Control Discovery
•
CallFwdAll Notification
•
Calling Party IP Address
•
Calling Party Normalization
•
Call PickUp
•
Call Queuing
•
CIUS Session Persistency
•
Click to Conference
•
Conference Enhancements
•
CIT Remote Device
•
Do Not Disturb-Reject
•
Drop Any Party
•
Early Offer
•
End-To-End Call Trace
•
EnergyWise Deep Sleep Mode Use Cases
•
Extension Mobility Cross Cluster
•
Extension Mobility Memory Optimization Option
•
External Call Control
•
Forced Authorization and Client Matter Code Scenarios
•
Hunt List
•
Hunt Pilot Connected Number Feature
•
Intercom
•
IPv6 Use Cases
•
Join Across Lines
•
Logical Partitioning
•
Manual Outbound Call
•
Monitoring and Recording
•
Park Monitoring
•
Presentation Indication
•
Redirect Set Original Called (TxToVM)
•
Refer and Replaces Scenarios
•
Secure Conferencing
•
Secure Monitoring and Recording
•
Shared Lines-Initiating a New Call Manually
•
SRTP
•
Support for Cisco IP Phone 6900 Series
•
Support for Cisco Unified IP Phone 6900 and 9900 Series Use Cases
•
Swap or Cancel
•
Unrestricted Unified CM
•
Whisper Coaching
Abbreviations
The following list gives abbreviations that are used in the CTI events that are shown in each scenario:
•
NP—Not Present
•
LR—LastRedirectingParty
•
CH—CtiCallHandle
•
GCH—CtiGlobalCallHandle
•
RIU—RemoteInUse flag
•
DH—DeviceHandle
3XX
Application monitors B.
Table A-1 3XX
Actions
|
CallState/CallInfo @Referrer (A)
|
CallState/CallInfo @Referree (B)
|
CallState/CallInfo @Refer-to-Target (C)
|
A calls external phone that is running SIP, which has CFDUNC set to B
|
|
TSPI: LINE_APPNEWCALL
Reason = LINECALL REASON_REDIRECT
|
|
Agent Greeting
Configuration
Customer Phone—IP Phone A with DN 1001.
Agent Phone—IP Phone B with DN 1002.
Agent Phone—IP Phone C with DN 1002 (shared line)
Supervisor Phone—IP Phone D with DN 1003.
IVR1—with DN 5555
IVR2—with DN 6666
Procedure
Application monitoring all lines on all devices.
New extension is negotiated when application opens lines.
SRTP is also supported at IVR side, can be variation of following use cases.
Table A-2 StartSendMediaToBIB Success Case
Action
|
Events, Requests and Responses
|
Make call from 1001 to 1002, and 1002 answers
|
At 1001: CONNECTED
Calling = 1001 Called = 1002 Connected = 1002
At 1002: CONNECTED
Calling = 1001 Called = 1002 Connected = 1001
|
Application issues CCiscoLineDevSpecificStartSendMediaToBIBRequest on 1002 with 5555 and CgpnToIVR
(CM feature creates server call to IVR1 5555, 5555 answers call)
Server-IVR call is redirected to BIB by feature
IVR1 selects/plays agent's greeting
|
At 1002: the request is successful Application receives LineCallDevSpecific (SLDSMT_MEDIA_TO_BIB_STARTED) event
At 5555: CONNECTED, dwreason= LINECALLREASON_UNKNOWN (unknown) ExtendedCallReason= CtiReasonSendMediaToBIB
Calling = CgpnToIVR Called = 5555 Connected = CgpnToIVR
CallAttributeBitMask = ServerCall bit will be set
At 5555: CONNECTED, dwreason= LINECALLREASON_UNKNOWN (unknown) ExtendedCallReason= CtiReasonSendMediaToBIB
Calling = 5555 Called = 5555 Connected =
CallAttributeBitMask = ServerCall bit is set
Media event sent to application (StartTransmissionEvent)
|
IVR1 drops call after agent greeting completes
|
At 1002: Application receives LineCallDevSpecific (SLDSMT_MEDIA_TO_BIB_ENDED,0,0) event
At 5555: Call goes IDLE
|
Table A-3 StopSendMediaToBIB Success Case
Action
|
Events, Requests and Responses
|
Agent playing is in progress...
|
At 1001: CONNECTED
Calling = 1001 Called = 1002 Connected = 1002
At 1002: CONNECTED
Calling = 1001 Called = 1002 Connected = 1001
At 5555: CONNECTED
Calling = 5555 Called = 5555 Connected =
|
Application issues CCiscoLineDevSpecificStopSendMediaToBIBRequest on 1002
|
At 1002: the request is successful Application receives LineCallDevSpecific (SLDSMT_MEDIA_TO_BIB_ENDED,0,0) event
At 5555: Call goes IDLE StopTransmissionEvent
|
Table A-4 StartSendMediaToBIB Failure while Monitoring in Progress at Agent Side
Action
|
Events, Requests and Responses
|
Make call from 1001 to 1002, and 1002 answers
|
At 1001: CONNECTED
Calling = 1001 Called = 1002 Connected = 1002
At 1002: CONNECTED
Calling = 1001 Called = 1002 Connected = 1001
|
Application issues CCiscoLineDevSpecificStartCallMonitoring on 1003 to monitor active call on 1002
|
At 1003: CCiscoLineDevSpecificStartCallMonitoring request successful, monitoring is in session
|
Application issues CCiscoLineDevSpecificStartSendMediaToBIBRequest on 1002
|
At 1002: LINE_REPLY returns with LINEERR_RESOURCEUNAVAIL
|
Table A-5 StartSendMediaToBIB followed by Monitoring Request
Action
|
Events, Requests and Responses
|
Make call from 1001 to 1002, and 1002 answers
|
At 1001: CONNECTED
Calling = 1001 Called = 1002 Connected = 1002
At 1002: CONNECTED
Calling = 1001 Called = 1002 Connected = 1001
|
Application issues CCiscoLineDevSpecificStartSendMediaToBIBRequest on 1002
(CM feature creates server call to IVR1 5555, 5555 answers call)
Server-IVR call redirected to BIB
IVR1 selects/plays agent's greeting
|
At 1002: the request is successful Application receives LineCallDevSpecific (SLDSMT_MEDIA_TO_BIB_STARTED) event
At 5555: CONNECTED, dwreason= LINECALLREASON_UNKNOWN (unknown) ExtendedCallReason= CtiReasonSendMediaToBIB
Calling = CgpnToIVR Called = 5555 Connected = CgpnToIVR
CallAttributeBitMask = ServerCall bit will be set
At 5555: CONNECTED, dwreason= LINECALLREASON_UNKNOWN (unknown) ExtendedCallReason= CtiReasonSendMediaToBIB
Calling = 5555 Called = 5555 Connected =
CallAttributeBitMask = ServerCall bit will be set
Media event sent to application (StartTransmissionEvent)
|
Application issues CCiscoLineDevSpecificStartCallMonitoring on 1003 to monitor active call on 1002
|
At 1003: LINE_REPLY returns with LINEERR_RESOURCEUNAVAIL
|
Table A-6 StartSendMediaToBIB while Recording is in Session
Action
|
Events, Requests and Responses
|
Make call from 1001 to 1002, and 1002 answers
|
At 1001: CONNECTED
Calling = 1001 Called = 1002 Connected = 1002
At 1002: CONNECTED
Calling = 1001 Called = 1002 Connected = 1001
|
Application sends CCiscoLineDevSpecificStartCallRecording to 1002
|
At 1002: CCiscoLineDevSpecificStartCallRecording will be successful and recording is in session
|
Application issues CCiscoLineDevSpecificStartSendMediaToBIBRequest on 1002
(CM feature creates server call to IVR1 5555, 5555 answers call)
Server-IVR call redirected to BIB
IVR1 selects/plays agent's greeting
|
At 1002: the request is successful Application receives LineCallDevSpecific (SLDSMT_MEDIA_TO_BIB_STARTED) event
At 5555: CONNECTED, dwreason= LINECALLREASON_UNKNOWN (unknown) ExtendedCallReason= CtiReasonSendMediaToBIB
Calling = CgpnToIVR Called = 5555 Connected = CgpnToIVR
CallAttributeBitMask = ServerCall bit will be set
At 5555: CONNECTED, dwreason= LINECALLREASON_UNKNOWN (unknown) ExtendedCallReason= CtiReasonSendMediaToBIB
Calling = 5555 Called = 5555 Connected =
CallAttributeBitMask = ServerCall bit will be set
Media event sent to application (StartTransmissionEvent)
|
IVR1 drops call after agent greeting completes
|
At 1002: Application receives LineCallDevSpecific (SLDSMT_MEDIA_TO_BIB_ENDED,0,0) event
At 5555: Call goes IDLE
|
Table A-7 StartSendMediaToBIB followed by Recording Request
Action
|
Events, Requests and Responses
|
Make call from 1001 to 1002, and 1002 answers
|
At 1001: CONNECTED
Calling = 1001 Called = 1002 Connected = 1002
At 1002: CONNECTED
Calling = 1001 Called = 1002 Connected = 1001
|
Application issues CCiscoLineDevSpecificStartSendMediaToBIBRequest on 1002
(CM feature creates server call to IVR1 5555, 5555 answers call)
Server-IVR call is redirected to BIB
IVR1 selects/plays agent's greeting
|
At 1002: the request is successful Application receives LineCallDevSpecific (SLDSMT_MEDIA_TO_BIB_STARTED) event
At 5555: CONNECTED, dwreason= LINECALLREASON_UNKNOWN (unknown) ExtendedCallReason= CtiReasonSendMediaToBIB
Calling = CgpnToIVR Called = 5555 Connected = CgpnToIVR
CallAttributeBitMask = ServerCall bit will be set
At 5555: CONNECTED, dwreason= LINECALLREASON_UNKNOWN (unknown) ExtendedCallReason= CtiReasonSendMediaToBIB
Calling = 5555 Called = 5555 Connected =
CallAttributeBitMask = ServerCall bit will be set
Media event sent to application (StartTransmissionEvent)
|
Application sends CCiscoLineDevSpecificStartCallRecording to 1002
|
At 1002: CCiscoLineDevSpecificStartCallRecording will be successful and recording is in session
|
Table A-8 StartSendMediaToBIB Failure while Barge in Session
Action
|
Events, Requests and Responses
|
Make call from 1001 to 1002, and 1002 answers
|
At 1001: CONNECTED
Calling = 1001 Called = 1002 Connected = 1002
At 1002: CONNECTED
Calling = 1001 Called = 1002 Connected = 1001
|
Phone C (1002) barges in
|
At 1002 (device C) Barge call is created.
|
Application issues CCiscoLineDevSpecificStartSendMediaToBIBRequest on 1002 (B)
|
At 1002 (B): LINE_REPLY with LINEERR_RESOURCEUNAVAIL
|
Table A-9 StartSendMediaToBIB followed by Barge from Shared Line
Action
|
Events, Requests and Responses
|
Make call from 1001 to 1002, and 1002 answers
|
At 1001: CONNECTED
Calling = 1001 Called = 1002 Connected = 1002
At 1002: CONNECTED
Calling = 1001 Called = 1002 Connected = 1001
|
Application issues CCiscoLineDevSpecificStartSendMediaToBIBRequest on 1002
(CM feature creates server call to IVR1 5555, 5555 answers call)
Server-IVR call is redirected to BIB
IVR1 selects/plays agent's greeting
|
At 1002: the request is successful Application receives LineCallDevSpecific (SLDSMT_MEDIA_TO_BIB_STARTED) event
At 5555: CONNECTED, dwreason= LINECALLREASON_UNKNOWN (unknown) ExtendedCallReason= CtiReasonSendMediaToBIB
Calling = CgpnToIVR Called = 5555 Connected = CgpnToIVR
CallAttributeBitMask = ServerCall bit will be set
At 5555: CONNECTED, dwreason= LINECALLREASON_UNKNOWN (unknown) ExtendedCallReason= CtiReasonSendMediaToBIB
Calling = 5555 Called = 5555 Connected =
CallAttributeBitMask = ServerCall bit will be set
Media event sent to application (StartTransmissionEvent)
|
Phone C (1002 shared line) try to barge in
|
Barge will fail on phone C
|
Table A-10 1 Agent Holds Call while Agent Greeting is being Played
Action
|
Events, Requests and Responses
|
Make call from 1001 to 1002, and 1002 answers
|
At 1001: CONNECTED
Calling = 1001 Called = 1002 Connected = 1002
At 1002: CONNECTED
Calling = 1001 Called = 1002 Connected = 1001
|
Application issues CCiscoLineDevSpecificStartSendMediaToBIBRequest on 1002
(CM feature creates server call to IVR1 5555, 5555 answers call)
Server-IVR call is redirected to BIB
IVR1 selects/plays agent's greeting
|
At 1002: the request is successful Application receives LineCallDevSpecific (SLDSMT_MEDIA_TO_BIB_STARTED) event
At 5555: CONNECTED, dwreason= LINECALLREASON_UNKNOWN (unknown) ExtendedCallReason= CtiReasonSendMediaToBIB
Calling = CgpnToIVR Called = 5555 Connected = CgpnToIVR
CallAttributeBitMask = ServerCall bit will be set
At 5555: CONNECTED, dwreason= LINECALLREASON_UNKNOWN (unknown) ExtendedCallReason= CtiReasonSendMediaToBIB
Calling = 5555 Called = 5555 Connected =
CallAttributeBitMask = ServerCall bit will be set
Media event sent to application (StartTransmissionEvent)
|
1002 put call on hold
|
At 1002: Application receives LineCallDevSpecific (SLDSMT_MEDIA_TO_BIB_ENDED,0,0) event Call will go on hold With StopReception and StopTransmission event
At 5555: Call goes IDLE
|
1002 Unhold scenario
|
At 1002: Call will go CONNECTED with StartTransmission and StartReception.
|
Table A-11 Agent Redirects Call while Agent Greeting is being Played
Action
|
Events, Requests and Responses
|
Make call from 1001 to 1002, and 1002 answers
|
At 1001: CONNECTED
Calling = 1001 Called = 1002 Connected = 1002
At 1002: CONNECTED
Calling = 1001 Called = 1002 Connected = 1001
|
Application issues CCiscoLineDevSpecificStartSendMediaToBIBRequest on 1002
(CM feature creates server call to IVR1 5555, 5555 answers call)
Server-IVR call is redirected to BIB
IVR1 selects/plays agent's greeting
|
At 1002: the request is successful Application receives LineCallDevSpecific (SLDSMT_MEDIA_TO_BIB_STARTED) event
At 5555: CONNECTED, dwreason= LINECALLREASON_UNKNOWN (unknown) ExtendedCallReason= CtiReasonSendMediaToBIB
Calling = CgpnToIVR Called = 5555 Connected = CgpnToIVR
CallAttributeBitMask = ServerCall bit will be set
At 5555: CONNECTED, dwreason= LINECALLREASON_UNKNOWN (unknown) ExtendedCallReason= CtiReasonSendMediaToBIB
Calling = 5555 Called = 5555 Connected =
CallAttributeBitMask = ServerCall bit will be set
Media event sent to application (StartTransmissionEvent)
|
Application redirects call on 1002 to 1003
|
At 1003: New call from 1002
At 1002: Call goes IDLE No MEDIA_TO_BIB_ENDED event
At 5555: Call goes IDLE
|
Table A-12 IVR1 Redirects Call to IVR2
Action
|
Events, Requests and Responses
|
Make call from 1001 to 1002, and 1002 answers
|
At 1001: CONNECTED
Calling = 1001 Called = 1002 Connected = 1002
At 1002: CONNECTED
Calling = 1001 Called = 1002 Connected = 1001
|
Application issues CCiscoLineDevSpecificStartSendMediaToBIBRequest on 1002
(CM feature creates server call to IVR 5555, 5555 answers call)
Server-IVR call is redirected to BIB
IVR1 selects/plays agent's greeting
|
At 1002: the request is successful Application receives LineCallDevSpecific (SLDSMT_MEDIA_TO_BIB_STARTED) event
At 5555: CONNECTED, dwreason= LINECALLREASON_UNKNOWN (unknown) ExtendedCallReason= CtiReasonSendMediaToBIB
Calling = CgpnToIVR Called = 5555 Connected = CgpnToIVR
CallAttributeBitMask = ServerCall bit will be set
At 5555: CONNECTED, dwreason= LINECALLREASON_UNKNOWN (unknown) ExtendedCallReason= CtiReasonSendMediaToBIB
Calling = 5555 Called = 5555 Connected =
CallAttributeBitMask = ServerCall bit will be set
Media event sent to application (StartTransmissionEvent)
|
Application redirect call on IVR1 to IVR2
IVR2 answers and plays second agent greeting
|
At 5555: Call goes IDLE
At 6666:
Calling = Called = 6666 Connected = Redirecting = 5555 Redirection = 6666
CallAttributeBitMask = BIBCall
(StartTransmissionEvent)
|
IVR2 drops call after agent greeting completes
|
At 1002: Application receives LineCallDevSpecific (SLDSMT_MEDIA_TO_BIB_ENDED,0,0) event
At 6666: Call goes IDLE
|
Table A-13 Application-2 Opened Line after Agent Greeting is in Playing
Action
|
Events, Requests and Responses
|
Make call from 1001 to 1002, and 1002 answers
|
At 1001: CONNECTED
Calling = 1001 Called = 1002 Connected = 1002
At 1002: CONNECTED
Calling = 1001 Called = 1002 Connected = 1001
|
Application-1 issues CCiscoLineDevSpecificStartSendMediaToBIBRequest on 1002 with 5555 and CgpnToIVR
(CM feature creates server call to IVR1 5555, 5555 answers call)
Server-IVR call is redirected to BIB by feature
IVR1 selects/plays agent's greeting
|
At 1002: the request is successful Application receives LineCallDevSpecific (SLDSMT_MEDIA_TO_BIB_STARTED) event
At 5555: CONNECTED, dwreason= LINECALLREASON_UNKNOWN (unknown) ExtendedCallReason= CtiReasonSendMediaToBIB
Calling = CgpnToIVR Called = 5555 Connected = CgpnToIVR
CallAttributeBitMask = ServerCall bit will be set
At 5555: CONNECTED, dwreason= LINECALLREASON_UNKNOWN (unknown) ExtendedCallReason= CtiReasonSendMediaToBIB
Calling = 5555 Called = 5555 Connected =
CallAttributeBitMask = ServerCall bit will be set
Media event sent to application (StartTransmissionEvent)
|
Application-2 opens agent line from another client
|
At 1002 (from application-2): CallAttributeBitMask SendMediaToBIB will be set to indicate agent greeting is playing on the agent line.
|
Application 2 opens IVR line
|
CallAttributeBitMask = BIBCall
|
Table A-14 Start Agent Greeting after Conference is Setup
Action
|
Events, Requests and Responses
|
Make call from 1001 to 1002, 1002 answers, 1002 sets up conference to 1003, 1003 answers, and 1002 completes
|
At 1001: CONNECTED CONFERENCED
Calling = 1001, Called = 1002, Connected=1002
CONFERENCED
Calling = 1001, Called = 1003, Connected=1003At 1002: CONNECTED CONFERENCED
Calling = 1001, Called = 1002, Connected=1001
CONFERENCED
Calling = 1002, Called = 1003, Connected=1003
At 1003: CONNECTED CONFERENCED
Calling = 1002, Called = 1003, Connected=1002
CONFERENCED
Calling = 1003, Called = 1001, Connected=1001
|
Application issues CCiscoLineDevSpecificStartSendMediaToBIBRequest on 1002 with 5555 and CgpnToIVR
(CM feature creates server call to IVR1 5555, 5555 answers call)
Server-IVR call is redirected to BIB by feature
IVR1 selects/plays agent's greeting
|
At 1002: the request is successful Application receives LineCallDevSpecific (SLDSMT_MEDIA_TO_BIB_STARTED) event
At 5555: CONNECTED, dwreason= LINECALLREASON_UNKNOWN (unknown) ExtendedCallReason= CtiReasonSendMediaToBIB
Calling = CgpnToIVR Called = 5555 Connected = CgpnToIVR
CallAttributeBitMask = ServerCall bit will be set
At 5555: CONNECTED, dwreason= LINECALLREASON_UNKNOWN (unknown) ExtendedCallReason= CtiReasonSendMediaToBIB
Calling = 5555 Called = 5555 Connected =
CallAttributeBitMask = ServerCall bit will be set
Media event sent to application (StartTransmissionEvent)
1001 and 1002 also hears the agent greeting
|
Agent Zip Tone
The devices mentioned in the use cases below also apply to SIP TNP phones.
Configuration
SCCP phones: A (Customer/Remote), B (Agent/Local).
All Lines are Opened with Ext Version - 0x000B0000
Table A-15 Application issues the Play Tone Request when the call is established between Customer and Agent. PlayToneDirection - Remote
Action
|
Expected Events
|
LineInitialize. LineOpen on A,B The CallToneChangedEvent message flag is Enabled using SLDST_SET_STATUS_MESSAGES request for Line A and B.
A calls B;B answers the Call
B issues LineDevSpecific (start PlayTone) request with Agent callid and ZIP Tone as input.
|
Zip Tone is played at A. LINE_DEVSPECIFIC Event with dwParam1=SLDSMT_CALL_TONE_CHANGEDdwParam2= CTONE_ZIP, dwParam3= 0(local) is reported on A and alsoLINE_DEVSPECIFIC Event with dwParam1=SLDSMT_CALL_TONE_CHANGEDdwParam2= CTONE_ZIP, dwParam3= 1(Remote) is reported on B.
|
Table A-16 Application issues the Play Tone Request when the call is established between Customer and Agent. PlayToneDirection - Local
Action
|
Expected Events
|
LineInitialize. LineOpen on A,B The CallToneChangedEvent message flag is Enabled using SLDST_SET_STATUS_MESSAGES request for Line A and B.
A calls B;B answers the Call
B issues LineDevSpecific (start PlayTone) request with agent callid and ZIP Tone as input.
|
Zip Tone is played at B. Line_DevSpecific (dwparam1 = SLDSMT_CALL_TONE_CHANGED, dwParam2=CTONE_ZIP, dwParam3= 0(local) is fired for B indicating Zip Tone has been played on B.
|
Table A-17 Application issues the Play Tone Request when the call is established between Customer and Agent. PlayToneDirection - BothLocalandRemote/NoLocalOrRemote
Action
|
Expected Events
|
LineInitialize. LineOpen on A,B A calls B; B answers the Call
B issues LineDevSpecific (start PlayTone) request with agent callid and ZIP Tone as input
|
LineDevSpecific (start PlayTone) request fails with error LINEERR_OPERATIONUNAVAIL.
|
Table A-18 Application issues the Play Tone Request (with Unsupported Tone) when the call is established between Customer and Agent. PlayToneDirection - Local
Action
|
Expected Events
|
LineInitialize. LineOpen on A,B A calls B; B answers the Call
B issues LineDevSpecific (start PlayTone) request with agent callid and ZIP Tone as input
|
LineDevSpecific (start PlayTone) request fails with error LINEERR_OPERATIONFAILED.
|
Application issues the Play Tone request on a CTI Port with PlayToneDirection - Local/Remote
Configuration
A (Customer/Remote) is SCCP Phone.
B (Agent/local) is a CTIport/Route Point
Table A-19 Application issues the Play Tone Request on a CTI Port with PlayToneDirection - Local/Remote
Action
|
Expected Events
|
LineInitialize. LineOpen on A,B The CallToneChangedEvent message flag is Enabled using SLDST_SET_STATUS_MESSAGES request for Line A.
A calls B;B answers the Call
B issues the LineDevSpecific (start PlayTone) request with agent callid and ZIP Tone as input, and direction as local.
B issues the LineDevSpecific (start PlayTone) request with agent callid and ZIP Tone as input, and direction as remote.
|
LineDevSpecific (start PlayTone) request fails with error LINEERR_OPERATIONUNAVAIL.
Zip Tone is played at A. Line_DevSpecific (dwparam1 = SLDSMT_CALL_TONE_CHANGED, dwParam2=CTONE_ZIP, dwParam3= 0(local)) is fired for A indicating Zip Tone has been played on A And also Line_DevSpecific (dwparam1 = SLDSMT_CALL_TONE_CHANGED, dwParam2=CTONE_ZIP, dwParam3= 1(remote) is fired for B
|
Application issues the Play tone request when the call is established between customer and agent (Shared Line). PlayToneDirection - Local
Configuration
SCCP phones: A (Customer/ Remote), B, B' (Agent/Local)
Table A-20 Application issues the Play Tone Request when the call is established between Customer and Agent (Shared Line). PlayToneDirection - Local
Action
|
Expected Events
|
LineInitialize. LineOpen on A, B, B' The CallToneChangedEvent message flag is Enabled using SLDST_SET_STATUS_MESSAGES request for Line B and B'.
A calls B;B and B' starts ringing; B answers the Call
B issues the LineDevSpecific (start PlayTone) request with agent callid and ZIP Tone as input.
Variants:
B' issues the LineDevSpecific (start PlayTone) request with agent callid and ZIP Tone as input direction remote.
B issues the LineDevSpecific (start PlayTone) request with agent callid and ZIP Tone as input direction remote.
A issues the LineDevSpecific (start PlayTone) request with agent callid and ZIP Tone as input direction remote.
|
Zip Tone is played at B. Line_DevSpecific (dwparam1 = SLDSMT_CALL_TONE_CHANGED, dwParam2=CTONE_ZIP, dwParam3= 0(local)) is fired for B indicating Zip Tone has been played on B.
There is no Zip Tone played at B'and no Zip tone notification on B'.
The LineDevSpecific (start PlayTone) request fails with Error LINEERR_OPERATIONFAILED
Zip Tone is played at A. Line_DevSpecific (dwparam1 = SLDSMT_CALL_TONE_CHANGED, dwParam2=CTONE_ZIP, dwParam3= 0(local))) will be fired for A also Line_DevSpecific (dwparam1 = SLDSMT_CALL_TONE_CHANGED, dwParam2=CTONE_ZIP, dwParam3= 1(remote) will be fired for B. There is no Zip Tone played at B'and no Zip tone notification on B'.
Zip Tone is played at B and B'. Line_DevSpecific (dwparam1 = SLDSMT_CALL_TONE_CHANGED, dwParam2=CTONE_ZIP, dwParam3= 0(local))) is fired for B and B' also Line_DevSpecific (dwparam1 = SLDSMT_CALL_TONE_CHANGED, dwParam2=CTONE_ZIP, dwParam3= 1(remote) is fired for A.
|
Table A-21 Application Issues the Play Tone Request when the call is established between Customer and Agent (Intercom Line). PlayToneDirection - Local
Action
|
Expected Events
|
LineInitialize. Phone A have 2 lines: Line1 is a normal line with X, Line2 is a intercom line (B), SpeedDial DN= D
Phone B have 2 lines: Line1 is a normal line with Y, Line2 is a intercom line (D)
LineOpen on B,D The CallToneChangedEvent message flag is Enabled using SLDST_SET_STATUS_MESSAGES request for Line B, D
B calls D; D starts ringing; D answers the Call
D issues the LineDevSpecific (start PlayTone) request with agent(D) callid and ZIP Tone as input.
Variant 1:
D issues the LineDevSpecific (start PlayTone) request with agent(D) callid and ZIP Tone as input, and direction as remote.
|
The LineDevSpecific (start PlayTone) request fails with error LINEERR_OPERATIONUNAVAIL.
The LineDevSpecific (start PlayTone) request fails with error LINEERR_OPERATIONUNAVAIL.
|
Conference Scenario. PlayToneDirection - local.
Configuration
A, B, and C are SCCP Phones.
Table A-22 Conference Scenario. PlayToneDirection - Local
Action
|
Expected Events
|
LineInitialize. LineOpen on A, B, and C The CallToneChangedEvent message flag is Enabled using SLDST_SET_STATUS_MESSAGES request for Line B.
A calls B; B answers the call; B sets up the conference with C; B completes the conference.
B issues the LineDevSpecific (start PlayTone) request with agent callid and ZIP Tone as input.
Variant 1:
B issues the LineDevSpecific (start PlayTone) request with agent callid and ZIP Tone as input and direction as Remote
|
Zip Tone is played at B. Line_DevSpecific (dwparam1 = SLDSMT_CALL_TONE_CHANGED, dwParam2=CTONE_ZIP, dwParam3= 0(local)) is fired for B indicating Zip Tone has been played on B.
The LineDevSpecific (start PlayTone) request will be Success. But there will be no Tone played on the Coneference members. Line_DevSpecific (dwparam1 = SLDSMT_CALL_TONE_CHANGED, dwParam2=CTONE_ZIP, dwParam3= 1(remote)) is fired for B
|
Application issues the Play Tone request when the call is established between customer and agent, Agent puts the call on Hold. PlayToneDirection - Remote.
Configuration
A and B are SCCP Phones.
Table A-23 Application issues the Play Tone Request when the call is established between Customer and Agent, Agent puts the call on Hold. PlayToneDirection - Remote
Action
|
Expected Events
|
LineInitialize. LineOpen on A,B The CallToneChangedEvent message flag is Enabled using SLDST_SET_STATUS_MESSAGES request for Line B.
A calls B;B answers the Call; B puts the Call on hold
A issues the LineDevSpecific (start PlayTone) request with agent callid and ZIP Tone as input.
|
Zip Tone is played at B. Line_DevSpecific (dwparam1 = SLDSMT_CALL_TONE_CHANGED, dwParam2=CTONE_ZIP, dwParam3= 1(remote)) is fired for A also Line_DevSpecific (dwparam1 = SLDSMT_CALL_TONE_CHANGED, dwParam2=CTONE_ZIP, dwParam3= 0(local) is fired for B.
|
Blind Transfer
Table A-24 describes the message sequences for Blind Transfer when A calls B, B answers, and A and B are connected.
Table A-24 Message Sequences for Blind Transfer
Action
|
CTI Messages
|
TAPI Messages
|
TAPI Structures
|
Party B does a lineBlindTranfser() to blind transfer call from party A to party C
|
Party A
|
CallPartyInfoChangedEvent, CH=C1, CallingChanged=False, Calling=A, CalledChanged=True, Called=C, OriginalCalled=B, LR=B, Cause=BlindTransfer
|
LINE_CALLINFO hDevice=hCall-1 dwCallbackInstance=0 dwParam1=CONNECTEDID, REDIRECTINGID, REDIRECTIONID
|
TSPI LINECALLINFO dwOrigin=OUTBOUND dwReason=DIRECT dwCallerID=A dwCalledID=B dwConnectedID=NULL dwRedirectingID=NP dwRedirectionID=NP
|
Party B
|
CallStateChangedEvent, CH=C2, State=Idle, Reason=Direct, Calling=A, Called=B, OriginalCalled=B, LR=NULL
|
TSPI: LINE_CALLSTATE |hDevice=hCall-1 dwCallbackInstance=0 dwParam1=IDLE dwParam2=0 dwParam3=0
|
TSPI LINECALLINFO dwOrigin=INTERNAL dwReason=DIRECT dwCallerID=A dwCalledID=B dwConnectedID=NULL dwRedirectingID=NULL dwRedirectionID=NULL
|
Party C
|
NewCallEvent, CH=C3, origin=Internal_Inbound, Reason=BlindTransfer, Calling=A, Called=C, OriginalCalled=B, LR=B
|
TSPI: LINE_APPNEWCALL hDevice=C dwCallbackInstance=0 dwParam1=0 dwParam2=hCall-1 dwParam3=OWNER
|
TSPI LINECALLINFO dwOrigin=INTERNAL dwReason=TRANSFER dwCallerID=A dwCalledID=C dwConnectedID=NULL dwRedirectingID=B dwRedirectionID=C
|
Party C is offering
|
Party A
|
CallStateChangeEvent, CH=C1, State=Ringback, Reason=Direct, Calling=A, Called=C, OriginalCalled=B, LR=B
|
TSPI: LINE_CALLSTATE, hDevice=hCall-1, dwCallbackInstance=0, dwParam1= RINGBACK dwParam2=0 dwParam3=0
|
TSPI LINECALLINFO dwOrigin=OUTBOUND dwReason=DIRECT dwCallerID=A dwCalledID=B dwConnectedID=NULL dwRedirectingID=B dwRedirectionID=C
|
Party C
|
CallStateChangedEvent, CH=C3, State=Offering, Reason=BlindTransfer, Calling=A, Called=C, OriginalCalled=B, LR=B
|
TSPI: LINE_CALLSTATE, hDevice=hCall-1, dwCallbackInstance=0, dwParam1= OFFERING dwParam2=0 dwParam3=0
|
TSPI LINECALLINFO dwOrigin=INTERNAL dwCallerID=A dwCalledID=C dwConnectedID=NULL dwRedirectingID=B dwRedirectionID=C
|
Call Control Discovery
Basic Call Initiated from TAPI from Phone A on Cluster 1 to Phone B on Cluster2
Configuration
SCCP phone A(1900) are registered to cluster A
Phones A are associated with the end-user cluster1
SCCP phone B(1000) registered to cluster B
Phones B are associated with the end-user cluster2
CUCM learns a pattern 10XX, plus PSTN failover rule as 0:1408972 from SAF network. TAPI is observing A.
Procedure
Application monitors A
Application sends a lineMakeCall at A to call B
Action
|
CTI Messages
|
TAPI Messages
|
A dials 1000, this call first will be intercepted by CCD Requesting Feature, and CCD Requesting feature will extend this call to SIP trunk
|
A receives NewCallEvent and CallStateChangeEvent (Dialtone/Dialing)
|
A:
LINE_APPNEWCALL, LINE_CALLSTATE (LINECALLSTATE_DIALTONE/ LINECALLSTATE_DIALING)
CallerID = A / CalledID = ""
|
SIP trunk rejects this call due to no more bandwidth available
|
A receives CallStateChangeEvent (PROCEEDING)
|
LineA: LINE_CALLSTATE (LINECALLSTATE_PROCEEDING)/ LINE_CALLINFO
CallReason = LINECALLREASON_DIRECT
CallerID = A / CalledID = 1000 / ConnectedID = / RedirectingID = / RedirectionID =
|
CCD Requesting feature will start PSTN failover by directing this caller to 1000's PSTN failover number, that is, 14089721000. Call is sent out to a PSTN GW
|
|
|
CCD Requesting feature will start PSTN failover by directing this caller to 1000's PSTN failover number, that is, 14089721000. Call is sent out to a PSTN GW
|
A receives CPIC and CallStateChangeEvent (Ringback/connected)
Provide TSPI_LinegetcallInfo on A connected with B
|
A:CPIC event received on party A
LineA: LINE_CALLSTATE (LINECALLSTATE_RINGBACK / LINECALLSTATE_CONNECTED)
CallReason = LINECALLREASON_DIRECT
LINECALLINFO.dwCallID = 0x00400BBA
LINECALLINFO.dwOrigin = 0x00000001
LINECALLINFO.dwReason = 0x00000001
LINECALLINFO.dwCallerID = 1900(A)
LINECALLINFO.dwCallerIDName =
LINECALLINFO.dwCalledID = 1000:
LINECALLINFO.dwCalledIDName = CCD Pattern
LINECALLINFO.dwConnectedID = 1000(B)
LINECALLINFO.dwConnectedIDName =
LINECALLINFO.dwRedirectionID = 1000
LINECALLINFO.dwRedirectionIDName =
LINECALLINFO.dwRedirectingID = 1000
LINECALLINFO.dwRedirectingIDName = CCD Pattern
ExtendCallReason = CtiReasonSAF_CCD_PSTNFailover(2B)
|
Basic Call Initiated from TAPI from Phone A on Cluster 1 to Phone B on Cluster2 with PSTN Failover Rule not Set
Configuration
SCCP phone A are registered to cluster A.
Phones A are associated with the end-user "cluster1".
SCCP phone B(1000) registered to cluster B.
Phones B are associated with the end-user "cluster2".
CUCM learns a pattern 10XX, plus PSTN failover rule as 0:1408972 from SAF network is not set.
Procedure
Application monitors A.
Application sends a lineMakeCall at A to call B.
Action
|
CTI Messages
|
TAPI Messages
|
A dials 1000, this call first will be intercepted by CCD Requesting Feature, and CCD Requesting feature will extend this call to SIP trunk
|
A receives NewCallEvent and CallStateChangeEvent (Dialtone/Dialing)
|
A:
LINE_APPNEWCALL, LINE_CALLSTATE (LINECALLSTATE_DIALTONE/ LINECALLSTATE_DIALING)
CallerID = A / CalledID = ""
|
SIP trunk rejects this call due to lack of bandwidth
|
A receives CallStateChangeEvent (PROCEEDING)
|
A:A receives CPIC event
LineA: LINE_CALLSTATE (LINECALLSTATE_PROCEEDING)/ LINE_CALLINFO
CallReason = LINECALLREASON_DIRECT
CallerID = A / CalledID = 1000 / ConnectedID = / RedirectingID = / RedirectionID =
|
| |
A receives CallStateChangeEvent (disconnected)
|
LineA: LINE_CALLSTATE (LINECALLSTATE_ Disconnected)
EVENT = LINE_CALLSTATE = 2
m_lpfnEventProc = 0xXXX
m_htLine = 0x000XXXX
htCall = 0x000XXX
|
| |
Provide TSPI_linegetcallinfo on the Disconnected call
|
dwParam1 = 0x00004000(LINECALLSTATE_DISCONNECTED)
dwParam2 = 0x00200000(LINEDISCONNECTMODE_SAFCCD)
dwParam3 = 0x00000004
LINECALLINFO.dwCallID = 0x00400BCF
LINECALLINFO.dwOrigin = 0x00000001
LINECALLINFO.dwReason = 0x00000001
LINECALLINFO.dwCallerID = 1900
LINECALLINFO.dwCallerIDName =
LINECALLINFO.dwCalledID = 10XX:
LINECALLINFO.dwCalledIDName = CCD Pattern
LINECALLINFO.dwConnectedID =
LINECALLINFO.dwConnectedIDName =
LINECALLINFO.dwRedirectionID = 1000:
LINECALLINFO.dwRedirectionIDName = CCD Pattern
LINECALLINFO.dwRedirectingID = 1000:
LINECALLINFO.dwRedirectingIDName = CCD Pattern
ExtendCallReason = CtiReasonSAF_CCD_PSTNFailover
|
Basic Call Initiated from TAPI from Phone A(1900) and B(1901) on Cluster 1, B Redirects to Phone C(1000) on Cluster2 with PSTN Failover Rule Set
Configuration
SCCP phone A and B are registered to cluster A.
Phones A and B are associated with the end-user cluster1.
SCCP phone C(1000) registered to cluster B.
Phones C are associated with the end-user cluster2.
CUCM learns a pattern 10XX, plus PSTN failover rule as 0:1408972 from SAF network.
Procedure
Application monitors A and B.
Application sends a lineMakeCall at A to call B
Table A-25 Basic Call Initiated from TAPI from Phone A(1900) and B(1901) on Cluster 1, B Redirects to Phone C(1000) on Cluster2 with PSTN Failover Rule Set
Action
|
CTI Messages
|
TAPI Messages
|
A dials B
|
A receives NewCallEvent and CallStateChangeEvent (Dialtone/Dialing/Proceeding /ringback/connected).
B receives NewCallEvent and CallStateChangeEvent (offering/ringing/ connected).
|
A:
LINE_APPNEWCALL, LINE_CALLSTATE (LINECALLSTATE_DIALTONE/ LINECALLSTATE_DIALING, LINECALLSTATE_CONNECTED,)
CallerID = A / CalledID = B
B:
LINE_APPNEWCALL, LINE_CALLSTATE (LINECALLSTATE_OFFERING/ LINECALLSTATE_RINGING, LINECALLSTATE_CONNECTED)
CallerID = A / CalledID = B
|
B setsupconference, consult call to C(1000), this call first will be intercepted by CCD Requesting Feature, and CCD Requesting feature will extend this call to SIP trunk
SIP trunk rejects this call due to no more bandwidth available
CCD Requesting feature will start PSTN failover by directing this caller to 1000's PSTN failover number, i.e. 14089721000. Call is sent out to a PSTN GW
TSPI_linegetcallinfo on the consult call between B and C.
B completes conference.
|
|
B:
LINE_APPNEWCALL, LINE_CALLSTATE (LINECALLSTATE_DIALTONE/ LINECALLSTATE_DIALING)
B: receives CPIC event
LineB: LINE_CALLSTATE (LINECALLSTATE_RINGBACK / LINECALLSTATE_CONNECTED)
ExtendCallReason = CtiReasonSAF_CCD_PSTNFailover
A, B and C are in conference.
|
Basic Call Initiated from TAPI from Phone A and B on Cluster 1, B Transfers to Phone C(1000) on Cluster 2 with PSTN Failover Rule
Configuration
SCCP phone A and B are registered to cluster A.
Phones A(1900) and B(1901) are associated with the end-user cluster1.
SCCP phone C(1000) registered to cluster B.
Phones C are associated with the end-user cluster2.
CUCM learns a pattern 10XX, plus PSTN failover rule as 0:1408972 from SAF network.
Procedure
Application monitors A and B.
Application sends a lineMakeCall at A to call B.
Table A-26 Basic Call Initiated from TAPI from Phone A and B on Cluster 1, B Transfers to Phone C(1000) on Cluster 2 with PSTN Failover Rule
Action
|
CTI Messages
|
TAPI Messages
|
A(1900) dials B(1901)
|
A receives NewCallEvent and CallStateChangeEvent (Dialtone/Dialing/Proceeding /ringback/connected).
B receives NewCallEvent and CallStateChangeEvent (offering/ringing/ connected)
|
A:
LINE_APPNEWCALL, LINE_CALLSTATE (LINECALLSTATE_DIALTONE/ LINECALLSTATE_DIALING, LINECALLSTATE_CONNECTED,)
B:
LINE_APPNEWCALL, LINE_CALLSTATE (LINECALLSTATE_OFFERING/ LINECALLSTATE_RINGING, LINECALLSTATE_CONNECTED)
|
B(1901) setups transfer to C(1000)
This call first will be intercepted by CCD Requesting Feature, and CCD Requesting feature will extend this call to SIP trunk
SIP trunk rejects this call due to no more bandwidth available
CCD Requesting feature will start PSTN failover by directing this caller to 1000's PSTN failover number, i.e. 14089721000. Call is sent out to a PSTN GW.
TSPI_linegetcallinfo on Consult call on B with C.
B completes transfer
|
|
B:
LINE_APPNEWCALL, LINE_CALLSTATE (LINECALLSTATE_DIALTONE/ LINECALLSTATE_DIALING)
B:
LINE_APPNEWCALL, LINE_CALLSTATE (LINECALLSTATE_DIALTONE/ LINECALLSTATE_DIALING)
LINECALLINFO.dwCallID = 0x00400BBA
LINECALLINFO.dwOrigin = 0x00000001
LINECALLINFO.dwReason = 0x00000001
LINECALLINFO.dwCallerID = 1901(B)
LINECALLINFO.dwCallerIDName =
LINECALLINFO.dwCalledID = 1000:
LINECALLINFO.dwCalledIDName = CCD Pattern
LINECALLINFO.dwConnectedID = 1000(C)
LINECALLINFO.dwConnectedIDName =
LINECALLINFO.dwRedirectionID = 1000
LINECALLINFO.dwRedirectionIDName =
LINECALLINFO.dwRedirectingID = 1000
LINECALLINFO.dwRedirectingIDName = CCD Pattern
Extendedcallreason = CtiReasonSAF_CCD_PSTNFailover
B:
LINE_CALLSTATE (LINECALLSTATE_DISCONNECTED)
ExtendCallReason=CtiReasonTransferredCall
|
| |
Call Initiated from TAPI from Phone A and B on Cluster 1, B setsupconference to Phone C(1000) on Cluster 2 with PSTN Failover Rule
Configuration
SCCP phone A and B are registered to cluster A
Phones A(1900) and B(1901) are associated with the end-user cluster1
SCCP phone C(1000) registered to cluster B
Phones C are associated with the end-user cluster2
CUCM learns a pattern 10XX, plus PSTN failover rule as 0:1408972 from SAF network
Procedure
Application monitors A and B
Application sends a lineMakeCall at A to call B
Table A-27 Call Initiated from TAPI from Phone A and B on Cluster 1, B setsupconference to Phone C(1000) on Cluster 2 with PSTN Failover Rule
Action
|
CTI Messages
|
TAPI Messages
|
A dials B
|
A receives NewCallEvent and CallStateChangeEvent (Dialtone/Dialing/Proceeding /ringback/connected)
B receives NewCallEvent and CallStateChangeEvent (offering/ringing/ connected)
|
A:
LINE_APPNEWCALL, LINE_CALLSTATE (LINECALLSTATE_DIALTONE/ LINECALLSTATE_DIALING, LINECALLSTATE_CONNECTED,)
CallerID = A / CalledID = B
B:
LINE_APPNEWCALL, LINE_CALLSTATE (LINECALLSTATE_OFFERING/ LINECALLSTATE_RINGING, LINECALLSTATE_CONNECTED)
CallerID = A / CalledID = B
|
B setsupconference, consult call to C(1000), this call first will be intercepted by CCD Requesting Feature, and CCD Requesting feature will extend this call to SIP trunk
SIP trunk rejects this call due to no more bandwidth available
CCD Requesting feature will start PSTN failover by directing this caller to 1000's PSTN failover number, that is, 14089721000. Call is sent out to a PSTN GW
TSPI_linegetcallinfo on the consult call between B and C
B completes conference
|
B:
LINE_APPNEWCALL, LINE_CALLSTATE (LINECALLSTATE_DIALTONE/ LINECALLSTATE_DIALING)
B: receives CPIC event
LineB: LINE_CALLSTATE (LINECALLSTATE_RINGBACK / LINECALLSTATE_CONNECTED)
ExtendCallReason = CtiReasonSAF_CCD_PSTNFailover
A, B and C are in conference
|
|
Basic Call Initiated from TAPI from Phone A on Cluster 1 to Phone B on Cluster 2 over SAF Trunk
Configuration
SCCP phone A(1900) are registered to cluster A
Phones A are associated with the end-user cluster1
SCCP phone B(1000) registered to cluster B
Phones B are associated with the end-user cluster2
CUCM learns a pattern 10XX, no PSTN failover rule as SAF network has unlimited Bandwidth, TAPI is observing A
Procedure
Application monitors A
Application sends a lineMakeCall at A to call B
Table A-28 Basic Call Initiated from TAPI from Phone A on Cluster 1 to Phone B on Cluster 2 over SAF Trunk
Action
|
CTI Messages
|
TAPI Messages
|
A dials 1000
|
A receives NewCallEvent and CallStateChangeEvent (Dialtone/Dialing)
|
A:
LINE_APPNEWCALL, LINE_CALLSTATE (LINECALLSTATE_DIALTONE/ LINECALLSTATE_DIALING)
CallerID = A / CalledID = ""
|
| |
A receives CallStateChangeEvent (PROCEEDING)
|
LineA: LINE_CALLSTATE (LINECALLSTATE_PROCEEDING)/ LINE_CALLINFO
CallReason = LINECALLREASON_DIRECT
CallerID = A / CalledID = 1000 / ConnectedID = / RedirectingID = / RedirectionID =
|
| |
A receives CallStateChangeEvent (Ringback/connected)
|
A:CPIC event received on party A
LineA: LINE_CALLSTATE (LINECALLSTATE_RINGBACK / LINECALLSTATE_CONNECTED)
CallReason = LINECALLREASON_DIRECT
CallerID = A / CalledID = 1000 / ConnectedID = 1000 / RedirectingID = 1000 / RedirectionID = 1000
LINECALLINFO.dwCallID = 0x00400FB1
LINECALLINFO.dwOrigin = 0x00000001
LINECALLINFO.dwReason = 0x00000001
LINECALLINFO.dwCallerID = 1900
LINECALLINFO.dwCallerIDName =
LINECALLINFO.dwCalledID = 1000:
LINECALLINFO.dwCalledIDName = CCD Pattern
LINECALLINFO.dwConnectedID = 1000
LINECALLINFO.dwConnectedIDName =
LINECALLINFO.dwRedirectionID = 1000
LINECALLINFO.dwRedirectionIDName =
LINECALLINFO.dwRedirectingID = 1000:
LINECALLINFO.dwRedirectingIDName = CCD Pattern
|
Basic Call Initiated from TAPI from Phone A and B on Cluster 1, B Redirects to Phone C(1000) on Cluster 2 over SAF Trunk
Configuration
SCCP phone A and B are registered to cluster A
Phones A and B are associated with the end-user cluster1
SCCP phone C(1000) registered to cluster B
Phones C are associated with the end-user cluster2
CUCM learns a pattern 10XX, from SAF network as unlimited Bandwidth
Procedure
Application monitors A and B
Application sends a lineMakeCall at A to call B
Table A-29 Basic Call Initiated from TAPI from Phone A and B on Cluster 1, B Redirects to Phone C(1000) on Cluster 2 over SAF Trunk
Action
|
CTI Messages
|
TAPI Messages
|
A dials B
|
A receives NewCallEvent and CallStateChangeEvent (Dialtone/Dialing/Proceeding /ringback/connected)
B receives NewCallEvent and CallStateChangeEvent (offering/ringing/ connected)
|
A:
LINE_APPNEWCALL, LINE_CALLSTATE (LINECALLSTATE_DIALTONE/ LINECALLSTATE_DIALING, LINECALLSTATE_CONNECTED,)
B:
LINE_APPNEWCALL, LINE_CALLSTATE (LINECALLSTATE_OFFERING/ LINECALLSTATE_RINGING, LINECALLSTATE_CONNECTED)
|
B redirects call to 1000 over ICT trunk
TSPI_linegetcallinfo on A
|
A receives CallStateChangeEvent (Connected)
|
B:
LINE_APPNEWCALL, LINE_CALLSTATE (LINECALLSTATE_DISCONNECTED)
ExtendCallReason= CtiReasonRedirect
A:CPIC event received on A
LineA: LINE_CALLSTATE (LINECALLSTATE_RINGBACK)
LineA: LINE_CALLSTATE (LINECALLSTATE_CONNECTED)/ LINE_CALLINFO
CallReason = LINECALLREASON_DIRECT
LINECALLINFO.dwCallID = 0x00400FB2
LINECALLINFO.dwOrigin = 0x00000001
LINECALLINFO.dwReason = 0x00000001
LINECALLINFO.dwCallerID = 1900
LINECALLINFO.dwCallerIDName =
LINECALLINFO.dwCalledID = 1901
LINECALLINFO.dwCalledIDName =
LINECALLINFO.dwConnectedID = 1000
LINECALLINFO.dwConnectedIDName =
LINECALLINFO.dwRedirectionID = 1000
LINECALLINFO.dwRedirectionIDName =
LINECALLINFO.dwRedirectingID = 1901
LINECALLINFO.dwRedirectingIDName =
ExtendCallReason = CtiReasonRedirect
|
Basic Call Initiated from TAPI from Phone A and B on Cluster 1, B Transfers to Phone C(1000) on Cluster 2 over SAF Trunk
Configuration
SCCP phone A and B are registered to cluster A
Phones A and B are associated with the end-user cluster1
SCCP phone C(1000) registered to cluster B
Phones C are associated with the end-user cluster2
CUCM learns a pattern 10XX, plus PSTN failover rule as 0:1408972 from SAF network, SAF network has unlimited bandwidth.
Procedure
Application monitors A and B
Application sends a lineMakeCall at A to call B
Table A-30 Basic Call Initiated from TAPI from Phone A and B on Cluster 1, B Transfers to Phone C(1000) on Cluster 2 over SAF Trunk
Action
|
CTI Messages
|
TAPI Messages
|
A calls B
|
A receives NewCallEvent and CallStateChangeEvent (Dialtone/Dialing/Proceeding /ringback/connected)
B receives NewCallEvent and CallStateChangeEvent (offering/ringing/ connected)
|
A:
LINE_APPNEWCALL, LINE_CALLSTATE (LINECALLSTATE_DIALTONE/ LINECALLSTATE_DIALING, LINECALLSTATE_CONNECTED,)
B:
LINE_APPNEWCALL, LINE_CALLSTATE (LINECALLSTATE_OFFERING/ LINECALLSTATE_RINGING, LINECALLSTATE_CONNECTED)
|
B setup transfers to C(1000), through the ICT(SAF) trunk
Complete transfer on B
TSPI_linegetcallinfo on disconnected call on B
|
B: receives CPIC event
|
B:
LINE_APPNEWCALL, LINE_CALLSTATE (LINECALLSTATE_DIALTONE/ LINECALLSTATE_DIALING/Proceeding)
LineB: LINE_CALLSTATE (LINECALLSTATE_RINGBACK / LINECALLSTATE_CONNECTED)
CallReason = LINECALLREASON_DIRECT
B:
LINE_APPNEWCALL, LINE_CALLSTATE (LINECALLSTATE_DISCONNECTED)
ExtendCallReason= CtiReasonTransferredCall
|
TSPI_linegetcallinfo on A
|
A receives CallStateChangeEvent (Connected)
|
A:
LineA: LINE_CALLSTATE (LINECALLSTATE_CONNECTED)/ LINE_CALLINFO
CallReason = LINECALLREASON_DIRECT
LINECALLINFO.dwCallID = 0x00400FB4
LINECALLINFO.dwOrigin = 0x00000001
LINECALLINFO.dwReason = 0x00000001
LINECALLINFO.dwCallerID = 1000
LINECALLINFO.dwCallerIDName =
LINECALLINFO.dwCalledID = 1901
LINECALLINFO.dwCalledIDName =
LINECALLINFO.dwConnectedID = 1000
LINECALLINFO.dwConnectedIDName =
LINECALLINFO.dwRedirectionID = 1900
LINECALLINFO.dwRedirectionIDName =
LINECALLINFO.dwRedirectingID = 1901
LINECALLINFO.dwRedirectingIDName =
ExtendCallReason = CtiReasonTransferredCall
|
CallFwdAll Notification
This section describes the CallFwdAll Notification usecases.
Application Pressed CFwdAll on TAPI Monitored Device
Application opens the line with new ExtVersion 0x000A0000. User presses CFwdAll softkey on A when device is in on-hook condition.
Action
|
CTI Events
|
Expected Results
|
LineInitialize
LineOpen on A with new ExtVesrion 0x000A0000
|
|
|
User presses CFwdAll softkey
|
NewCallEvent received for A
|
|
LineGetCallInfo on A
|
|
LINECALLINFO::DEVSPECIFIC would contain CallAttributeBitMask 0x00000040
|
TAPI Monitored Device Goes Off Hook
Application opens the line with new ExtVersion 0x000A0000. Device goes off hook.
Action
|
CTI Events
|
Expected Results
|
LineInitialize
LineOpen on A with new ExtVesrion 0x000A0000
|
|
|
A goes off-hook
|
NewCallEvent received for A
|
|
LineGetCallInfo on A
|
|
LINECALLINFO::DEVSPECIFIC would contain CallAttributeBitMask : 0x00000000
|
Application Monitors Off Hook Device
Device goes off hook. Application does a LineInitialize and opens line A with new ExtVersion 0x000A0000
Action
|
CTI Events
|
Expected Results
|
Device goes offhook
|
|
|
LineInitialize
LineOpen on A with new ExtVesrion 0x000A0000
|
ExistingCallEvent received at A
|
|
LineGetCallInfo on A
|
|
LINECALLINFO::DEVSPECIFIC would contain CallType 00000000
|
Application Monitors Device after User Presses CFwdAll
User presses CFwdAll softkey on the device. Application does a LineInitialize and opens line A with new ExtVersion 0x000A0000.
Action
|
CTI Events
|
Expected Results
|
User presses CFwdAll softkey on the device
|
|
|
LineInitialize
LineOpen on A with new ExtVesrion 0x000A0000
|
ExistingCallEvent received for A
|
|
LineGetCallInfo on A
|
|
LINECALLINFO::DEVSPECIFIC would contain CallAttributeBitMask : 0x00000040
|
User Presses CFwdAll Softkey after Device is Off Hook
TAPI application does a LineInitialize and opens line A with new ExtVersion 0x000A0000. Device goes off hook and user presses CFwdAll softkey.
Action
|
CTI Events
|
Expected Results
|
LineInitialize
LineOpen on A with new ExtVesrion 0x000A0000
|
ExistingCallEvent received for A
|
|
A goes off-hook
User presses CFwdAll softkey
|
NewCallEvent received for A
|
LINECALLINFO::DEVSPECIFIC would contain CallAttributeBitMask : 0x00000040
|
LineGetCallInfo on A
|
|
LINECALLINFO::DEVSPECIFIC would contain CallAttributeBitMask : 0x00000000
|
User Presses CFwdAll Softkey on a Multiline Device
TAPI application does LineInitialize and opens all lines- A1 and A2 for the device with new ExtVersion 0x000A0000. User presses the CFwdAll softkey.
Action
|
CTI Events
|
Expected Results
|
LineInitialize
LineOpen on A1,
LineOPen on A2 with new ExtVesrion 0x000A0000
|
|
|
User presses CFwdAll softkey
|
NewCallEvent received for A1
|
|
LineGetCallInfo on A1
|
|
LINECALLINFO::DEVSPECIFIC would contain CallAttributeBitMask : 0x00000040
|
User Presses CFwdAll on a Multiline Device by Selecting a Line
TAPI application does a LineInitialize and opens all lines- A1 and A2 for the device with new ExtVersion 0x000A0000. User selects line A2 and presses CFwdAll softkey.
Action
|
CTI Events
|
Expected Results
|
LineInitialize
LineOpen on A1,
LineOPen on A2 with new ExtVesrion 0x000A0000
|
|
|
User selects line A2 and presses CFwdAll softkey
|
NewCallEvent received for A1
|
|
LineGetCallInfo on A2
|
|
LINECALLINFO::DEVSPECIFIC would contain CallAttributeBitMask : 0x00000000
|
Shared Line Scenario on Pressing CFwdAll Softkey
TAPI application does a LineInitialize and opens a shared line A with new ExtVersion 0x000A0000 on devices P and Q. User presses CFwdAll softkey on device P.
Action
|
CTI Events
|
Expected Results
|
LineInitialize
LineOpen on A
LineOpen on A' with new ExtVesrion 0x000A0000
|
|
|
On device P, user presses `CFwdAll' softkey
|
NewCallEvent received at A
NewCallEvent received at A' for RIU call
|
|
LineGetCallInfo on A
|
|
LINECALLINFO::DEVSPECIFIC would contain CallAttributeBitMask : 0x00000040
|
LineGetCallInfo on A
|
|
LINECALLINFO::DEVSPECIFIC would contain CallAttributeBitMask : 0x00000000
|
Cancellation of CFwdAll
TAPI application does a LineInitialize and open line A with new ExtVersion 0x000A0000. User sets CFwdAll for line A by pressing CFwdAll softkey followed by CallFwdAll destination number.
Later, user presses `CFwdAll' softkey again to cancel CFwdAll setting.
Action
|
CTI Events
|
Expected Results
|
LineInitialize
LineOpen on A with new ExtVesrion 0x000A0000
|
|
|
User presses CFwdAll and enters FwdAll destination
|
NewCallEvent received for A
|
|
LineGetCallInfo on A
|
|
LINECALLINFO::DEVSPECIFIC would contain CallAttributeBitMask : 0x00000040
|
User again presses `CFwdAll' softkey
|
NewCallEvent received for A
|
|
LineGetCallInfo on A
|
|
LINECALLINFO::DEVSPECIFIC would contain CallAttributeBitMask : 0x00000080
|
Calling Party IP Address
Basic Call
TAPI application monitors party B
Party A represents an IP phone
A calls B
IP Address of A is available to TAPI application that is monitoring party B
Consultation Transfer
TAPI application monitors party C
Party B represents an IP phone
A talks to B
B initiates a consultation transfer call to C
IP Address of B is available to TAPI application that is monitoring party C.
B Completes the transfer
Calling IP address of A is not available to TAPI application that is monitoring party C (not a supported scenario).
Consultation Conference
TAPI application monitors party C
Party B represents an IP phone
A talks to B
B initiates a consultation conference call to C
IP Address of B is available to TAPI application that is monitoring party C.
B Completes the conference
Calling IP address of A and B is not available to TAPI application that is monitoring party C (not a supported scenario)
Redirect
TAPI application monitors party B and party C
Party A represents an IP phone
A calls B
IP Address of A is available to TAPI application that is monitoring party B
Party A redirects B to party C
Calling IP address is not available to TAPI application that is monitoring party B (not a supported scenario)
Calling IP address B is available to TAPI application that is monitoring party C
Calling Party Normalization
Incoming Call from PSTN to End Point
Action
|
CTI Messages
|
TAPI Messages
|
TAPI Structures
|
A Call gets offered from a PSTN number 5551212/<SUBSCRIBER> through a San Jose gateway to a CCM end point 2000
|
CallStateChangedEvent, UnModified Calling Party=5551212, UnModified Called Party=2000, UnModified Original Called Party=2000, Modified Calling Party=5551212, Modified Called Party=2000, Modified Original Called Party=2000, Globalized Calling party = +14085551212, Calling Party Number Type=SUBSCRIBER, Called Party Number Type=UNKNOWN, Original Called Party Number Type,=UNKNOWN State=Connected, Origin=OutBound, Reason = Direct
|
LINE_CALLSTATE = CONNECTED
|
LINECALLINFO
Displayed Calling Party=5551212, Displayed Called Party=2000, Displayed Redirection Party=, Displayed Redirected Party=, Globalized Calling Party = +14085551212, Calling Party Number Type=SUBSCRIBER, Called Party Number Type= UNKNOWN, Redirection Party Number Type=, Redirecting Party Number Type=
|
Incoming Call from National PSTN to CTI-Observed End Point
Action
|
CTI Messages
|
TAPI Messages
|
TAPI Structures
|
A Call gets offered from a Dallas PSTN number 5551212/<NATIONAL> through a San Jose gateway to a CCM end point 2000
|
CallStateChangedEvent, UnModified Calling Party=9725551212, UnModified Called Party=2000, UnModified Original Called Party=2000, Modified Calling Party=9725551212, Modified Called Party=2000, Modified Original Called Party=2000, Globalized Calling party = +19725551212, Calling Party Number Type=NATIONAL, Called Party Number Type=UNKNOWN, Original Called Party Number Type,=UNKNOWN State=Connected, Origin=OutBound, Reason = Direct
|
LINE_CALLSTATE = CONNECTED
|
LINECALLINFO
Displayed Calling Party=9725551212, Displayed Called Party=2000, Displayed Redirection Party=, Displayed Redirected Party=, Globalized Calling Party = +19725551212, Calling Party Number Type=NATIONAL, Called Party Number Type= UNKNOWN, Redirection Party Number Type=, Redirecting Party Number Type=
|
Incoming Call from International PSTN to CTI-Observed End Point
Action
|
CTI Messages
|
TAPI Messages
|
TAPI Structures
|
A Call gets offered from a PSTN number in India 22221111/<INTERNATIONAL> through a San Jose gateway to a CCM end point 2000
|
CallStateChangedEvent, UnModified Calling Party=011914422221111, UnModified Called Party=2000, UnModified Original Called Party=2000, Modified Calling Party=011914422221111, Modified Called Party=2000, Modified Original Called Party=2000, Globalized Calling party = +914422221111, Calling Party Number Type=INTERNATIONAL, Called Party Number Type=UNKNOWN, Original Called Party Number Type,=UNKNOWN State=Connected, Origin=OutBound, Reason = Direct
|
LINE_CALLSTATE = CONNECTED
|
LINECALLINFO
Displayed Calling Party=011914422221111, Displayed Called Party=2000, Displayed Redirection Party=, Displayed Redirected Party=, Globalized Calling Party = +914422221111, Calling Party Number Type=INTERNATIONAL, Called Party Number Type = UNKNOWN, Redirection Party Number Type=, Redirecting Party Number Type=
|
Outgoing Call from CTI-Observed End Point to PSTN Number
Action
|
CTI Messages
|
TAPI Messages
|
TAPI Structures
|
A Call gets initiated from a CCM end point 2000 through a San Jose gateway to a PSTN number 5551212/<NATIONAL>
|
CallStateChangedEvent, UnModified Calling Party=2000, UnModified Called Party=5551212, UnModified Original Called Party=5551212, Modified Calling Party=2000, Modified Called Party=5551212, Modified Original Called Party=5551212, Globalized Calling party = +14085551212, Calling Party Number Type=UNKNOWN, Called Party Number Type=SUBSCRIBER, Original Called Party Number Type,=SUBSCRIBER State=Connected, Origin=OutBound, Reason = Direct
|
LINE_CALLSTATE = CONNECTED
|
LINECALLINFO
Displayed Calling Party=2000, Displayed Called Party=5551212, Displayed Redirection Party=, Displayed Redirected Party=, Globalized Calling Party = +14085551212, Calling Party Number Type=UNKNOWN, Called Party Number Type= SUBSCRIBER, Redirection Party Number Type=, Redirecting Party Number Type=
|
Outgoing Call from CTI-Observed End Point to National PSTN Number
Action
|
CTI Messages
|
TAPI Messages
|
TAPI Structures
|
A Call gets initiated from a CCM end point 2000 through a San Jose gateway to a Dallas PSTN number 9725551212/<NATIONAL>
|
CallStateChangedEvent, UnModified Calling Party=2000, UnModified Called Party=9725551212, UnModified Original Called Party=9725551212, Modified Calling Party=2000, Modified Called Party=9725551212, Modified Original Called Party=9725551212, Globalized Calling party = +19725551212, Calling Party Number Type=UNKNOWN, Called Party Number Type=NATIONAL, Original Called Party Number Type,=NATIONAL State=Connected, Origin=OutBound, Reason = Direct
|
LINE_CALLSTATE = CONNECTED
|
LINECALLINFO
Displayed Calling Party=2000, Displayed Called Party=9725551212, Displayed Redirection Party=, Displayed Redirected Party=, Globalized Calling Party = +19725551212, Calling Party Number Type=UNKNOWN, Called Party Number Type= NATIONAL, Redirection Party Number Type=, Redirecting Party Number Type=
|
Outgoing Call from CTI-Observed End Point to International PSTN Number
Action
|
CTI Messages
|
TAPI Messages
|
TAPI Structures
|
A Call gets initiated from a CCM end point 2000 through a San Jose gateway to a PSTN number in India 914422221111/<INTERNATIONAL>
|
CallStateChangedEvent, UnModified Calling Party=2000, UnModified Called Party=011914422221111, UnModified Original Called Party=011914422221111, Modified Calling Party=2000, Modified Called Party=011914422221111, Modified Original Called Party=011914422221111, Globalized Calling party = +914422221111, Calling Party Number Type=UNKNOWN, Called Party Number Type=INTERNATIONAL, Original Called Party Number Type,=INTERNATIONAL State=Connected, Origin=OutBound, Reason = Direct
|
LINE_CALLSTATE = CONNECTED
|
LINECALLINFO
Displayed Calling Party=2000, Displayed Called Party=011914422221111, Displayed Redirection Party=, Displayed Redirected Party=, Globalized Calling Party = +914422221111, Calling Party Number Type=UNKNOWN, Called Party Number Type = INTERNATIONAL, Redirection Party Number Type=, Redirecting Party Number Type=
|
Call PickUp
Registering CallPickUpGroup for Notification
Configuration
Service parameter "Auto Call Pickup Enabled" is enabled.
Devices/Lines: 1000:P1,1001:P1.1002:P1,4000:P1 and 4001:P1
Pickup group P1:1111 is configured
P1:1000, P1:1001, P1:1002 are all in pickup group P1:1111
Action
|
Expected Events
|
LineIntialize
OpenLines - 1000:P1
|
Line Open Successful
|
LineGetDevCaps with Extension Version - 000A0000
|
CallPickUp Group DN and Partition Information will be sent to application
|
Application sends CciscoLineDevSpecificRegisterCallPickupGroupForNotification with DN and Partition info of PickUpGroup P1:1111
|
Line_Reply with success.
LINE_CREATE event will sent to Application for P1:1111
|
LineOpen for P1:1111
|
LineOpenSuccessful
LineInService Event as well
|
LineInfo
|
DN and Partition information will be pickup Group DN and partition.
LineName - "CtiCallPickupDevice"
LineType - LINEDEVCAPSDEVSPECIFIC_PICKUPDN - 0x00000004
|
UnRegistering CallPickUpGroup for Notification
Action
|
Expected Events
|
LineIntialize
OpenLines - 1000:P1
|
Line Open Successful
|
LineGetDevCaps with Extension Version - 000A0000
|
CallPickUp Group DN and Partition Information will be sent to application
|
Application sends CciscoLineDevSpecificRegisterCallPickupGroupForNotification with DN and Partition info of PickUpGroup P1:1111
|
Line_Reply with success.
LINE_CREATE event will sent to Application for P1:1111
|
LineOpen for P1:1111
|
Line Open Successful
|
Application sends CciscoLineDevSpecificUnRegisterCallPickupGroupForNotification on new line opened for PickUpGroup P1:1111
|
Line_Reply with success.
LINE_REMOVE event will be sent to Application for P1:1111
|
Re-Registering CallPickUpGroup for Notification
Action
|
Expected Events
|
LineIntialize
OpenLines - 1000:P1
|
Line Open Successful
|
LineGetDevCaps with Extension Version - 000A0000
|
CallPickUp Group DN and Partition Information will be sent to application
|
Application sends CciscoLineDevSpecificRegisterCallPickupGroupForNotification with DN and Partition info of PickUpGroup P1:1111
|
Line_Reply with success.
LINE_CREATE event will sent to Application for P1:1111
|
LineOpen for P1:1111
|
Line Open Successful
|
Application sends CciscoLineDevSpecificRegisterCallPickupGroupForNotification with DN and Partition info of PickUpGroup P1:1111
|
Line_Reply with Error "LINEERR_OPERATIONUNAVAIL"
|
Variant : Test the Same with UnRegister
|
|
Registering/UnRegistering CallPickUpGroup for Notification with InValid Information
Action
|
Expected Events
|
LineIntialize
OpenLines - 1000:P1
|
Line Open Successful
|
LineGetDevCaps with Extension Version - 000A0000
|
CallPickUp Group DN and Partition Information will be sent to application
|
Application sends CciscoLineDevSpecificRegisterCallPickupGroupForNotification with InValid DN or Partition
|
Line_Reply with Error Code "LINEERR_OPERATIONFAILED"
|
Variant : Test the Same with UnRegister
|
|
CallPickUp after Enabling Auto Call Pickup Enabled
Action
|
Expected Events
|
LineIntialize
OpenLines - 1000:P1
|
Line Open Successful
|
LineGetDevCaps with Extension Version - 000A0000
|
CallPickUp Group DN and Partition Information will be sent to application
|
Application sends CciscoLineDevSpecificRegisterCallPickupGroupForNotification with DN and Partition info of PickUpGroup P1:1111
|
Line_Reply with success.
LINE_CREATE event will sent to Application for P1:1111
|
LineOpen for P1:1111
|
Line Open Successful
|
P1:4000 calls P1:1002
|
LINE_APPNEWCALL
LINE_CALLSTATE with State = LINECALLSTATE_UNKNOWN to Application on Line P1:1111
|
LineGetCallInfo on new call on P1:1111
|
LINE_CALLINFO
dwCallState : PickupCallState (0x10000000)
dwCallerId : 4000
dwCalledID : 1002
dwCallorigin : Outbound
dwCallReason : Direct
Check for all fields of Calling and Called Information
|
Application sends CciscoLineDevSpecificPickUpCallFromPickupGroup with CallPickup option on P1:1000
|
Events on P1:1000:
LINE_NEWCALL and
LINE_CALLSTATE with state = LINECALLSTATE_CONNECTED
Call Info :
Caller = 4000, Called = 1002, Connected = 4000, dwReason= Direct, dwOrigin = Internal.
Note There is no notification at P1:1111 after the call has been pickup.
|
Varaint : P1:4000 calls P1:1002 and P1:4001 calls P1:1002
Application sends CciscoLineDevSpecificPickUpCallFromPickupGroup with CallPickup option on P1:1000
|
First incoming Call will be picked up
(i.e call from 4000 will be picked up by 1000)
|
CallPickUp with Auto Call Pickup Enabled Disabled
Action
|
Expected Events
|
LineIntialize
OpenLines - 1000:P1
|
Line Open Successful
|
LineGetDevCaps with Extension Version - 000A0000
|
CallPickUp Group DN and Partition Information will be sent to application
|
Application sends CciscoLineDevSpecificRegisterCallPickupGroupForNotification with DN and Partition info of PickUpGroup P1:1111
|
Line_Reply with success.
LINE_CREATE event will sent to Application for P1:1111
|
LineOpen with new DeviceID
|
LineOpen Successful
|
P1:4000 calls P1:1002
|
LINE_APPNEWCALL
LINE_CALLSTATE with State = LINECALLSTATE_UNKNOWN to Application on Line P1:1111
|
LineGetCallInfo
|
LINE_CALLINFO
dwCallState : PickupCallState (0x10000000)
dwCallerId : 4000
dwCalledID : 1002
dwCallorigin: Internal
dwCallReason : Direct
Check for all fields of Calling and Called Information
|
Application sends CciscoLineDevSpecificPickUpCallFromPickupGroup with CallPickup option on P1:1000
|
Events on P1:1000:
Call 1:
LINE_NEWCALL and
LINE_CALLSTATE with state =
LINECALLSTATE_IDLE
Note First call will go IDLE state after Proceeding state.
Call2:
LINE_NEWCALL and
LINE_CALLSTATE with state =
LINECALLSTATE_OFFERING
Once the call is Answered
LINE_CALLSTATE with state = LINECALLSTATE_CONNECTED
Call Info :
Caller = 4000, Called = 1002, Connected = 4000, dwReason= PickUp, dwOrigin = Outbound
Note There is no notification at P1:1111 after the call has been pickup.
|
Varaint : Application sends CciscoLineDevSpecificPickUpCallFromPickupGroup with CallPickup option on P1:1002
|
CallPickup Request will be successful and the newcall will be created and the call will be in Offering state
|
CallPickUp with Multiple Calls Available
Action
|
Expected Events
|
LineIntialize
OpenLines - 1000:P1
|
Line Open Successful
|
LineGetDevCaps with Extension Version - 000A0000
|
CallPickUp Group DN and Partition Information will be sent to application
|
Application sends CciscoLineDevSpecificRegisterCallPickupGroupForNotification with DN and Partition info of PickUpGroup P1:1111
|
Line_Reply with success
LINE_CREATE event will sent to Application for P1:1111
|
LineOpen with new DeviceID
|
LineOpen Successful
|
P1:4000 calls P1:1002
|
Call1:
LINE_APPNEWCALL
LINE_CALLSTATE with State = LINECALLSTATE_UNKNOWN to Application on Line P1:1111
|
P1:4001 calls P1:1001
|
Call 2:
LINE_APPNEWCALL
LINE_CALLSTATE with State = LINECALLSTATE_UNKNOWN to Application on Line P1:1111
|
LineGetCallInfo on Call
LineGetCallInfo on Call2
|
LINE_CALLINFO
dwCallState : PickupCallState (0x10000000)
dwCallerId : 4000
dwCalledID : 1002
dwCallorigin: Internal
dwCallReason : Direct
Check for all fields of Calling and Called Information
LINE_CALLINFO
dwCallState : PickupCallState (0x10000000)
dwCallerId : 4001
dwCalledID : 1001
dwCallorigin: Internal
dwCallReason : Direct
Check for all fields of Calling and Called Information
|
Application sends CciscoLineDevSpecificPickUpCallFromPickupGroup with CallPickup option on P1:1000
|
Events on P1:1000:
Call 3:
LINE_NEWCALL and
LINE_CALLSTATE with state = LINECALLSTATE_CONNECTED
Call Info :
Caller = 4000, Called = 1002, Connected = 4000, dwReason= Direct, dwOrigin = Internal
Note There is no notification at P1:1111 after the call has been pickup.
|
CallPickupGroup Changed for a Device on AdminPage
Pickup group P1:9999 is configured
Action
|
Expected Events
|
LineIntialize
OpenLines - 1000:P1
|
Line Open Successful
|
LineGetDevCaps with Extension Version - 000A0000 on 1000:P1
|
CallPickUp Group DN and Partition Information will be sent to application
|
Application sends CciscoLineDevSpecificRegisterCallPickupGroupForNotification with DN and Partition info of PickUpGroup P1:1111
|
Line_Reply with success.
LINE_CREATE event will sent to Application for P1:1111
|
Now from Admin page change the CallPickupGroup of 1000:P1 line to None or some other group P1:9999
LineGetDevCaps with Extension Version - 000A0000 on 1000:P1
|
Changed CallPickUp Group DN and Partition Information will be sent to application
|
CallPickUpGroup Partition or DN Information Updated
Action
|
Expected Events
|
LineIntialize
OpenLines - 1000:P1
|
Line Open Successful
|
LineGetDevCaps with Extension Version - 000A0000 on 1000:P1
|
CallPickUp Group DN and Partition Information will be sent to application
|
Application sends CciscoLineDevSpecificRegisterCallPickupGroupForNotification with DN and Partition info of PickUpGroup P1:1111
|
Line_Reply with success.
LINE_CREATE event will sent to Application for P1:1111
|
LineOpen with new DeviceID
|
LineOpen Successful
|
P1:4000 calls P1:1002
|
LINE_APPNEWCALL
LINE_CALLSTATE with State = LINECALLSTATE_UNKNOWN to Application on Line P1:1111
|
LineGetCallInfo
|
LINE_CALLINFO
dwCallState : PickupCallState (0x10000000)
dwCallerId : 4000
dwCalledID : 1002
dwCallorigin: Internal
dwCallReason : Direct
Check for all fields of Calling and Called Information
|
Now From Admin Pages change the Partition or DN information of the Pickup Group
|
LINE_REMOVE for the line P1:1111
|
LineGetDevCaps with Extension Version - 000A0000 on 1000:P1
|
Changed CallPickUp Group DN and Partition Information will be sent to application
|
CallPickUpGroup is Deleted
Action
|
Expected Events
|
LineIntialize
OpenLines - 1000:P1
|
Line Open Successful
|
Application sends CciscoLineDevSpecificRegisterCallPickupGroupForNotification with DN and Partition info of PickUpGroup P1:1111
|
Line_Reply with success.
LINE_CREATE event will sent to Application for P1:1111
|
LineOpen with new DeviceID
|
LineOpen Successful
|
Now From Admin Pages Pickup Group 1111:P1 is deleted
|
LINE_REMOVE for the line P1:1111
|
Call Queuing
HP1 is a Huntpilot with the below configuration:
1. "Queue Calls" check box is selected.
2. "Display Line Group Member DN as Connected Party" check box is selected.
HP1: LG1
HP2: LG1
A, B (IP phones/CTI Ports)
Table A-31 Basic Hunt List Call (HP1 has atleast one member free)
Action
|
Expected Events
|
App initiates call from A to HP1 and call is answered by LG1.
|
At A:
LINE_CALLSTATE - RINGBACK
At A:
LINE_CALLSTATE - CONNECTED
CallReason = x1(Direct)
ExtendedCallReason =x1(DirectCall)
Caller = A
Called = HP1,
HuntPilot = HP1
Connected = LG1
HuntPilot = HP1
At LG1:
LINE_CALLSTATE - CONNECTED
CallReason = x1(Direct)
ExtendedCallReason =x1(DirectCall)
Caller = A
Called = HP1,
HuntPilot = HP1
Connected = A
HuntPilot = HP1
|
Table A-32 Basic Hunt List Call. HP1 has all members busy (LG1)
Action
|
Expected Events
|
App initiates call from A to HP1 and call is Queued.
|
At A:
LINE_CALLSTATE - RINGBACK
At A:
LINE_CALLSTATE - CONNECTED
CallReason = x1(Direct)
ExtendedCallReason =x2d(CallQueue)
Caller = A
Called = HP1,
HuntPilot = HP1
Connected =HP1
HuntPilot =
|
Call on LG1 goes idle (LG1 is free). Queued call from A is de-queued and offered on LG1.
LG1 Answers the call.
Variance: Repeat and verify info when
Display Line Group Member DN as Connected Party is enabled
|
At A:
LINE_CALLSTATE - RINGBACK
CallReason = x1(Direct)
ExtendedCallReason =x2e(CallDeQueue)
Caller = A
Called = HP1,
HuntPilot = HP1
At LG1:
LINE_CALLSTATE - ACCEPTED
CallReason = x400(unknown)
ExtendedCallReason =x2e(CallDeQueue)
Caller = A,
Called = HP1
HuntPilot = HP1
At A:
LINE_CALLSTATE - CONNECTED
CallReason = x1(direct)
ExtendedCallReason =x2e(CallDeQueue)
Caller = A
Called = HP1
HuntPilot = HP1
Connected = LG1
HuntPilot = HP1
At LG1:
LINE_CALLSTATE - CONNECTED
CallReason = x400(unknown)
ExtendedCallReason =x2e(CallDeQueue)
Caller = A
Called = HP1
HuntPilot = HP1
Connected = A
Same as above
|
Table A-33 Hunt List Call to HP1 when queue depth is reached. (Maximum Number of Callers Allowed in Queue=2)
Action
|
Expected Events
|
HP1 has 2 queued calls.
App initiates call from A to HP1, call is disconnected
|
At A:
LINE_CALLSTATE - DISCONNECTED
CallReason = x1(Direct)
ExtendedCallReason =x1(DirectCall)
Caller = A
Called = HP1,
HuntPilot = HP1
|
Variance:
Destination When Queue is Full =B
B Answers the call.
|
At A:
LINE_CALLSTATE - RINGBACK
CallReason = x1(Direct)
ExtendedCallReason =x1(DirectCall)
Caller = A
Called = HP1,
HuntPilot = HP1
At B:
LINE_CALLSTATE - ACCEPTED
CallReason = x400(unknown)
ExtendedCallReason =x30(CallDeQueueAgentsBusy)
Caller = A,
Called = HP1
At A:
LINE_CALLSTATE - CONNECTED
CallReason = x1(direct)
ExtendedCallReason =x1(DirectCall)
Caller = A
Called = HP1
HuntPilot = HP1
Connected = B
At B:
LINE_CALLSTATE - CONNECTED
CallReason = x400(unknown)
ExtendedCallReason =x30(CallDeQueueAgentsBusy)
Caller = A
Called = HP1
Connected = A
|
Variance:
Destination When Queue is Full =HP2
Call on LG1 of HP2 goes idle (LG1 is free). Queued call from A is de-queued and offered on LG1.
|
At A:
LINE_CALLSTATE - RINGBACK
CallReason = x1(Direct)
ExtendedCallReason = x1(DirectCall)
Caller = A
Called = HP1,
HuntPilot = HP1
At LG1:
LINE_CALLSTATE - ACCEPTED
CallReason = x400(unknown)
ExtendedCallReason =x30(CallDeQueueAgentsBusy)
Caller = A,
Called = HP1
At A:
LINE_CALLSTATE - CONNECTED
CallReason = x1(direct)
ExtendedCallReason = x1(DirectCall)
Caller = A
Called = HP1
HuntPilot = HP1
Connected = LG1 of HP2
HuntPilot =HP2
At LG1 of HP2:
LINE_CALLSTATE - CONNECTED
CallReason = x400(unknown)
ExtendedCallReason = x30(CallDeQueueAgentsBusy)
Caller = A
Called = HP1
Connected = A
|
Table A-34 Hunt List Call to HP1 and Maximum wait time in Queue is Met
Action
|
Expected Events
|
HuntMember LG1 of HP1 is busy.
App initiates call from A to HP1.
Maximum wait time at queue is reached.
|
At A:
LINE_CALLSTATE - RINGBACK
At A:
LINE_CALLSTATE - CONNECTED
CallReason = x1(Direct)
ExtendedCallReason =x1(DirectCall)
Caller = A
Called = HP1,
HuntPilot = HP1
Connected =HP1
HuntPilot =
At A:
LINE_CALLSTATE - DISCONNECTED
CallReason = x1(Direct)
ExtendedCallReason =x2d(CallQueue)
Caller = A
Called = HP1,
HuntPilot = HP1
|
Variance:
Destination When maximum wait time in Queue expires =B
|
At A:
LINE_CALLSTATE - RINGBACK
CallReason = x1(Direct)
ExtendedCallReason =x2d(CallQueue)
Caller = A
Called = HP1,
HuntPilot = HP1
At B:
LINE_CALLSTATE - ACCEPTED
CallReason = x400(unknown)
ExtendedCallReason =x2f(CallDeQueueTimerExpired)
Caller = A,
Called = HP1
At A:
LINE_CALLSTATE - CONNECTED
CallReason = x1(direct)
ExtendedCallReason =x2d(CallQueue)
Caller = A
Called = HP1
HuntPilot = HP1
Connected = B
At B:
LINE_CALLSTATE - CONNECTED
CallReason = x400(unknown)
ExtendedCallReason =x2f(CallDeQueueTimerExpired)
Caller = A
Called = HP1
Connected = A
|
Variance:
Destination maximum wait time in Queue expires =HP2
|
At A:
LINE_CALLSTATE - RINGBACK
CallReason = x1(Direct)
ExtendedCallReason = x2d(CallQueue)
Caller = A
Called = HP1,
HuntPilot = HP1
At A:
LINE_CALLSTATE - RINGBACK
CallReason = x1(Direct)
ExtendedCallReason = x2d(CallQueue)
Caller = A
Called = HP1,
HuntPilot = HP1
At LG1:
LINE_CALLSTATE - ACCEPTED
CallReason = x400(unknown)
ExtendedCallReason =x2f(CallDeQueueTimerExpired)
Caller = A,
Called = HP1
At A:
LINE_CALLSTATE - CONNECTED
CallReason = x1(direct)
ExtendedCallReason = x2d(CallQueue)
Caller = A Called = HP1
HuntPilot = HP1
Connected = LG1 of HP2
HuntPilot =HP2
At LG1 of HP2:
LINE_CALLSTATE - CONNECTED
CallReason = x400(unknown)
ExtendedCallReason =x2f(CallDeQueueTimerExpired)
Caller = A
Called = HP1
Connected = A
|
Table A-35 Hunt List Call to HP1 and No Agents Logged In or Registered
Action
|
Expected Events
|
App initiates call from A to HP1. (None of the Huntmembers are registered or logged in).
Destination When There Are No Agents Logged In or Registered =' B'
Call offered on B.
B Answers the call.
|
At A:
LINE_CALLSTATE - RINGBACK
CallReason = x1(Direct)
ExtendedCallReason = x1(DirectCall)
Caller = A
Called = HP1,
HuntPilot = HP1
At B:
LINE_CALLSTATE - ACCEPTED
CallReason = x400(unknown)
ExtendedCallReason =x31(CallDeQueueAgentsUnavailable)
Caller = A,
Called = HP1
At A:
LINE_CALLSTATE - CONNECTED
CallReason = x1(Direct)
ExtendedCallReason =x1(DirectCall)
Caller = A
Called = HP1,
HuntPilot = HP1
Connected =B
HuntPilot =
At B:
LINE_CALLSTATE - CONNECTED
CallReason = x400(unknown)
ExtendedCallReason =x31(CallDeQueueAgentsUnavailable)
Caller = A
Called = HP1
Connected = A
|
App initiates call from A to HP1. (None of the Huntmembers are registered or logged in).
Destination When There Are No Agents Logged In or Registered ='HP2'
Call offered on HP2.
HP2 Answers the call.
|
At A:
LINE_CALLSTATE - RINGBACK
CallReason = x1(Direct)
ExtendedCallReason = x1(DirectCall)
Caller = A
Called = HP1,
HuntPilot = HP1
At LG1:
LINE_CALLSTATE - ACCEPTED
CallReason = x400(unknown)
ExtendedCallReason =x31(CallDeQueueAgentsUnavailable)
Caller = A,
Called = HP1
At A:
LINE_CALLSTATE - CONNECTED
CallReason = x1(Direct)
ExtendedCallReason =x1(DirectCall)
Caller = A
Called = HP1,
HuntPilot = HP1
Connected =B
HuntPilot = HP2
At B:
LINE_CALLSTATE - CONNECTED
CallReason = x400(unknown)
ExtendedCallReason =x31(CallDeQueueAgentsUnavailable)
Caller = A
Called = HP1
Connected = A
|
Table A-36 Hunt List Call to HP1 and No Agents Logged In or Registered
Action
|
Expected Events
|
App initiates call from A to HP1. (None of the Huntmembers are registered or logged in).
Call is disconnected.
|
At A:
LINE_CALLSTATE - DISCONNECTED
CallReason = x1(Direct)
ExtendedCallReason =x1(DirectCall)
Caller = A
Called = HP1,
HuntPilot = HP1
|
Table A-37 Basic Hunt List Call. A calls B, and B redirects/forwards/transfers the call to HP1
Action
|
Expected Events
|
App initiates call from A to B
|
At A:
LINE_CALLSTATE - RINGBACK
At A:
LINE_CALLSTATE - CONNECTED
CallReason = x1(Direct)
ExtendedCallReason =x1(DirectCall)
Caller = A
Called = B,
Connected = B
At B:
LINE_CALLSTATE - CONNECTED
CallReason = x1(Direct)
ExtendedCallReason =x1(DirectCall)
Caller = A
Called = B,
Connected = A
|
The call on B is transferred to HP1 (Blind transfer).
|
At B:
LINE_CALLSTATE - IDLE
CallReason = x1(Direct)
ExtendedCallReason =x7(BlindTransferCall)
Caller = A
Called = B,
HuntPilot =
Connected =
HuntPilot =
At LG1:
LINE_CALLSTATE - ACCEPTED
CallReason = x100(LINECALLREASON_TRANSFER)
ExtendedCallReason =x7(BlindTransferCall)
Caller = A
Called = HP1,
HuntPilot = HP1
Connected =
HuntPilot =
At A:
LINE_CALLSTATE - CONNECTED
CallReason = x1(Direct)
ExtendedCallReason =x1(DirectCall)
Caller = A Called = B,
HuntPilot =
Connected = LG1
HuntPilot = HP1
At LG1:
LINE_CALLSTATE - CONNECTED
CallReason = x1(Direct)
ExtendedCallReason =x100(LINECALLREASON_TRANSFER)
Caller = A
Called = HP1,
HuntPilot = HP1
Connected = A
HuntPilot =
|
Variance:
Call on B is redirected to HP1
LG1 Answers the call.
|
At B:
LINE_CALLSTATE - IDLE
CallReason = x1(Direct)
ExtendedCallReason =x6(Redirect)
Caller = A
Called = B,
HuntPilot =
Connected =
HuntPilot =
At LG1:
LINE_CALLSTATE - ACCEPTED
CallReason = x40(LINECALLREASON_REDIRECT)
ExtendedCallReason =x6(Redirect)
Caller = A
Called = B,
HuntPilot =
Connected =
HuntPilot =
At A:
LIN_CALLSTATE - CONNECTED
CallReason = x1(Direct)
ExtendedCallReason =x1(DirectCall)
Caller = A
Called = B,
HuntPilot =
Connected = LG1
HuntPilot = HP1
At LG1:
LINE_CALLSTATE - CONNECTED
CallReason = x40(LINECALLREASON_REDIRECT)
ExtendedCallReason =x6(Redirect)
Caller = A,
Called = B
HuntPilot =
Connected = LG1
HuntPilot =
|
Variance:
Call on B is forwarded to HP1 (Forward All)
LG1 Answers the call.
|
At A:
LINE_CALLSTATE - RING_BACK
CallReason = x1(Direct)
ExtendedCallReason =x1(DirectCall)
Caller = A
Called = B,
HuntPilot =
Connected =
HuntPilot =
At LG1:
LINE_CALLSTATE - ACCEPTED
CallReason = x8(LINECALLREASON_FWDUNCOND)
ExtendedCallReason =x5(ForwardAllCall)
Caller = A
Called = B,
HuntPilot =
Connected =
HuntPilot =
At A:
LIN_CALLSTATE - CONNECTED
CallReason = x1(Direct)
ExtendedCallReason =x1(DirectCall)
Caller = A
Called = B,
HuntPilot =
Connected = LG1
HuntPilot = HP1
At LG1:
LINE_CALLSTATE - CONNECTED
CallReason = x8(LINECALLREASON_FWDUNCOND)
ExtendedCallReason =x5(ForwardAllCall)
Caller = A,
Called = B
Connected = LG1
|
Table A-38 Basic Hunt List Call. HP1 has all members busy (LG1), Queued call on A is redirected
Action
|
Expected Events
|
App initiates call from A to HP1 and call is Queued.
|
At A:
LINE_CALLSTATE - RINGBACK
At A:
LINE_CALLSTATE - CONNECTED
CallReason = x1(Direct)
ExtendedCallReason =x2d(CallQueue)
Caller = A
Called = HP1,
HuntPilot = HP1
Connected =HP1
HuntPilot =
|
Queued Call on A is redirected to B. B Answers.
Call on LG1 goes idle (LG1 is free). Queued call from B is de-queued and offered on LG1.
LG1 Answers the call.
|
At B:
LINE_CALLSTATE - CONNECTED
CallReason = x40(LINECALLREASON_REDIRECT)
ExtendedCallReason =x6(Redirect)
Caller = HP1
Called = B,
HuntPilot =
Connected =HP1
HuntPilot =
At LG1:
LINE_CALLSTATE - ACCEPTED
CallReason = x400(unknown)
ExtendedCallReason =x2e(CallDeQueue)
Caller = B,
Called = HP1
HuntPilot = HP1
At B:
LINE_CALLSTATE - CONNECTED
CallReason = x40(LINECALLREASON_REDIRECT)
ExtendedCallReason =x2e(CallDeQueue)
Caller = B
Called = B
HuntPilot =
Connected = LG1
HuntPilot = HP1
At LG1:
LINE_CALLSTATE - CONNECTED
CallReason = x400(unknown)
ExtendedCallReason =x2e(CallDeQueue)
Caller = B
Called = HP1
HuntPilot = HP1
Connected = B
|
FailOver or FailBack Scenario
Action
|
Expected Events
|
LineIntialize
OpenLines - 1000:P1
|
Line Open Successful
|
LineGetDevCaps with Extension Version - 000A0000 on 1000:P1
|
CallPickUp Group DN and Partition Information will be sent to application
|
Application sends CciscoLineDevSpecificRegisterCallPickupGroupForNotification with DN and Partition info of PickUpGroup P1:1111
|
Line_Reply with success.
LINE_CREATE event will sent to Application for P1:1111
|
LineOpen with new DeviceID
|
LineOpen Successful
|
P1:4000 calls P1:1002
|
LINE_APPNEWCALL
LINE_CALLSTATE with State = LINECALLSTATE_UNKNOWN to Application on Line P1:1111
|
LineGetCallInfo
|
LINE_CALLINFO
dwCallState : PickupCallState (0x10000000)
dwCallerId : 4000
dwCalledID : 1002
dwCallorigin: Internal
dwCallReason : Direct
Check for all fields of Calling and Called Information
|
Stop Primary CTI Manager
|
OutofService for the line P1:1111
INService for the line P1:1111.
Note There will not be any notification for the existing calls.
|
GroupCallPickup
Configuration
Service parameter "Auto Call Pickup Enabled" is enabled.
Pickup group P1:1111 is configured and opened
P1:1000, P1:1001, P1:1002 are all in pickup group P1:1111
P1:2000, P1:2001, P1:2002 are all in pickup group P1:2222
P1:4000 and P1:4001 are configured
Action
|
Expected
|
LineIntialize
OpenLines - 1000:P1
|
Line Open Successful
|
LineGetDevCaps with Extension Version - 000A0000 on P1:2000
|
LineGetDevCaps with Extension Version - 000A0000 on P1:2000CallPickUp Group DN and Partition Information will be sent to application.(P1:2222)
|
Application sends CciscoLineDevSpecificRegisterCallPickupGroupForNotification with DN and Partition info of PickUpGroup P1:1111
|
Line_Reply with success.
LINE_CREATE event will sent to Application for P1:1111
|
LineOpen with new DeviceID
|
LineOpen Successful
|
P1:4000 calls P1:1002
|
LINE_APPNEWCALL
LINE_CALLSTATE with State = LINECALLSTATE_UNKNOWN to Application on Line P1:1111
|
LineGetCallInfo
|
LINE_CALLINFO
dwCallState : PickupCallState (0x10000000)
dwCallerId : 4000
dwCalledID : 1002
dwCallorigin: Internal
dwCallReason : Direct
Check for all fields of Calling and Called Information
|
Application sends CciscoLineDevSpecificPickUpCallFromPickupGroup with GroupCallPickup option and GroupPickUp DN 1111 on P1:2000
|
Application sends CciscoLineDevSpecificPickUpCallFromPickupGroup with GroupCallPickup option and GroupPickUp DN 1111 on P1:2000Events on P1:2000:
LINE_NEWCALL and
LINE_CALLSTATE with state = LINECALLSTATE_CONNECTED
Call Info :
Caller = 4000, Called = 1111, Connected = 4000, dwReason= Direct, dwOrigin = Internal
Note There is no notification at P1:1111 after the call has been pickup.
|
OtherCallPickup
Configuration
Service parameter "Auto Call Pickup Enabled" is enabled.
Pickup groups P1:1111, P1:2222, P1:3333 is configured and opened
P1:1000, P1:1001, P1:1002 are all in pickup group P1:1111
P1:2000, P1:2001, P1:2002 are all in pickup group P1:2222
P1:3000, P1:3001, P1:3002 are all in pickup group P1:3333
P1:1111, and P1:2222 are sub-groups, in order of priority, of pickup group P1:3333.
P1:4000 and P1:4001 are configured.
Action
|
Expected Event
|
LineIntialize
OpenLines - 1000:P1
|
Line Open Successful
|
LineGetDevCaps with Extension Version - 000A0000 on P1:2000
|
CallPickUp Group DN and Partition Information will be sent to application.(P1:2222)
|
Application sends CciscoLineDevSpecificRegisterCallPickupGroupForNotification with DN and Partition info of PickUpGroup P1:1111
|
Line_Reply with success.
LINE_CREATE event will sent to Application for P1:1111
|
LineOpen with new DeviceID
|
LineOpen Successful
|
P1:4000 calls P1:2000
P1:4001 calls P1:1000
|
Call1:
LINE_APPNEWCALL
LINE_CALLSTATE with State = LINECALLSTATE_UNKNOWN to Application on Line P1:1111
Call 2:
LINE_APPNEWCALL
LINE_CALLSTATE with State = LINECALLSTATE_UNKNOWN to Application on Line P1:1111
|
Application sends CciscoLineDevSpecificPickUpCallFromPickupGroup with OtherPickup option on P1:3000
Note Group DN is not required
|
Events on P1:3000:
LINE_NEWCALL and
LINE_CALLSTATE with state = LINECALLSTATE_CONNECTED
Call Info :
Caller = 4001, Called = 1000, Connected = 4001, dwReason= Direct, dwOrigin = Internal
|
DirectCallPickup
Action
|
Expected Event
|
LineIntialize
OpenLines - 1000:P1
|
Line Open Successful
|
LineGetDevCaps with Extension Version - 000A0000 on P1:2000
|
CallPickUp Group DN and Partition Information will be sent to application.(P1:2222)
|
Application sends CciscoLineDevSpecificRegisterCallPickupGroupForNotification with DN and Partition info of PickUpGroup P1:1111
|
Line_Reply with success.
LINE_CREATE event will sent to Application for P1:1111
|
LineOpen with new DeviceID
|
LineOpen Successful
|
P1:4000 calls P1:1002
P1:4001 calls P1:1000
|
Call1:
LINE_APPNEWCALL
LINE_CALLSTATE with State = LINECALLSTATE_UNKNOWN to Application on Line P1:1111
Call 2:
LINE_APPNEWCALL
LINE_CALLSTATE with State = LINECALLSTATE_UNKNOWN to Application on Line P1:1111
|
Application sends CciscoLineDevSpecificPickUpCallFromPickupGroup with DirectCallPickup option with pickup groupDN (1000) on P1:10001
|
Events on P1:1001:
LINE_NEWCALL and
LINE_CALLSTATE with state = LINECALLSTATE_CONNECTED
Call Info :
Caller = 1001, Called = 1000, Connected = 4001, dwReason= Direct, dwOrigin = Internal
|
CallPickup (Negative Use Case)
Configuration
Service parameter Auto Call Pickup Enabled is enabled.
P1:2000 is already opened by the application.
Pickup groups P1:1111, P1:2222, P1:3333 is configured and opened.
P1:1000, P1:1001, P1:1002 are all in pickup group P1:1111
P1:2000, P1:2001, P1:2002 are all in pickup group P1:2222
Action
|
Expected Events
|
LineIntialize
OpenLines - 1000:P1
|
Line Open Successful
|
LineGetDevCaps with Extension Version - 000A0000 on P1:2000
|
CallPickUp Group DN and Partition Information will be sent to application.(P1:2222)
|
Application sends CciscoLineDevSpecificRegisterCallPickupGroupForNotification with DN and Partition info of PickUpGroup P1:1111
|
Line_Reply with success.
LINE_CREATE event will sent to Application for P1:1111
|
LineOpen with new DeviceID
|
LineOpen Successful
|
P1:4000 calls P1:1002
|
Call1:
LINE_APPNEWCALL
LINE_CALLSTATE with State = LINECALLSTATE_UNKNOWN to Application on Line P1:1111
|
Application sends CciscoLineDevSpecificPickUpCallFromPickupGroup with CallPickup option on P1:2000
|
Line_Reply with Error LINEERR_OPERATIONUNAVAIL
|
GroupCallPickup with SuperSet Call PickupDN
Configuration
Service parameter Auto Call Pickup Enabled is enabled.
Pickup groups P1:1111, P1:2222, P1:3333 is configured and opened.
P1:1000, P1:1001, P1:1002 are all in pickup group P1:1111.
P1:2000, P1:2001, P1:2002 are all in pickup group P1:2222.
P1:3000, P1:3001, P1:3002 are all in pickup group P1:3333.
P1:1111, and P1:2222 are sub-groups, in order of priority, of pickup group P1:3333.
P1:4000 and P1:4001 are configured.
Action
|
Expected Events
|
LineIntialize
OpenLines - 1000:P1
|
Line Open Successful
|
LineGetDevCaps with Extension Version - 000A0000 on P1:2000
|
CallPickUp Group DN and Partition Information will be sent to application.(P1:2222)
|
Application sends CciscoLineDevSpecificRegisterCallPickupGroupForNotification with DN and Partition info of PickUpGroup P1:1111
|
Line_Reply with success
LINE_CREATE event will sent to Application for P1:1111
|
LineOpen with new DeviceID
|
LineOpen Successful
|
P1:4000 calls P1:2000
P1:4001 calls P1:1000
|
Call1:
LINE_APPNEWCALL
LINE_CALLSTATE with State = LINECALLSTATE_UNKNOWN to Application on Line P1:1111
Call 2:
LINE_APPNEWCALL
LINE_CALLSTATE with State = LINECALLSTATE_UNKNOWN to Application on Line P1:1111
|
Application sends CciscoLineDevSpecificPickUpCallFromPickupGroup with GroupPickup option with pickup group(3333) on P1:3000
|
Line_Reply with Error LINEERR_CALLUNAVAIL
|
Group or Direct CallPickup with Invalid DN
Action
|
Expected Events
|
LineIntialize
OpenLines - 1000:P1
|
Line Open Successful
|
LineGetDevCaps with Extension Version - 000A0000 on P1:2000
|
CallPickUp Group DN and Partition Information will be sent to application.(P1:2222)
|
Application sends CciscoLineDevSpecificRegisterCallPickupGroupForNotification with DN and Partition info of PickUpGroup P1:1111
|
Line_Reply with success.
LINE_CREATE event will sent to Application for P1:1111
|
LineOpen with new DeviceID
|
LineOpen Successful
|
P1:4000 calls P1:1002
|
Call1:
LINE_APPNEWCALL
LINE_CALLSTATE with State = LINECALLSTATE_UNKNOWN to Application on Line P1:1111
|
Application sends CciscoLineDevSpecificPickUpCallFromPickupGroup with GroupPickup option with pickup group(9999) on P1:3000
Variant - Direct Call Pickup with InValid DN
|
Line_Reply with Error LINEERR_OPERATIONFAILED Line_Reply with Error LINEERR_INVALLINESTATE
|
CIUS Session Persistency
Notify the Line application and expose the changed IP address
Action
|
TAPI Messages
|
TAPI Structures
|
lineInitializeEx
|
lineDevices are Enumerated
|
|
lineOpen for a lineDevice on the wireless device TAPI100
|
lineOpen() returns success
|
|
lineGetDevCaps() with DeviceID = DeviceId of TAPI100
|
lineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
RegisteredIPAddressMode = IPAddress_IPv4_only
RegisteredIPv4Address = "10.77.31.250" (FA1F4D0A - Little endian Hex format)
|
The device TAPI100 moves across WiFi networks resulting in change in the IPv4 address from 10.77.31.250 to 10.77.31.176
Variation 1: The device TAPI100 moves from a IPv4 n/w to a Ipv6 n/w with new ip as 2001:db8::1:0:0:1
Variation 2: The device TAPI100 is docked/undocked and hence changes from WAN/LAN to wireless network
|
EVENT = LINE_DEVSPECIFIC
dwParam1 = SLDSMT_LINE_PROPERTY_CHANGED
dwParam2 = LPCT_DEVICE_IPADDRESS
Variation result:
1) Same as above
2) Same as above
|
|
lineGetDevCaps() with DeviceID = DeviceId of TAPI100
|
lineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
RegisteredIPAddressMode = IPAddress_IPv4_only
RegisteredIPv4Address = "10.77.31.176" (B01F4D0A - Little endian Hex format)
Variation 1:
LINEDEVCAPS::DevSpecific
RegisteredIPAddressMode = IPAddress_IPv6_only
RegisteredIPv6Address = "2001:db8::1:0:0:1"
(Application should use the Offset and size fields of IPv6 address from LINEDEVCAPS to retrieve the value of IPv6 address)
Variation 2:
LINEDEVCAPS::DevSpecific
RegisteredIPAddressMode = IPAddress_IPv4_only
RegisteredIPv4Address = "10.77.31.176"
|
Notify the Phone application and expose the changed IP address
Action
|
TAPI Message
|
TAPI Structures
|
phoneInitializeEx
|
phoneDevices are Enumerated
|
|
phoneOpen for a phoneDevice of wireless device TAPI100
|
phoneOpen() returns success
|
|
phoneGetDevCaps() with DeviceID = DeviceId of TAPI100
|
phoneGetDevCaps() returns success
|
PHONEDEVCAPS::DevSpecific
RegisteredIPAddressMode = IPAddress_IPv4_only
RegisteredIPv4Address = "10.77.31.250" (FA1F4D0A - Little endian Hex format)
|
The device TAPI100 moves across WiFi networks resulting in change in the IPv4 address from 10.77.31.250 to 10.77.31.176
Variation 1: The deivce TAPI100 moves from a IPv4 n/w to a Ipv6 n/w with new ip as 2001:db8::1:0:0:1
Variation 2: The deivce TAPI100 is docked/undocked and hence changes from WAN/LAN to wireless network
|
EVENT = PHONE_DEVSPECIFIC
dwParam1 = CPDSMT_PHONE_PROPERTY_CHANGED_EVENT
dwParam2 = PPCT_DEVICE_IPADDRESS
Variation result:
1) Same as above
2) Same as above
|
|
phoneGetDevCaps() with DeviceID = DeviceId of TAPI100
|
phoneGetDevCaps() returns success
|
PHONEDEVCAPS::DevSpecific
RegisteredIPAddressMode = IPAddress_IPv4_only
RegisteredIPv4Address = "10.77.31.176" (B01F4D0A - Little endian Hex format)
Phone Type = Cisco Cius.
Phone Name = Cisco Phone [SEP123456789000]
Variation 1:
PHONEDEVCAPS::DevSpecific
RegisteredIPAddressMode = IPAddress_IPv6_only
RegisteredIPv6Address = "2001:db8::1:0:0:1"
(Application should use the Offset and size fields of IPv6 address from PHONEDEVCAPS to retrieve the value of IPv6 address)
Variation 2:
PHONEDEVCAPS::DevSpecific
RegisteredIPAddressMode = IPAddress_IPv4_only
RegisteredIPv4Address = "10.77.31.176" (B01F4D0A - Little endian Hex format)
|
Click to Conference
Third-party conference gets created by using click-2-conference feature:
Action
|
Events
|
Use Click-to-Call to create call from A to B, and B answers
|
For A:
CONNECTED
reason = DIRECT
Calling = A, Called = B, Connected = B
For B:
CONNECTED
reason = DIRECT
Calling = A, Called = B, Connected = A
|
Use Click-2-Conference feature to add C into conference, and C answers
|
For A:
CONNECTED
reason = DIRECT
ExtendedCallReason = DIRECT
CONFERENCED
Calling = A, Called = B, Connected = B
CONFERENCED
Calling = A, Called = C, Connected = C
For B:
CONNECTED
reason = DIRECT
ExtendedCallReason = DIRECT
CONFERENCED
Calling = A, Called = B, Connected = A
CONFERENCED
Calling =B, Called = C, Connected = C
For C
CONNECTED
Reason = UNKNOWN
ExtendedCallReason = ClickToConference
CONFERENCED
Calling = C, Called = A, Connected = A
CONFERENCED
Calling = C, Called = B, Connected = B
|
Creating Four-Party Conference by Using Click-2-Conference Feature
Action
|
Events
|
Use Click-to-Call to create call from A to B
|
For A:
CONNECTED
reason = DIRECT
Calling = A, Called = B, Connected = B
For B:
CONNECTED
reason = DIRECT
Calling = A, Called = B, Connected = A
|
Use Click-2-Conference feature to add C into conference
|
For A:
CONNECTED
reason = DIRECT
ExtendedCallReason = DIRECT
CONFERENCED
Calling = A, Called = B, Connected = B
CONFERENCED
Calling = A, Called = C, Connected = C
For B:
CONNECTED
reason = DIRECT
ExtendedCallReason = DIRECT
CONFERENCED
Calling = A, Called = B, Connected = A
CONFERENCED
Calling = C, Called = C, Connected = C
For C
CONNECTED
Reason = DIRECT
ExtendedCallReason = ClickToConference
CONFERENCED
Calling = C, Called = A, Connected = A
CONFERENCED
Calling = C, Called = B, Connected = B
|
Use Click-2-Conference feature to add party D
|
For A:
CONNECTED
reason = DIRECT
ExtendedCallReason = DIRECT
CONFERENCED
Calling = A, Called = B, Connected = B
CONFERENCED
Calling = A, Called = C, Connected = C
CONFERENCED
Calling = A, Called = D, Connected = D
For B:
CONNECTED
reason = DIRECT
ExtendedCallReason = DIRECT
CONFERENCED
Calling = A, Called = B, Connected = A
CONFERENCED
Calling = B, Called = C, Connected = C
CONFERENCED
Calling = B, Called = D, Connected = D
For C
CONNECTED
Reason = UNKNOWN
ExtendedCallReason = ClickToConference
CONFERENCED
Calling = C, Called = A, Connected = A
CONFERENCED
Calling = C, Called = B, Connected = B
CONFERENCED
Calling = C, Called = D, Connected = D
For D
CONNECTED
Reason = UNKNOWN
ExtendedCallReason = ClickToConference
|
| |
CONFERENCED
Calling = D, Called = A, Connected = A
CONFERENCED
Calling = D, Called = B, Connected = B
CONFERENCED
Calling = D, Called = C, Connected = C
|
Drop Party by Using Click-2-Conference
Action
|
Events
|
Conference gets created by using Click-2-Conference feature to add C into conference
|
For A:
CONNECTED
reason = DIRECT
ExtendedCallReason = DIRECT
CONFERENCED
Calling = A, Called = B, Connected = B
CONFERENCED
Calling = A, Called = C, Connected = C
For B:
CONNECTED
reason = DIRECT
ExtendedCallReason = DIRECT
CONFERENCED
Calling = A, Called = B, Connected = A
CONFERENCED
Calling = B, Called = C, Connected = C
For C
CONNECTED
Reason = UNKNOWN
ExtendedCallReason = ClickToConference
CONFERENCED
Calling = C, Called = A, Connected = A
CONFERENCED
Calling = C, Called = B, Connected = B
|
Drop C from Click-2-Conference feature
|
For A
CONNECTED
Reason = DIRECT
ExtendedCallReason = DIRECT
Calling = A, Called = B, Connected = B
For B
CONNECTED
Reason = DIRECT
ExtendedCallReason = DIRECT
Calling = A, Called = B, Connected = A
For C
IDLE
|
Drop Entire Conference by Using Click-2-Conference Feature
Action
|
Events
|
Conference gets created by using Click-2-Conference feature to add C into conference
|
For A:
CONNECTED
reason = DIRECT
ExtendedCallReason = DIRECT
CONFERENCED
Calling = A, Called = B, Connected = B
CONFERENCED
Calling = A, Called = C, Connected = C
For B:
CONNECTED
reason = DIRECT
ExtendedCallReason = DIRECT
CONFERENCED
Calling = A, Called = B, Connected = A
CONFERENCED
Calling = B, Called = C, Connected = C
For C
CONNECTED
Reason = UNKOWN
ExtendedCallReason = ClickToConference
CONFERENCED
Calling = C, Called = A, Connected = A
CONFERENCED
Calling = C, Called = B, Connected = B
|
Drop entire conference
|
For A
IDLE
For B
IDLE
For C
IDLE
|
Conference Enhancements
Noncontroller Adding Parties to Conferences
A,B, and C exist in a conference that A created.
Action
|
Events
|
A,B, and C exist in a conference
|
At A:
Conference - Caller="A", Called="B", Connected="B"
Connected
Conference - Caller="A", Called="C", Connected="C"
At B:
Conference - Caller="A", Called="B", Connected="A"
Connected
Conference - Caller="B", Called="C", Connected="C"
At C:
Conference - Caller="B", Called="C", Connected="B"
Connected
Conference - Caller="C", Called="A", Connected="A"
|
C issues a linePrepareAddToConference to D
|
At A:
Conference - Caller="A", Called="B", Connecgted="B"
Connected
Conference - Caller="A", Called="C", Connecgted="C"
At B:
Conference - Caller="A", Called="B", Connecgted="A"
Connected
Conference - Caller="B", Called="C", Connecgted="C"
At C:
Conference - Caller="B", Called="C", Connecgted="B"
OnHoldPendConf
Conference - Caller="C", Called="A", Connecgted="A"
Connected - Caller="C", Called="D", Connecgted="D"
At D:
Connected - Caller="C", Called="D", Connecgted="C"
|
C issues a lineAddToConference to D
|
At A:
Conference - Caller="A", Called="B", Connecgted="B"
Connected
Conference - Caller="A", Called="C", Connecgted="C"
Conference - Caller="A", Called="D", Connecgted="D"
At B:
Conference - Caller="A", Called="B", Connecgted="A"
Connected
Conference - Caller="B", Called="C", Connecgted="C"
Conference - Caller="B", Called="D", Connecgted="D"
At C:
Conference - Caller="B", Called="C", Connecgted="B"
Connected
Conference - Caller="C", Called="A", Connecgted="A"
Conference - Caller="C", Called="D", Connecgted="D"
At D:
Conference - Caller="C", Called="D", Connecgted="C"
Connected
Conference - Caller="D", Called="A", Connecgted="A"
Conference - Caller="D", Called="B", Connecgted="B"
|
Chaining Two Ad Hoc Conferences by Using Join
Table 1:
Actions
|
TSP CallInfo
|
A calls B, B answers, then B initiates conference to C, C answers, and B completes the conference
|
At A:
GCID-1
CONNECTED : Caller = Unknown
Caller = Unknown
CONFERENCED : Caller = A
Called = B
CONFERENCED : Caller = A
Called = C
At B:
GCID-1
CONNECTED : Caller = Unknown
Caller = Unknown
CONFERENCED : Caller = A
Called = B
CONFERENCED : Caller = B
Called = C
At C:
GCID-1
CONNECTED : Caller = Unknown
Caller = Unknown
CONFERENCED : Caller = B
Called = C
CONFERENCED : Caller = C
Called = A
|
C initiates or completes conference to D and E
|
No Change for A and B
At C:
- First conference
GCID-1
ONHOLD : Caller = Unknown
Caller = Unknown
CONFERENCED : Caller = A
Called = B
CONFERENCED : Caller = A
Called = C
- Second conference
GCID-2
CONNECTED : Caller = Unknown
Caller = Unknown
CONFERENCED : Caller = C
Called = D
CONFERENCED : Caller = C
Called = E
At D:
GCID-2
CONNECTED : Caller = Unknown
Caller = Unknown
CONFERENCED : Caller = C
Called = D
CONFERENCED : Caller = D
Called = E
At E:
GCID-2 CONNECTED : Caller = Unknown
Caller = Unknown
CONFERENCED : Caller = C
Called = E
CONFERENCED : Caller = E
Called = D
|
C initiates JOIN request to join to conference call together, with GCID as the primary call
|
At A:
GCID-1 CONNECTED : Caller = Unknown
Caller = Unknown
CONFERENCED : Caller = A
Called = B
CONFERENCED : Caller = A
Called = C
CONFERENCED : Caller = A
Called = Conference-2
At B :
GCID-1
CONNECTED : Caller = Unknown
Caller = Unknown
CONFERENCED : Caller = A
Called = B
CONFERENCED : Caller = B
Called = C
CONFERENCED : Caller = B
Called = Conference-2
At C:
- First conference
GCID-1
CONNECTED : Caller = Unknown
Caller = Unknown
CONFERENCED : Caller = B
Called = C
CONFERENCED : Caller = C
Called = A
CONFERENCED : Caller = C
Called = Conference-2
|
| |
At D:
GCID-2
CONNECTED : Caller = Unknown
Caller = Unknown
CONFERENCED : Caller = D
Called = E
CONFERENCED : Caller = D
Called = Conference-1
At E :
GCID-2
CONNECTED : Caller = Unknown
Caller = Unknown
CONFERENCED : Caller = E
Called = D
CONFERENCED : Caller = E
Called = Conference-1
|
CIT Remote Device
Expose Remote Destination Info for CTI Remote Device in ProviderDeviceLineInfoEvent
PreCondition: User has a CTI remote device "CTIRD1" under it control list. CTIRD1 device has 3 remote destinations configured.
Action
|
CTI Messages/Events
|
Application opens the provider.
|
CTI acquires the devices which are under control list of the user
|
Application sends GetSignleDeviceAndLineInfoRequest to CTI to fetch info for CTIRD1 device.
|
CTI sends ProviderDeviceLineInfoEvent to application and exposes 3 RDs configured on the device as part of "Remote Destination Info" structure.
|
Expose Remote Destination Info for CTI Remote Device in ProviderDeviceRegisteredWithLineInfoNotify
PreCondition: User has a CTI remote device "CTIRD1" under it control list. CTIRD1 device has 3 remote destinations configured.
Action
|
CTI Messages/Events
|
Application opens the provider.
|
CTI acquires the devices which are under control list of the user
|
Application sends GetSignleDeviceAndLineInfoRequest to application to fetch info for CTIRD1 device.
|
CTI sends ProviderDeviceLineInfoEvent to application and exposes 3 RDs configured on the device as part of "Remote Destination Info" structure.
|
Application resets the device CTIRD1 from the admin page.
|
CTI sends ProviderDeviceRegisteredWithLineInfoNotify to application and exposes 3 RDs configured on the device as part of "Remote Destination Info" structure.
|
Expose new Device Type for CTI Remote Device
Precondition:
CTIRD (CTI Remote Device - Name: CTIRDdrajesh)
Remote Destinations configured/will be configured on CTI Remote Device:
RD1-CTIRD - (Name: Mobile, Number: 914086271309)
RD2-CTIRD - (Name: Office, Number: 914089022131)
Line-A (DN - 1000) - Line-A configured on CTI Remote Device (shared line of Enterprise DN - 1000 configured on Device EP)
EP (Enter Prise Phone - SCCP - IP Phone)
Line-A' - DN - 1000 configured on Device EP
CSF (CSF Device - Name: CSFdrajesh)
Line-A'' - DN - 1000 configured on Device CSF
Remote Destination configured on CSF device:
RD1-CSF - (Name: CSF-Mobile, Number: 914086271310)
RD2-CSF - (Name: CSF-Office, Number: 914089022132)
Action
|
TAPI Messages
|
TAPI Structures
|
PhoneInitializeEx
|
Devices are Enumerated
|
|
PhoneGetDevCaps() with DeviceID = DeviceId of CTIRD.
|
PhoneGetDevCaps() returns success
|
PHONECAPS::PhoneInfo = "CTI Remote Device"
PHONECAPS:: PhoneName = "Cisco Phone: [CTIRDdrajesh]"
|
PhoneGetDevCaps() with DeviceID = DeviceId of CSF.
|
PhoneGetDevCaps() returns success
|
PHONECAPS::PhoneInfo = "Cisco Unified Client Services Framework"
PHONECAPS:: PhoneName = "Cisco Phone: [CSF-drajesh]"
|
Enumerating CTI Remote Devices and exposing Remote Destination Information to Application
Precondition: same as above usecase; RD1-CTIRD and RD1-CSF are configured on respective devices
Action
|
TAPI Messages
|
TAPI Structures
|
LineInitializeEx
|
Lines are Enumerated
|
|
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A on CTIRD.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
dwLineTypes = LINEDEVCAPSDEVSPECIFIC_REMOTEDEVICE (0x00000008)
DeviceProtocolType =
DeviceProtocolType_CTI_REMOTE_DEVICE(0x03)
Remote Destination Info:
unicodeRDName = "Mobile"
RDNumber = "91486271309"
isActiveRD = 0x00000000
IsMyAppLastToSetActiveRD = 0x00000000
|
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A'' on CSF.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
dwLineTypes = (0x00000000)
DeviceProtocolType =
DeviceProtocolType_SIP (0x02)
Remote Destination Info:
unicodeRDName = "CSF-Mobile"
RDNumber = "91486271310"
isActiveRD = 0x00000000
IsMyAppLastToSetActiveRD = 0x00000000
|
Add Remote Destination from Admin and Expose Multiple Remote Destination Information to Application
Precondition: In addition to above usecase
Action
|
TAPI Messages
|
TAPI Structures
|
LineInitializeEx
|
Lines are Enumerated
|
|
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A on CTIRD.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
dwLineTypes = LINEDEVCAPSDEVSPECIFIC_REMOTEDEVICE (0x00000008)
DeviceProtocolType =
DeviceProtocolType_CTI_REMOTE_DEVICE(0x03)
Remote Destination Info:
unicodeRDName = "Mobile"
RDNumber = "91486271309"
isActiveRD = 0x00000000
IsMyAppLastToSetActiveRD = 0x00000000
|
LineOpen() with ExtVer- 0x000C0000 dwDeviceID = LineDeviceID of Line-A on CTIRD
|
LineOpen() returns Success
Line INSERVICE EVENT
Event = LINE_LINEDEVSTATE
dwParam1 = LINEDEVSTATE_INSERVICE
|
|
Add other Remote Destination RD2-CTIRD on CTI Remote Device from Admin Pages
RD2-CTIRD Info - (Name: Office, Number: 4089022131)
|
EVENT = LINE_DEVSPECIFIC
dwParam1 = SLDSMT_LINE_PROPERTY_CHANGED
dwParam2 = LPCT_REMOTE_DESTINATION_INFO (0x00004000)
|
|
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A on CTIRD.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
dwLineTypes = LINEDEVCAPSDEVSPECIFIC_REMOTEDEVICE (0x00000008)
DeviceProtocolType =
DeviceProtocolType_CTI_REMOTE_DEVICE(0x03)
Remote Destination Info:
unicodeRDName = "Mobile"
RDNumber = "91486271309"
isActiveRD = 0x00000000
unicodeRDName = "Office"
RDNumber = "4089022131"
isActiveRD = 0x00000000
IsMyAppLastToSetActiveRD = 0x00000000
|
Variation :
Test the same on CSF device [CSF - Line-A'']
|
|
Same as for CTI Remote Device other than dwLineTypes and DeviceProtocolType Info.
dwLineTypes = (0x00000000)
DeviceProtocolType =
DeviceProtocolType_SIP (0x02)
Remote Destination Info:
unicodeRDName = "CSF-Mobile"
RDNumber = "91486271310"
isActiveRD = 0x00000000
unicodeRDName = "CSF-Office"
RDNumber = "4089022132"
isActiveRD = 0x00000000
IsMyAppLastToSetActiveRD = 0x00000000
|
Update RD Info(RDName/Number/Both) from Admin - RD Info Change Notification to Application
Precondition: continuation from previous UseCase
Action
|
TAPI Messages
|
TAPI Structures
|
LineInitializeEx
|
Lines are Enumerated
|
|
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A on CTIRD.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
LINEDEVCAPS::DevSpecific
dwLineTypes = LINEDEVCAPSDEVSPECIFIC_REMOTEDEVICE (0x00000008)
DeviceProtocolType =
DeviceProtocolType_CTI_REMOTE_DEVICE(0x03)
Remote Destination Info:
unicodeRDName = "Mobile"
RDNumber = "91486271309"
isActiveRD = 0x00000000
unicodeRDName = "Office"
RDNumber = "4089022131"
isActiveRD = 0x00000000
IsMyAppLastToSetActiveRD = 0x00000000
|
LineOpen() with ExtVer- 0x000C0000 dwDeviceID = LineDeviceID of Line-A on CTIRD
|
LineOpen() returns Success
Line INSERVICE EVENT
Event = LINE_LINEDEVSTATE
dwParam1 = LINEDEVSTATE_INSERVICE
|
|
Update Remote Destination RD2-CTIRD Name on CTI Remote Device "CTIRD" from Admin Pages
RD2-CTIRD Info - (Name: Home, Number: 4089022132)
|
EVENT = LINE_DEVSPECIFIC
dwParam1 = SLDSMT_LINE_PROPERTY_CHANGED
dwParam2 = LPCT_REMOTE_DESTINATION_INFO (0x00004000)
|
|
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A on CTIRD.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
Remote Destination Info:
unicodeRDName = "Mobile"
RDNumber = "91486271309"
isActiveRD = 0x00000000
unicodeRDName = "Home"
RDNumber = "4089022132"
isActiveRD = 0x00000000
IsMyAppLastToSetActiveRD = 0x00000000
|
Update Remote Destination RD2-CTIRD Number on CTI Remote Device CTIRD from Admin Pages
RD2Info - (Name: Home, Number: 4089021234)
|
EVENT = LINE_DEVSPECIFIC
dwParam1 = SLDSMT_LINE_PROPERTY_CHANGED
dwParam2 = LPCT_REMOTE_DESTINATION_INFO (0x00004000)
|
|
LineGetDevCaps() with dwDeviceID =
|
LineGetDevCaps() returns
|
LINEDEVCAPS::DevSpecific
|
LineDeviceId of Line-A on CTIRD.
|
success
|
Remote Destination Info:
unicodeRDName = "Mobile"
RDNumber = "91486271309"
isActiveRD = 0x00000000
unicodeRDName = "Home"
RDNumber = "4089021234"
isActiveRD = 0x00000000
IsMyAppLastToSetActiveRD = 0x00000000
|
Update Remote Destination RD2-CTIRD Name and Number on CTI Remote Device CTIRD from Admin Pages
RD2Info - (Name: Office, Number: 4089022131)
|
EVENT = LINE_DEVSPECIFIC
dwParam1 = SLDSMT_LINE_PROPERTY_CHANGED
dwParam2 = LPCT_REMOTE_DESTINATION_INFO (0x00004000)
EVENT = LINE_DEVSPECIFIC
dwParam1 = SLDSMT_LINE_PROPERTY_CHANGED
dwParam2 = LPCT_REMOTE_DESTINATION_INFO (0x00004000)
|
|
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A on CTIRD.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
Remote Destination Info:
unicodeRDName = "Mobile"
RDNumber = "91486271309"
isActiveRD = 0x00000000
unicodeRDName = "Office"
RDNumber = "4089022131"
isActiveRD = 0x00000000
IsMyAppLastToSetActiveRD = 0x00000000
|
Variation :
Test the same on CSF device [CSF - Line-A'']
|
|
Same as for CTI Remote Device other than dwLineTypes and DeviceProtocolType Info with respective RD Info.
dwLineTypes = (0x00000000)
DeviceProtocolType =
DeviceProtocolType_SIP (0x02)
|
Remove RD from Admin - RD Info Change Notification to Application
Precondition: continuation from previous UseCase
Action
|
TAPI Messages
|
TAPI Structures
|
LineInitializeEx
|
Lines are Enumerated
|
|
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A on CTIRD.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
dwLineTypes = LINEDEVCAPSDEVSPECIFIC_REMOTEDEVICE (0x00000008)
DeviceProtocolType =
DeviceProtocolType_CTI_REMOTE_DEVICE(0x03)
Remote Destination Info:
unicodeRDName = "Mobile"
RDNumber = "91486271309"
isActiveRD = 0x00000000
unicodeRDName = "Office"
RDNumber = "4089022131"
isActiveRD = 0x00000000
IsMyAppLastToSetActiveRD = 0x00000000
|
LineOpen() with ExtVer- 0x000C0000 dwDeviceID = LineDeviceID of Line-A
|
LineOpen() returns Success
Line INSERVICE EVENT
Event = LINE_LINEDEVSTATE
dwParam1 = LINEDEVSTATE_INSERVICE
|
|
Remove Remote Destination RD2-CTIRD on CTI Remote Device CTIRD from Admin Pages
RD2Info - (Name: Office, Number: 4089022131)
|
EVENT = LINE_DEVSPECIFIC
dwParam1 = SLDSMT_LINE_PROPERTY_CHANGED
dwParam2 = LPCT_REMOTE_DESTINATION_INFO (0x00004000)
|
|
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
Remote Destination Info:
unicodeRDName = "Mobile"
RDNumber = "91486271309"
isActiveRD = 0x00000000
IsMyAppLastToSetActiveRD = 0x00000000
|
Variation :
Test the same on CSF device [CSF - Line-A'']
|
|
Same as for CTI Remote Device other than dwLineTypes and DeviceProtocolType Info.
dwLineTypes = (0x00000000)
DeviceProtocolType =
DeviceProtocolType_SIP (0x02)
|
Remote Destination Information on CTI RemoteDevice/CSF device which doesnt have Remote Destination's configured
Precondition: In addition to above usecase
CTIRD2 (CTI Remote Device - doesn't have any RemoteDestination's configured)
Action
|
TAPI Messages
|
TAPI Structures
|
LineInitializeEx
|
Lines are Enumerated
|
|
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-C on CTIRD2.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
dwLineTypes = LINEDEVCAPSDEVSPECIFIC_REMOTEDEVICE (0x00000008)
DeviceProtocolType =
DeviceProtocolType_CTI_REMOTE_DEVICE(0x03)
Remote Destination Info is empty
RemoteDestinationOffset = 0
RemoteDestinationSize = 0
RemoteDestinationCount = 0
RemoteDestinationElementFixedSize = 0
IsMyAppLastToSetActiveRD = 0x00000000
|
Remote Destination Information on non CTI RemoteDevice / CSF device
Precondition: In addition to above usecase
Action
|
TAPI Messages
|
TAPI Structures
|
LineInitializeEx
|
Lines are Enumerated
|
|
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A' on EP.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
DeviceProtocolType =
DeviceProtocolType_SCCP (0x01)
Remote Destination Info is empty
RemoteDestinationOffset = 0
RemoteDestinationSize = 0
RemoteDestinationCount = 0
RemoteDestinationElementFixedSize = 0
IsMyAppLastToSetActiveRD = 0x00000000
|
Add RD from Application - RD Info Change Notification to Application
Precondition: Remove All RD's from Admin Page
Action
|
TAPI Messages
|
TAPI Structures
|
LineInitializeEx
|
Lines are Enumerated
|
|
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A on CTIRD.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
dwLineTypes = LINEDEVCAPSDEVSPECIFIC_REMOTEDEVICE (0x00000008)
DeviceProtocolType =
DeviceProtocolType_CTI_REMOTE_DEVICE(0x03)
Remote Destination Info:
RemoteDestinationOffset = 0
RemoteDestinationSize = 0
RemoteDestinationCount = 0
RemoteDestinationElementFixedSize = 0
IsMyAppLastToSetActiveRD = 0x00000000
|
LineOpen() with ExtVer- 0x000C0000 dwDeviceID = LineDeviceID of Line-A
Add Remote Destination RD2-CTIRD to CTI Remote Device CTIRD:
CciscoLineDevSpecificAddRemoteDestination Req
m_RDNumber = "4089022131"
m_UnicodeRDName = "Office"
m_activeRD = 0x00000000
|
LineOpen() returns Success
Line INSERVICE EVENT
Event = LINE_LINEDEVSTATE
dwParam1 = LINEDEVSTATE_INSERVICE
LINE_REPLY with success
EVENT = LINE_DEVSPECIFIC
dwParam1 = SLDSMT_LINE_PROPERTY_CHANGED
dwParam2 = LPCT_REMOTE_DESTINATION_INFO (0x00004000)
|
|
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
Remote Destination Info:
unicodeRDName = "Office"
RDNumber = "4089022131"
isActiveRD = 0x00000000
IsMyAppLastToSetActiveRD = 0x00000000
|
Variation :
Test the same on CSF device [CSF - Line-A'']
|
|
Same as for CTI Remote Device other than dwLineTypes and DeviceProtocolType Info.
dwLineTypes = (0x00000000)
DeviceProtocolType =
DeviceProtocolType_SIP (0x02)
|
Update RD Info(RDNumber/RDName/Both) from Application - RD Info Change Notification to Application
Precondition: continuation from previous UseCase
Action
|
TAPI Messages
|
TAPI Structures
|
LineInitializeEx
|
Lines are Enumerated
|
|
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
dwLineTypes = LINEDEVCAPSDEVSPECIFIC_REMOTEDEVICE (0x00000008)
DeviceProtocolType =
DeviceProtocolType_CTI_REMOTE_DEVICE(0x03)
Remote Destination Info:
unicodeRDName = "Office"
RDNumber = "4089022131"
isActiveRD = 0x00000000
IsMyAppLastToSetActiveRD = 0x00000000
|
LineOpen() with ExtVer- 0x000C0000 dwDeviceID = LineDeviceID of Line-A
|
LineOpen() returns Success
Line INSERVICE EVENT
Event = LINE_LINEDEVSTATE
dwParam1 = LINEDEVSTATE_INSERVICE
|
|
Update Remote Destination name of RD2-CTIRD on CTI Remote Device "CTIRD":
CciscoLineDevSpecificUpdateRemoteDestination Req
m_RDNumber = "4089022131"
m_UnicodeRDName = "Office-Change"
m_NewRDNumber = "4089022131"
m_activeRD = 0x00000000
|
LINE_REPLY with success
EVENT = LINE_DEVSPECIFIC
dwParam1 = SLDSMT_LINE_PROPERTY_CHANGED
dwParam2 = LPCT_REMOTE_DESTINATION_INFO (0x00004000)
|
|
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
Remote Destination Info:
unicodeRDName = "Office-Change"
RDNumber = "4089022131"
isActiveRD = 0x00000000
IsMyAppLastToSetActiveRD = 0x00000000
|
Update Remote Destination Number of RD2-CTIRD on CTI Remote Device "CTIRD":
CciscoLineDevSpecificUpdateRemoteDestination Req
m_RDNumber = "4089022131"
m_UnicodeRDName = "Office-Change"
m_NewRDNumber = "4089020000"
m_activeRD = 0x00000000
|
LINE_REPLY with success
EVENT = LINE_DEVSPECIFIC
dwParam1 = SLDSMT_LINE_PROPERTY_CHANGED
dwParam2 = LPCT_REMOTE_DESTINATION_INFO (0x00004000)
|
|
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
Remote Destination Info:
unicodeRDName = "Office-Change"
RDNumber = "4089020000"
isActiveRD = 0x00000000
IsMyAppLastToSetActiveRD = 0x00000000
|
Update Remote Destination Name and Number of RD2-CTIRD on CTI Remote Device "CTIRD":
CciscoLineDevSpecificUpdateRemoteDestination Req
m_RDNumber = "408902000"
m_UnicodeRDName = "Office"
m_NewRDNumber = "4089022131"
m_activeRD = 0x00000000
|
LINE_REPLY with success
EVENT = LINE_DEVSPECIFIC
dwParam1 = SLDSMT_LINE_PROPERTY_CHANGED
dwParam2 = LPCT_REMOTE_DESTINATION_INFO (0x00004000)
EVENT = LINE_DEVSPECIFIC
dwParam1 = SLDSMT_LINE_PROPERTY_CHANGED
dwParam2 = LPCT_REMOTE_DESTINATION_INFO (0x00004000)
|
|
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
Remote Destination Info:
unicodeRDName = "Office"
RDNumber = "4089022131"
isActiveRD = 0x00000000
IsMyAppLastToSetActiveRD = 0x00000000
|
Variation :
Test the same on CSF device [CSF - Line-A'']
|
|
Same as for CTI Remote Device other than dwLineTypes and DeviceProtocolType Info.
dwLineTypes = (0x00000000)
DeviceProtocolType =
DeviceProtocolType_SIP (0x02)
|
Update RD Info(SetActive RD) from Application - RD Info Change Notification to Application
Precondition: continuation from previous UseCase
Action
|
TAPI Messages
|
TAPI Structures
|
LineInitializeEx
|
Lines are Enumerated
|
|
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A on CTIRD.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
dwLineTypes = LINEDEVCAPSDEVSPECIFIC_REMOTEDEVICE (0x00000008)
DeviceProtocolType =
DeviceProtocolType_CTI_REMOTE_DEVICE(0x03)
Remote Destination Info:
unicodeRDName = "Office"
RDNumber = "4089022131"
isActiveRD = 0x00000000
IsMyAppLastToSetActiveRD = 0x00000000
|
LineOpen() with ExtVer- 0x000C0000 dwDeviceID = LineDeviceID of Line-A
|
LineOpen() returns Success
Line INSERVICE EVENT
Event = LINE_LINEDEVSTATE
dwParam1 = LINEDEVSTATE_INSERVICE
|
|
Set RD2-CTIRD as ActiveRD:
CciscoLineDevSpecificUpdateRemoteDestination Req
m_RDNumber = "4089022131"
m_UnicodeRDName = "Office"
m_RDNumber = "4089022131"
m_activeRD = 0x00000001
|
EVENT = LINE_DEVSPECIFIC
dwParam1 = SLDSMT_LINE_PROPERTY_CHANGED
dwParam2 = LPCT_REMOTE_DESTINATION_INFO (0x00004000)
|
|
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
Remote Destination Info:
unicodeRDName = "Office"
RDNumber = "4089022131"
isActiveRD = 0x00000001
IsMyAppLastToSetActiveRD = 0x00000001
|
LineShutdown()
|
LineShutdown success
|
|
Active RD will be RESET to False when the Application which has set RD as ACTIVE is shutdown or closed
|
LineInitializeEx
|
Lines are Enumerated
|
|
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A on CTIRD.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
Remote Destination Info:
unicodeRDName = "Office"
RDNumber = "4089022131"
isActiveRD = 0x00000000
IsMyAppLastToSetActiveRD = 0x00000000
|
Variation :
Test the same on CSF device [CSF - Line-A'']
|
|
Same as for CTI Remote Device other than dwLineTypes and DeviceProtocolType Info.
dwLineTypes = (0x00000000)
DeviceProtocolType =
DeviceProtocolType_SIP (0x02)
|
Add other RD (RD2-CTIRD with IsActive Set) from Application - RD Info Change Notification to Application
Precondition: continuation from previous UseCase
Action
|
TAPI Messages
|
TAPI Structures
|
LineInitializeEx
|
Lines are Enumerated
|
|
LineOpen() with ExtVer- 0x000C0000 dwDeviceID = LineDeviceID of Line-A on CTIRD
|
LineOpen() returns Success
|
|
Set RD2-CTIRD - "Office" as ACTIVE
|
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
Remote Destination Info:
unicodeRDName = "Office"
RDNumber = "4089022131"
isActiveRD = 0x00000001
IsMyAppLastToSetActiveRD = 0x00000001
|
Add Remote Destination RD1-CTIRD on CTI Remote Device CTIRD with "IsActive" set to true
CciscoLineDevSpecificAddRemoteDestination Req
m_RDNumber = "914086271309"
m_UnicodeRDName = "Mobile"
m_activeRD = 0x00000001
|
EVENT = LINE_DEVSPECIFIC
dwParam1 = SLDSMT_LINE_PROPERTY_CHANGED
dwParam2 = LPCT_REMOTE_DESTINATION_INFO (0x00004000)
|
|
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A on CTIRD.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
Remote Destination Info:
unicodeRDName = "Mobile"
RDNumber = "91486271309"
isActiveRD = 0x00000001
unicodeRDName = "Office"
RDNumber = "4089022131"
isActiveRD = 0x00000000
IsMyAppLastToSetActiveRD = 0x00000001
|
Variation :
Add RD1-CTIRD with IsActive RD = False
|
EVENT = LINE_DEVSPECIFIC
dwParam1 = SLDSMT_LINE_PROPERTY_CHANGED
dwParam2 = LPCT_REMOTE_DESTINATION_INFO (0x00004000)
|
|
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
Remote Destination Info:
unicodeRDName = "Mobile"
RDNumber = "91486271309"
isActiveRD = 0x00000000
unicodeRDName = "Office"
RDNumber = "4089022131"
isActiveRD = 0x00000001
IsMyAppLastToSetActiveRD = 0x00000001
|
Variation :
Test the same on CSF device [CSF - Line-A'']
|
|
Same as for CTI Remote Device other than dwLineTypes and DeviceProtocolType Info.
dwLineTypes = (0x00000000)
DeviceProtocolType =
DeviceProtocolType_SIP (0x02)
|
Update RD (RD1-CTIRD - Name, Number and set IsActive) from Application - RD Info Change Notification to Application
Precondition: continuation from previous UseCase Variation (RD2 is added with IsActive = false)
Action
|
TAPI Messages
|
TAPI Structures
|
LineInitializeEx
|
Lines are Enumerated
|
|
LineOpen() with ExtVer- 0x000C0000 dwDeviceID = LineDeviceID of Line-A
|
LineOpen() returns Success
Line INSERVICE EVENT
Event = LINE_LINEDEVSTATE
dwParam1 = LINEDEVSTATE_INSERVICE
|
|
Set RD2-CTIRD-"Office" as ACTIVE
|
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A on CTIRD.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
Remote Destination Info:
unicodeRDName = "Mobile"
RDNumber = "91486271309"
isActiveRD = 0x00000000
unicodeRDName = "Office"
RDNumber = "4089022131"
isActiveRD = 0x00000001
IsMyAppLastToSetActiveRD = 0x00000001
|
Update Remote Destination RD1-CTIRD on CTI Remote Device "CTIRD" with IsActive set to true
CciscoLineDevSpecificUpdateRemoteDestination Req
m_RDNumber = "914086271309"
m_UnicodeRDName = "Mobile-t"
m_NewRDNumber = "91408627130900"
m_activeRD = 0x00000001
|
*** 2 Change Nofitications
EVENT = LINE_DEVSPECIFIC
dwParam1 = SLDSMT_LINE_PROPERTY_CHANGED
dwParam2 = LPCT_REMOTE_DESTINATION_INFO (0x00004000)
EVENT = LINE_DEVSPECIFIC
dwParam1 = SLDSMT_LINE_PROPERTY_CHANGED
dwParam2 = LPCT_REMOTE_DESTINATION_INFO (0x00004000)
|
|
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
Remote Destination Info:
unicodeRDName = "Mobile-t"
RDNumber = "9148627130900"
isActiveRD = 0x00000001
unicodeRDName = "Office"
RDNumber = "4089022131"
isActiveRD = 0x00000000
IsMyAppLastToSetActiveRD = 0x00000001
|
Variation :
Test the same on CSF device [CSF - Line-A'']
|
|
Same as for CTI Remote Device other than dwLineTypes and DeviceProtocolType Info.
dwLineTypes = (0x00000000)
DeviceProtocolType =
DeviceProtocolType_SIP (0x02)
|
Remove RD (RD1-CTIRD which is Active RD) from Application - RD Info Change Notification to Application
Precondition: continuation from previous UseCase
Action
|
TAPI Messages
|
TAPI Structures
|
LineInitializeEx
|
Lines are Enumerated
|
|
LineOpen() with ExtVer- 0x000C0000 dwDeviceID = LineDeviceID of Line-A
|
LineOpen() returns Success
Line INSERVICE EVENT
Event = LINE_LINEDEVSTATE
dwParam1 = LINEDEVSTATE_INSERVICE
|
|
Set RD1-CTIRD-"Mobile-t" as ACTIVE
|
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
Remote Destination Info:
unicodeRDName = "Mobile-t"
RDNumber = "91486271309"
isActiveRD = 0x00000001
unicodeRDName = "Office"
RDNumber = "4089022131"
isActiveRD = 0x00000000
IsMyAppLastToSetActiveRD = 0x00000001
|
Remove Remote Destination RD1-CTIRD on CTI Remote Device "CTIRD"
CciscoLineDevSpecificRemoveRemoteDestination Req
m_RDNumber = "9148627130900"
|
EVENT = LINE_DEVSPECIFIC
dwParam1 = SLDSMT_LINE_PROPERTY_CHANGED
dwParam2 = LPCT_REMOTE_DESTINATION_INFO (0x00004000)
|
|
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
Remote Destination Info:
unicodeRDName = "Office"
RDNumber = "4089022131"
isActiveRD = 0x00000000
IsMyAppLastToSetActiveRD = 0x00000000
|
Variation :
Test the same on CSF device [CSF - Line-A'']
|
|
Same as for CTI Remote Device other than dwLineTypes and DeviceProtocolType Info.
dwLineTypes = (0x00000000)
DeviceProtocolType =
DeviceProtocolType_SIP (0x02)
|
Negative - Add RD from Application - RD Info Change Notification to Application
Precondition: continuation from previous UseCase
Action
|
TAPI Messages
|
TAPI Structures
|
LineInitializeEx
|
Lines are Enumerated
|
|
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A of CTIRD.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
Remote Destination Info:
unicodeRDName = "Office"
RDNumber = "4089022131"
isActiveRD = 0x00000000
IsMyAppLastToSetActiveRD = 0x00000000
|
LineOpen() with ExtVer- 0x000C0000 dwDeviceID = LineDeviceID of Line-A
|
LineOpen() returns Success
Line INSERVICE EVENT
Event = LINE_LINEDEVSTATE
dwParam1 = LINEDEVSTATE_INSERVICE
|
|
Add Remote Destination on CTI Remote Device CTIRD
Variation 1:
Empty RD Number :
m_RDNumber = ""
CciscoLineDevSpecificAddRemoteDestination Req
m_RDNumber = ""
m_UnicodeRDName = ""
m_activeRD = 0x00000000
|
LineDevSpecific() returns dwRequestID
LINE_REPLY
lResult = LINEERR_INVALPARAM
|
|
Variation 2:
RDNumber : same RD Number as any of the existing RD's Name
"12345" - RD already configured on CUCM.
CciscoLineDevSpecificAddRemoteDestination Req
m_RDNumber = "12345"
m_UnicodeRDName = "Office"
m_activeRD = 0x00000000
|
LineDevSpecific() returns dwRequestID
LINE_REPLY
lResult = LINEERR_ DUPLICATE_INFORMATION (0xC0000013)
|
|
Variation 3:
Add RD when the user Limit for UserID used for CTI RD is reached.
For example : if User has limit set to 4 and then if Remote Device is already configured with 4 Remote Destination and User tries to Add 5th one from Application.
CciscoLineDevSpecificAddRemoteDestination Req
m_RDNumber = "12345"
m_UnicodeRDName = "temp"
m_activeRD = 0x00000000
|
LineDevSpecific() returns dwRequestID
LINE_REPLY
lResult = LINEERR_REMOTE_DESTINATION_LIMIT_EXCEEDED (0xC0000015)
|
|
Variation 4:
RDNumber : Invalid Remote Destination Name [name has unsupported characters, eg- name&] or invalid number [cant configure any of the local device DN as number which is not supported]
CciscoLineDevSpecificAddRemoteDestination Req
m_RDNumber = "1000"
m_UnicodeRDName = "Office&"
m_activeRD = 0x00000000
|
LineDevSpecific() returns dwRequestID
LINE_REPLY
lResult = LINEERR_INVALPARAM
|
|
Variation 5:
Add RD to a CSF device which doesn't have Owner/END User ID configured
CciscoLineDevSpecificAddRemoteDestination Req
m_RDNumber = "12345"
m_UnicodeRDName = "Office"
m_activeRD = 0x00000000
|
LineDevSpecific() returns dwRequestID
LINE_REPLY
lResult = LINEERR_ENDUSER_NOT_ASSOCIATED_WITH_DEVICE (0xC000001B)
|
|
Variation :
Test the same on CSF device [CSF - Line-A'']
|
|
Same as for CTI Remote Device other than dwLineTypes and DeviceProtocolType Info.
dwLineTypes = (0x00000000)
DeviceProtocolType =
DeviceProtocolType_SIP (0x02)
|
Negative - Update RD from Application - RD Info Change Notification to Application
Precondition: continuation from previous UseCase
Action
|
TAPI Messages
|
TAPI Structures
|
LineInitializeEx
|
Lines are Enumerated
|
|
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
Remote Destination Info:
unicodeRDName = "Office"
RDNumber = "4089022131"
isActiveRD = 0x00000000
IsMyAppLastToSetActiveRD = 0x00000000
|
LineOpen() with ExtVer- 0x000C0000 dwDeviceID = LineDeviceID of Line-A
|
LineOpen() returns Success
Line INSERVICE EVENT
Event = LINE_LINEDEVSTATE
dwParam1 = LINEDEVSTATE_INSERVICE
|
|
Update Remote Destination on CTI Remote Device:
Variation 1:
Empty RD Number :
m_RDNumber = ""
CciscoLineDevSpecificAddRemoteDestination Req
m_RDNumber = ""
m_UnicodeRDName = ""
m_NewRDNumber = ""
m_activeRD = 0x00000000
|
LineDevSpecific() returns dwRequestID
LINE_REPLY
lResult = LINEERR_INVALPARAM
|
|
Variation 2:
RDNNumber : RD Number in Request doesn't match with any of the existing RD in the RD List on Device
CciscoLineDevSpecificUpdateRemoteDestination Req
m_RDNumber = "12345"
m_UnicodeRDName = "Temp"
m_RDNumber = "12345"
m_activeRD = 0x00000000
|
LineDevSpecific() returns dwRequestID
LINE_REPLY
lResult = LINEERR_REMOTE_DESTINATION_UNAVAIL (0xC0000014)
|
|
Variation 3:
RDNaumber : same RD Number as any of the existing RD's Name
*** RDNumber "4086271309" is already configured on other RemoteDestination
CciscoLineDevSpecificUpdateRemoteDestination Req
m_RDNumber = "4089022131"
m_UnicodeRDName = "Office"
m_RDNumber = "4086271309"
m_activeRD = 0x00000000
|
LineDevSpecific() returns dwRequestID
LINE_REPLY
lResult = LINEERR _DUPLICATE_INFORMATION (0xC0000013)
|
|
Variation :
Test the same on CSF device [CSF - Line-A'']
|
|
Same as for CTI Remote Device other than dwLineTypes and DeviceProtocolType Info.
dwLineTypes = (0x00000000)
DeviceProtocolType =
DeviceProtocolType_SIP (0x02)
|
Negative - Remove RD from Application - RD Info Change Notification to Application
Precondition: continuation from previous UseCase
Action
|
TAPI Messages
|
TAPI Structures
|
LineInitializeEx
|
Lines are Enumerated
|
|
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A on CTIRD.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
dwLineTypes = LINEDEVCAPSDEVSPECIFIC_REMOTEDEVICE (0x00000008)
DeviceProtocolType =
DeviceProtocolType_CTI_REMOTE_DEVICE(0x03)
Remote Destination Info:
unicodeRDName = "Office"
RDNumber = "4089022131"
isActiveRD = 0x00000000
IsMyAppLastToSetActiveRD = 0x00000000
|
LineOpen() with ExtVer- 0x000C0000 dwDeviceID = LineDeviceID of Line-A
|
LineOpen() returns Success
Line INSERVICE EVENT
Event = LINE_LINEDEVSTATE
dwParam1 = LINEDEVSTATE_INSERVICE
|
|
Remove Remote Destination on CTI Remote Device:
Empty RDNumber :
CciscoLineDevSpecificRemoveRemoteDestination Req
m_RDNumber = ""
|
LineDevSpecific() returns dwRequestID
LINE_REPLY
lResult = LINEERR_INVALPARAM
|
|
Variation 1:
RDNumber : RD Number in Request doesn't match with any of the existing RD in the List
CciscoLineDevSpecificRemoveRemoteDestination Req
m_RDNumber = "1234567"
|
LineDevSpecific() returns dwRequestID
LINE_REPLY
lResult = LINEERR_REMOTE_DESTINATION_UNAVAIL (0xC0000014)
|
|
Test the same on CSF device [CSF - Line-A'']
|
|
Same as for CTI Remote Device other than dwLineTypes and DeviceProtocolType Info.
dwLineTypes = (0x00000000)
DeviceProtocolType =
DeviceProtocolType_SIP (0x02)
|
Negative - Add/Remove/Update RD from Application - on non-CTI RD /CSF Device Line or Line is not opened with Required Extension
Precondition: continuation from previous UseCase
Action
|
TAPI Messages
|
TAPI Structures
|
LineInitializeEx
|
Lines are Enumerated
|
|
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
Remote Destination Info:
unicodeRDName = "Office"
RDNumber = "4089022131"
isActiveRD = 0x00000000
IsMyAppLastToSetActiveRD = 0x00000000
|
LineOpen() with ExtVer- 0x000C0000 dwDeviceID = LineDeviceID of Line-A
|
LineOpen() returns Success
Line INSERVICE EVENT
Event = LINE_LINEDEVSTATE
dwParam1 = LINEDEVSTATE_INSERVICE
|
|
Add/Remove/Update Remote Destination on CTI Remote Device CTIRD
Variation 1:
Previous step Line is not opened with required ext Version - (0x000C0000 or greater)
|
LineDevSpecific() returns dwRequestID
LINE_REPLY
lResult = LINEERR_OPERATIONUNAVAIL
|
|
Variation 2:
Req on Line which is not on CTI Remote Device / CSF device
|
LineDevSpecific() returns dwRequestID
LINE_REPLY
lResult = LINEERR_OPERATIONUNAVAIL
|
|
Variation 3:
Failure of Add/Remove/update Req for any other reasons not captured in above useCases
|
LineDevSpecific() returns dwRequestID
LINE_REPLY
lResult = LINEERR_OPERATIONFAILED
|
|
Multiple Apps setting Active RD
Precondition: same as UseCase 1
Action
|
TAPI Messages
|
TAPI Structures
|
App1 and App2:
LineInitializeEx
|
Lines are Enumerated
|
|
App1 and App2:
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
dwLineTypes = LINEDEVCAPSDEVSPECIFIC_REMOTEDEVICE (0x00000008)
DeviceProtocolType =
DeviceProtocolType_CTI_REMOTE_DEVICE(0x03)
Remote Destination Info:
unicodeRDName = "Mobile"
RDNumber = "91486271309"
isActiveRD = 0x00000000
unicodeRDName = "Office"
RDNumber = "4089022131"
isActiveRD = 0x00000000
IsMyAppLastToSetActiveRD = 0x00000000
|
App1 and App2:
LineOpen() with ExtVer- 0x000C0000 dwDeviceID = LineDeviceID of Line-A
|
LineOpen() returns Success
Line INSERVICE EVENT
Event = LINE_LINEDEVSTATE
dwParam1 = LINEDEVSTATE_INSERVICE
|
|
App1:
Update Remote Destination RD2 on CTI Remote Device "CTIRD" with IsActive set to true
CciscoLineDevSpecificUpdateRemoteDestination Req
m_RDNumber = "914086271309"
m_UnicodeRDName = "Mobile"
m_NewRDNumber = "914086271309"
m_activeRD = 0x00000001
|
Change Notification to App1 and App2:
EVENT = LINE_DEVSPECIFIC
dwParam1 = SLDSMT_LINE_PROPERTY_CHANGED
dwParam2 = LPCT_REMOTE_DESTINATION_INFO (0x00004000)
|
|
App1:
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
dwLineTypes = LINEDEVCAPSDEVSPECIFIC_REMOTEDEVICE (0x00000008)
DeviceProtocolType =
DeviceProtocolType_CTI_REMOTE_DEVICE(0x03)
Remote Destination Info:
unicodeRDName = "Mobile"
RDNumber = "91486271309"
isActiveRD = 0x00000001
unicodeRDName = "Office"
RDNumber = "4089022131"
isActiveRD = 0x00000000
IsMyAppLastToSetActiveRD = 0x00000001
|
App2:
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
dwLineTypes = LINEDEVCAPSDEVSPECIFIC_REMOTEDEVICE (0x00000008)
DeviceProtocolType =
DeviceProtocolType_CTI_REMOTE_DEVICE(0x03)
Remote Destination Info:
unicodeRDName = "Mobile"
RDNumber = "91486271309"
isActiveRD = 0x00000001
unicodeRDName = "Office"
RDNumber = "4089022131"
isActiveRD = 0x00000000
IsMyAppLastToSetActiveRD = 0x00000000
|
App2:
Update Remote Destination RD2 on CTI Remote Device "CTIRD" with IsActive set to true
CciscoLineDevSpecificUpdateRemoteDestination Req
m_RDNumber = "914089022131"
m_UnicodeRDName = "Office"
m_NewRDNumber = "914089022131"
m_activeRD = 0x00000001
|
Change Notification to App1 and App2:
EVENT = LINE_DEVSPECIFIC
dwParam1 = SLDSMT_LINE_PROPERTY_CHANGED
dwParam2 = LPCT_REMOTE_DESTINATION_INFO (0x00004000)
|
|
App1:
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
dwLineTypes = LINEDEVCAPSDEVSPECIFIC_REMOTEDEVICE (0x00000008)
DeviceProtocolType =
DeviceProtocolType_CTI_REMOTE_DEVICE(0x03)
Remote Destination Info:
unicodeRDName = "Mobile"
RDNumber = "91486271309"
isActiveRD = 0x00000000
unicodeRDName = "Office"
RDNumber = "4089022131"
isActiveRD = 0x00000001
IsMyAppLastToSetActiveRD = 0x00000000
|
App2:
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
dwLineTypes = LINEDEVCAPSDEVSPECIFIC_REMOTEDEVICE (0x00000008)
DeviceProtocolType =
DeviceProtocolType_CTI_REMOTE_DEVICE(0x03)
Remote Destination Info:
unicodeRDName = "Mobile"
RDNumber = "91486271309"
isActiveRD = 0x00000000
unicodeRDName = "Office"
RDNumber = "4089022131"
isActiveRD = 0x00000001
IsMyAppLastToSetActiveRD = 0x00000001
|
Variant 1:
App2:
LineShutdown()
|
LineShutdown() returns success
Change Notification to App1:
EVENT = LINE_DEVSPECIFIC
dwParam1 = SLDSMT_LINE_PROPERTY_CHANGED
dwParam2 = LPCT_REMOTE_DESTINATION_INFO (0x00004000
|
|
App1:
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
dwLineTypes = LINEDEVCAPSDEVSPECIFIC_REMOTEDEVICE (0x00000008)
DeviceProtocolType =
DeviceProtocolType_CTI_REMOTE_DEVICE(0x03)
Remote Destination Info:
unicodeRDName = "Mobile"
RDNumber = "91486271309"
isActiveRD = 0x00000000
unicodeRDName = "Office"
RDNumber = "4089022131"
isActiveRD = 0x00000000
IsMyAppLastToSetActiveRD = 0x00000000
|
Variant 2:
App1:
LineShutdown()
|
LineShutdown() returns success
No Change Notification to App2
|
|
App2:
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
dwLineTypes = LINEDEVCAPSDEVSPECIFIC_REMOTEDEVICE (0x00000008)
DeviceProtocolType =
DeviceProtocolType_CTI_REMOTE_DEVICE(0x03)
Remote Destination Info:
unicodeRDName = "Mobile"
RDNumber = "91486271309"
isActiveRD = 0x00000000
unicodeRDName = "Office"
RDNumber = "4089022131"
isActiveRD = 0x00000001
IsMyAppLastToSetActiveRD = 0x00000001
|
Variation :
Test the same on CSF device [CSF - Line-A'']
|
|
Same as for CTI Remote Device other than dwLineTypes and DeviceProtocolType Info.
dwLineTypes = (0x00000000)
DeviceProtocolType =
DeviceProtocolType_SIP (0x02)
|
CTI/CCM Manager FailOver Scenario- Active RD
Precondition: same as UseCase 1
TSP is configured with Primary and Secondary CTI Manager
Action
|
TAPI Messages
|
TAPI Structures
|
LineInitializeEx
|
Lines are Enumerated
|
|
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
dwLineTypes = LINEDEVCAPSDEVSPECIFIC_REMOTEDEVICE (0x00000008)
DeviceProtocolType =
DeviceProtocolType_CTI_REMOTE_DEVICE(0x03)
Remote Destination Info:
unicodeRDName = "Mobile"
RDNumber = "91486271309"
isActiveRD = 0x00000000
unicodeRDName = "Office"
RDNumber = "4089022131"
isActiveRD = 0x00000000
IsMyAppLastToSetActiveRD = 0x00000000
|
LineOpen() with ExtVer- 0x000C0000 dwDeviceID = LineDeviceID of Line-A
|
LineOpen() returns Success
Line INSERVICE EVENT
Event = LINE_LINEDEVSTATE
dwParam1 = LINEDEVSTATE_INSERVICE
|
|
Update Remote Destination RD1 on CTI Remote Device "CTIRD" with IsActive set to true
CciscoLineDevSpecificUpdateRemoteDestination Req
m_RDNumber = "914086271309"
m_UnicodeRDName = "Mobile"
m_NewRDNumber = "914086271309"
m_activeRD = 0x00000001
|
EVENT = LINE_DEVSPECIFIC
dwParam1 = SLDSMT_LINE_PROPERTY_CHANGED
dwParam2 = LPCT_REMOTE_DESTINATION_INFO (0x00004000)
|
|
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
Remote Destination Info:
unicodeRDName = "Mobile"
RDNumber = "91486271309"
isActiveRD = 0x00000001
unicodeRDName = "Office"
RDNumber = "4089022131"
isActiveRD = 0x00000000
IsMyAppLastToSetActiveRD = 0x00000001
|
Stop Primary CTI Manager
TSP connects to Secondary CTIManager
and
Active RD configuration is RE-SET by CiscoTSP
|
Event on Line A :
Line INSERVICE EVENT
Event = LINE_LINEDEVSTATE
dwParam1 = LINEDEVSTATE_OUTOFSERVICE
Line INSERVICE EVENT
Event = LINE_LINEDEVSTATE
dwParam1 = LINEDEVSTATE_INSERVICE
|
|
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
Remote Destination Info:
unicodeRDName = "Mobile"
RDNumber = "91486271309"
isActiveRD = 0x00000001
unicodeRDName = "Office"
RDNumber = "4089022131"
isActiveRD = 0x00000000
IsMyAppLastToSetActiveRD = 0x00000001
|
Set RD - Mobile to ACTIVE RD and then Stop Call Manager on the node of Secondary CTI Manager
ActiveRD configuration is not changed/ not RESET
|
Event on Line A :
Line INSERVICE EVENT
Event = LINE_LINEDEVSTATE
dwParam1 = LINEDEVSTATE_OUTOFSERVICE
Line INSERVICE EVENT
Event = LINE_LINEDEVSTATE
dwParam1 = LINEDEVSTATE_INSERVICE
|
|
Variation :
Test the same on CSF device [CSF - Line-A'']
|
|
Same as for CTI Remote Device other than dwLineTypes and DeviceProtocolType Info.
dwLineTypes = (0x00000000)
DeviceProtocolType =
DeviceProtocolType_SIP (0x02)
|
CTI/CCM Manager FailOver Scenario- Active RD set by other Application
Precondition: same as UseCase 1
TSP is configured with Primary and Secondary CTI Manager
Other Application has set the ACTIVE RD on the Device and Application is connected to Secondary CTI Manager
Action
|
TAPI Messages
|
TAPI Structures
|
LineInitializeEx
|
Lines are Enumerated
|
|
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
Remote Destination Info:
unicodeRDName = "Mobile"
RDNumber = "91486271309"
isActiveRD = 0x00000001
unicodeRDName = "Office"
RDNumber = "4089022131"
isActiveRD = 0x00000000
IsMyAppLastToSetActiveRD = 0x00000000
|
LineOpen() with ExtVer- 0x000C0000 dwDeviceID = LineDeviceID of Line-A
|
LineOpen() returns Success
Line INSERVICE EVENT
Event = LINE_LINEDEVSTATE
dwParam1 = LINEDEVSTATE_INSERVICE
|
|
Stop Primary CTI Manager
Active RD configuration is not RESET as the this Application has not set the ACTIVE RD
|
Event on Line A :
Line INSERVICE EVENT
Event = LINE_LINEDEVSTATE
dwParam1 = LINEDEVSTATE_OUTOFSERVICE
Line INSERVICE EVENT
Event = LINE_LINEDEVSTATE
dwParam1 = LINEDEVSTATE_INSERVICE
|
|
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
dwLineTypes = LINEDEVCAPSDEVSPECIFIC_REMOTEDEVICE (0x00000008)
DeviceProtocolType =
DeviceProtocolType_CTI_REMOTE_DEVICE(0x03)
Remote Destination Info:
unicodeRDName = "Mobile"
RDNumber = "91486271309"
isActiveRD = 0x00000001
unicodeRDName = "Office"
RDNumber = "4089022131"
isActiveRD = 0x00000000
IsMyAppLastToSetActiveRD = 0x00000000
|
Stop Call Manager on the node of Secondary CTI Manager
ActiveRD configuration is not changed/ not RESET
|
Event on Line A :
Line INSERVICE EVENT
Event = LINE_LINEDEVSTATE
dwParam1 = LINEDEVSTATE_OUTOFSERVICE
Line INSERVICE EVENT
Event = LINE_LINEDEVSTATE
dwParam1 = LINEDEVSTATE_INSERVICE
|
|
Variation :
Test the same on CSF device [CSF - Line-A'']
|
|
Same as for CTI Remote Device other than dwLineTypes and DeviceProtocolType Info.
dwLineTypes = (0x00000000)
DeviceProtocolType =
DeviceProtocolType_SIP (0x02)
|
Monitoring CSF Device in Soft Phone/Desk Phone Mode
Precondition: continuation from previous UseCase
Action
|
TAPI Messages
|
TAPI Structures
|
LineInitializeEx
|
Lines are Enumerated
|
|
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A'' on CSF Device.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
dwLineTypes = (0x00000000)
DeviceProtocolType =
DeviceProtocolType_SIP (0x02)
Remote Destination Info:
unicodeRDName = "CSF-Mobile"
RDNumber = "4086271309"
isActiveRD = 0x00000000
IsMyAppLastToSetActiveRD = 0x00000000
|
LineOpen() with ExtVer- 0x000C0000 dwDeviceID = LineDeviceID of Line-A"
|
LineOpen() returns Success
|
|
LineSetStatusMessages()on Line-A" with dwLineStates = INSERVICE and OUTOFSERVICE
|
Line INSERVICE EVENT
Event = LINE_LINEDEVSTATE
dwParam1 = LINEDEVSTATE_INSERVICE
|
|
LineMake Call() or any Incoming Call
|
Call Events are reported to Application
|
|
Lineclose and ShutDown
|
LineClose and LineShutdown Success
|
|
Monitoring CSF Device Switching Mode from Soft/Desk Phone Mode to Extend Mode
Precondition: continuation from previous UseCase
Action
|
TAPI Messages
|
TAPI Structures
|
LineInitializeEx
|
Lines are Enumerated
|
|
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A" on CSF device.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
dwLineTypes = (0x00000000)
DeviceProtocolType =
DeviceProtocolType_SIP (0x02)
Remote Destination Info:
unicodeRDName = "CSF-Mobile"
RDNumber = "4086271309"
isActiveRD = 0x00000000
IsMyAppLastToSetActiveRD = 0x00000000
|
LineOpen() with ExtVer- 0x000C0000 dwDeviceID = LineDeviceID of Line-A"
|
LineOpen() returns Success
|
|
LineSetStatusMessages() on Line-A" with dwLineStates = INSERVICE and OUTOFSERVICE
|
Line INSERVICE EVENT
Event = LINE_LINEDEVSTATE
dwParam1 = LINEDEVSTATE_INSERVICE
|
|
From Jabber Client Switch the mode to Extend Mode
|
Line INSERVICE EVENT
Event = LINE_LINEDEVSTATE
dwParam1 = LINEDEVSTATE_OUTOFSERVICE
Line INSERVICE EVENT
Event = LINE_LINEDEVSTATE
dwParam1 = LINEDEVSTATE_INSERVICE
EVENT = LINE_DEVSPECIFIC
dwParam1 = SLDSMT_LINE_PROPERTY_CHANGED
dwParam2 = LPCT_DEVICE_PROTOCOL_TYPE (0x00008000)
|
|
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A".
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
dwLineTypes = (0x00000000)
DeviceProtocolType =
DeviceProtocolType_CTI_REMOTE_DEVICE (0x03)
Remote Destination Info:
unicodeRDName = "CSF-Mobile"
RDNumber = "4086271309"
isActiveRD = 0x00000000
|
Lineclose and ShutDown
|
LineClose and LineShutdown Success
|
|
Monitoring CSF Device in Extend Mode, Switches back to Soft / Desk Phone Mode
Precondition: continuation from previous UseCase
Action
|
TAPI Messages
|
TAPI Structures
|
LineInitializeEx
|
Lines are Enumerated
|
|
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A" on CSF device.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
dwLineTypes = (0x00000000)
DeviceProtocolType =
DeviceProtocolType_CTI_REMOTE_DEVICE (0x03)
Remote Destination Info:
unicodeRDName = "CSF-Mobile"
RDNumber = "4086271309"
isActiveRD = 0x00000000
IsMyAppLastToSetActiveRD = 0x00000000
|
LineOpen() with ExtVer- 0x000C0000 dwDeviceID = LineDeviceID of Line-A"
|
LineOpen() returns Success
|
|
LineSetStatusMessages()on Line-A" with dwLineStates = INSERVICE and OUTOFSERVICE
|
Line INSERVICE EVENT
Event = LINE_LINEDEVSTATE
dwParam1 = LINEDEVSTATE_INSERVICE
|
|
From Jabber Client Switch the mode to Soft Mode
Or
From Jabber Client Switch the mode to Deskphone Mode
|
Line INSERVICE EVENT
Event = LINE_LINEDEVSTATE
dwParam1 = LINEDEVSTATE_OUTOFSERVICE
Line INSERVICE EVENT
Event = LINE_LINEDEVSTATE
dwParam1 = LINEDEVSTATE_INSERVICE
EVENT = LINE_DEVSPECIFIC
dwParam1 = SLDSMT_LINE_PROPERTY_CHANGED
dwParam2 = LPCT_DEVICE_PROTOCOL_TYPE (0x00008000)
|
|
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A".
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
dwLineTypes = (0x00000000)
DeviceProtocolType =
DeviceProtocolType_SIP (0x02)
Remote Destination Info:
unicodeRDName = "CSF-Mobile"
RDNumber = "4086271309"
isActiveRD = 0x00000000
IsMyAppLastToSetActiveRD = 0x00000000
|
Lineclose and ShutDown
|
LineClose and LineShutdown Success
|
|
Basic Incoming Call to CTI Remote Device
CTI Remote Device:
A (CTI Remote Device - Name: CTIRD1)
Remote Destination:
RD1 - Remote Destination configured on CTI Remote Device A
(Name: Mobile, Number: 914086271309)
RD2 - Remote Destination configured on CTI Remote Device A
(Name: Office, Number: 914089022131)
Line:
Line-A1 (DN - 2000) (Alerting Name:2000name, Display Name: CTIRD-2000name) configured on CTI Remote Device A (shared line of Enterprise DN - 2000 configured on Device B)
Line-A2 (DN - 2001) (Alerting Name:2001name, Display Name: CTIRD-2001name) configured on CTI Remote Device A (shared line of Enterprise DN - 2001 configured on Device B)
Enterprise Phones:
B (IP Phone - Name: SEPxxxxxxxx)
Line:
Line-A1' - DN - 2000(Alerting Name: 2000name, Display Name: EP-2000name) configured on Device B
Line-A2' - DN - 2001(Alerting Name: 2001name, Display Name: EP-2001name) configured on Device B
C (IP Phone - Name: SEPxxxxxxxx)
Line:
Line-C - DN - 1000(Alerting Name: 1000name, Display Name: 1000Name) configured on Device C
D (IP Phone - Name: SEPxxxxxxxx)
Line:
Line-D - DN - 1001(Alerting Name: 1001name, Display Name: 1001Name) configured on Device D
CSF Device:
D (CSF Device - Name: CSF-drajesh)
Remote Destination:
RD-01 - Remote Destination configured on CSF device D
(Name: CSF-Mobile, Number: 914086271309)
RD-02 - Remote Destination configured on CSF device D
(Name: CSF-Office, Number: 914089022131)
Line:
Line-A'' (DN - 2000) - Line-A (Alerting Name: 2000name, Display Name: CSF-2000) configured on CSF device D (shared line of Enterprise DN - 2000 configured on Device B)
Action
|
TAPI Messages
|
TAPI Structures
|
LineInitializeEx
|
Lines are Enumerated
|
|
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A.
|
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A.
|
LINEDEVCAPS::DevSpecific
dwLineTypes = (0x00000000)
DeviceProtocolType =
DeviceProtocolType_CTI_REMOTE_DEVICE (0x03)
Remote Destination Info:
unicodeRDName = "Mobile"
RDNumber = "4086271309"
isActiveRD = 0x00000000
unicodeRDName = "Office"
RDNumber = "4089022131"
isActiveRD = 0x00000000
IsMyAppLastToSetActiveRD = 0x00000000
|
Open all Lines (A, A' and C)
LineOpen() with ExtVer- 0x000C0000
|
LineOpen() returns Success
|
|
LineMakeCall on Line-C with DN (A - DN 2000)
|
LineMakeCall() success
Call on C :
LINE_CALLSTATE - Param1 = DIALING
LINE_CALLSTATE - Param1 = PROCEEDING
LINE_CALLSTATE - Param1 = RINGBACK
Call on CTI Remote Device :
LINE_APPNEWCALL
LINE_CALLSTATE - Param1 = OFFERING
LINE_CALLSTATE - Param1 = ACCEPTED
Call on Enterprise Phone :
LINE_APPNEWCALL
LINE_CALLSTATE - Param1 = OFFERING
LINE_CALLSTATE - Param1 = ACCEPTED
|
|
After "Delay Before Ringing Timer" expires the call is offered on Remote Destinations and all Remote Destinations Ring
|
LineGetCallInfo() on call on Device C
|
LineGetCallInfo() success
|
LineCallInfo ::
dwCallerID = 1000
dwCallerIDName = 1000name
dwCalledID = 2000
dwCalledIDName = 2000name
DevSpecific ::
UnicodeCallerPartyName = 1000name
UnicodeCalledPartyName = 2000name
UnicodeConnectedPartyName =
ModifiedCallingParty = 1000
ModifiedCalledParty = 2000
ModifiedConnectedID =
|
LineGetCallInfo() on call on Device A/B
|
LineGetCallInfo() success
|
LineCallInfo ::
dwCallerID = 1000
dwCallerIDName = 1000name
dwCalledID = 2000
dwCalledIDName = 2000name
DevSpecific ::
UnicodeCallerPartyName = 1000name
UnicodeCalledPartyName = 2000name
UnicodeConnectedPartyName =
ModifiedCallingParty = 1000
ModifiedCalledParty = 2000
ModifiedConnectedID =
|
Answer on any of the Remote Destination
|
Call on C :
LINE_CALLSTATE - Param1 = CONNECTED
Call on CTI Remote Device :
LINE_CALLSTATE - Param1 = CONNECTED (active)
Call on Enterprise Phone :
LINE_CALLSTATE -
Param1 = CONNECTED
Param2 = 0x02 (Inactive)
|
|
LineGetCallInfo() on call on Device C
|
LineGetCallInfo() success
|
LineCallInfo ::
dwCallerID = 1000
dwCallerIDName = 1000name
dwCalledID = 2000
dwCalledIDName = 2000name
dwConnectedID = 2000
dwConnectedIDName = CTIRD-2000name
DevSpecific ::
UnicodeCallerPartyName = 1000name
UnicodeCalledPartyName = 2000name
UnicodeConnectedPartyName = CTIRD-2000name
ModifiedCallingParty = 1000
ModifiedCalledParty = 2000
ModifiedConnectedID = 2000
|
LineGetCallInfo() on call on Device A/B
|
LineGetCallInfo() success
|
LineCallInfo ::
dwCallerID = 1000
dwCallerIDName = 1000name
dwCalledID = 2000
dwCalledIDName = 2000name
dwConnectedID = 2000
dwConnectedIDName = CTIRD-2000name
DevSpecific ::
UnicodeCallerPartyName = 1000name
UnicodeCalledPartyName = 2000name
UnicodeConnectedPartyName = CTIRD-2000name
ModifiedCallingParty = 1000
ModifiedCalledParty = 2000
ModifiedConnectedID = 2000
|
LineDrop() for the call on Device A (CTI-RD)
*** Call on Remote Destination is dropped
|
LineDrop() success
Call on C :
LINE_CALLSTATE - Param1 = DISCONNECTED
LINE_CALLSTATE - Param1 = IDLE
Call on CTI Remote Device :
LINE_CALLSTATE - Param1 = DISCONNECTED
LINE_CALLSTATE - Param1 = IDLE
Call on Enterprise Phone :
LINE_CALLSTATE -
Param1 = CONNECTED
Param2 = 0x02 (Inactive)
LINE_CALLSTATE - Param1 = IDLE
|
|
Variation :
Answer the call on Enterprise Phone (B)
LineAnswer() on the call on Device B
*** Call on Remote Device/Remote Destination drops
|
Call on C :
LINE_CALLSTATE - Param1 = CONNECTED
Call on CTI Remote Device :
LINE_CALLSTATE - Param1 = DISCONNECTED
LINE_CALLSTATE - Param1 = IDLE
Call on Enterprise Phone :
LINE_CALLSTATE -
Param1 = CONNECTED
|
|
Variation :
One of the Remote Destination answers the call before the "Answer Too Soon Timer"
|
Expected Result :
All calls go to Disconnected/IDLE State
|
|
Variation :
Active RD set on CTI Remote Device
|
Expected result:
only Remote Destination which is set ACTIVE rings
Call rings immediately and "Delay before Ringing Timer" wouldn't be effective when ACTIVE RD is set.
Remote Destination can answer the call Immediately and "Answer Too Soon Timer" wouldn't be effective when ACTIVE RD is set.
|
|
Continuation to above variation
On second Incoming Call...
|
There won't be second call on Remote Destination, only at Remote Device second call will present and reported to Application.
|
|
Variation :
Test with CSF Device in Extend Mode
|
Expected result:
would be same as observed on CTI Remote Device
|
|
DVO Call (Outgoing Call initiation from CTI Remote Device)
Precondition: same as above usecase
Action
|
TAPI Messages
|
TAPI Structures
|
LineInitializeEx
|
Lines are Enumerated
|
|
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
dwLineTypes = (0x00000000)
DeviceProtocolType =
DeviceProtocolType_CTI_REMOTE_DEVICE (0x03)
Remote Destination Info:
unicodeRDName = "Mobile"
RDNumber = "4086271309"
isActiveRD = 0x00000000
unicodeRDName = "Office"
RDNumber = "4089022131"
isActiveRD = 0x00000000
IsMyAppLastToSetActiveRD = 0x00000000
|
Open all Lines (A, A' and C)
LineOpen() with ExtVer- 0x000C0000
|
LineOpen() returns Success
|
|
LineMakeCall on Line-A with DN (C - DN 1000)
|
LineMakeCall() returns RequestID
LINE_REPLY
Param1 = RequestID
Param2 = LINEERR_OPERATION_FAIL_NO_ACTIVE_RD_SET (0xC0000016)
|
|
Update Remote Destination RD1 "Mobile"on CTI Remote Device A with IsActive set to true
CciscoLineDevSpecificUpdateRemoteDestination Req
m_RDNumber = "914086271309"
m_UnicodeRDName = "Mobile"
m_NewRDNumber = "914086271309"
m_activeRD = 0x00000001
|
EVENT = LINE_DEVSPECIFIC
dwParam1 = SLDSMT_LINE_PROPERTY_CHANGED
dwParam2 = LPCT_REMOTE_DESTINATION_INFO (0x00004000)
|
|
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
dwLineTypes = (0x00000000)
DeviceProtocolType =
DeviceProtocolType_CTI_REMOTE_DEVICE (0x03)
Remote Destination Info:
unicodeRDName = "Mobile"
RDNumber = "4086271309"
isActiveRD = 0x00000001
unicodeRDName = "Office"
RDNumber = "4089022131"
isActiveRD = 0x00000000
IsMyAppLastToSetActiveRD = 0x00000001
|
LineMakeCall on Line-A with DN (C - DN 1000)
*** Only Remote Destination "Mobile" rings and it rings immediately as the RD is set Active
*** No Call presented on EP
|
LineMakeCall() success
Call on CTI Remote Device :
LINE_CALLSTATE - Param1 = OFFERING
|
|
Answer the first Call on CTI Remote Device:
Answer() on the call on CTIRemote Device(A)
|
LineAnswer() fail with Error LINEEE_OPERATIONUNAVAIL
|
|
LineGetCallInfo() on call on Device A(CTIRD)
|
LineGetCallInfo() success
|
LineCallInfo ::
dwCallerID = 2000
dwCallerIDName = voiceConnect
dwCalledID = 2000
dwCalledIDName = 2000name
DevSpecific ::
UnicodeCallerPartyName =
UnicodeCalledPartyName = 2000name
UnicodeConnectedPartyName =
ModifiedCallingParty = 2000
ModifiedCalledParty = 2000
ModifiedConnectedID =
|
Once Remote Destination answers the call, call will be offered on initial dialed number C
Call will be present on Enterprise Phone and call will be Remote In Use Call
|
Call on C :
LINE_CALLSTATE - Param1 = OFFERING
LINE_CALLSTATE - Param1 = ACCEPTED
Call on CTI Remote Device :
LINE_CALLSTATE - Param1 = CONNECTED
LINE_CALLSTATE - Param1 = RINGBACK
Call on Enterprise Phone :
LINE_APPNEWCALL
LINE_CALLSTATE - Param1 = ACCEPTED
LINE_CALLSTATE -
Param1 = CONNECTED
Param2 = 0x02 (Inactive)
|
|
C answers the call
LineAnswer() on call on Device- C
|
LineAnswer() success
Call on C :
LINE_CALLSTATE - Param1 = CONNECTED
Call on CTI Remote Device :
LINE_CALLSTATE - Param1 = CONNECTED (active)
Call on Enterprise Phone :
LINE_CALLSTATE -
Param1 = CONNECTED
Param2 = 0x02 (Inactive)
|
|
LineGetCallInfo() on call on Device C
|
LineGetCallInfo() success
|
LineCallInfo ::
CallReason = UNKNOWN (0x400)
dwCallerID = 2000
dwCallerIDName = 2000name
dwCalledID = 1000
dwCalledIDName = 1000name
dwConnectedID = 2000
dwConnectedIDName = CTIRD-2000name
DevSpecific ::
ExtendedCallReason = CtiReasonMobility(0x021 = 33)
UnicodeCallerPartyName = 2000name
UnicodeCalledPartyName = 1000name
UnicodeConnectedPartyName = 2000name
ModifiedCallingParty = 2000
ModifiedCalledParty = 1000
ModifiedConnectedID = 2000
|
LineGetCallInfo() on call on Device A/B
|
LineGetCallInfo() success
|
LineCallInfo ::
dwCallerID = 2000
dwCallerIDName = 2000name
dwCalledID = 2000
dwCalledIDName = 2000name
dwConnectedID = 1000
dwConnectedIDName = 1000name
DevSpecific ::
CallAttributeType = TSPCallAttribute_DVOCall (0x00002000)
UnicodeCallerPartyName = 2000name
UnicodeCalledPartyName = 2000name
UnicodeConnectedPartyName = 1000name
ModifiedCallingParty = 2000
ModifiedCalledParty = 2000
ModifiedConnectedID = 1000
|
LineDrop() for the call on Device A (CTI-RD)
|
LineDrop() success
Call on C :
LINE_CALLSTATE - Param1 = DISCONNECTED
LINE_CALLSTATE - Param1 = IDLE
Call on CTI Remote Device :
LINE_CALLSTATE - Param1 = DISCONNECTED
LINE_CALLSTATE - Param1 = IDLE
Call on Enterprise Phone :
LINE_CALLSTATE -
Param1 = CONNECTED
Param2 = 0x02 (Inactive)
LINE_CALLSTATE - Param1 = IDLE
|
|
Variation :
Test the same with CSF Device in Extend Mode
|
Expected result would be same as observed on CTI Remote Device
|
|
Multiple Calls - Answer/hold/Resume
Precondition: same as above usecase
Action
|
TAPI Messages
|
TAPI Structures
|
LineInitializeEx
|
Lines are Enumerated
|
|
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
dwLineTypes = (0x00000000)
DeviceProtocolType =
DeviceProtocolType_CTI_REMOTE_DEVICE (0x03)
Remote Destination Info:
unicodeRDName = "Mobile"
RDNumber = "4086271309"
isActiveRD = 0x00000000
unicodeRDName = "Office"
RDNumber = "4089022131"
isActiveRD = 0x00000000
IsMyAppLastToSetActiveRD = 0x00000000
|
Open all Lines (A, A', A'' and C)
LineOpen() with ExtVer- 0x000C0000
|
LineOpen() returns Success
|
|
Update Remote Destination RD1 "Mobile"on CTI Remote Device A with IsActive set to true
CciscoLineDevSpecificUpdateRemoteDestination Req
m_RDNumber = "914086271309"
m_UnicodeRDName = "Mobile"
m_NewRDNumber = "914086271309"
m_activeRD = 0x00000001
|
EVENT = LINE_DEVSPECIFIC
dwParam1 = SLDSMT_LINE_PROPERTY_CHANGED
dwParam2 = LPCT_REMOTE_DESTINATION_INFO (0x00004000)
|
|
Make Call between C and A[Remote Destinaton], either normal incoming or DVO call on CTI Remote Device
Call Info is same as above test cases
|
LineMakeCall on Line-D with DN (A - DN 2000)
|
LineMakeCall() success
Call on Device-D :
LINE_CALLSTATE - Param1 = OFFERING
LINE_CALLSTATE - Param1 = ACCEPTED
Second Call on CTI Remote Device[A] [D ' A] :
LINE_CALLSTATE - Param1 = OFFERING
LINE_CALLSTATE - Param1 = ACCEPTED
Second Call on Enterprise Phone[B] [D ' A]:
LINE_CALLSTATE - Param1 = OFFERING
LINE_CALLSTATE - Param1 = ACCEPTED
|
|
There won't be second call offered to Remote Destination
|
Answer() on the second call on CTIRemote Device(A)
Remote Destination and D will be talking/ will have Media connection
|
LineAnswer() returns success
Calls on CTI Remote Device :
Call1 [C ' A]:
LINE_CALLSTATE - Param1 = ONHOLD
Call1 [D ' A]:
LINE_CALLSTATE - Param1 = CONNECTED
Calls on Enterprise Phone[B] :
Call1 [C ' A]:
LINE_CALLSTATE - Param1 = ONHOLD
Call1 [D ' A]:
LINE_CALLSTATE -
Param1 = CONNECTED
Param2 = 0x02 (Inactive)
|
|
Resume the first call on CTIRemote Device [A]
LineUnhold() on the call [c ' A] on Device A
Remote Destination and C will be talking/ will have Media connection
|
LineUnHold() returns success
Calls on CTI Remote Device :
Call1 [C ' A]:
LINE_CALLSTATE - Param1 = CONNECTED
Call1 [D ' A]:
LINE_CALLSTATE - Param1 = ONHOLD
Calls on Enterprise Phone[B] :
Call1 [C ' A]:
LINE_CALLSTATE -
Param1 = CONNECTED
Param2 = 0x02 (Inactive)
Call1 [D ' A]:
LINE_CALLSTATE -
Param1 = ONHOLD
|
|
Resume the ONHOLD call [D ' A]from Enterprise Phone
LineUnHold() on the call [D ' A] on Device B
|
LineUnHold() returns success
Calls on CTI Remote Device :
Call1 [C ' A]:
LINE_CALLSTATE - Param1 = CONNECTED
Call1 [D ' A]:
LINE_CALLSTATE - Param1 = IDLE
Calls on Enterprise Phone[B] :
Call1 [C ' A]:
LINE_CALLSTATE -
Param1 = CONNECTED
Param2 = 0x02 (Inactive)
Call1 [D ' A]:
LINE_CALLSTATE -
Param1 = CONNECTED
Param2 = 0x01(active)
|
|
LineDrop() for the call on Device A (CTI-RD)
Call on Remote Destination will be dropped
|
LineDrop() success
Call on C :
LINE_CALLSTATE - Param1 = DISCONNECTED
LINE_CALLSTATE - Param1 = IDLE
Call on CTI Remote Device :
LINE_CALLSTATE - Param1 = DISCONNECTED
LINE_CALLSTATE - Param1 = IDLE
Call on Enterprise Phone :
LINE_CALLSTATE -
Param1 = CONNECTED
Param2 = 0x02 (Inactive)
LINE_CALLSTATE - Param1 = IDLE
|
|
Variation :
Test the same with CSF Device in Extend Mode
|
Expected result would be same as observed on CTI Remote Device
|
|
Multiple Calls - Multiple Lines - Answer/hold/Resume
Precondition: same as above usecase
Action
|
TAPI Messages
|
TAPI Structures
|
LineInitializeEx
|
Lines are Enumerated
|
|
Open all Lines (A, A', A'' and C)
LineOpen() with ExtVer- 0x000C0000
|
LineOpen() returns Success
|
|
Update Remote Destination RD1 "Mobile"on CTI Remote Device A with IsActive set to true
CciscoLineDevSpecificUpdateRemoteDestination Req
m_RDNumber = "914086271309"
m_UnicodeRDName = "Mobile"
m_NewRDNumber = "914086271309"
m_activeRD = 0x00000001
|
EVENT = LINE_DEVSPECIFIC
dwParam1 = SLDSMT_LINE_PROPERTY_CHANGED
dwParam2 = LPCT_REMOTE_DESTINATION_INFO (0x00004000)
|
|
Make Call between C and A[Remote Destinaton], either normal incoming or DVO call on CTI Remote Device
Call Info is same above test cases
|
LineMakeCall on Line-D with DN (A2 - DN 2001)
|
LineMakeCall() success
Call on Device-D :
LINE_CALLSTATE - Param1 = OFFERING
LINE_CALLSTATE - Param1 = ACCEPTED
Second Call on CTI Remote Device[A] [D ' A2]:
LINE_CALLSTATE - Param1 = OFFERING
LINE_CALLSTATE - Param1 = ACCEPTED
Second Call on Enterprise Phone[B] [D ' A2]:
LINE_CALLSTATE - Param1 = OFFERING
LINE_CALLSTATE - Param1 = ACCEPTED
|
|
There won't be second call offered to Remote Destination
|
Answer() on the second call on CTIRemote Device(A)
Remote Destination and D will be talking/ will have Media connection
|
LineAnswer() returns success
Calls on CTI Remote Device :
Call1 [C ' A1]:
LINE_CALLSTATE - Param1 = ONHOLD
Call1 [D ' A2]:
LINE_CALLSTATE - Param1 = CONNECTED
Calls on Enterprise Phone[B] :
Call1 [C ' A1]:
LINE_CALLSTATE - Param1 = ONHOLD
Call1 [D ' A2]:
LINE_CALLSTATE -
Param1 = CONNECTED
Param2 = 0x02 (Inactive)
|
|
Resume the first call on CTIRemote Device [A]
LineUnhold() on the call [c ' A1] on Device A
Remote Destination and C will be talking/ will have Media connection
|
LineUnHold() returns success
Calls on CTI Remote Device :
Call1 [C ' A1]:
LINE_CALLSTATE - Param1 = CONNECTED
Call1 [D ' A2]:
LINE_CALLSTATE - Param1 = ONHOLD
Calls on Enterprise Phone[B] :
Call1 [C ' A1]:
LINE_CALLSTATE -
Param1 = CONNECTED
Param2 = 0x02 (Inactive)
Call1 [D ' A2]:
LINE_CALLSTATE -
Param1 = ONHOLD
|
|
Drop the Connected Active Call on CTI Remote Device.
LineDrop() for the call[C ' A1] on Device A (CTI-RD)
Call on Remote Destination will not be dropped as there is other Active/OnHold call on CTI Remote Device
As second Call is on OnHold state, Remote Destination will listen Dead Air
|
LineDrop() success
Call on C :
LINE_CALLSTATE - Param1 = DISCONNECTED
LINE_CALLSTATE - Param1 = IDLE
Calls on CTI Remote Device :
[C ' A1] :
LINE_CALLSTATE - Param1 = DISCONNECTED
LINE_CALLSTATE - Param1 = IDLE
Call on Enterprise Phone :
Call [C ' A1]
LINE_CALLSTATE -
Param1 = CONNECTED
Param2 = 0x02 (Inactive)
LINE_CALLSTATE - Param1 = IDLE
|
|
Drop the onHold call on CTI Remote Device
LineDrop() for the call on Device A (CTI-RD)
Call on Remote Destination is dropped
C and EP call will not be disconnected.
On C call will be in Connected state and on EP call will be in OnHold state.
|
LineDrop() success
Call on CTI Remote Device :
LINE_CALLSTATE - Param1 = DISCONNECTED
LINE_CALLSTATE - Param1 = IDLE
|
|
Variation :
Test the same with CSF Device in Extend Mode
|
Expected result would be same as observed on CTI Remote Device
|
|
Transfer
Precondition: same as above usecase
Action
|
TAPI Messages
|
TAPI Structures
|
LineInitializeEx
|
Lines are Enumerated
|
|
Open all Lines (A, A', A'' and C)
LineOpen() with ExtVer- 0x000C0000
|
LineOpen() returns Success
|
|
Make Call between C and A1[Remote Destinaton], either normal incoming or DVO call on CTI Remote Device
Call Info is same as above test cases
|
Setup Transfer and Dial D
LineSetupTransfer() on the call [C ' A1] on Device A
|
LineSetupTransfer returns success
Primary Call on CTI Remote Device[A] [C ' A1] :
LINE_CALLSTATE - Param1 = OnholdPendingTransfer
Consult Call on CTI Remote Device[A] [A1 ' D]:
|
|
LineDial() on Consult call with DN - D
|
LINE_CALLSTATE - Param1 = DIALTONE
LINE_CALLSTATE - Param1 = DIALING
Calls on Enterprise Phone[B] :
Call1 [C ' A1]:
LINE_CALLSTATE - Param1 = ONHOLD
Call1 [A1 ' D]:
LINE_CALLSTATE -
Param1 = CONNECTED
Param2 = 0x02 (Inactive)
Consult Call on CTI Remote Device[A] [A1 ' D]:
LINE_CALLSTATE - Param1 = PROCEEDING
LINE_CALLSTATE - Param1 = RINGBACK
|
|
Answer the Call on Device D
Remote Destination and D will be talking/ will have Media connection
|
Secondary Call on CTI Remote Device:
Call1 [A1 ' D]:
LINE_CALLSTATE - Param1 = CONNECTED
Param2 = 0x01(active)
|
|
Complete Transfer on the Primary Call[C ' A]with [A ' D ] call as consult call
LineCompleteTranfer() on the call [c ' A1] on Device A
D and C will be talking/ will have Media connection
|
Both the Calls on CTI Remote Device Drop
Primary Call on CTI Remote Device :
Call1 [C ' A1]:
LINE_CALLSTATE - Param1 = DISCONNECTED
LINE_CALLSTATE - Param1 = IDLE
Secondary Call on CTI Remote Device:
Call1 [A ' D]:
LINE_CALLSTATE - Param1 = DISCONNECTED
LINE_CALLSTATE - Param1 = IDLE
|
|
Variation :
Test the same with CSF Device in Extend Mode
|
Expected result would be same as observed on CTI Remote Device
|
|
Direct Transfer on same Line
Precondition: same as above usecase
Action
|
TAPI Messages
|
TAPI Structures
|
LineInitializeEx
|
Lines are Enumerated
|
|
Open all Lines (A, A', A'' and C)
LineOpen() with ExtVer- 0x000C0000
|
LineOpen() returns Success
|
|
Make Call between C and A1[Remote Destinaton], either normal incoming or DVO call on CTI Remote Device
Call Info is same above test cases
|
Make Call between D and A1
Call Info is same above Multiple Call across lines test case
|
DirectTrnasfer on the calls on CTI Remote Device
Both Calls on Remote Device and call on Remote Destination drop
|
Both the Calls on CTI Remote Device Drop
Primary Call on CTI Remote Device :
Call1 [C ' A1]:
LINE_CALLSTATE - Param1 = DISCONNECTED
LINE_CALLSTATE - Param1 = IDLE
Secondary Call on CTI Remote Device:
Call1 [A1 ' D]:
LINE_CALLSTATE - Param1 = DISCONNECTED
LINE_CALLSTATE - Param1 = IDLE
|
|
DirectTrnasfer on the calls on CTI Remote Device
Both Calls on Remote Device and call on Remote Destination drop
CciscoLineDevSpecificDirectTransfer on the call [c ' A1] on Device A with ConsultCallID = CallID of [D ' A1]
D and C will be talking/ will have Media connection
|
Both the Calls on CTI Remote Device Drop
Primary Call on CTI Remote Device :
Call1 [C ' A1]:
LINE_CALLSTATE - Param1 = DISCONNECTED
LINE_CALLSTATE - Param1 = IDLE
Secondary Call on CTI Remote Device:
Call1 [A1 ' D]:
LINE_CALLSTATE - Param1 = DISCONNECTED
LINE_CALLSTATE - Param1 = IDLE
|
|
Variation :
Test the same with CSF Device in Extend Mode
|
Expected result would be same as observed on CTI Remote Device
|
|
Conference - Setupconference/AddtoConference
Precondition: same as above usecase
Action
|
TAPI Messages
|
TAPI Structures
|
LineInitializeEx
|
Lines are Enumerated
|
|
Open all Lines (A, A', A'' and C)
LineOpen() with ExtVer- 0x000C0000
|
LineOpen() returns Success
|
|
Make Call between C and A1[Remote Destinaton], either normal incoming or DVO call on CTI Remote Device
Call Info is same above test cases
|
Setup Conference and Dial D
LineSetupConference() on the call [C ' A1] on Device A
LineDial() on Consult call with DN - D
|
LineSetupConference returns success
Original Call on CTI Remote Device[A] :
LINE_CALSTATE = CONFERENCE
Conference Parent Call on CTI Remote Device[A] :
LINE_APPNEWCALL
LINE_CALLSTATE - Param1 = OnholdPendingConference
Consult Call on CTI Remote Device[A] :
LINE_CALLSTATE - Param1 = DIALTONE
LINE_CALLSTATE - Param1 = DIALING
Calls on Enterprise Phone[B] :
Call1 [C ' A]:
LINE_CALLSTATE -
Param1 = CONNECTED
Param2 = 0x02 (Inactive)
Call1 [A ' D]:
LINE_CALLSTATE -
Param1 = CONNECTED
Param2 = 0x02 (Inactive)
Consult Call on CTI Remote Device[A] :
LINE_CALLSTATE - Param1 = PROCEEDING
LINE_CALLSTATE - Param1 = RINGBACK
|
|
Answer the Call on Device D
Remote Destination and D will be talking/ will have Media connection
|
Secondary Call on CTI Remote Device:
Call1 [A ' D]:
LINE_CALLSTATE - Param1 = CONNECTED
LINE_CALLSTATE - Param1 = IDLE
|
|
Complete Conference on the Primary Call[C ' A]with [A ' D ] call as consult call
LineAddtoConference() on the call [c ' A1] on Device A
All 3 parties C, D and CTI Remote Device[Remote Destination] will be in Conference
|
Call model on CTI Remote Device :
[C ' A1]-[ Original Call1]-[ state = Conference]
[A1 ' Conference]-[ Conference Parent Call]-[State = CONNECTED]
[A1 ' D]-[Consult Call]-[state - CONFERENCE]
Call Model on Enterprise Phone:
Same as CTI Remote Device, all calls are RIU Calls
|
|
Variation :
Test the same with CSF Device in Extend Mode
|
Expected result would be same as observed on CTI Remote Device
|
|
Join on same Line
Precondition: same as above usecase
Action
|
TAPI Messages
|
TAPI Structures
|
LineInitializeEx
|
Lines are Enumerated
|
|
Open all Lines (A, A', A'' and C)
LineOpen() with ExtVer- 0x000C0000
|
LineOpen() returns Success
|
|
Make Call between C and A1[Remote Destinaton], either normal incoming or DVO call on CTI Remote Device
Call Info is same above test cases
|
Make Call between D and A1
Call Info is same above Multiple Call across lines test case
|
Join on the Primary Call[C ' A1]with [A1 ' D ] call as consult call
CCiscoLineDevSpecificJoin() on the call [c ' A1] on Device A with CallIDstoJoin = CallID of Call [D ' A1]
CTIRemoteDevice [A - Remote Destination], D and C will be in Conference.
|
Original Call on CTI Remote Device[A] [C ' A1]:
LINE_CALSTATE = CONFERENCE
Conference Parent Call on CTI Remote Device[A] :
LINE_APPNEWCALL
LINE_CALLSTATE - Param1 = CONNECTED
Consult Call on CTI Remote Device[A] [D ' A1]:
LINE_CALLSTATE - Param1 = CONFERENCE
Conference Model will be created on CTI Remote Device and RIU Conference Model on EP
|
|
Variation :
Test the same with CSF Device in Extend Mode
|
Expected result would be same as observed on CTI Remote Device
|
|
Direct Transfer/Join across Line on CTI Remote Device
Precondition: same as above usecase
Action
|
TAPI Messages
|
TAPI Structures
|
LineInitializeEx
|
Lines are Enumerated
|
|
Open all Lines (A, A', A'' and C)
LineOpen() with ExtVer- 0x000C0000
|
LineOpen() returns Success
|
|
Make Call between C and A1[Remote Destinaton], either normal incoming or DVO call on CTI Remote Device
Call Info is same above test cases
|
Make Call between D and A2
Call Info is same above Multiple Call across lines test case
|
Join on the Primary Call[C ' A1]with [A2 ' D ] call as consult call
CCiscoLineDevSpecificJoin() on the call [c ' A1] on Device A with CallIDstoJoin = CallID of Call [D ' A2]
Or
CciscoLineDevSpecificDirectTransfer on the call [c ' A1] on Device A with ConsultCallID = CallID of [D ' A2]
Direct Transfer / Join Across Line is not supported on CTI Remote Device
|
Line_Reply with error = LINEERR_OPERATIONUNAVAIL
|
|
Variation:
On any unsupported Feature Request
For Example ...
CallAcceptRequest
CallAnswerRequest
CallParkRequest
LineCallUnParkRequest
|
LINEERR_OPERATIONUNAVAIL
Or PHONEERR_OPERATIONUNAVAIL
Depending on the Line/Phone API request.
|
|
Variation :
Test the same with CSF Device in Extend Mode
|
Expected result would be same as observed on CTI Remote Device
|
|
Cbarge
Precondition: same as above usecase
Action
|
TAPI Messages
|
TAPI Structures
|
LineInitializeEx
|
Lines are Enumerated
|
|
Open all Lines (A, A', A'' and C)
LineOpen() with ExtVer- 0x000C0000
|
LineOpen() returns Success
|
|
Make Call between C and A1[Remote Destinaton], either normal incoming or DVO call on CTI Remote Device
Call Info is same above test cases
|
cBarge from CTI Remote Device is not supported as CTI Remote Device is a Static virtual Device.
cBarge from EP [Enterprise phone]
*** cBarge will be successful and CTIRemote Device, EP and Caller will be in Conference.
*** as CTI Remote Device doesn't report RIU calls, there won't be RIU Conference created on CTI Remote Device reflecting Active Conference Call on EP
|
Conference Call model on CTI Remote Device :
[C ' A1]-[ Original Call1]-[ state = Conference]
[A1 ' Conference]-[ Conference Parent Call]-[State = CONNECTED]
[A1 ' A1(EP)]-[Consult Call]-[state - CONFERENCE]
Call Model on Enterprise Phone:
Active Conference Calls:
[C ' A1(CTIRD)]-[ Original Call1]-[ state = Conference]
[A1(EP) ' Conference]-[ Conference Parent Call]-[State = CONNECTED]
[A1(EP) ' A1(CTIRD)]-[Consult Call]-[state - CONFERENCE]
RIU Conference Calls:
[C ' A1]-[ Original Call1]-[ state = Conference]
[A1 ' Conference]-[ Conference Parent Call]-[State = CONNECTED]
[A1 ' A1(EP)]-[Consult Call]-[state - CONFERENCE]
|
|
Variation:
Barge Operation on Enterprise Phone
|
Barge Operation will fail as CTI Remote Devices doesn't have BIB.
|
|
Variation :
Test the same with CSF Device in Extend Mode
|
Expected result would be same as observed on CTI Remote Device
|
|
URI Dialing - Basic Incoming Call to CTI Remote Device
Precondition: InAddition to configuration from previous usecases
CTI Remote Device:
Line:
Line-A (DN - 2000) (URI Configured - drajesh@cisco.com)
C (IP Phone - Name: SEPxxxxxxxx)
Line:
Line-C - DN - 1000(URI configured - 1000@cisco.com)
D (IP Phone - Name: SEPxxxxxxxx)
Line:
Line-D - DN - 1001(URI configured - 1001@cisco.com)
Action
|
TAPI Messages
|
TAPI Structures
|
LineInitializeEx
|
Lines are Enumerated
|
|
Open all Lines (A, A' and C)
LineOpen() with ExtVer- 0x000C0000
|
LineOpen() returns Success
|
|
LineMakeCall on Line-C with URI of CTI Remote Device (DestinationAddress - drajesh@cisco.com)
|
LineMakeCall() success
Call on C :
LINE_CALLSTATE - Param1 = DIALING
LINE_CALLSTATE - Param1 = PROCEEDING
LINE_CALLSTATE - Param1 = RINGBACK
Call on CTI Remote Device :
LINE_APPNEWCALL
LINE_CALLSTATE - Param1 = OFFERING
LINE_CALLSTATE - Param1 = ACCEPTED
Call on Enterprise Phone :
LINE_APPNEWCALL
LINE_CALLSTATE - Param1 = OFFERING
LINE_CALLSTATE - Param1 = ACCEPTED
|
|
After "Delay Before Ringing Timer" expires the call is offered on Remote Destinations and all Remote Destinations Ring
|
LineGetCallInfo() on call on Device C
|
LineGetCallInfo() success
|
LineCallInfo ::
dwCallerID = 1000
dwCallerIDName = 1000name
dwCalledID = 2000
dwCalledIDName = 2000name
DevSpecific ::
UnicodeCallerPartyName = 1000name
UnicodeCalledPartyName = 2000name
UnicodeConnectedPartyName =
SIP URI Info:
Caller :
[User | Host | Port | TransportType | URI Type] = [100 | Cisco.com | 0x0 | 0x0 | 0x1]
Called :
[User | Host | Port | TransportType | URI Type] = [drajesh | Cisco.com | 0x0 | 0x0 | 0x1]
Connected : Empty
ModifiedCallingParty = 1000
ModifiedCalledParty = 2000
ModifiedConnectedID =
|
LineGetCallInfo() on call on Device A/B
|
LineGetCallInfo() success
|
LineCallInfo ::
dwCallerID = 1000
dwCallerIDName = 1000name
dwCalledID = 2000
dwCalledIDName = 2000name
DevSpecific ::
UnicodeCallerPartyName = 1000name
UnicodeCalledPartyName = 2000name
UnicodeConnectedPartyName =
SIP URI Info:
Caller :
[User | Host | Port | TransportType | URI Type] = [100 | Cisco.com | 0x0 | 0x0 | 0x1]
Called :
[User | Host | Port | TransportType | URI Type] = [drajesh | Cisco.com | 0x0 | 0x0 | 0x1]
Connected : Empty
ModifiedCallingParty = 1000
ModifiedCalledParty = 2000
ModifiedConnectedID =
|
Answer on any of the Remote Destination
|
Call on C :
LINE_CALLSTATE - Param1 = CONNECTED
Call on CTI Remote Device :
LINE_CALLSTATE - Param1 = CONNECTED (active)
Call on Enterprise Phone :
LINE_CALLSTATE -
Param1 = CONNECTED
Param2 = 0x02 (Inactive)
|
|
LineGetCallInfo() on call on Device C
|
LineGetCallInfo() success
|
LineCallInfo ::
dwCallerID = 1000
dwCallerIDName = 1000name
dwCalledID = 2000
dwCalledIDName = 2000name
dwConnectedID = 2000
dwConnectedIDName = CTIRD-2000name
DevSpecific ::
UnicodeCallerPartyName = 1000name
UnicodeCalledPartyName = 2000name
UnicodeConnectedPartyName = CTIRD-2000name
SIP URI Info:
Caller :
[User | Host | Port | TransportType | URI Type] = [100 | Cisco.com | 0x0 | 0x0 | 0x1]
Called :
[User | Host | Port | TransportType | URI Type] = [drajesh | Cisco.com | 0x0 | 0x0 | 0x1]
Connected :
[User | Host | Port | TransportType | URI Type] = [drajesh | Cisco.com | 0x0 | 0x0 | 0x1]
ModifiedCallingParty = 1000
ModifiedCalledParty = 2000
ModifiedConnectedID = 2000
|
LineGetCallInfo() on call on Device A/B
|
LineGetCallInfo() success
|
LineCallInfo ::
dwCallerID = 1000
dwCallerIDName = 1000name
dwCalledID = 2000
dwCalledIDName = 2000name
dwConnectedID = 2000
dwConnectedIDName = CTIRD-2000name
DevSpecific ::
UnicodeCallerPartyName = 1000name
UnicodeCalledPartyName = 2000name
UnicodeConnectedPartyName = CTIRD-2000name
SIP URI Info:
Caller :
[User | Host | Port | TransportType | URI Type] = [100 | Cisco.com | 0x0 | 0x0 | 0x1]
Called :
[User | Host | Port | TransportType | URI Type] = [drajesh | Cisco.com | 0x0 | 0x0 | 0x1]
Connected :
[User | Host | Port | TransportType | URI Type] = [100 | Cisco.com | 0x0 | 0x0 | 0x1]
ModifiedCallingParty = 1000
ModifiedCalledParty = 2000
ModifiedConnectedID = 2000
|
LineDrop() for the call on Device A (CTI-RD)
Call on Remote Destination is dropped
|
LineDrop() success
Call on C :
LINE_CALLSTATE - Param1 = DISCONNECTED
LINE_CALLSTATE - Param1 = IDLE
Call on CTI Remote Device :
LINE_CALLSTATE - Param1 = DISCONNECTED
LINE_CALLSTATE - Param1 = IDLE
Call on Enterprise Phone :
LINE_CALLSTATE -
Param1 = CONNECTED
Param2 = 0x02 (Inactive)
LINE_CALLSTATE - Param1 = IDLE
|
|
Variation :
Answer the call on Enterprise Phone (B)
LineAnswer() on the call on Device B
Call on Remote Device/Remote Destination drops
|
Call on C :
LINE_CALLSTATE - Param1 = CONNECTED
Call on CTI Remote Device :
LINE_CALLSTATE - Param1 = DISCONNECTED
LINE_CALLSTATE - Param1 = IDLE
Call on Enterprise Phone :
LINE_CALLSTATE -
Param1 = CONNECTED
|
|
URI Dialing - DVO Call (Outgoing Call initiation from CTI Remote Device)
Precondition: same as above usecase
Action
|
TAPI Messages
|
TAPI Structures
|
LineInitializeEx
|
Lines are Enumerated
|
|
Open all Lines (A, A' and C)
LineOpen() with ExtVer- 0x000C0000
|
LineOpen() returns Success
|
|
LineMakeCall on Line-A with DN (C - DN 1000)
|
LineMakeCall() returns RequestID
LINE_REPLY
Param1 = RequestID
Param2 = LINEERR_OPERATION_FAIL_NO_ACTIVE_RD_SET (0xC0000016)
|
|
Update Remote Destination RD1 "Mobile"on CTI Remote Device A with IsActive set to true
CciscoLineDevSpecificUpdateRemoteDestination Req
m_RDNumber = "914086271309"
m_UnicodeRDName = "Mobile"
m_NewRDNumber = "914086271309"
m_activeRD = 0x00000001
|
EVENT = LINE_DEVSPECIFIC
dwParam1 = SLDSMT_LINE_PROPERTY_CHANGED
dwParam2 = LPCT_REMOTE_DESTINATION_INFO (0x00004000)
|
|
LineGetDevCaps() with dwDeviceID = LineDeviceId of Line-A.
|
LineGetDevCaps() returns success
|
LINEDEVCAPS::DevSpecific
dwLineTypes = (0x00000000)
DeviceProtocolType =
DeviceProtocolType_CTI_REMOTE_DEVICE (0x03)
Remote Destination Info:
unicodeRDName = "Mobile"
RDNumber = "4086271309"
isActiveRD = 0x00000001
unicodeRDName = "Office"
RDNumber = "4089022131"
isActiveRD = 0x00000000
IsMyAppLastToSetActiveRD = 0x00000001
|
LineMakeCall on Line-A with URI of C (DestinationAddress - 1000@cisco.com)
*** Only Remote Destination "Mobile" rings and it rings immediately as the RD is set Active
*** No Call presented on EP
|
LineMakeCall() success
Call on CTI Remote Device :
LINE_CALLSTATE - Param1 = OFFERING
|
|
Answer the first Call on CTI Remote Device:
Answer() on the call on CTIRemote Device(A)
|
LineAnswer() fail with Error LINEEE_OPERATIONUNAVAIL
|
|
LineGetCallInfo() on call on Device A(CTIRD)
|
LineGetCallInfo() success
|
LineCallInfo ::
dwCallerID = 2000
dwCallerIDName = voiceConnect
dwCalledID = 2000
dwCalledIDName = 2000name
DevSpecific ::
UnicodeCallerPartyName =
UnicodeCalledPartyName = 2000name
UnicodeConnectedPartyName =
SIP URI Info:
Caller :
[User | Host | Port | TransportType | URI Type] = empty
Called :
[User | Host | Port | TransportType | URI Type] = [drajesh | Cisco.com | 0x0 | 0x0 | 0x1]
Connected :
[User | Host | Port | TransportType | URI Type] = empty
ModifiedCallingParty = 2000
ModifiedCalledParty = 2000
ModifiedConnectedID =
|
Once Remote Destination answers the call, call will be offered on initial dialed number C
Call will be present on Enterprise Phone and call will be Remote In Use Call
|
Call on C :
LINE_CALLSTATE - Param1 = OFFERING
LINE_CALLSTATE - Param1 = ACCEPTED
Call on CTI Remote Device :
LINE_CALLSTATE - Param1 = CONNECTED
LINE_CALLSTATE - Param1 = RINGBACK
Call on Enterprise Phone :
LINE_APPNEWCALL
LINE_CALLSTATE - Param1 = ACCEPTED
LINE_CALLSTATE -
Param1 = CONNECTED
Param2 = 0x02 (Inactive)
|
|
C answers the call
LineAnswer() on call on Device- C
|
LineAnswer() success
Call on C :
LINE_CALLSTATE - Param1 = CONNECTED
Call on CTI Remote Device :
LINE_CALLSTATE - Param1 = CONNECTED (active)
Call on Enterprise Phone :
LINE_CALLSTATE -
Param1 = CONNECTED
Param2 = 0x02 (Inactive)
|
|
LineGetCallInfo() on call on Device C
|
LineGetCallInfo() success
|
LineCallInfo ::
CallReason = UNKNOWN (0x400)
dwCallerID = 2000
dwCallerIDName = 2000name
dwCalledID = 1000
dwCalledIDName = 1000name
dwConnectedID = 2000
dwConnectedIDName = CTIRD-2000name
DevSpecific ::
ExtendedCallReason = CtiReasonMobility(0x021 = 33)
UnicodeCallerPartyName = 2000name
UnicodeCalledPartyName = 1000name
UnicodeConnectedPartyName = 2000name
SIP URI Info:
Caller :
[User | Host | Port | TransportType | URI Type] = [drajesh | Cisco.com | 0x0 | 0x0 | 0x1]
Called :
[User | Host | Port | TransportType | URI Type] = [100 | Cisco.com | 0x0 | 0x0 | 0x1]
Connected :
[User | Host | Port | TransportType | URI Type] = [drajesh | Cisco.com | 0x0 | 0x0 | 0x1]
ModifiedCallingParty = 2000
ModifiedCalledParty = 1000
ModifiedConnectedID = 2000
|
LineGetCallInfo() on call on Device A/B
|
LineGetCallInfo() success
|
LineCallInfo ::
dwCallerID = 2000
dwCallerIDName = 2000name
dwCalledID = 2000
dwCalledIDName = 2000name
dwConnectedID = 1000
dwConnectedIDName = 1000name
DevSpecific ::
CallAttributeType = TSPCallAttribute_DVOCall (0x00002000)
UnicodeCallerPartyName = 2000name
UnicodeCalledPartyName = 2000name
UnicodeConnectedPartyName = 1000name
SIP URI Info:
Caller :
[User | Host | Port | TransportType | URI Type] = [drajesh | Cisco.com | 0x0 | 0x0 | 0x1]
Called :
[User | Host | Port | TransportType | URI Type] = [drajesh | Cisco.com | 0x0 | 0x0 | 0x1]
Connected :
[User | Host | Port | TransportType | URI Type] = [1000 | Cisco.com | 0x0 | 0x0 | 0x1]
ModifiedCallingParty = 2000
ModifiedCalledParty = 2000
ModifiedConnectedID = 1000
|
LineDrop() for the call on Device A (CTI-RD)
|
LineDrop() success
Call on C :
LINE_CALLSTATE - Param1 = DISCONNECTED
LINE_CALLSTATE - Param1 = IDLE
Call on CTI Remote Device :
LINE_CALLSTATE - Param1 = DISCONNECTED
LINE_CALLSTATE - Param1 = IDLE
Call on Enterprise Phone :
LINE_CALLSTATE -
Param1 = CONNECTED
Param2 = 0x02 (Inactive)
LINE_CALLSTATE - Param1 = IDLE
|
|
Variation :
Test the same with CSF Device in Extend Mode
|
Expected result would be same as observed on CTI Remote Device
|
|
Direct Transfer Across Lines
Use cases related to Direct Transfer Across Lines feature are mentioned below:
Note
The device mentioned in the use cases also apply to SCCP device and SIP TNP phones when Direct Transfer is issued from application.
Direct Transfer across Lines on RoundTable Phones via Application
Device A, B, and C where B is roundtable phone and has line B1 and B2 configured.
Action
|
Expected Events
|
A ‡B1 is connected,
C ‡B2 is on hold
|
For A:
LINE_CALLSTATE
param1=x100, CONNECTED
Caller = A, Called = B1 Connected B1
For B1:
LINE_CALLSTATE
param1=x100, CONNECTED
Caller = A, Called = B1, Connected = A
For B2:
LINE_CALLSTATE
param1=x100, HOLD
Caller = C, Called = B2 , Connected = C
For C:
LINE_CALLSTATE
param1=x100, CONNECTED
Caller = C, Called = B2, Connected = B2
|
Application sends CciscoLineDevSpecificDirectTransfer on B1 with B2 as consult call
|
For A:
LINE_CALLSTATE
param1=x100, CONNECTED
Caller = A, Called = B1 Connected C
For B1:
Call goes IDLE
For B2:
Call goes IDLE
For C:
LINE_CALLSTATE
param1=x100, CONNECTED
Caller = C, Called = B2, Connected = A
|
Direct Transfer on Same Line on RoundTable Phones via Application
Device A, B, C where B is roundtable phone .
Action
|
Expected Events
|
A ‡ B (c1) is connected,
C ‡ B (c2) is on hold
|
For A:
LINE_CALLSTATE
param1=x100, CONNECTED
Caller = A, Called = B Connected B
For B:
Call-1
LINE_CALLSTATE
param1=x100, CONNECTED
Caller = A, Called = B, Connected = A
Call-2
LINE_CALLSTATE
param1=x100, HOLD
Caller = C, Called = B, Connected = C
For C:
LINE_CALLSTATE
param1=x100, CONNECTED
Caller = C, Called = B, Connected = B
|
Application sends CciscoLineDevSpecificDirectTransfer on B (c1) with c2 as consult call
|
For A:
LINE_CALLSTATE
param1=x100, CONNECTED
Caller = A, Called = B Connected C
For B:
Call-1 and Call-2 will go IDLE
For C:
LINE_CALLSTATE
param1=x100, CONNECTED
Caller = C, Called = B, Connected = A
|
Direct Transfer Across Lines on RoundTable Phones via Application with call in Offering State
Device A, B, C where B is roundtable phone and has line B1 and B2 configured .
Action
|
Expected Events
|
A (c1) ‡ B1(c2) is on hold,
B2 (c3) ‡ C (c4) is ringing
|
For A:
LINE_CALLSTATE
param1=x100, CONNECTED
Caller = A, Called = B1 Connected B1
For B1:
LINE_CALLSTATE
param1=x100, HOLD
Caller = A, Called = B1, Connected = A
For B2:
LINE_CALLSTATE
param1=x100, RINGBACK
Caller = B2, Called = C
For C:
LINE_CALLSTATE
param1=x100, OFFERING
Caller = B2, Called = C
|
Application sends CciscoLineDevSpecificDirectTransfer on B1 (c2) with B2 (c3) as consult call
|
For A:
LINE_CALLSTATE
param1=x100, CONNECTED
Caller = A, Called = B Connected C
For B1:
Call goES IDLE
For B2:
Call goes IDLE
For C:
LINE_CALLSTATE
param1=x100, OFFERING
Caller = C, Called = B,
|
Failure of Direct Transfer Calls Across Lines
Device A, B, C where B is roundtable phone and has line B1 and B2 configured .
Action
|
Expected Events
|
A (c1) ‡ B1(c2) is on hold,
Initiate new call (c3) on B2
|
For A:
LINE_CALLSTATE
param1=x100, CONNECTED
Caller = A, Called = B1 Connected B1
For B1:
LINE_CALLSTATE
param1=x100, HOLD
Caller = A, Called = B1, Connected = A
For B2:
LINE_CALLSTATE
param1=x100, DIALTONE
|
Application sends CciscoLineDevSpecificDirectTransfer on B1 (c2) with B2 (c3) as consult call
|
CciscoLineDevSpecificDirectTransfer gets error as LINEERR_INVALCALLSTATE.
|
Direct Transfer Calls Across Lines in Conference Scenario
Device A, B, C, D and E where C is roundtable phone and has line C1 and C2 configured .
Action
|
Expected Events
|
A/B/C1 in conference, B is controller, call on C1 is in hold state.
C2 /D/E in conference, D is controller, call on C2 is in connect state.
|
For A:
CONNECTED
CONFERENCED
Caller = A, called = B, connected = B
CONFERENCED
Caller = A, called = C1, connected = C1
|
For B:
CONNECTED
CONFERENCED
Caller = A, called = B, connected = B
CONFERENCED
Caller = B, called = C1, connected = C1
|
For C1:
ONHOLD
CONFERENCED
Caller = B, called = C1, connected = B
CONFERENCED
Caller = C1, called = A, connected = A
|
For C2:
CONNECTED
CONFERENCED
Caller = C2, called = D, connected = D
CONFERENCED
Caller = C2, called = E, connected = E
|
For D:
CONNECTED
CONFERENCED
Caller = D, called = C1, connected = C1
CONFERENCED
Caller = D, called = E, connected = E
|
| |
For E:
CONNECTED
CONFERENCED
Caller = D, called = E, connected = D
CONFERENCED
Caller = E, called = C2, connected = C2
|
Application sends CciscoLineDevSpecificDirectTransfer on C1 with C2-call as consult call
|
CciscoLineDevSpecificDirectTransfer will succeed.
For A:
CONNECTED
CONFERENCED
Caller = A, called = B, connected = B
CONFERENCED
Caller = A, called = CB-2, connected = CB-2
For B:
CONNECTED
CONFERENCED
Caller = A, called = B, connected = B
CONFERENCED
Caller = B, called = CB-2, connected = CB-2
For C1:
IDLE
For C2:
IDLE
For D:
CONNECTED
CONFERENCED
Caller = D, called = CB-1, connected = CB-1
CONFERENCED
Caller = D, called = E, connected = E
For E:
CONNECTED
CONFERENCED
Caller = D, called = E, connected = D
CONFERENCED
Caller = E, called = CB-1, connected = CB-1
|
Connect Transfer Across Lines on RoundTable Phones
Device A, B, C where B is roundtable phone and has line B1 and B2 configured .
Action
|
Expected Events
|
A ‡ B1 is connected,
C ‡ B2 is on hold
|
For A:
LINE_CALLSTATE
param1=x100, CONNECTED
Caller = A, Called = B1 Connected B1
For B1:
LINE_CALLSTATE
param1=x100, CONNECTED
Caller = A, Called = B1, Connected = A
For B2:
LINE_CALLSTATE
param1=x100, HOLD
Caller = C, Called = B2, Connected = C
For C:
LINE_CALLSTATE
param1=x100, CONNECTED
Caller = C, Called = B2, Connected = B2
|
User performs connect transfer on B.
|
For A:
LINE_CALLSTATE
param1=x100, CONNECTED
Caller = A, Called = B1 Connected C
For B1:
Call goes IDLE
For B2:
Call goes IDLE
For C:
LINE_CALLSTATE
param1=x100, CONNECTED
Caller = C, Called = B2, Connected = A
|
Do Not Disturb-Reject
Application Enables DND-R on a Phone
Action
|
TAPI Messages
|
TAPI Structures
|
Phone A enables DND-Reject in the admin pages
|
LINE_CALLDEVSPECIFIC hDevice=C dwCallbackInstance=0 dwParam1= SLDSMT_LINECALLINFO_DEVSPECIFICDATA dwParam2=SLDST_DND_OPTION_STATUS dwParam3=2
|
|
Normal Feature Priority
Action
|
TAPI Messages
|
TAPI Structures
|
With Phone B DND-R enabled, Phone A calls Phone B with feature priority as Normal
|
Party A
|
|
LINE_CALLSTATE = IDLE
|
|
Party B
|
No TAPI messages
|
|
Feature Priority - Emergency
Action
|
TAPI Messages
|
TAPI Structures
|
With Phone B DND-R enabled, Phone A calls Phone B with feature priority as Emergency
|
Party A
|
LINE_CALLSTATE = CONNECTED
dwParam1 = 0x00000100
dwParam2 = 0x00000001
|
LINECALLINFO (hCall-1) hLine=C dwCallID=T2 dwOrigin=INTERNAL dwCallerID=A dwCalledID=B dwRedirectionID=NP dwRedirectingID=NP
|
Party B
|
LINE_CALLSTATE = CONNECTED
dwParam1 = 0x00000100
dwParam2 = 0x00000001
|
LINECALLINFO (hCall-1) hLine=C dwCallID=T2 dwOrigin=INTERNAL dwCallerID=A dwCalledID=B dwRedirectionID=NP dwRedirectingID=NP
|
Shared Line Scenario for DND-R
Action
|
TAPI Messages
|
TAPI Structures
|
Phones B and B' represents shared lines. Phone B' is DND-R enabled but not B. Phone A calls Phone B with feature priority normal
|
Party A
|
LINE_CALLSTATE = CONNECTED
dwParam1 = 0x00000100
dwParam2 = 0x00000001
|
LINECALLINFO (hCall-1) hLine=C dwCallID=T2 dwOrigin=INTERNAL dwCallerID=A dwCalledID=B dwRedirectionID=NP dwRedirectingID=NP
|
Party B
|
LINE_CALLSTATE = CONNECTED
dwParam1 = 0x00000100
dwParam2 = 0x00000001
|
LINECALLINFO (hCall-1) hLine=C dwCallID=T2 dwOrigin=INTERNAL dwCallerID=A dwCalledID=B dwRedirectionID=NP dwRedirectingID=NP
|
Party B'
|
|
LINE_CALLSTATE = CONNECTED
dwParam1 = 0x00000100
dwParam2 = 0x00000002
|
|
Application Disables DND-R or Changes the Option for DND
Action
|
TAPI Messages
|
TAPI Structures
|
Phone A changes from DND-Reject to DND-RingerOff.
|
LINE_CALLDEVSPECIFIC hDevice=C dwCallbackInstance=0 dwParam1= SLDSMT_LINECALLINFO_DEVSPECIFICDATA dwParam2=SLDST_DND_OPTION_STATUS dwParam3=1
|
|
Drop Any Party
Use cases related to Drop Any Party feature are mentioned below:
Conference: Unified CM Service Parameter Advanced Ad Hoc Conference Enabled = False.
Action
|
Expected Events
|
A,B,C and D are in conference; B is conference Controller.
|
Conference Model:
Each line in conference will be having 4 callLegs, 3 conferenced and 1 connected
|
CallLegs on A:
Connected - to Conference Bridge
Conferenced - (Connected Id - B)
Conferenced - (Connected Id - C)
Conferenced - (Connected Id - D)
|
CallLegs on B:
Connected - to Conference Bridge
Conferenced - (Connected Id - A)
Conferenced - (Connected Id - C)
Conferenced - (Connected Id - D)
|
CallLegs on C:
Connected - to Conference Bridge
Conferenced - (Connected Id - A)
Conferenced - (Connected Id - B)
Conferenced - (Connected Id - D)
|
CallLegs on D:
Connected - to Conference Bridge
Conferenced - (Connected Id - A)
Conferenced - (Connected Id - B)
Conferenced - (Connected Id - C)
|
Application does a LineOpen (B) with new Ext ver.
|
|
1. Application does LineRemoveFromConference on the `Conferenced' callLeg on B which is connected to A.
|
A is dropped out of conference.
CallLegs after the Party is dropped from Conference:
Each line in conference will be having 4 callLegs, 2 Conferenced,1 IDLE and 1 connected
|
CallLegs on A:
All 4 CallLegs will be in IDLE state
|
CallLegs on B:
Connected - to Conference Bridge
Conferenced - (Connected Id - C)
Conferenced - (Connected Id - D)
IDLE - ( on the conferenced callLeg which was connected to A)
|
CallLegs on C:
Connected - to Conference Bridge
IDLE - ( on the conferenced callLeg which was connected to A)
Conferenced - (Connected Id - B)
Conferenced - (Connected Id - D)
|
CallLegs on D:
Connected - to Conference Bridge
IDLE - ( on the conferenced callLeg which was connected to A)
Conferenced - (Connected Id - B)
Conferenced - (Connected Id - C)
Note All IDLE CallLegs will have CallStateChange Reason as CtiDropConferee.
|
Application does a LineOpen (A) with new Ext ver.
|
|
2. Application does LineRemoveFromConference on the `Conferenced' callLeg on A which is connected to B.
|
Error Message LINEERR_OPERATIONUNAVAIL will be sent to application
|
Conference - Unified CM Service Parameter Advanced Ad Hoc Conference Enabled = True'
Action
|
Expected Events
|
A,B,C and D are in conference; B is conference Controller.
|
Conference Model:
Each line in conference will be having 4 callLegs, 3 conferenced and 1 connected
|
CallLegs on A:
Connected - to Conference Bridge
Conferenced - (Connected Id - B)
Conferenced - (Connected Id - C)
Conferenced - (Connected Id - D)
|
CallLegs on B:
Connected - to Conference Bridge
Conferenced - (Connected Id - A)
Conferenced - (Connected Id - C)
Conferenced - (Connected Id - D)
|
CallLegs on C:
Connected - to Conference Bridge
Conferenced - (Connected Id - A)
Conferenced - (Connected Id - B)
Conferenced - (Connected Id - D)
|
CallLegs on D:
Connected - to Conference Bridge
Conferenced - (Connected Id - A)
Conferenced - (Connected Id - B)
Conferenced - (Connected Id - C)
|
Application does a LineOpen (A) with new Ext ver.
Application does LineRemoveFromConference on the `Conferenced' callLeg on A which is connected to B.
|
|
1. Drop Ad Hoc Conference = Never
|
B is dropped out of conference.
CallLegs after the Party is dropped from Conference:
Each line in conference will be having 4 callLegs, 2 Conferenced,1 IDLE and 1 connected
|
CallLegs on B:
All 4 CallLegs will be in IDLE state
|
CallLegs on A:
Connected - to Conference Bridge
Conferenced - (Connected Id - C)
Conferenced - (Connected Id - D)
IDLE - ( on the conferenced callLeg which was connected to B)
|
CallLegs on C:
Connected - to Conference Bridge
IDLE - ( on the conferenced callLeg which was connected to B)
Conferenced - (Connected Id - A)
Conferenced - (Connected Id - D)
|
CallLegs on D:
Connected - to Conference Bridge
IDLE - ( on the conferenced callLeg which was connected to B)
Conferenced - (Connected Id - A)
Conferenced - (Connected Id - C)
Note All IDLE CallLegs will have CallStateChange Reason as CtiDropConferee.
|
2. Drop Ad Hoc Conference = `When Conference Controller Leaves'
|
B is dropped out of conference and Conference will be ended.
CallLegs after the Party is dropped from Conference:
Each line in conference will be having 4 callLegs, all in IDLE state
CallLegs on A,B,C and D:
All 4 CallLegs will be in IDLE state
|
Shared Line-Scenario
Action
|
Expected Events
|
A,B,C and A' are in conference; A is conference Controller
Unified CM Parameter "Drop Ad Hoc Conference = Never"
|
Conference Model:
Lines B and C in conference will be having 4 callLegs, 3 conferenced and 1 connected
Lines A and A' will be having 8 CallLegs
|
CallLegs on A:
Connected - to Conference Bridge (Active)
Conferenced - (caller Id - A ;Called Id - B; Connected Id - B) (Active)
Conferenced - (caller Id - A ;Called Id - C; Connected Id - C) (Active)
Conferenced - (caller Id - A ;Called Id - A' ; Connected Id - A') (Active)
Connected - to Conference Bridge (Remote in Use)
Conferenced - (caller Id - A' ;Called Id - B; Connected Id - B) (Remote in Use)
Conferenced - (caller Id - A' ;Called Id - C; Connected Id - C) (Remote in Use)
Conferenced - (caller Id - A' ;Called Id - A; Connected Id - A) (Remote in Use)
|
CallLegs on A':
Connected - to Conference Bridge (Active)
Conferenced - (caller Id - A' ;Called Id - B; Connected Id - B) (Active)
Conferenced - (caller Id - A' ;Called Id - C; Connected Id - C) (Active)
Conferenced - (caller Id - A' ;Called Id - A; Connected Id - A) (Active)
Connected - to Conference Bridge (Remote in Use)
Conferenced - (caller Id - A ;Called Id - B; Connected Id - B) (Remote in Use)
Conferenced - (caller Id - A ;Called Id - C; Connected Id - C) (Remote in Use)
Conferenced - (caller Id - A ;Called Id - A'; Connected Id - A') (Remote in Use)
|
| |
CallLegs on B:
Connected - to Conference Bridge
Conferenced - (caller Id - B ;Called Id - A; Connected Id - A)
Conferenced - (caller Id - B ;Called Id - C; Connected Id - C)
Conferenced - (caller Id - B ;Called Id - A'; Connected Id - A')
|
CallLegs on C:
Connected - to Conference Bridge
Conferenced - (caller Id - C ;Called Id - A; Connected Id - A)
Conferenced - (caller Id - C ;Called Id - B; Connected Id - B)
Conferenced - (caller Id - C ;Called Id - A' ; Connected Id - A')
|
Application does a LineOpen (A) with new Ext ver.
Unified CM Parameter `Advanced Ad Hoc Conference Enabled = False'
|
|
1. Application does LineRemoveFromConference on the `Conferenced' CallLeg on A which is connected to B and mode is "Inactive or Remote In use".
|
Error LINEERR_INVALCALLSTATE is sent to application.
|
2. Application does LineRemoveFromConference on the `Conferenced' CallLeg on A which is connected to B and mode is `Active'.
|
B will be dropped out of conference.
LINECALLSTATE Event will be sent to Application with state = Idle.
|
CallLegs after the Party is dropped from Conference:
CallLegs on A:
Connected - to Conference Bridge (Active)
IDLE - (on the conferenced callLeg which was connected to A - B)
Conferenced - (caller Id - A ;Called Id - C; Connected Id - C) (Active)
Conferenced - (caller Id - A ;Called Id - A'; Connected Id - A') (Active)
Connected - to Conference Bridge (Remote in Use)
IDLE - (on the conferenced callLeg which was connected to A' - B)
Conferenced - (caller Id - A' ;Called Id - C; Connected Id - C) (Remote in Use)
Conferenced - (caller Id - A' ;Called Id - A; Connected Id - A) (Remote in Use)
|
CallLegs on A':
Connected - to Conference Bridge (Active)
IDLE - (on the conferenced callLeg which was connected to A' - B)
Conferenced - (caller Id - A' ;Called Id - C; Connected Id - C) (Active)
Conferenced - (caller Id - A' ;Called Id - A; Connected Id - A) (Active)
Connected - to Conference Bridge (Remote in Use)
IDLE - (on the conferenced callLeg which was connected to A - B)
Conferenced - (caller Id - A ;Called Id - C; Connected Id - C) (Remote in Use)
Conferenced - (caller Id - A ;Called Id - A'; Connected Id - A') (Remote in Use)
|
CallLegs on B:
All 4 CallLegs are in IDLE state
|
| |
CallLegs on C:
Connected - to Conference Bridge
Conferenced - (caller Id - C ;Called Id - A; Connected Id - A)
IDLE - (on the conferenced callLeg which was connected to C - B)
Conferenced - (caller Id - C ;Called Id - A'; Connected Id - A')
|
Application does a LineOpen (B) with new Ext ver. Unified CM Parameter Advanced Ad Hoc Conference Enabled = True
|
|
3. Application does LineRemoveFromConference on the `Conferenced' CallLeg on B which is connected to A and mode is "Active".
|
A will be dropped out of conference.
LINECALLSTATE Event will be sent to Application with state = Idle.
|
CallLegs after the Party is dropped from Conference:
CallLegs on A:
IDLE - (on the Connected callLeg which was connected to Conference Bridge,A- CFB)
IDLE - (on the conferenced callLeg which is connected to A - B)
IDLE - (on the conferenced callLeg which is connected to A - C)
IDLE -(on the conferenced callLeg which is connected to A - A')
Connected - to Conference Bridge (Remote in Use)
Conferenced - (caller Id - A' ;Called Id - C; Connected Id - C) (Remote in Use)
Conferenced - (caller Id - A' ;Called Id - B; Connected Id - B) (Remote in Use)
|
CallLegs on A':
IDLE - (on the Connected callLeg which was connected to Conference Bridge,A - CFB)
IDLE - (on the conferenced callLeg which is connected to A - B)
IDLE - (on the conferenced callLeg which is connected to A - C)
IDLE -(on the conferenced callLeg which is connected to A - A')
Connected - to Conference Bridge
Conferenced - (caller Id - A' ;Called Id - C; Connected Id - C) (Active)
Conferenced - (caller Id - A' ;Called Id - B; Connected Id - B) (Active)
|
CallLegs on B:
Connected - to Conference Bridge
Conferenced - (caller Id - B ;Called Id - A; Connected Id - A')
IDLE - (on the conferenced callLeg which was connected to B - A)
Conferenced - (caller Id - B ;Called Id - C; Connected Id - C)
|
| |
CallLegs on C:
Connected - to Conference Bridge
Conferenced - (caller Id - C ;Called Id - A'; Connected Id - A')
IDLE - (on the conferenced callLeg which was connected to C - A)
Conferenced - (caller Id - C ;Called Id - B; Connected Id - B)
|
Chained Conference
Action
|
Expected Events
|
A,B and CB2 are in conference(CB1); B is conference Controller
C,D and E are in Conference (CB2); D is conference Controller
Unified CM Parameter Advanced Ad Hoc Conference Enabled = True
Application does a LineOpen (A) with new Ext ver.
1. Application does LineRemoveFromConference on the Conferenced" CallLeg on A which is connected to B.
|
B is disconnected and dropped out of Conference.
A is now in conference with CB2.
LINECALLSTATE Event is sent to Application for Line B with state = Idle.
|
C-Barge: Unified CM Service Parameter Advanced Ad Hoc Conference Enabled = True.
Action
|
Expected Events
|
B call A and A';
A answers the call and on A' do c-Barge;
A,B and A' will be in conference; A is conference Controller
Unified CM Parameter "Drop Ad Hoc Conference = Never"
Application does a LineOpen (A) with new Ext ver.
|
|
Application does a LineOpen (A) with new Ext ver.
1. Application does LineRemoveFromConference on the "Conferenced" CallLeg on A which is connected to B and mode is Active
|
B is dropped out of conference.
LINECALLSTATE Event will be sent to Application with state = Idle.
CallLegs after the Party is dropped from Conference:
CallLegs on A:
Connected - (on the conferenced callLeg which was connected to A - A') (Active)
Connected - on the conferenced callLeg which was connected to A' - A) (Remote in Use)
IDLE - (on the conferenced callLeg which was connected to A - B)
IDLE - (on the connected callLeg which is connected to conference Bridge; A - CFB)
IDLE - (on the conferenced callLeg which was connected to A' - B)
IDLE - (on the connected callLeg which is connected to conference Bridge; A' - CFB)
|
CallLegs on A':
Connected - (on the conferenced callLeg which was connected to A' - A) (Active)
Connected - on the conferenced callLeg which was connected to A - A') (Remote in Use)
IDLE - (on the conferenced callLeg which was connected to A - B)
IDLE - (on the connected callLeg which is connected to conference Bridge; A - CFB)
IDLE - (on the conferenced callLeg which was connected to A' - B)
IDLE - (on the connected callLeg which is connected to conference Bridge; A' - CFB)
|
CallLegs on B:
All 4 CallLegs are in IDLE state
A' is dropped out of conference.
LINECALLSTATE Event will be sent to Application with state = Idle.
|
2. Application does LineRemoveFromConference on the Conferenced CallLeg on A which is connected to A' and mode is Active.
|
CallLegs after the Party is dropped from Conference:
CallLegs on A:
Connected -(on the conferenced callLeg which was connected to A - B) (Active)
IDLE -(on the conferenced callLeg which was connected to A' - B) (Remote in Use)
IDLE - (on the conferenced callLeg which was connected to A - A') (active)
IDLE - (on the connected callLeg which is connected to conference Bridge; A - CFB)
IDLE - (on the conferenced callLeg which was connected to A' - A) (Remote in Use)
IDLE - (on the connected callLeg which is connected to conference Bridge; A' - CFB)
|
CallLegs on A':
Connected -(on the conferenced callLeg which was connected to A - B) (Remote in Use)
IDLE -(on the conferenced callLeg which was connected to A' - B)
IDLE - (on the conferenced callLeg which was connected to A - A') (active)
IDLE - (on the connected callLeg which is connected to conference Bridge; A - CFB)
IDLE - (on the conferenced callLeg which was connected to A' - A) (Remote in Use)
IDLE - (on the connected callLeg which is connected to conference Bridge; A' - CFB)
|
CallLegs on B:
Connected -(on the conferenced callLeg which was connected to B - A)
IDLE -(on the conferenced callLeg which was connected to A' - B)
IDLE - (on the connected callLeg which is connected to conference Bridge; B - CFB)
|
Early Offer
The following section describes how the application dynamically registers for various port with Early Offer Support.
Application Dynamically Registers CTI Port with Early Offer Support
Configuration
A - CTI Port in Cluster1
Cluster1 and Cluster2 connected via SIP trunk
SIP trunk Supports Early Offer
Action
|
TSP Message to Application Data
|
lineInitialize
|
Line_reply with Success Lines will be Enumerated to Application.
|
lineOpen() with Extversion - 0x800B0000 for Line A
|
Line_Open successful
|
LineSetStatusMessages() - with dwLinestates - 0xcc
|
LineSetStatusMessages returns Success
|
Application sends lineDevSpecific(CciscoLineDevSpecificEnableFeatureSupport) with m_Feature - 0x00000001, m_Feature_Capability - 0x00000001
|
Line_Reply with Success
|
Application sends lineDevSpecific(CciscoLineDevSpecificPortRegistrationPerCall) with MediaCaps Info
|
Line_Reply with Success LineInserviceEvent reports to Application Line_LineDevState dwParam1 = x040, InService
|
Application sends lineDevSpecific(CCiscoLineDevSpecificSetStatusMsgs) with m_DevSpecificStatusMsgsFlag = DEVSPECIFIC_GET_IP_PORT - 0x00000400
|
Line_Reply with Success
|
Application calls LineMakeCall() on A dialing a Party in Cluster2
Call is being routed through the SIP trunk with Early Offer Enabled
|
A: LINE_CALLSTATE (LINECALLSTATE_PROCEEDING)
LINE_DEVSPECIFIC dwParam1 = SLDSMT_RTP_GET_IP_PORT dwParam2 = 0x00000xyy x (ninth Bit from LSB) - 1 - SetRTP (1- App has to set RTP / 0 - App need not set RTP) yy (8 bits) - IPAddressing Mode
|
Application sends lineDevSpecific(CciscoLineDevSpecificSetRTPParamsForCall) with IPAddress and Port Info
|
Line_Reply with Success
|
Other Party answers the Call
|
A: LINE_CALLSTATE (LINECALLSTATE_CONNECTED)
LINE_DEVSPECIFIC dwParam1 = compressionType & SLDSMT_OPEN_LOGICAL_CHANNEL dwParam2 = 0x00000xyy x (ninth Bit from LSB) - 0 - SetRTP ( 1- App has to set RTP / 0 - App need not set RTP) yy (8 bits) - IPAddressing Mode
|
Hold and unHold the Call
|
A: LINE_CALLSTATE (LINECALLSTATE_HOLD/LINECALLSTATE_CONNECTED)
LINE_DEVSPECIFIC dwParam1 = compressionType & SLDSMT_OPEN_LOGICAL_CHANNEL dwParam2 = 0x00000xyy x (ninth Bit from LSB) - 1 - SetRTP ( 1- App has to set RTP / 0 - App need not set RTP) yy (8 bits) - IPAddressing Mode
*** Applications have to set the RTP info as the SetRTP flag is set.
|
Application sends lineDevSpecific(CciscoLineDevSpecificSetRTPParamsForCall) with IPAddress and Port Info
|
Line_Reply with Success
Media will be set and Media events will be reported
|
*** Application should not set the RTP Info Again
Variant 1:
Application sends lineDevSpecific(CciscoLineDevSpecificSetRTPParamsForCall) with IPAddress and Port Info
|
Line_Reply with Error LINEERR_OPERATIONUNAVAIL
But the Media is setup with the RTP information provided at the SLDSMT_RTP_GET_IP_PORT information request
|
Variant 2:
Application does not set the Filter to receive new Notification using lineDevSpecific (CCiscoLineDevSpecificSetStatusMsgs) and Application does not Set RTP at Proceeding State as there is no Notification
Or
Application does not set RTP info on New Notification
|
New Notification not reported to Application
Call goes to Disconnect State with cause as LINEDISCONNECTMODE_UNKNOWN
|
Variant 3: A - CTI Port is Registered Secure
|
Behavior should be same
|
Variant 4: Application tried to disable the Early Offer support on the CTI Port that is Dynamically Registered with the Early Offer support
Application sends lineDevSpecific(CciscoLineDevSpecificEnableFeatureSupport) with m_Feature - 0x00000001, m_Feature_Capability - 0x00000000
|
Line_Devspecific fails with Error LINEERR_OPERATIONUNAVAIL
|
Application Dynamically Registers CTI Port with out Early Offer Support
Configuration
A - CTI Port in Cluster1
Cluster1 and Cluster2 connected via SIP trunk
SIP trunk Supports Delayed Offer
Action
|
TSP Message to Application data
|
lineInitialize
|
Line_reply with Success Lines will be Enumerated to Application.
|
lineOpen() with Extversion - 0x800B0000 for Line A
|
Line_Open successful
|
LineSetStatusMessages() - with dwLinestates - 0xcc
|
LineSetStatusMessages returns Success
|
Application sends lineDevSpecific(CciscoLineDevSpecificPortRegistrationPerCall) with MediaCaps Info
|
Line_Reply with Success LineInserviceEvent reports to Application Line_LineDevState Dwparam1 = x040, InService
|
Application calls LineMakeCall() on A dialing a Party in Cluster2
|
A: LINE_CALLSTATE (LINECALLSTATE_PROCEEDING)
|
Other Party answers the Call
|
A: LINE_CALLSTATE (LINECALLSTATE_CONNECTED)
LINE_DEVSPECIFIC dwParam1 = compressionType & SLDSMT_OPEN_LOGICAL_CHANNEL dwParam2 = 0x00000xyy x (ninth Bit from LSB) - 1 - SetRTP (1- App has to set RTP / 0 - App need not set RTP) yy (8 bits) - IPAddressingMode
|
Application sends lineDevSpecific(CciscoLineDevSpecificSetRTPParamsForCall) with IPAddress and Port Inf0
|
Line_Reply with Success
Media will be Setup
|
Variant 1: A - SCCP/SIP Phone
|
Behavior is same and new SLDSMT_RTP_GET_IP_PORT Notification will not be fired to application.
|
Application Dynamically Registers IPV6 CTI Port with Early Offer Support
Configuration
A - CTI Port; CDC - IPV6 Only
Cluster1 and Cluster2 connected via SIP trunk
SIP trunk Supports Early Offer
Action
|
TSP Message to Application data
|
lineInitialize
|
Line_reply with Success Lines will be Enumerated to Application.
|
lineOpen() with Extversion - 0x800B0000 for Line A
|
Line_Open successful
|
LineSetStatusMessages() - with dwLinestates - 0xcc
|
LineSetStatusMessages returns Success
|
Application sends lineDevSpecific(CciscoLineDevSpecificEnableFeatureSupport) with m_Feature - 0x00000001, m_Feature_Capability - 0x00000001
|
Line_Reply with Success
|
Application sends lineDevSpecific(CciscoLineDevSpecificSetIPv6AddressAndMode) with MediaCaps Info
Application sends lineDevSpecific(CciscoLineDevSpecificPortRegistrationPerCall) with MediaCaps Info
|
Line_Reply with Success
Line_Reply with Success
LineInserviceEvent will be repored to Application Line_LineDevState Dwparam1 = x040, InService
|
Application sends lineDevSpecific(CCiscoLineDevSpecificSetStatusMsgs) with m_DevSpecificStatusMsgsFlag = DEVSPECIFIC_GET_IP_PORT - 0x00000400
|
Line_Reply with Success
|
Application calls LineMakeCall() on A dialing a Party in Cluster2
Call is routed through SIP trunk with Early Offer Enabled
|
A: LINE_CALLSTATE (LINECALLSTATE_PROCEEDING)
Note SLDSMT_RTP_GET_IP_PORT Notification for IPV6 CTI Port is not supported.
Application has to set the RTP info after OpenLogicalChannel Notification.
|
Other Party answers the Call
|
A: LINE_CALLSTATE (LINECALLSTATE_CONNECTED)
LINE_DEVSPECIFIC dwParam1 = compressionType & SLDSMT_OPEN_LOGICAL_CHANNEL dwParam2 = 0x00000xyy x (ninth Bit from LSB) - 1 - SetRTP (1- App has to set RTP / 0 - App need not set RTP) yy (8 bits )- IPAddressingMode
|
Application sends lineDevSpecific(CciscoLineDevSpecificSetRTPParamsForCallIPv6) with IPAddress and Port Info
|
Line_Reply with Success
Media will be Setup
|
Mutiple Applications Dynamically Register CTI Port/RP
Configuration
Cluster1 and Cluster2 connected via SIP trunk
SIP trunk Supports Early Offer
Applications:
•
App1 - Dynamically Registers CTI Port/RP with Early Offer Support
•
App2 - Dynamically Registers CTI Port/RP without Early Offer Support
*** App1 and App2 are running on Different Client Machines.
Action
|
TSP Message to Application data
|
App1 and App2:
lineInitialize
|
Line_reply with Success Lines will be Enumerated to Application.
|
App1 and App2:
lineOpen() with Extversion - 0x800B0000 for Line A
|
Line_Open successful
|
App1 and App2:
LineSetStatusMessages() - with dwLinestates - 0xcc
|
LineSetStatusMessages returns Success
|
App1:
Application sends lineDevSpecific(CciscoLineDevSpecificEnableFeatureSupport) with m_Feature - 0x00000001, m_Feature_Capability - 0x00000001
|
Line_Reply with Success
|
App1:
Application sends lineDevSpecific(CciscoLineDevSpecificPortRegistrationPerCall) with MediaCaps Info
|
Line_Reply with Success
LineInserviceEvent reports to the application.
|
App2:
Application sends lineDevSpecific(CciscoLineDevSpecificPortRegistrationPerCall) with MediaCaps Info
|
Line_Devspecific fails with Error LINEERR_REGISTER_GETPORT_SUPPORT_MISMATCH
|
Multiple Applications Dynamically Register CTI Port/RP with Early Offer Support
Configuration
A - CTI Port in Cluster1
Cluster1 and Cluster2 connected via SIP trunk
SIP trunk Supports Early Offer
Applications:
•
App1 - Dynamically Registers CTI Port/RP with Early Offer Support
•
App2 - Dynamically Registers CTI Port/RP with Early Offer Support
*** App1 and App2 are running on Different Client Machines.
Action
|
TSP Message to Application data
|
App1 and App2:
lineInitialize
|
Line_reply with Success Lines will be Enumerated to Application.
|
App1 and App2:
lineOpen() with Extversion - 0x800B0000 for Line A
|
Line_Open successful
|
App1 and App2:
LineSetStatusMessages() - with dwLinestates - 0xcc
|
LineSetStatusMessages returns Success
|
App1 and App2:
Application sends lineDevSpecific(CciscoLineDevSpecificEnableFeatureSupport) with m_Feature - 0x00000001, m_Feature_Capability - 0x00000001
|
Line_Reply with Success
|
App1 and App2:
Application sends lineDevSpecific(CciscoLineDevSpecificPortRegistrationPerCall) with MediaCaps Info
*** Both Applications set with same Capabilities
|
Line_Reply with Success
LineInserviceEvent reports to Application.
|
App1:
Application calls LineMakeCall() on A dialing a Party in Cluster2
Call is being routed through the SIP trunk with Early Offer Enabled
|
A: LINE_CALLSTATE (LINECALLSTATE_PROCEEDING)
App1 and App2: LINE_DEVSPECIFIC dwParam1 = SLDSMT_RTP_GET_IP_PORT dwParam2 = 0x00000xyy x (ninth Bit from LSB) - 1 - SetRTP (1- App has to set RTP / 0 - App need not set RTP) uy (8 bits) - IPAddressing Mode
|
App1:
Application sends lineDevSpecific(CciscoLineDevSpecificSetRTPParamsForCall) with IPAddress and Port Info
|
Line_Reply with Success
|
App2:
Application sends LineDevSpecific (CciscoLineDevSpecificSetRTPParamsForCall) with IPAddress and Port Info different from the Info App1 has set.
|
Line_Reply with error LINEERR_OPERATIONUNAVAIL
|
Other Party answers the Call
|
A: LINE_CALLSTATE (LINECALLSTATE_CONNECTED)
LINE_DEVSPECIFIC dwParam1 = compressionType & SLDSMT_OPEN_LOGICAL_CHANNEL dwParam2 = 0x00000xyy x (ninth Bit from LSB) - 0 - SetRTP (1- App has to set RTP / 0 - App need not set RTP) yy (8 bits) - IPAddressingMode
|
Application Statically Registers CTI Port with Early Offer Support and then Disable the Early Offer Support
Configuration
A - CTI Port in Cluster1
Cluster1 and Cluster2 connected via SIP trunk
SIP trunk Supports Early Offer
Action
|
TSP Message to Application data
|
lineInitialize
|
Line_reply with Success Lines will be Enumerated to Application.
|
lineOpen() with Extversion - 0x800B0000 for Line A
|
Line_Open successful
|
LineSetStatusMessages() - with dwLinestates - 0xcc
|
LineSetStatusMessages returns Success
|
Application sends lineDevSpecific(CciscoLineDevSpecificEnableFeatureSupport) with m_Feature - 0x00000001, m_Feature_Capability - 0x00000001
|
Line_Reply with Success
|
Application sends lineDevSpecific(CCiscoLineDevSpecificUserControlRTPStream) with MediaCaps Info
|
Line_Reply with Success LineInserviceEvent reports to Application Line_LineDevState dwParam1 = x040, InService
|
Application sends lineDevSpecific(CCiscoLineDevSpecificSetStatusMsgs) with m_DevSpecificStatusMsgsFlag = DEVSPECIFIC_GET_IP_PORT - 0x00000400
|
Line_Reply with Success
|
Application calls LineMakeCall() on A dialing a Party in Cluster 2
Call is being routed through the SIP trunk with Early Offer Enabled
|
A: LINE_CALLSTATE (LINECALLSTATE_PROCEEDING)
LINE_DEVSPECIFIC dwParam1 = SLDSMT_RTP_GET_IP_PORT dwParam2 = 0x00000xyy x (ninth Bit from LSB) - 0 - SetRTP (1- App has to set RTP / 0 - App need not set RTP) yy - IPAddressing Mode
|
Other Party answers the Call
|
A: LINE_CALLSTATE (LINECALLSTATE_CONNECTED)
|
*** Disconnect the Existing Call
Application sends lineDevSpecific(CciscoLineDevSpecificEnableFeatureSupport) with m_Feature - 0x00000001, m_Feature_Capability -0x00000000 - to disable the Early Offer support
|
Line_Reply with Success
|
Application calls LineMakeCall() on A dialing a Party in Cluster 2
Call is being routed through the SIP trunk with Early Offer Enabled
|
A: LINE_CALLSTATE (LINECALLSTATE_PROCEEDING/ LINECALLSTATE_RINGBACK)
|
Other Party answers the Call
|
A: LINE_CALLSTATE (LINECALLSTATE_CONNECTED)
|
Application Statically Registers CTI Port with out Early Offer Support and then Enables Early Offer Support
Configuration
A - CTI Port in Cluster1
Cluster1 and Cluster2 connected via SIP trunk
SIP trunk Supports Early Offer
Action
|
TSP Message to Application data
|
lineInitialize
|
Line_reply with Success Lines will be Enumerated to Application.
|
lineOpen() with Extversion - 0x800B0000 for Line A
|
Line_Open successful
|
LineSetStatusMessages() - with dwLinestates - 0xcc
|
LineSetStatusMessages returns Success
|
Application sends lineDevSpecific(CCiscoLineDevSpecificUserControlRTPStream) with MediaCaps Info
|
Line_Reply with Success LineInserviceEvent reports to Application Line_LineDevState Dwparam1 = x040, InService
|
Application sends lineDevSpecific(CciscoLineDevSpecificEnableFeatureSupport) with m_Feature - 0x00000001, m_Feature_Capability - 0x00000001 - to enable the Early Offer support
|
Line_Reply with Success
|
Application sends lineDevSpecific(CCiscoLineDevSpecificSetStatusMsgs) with m_DevSpecificStatusMsgsFlag = DEVSPECIFIC_GET_IP_PORT - 0x00000400
|
Line_Reply with Success
|
Application calls LineMakeCall() on A dialing a Party in Cluster2
|
A: LINE_CALLSTATE (LINECALLSTATE_PROCEEDING)
LINE_DEVSPECIFIC dwParam1 = SLDSMT_RTP_GET_IP_PORT dwParam2 = 0x00000xyy x (ninth Bit from LSB) - 0 - SetRTP (1- App has to set RTP / 0 - App need not set RTP) yy - IPAddressing Mode
|
Other Party answers the Call
|
A: LINE_CALLSTATE (LINECALLSTATE_CONNECTED)
Media will be set and Media Events will be Reported to Application
|
Variant 1: A - SCCP/SIP Phone
|
Behavior is same and new SLDSMT_RTP_GET_IP_PORT Notification will not be fired to application.
|
Application registers CTI Port with Legacy Wave Driver and enables Early Offer Support
Configuration
A - CTI Port;
Cluster1 and Cluster2 connected via SIP trunk
SIP trunk Supports Early Offer
Action
|
TSP Message to Application data
|
lineInitialize
|
Line_reply with Success Lines will be Enumerated to Application.
|
lineOpen() with Extversion - 0x000B0000 for Line A
|
Line_Open successful
|
LineSetStatusMessages() - with dwLinestates - 0xcc
|
LineSetStatusMessages returns Success
LineInserviceEvent reports to Application Line_LineDevState
Dwparam1 = x040, InService
|
Application sends lineDevSpecific(CciscoLineDevSpecificEnableFeatureSupport) with m_Feature - 0x00000001, m_Feature_Capability - 0x00000001
|
Line_Devspecific fails with error LINEERR_OPERATIONUNAVAIL
|
Application sends lineDevSpecific(CCiscoLineDevSpecificSetStatusMsgs) with m_DevSpecificStatusMsgsFlag = DEVSPECIFIC_GET_IP_PORT - 0x00000400
|
Line_Reply with Success
|
Application calls LineMakeCall() on A dialing a Party in Cluster2
Call is routed through SIP trunk with Early Offer Enabled
|
A: LINE_CALLSTATE (LINECALLSTATE_PROCEEDING)
|
Other Party answers the Call
|
A: LINE_CALLSTATE (LINECALLSTATE_CONNECTED)
Media will be set and Media Events will be reported to Application
|
Application Registers CTI Port with new Cisco Wave Driver and enables Early Offer Support
Configuration
A - CTI Port;
Cluster1 and Cluster2 connected via SIP trunk
SIP trunk Supports Early Offer
Action
|
TSP Message to Application data
|
During Installation of CiscoTSP User has to select New Wave Driver.
lineInitialize
|
Line_reply with Success Lines will be Enumerated to Application.
|
lineOpen() with Extversion - 0x000B0000 for Line A
|
Line_Open successful
|
LineSetStatusMessages() - with dwLinestates - 0xcc
|
LineSetStatusMessages returns Success
LineInserviceEvent reports to Application Line_LineDevState
Dwparam1 = x040, InService
|
Application sends lineDevSpecific(CciscoLineDevSpecificEnableFeatureSupport) with m_Feature - 0x00000001, m_Feature_Capability - 0x00000001
|
Line_Reply with Success
|
Application sends lineDevSpecific(CCiscoLineDevSpecificSetStatusMsgs) with m_DevSpecificStatusMsgsFlag = DEVSPECIFIC_GET_IP_PORT - 0x00000400
|
Line_Reply with Success
|
Application calls LineMakeCall() on A dialing a Party in Cluster2
Call is routed through SIP trunk with Early Offer Enabled
|
A: LINE_CALLSTATE (LINECALLSTATE_PROCEEDING)
LINE_DEVSPECIFIC dwParam1 = SLDSMT_RTP_GET_IP_PORT dwParam2 = 0x00000xyy x (ninth Bit from LSB) - 0 - SetRTP (1- App has to set RTP / 0 - App need not set RTP) yy - IPAddressing Mode
Note On this new Notification, applications has to Open the Port.
|
Other Party answers the Call
|
A: LINE_CALLSTATE (LINECALLSTATE_CONNECTED)
Media will be set and Media Events will be reported to Application
|
Mutiple Applications Statically Register CTI Port
Configuration
A - CTI Port in Cluster 1
Cluster1 and Cluster2 connected via SIP trunk
SIP trunk Supports Early Offer
Applications:
•
App1 - Statically Registers CTI Port/RP with Early Offer Support
•
App2 - Statically Registers CTI Port/RP without Early Offer Support
*** App1 and App2 are running on Different Client Machines.
Action
|
TSP Message to Application data
|
App1 and App2: Both Connecting to same CTI Manager
lineInitialize
|
Line_reply with Success Lines will be Enumerated to Application.
|
App1 and App2:
lineOpen() with Extversion - 0x800B0000 for Line A
|
Line_Open successful
|
App1 and App2:
LineSetStatusMessages() - with dwLinestates - 0xcc
|
LineSetStatusMessages returns Success
|
App1:
Application sends lineDevSpecific(CciscoLineDevSpecificEnableFeatureSupport) with m_Feature - 0x00000001, m_Feature_Capability - 0x00000001
|
Line_Reply with Success
|
App1:
Application sends lineDevSpecific(CCiscoLineDevSpecificUserControlRTPStream) with MediaCaps Info to Register A
|
Line_Reply with Success LineInserviceEvent reports to Application.
|
App2:
Application sends lineDevSpecific(CCiscoLineDevSpecificUserControlRTPStream) with MediaCaps Info to Register A
|
Line_Devspecific fails with Error LINEERR_REGISTER_GETPORT_SUPPORT_MISMATCH
|
Variant: App1 and App2 connecting to different Cti Managers
App2: (After App1 has already registered CtiPort - A)
Application sends lineDevSpecific(CCiscoLineDevSpecificUserControlRTPStream) with MediaCaps Info to register CtiPort A
|
LineReply - success
LINE_CLOSE for the CTI Port
|
End-To-End Call Trace
Direct Call Scenario: Variation 1
Application does a LineInitializ. Application opens all lines with new ExtVersion 0x000A0000. A calls B and B answers the call.
Action
|
CTI Events
|
Expected Results
|
LineInitialize
LineOpen on A, LineOpen on B with new ExtVesrion 0x000A0000
|
|
|
A calls B
|
NewCallEvent received for A
NewCallEvent received for B
|
For A
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
For B
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
|
LineGetCallInfo on A
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference A1
|
LineGetCallInfo on B
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference B1
|
Direct Call Scenario: Variation 2
A calls B and B answers the call. Application does a LineInitialize. Application opens all lines with new ExtVersion 0x000A0000.
Action
|
CTI Events
|
Expected Results
|
A calls B. B answers the call
|
|
|
LineInitialize
LineOpen on A, LineOpen on B with new ExtVesrion 0x000A0000
|
ExistingCallEvent received for A
ExistingCallEvent received for A
|
For A
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
For B
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
|
LineGetCallInfo on A
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference A1
|
LineGetCallInfo on B
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference B1
|
Consult Transfer Scenario: Variation 1
Application does a LineInitialize and opens all lines with new ExtVersion 0x000A0000. A calls B and B answers the call. B sets up transfer to C, C answers the call, and B completes the transfer. A is connected to C.
Action
|
CTI Event
|
Expected Results
|
LineInitialize
LineOpen on A, LineOpen on B,
LineOpen on C with new ExtVesrion 0x000A0000
|
|
|
A calls B
|
NewCallEvent received for A
NewCallEvent received for B
|
For A
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
For B
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
|
LineGetCallInfo on A
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference A1
|
LineGetCallInfo on B
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference B1
|
B SetupTransfer to C
|
NewCallEvent received for B
NewCallEvent received for C
|
For B
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
For C
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
|
LineGetCallInfo on B
(Consultation call between B and C)
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference B2
|
LineGetCallInfo on C
(Consultation call between B and C)
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference C1
|
C answers the call. B completes transfer.
|
CallGlobalCallHandleChangedEvent received for C
|
For C
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference C2
|
LineGetCallInfo on A
(Call between A and C)
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference A1
|
LineGetCallInfo on C2
(Consultation call between B and C)
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference C2
|
Consult Transfer Scenario: Variation 2
A calls B and B answers the call. B sets up transfer to C. Application does a LineInitialize and opens all lines with new ExtVersion 0x000A0000. Application completes the transfer. A is connected to C.
Action
|
CTI Events
|
Expecte Results
|
A calls B and B answers the call. B setups transfer to C and C answers the call
|
LineInitialize
LineOpen on A , LineOpen on B,
LineOpen on C with new ExtVesrion 0x000A0000
|
|
LineInitialize
LineOpen on A, LineOpen on B,
LineOpen on C with new ExtVesrion 0x000A0000
|
ExistingCallEvent received for A (Primary Call between A and B)
|
For A
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
|
| |
ExistingCallEvent received for B (Primary Call between A and B)
|
For B
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
For B
|
| |
ExistingCallEvent received for B (Consultation Call between B and C)
|
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
For C
LINE_CALLDEVSPECIFIC event is received
|
| |
ExistingCallEvent received for C (Consultation Call between B and C)
|
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
|
LineGetCallInfo on A
(Primary Call between A and B
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference A1
|
LineGetCallInfo on B
(Primary Call between A and B
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference B1
|
LineGetCallInfo on B
(Consultation Call between B and C)
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference B2
|
LineGetCallInfo on C
(Consultation Call between B and C)
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference C1
|
Applications completes Transfer
|
CallGlobalCallHandleChangedEvent received for C
|
For C
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
|
LineGetCallInfo on A
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference A1
|
LineGetCallInfo on C
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference C2
|
Blind Transfer Scenario
Application does a LineInitialize.Application opens all lines with new ExtVersion 0x000A0000. A calls B and B answers the call. B does lineBlindTransfer to C. A is connected to C.
Action
|
CTI Event
|
Expected Results
|
LineInitialize
LineOpen on A, LineOpen on B,
LineOpen on C with new ExtVesrion 0x000A0000
|
|
|
A calls B
|
NewCallEvent received for A
NewCallEvent received for B
|
For A
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
For B
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
|
LineGetCallInfo on A
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference A1
|
LineGetCallInfo on B
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference B1
|
B lineBlindTransfer to C
|
NewCallEvent received for C
|
For C
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
|
LineGetCallInfo on A
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference A1
|
LineGetCallInfo on C
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference C1
|
Redirect Scenario
Application does a LineInitialize and opens all lines with new ExtVersion 0x000A0000. A calls B and B answers the call. Application redirects B to C; A is connected to C.
Action
|
CTI Events
|
Expected Results
|
LineInitialize
LineOpen on A , LineOpen on B with new ExtVesrion 0x000A0000
|
|
|
A calls B
|
NewCallEvent received for A
NewCallEvent received for B
|
For A
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
For B
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
|
LineGetCallInfo on A
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference A1
|
LineGetCallInfo on B
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference B1
|
B redirects call to C.C answers the call
|
NewCallEvent received for C
|
For C
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
|
LineGetCallInfo on A
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference A1
|
LineGetCallInfo on C
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference C1
|
Shared Line Scenario
Application does a LineInitialize. Application opens all lines with new ExtVersion 0x000A0000. A calls B, B'. B answers the call.
Action
|
CTI Events
|
Expected Results
|
LineInitialize
LineOpen on A , LineOpen on B,
LineOpen on B' with new ExtVesrion 0x000A0000
|
|
|
A calls B
|
NewCallEvent received for A
NewCallEvent received for B
NewCallEvent received for B'
|
For A
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
For B
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
For B'
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
|
LineGetCallInfo on A
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference A1
|
LineGetCallInfo on B
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference B1
|
LineGetCallInfo on B'
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference B1
|
Shared Line Scenario with Barge
Application does a LineInitialize.Application opens all lines with new ExtVersion 0x000A0000. A calls B, B'. B answers the call.
Action
|
CTI Events
|
Expected Results
|
LineInitialize
LineOpen on A , LineOpen on B,
LineOpen on B' with new ExtVesrion 0x000A0000
|
|
|
A calls B, B'answers the call
|
NewCallEvent received for A
NewCallEvent received for B
NewCallEvent received for B'
|
For A
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
For B
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
For B'
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
|
LineGetCallInfo on A
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference A1
|
LineGetCallInfo on B
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference B1
|
LineGetCallInfo on B'
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference B1
|
B' barges in
|
NewCallEvent received for B
NewCallEvent received for B'
CallGlobalCallHandleChangedEvent received for B
|
For B
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference B2
For B'
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference B2
For B
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference B3
|
| |
CallGlobalCallHandleChangedEvent received for B'
|
For B'
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference B3
|
LineGetCallInfo on A
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference A1
|
LineGetCallInfo on B
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference B3
|
LineGetCallInfo on B'
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference B3
|
Call Park Scenario: Variation 1
Application does a LineInitialize and opens all lines with new ExtVersion 0x000A0000. A calls B and B answers the call. Application initiates a CallPark on B. A is parked on parkedDn. C calls parkDn and C is connected to A
Service Parameter Preserve globalcallid For Parked Calls set to False
Action
|
CTI Events
|
Expected Results
|
LineInitialize
LineOpen on A, LineOpen on B,
LineOpen on C with new ExtVesrion 0x000A0000
|
|
|
A calls B
|
NewCallEvent received for A
NewCallEvent received for B
|
For A
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
For B
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
|
LineGetCallInfo on A
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference A1
|
LineGetCallInfo on B
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference B1
|
Application initiates linepark on B
|
|
|
C dials parkDn
|
NewCallEvent received for C
CallGlobalCallHandleChangedEvent received for A
|
For C
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference C1
For A
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference A2
|
LineGetCallInfo on A
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference A2
|
LineGetCallInfo on C
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference C1
|
Call Park Scenario: Variation 2
Application does a LineInitialize.Application opens all lines with new ExtVersion 0x000A0000. A calls B and B answers the call. Application initiates a CallPark on B. A is parked on parkedDn. C calls parkDn and C is connected to A
Service Parameter Preserve globalcallid For Parked Calls set to True
Action
|
CTI Events
|
Expected Results
|
LineInitialize
LineOpen on A, LineOpen on B,
LineOpen on C with new ExtVesrion 0x000A0000
|
NewCallEvent received for A
NewCallEvent received for B
|
For A
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
For B
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
|
LineGetCallInfo on A
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference A1
|
LineGetCallInfo on B
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference B1
|
Application initiates linepark on B
|
|
|
C dials parkDn
|
NewCallEvent received for C
CallGlobalCallHandleChangedEvent received for C
|
For C
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference C1
For C
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference C2
|
LineGetCallInfo on A
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference A1
|
LineGetCallInfo on C
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference C2
|
3- Party Conference Call Scenario
Application does a LineInitialize and opens all lines with new ExtVersion 0x000A0000. A calls B and B answers the call. B sets up conference to C, C answers the call, and B completes conference. A, B and C are in conference.
Note
For all conference scenarios, conference call leg's Unique Call Reference ID is 0.
Action
|
CTI Events
|
Expected Results
|
LineInitialize
LineOpen on A , LineOpen on B,
LineOpen on C with new ExtVesrion 0x000A0000
|
NewCallEvent received for A
NewCallEvent received for B
|
For A
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference A1
For B
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference B1
|
LineGetCallInfo on A
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference A1
|
LineGetCallInfo on B
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference B1
|
B setupConference to C
|
NewCallEvent received for B
NewCallEvent received for C
|
For B
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference B2
For C
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference C1
|
LineGetCallInfo on B
(Consultation Call between B and C)
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference B2
|
LineGetCallnfo on C
(Consultation Call between B and C)
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference C1
|
C answers the call. B completes conference
|
CallGlobalCallHandleChangedEvent received for C
|
For C
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
|
LineGetCallInfo on A
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference A1
|
LineGetCallInfo on B
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference B1
|
LineGetCallInfo on C
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference C2
|
Three-party Conference Drop Down to Two-party Call Scenario
Application does a LineInitialize and opens all lines with new ExtVersion 0x000A0000. A calls B and B answers the call. B sets up conference with C, C answers the call, and B completes conference. A,B and C in conference. C drops from the conference.A connected to B.
Action
|
CTI Events
|
Expected Results
|
LineInitialize
Call lineNegotiateVersion with
LineOpen on A, LineOpen on B,
LineOpen on C with new ExtVesrion 0x000A0000
|
NewCallEvent received for A
NewCallEvent received for B
|
For A
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
For B
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
|
LineGetCallInfo on A
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference A1
|
LineGetCallInfo on B
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference B1
|
B setupConference to C
|
NewCallEvent received for B
NewCallEvent received for C
|
For B
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
For C
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
|
LineGetCallInfo on B
(Consultation Call between B and C)
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference B2
|
LineGetCallnfo on C
(Consultation Call between B and C)
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference C1
|
C answers the call. B completes conference
|
CallGlobalCallHandleChangedEvent received for C
|
For C
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
|
LineGetCallInfo on A
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference A1
|
LineGetCallInfo on B
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference B1
|
LineGetCallInfo on C
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference C2
|
C drops from conference
|
|
|
LineGetCallInfo on A
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference A1
|
LineGetCallInfo on B
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference B1
|
Conference Chaining Scenario using Join
Application does a LineInitialize and opens all lines with new ExtVersion 0x000A0000. A, B and C are in Conference1. C, D and E are in another Conference2. Application sends CallJoinRequest to join both the conference calls.
E drops from the conference.
Action
|
CTI Events
|
Expected Results
|
A, B and C are in conference
|
|
For A
Unique Call Reference ID = ID1
For B
Unique Call Reference ID = ID2
For C
Unique Call Reference ID = ID3
|
C, D and E are in conference
|
|
For C
Unique Call Reference ID = ID4
For D
Unique Call Reference ID = ID5
For E
Unique Call Reference ID = ID6
|
Application Joins two confeences
|
|
No change in Unique Call Reference ID after join
|
E drops from Conference
|
CallGlobalCallHandleChanged received for D
|
For D
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
|
LineGetCallInfo on A
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference ID1
|
LineGetCallnfo on B
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference ID
|
LineGetCallnfo on C
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference ID3
|
LineGetCallInfo on D
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference ID7
|
Transfer Call Scenario via QSIP without Path Replacement
Application does a LineInitialize and opens all lines with new ExtVersion 0x000A0000. A in Cluster 1 calls B in Cluster 2, B answers the call, and B sets up transfer to C in Cluster 1. C answers the call and B completes the transfer. A connected to C.
Action
|
CTI Events
|
Expected Results
|
LineInitialize
LineOpen on A, LineOpen on B,
LineOpen on C with new ExtVesrion 0x000A0000
|
|
|
A calls B
|
NewCallEvent received for A
NewCallEvent received for B
|
For A
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference A1
For B
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference B1
|
LineGetCallInfo on A
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference A1
|
LineGetCallInfo on B
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference B1
|
B SetupTransfer to C
|
NewCallEvent received for B
NewCallEvent received for C
|
For B
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
For C
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
|
LineGetCallInfo on B
(Consultation Call between B and C)
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference B2
|
LineGetCallInfo on C
(Consultation Call between B and C)
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference C1
|
C answers the call.B completes transfer.
|
|
|
LineGetCallInfo on A
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference A1
|
LineGetCallInfo on C
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference C1
|
Transfer Call Scenario via QSIP with Path Replacement
Application does a LineInitialize and opens all lines with new ExtVersion 0x000A0000. A in Cluster 1 calls B in Cluster 2, B answers the call and sets up transfer with C in Cluster 1. C answers the call amd B completes the transfer. A connected to C.
Action
|
CTI Events
|
Expected Results
|
LineInitialize
LineOpen on A, LineOpen on B,
LineOpen on C with new ExtVesrion 0x000A0000
|
|
|
A calls B
|
NewCallEvent received for A
NewCallEvent received for B
|
For A
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
For B
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
|
LineGetCallInfo on A
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference A1
|
LineGetCallInfo on B
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference B1
|
B SetupTransfer to C
|
NewCallEvent received for B
NewCallEvent received for C
|
For B
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
For C
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
|
LineGetCallInfo on B
(Consultation Call between B and C)
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference B2
|
LineGetCallInfo on C
(Consultation Call between B and C)
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference C1
|
C answers the call.B completes transfer
|
CallGlobalCallHandleChangedEvent received for C
|
For C
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference C2
|
LineGetCallInfo on A
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference A1
|
LineGetCallInfo on C
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference C2
|
Hunt List Scenario
LineGroup LG1,LG2 and LG3 configured with A,B and C. HuntList "Hunt_List" configured with Line Groups LG1,LG2 and LG3. Hunt Pilot "99999" configured with this "Hunt"List".
Application does a LineInitialize. Application opens all lines with new ExtVersion 0x000A0000. D calls "99999". Call is routed through A, B and C.
Action
|
CTI Events
|
Expected Results
|
LineInitialize
LineOpen on A , LineOpen on B,
LineOpen on C,
LineOpen on D
with new ExtVesrion 0x000A0000
|
|
|
D calls Hunt Pilot DN.Call is first offered to Phone A, followed by B and then C.
|
NewCallEvent received for D
NewCallEvent received for A
|
For D
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
For A
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
|
| |
NewCallEvent received for B
NewCallEvent received for C
|
For B
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
For C
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
|
LineGetCallInfo on D
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference D1
|
LineGetCallInfo on A
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference A1
|
LineGetCallInfo on B
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference B1
|
LineGetCallInfo on C
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference C1
|
Call Pickup Scenario: Variation 1
Application does a LineInitialize and opens all lines with new ExtVersion 0x000A0000.
B and C in same Call Pickup Group. Service Parameter, Auto Call Pickup Enabled, is set to False. A calls B and C presses the NewCall softkey followed by Call Pickup softkey. Call is redirected to C.
Same Behaviour for Group Pickup.
Action
|
CTI Events
|
Expected Results
|
LineInitialize
LineOpen on A, LineOpen on B,
LineOpen on C
with new ExtVesrion 0x000A0000
|
|
|
A calls B
|
NewCallEvent received for A
NewCallEvent received for B
|
For A
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
For B
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
|
C presses NewCall softkey followed by Call Pickup softkey
|
NewCallEvent received for C
NewCallEvent received for C
|
For C
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
For C
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
|
LineGetCallInfo on A
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference A1
|
LineGetCallInfo on C
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference C2
|
Call Pickup Scenario: Variation 2
Application does a LineInitialize and opens all lines with new ExtVersion 0x000A0000.
B and C are in the same Call Pickup Group. Service Parameter Auto Call Pickup Enabled is set to True. A calls B, C presses NewCall softkey followed by Call Pickup softkey, and call is redirected to C.
Same Behaviour for Group Pickup.
Action
|
CTI Events
|
Expected Results
|
LineInitialize
LineOpen on A, LineOpen on B,
LineOpen on C
with new ExtVesrion 0x000A0000
|
|
|
A calls B
|
NewCallEvent received for A
NewCallEvent received for B
|
For A
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
For B
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
|
C presses NewCall softkey followed by Call Pickup softkey
|
NewCallEvent received for C
CallGlobalCallHandleChanged received for C
|
For C
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
For C
LINE_CALLDEVSPECIFIC event is received
dwParam1 = SLDSMT_LINECALLINFO_DEVSPECIFICDATA
dwParam2 = SLDST_UNIQUE_CALL_REF_ID_INFO
dwParam3 = 0
|
LineGetCallInfo on A
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference A1
|
LineGetCallInfo on C
|
|
LINECALLINFO::DEVSPECIFIC would contain Unique Call Reference C2
|
EnergyWise Deep Sleep Mode Use Cases
Configuration
Line A on Cisco Unified IP Phones Series 9900, 7900, and 6900 phones connect to an EnergyWise Switch, LineNegotiate with supported extension 0x000B0000 or higher, in order to receive the reason code in dwparam2 of LINE_LINEDEVSTATE /PHONE_STATE EVENT. From the Device Administration page, Enable Power save and configure Power On and Power Off timers.
Verify EnergyWisePowerSavePlus Reason Code in LINEDEVSTATE Message
Verify EnergyWisePowerSavePlus Reason code in LINEDEVSTATE message, whenDevice unregisters when going into Deep sleep.
Action
|
Expected result
|
LineInitialize
|
|
LineOpen on A with ExtVersion xB0000 or higher
|
|
Set Event filters for Inservice and Outofservice events.
LinesetstatusMessage with dwlineStates flags
LINEDEVSTATE_INSERVICE | LINEDEVSTATE_OUTOFSERVICE
|
CiscoTSP Notifies LineInServiceEvent to application:
received LINE_LINEDEVSTATE
device=xxx
cbInst=x0
param1= LINEDEVSTATE_INSERVICE
param2=x0
param3=x0
|
When Phone A goes to Deep Sleep mode and unregisters
|
Cisco TSP Notifies LineOutOfServiceEvent to application:
received LINE_LINEDEVSTATE
device=xxx
cbInst=x0
param1= LINEDEVSTATE_OUTOFSERVICE
param2= CiscoLineDevStateOutOfServiceReason_EnergyWisePowerSavePlus
param3=x0
|
When PowerOntime is reached, Cisco Unified IP Phones Series 7900 device registers back to CUCM.
Variance
For Cisco Unified IP Phones Series 9900 and 6900, press the Select Key to power up.
|
Cisco TSP Notifies LineInServiceEvent to application:
received LINE_LINEDEVSTATE
device=xxx
cbInst=x0
param1= LINEDEVSTATE_INSERVICE
param2=x0,
param3=x0
|
Verify EnergyWisePowerSavePlus Reason Code in PhoneState Suspend
Verify EnergyWisePowerSavePlus Reason code in PhoneState suspend, whenDevice unregisters when in Deep Sleep Mode.
Action
|
Expected result
|
PhoneInitialize
|
|
PhoneOpen on A with ExtVersion xB0000 or higher
|
|
Set Event filters for Resume and Suspend events.
For Example:
PhonesetstatusMessage with dwPhoneStates flags PHONESTATE_SUSPEND | PHONESTATE_RESUME
|
|
Phone A goes to Deep Sleep Mode and unregisters.
|
Cisco TSP Notifies DeviceOutOfServiceEvent to application through Phone state event.
received PHONE_STATE
device=xxx
cbInst=x0
param1= PHONESTATE_SUSPEND
param2= CiscoPhoneStateOutOfServiceReason_EnergyWisePowerSavePlus
param3=x0
|
When PowerOntime is reached, Cisco Unified IP Phones Series 7900 device registers back to CUCM.
Variance
For Cisco Unified IP Phones Series 9900 and 6900, press the Select Key to power up.
|
Cisco TSP Notifies LineInServiceEvent to application:
received LINE_LINEDEVSTATE
device=xxx
cbInst=x0
param1= LINEDEVSTATE_INSERVICE
param2=x0,
param3=x0
|
Verify Reason EnergyWisePowerSavePlus Reason Code in LineDevstate/Phone State Message
Verify EnergyWisePowerSavePlus Reason code in LineDevstate/Phone State message, when unregisters after Power save idle time-out. Configure power save idle time-out = 20 mins(default = 1 hour).
Action
|
Expected result
|
LineInitialize
|
|
LineOpen on A with ExtVersion xB0000 or higher
|
|
Set Event filters for Inservice and Outofservice events.
LinesetstatusMessage with dwlineStates flags
LINEDEVSTATE_INSERVICE | LINEDEVSTATE_OUTOFSERVICE
|
Cisco TSP Notifies LineInServiceEvent to application:
received LINE_LINEDEVSTATE
device=xxx
cbInst=x0
param1= LINEDEVSTATE_INSERVICE
param2=x0
param3=x0
|
PhoneInitialize
|
|
PhoneOpen on A with ExtVersion xB0000 or higher
|
|
Set Event filters for Resume and Suspend events.
For Example:
PhonesetstatusMessage with dwPhoneStates flags PHONESTATE_SUSPEND | PHONESTATE_RESUME
|
|
Phone goes to Deep Sleep Mode and unregisters
|
Cisco TSP Notifies DeviceOutOfServiceEvent to application through Phone state event.
received PHONE_STATE
device=xxx
cbInst=x0
param1= PHONESTATE_SUSPEND
param2= CiscoPhoneStateOutOfServiceReason_EnergyWisePowerSavePlus
param3=x0,
Cisco TSP Notifies LineOutOfServiceEvent to application:
received LINE_LINEDEVSTATE
device=xxx
cbInst=x0
param1= LINEDEVSTATE_OUTOFSERVICE
param2= CiscoLineDevStateOutOfServiceReason_EnergyWisePowerSavePlus
param3=x0
|
For Cisco Unified IP Phones Series 9900 and 6900, press the Select Key to power up.
|
Cisco TSP Notifies LineInServiceEvent to application:
received LINE_LINEDEVSTATE
device=xxx
cbInst=x0
param1= LINEDEVSTATE_INSERVICE
param2=x0,
param3=x0,
Cisco TSP Notifies DeviceInServiceEvent to application through Phone state Event.
received PHONE_STATE
device=xxx
cbInst=x0
param1= PHONESTATE_RESUME
param2= x0,
param3=x0,
|
Power Save idle timer expires and device goes to Deep Sleep and unregisters
|
Cisco TSP Notifies DeviceOutOfServiceEvent to application through Phone state event.
received PHONE_STATE
device=xxx
cbInst=x0
param1= PHONESTATE_SUSPEND
param2= CiscoPhoneStateOutOfServiceReason_EnergyWisePowerSavePlus
param3=x0,
Cisco TSP Notifies LineOutOfServiceEvent to application:
received LINE_LINEDEVSTATE
device=xxx
cbInst=x0
param1= LINEDEVSTATE_OUTOFSERVICE
param2= CiscoLineDevStateOutOfServiceReason_EnergyWisePowerSavePlus
param3=x0
|
Verify Call Manager Failure Reason Code in LineDevstate/Phone State Message
Verify CallManagerFailure Reason code in LineDevstate/Phone State message, when Device unregisters when Call Manager service is Restarted from serviceability page.
Action
|
Expected result
|
LineInitialize
|
|
LineOpen on A with ExtVersion xB0000 or higher
|
|
Set Event filters for Inservice and Outofservice events.
LinesetstatusMessage with dwlineStates flags
LINEDEVSTATE_INSERVICE | LINEDEVSTATE_OUTOFSERVICE
|
Cisco TSP Notifies LineInServiceEvent to application:
received LINE_LINEDEVSTATE
device=xxx
cbInst=x0
param1= LINEDEVSTATE_INSERVICE
param2=x0
param3=x0
|
PhoneInitialize
|
|
PhoneOpen on A with ExtVersion xB0000 or higher
|
|
Set Event filters for Resume and Suspend events.
For Example:
PhonesetstatusMessage with dwPhoneStates flags PHONESTATE_SUSPEND | PHONESTATE_RESUME
|
|
Restart Call Manager services from serviceability page.
|
Cisco TSP Notifies DeviceOutOfServiceEvent to application through Phone state event.
received PHONE_STATE
device=xxx
cbInst=x0
param1= PHONESTATE_SUSPEND
param2= CiscoPhoneStateOutOfServiceReason_CallManagerFailure
param3=x0,
Cisco TSP Notifies LineOutOfServiceEvent to application:
received LINE_LINEDEVSTATE
device=xxx
cbInst=x0
param1= LINEDEVSTATE_OUTOFSERVICE
param2= CiscoLineDevStateOutOfServiceReason_CallManagerFailure
param3=x0
|
Call Manager Restart successful and device registers back
|
Cisco TSP Notifies LineInServiceEvent to application:
received LINE_LINEDEVSTATE
device=xxx
cbInst=x0
param1= LINEDEVSTATE_INSERVICE
param2=x0,
param3=x0,
Cisco TSP Notifies DeviceInServiceEvent to application through Phone state Event.
received PHONE_STATE
device=xxx
cbInst=x0
param1= PHONESTATE_RESUME
param2= x0,
param3=x0
|
Verify DeviceUnregister Reason Code in LineDevstate/Phone State Event
Verify DeviceUnregister Reason code in LineDevstate/Phone State Event, when Device unregisters by manually unplugging the Ethernet cable from device.
Action
|
Expected result
|
LineInitialize
|
|
LineOpen on A with ExtVersion xB0000 or higher
|
|
Set Event filters for Inservice and Outofservice events.
LinesetstatusMessage with dwlineStates flags
LINEDEVSTATE_INSERVICE | LINEDEVSTATE_OUTOFSERVICE
|
Cisco TSP Notifies LineInServiceEvent to application:
received LINE_LINEDEVSTATE
device=xxx
cbInst=x0
param1= LINEDEVSTATE_INSERVICE
param2=x0
param3=x0
|
PhoneInitialize
|
|
PhoneOpen on A with ExtVersion xB0000 or higher
|
|
Set Event filters for Resume and Suspend events.
For Example:
PhonesetstatusMessage with dwPhoneStates flags PHONESTATE_SUSPEND | PHONESTATE_RESUME
|
|
Manually unplug the Ethernet cable from device.
|
Cisco TSP Notifies DeviceOutOfServiceEvent to application through Phone state event.
received PHONE_STATE
device=xxx
cbInst=x0
param1= PHONESTATE_SUSPEND
param2= CiscoPhoneStateOutOfServiceReason_DeviceUnregistered
param3=x0,
Cisco TSP Notifies LineOutOfServiceEvent to application:
received LINE_LINEDEVSTATE
device=xxx
cbInst=x0
param1= LINEDEVSTATE_OUTOFSERVICE
param2= CiscoLineDevStateOutOfServiceReason_DeviceUnregistered
param3=x0
|
Device registers back after plugging back to the switch
|
Cisco TSP Notifies LineInServiceEvent to application:
received LINE_LINEDEVSTATE
device=xxx
cbInst=x0
param1= LINEDEVSTATE_INSERVICE
param2=x0,
param3=x0,
Cisco TSP Notifies DeviceInServiceEvent to application through Phone state Event.
received PHONE_STATE
device=xxx
cbInst=x0
param1= PHONESTATE_RESUME
param2= x0,
param3=x0
|
Verify CTILinkFailure Reason code in LineDevstate/Phone State Message
Verify CTILinkFailure Reason code in LineDevstate/Phone State message, when CTIManager services are stopped.
Action
|
Expected result
|
LineInitialize
|
|
LineOpen on A with ExtVersion xB0000 or higher
|
|
Set Event filters for Inservice and Outofservice events.
LinesetstatusMessage with dwlineStates flags
LINEDEVSTATE_INSERVICE | LINEDEVSTATE_OUTOFSERVICE
|
Cisco TSP Notifies LineInServiceEvent to application:
received LINE_LINEDEVSTATE
device=xxx
cbInst=x0
param1= LINEDEVSTATE_INSERVICE
param2=x0
param3=x0
|
PhoneInitialize
|
|
PhoneOpen on A with ExtVersion xB0000 or higher
|
|
Set Event filters for Resume and Suspend events.
For Example:
PhonesetstatusMessage with dwPhoneStates flags PHONESTATE_SUSPEND | PHONESTATE_RESUME
|
|
Stop CTI Manager services from serviceability page.
|
Cisco TSP Notifies DeviceOutOfServiceEvent to application through Phone state event.
received PHONE_STATE
device=xxx
cbInst=x0
param1= PHONESTATE_SUSPEND
param2= CiscoPhoneStateOutOfServiceReason_CTILinkFailure
param3=x0,
Cisco TSP Notifies LineOutOfServiceEvent to application:
received LINE_LINEDEVSTATE
device=xxx
cbInst=x0
param1= LINEDEVSTATE_OUTOFSERVICE
param2= CiscoLineDevStateOutOfServiceReason_CTILinkFailure
param3=x0
|
Restart CTI Manager services
|
Cisco TSP Notifies LineInServiceEvent to application:
received LINE_LINEDEVSTATE
device=xxx
cbInst=x0
param1= LINEDEVSTATE_INSERVICE
param2=x0,
param3=x0,
Cisco TSP Notifies DeviceInServiceEvent to application through Phone state Event.
received PHONE_STATE
device=xxx
cbInst=x0
param1= PHONESTATE_RESUME
param2= x0,
param3=x0
|
Extension Mobility Cross Cluster
Common Configuration
•
User A has a device profile EM_Profile1 configured with Line1 in Cluster1 (home cluster)
•
CiscoTSP uses CTIManager on Cluster1 (home cluster) in order to open provider
TAPI Application does LineInitializeEx and EMCC User Logs into a Device
Title
|
EMCC user logs in to a device
|
Description
|
Testing the scenario where TAPI Application does LineInitializeEx and EMCCUserLogin to a Device
|
Test Setup
|
EM_Profile1 is included in application control list
DeviceH is not in application control list
Step 1 Open the TAPI Application with User A and do LineInitializeEx.
Step 2 User A EM login to DeviceH on Cluster1.
|
Expected Results
|
Step 2:
Application receives LINE_CREATE for Line1
|
TAPI Application does LineInitializeEx and EMCCUser Logs Out of a Device
Title
|
EMCC user logs out of a device
|
Description
|
Testing the scenario where TAPI Application does LineInitializeEx and EMCCUserLogs out of a Device
|
Test Setup
|
EM_Profile1 is included in application control list
DeviceH is not in application control list
Step 1 Open the TAPI Application with User A and do LineInitializeEx.
Step 2 User A EM logout of a device DeviceH on Cluster1.
|
Expected Results
|
Step 2:
Application receives LINE_REMOVE for Line1
|
Application does PhoneInitializeEx and EMCC User Logs in to a Device
Title
|
EMCC user logs in to a device
|
Description
|
Testing the scenario where TAPI Application does PhoneInitializeEx and EMCCUserLogin to a Device
|
Test Setup
|
EM_Profile1 is included in application control list
DeviceH is not in application control list
Step 1 Step1: Open the TAPI Application with User A and do PhoneInitializeEx.
Step 2 Step2: User A EM login to DeviceH on Cluster1.
|
Expected Results
|
Step 2:
Application receives PHONE_CREATE for Line1
|
TAPI Application does PhoneInitializeEx and EMCC User Logs out of a Device
Title
|
EMCC user logs out of a device
|
Description
|
Testing the scenario where TAPI Application does PhoneInitializeEx and EMCCUserLogs out of a Device
|
Test Setup
|
EM_Profile1 is included in application control list
DeviceH is not in application control list
Step 1 Step1: Open the TAPI Application with User A and do PhoneInitializeEx.
Step 2 Step2: User A EM logout of a device DeviceH on Cluster1.
|
Expected Results
|
Step 2:
Application receives PHONE _REMOVE for Line1
|
EMCC User Logs in to a Device from Cluster 2 (Visiting Cluster)
Title
|
EMCC user logs in to a device from cluster 2 (visiting cluster)
|
Description
|
Testing the scenario where EMCCUser Login to a Device from cluster 2 (visiting cluster)
|
Test Setup
|
EM_Profile1 is included in application control list.
Step 1 Open the TAPI Application with User A and do LineInitializeEx.
Step 2 User A goes to the Cluster 2(visiting Cluster) and EM login to a device DeviceV.
|
Expected Results
|
Step 2:
Application receives LINE_CREATE for Line1
|
EMCC User Logs out of a Device from Cluster 2 (Visiting Cluster)
Title
|
EMCC user logs out of a device from cluster 2 (visiting cluster)
|
Description
|
Testing the scenario where EMCCUser LogOut of a Device from cluster 2 (visiting cluster)
|
Test Setup
|
EM_Profile1 is included in application control list.
Step 1 Open the TAPI Application with User A and do LineInitializeEx.
Step 2 After the Execution of the above usecase User A EM logout of a device DeviceV.
|
Expected Results
|
Step 2:
Application receives LINE_REMOVE for Line1
|
EMCC User Logs in to a Device with LineH Configured
Title
|
EMCC user logs in to a device with LineH configured
|
Description
|
Testing the scenario where EMCCUserLogin to a Device with LineH configured
|
Test Setup
|
EM_Profile1 is included in application control list
DeviceH is included in application control list with LineH configured
Step 1 Open the TAPI Application with User A and do LineInitializeEx.
Step 2 User A EM login to a device DeviceH on Cluster1.
|
Expected Results
|
Step 2:
• Application receives LINE_REMOVE for LineH
• Application receives LINE_CREATE for Line1
|
EMCC User Logs out of a Device with LineH Configured
Title
|
EMCC user logs out of a device
|
Description
|
Testing the scenario where EMCCUserLogs out of a Device
|
Test Setup
|
EM_Profile1 is included in application control list
DeviceH is included in application control list with LineH configured
Step 1 After the Execution of the above usecase User A EM logout of a device DeviceH on Cluster1.
|
Expected Results
|
Step 2:
• Application receives LINE_REMOVE for Line1
• Application receives LINE_CREATE for LineH
|
EMCC User Logs in to a DeviceH Configured for Multiple Lines (LineH)
Title
|
EMCC user logs in to a DeviceH
|
Description
|
Testing the scenario where EMCCUser Login to a DeviceH which is configured for multiple lines
|
Test Setup
|
EM_Profile1 is included in application control list
Step 1 Open the TAPI Application with User A and do LineInitializeEx.
Step 2 User A goes to the Cluster 2(visiting Cluster) and EM login to a device DeviceH(A device with multiple lines (LineH)).
|
Expected Results
|
Step 2:
• Application receives 2 LINE_REMOVE for LineH
• Application receives LINE_CREATE for Line1
|
EMCC User Logs in to a Device with LineH Configured and Administrator Removes the Device from Application Control list
Title
|
EMCC user logs in to a device with LineH configured and the administrator removes the device from the Application Control list
|
Description
|
Testing the scenario where EMCCUserLogin to a device with LineH configured and administrator removes the device from the Application Control list
|
Test Setup
|
EM_Profile1 is included in application control list
DeviceH is included in application control list with LineH configured
Step 1 Open the TAPI Application with User A and do LineInitializeEx.
Step 2 User A EM login to a device DeviceH on Cluster1.
Step 3 Administrator removes the DeviceH from application control list.
|
Expected Results
|
Step 2:
• Application receives LINE_REMOVE for LineH
• Application receives LINE_CREATE for Line1
Step3:
• Application will not receive any events.
|
EMCC User Logs in and out of a Device with LineH Configured and Administrator Removes the Device from Application Control List
Title
|
EMCC user logs in and logs out of a device with LineH configured and Administrator removes the device from the Application Control List
|
Description
|
Testing the scenario where EMCCUserLogin to a Device with LineH configured and Administrator removes the device from the Application Control List
|
Test Setup
|
EM_Profile1 is included in application control list
DeviceH is included in application control list with LineH configured
Step 1 Open the TAPI Application with User A and do LineInitializeEx.
Step 2 User A EM login to a device DeviceH on Cluster1.
Step 3 User A EM logout of the device DeviceH on Cluster1.
Step 4 Administrator removes the DeviceH from application control list.
|
Expected Results
|
Step 2:
• Application receives LINE_REMOVE for LineH
• Application receives LINE_CREATE for Line1
Step3:
• Application receives LINE_REMOVE for Line1
• Application receives LINE_CREATE for LineH
Step4:
• Application receives LINE_REMOVE for LineH
|
EMCC User Logs in to a Device with LineH Configured and EM_Profile not Included in Application Control List
Title
|
EMCC user logs in to a device with LineH configured and administrator removes the device from the Application Control list
|
Description
|
Testing the scenario where EMCCUserLogin to a device with LineH configured and administrator removes the device from the Application Control list
|
Test Setup
|
EM_Profile1 is not included in Application Control list
DeviceH is included in Application Control list with LineH configured
Step 1 Open the TAPI Application with User A and do LineInitializeEx.
Step 2 User A EM login to a device DeviceH on Cluster1.
Step 3 Administrator removes the DeviceH from application control list.
Step 4 User A EM logout of the device DeviceH on Cluster1.
|
Expected Results
|
Step 2:
• Application receives LINE_REMOVE for LineH
• Application receives LINE_CREATE for Line1
Step3:
• Application receives no events since EM_Profile1 is not in control list.
Step4:
• Application receives LINE_REMOVE for LineH
|
EMCC User Logs in to a DeviceV and EM_Profile is Removed by Administrator from Application Control List
Title
|
EMCC user logs in to a DeviceV and administrator removes the EM_Profile from the Application Control list
|
Description
|
Testing the scenario where EMCCUserLogin to a DeviceV and administrator removes the EM_Profile from Application Control list
|
Test Setup
|
EM_Profile1 is included in Application Control list.
Step 1 Open the TAPI Application with User A and do LineInitializeEx.
Step 2 User A EM login to a DeviceV (Visiting Device).
Step 3 Administrator removes the EM_Profile1 from application control list.
|
Expected Results
|
Step 2:
• Application receives LINE_CREATE for Line1
Step3:
• Application receives LINE_REMOVE for Line1
|
EMCC User Logs in to a Device then Application does Provider Open
Title
|
EMCC user logs in to a DeviceV
|
Description
|
Testing the scenario where EMCCUserLogin to a DeviceV(cluster2). Then the application does Provider Open
|
Test Setup
|
EM_Profile1 is included in Application Control list
DeviceH is not in Application Control list
Step 1 User A EM login to DeviceV on Cluster2.
Step 2 Open the TAPI Application with User A and do LineInitializeEx.
|
Expected Results
|
Step2:
• DeviceV/Line1 will be included in TAPI device/line enumeration
|
EMCC User Log in to a DeviceV in Visiting Cluster and Administrator Adds the EM_Profile to Application Control List
Title
|
EMCC user logs in to a DeviceV in Visiting cluster and administrator adds the EM_Profile to the Application Control List
|
Description
|
Testing the scenario where EMCCUserLogin to a DeviceV in Visiting cluster and Administrator adds the EM_Profile to the Application Control list
|
Test Setup
|
EM_Profile1 is not included in Application Control list
Step 1 Open the TAPI Application with User A and do LineInitializeEx.
Step 2 User B EM login to a DeviceV on Cluster2.
Step 3 Administrator Adds the EM_Profile1 to the application control list.
|
Expected Results
|
Step 2:
• Application will not receive any events as EM_Profile1 not in the Application Control list.
Step3:
• Application receives LINE_CREATE for Line1
|
Extension Mobility Memory Optimization Option
The following section describes common configuration and use cases for Early Offer Support.
Common Configuration
The message flow in Figure A-1 is described below:
•
IP Phone_A is configured in DB with lines Line_A1 and LineA2
•
User1 has a device profile EM_Profile1 configured with Line_P11
•
User2 has a device profile EM_Profile2 configured with lines Line_P21 and Line_P22
Figure A-1 EM Memory Optimization Scenario 1
The message flow in Figure A-2 is described below:
•
Application uses Line_N to receive other-device state notifications
Figure A-2 EM Memory Optimization Scenario 2
Use Cases
Use cases related to the EM Memory Optimization Option feature are mentioned below:
•
Use Case 1
1.
Line_A1 and Line_A2 are not opened
2.
EM user with Profile_P1 logs in
3.
EM user with Profile_P1 logs out
4.
EM user with Profile_P1 logs in
The message flow in Figure A-3 is described in steps 1 to 4.
Figure A-3 EM Memory Optimization Option feature Use case 1
•
Use Case 2
1.
Line_A1 and Line_A2 has been opened
2.
EM user with Profile_P1 logs in
3.
Application opens Line_P11
4.
EM user with Profile_P1 logs out
5.
Application opens Line_A1
The message flow in Figure A-4 is described in steps 1 to 5.
Figure A-4 EM Memory Optimization Option feature Use case 2
•
Use Case 3
1.
Line_A1 and Line_A2 are not opened
2.
EM user with Profile_P1 logs in
3.
EM user with Profile_P1 logs out
4.
EM user with Profile_P2 logs in
5.
EM user with Profile_P2 logs out
The message flow in Figure A-5 is described in steps 1 to 5.
Figure A-5 EM Memory Optimization Option feature Use case 3
•
Use Case 4
1.
EM user with Profile_P1 logs in
2.
Operation request failed on inactive Line_A1
3.
EM user with Profile_P1 logs out
4.
Operation request failed on inactive Line_P11 with ... error code ...
The message flow in Figure A-6 is described in steps 1 to 4.
Figure A-6 EM Memory Optimization Option feature Use case 4
External Call Control
Basic Call Initiated from TAPI with 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 sends a lineMakeCall 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 Reject.
Party
|
TSP Message to App data
|
A initiates Call to B
A receives NewCallEvent and CallStateChangeEvent (Dialtone/Dialing)
|
A
LINE_APPNEWCALL, LINE_CALLSTATE (LINECALLSTATE_DIALTONE/ LINECALLSTATE_DIALING)
CallerID = A / CalledID = ""
mod Calling = A / mod Called = ""
|
A receives CallStateChangeEvent (Disconnect)
|
A:
LINE_CALLSTATE (LINECALLSTATE_DISCONNECTED, LINEDISCONNECTMODE_REJECT)
CallerID = A / CalledID = ""
mod Calling = A / mod Called = ""
|
Basic Call Initiated from TAPI Using 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 sends a lineMakeCall 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 (modified calling and modified called in divert to routing directive, overrides the calling and called number transformation configured for translation pattern and the call is diverted to C)
Party
|
TSP Message to App data
|
A initiates call to B
A receives NewCallEvent and CallStateChangeEvent (Dialtone/Dialing)
|
A:
LINE_APPNEWCALL, LINE_CALLSTATE (LINECALLSTATE_DIALTONE/ LINECALLSTATE_DIALING)
CallerID = A / CalledID = ""
mod Calling = A / mod Called = ""
|
A receives CallStateChangeEvent (Proceeding)
|
A:
LINE_CALLSTATE (LINECALLSTATE_PROCEEDING)/ LINE_CALLINFO
CallerID = A / CalledID = B1
mod Calling = A1 / mod Called = B1
|
A receives CallStateChangeEvent (RingBack)
C receives NewCallEvent
|
A:
LINE_CALLSTATE (LINECALLSTATE_RINGBACK)/ LINE_CALLINFO
CallerID = A / CalledID = B1 / RedirectingID = MB /
RedirectionID = C
mod Calling = MA / mod Called = B1 /
mod Redirecting = MB / mod Redirection = C
C:
LINE_APPNEWCALL, LINE_CALLSTATE (LINECALLSTATE_OFFERING/ LINECALLSTATE_ACCEPTED
dwReason = LINECALLREASON_UNKNOWN
extendCallReason = CtiReasonCallIntercept
CallerID = A / CalledID = MB / RedirectingID = MB /
RedirectionID = C
mod Calling = MA / mod Called = MB /
mod Redirecting = MB / mod Redirection = C
|
C answers
A and C receives Connected Call state
|
A:
LINE_CALLSTATE (LINECALLSTATE_CONNECTED)
CallerID = A / CalledID = B1 / ConnectedID = C /
RedirectingID = MB / RedirectionID = C
mod Calling = MA / mod Called = B1 /
mod Connected = C / mod Redirecting = MB /
mod Redirection = C
C:
LINE_APPNEWCALL, LINE_CALLSTATE (LINECALLSTATE_OFFERING/ LINECALLSTATE_ACCEPTED
CallerID = A / CalledID = MB / ConnectedID = A /
RedirectingID = MB / RedirectionID = C
mod Calling = MA / mod Called = MB /
mod Connected = MA / mod Redirecting = MB /
mod Redirection = C
|
Basic Call Initiated from TAPI Using 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 sends a lineMakeCall 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 MB (modified calling and modified called in continue routing directive, overrides the calling & called number transformation configured for translation pattern)
Party
|
TSP Message to App Data
|
A initiates Call to B
A receives NewCallEvent and CallStateChangeEvent (Dialtone/Dialing)
|
A:
LINE_APPNEWCALL, LINE_CALLSTATE (LINECALLSTATE_DIALTONE/ LINECALLSTATE_DIALING)
CallerID = A / CalledID = ""
mod Calling = A / mod Called = ""
|
A receives CallStateChangeEvent (Proceeding)
|
A:
LINE_CALLSTATE (LINECALLSTATE_PROCEEDING)/ LINE_CALLINFO
CallerID = A / CalledID = B1
mod Calling = A1 / mod Called = B1
|
A receives CallStateChangeEvent (RingBack)
MB receives NewCallEvent
|
A:
LINE_CALLSTATE (LINECALLSTATE_RINGBACK)/ LINE_CALLINFO
CallerID = A / CalledID = B1
mod Calling = MA / mod Called = B1
MB:
LINE_APPNEWCALL, LINE_CALLSTATE (LINECALLSTATE_OFFERING/ LINECALLSTATE_ACCEPTED
CallerID = A / CalledID = MB
mod Calling = MA / mod Called = MB
|
MB answers
A and MB receives Connected Call state
|
A:
LINE_CALLSTATE (LINECALLSTATE_CONNECTED)
CallerID = A / CalledID = B1 / ConnectedID = MB
mod Calling = MA / mod Called = B1 /
mod Connected = MB
MB:
LINE_CALLSTATE (LINECALLSTATE_CONNECTED)
CallerID = A / CalledID = MB / ConnectedID = A
mod Calling = MA / mod Called = MB /
mod Connected = MA
|
Conference Call Initiated from TAPI Using External Call Control on Translation Pattern and CEPM Returns Continue with Modified Calling and Called Parties in the Consult Call
Configuration
Phone A, B, C are in cluster devices.
C matches the translation pattern CXXX which has calling and called party transformation defined to transform B to A1 and C to C1 and External Call Control is also enabled.
Procedure
Application sends a lineMakeCall at A to call B. Application sends a lineSetupConference/lineAddToconference to B to consult conference the call to C.
Result
Dialed number C matches the translation pattern CXXX which has External Call Control enabled. This takes precedence and CUCM requests CEPM to get routing rule for B.
CEPM returns continue with ModifiedCalling= MB and ModifiedCalled = MC
Call will be extended to "MC" (modified calling and modified called in continue routing directive, overrides the calling & called number transformation configured for translation pattern)
After conference is complete, the correct number of CONFERENCE calls are see at all the participants.
Party
|
TSP Message to App Data
|
A and B receives Connected Call state
|
A:
LINE_CALLSTATE (LINECALLSTATE_CONNECTED)
CallerID = A / CalledID = B / ConnectedID = B
mod Calling = A / mod Called = B /
mod Connected = B
B:
LINE_CALLSTATE (LINECALLSTATE_CONNECTED)
CallerID = A / CalledID = B / ConnectedID = A
mod Calling = A / mod Called = B /
mod Connected = A
|
B does a lineSetupConference / lineDial to call C.
MC receives NewCallEvent
|
B:
Call-1
LINE_CALLSTATE (LINECALLSTATE_ONHOLDPENDCONF)
CallerID = A / CalledID = B / ConnectedID = A
mod Calling = A / mod Called = B /
mod Connected = A
Call-2
LINE_APPNEWCALL, LINE_CALLSTATE (LINECALLSTATE_PROCEEDING)/ LINE_CALLINFO
CallerID = B / CalledID = C1
mod Calling = MB / mod Called = C1
MC:
LINE_APPNEWCALL, LINE_CALLSTATE (LINECALLSTATE_OFFERING/ LINECALLSTATE_ACCEPTED)
CallerID = B / CalledID = MC
mod Calling = MB / mod Called = MC
|
MC answers the call
|
B:
Call-2
LINE_CALLSTATE (LINECALLSTATE_CONNECTED)
CallerID = B / CalledID = C1 / ConnectedID = MC
mod Calling = MB / mod Called = C1 /
mod Connected = MC
MC:
LINE_CALLSTATE (LINECALLSTATE_CONNECTED)
CallerID = B / CalledID = MC / ConnectedID = B
mod Calling = MB / mod Called = MC /
mod Connected = MB
|
B1 does a lineAddToConference
|
A:
CONFERENCE
CallerID = A / CalledID = B / ConnectedID = B
mod Calling = A / mod Called = B /
mod Connected = B
CONNECTED
CONFERENCE
CallerID = A / CalledID = MC / ConnectedID = MC
mod Calling = A / mod Called = MC /
mod Connected = MC
B:
CONFERENCE
CallerID = A / CalledID = B / ConnectedID = A
mod Calling = A / mod Called = B /
mod Connected = A
CONNECTED
CONFERENCE
CallerID = B / CalledID = C1 / ConnectedID = MC
mod Calling = B/ mod Called = C1 /
mod Connected = MC
MC:
CONFERENCE
CallerID = B / CalledID = MC / ConnectedID = B
mod Calling = B / mod Called = MC /
mod Connected = B
CONNECTED
CONFERENCE
CallerID = MC / CalledID = A / ConnectedID = A
mod Calling = MC / mod Called = A /
mod Connected = A
|
Call is Redirected to a Hunt List of Chaperones and Chaperone Enables Call Recording and Conferences in the Called Party
Configuration
Phone A, C1, D are in cluster devices. B matches the translation pattern BXXX where External Call Control is enabled. Application sends a lineMakeCall at A to call B.
CEPM determines this calls need to have a chaperone's supervise. CEPM returns the permit decision with the obligation <divert>, destination HuntPilot C, which is a hunt pilot of chaperones, and a reason string "chaperone".
CUCM redirects the call to the hunt pilot C, and the chaperone member 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.
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.
A and D starts to talk under the supervision of the chaperone.
Party
|
TSP Message to App Data
|
A initiates Call to B
A receives NewCallEvent and CallStateChangeEvent (Dialtone/Dialing)
|
A:
LINE_APPNEWCALL, LINE_CALLSTATE (LINECALLSTATE_DIALTONE/ LINECALLSTATE_DIALING)
CallerID = A / CalledID = ""
mod Calling = A / mod Called = ""
|
A receives CallStateChangeEvent (Proceeding) webmail
|
A:
LINE_CALLSTATE (LINECALLSTATE_PROCEEDING)/ LINE_CALLINFO
CallerID = A / CalledID = B
mod Calling = A / mod Called = B
|
A receives CallStateChangeEvent (RingBack)
C1 receives NewCallEvent
|
A:
LINE_CALLSTATE (LINECALLSTATE_RINGBACK)/ LINE_CALLINFO
CallerID = A / CalledID = B / RedirectingID = B /
RedirectionID = C
mod Calling = A / mod Called = B /
mod Redirecting = B / mod Redirection = C
C1:
LINE_APPNEWCALL, LINE_CALLSTATE (LINECALLSTATE_OFFERING/ LINECALLSTATE_ACCEPTED
CallerID = A / CalledID = B / RedirectingID = B /
RedirectionID = C
mod Calling = A / mod Called = B /
mod Redirecting = B / mod Redirection = C
LINECALLINFO::DEVSPECIFIC would contain IsChaperoneCall = 0x1
|
C1 answers
A and C1 receives Connected Call state
|
A:
LINE_CALLSTATE (LINECALLSTATE_CONNECTED)
CallerID = A / CalledID = B / ConnectedID = C / RedirectingID = B / RedirectionID = C
mod Calling = A / mod Called = B / mod Redirecting = B / mod Connected = B / mod Redirection = C
C1:
LINE_CALLSTATE (LINECALLSTATE_CONNECTED)
CallerID = A / CalledID = B / ConnectedID = C / RedirectingID = B / RedirectionID = C
mod Calling = A / mod Called = B / mod Redirecting = B / mod Connected = B / mod Redirection = C
|
Application issues a lineRedirect on call at C1
|
Line_Reply is returned with an error code of LINEERR_OPERATION_FAIL_CHAPERONE_DEVICE
|
C1 does a lineSetupConference / lineDial to call D.
D receives NewCallEvent
|
C1:
Call-1
LINE_CALLSTATE (LINECALLSTATE_ONHOLDPENDCONF)
CallerID = A / CalledID = B / ConnectedID = A / RedirectingID = B / RedirectionID = C
mod Calling = A / mod Called = B / mod Connected = A / mod Redirecting = B / mod Redirection = C
CONNECTED
LINECALLINFO::DEVSPECIFIC would contain IsChaperoneCall = 0x1
Call-2
LINE_APPNEWCALL, LINE_CALLSTATE (LINECALLSTATE_PROCEEDING)/ LINE_CALLINFO
CallerID = C1 / CalledID = D
mod Calling = C1 / mod Called = D
D:
LINE_APPNEWCALL, LINE_CALLSTATE (LINECALLSTATE_OFFERING/ LINECALLSTATE_ACCEPTED)
CallerID = C1 / CalledID = D
mod Calling = C1 / mod Called = D
|
D answers the call
|
C1:
Call-2
LINE_CALLSTATE (LINECALLSTATE_CONNECTED)
CallerID = C1 / CalledID = D / ConnectedID = D
mod Calling = C1 / mod Called = D /
mod Connected = D
D:
LINE_CALLSTATE (LINECALLSTATE_CONNECTED)
CallerID = C1 / CalledID = D / ConnectedID = C1
mod Calling = C1 / mod Called = D / mod Connected = C1
|
C1 does a lineAddToConference
|
A:
CONFERENCE
CallerID = A / CalledID = B / ConnectedID = C
/ RedirectingID = B / RedirectionID = C
mod Calling = A / mod Called = B /
mod Redirecting = B / mod Connected = C /
mod Redirection = C
CONNECTED
CONFERENCE
CallerID = A / CalledID = D / ConnectedID = D
mod Calling = A / mod Called = D /
mod Connected = D
C1:
CONFERENCE
CallerID = A / CalledID = B / ConnectedID = A
/ RedirectingID = B / RedirectionID = C
mod Calling = A / mod Called = B /
mod Connected = A / mod Redirecting = B /
mod Redirection = C
CONNECTED
LINECALLINFO::DEVSPECIFIC would contain IsChaperoneCall = 0x1
CONFERENCE
CallerID = C / CalledID = D / ConnectedID = D
mod Calling = C / mod Called = D /
mod Connected = D
D:
CONFERENCE
CallerID = C / CalledID = D / ConnectedID = C
mod Calling = C / mod Called = D /
mod Connected = C
CONNECTED
CONFERENCE
CallerID = D / CalledID = A / ConnectedID = A
mod Calling = D / mod Called = A /
mod Connected = A
|
Chaperone C1 starts recording to recording device R
|
C1:
LINE_DEVSPECIFIC(SLDSMT_RECORDING_STARTED, 0, 0)
LINE_DEVSPECIFIC(SLDSMT_LINECALLINFO_DEVSPECIFICDATA, SLDST_CALL_ATTRIBUTE_INFO, 0)
CallAttributeTye = `Recording'
C1's CCMCallId
Address = R's DN, Partition = R's Partition, DeviceName = R's DeviceName
|
Forced Authorization and Client Matter Code Scenarios
Manual Call to a Destination that Requires an FAC
Table A-39 describes the message sequences for the Forced Authorization and Client Matter Code scenario of Manual Call to a Destination that requires an FAC.
Preconditions
Party A is Idle. Party B requires an FAC.
The scenario remains similar if Party B requires a CMC instead of an FAC.
Table A-39 Message Sequences for Manual Call to a Destination that Requires an FAC
Actions
|
CTI Message
|
TAPI Messages
|
TAPI Structures
|
Party A goes off-hook
|
NewCallEvent, CH=C1, GCH=G1, Calling=A, Called=NP, OrigCalled=NP, LR=NP, State=Dialtone, Origin=OutBound, Reason=Direct
|
LINE_APPNEWCALL hDevice=A dwCallbackInstance=0 dwParam1=0 dwParam2=hCall-1 dwParam3=OWNER
|
LINECALLINFO (hCall-1) hLine=A dwCallID=T1 dwOrigin=OUTBOUND dwReason=DIRECT dwCallerID=A dwCalledID=NP dwConnectedID=NP dwRedirectionID=NP dwRedirectionID=NP
|
CallStateChangedEvent, CH=C1, State=Dialtone, Cause=CauseNoError, Reason=Direct, Calling=A, Called=NP, OrigCalled=NP, LR=NP
|
LINE_CALLSTATE hDevice=hCall-1 dwCallbackInstance=0 dwParam1=DIALTONE dwParam2=UNAVAIL dwParam3=0
|
No change
|
Party A dials Party B
|
CallStateChangedEvent, CH=C1, State=Dialing, Cause=CauseNoError, Reason=Direct, Calling=A, Called=NP, OrigCalled=NP, LR=NP
|
LINE_CALLSTATE hDevice=hCall-1 dwCallbackInstance=0 dwParam1=DIALING dwParam2=0 dwParam3=0
|
No change
|
CallToneChangedEvent, CH=C1, Tone=ZipZip, Feature=FACCMC, FACRequired=True, CMCRequired=False
|
LINE_DEVSPECIFIC hDevice=hCall-1 dwCallbackInstance=0 dwParam1=SLDSMT_CALL_TONE_CHANGED dwParam2=CTONE_ZIPZIP dwParam3= CZIPZIP_FACREQUIRED
|
No change
|
Party A dials the FAC, and Party B accepts the call
|
CallStateChangedEvent, CH=C1, State=Proceeding, Cause=CauseNoError, Reason=Direct, Calling=A, Called=B, OrigCalled=B, LR=NP
|
LINE_CALLSTATE hDevice=hCall-1 dwCallbackInstance=0 dwParam1=PROCEEDING dwParam2=0 dwParam3=0
LINE_CALLINFO hDevice=hCall-1 dwCallbackInstance=0 dwParam1=CALLEDID dwParam2=0 dwParam3=0
|
LINECALLINFO (hCall-1) hLine=A dwCallID=T1 dwOrigin=OUTBOUND dwReason=DIRECT dwCallerID=A dwCalledID=B dwConnectedID=NP dwRedirectionID=NP dwRedirectionID=NP
|
CallStateChangedEvent, CH=C1, State=Ringback, Cause=CauseNoError, Reason=Direct, Calling=A, Called=B, OrigCalled=B, LR=NP
|
LINE_CALLSTATE hDevice=hCall-1 dwCallbackInstance=0 dwParam1=RINGBACK dwParam2=0 dwParam3=0
|
No change
|
Manual Call to a Destination that Requires both FAC and CMC
Table A-40 describes the message sequences for the Forced Authorization and Client Matter Code scenario of a manual call to a destination that requires both FAC and CMC.
Preconditions
Party A is Idle. Party B requires an FAC and a CMC.
Table A-40 Message Sequences for Manual Call to a Destination that Requires both FAC and CMC
Actions
|
CTI Message
|
TAPI Messages
|
TAPI Structures
|
Party A goes off-hook
|
NewCallEvent, CH=C1, GCH=G1, Calling=A, Called=NP, OrigCalled=NP, LR=NP, State=Dialtone, Origin=OutBound, Reason=Direct
|
LINE_APPNEWCALL hDevice=A dwCallbackInstance=0 dwParam1=0 dwParam2=hCall-1 dwParam3=OWNER
|
LINECALLINFO (hCall-1) hLine=A dwCallID=T1 dwOrigin=OUTBOUND dwReason=DIRECT dwCallerID=A dwCalledID=NP dwConnectedID=NP dwRedirectionID=NP dwRedirectionID=NP
|
CallStateChangedEvent, CH=C1, State=Dialtone, Cause=CauseNoError, Reason=Direct, Calling=A, Called=NP, OrigCalled=NP, LR=NP
|
LINE_CALLSTATE hDevice=hCall-1 dwCallbackInstance=0 dwParam1=DIALTONE dwParam2=UNAVAIL dwParam3=0
|
No change
|
Party A dials Party B
|
CallStateChangedEvent, CH=C1, State=Dialing, Cause=CauseNoError, Reason=Direct, Calling=A, Called=NP, OrigCalled=NP, LR=NP
|
LINE_CALLSTATE hDevice=hCall-1 dwCallbackInstance=0 dwParam1=DIALING dwParam2=0 dwParam3=0
|
No change
|
CallToneChangedEvent, CH=C1, Tone=ZipZip, Feature=FACCMC, FACRequired=True, CMCRequired=True
|
LINE_DEVSPECIFIC hDevice=hCall-1 dwCallbackInstance=0 dwParam1=SLDSMT_CALL_TONE_CHANGED dwParam2=CTONE_ZIPZIP dwParam3= CZIPZIP_FACREQUIRED, CZIPZIP_CMCREQUIRED
|
No change
|
Party A dials the FAC
|
CallToneChangedEvent, CH=C1, Tone=ZipZip, Feature=FACCMC, FACRequired=False, CMCRequired=True
|
LINE_DEVSPECIFIC hDevice=hCall-1 dwCallbackInstance=0 dwParam1=SLDSMT_CALL_TONE_CHANGED dwParam2=CTONE_ZIPZIP dwParam3= CZIPZIP_CMCREQUIRED
|
No change
|
Party A dials the CMC, and Party B accepts the call
|
CallStateChangedEvent, CH=C1, State=Proceeding, Cause=CauseNoError, Reason=Direct, Calling=A, Called=B, OrigCalled=B, LR=NP
|
LINE_CALLSTATE hDevice=hCall-1 dwCallbackInstance=0 dwParam1=PROCEEDING dwParam2=0 dwParam3=0
LINE_CALLINFO hDevice=hCall-1 dwCallbackInstance=0 dwParam1=CALLEDID dwParam2=0 dwParam3=0
|
LINECALLINFO (hCall-1) hLine=A dwCallID=T1 dwOrigin=OUTBOUND dwReason=DIRECT dwCallerID=A dwCalledID=B dwConnectedID=NP dwRedirectionID=NP dwRedirectionID=NP
|
CallStateChangedEvent, CH=C1, State=Ringback, Cause=CauseNoError, Reason=Direct, Calling=A, Called=B, OrigCalled=B, LR=NP
|
LINE_CALLSTATE hDevice=hCall-1 dwCallbackInstance=0 dwParam1=RINGBACK dwParam2=0 dwParam3=0
|
No change
|
lineMakeCall to a Destination that Requires an FAC
Table A-41 describes the message sequences for the Forced Authorization and Client Matter Code scenario of lineMakeCall to a destination that requires an FAC.
Preconditions
Party A is Idle. Party B requires an FAC. Note that the scenario is similar if Party requires a CMC instead of an FAC.
Table A-41 Message Sequences for lineMakeCall to a Destination that Requires an FAC
Actions
|
CTI Message
|
TAPI Messages
|
TAPI Structures
|
Party A does a lineMakeCall() to Party B
|
NewCallEvent, CH=C1, GCH=G1, Calling=A, Called=NP, OrigCalled=NP, LR=NP, State=Dialtone, Origin=OutBound, Reason=Direct
|
LINE_CALLINFO hDevice=hCall-1 dwCallbackInstance=0 dwParam1=ORIGIN dwParam2=0 dwParam3=0
LINE_CALLINFO hDevice=hCall-1 dwCallbackInstance=0 dwParam1= REASON, CALLERID dwParam2=0 dwParam3=0
|
LINECALLINFO (hCall-1) hLine=A dwCallID=T1 dwOrigin=OUTBOUND dwReason=DIRECT dwCallerID=A dwCalledID=NP dwConnectedID=NP dwRedirectionID=NP dwRedirectionID=NP
|
CallStateChangedEvent, CH=C1, State=Dialing, Cause=CauseNoError, Reason=Direct, Calling=A, Called=NP, OrigCalled=NP, LR=NP
|
LINE_CALLSTATE hDevice=hCall-1 dwCallbackInstance=0 dwParam1=DIALING dwParam2=0 dwParam3=0
|
No change
|
CallToneChangedEvent, CH=C1, Tone=ZipZip, Feature=FACCMC, FACRequired=True, CMCRequired=False
|
LINE_DEVSPECIFIC hDevice=hCall-1 dwCallbackInstance=0 dwParam1=SLDSMT_CALL_TONE_CHANGED dwParam2=CTONE_ZIPZIP dwParam3= CZIPZIP_FACREQUIRED
|
No change
|
Party A does a lineDial() with the FAC in the dial string and Party B accepts the call
|
NewCallEvent, CH=C1, GCH=G1, Calling=A, Called=NP, OrigCalled=NP, LR=NP, State=Dialtone, Origin=OutBound, Reason=Direct
|
LINE_CALLSTATE hDevice=hCall-1 dwCallbackInstance=0 dwParam1=PROCEEDING dwParam2=0 dwParam3=0
LINE_CALLINFO hDevice=hCall-1 dwCallbackInstance=0 dwParam1=CALLEDID dwParam2=0 dwParam3=0
|
LINECALLINFO (hCall-1) hLine=A dwCallID=T1 dwOrigin=OUTBOUND dwReason=DIRECT dwCallerID=A dwCalledID=B dwConnectedID=NP dwRedirectionID=NP dwRedirectionID=NP
|
CallStateChangedEvent, CH=C1, State=Ringback, Cause=CauseNoError, Reason=Direct, Calling=A, Called=B, OrigCalled=B, LR=NP
|
LINE_CALLSTATE hDevice=hCall-1 dwCallbackInstance=0 dwParam1=RINGBACK dwParam2=0 dwParam3=0
|
No change
|
lineMakeCall to a Destination that Requires Both FAC and CMC
Table A-42 describes the message sequences for the Forced Authorization and Client Matter Code scenario of lineMakeCall to a destination that requires both FAC and CMC. In this scenario, Party A is Idle and Party B requires both an FAC and a CMC.
Table A-42 Message Sequences for lineMakeCall to a Destination that Requires Both FAC and CMC
Actions
|
CTI Message
|
TAPI Messages
|
TAPI Structures
|
Party A does a lineMakeCall() to Party B
|
NewCallEvent, CH=C1, GCH=G1, Calling=A, Called=NP, OrigCalled=NP, LR=NP, State=Dialtone, Origin=OutBound, Reason=Direct
|
LINE_CALLINFO hDevice=hCall-1 dwCallbackInstance=0 dwParam1=ORIGIN dwParam2=0 dwParam3=0
LINE_CALLINFO hDevice=hCall-1 dwCallbackInstance=0 dwParam1= REASON, CALLERID dwParam2=0 dwParam3=0
|
LINECALLINFO (hCall-1) hLine=A dwCallID=T1 dwOrigin=OUTBOUND dwReason=DIRECT dwCallerID=A dwCalledID=NP dwConnectedID=NP dwRedirectionID=NP dwRedirectionID=NP
|
CallStateChangedEvent, CH=C1, State=Dialing, Cause=CauseNoError, Reason=Direct, Calling=A, Called=NP, OrigCalled=NP, LR=NP
|
LINE_CALLSTATE hDevice=hCall-1 dwCallbackInstance=0 dwParam1=DIALING dwParam2=0 dwParam3=0
|
No change
|
CallToneChangedEvent, CH=C1, Tone=ZipZip, Feature=FACCMC, FACRequired=True, CMCRequired=True
|
LINE_DEVSPECIFIC hDevice=hCall-1 dwCallbackInstance=0 dwParam1=SLDSMT_CALL_TONE_CHANGED dwParam2=CTONE_ZIPZIP dwParam3= CZIPZIP_FACREQUIRED, CZIPZIP_CMCREQUIRED
|
No change
|
Party A does a lineDial() with the FAC in the dial string
|
CallToneChangedEvent, CH=C1, Tone=ZipZip, Feature=FACCMC, FACRequired=False, CMCRequired=True
|
LINE_DEVSPECIFIC hDevice=hCall-1 dwCallbackInstance=0 dwParam1=SLDSMT_CALL_TONE_CHANGED dwParam2=CTONE_ZIPZIP dwParam3= CZIPZIP_CMCREQUIRED
|
No change
|
Party A does a lineDial() with the CMC in the dial string and Party B accepts the call
|
CallStateChangedEvent, CH=C1, State=Proceeding, Cause=CauseNoError, Reason=Direct, Calling=A, Called=B, OrigCalled=B, LR=NP
|
LINE_CALLSTATE hDevice=hCall-1 dwCallbackInstance=0 dwParam1=PROCEEDING dwParam2=0 dwParam3=0
LINE_CALLINFO hDevice=hCall-1 dwCallbackInstance=0 dwParam1=CALLEDID dwParam2=0 dwParam3=0
|
LINECALLINFO (hCall-1) hLine=A dwCallID=T1 dwOrigin=OUTBOUND dwReason=DIRECT dwCallerID=A dwCalledID=B dwConnectedID=NP dwRedirectionID=NP dwRedirectionID=NP
|
CallStateChangedEvent, CH=C1, State=Ringback, Cause=CauseNoError, Reason=Direct, Calling=A, Called=B, OrigCalled=B, LR=NP
|
LINE_CALLSTATE hDevice=hCall-1 dwCallbackInstance=0 dwParam1=RINGBACK dwParam2=0 dwParam3=0
|
No change
|
Timeout Waiting for FAC or Invalid FAC
Table A-43 describes the message sequences for the Forced Authorization and Client Matter Code scenario of timeout waiting for FAC or invalid FAC entered. Here, Party A is Idle and Party B requires an FAC.
The scenario remains similar if Party B required a CMC instead of a FAC.
Table A-43 Message Sequences for Timeout Waiting for FAC or Invalid FAC
Actions
|
CTI Message
|
TAPI Messages
|
TAPI Structures
|
Party A does a lineMakeCall() to Party B
|
NewCallEvent, CH=C1, GCH=G1, Calling=A, Called=NP, OrigCalled=NP, LR=NP, State=Dialtone, Origin=OutBound, Reason=Direct
|
LINE_CALLINFO hDevice=hCall-1 dwCallbackInstance=0 dwParam1=ORIGIN dwParam2=0 dwParam3=0
LINE_CALLINFO hDevice=hCall-1 dwCallbackInstance=0 dwParam1= REASON, CALLERID dwParam2=0 dwParam3=0
|
LINECALLINFO (hCall-1) hLine=A dwCallID=T1 dwOrigin=OUTBOUND dwReason=DIRECT dwCallerID=A dwCalledID=NP dwConnectedID=NP dwRedirectionID=NP dwRedirectionID=NP
|
CallStateChangedEvent, CH=C1, State=Dialing, Cause=CauseNoError, Reason=Direct, Calling=A, Called=NP, OrigCalled=NP, LR=NP
|
LINE_CALLSTATE hDevice=hCall-1 dwCallbackInstance=0 dwParam1=DIALING dwParam2=0 dwParam3=0
|
No change
|
CallToneChangedEvent, CH=C1, Tone=ZipZip, Feature=FACCMC, FACRequired=True, CMCRequired=False
|
LINE_DEVSPECIFIC hDevice=hCall-1 dwCallbackInstance=0 dwParam1=SLDSMT_CALL_TONE_CHANGED dwParam2=CTONE_ZIPZIP dwParam3= CZIPZIP_FACREQUIRED
|
No change
|
T302 timer times out waiting for digits, or Party A does a lineDial() with an invalid FAC
|
CallStateChangedEvent, CH=C1, State=Disconnected, Cause= CtiNoRouteToDDestination, Reason=FACCMC, Calling=A, Called=NP, OrigCalled=NP, LR=NP
|
LINE_CALLSTATE hDevice=hCall-1 dwCallbackInstance=0 dwParam1=DISCONNECTED dwParam2=DISCONNECT MODE_FACCMC1 dwParam3=0
|
No change
|
CallStateChangedEvent, CH=C1, State=Idle, Cause=CtiCauseNoError, Reason=Direct, Calling=A, Called=NP, OrigCalled=NP, LR=NP
|
LINE_CALLSTATE hDevice=hCall-1 dwCallbackInstance=0 dwParam1=IDLE dwParam2=0 dwParam3=0
|
No change
|
1 dwParam2 get set to DISCONNECTMODE_FACCMC if the extension version on the line is set to at least 0x00050000. Otherwise, dwParam2 get set to DISCONNECTMODE_UNAVAIL.
|
Hunt List
Phones - A, B, C and X
Hunt Pilots: HP1
Member LG1, LG2, LG3
HP2.
Member LG11, LG12, LG13 are CTI port
Pickup Group1 : has LG1, lG2, LG3, X
Pickup Group2: has HP1, X
TSP app opens all lines, otherwise will be stated in use case.
Basic Hunt List Call
Table A-44 Message Sequence for Basic Hunt List Call
Action
|
Events, Requests and Responses
|
App initiates call from A to HP1 and call is offered to LG1
|
At A:
LINE_CALLSTATE - RINGBACK
Caller = A
Called = HP1,
HuntPilot = HP1
At LG1:
LINE_CALLSTATE - ACCEPTED
Caller = A,
Called = HP1
HuntPilot = HP1
|
LG1 answers the call
|
At A:
LINE_CALLSTATE - CONNECTED
Caller = A
Called = HP1
HuntPilot = HP1
Connected = LG1
HuntPilot = HP1
At LG1:
LINE_CALLSTATE - CONNECTED
Caller = A
Called = HP1
HuntPilot = HP1
Connected = A
|
LG2 answers the call
|
At A:
LINE_CALLSTATE - CONNECTED
Caller = A
Called = HP1
HuntPilot = HP1
Connected = LG2
HuntPilot = HP1
At LG2:
LINE_CALLSTATE - CONNECTED
Caller = A
Called = HP1
HuntPilot = HP1
Connected = A
|
Variance : perform the test with all HuntList algorithm
Top-Down algorithm
Circular algorithm
Longest Idle Time algorithm
|
|
Hunt List Call Moved to Next Member
Table A-45 Message Sequence for Hunt List Call Moved to Next Member
Action
|
Events, Requests and Responses
|
App initiates call from A to HP1 and call is offered to LG1
|
At A:
LINE_CALLSTATE - RINGBACK
Caller = A
Called = HP1,
Called Name = HP1
HuntPilot = HP1
At LG1:
LINE_CALLSTATE - ACCEPTED
Caller = A,
Called = HP1,
HuntPilot = HP1
|
Call moves from LG1 to LG2
|
Call at LG1 goes IDLE
At LG2:
LINE_CALLSTATE - ACCEPTED
Caller = A,
Called = HP1,
HuntPilot = HP1
|
LG2 answers the call
|
At A:
LINE_CALLSTATE - CONNECTED
Caller = A
Called = HP1
HuntPilot = HP1
Connected = LG2
HuntPilot = HP1
At LG2:
LINE_CALLSTATE - CONNECTED
Caller = A
Called = HP1
HuntPilot = HP1
Connected = A
|
Hunt List Calls FWNA and FWNA is not Configured on HuntPilot
Table A-46 Message Sequence for Hunt List Calls FWNA and FWNA is not Configured on HuntPilot
Action
|
Events, Requests and Responses
|
App initiates call from A to HP1 and call is offered to LG1
|
At A:
LINE_CALLSTATE - RINGBACK
Caller = A
Called = HP1,
HuntPilot = HP1
At LG1:
LINE_CALLSTATE - ACCEPTED
Caller = A,
Called = HP1,
HuntPilot = HP1
|
Call moves from LG1 to LG2
|
Call at LG1 goes IDLE
At LG2:
LINE_CALLSTATE - ACCEPTED
Caller = A,
Called = HP1,
HuntPilot = HP1
|
Call moves from LG2 to LG3
|
Call at LG2 goes IDLE
At LG3:
LINE_CALLSTATE - ACCEPTED
Caller = A,
Called = HP1,
HuntPilot = HP1
|
Call is aborted since LG3 does not answer the call.
|
At A: call will go IDLE
LINEDISCONNECTMODE_NOANSWER?
At LG3: call will go IDLE
LINEDISCONNECTMODE_NOANSWER ?
|
Hunt List Call FWNA with FWNA to B
Table A-47 Message Sequence for Hunt List Call FWNA with FWNA to B
Action
|
Events, Requests and Responses
|
App initiates call from A to HP1 and call is offered to LG1
|
At A:
LINE_CALLSTATE - RINGBACK
Caller = A
Called = HP1,
HuntPilot = HP1
At LG1:
LINE_CALLSTATE - ACCEPTED
Caller = A,
Called = HP1,
HuntPilot = HP1
|
Call moves from LG1 to LG2
|
Call at LG1 goes IDLE
At LG2:
LINE_CALLSTATE - ACCEPTED
Caller = A,
Called = HP1,
HuntPilot = HP1
|
Call moves from LG2 to LG3
|
Call at LG2 goes IDLE
At LG3:
LINE_CALLSTATE - ACCEPTED
Caller = A,
Called = HP1,
HuntPilot = HP1
|
Call is FWNA to B, and B answer
|
At A:
LINE_CALLSTATE - CONNECTED
Caller = A
Called = HP1
HuntPilot = HP1
Connectedid = B
At LG3: call will go IDLE
At B:
LINE_CALLSTATE - CONNECTED
Caller = A
Called = HP1
HuntPilot = HP1
Connected = A
Redirecting = HP1
Redirection = B
|
Hunt List Call Dropped when Hunt List is Busy and FWB is not Configured
Table A-48 Message Sequence for Hunt List Call Dropped when Hunt List is Busy and FWB is not Configured
Action
|
Events, Requests and Responses
|
Make LG1, LG2, LG3 busy
App initiates call from A to HP1
|
At A:
Call disconnected after it is initiated.
LINEDISCONNECTMODE_BUSY
|
Hunt List Call is Forwarded when Hunt List is Busy and FWB is Configured to B
Table A-49 Message Sequence for Hunt List Call is Forwarded when Hunt List is Busy and FWB is Configured to B
Action
|
Events, Requests and Responses
|
Make LG1, LG2, LG3 busy
App initiates call from A to HP1 and the call is forwarded to B
|
At A:
LINE_CALLSTATE - RINGBACK
Caller = A
Called = HP1,
Called Name = HP1
HuntPilot = HP1
At B:
LINE_CALLSTATE - ACCEPTED
Caller = A
Called = HP1,
HuntPilot = HP1
Redirecting = HP1
Redirection = B
|
HuntList Call Redirected when in ACCEPT State
Table A-50 Message Sequence for HuntList Call Redirected when in ACCEPT State
Action
|
Events, Requests and Responses
|
App initiates call from A to HP1 and the call is offered at LG1
|
At A:
LINE_CALLSTATE - RINGBACK
Caller = A
Called = HP1,
HuntPilot = HP1
At LG1:
LINE_CALLSTATE - ACCEPTED
Caller = A
Called = HP1,
HuntPilot = HP1
|
LG1 redirects call to B
|
At A:
LINE_CALLSTATE - RINGBACK
Caller = A
Called = HP1,
HuntPilot = HP1
At LG1: Call goes IDLE
At B:
LINE_CALLSTATE - ACCEPTED
Caller = A
Called = HP1,
HuntPilot = HP1
RedirectingID = HP1
RedirectionID = B
|
Hunt List Call Redirected when in Connected State
Table A-51 Message Sequence for Hunt List Call Redirected when in Connected State
Action
|
Events, Requests and Responses
|
App initiates call from A to HP1 and the call is offered at LG1
|
At A:
LINE_CALLSTATE - RINGBACK
Caller = A
Called = HP1,
HuntPilot = HP1
At LG1:
LINE_CALLSTATE - ACCEPTED
Caller = A
Called = HP1,
HuntPilot = HP1
|
LG1 answers the call
|
At A:
LINE_CALLSTATE - CONNECTED
Caller = A
Called = HP1
HuntPilot = HP1
Connected = LG1
HuntPilot = HP1
At LG1:
LINE_CALLSTATE - CONNECTED
Caller = A
Called = HP1
HuntPilot = HP1
Connected = A
|
LG1 redirects call to B
|
At A :
LINE_CALLSTATE - RINGBACK
Caller = A
Called = HP1
HuntPilot = HP1
Connected = LG1
HuntPilot = HP1
RedirectingID = LG1
RedirectionID = B
At LG1: Call goes IDLE
At B:
LINE_CALLSTATE - ACCEPTED
Caller = A
Called = HP1,
HuntPilot = HP1
RedirectingID = LG1
RedirectionID = B
|
Hunt List Call - Member is CTI or RP Port
Table A-52 Message Sequence for Hunt List Call - Member is CTI or RP Port
Action
|
Events, Requests and Responses
|
Same as 8.1, but with CTI port
|
Similar expectation
|
Hunt List Call Moved to Different Line Group Members and Answered by CTI Port
Table A-53 Message Sequence for Hunt List Call Moved to Different Line Group Members and Answered by CTI Port
Action
|
Events, Requests and Responses
|
Same as 8.2, but with CTI port
|
Similar expectation
|
Hunt List Call is Redirected to Another Hunt List
Table A-54 Message Sequence for Hunt List Call is Redirected to Another Hunt List
Action
|
Events, Requests and Responses
|
App initiates call from A to HP1 and the call is offered at LG1 , and LG1 answers
|
At A:
LINE_CALLSTATE - CONNECTED
Caller = A
Called = HP1
HuntPilot = HP1
Connected = LG1
HuntPilot = HP1
At LG1:
LINE_CALLSTATE - CONNECTED
Caller = A
Called = HP1
HuntPilot = HP1
Connected = A
|
A redirects the call to HP2 and call offered to LG11
|
At A: Call goes IDLE
At LG1:
LINE_CALLSTATE - RINGBACK
Caller = LG1
HuntPilot = HP1
Called = HP1
HuntPilot = HP1
RedirectionID = HP2
RedirectingID = A
At LG11:
LINE_CALLSTATE - ACCEPTED
Caller = LG1
HuntPilot = HP1
Called = HP2,
HuntPilot = HP2
RedirectionID = HP2
RedirectingID = A
|
LG11 answers the call
|
At LG1:
LINE_CALLSTATE - CONNECTED
Caller = LG1
HuntPilot = HP1
Called = HP1
HuntPilot = HP1
Connected = LG11
HuntPilot = HP2
RedirectingID = A
RedirectionID =HP2
At LG11:
LINE_CALLSTATE - OFFERING
Caller = LG1
HuntPilot = HP1
Called = HP2,
HuntPilot = HP2
Connected = LG1
HuntPilot = HP1
RedirectionID = HP2
RedirectingID = A
|
Hunt List Call is Consult Transferred to Another Line
Table A-55 Message Sequence for Hunt List Call is Consult Transferred to Another Line
Action
|
Events, Requests and Responses
|
App initiates call from A to HP1 and the call is offered at LG1 , and LG1 answers
|
At A:
LINE_CALLSTATE - CONNECTED
Caller = A
Called = HP1
HuntPilot = HP1
Connected = LG1
HuntPilot = HP1
At LG1:
LINE_CALLSTATE - CONNECTED
Caller = A
Called = HP1
HuntPilot = HP1
Connected = A
|
LG1 setup transfer to B, B answer
|
At LG1
Call-1 is put on HOLD
Call-2
LINE_CALLSTATE - CONNECTED
Caller = LG1
Called = B
Connected = B
At B:
LINE_CALLSTATE - CONNECTED
Caller = LG1
Called = B
Connected = LG1
|
LG1 completes transfer
|
At A :
LINE_CALLSTATE - CONNECTED
Caller = A
Called = HP1
HuntPilot = HP1
Connected = B
RedirectionID = B
RedirectingID = LG1
At LG1: both call goes IDLE
At B:
LINE_CALLSTATE - CONNECTED
Caller = A
Called = B
Connected = A
RedirectionID = B
RedirectingID = LG1
|
Hunt List Call Direct Transferred to Another Line
Table A-56 Message Sequence for Hunt List Call Direct Transferred to Another Line
Action
|
Events, Requests and Responses
|
App initiates call from A to HP1 and the call is offered at LG1 , and LG1 answers
|
At A:
LINE_CALLSTATE - CONNECTED
Caller = A
Called = HP1
HuntPilot = HP1
Connected = LG1
HuntPilot = HP1
At LG1:
LINE_CALLSTATE - CONNECTED
Caller = A
Called = HP1
HuntPilot = HP1
Connected = LG1
HuntPilot = HP1
|
LG1 calls to B, B answer
|
At LG1
Call-1 is put on HOLD
Call-2
LINE_CALLSTATE - CONNECTED
Caller = LG1
Called = B
Connected = B
At B:
LINE_CALLSTATE - CONNECTED
Caller = LG1
Called = B
Connected = B
|
LG1 performs Direct Transfer
|
At A :
LINE_CALLSTATE - CONNECTED
Caller = A
Called = HP1
HuntPilot = HP1
Connected = B
RedirectionID = B
RedirectingID = LG1
At LG1: both call goes IDLE
At B:
LINE_CALLSTATE - CONNECTED
Caller = A
Called = B
Connected = A
RedirectionID = B
RedirectingID = LG1
|
Hunt List Call is Conferenced to Another Line
Table A-57 Message Sequence for Hunt List Call is Conferenced to Another Line
Action
|
Events, Requests and Responses
|
App initiates call from A to HP1 and the call is offered at LG1 , and LG1 answers
|
At A:
LINE_CALLSTATE - CONNECTED
Caller = A
Called = HP1
HuntPilot = HP1
Connected = LG1
HuntPilot = HP1
At LG1:
LINE_CALLSTATE - CONNECTED
Caller = A
Called = HP1
HuntPilot = HP1
Connected = A
|
LG1 setup conference to B, B answers the call
|
At LG1
ONHOLDPENDINGCONF
CONFERECED
Caller = A
Called = HP1
HuntPilot = HP1
Connected = LG1
HuntPilot = HP1
CONNECTED
Caller = LG1
Called = B
Connected = B
At B:
LINE_CALLSTATE - CONNECTED
Caller = LG1
Called = B
Connected = B
|
LG1 completes conference
|
At A:
CONNECTED
CONFERENCED
Caller = A
Called = HP1
HuntPilot = HP1
Connected = LG1
HuntPilot = HP1
CONFERENCED
Caller = A
Called = B
Connected = B
At LG1:
CONNECTED
CONFERECED
Caller = A
Called = HP1
HuntPilot = HP1
Connected = A
CONFERENCED
Caller = LG1
Called = B
Connected = B
At B:
CONNECTED
CONFERENCED
Caller = LG1
Called = B
Connected = LG1
CONFERECED
Caller = B
Called = A
Connected = A
|
Hunt List Call is Joined to Another Line
Table A-58 Message Sequence for Hunt List Call is Joined to Another Line
Action
|
Events, Requests and Responses
|
App initiates call from A to HP1 and the call is offered at LG1 , and LG1 answers
|
At A:
LINE_CALLSTATE - CONNECTED
Caller = A
Called = HP1
HuntPilot = HP1
Connected = LG1
HuntPilot = HP1
At LG1:
LINE_CALLSTATE - CONNECTED
Caller = A
Called = HP1
HuntPilot = HP1
Connected = A
|
LG1 calls B, B answers the call
|
At LG1
Call-1: ONHOLD
Caller = A
Called = HP1
HuntPilot = HP1
Connected = A
Call-2: CONNECTED
Caller = LG1
Called = B
Connected = B
At B:
LINE_CALLSTATE - CONNECTED
Caller = LG1
Called = B
Connected = B
|
LG1 performs Join
|
At A:
CONNECTED
CONFERENCED
Caller = A
Called = HP1
HuntPilot = HP1
Connected = LG1
HuntPilot = HP1
CONFERENCED
Caller = A
Called = B
Connected = B
At LG1:
CONNECTED
CONFERECED
Caller = A
Called = HP1
HuntPilot = HP1
Connected = A
CONFERENCED
Caller = LG1
Called = B
Connected = B
At B:
CONNECTED
CONFERENCED
Caller = LG1
Called = B
Connected = LG1
CONFERECED
Caller = B
|