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

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 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 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 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 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 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 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 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 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 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 10. This Behavior Is Also Seen During Consult Operation. 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 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 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 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 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 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 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 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 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 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 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 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 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 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.

Announcement Call

Prerequisites

Pre-conditions to all announcement call use cases, unless specified otherwise:

  • CTIRD (CTI Remote Device -Name: CTIRD-1)
    • Remote Destinations configured on CTIRD-1:
      • RD1-(Name: Mobile, Number: 914086271309)
    • Line-A (DN -1000) - Line-A configured on CTIRD-1 (shared line of Enterprise
    • DN -1000 configured on EP-1)
  • EP-1 (Enterprise Phone - SCCP -IP Phone)
    • Line-A' -DN -1000 configured on EP-1
  • Provider is opened ( lineInitializeEx successfully executed)
  • All relevant lines are opened with Extension version 0x000D0000 and in service

Persistent call has been created on A / RD-1.

Announcement with ID "WelcomeID" is defined on CUCM.

Table 24. Create Announcement Call
Action TAPI Messages TAPI Structure

Create Announcement Call:

LineMakeCall() on Line-A:

lpCallParams:

devSpecific =

Cisco_ CallParamsDevSpecific {

dwCallPriority = 0x00000000;

dwDevSpecificFlags = 0x00000004

(Cisco_ CALLPARAMS_ DEVSPECIFICFLAGS_ ANNOUNCEMENTCALL)

}

CallData = "WelcomeID"

LINE_ CALLSTATE

hDevice = hCall-2 dwParam1 = 0x40000002

(CLDSMT_ ANNOUNCEMENT_ CALL_ STATE + OFFERING)

LINE_ CALLSTATE dwParam1 = 0x40000004

(CLDSMT_ ANNOUNCEMENT_ CALL_ STATE + ACCEPTED)

LINE_ CALLSTATE

hDevice = hCall-2 dwParam1 = 0x40000100

(CLDSMT_ ANNOUNCEMENT_ CALL_ STATE + CONNECTED)

LINE_ CALLDEVSPECIFIC

hDevice = hCall-2

dwParam1 = SLDSMT_ ANNOUNCEMENT_ STARTED

dwParam2 = 0 dwParam3 = 0

LINECALLINFO (hCall-2) dwOrigin = OUTBOUND dwReason = DIRECT CallerID = 5000

CallerIDName = RD5000 CalledID = A

ConnectedID = 5000

In DevSpecific portion:

CallAttributeType = 0x00008000 ( TSPCallAttribute_ AnnouncementCall)

LINE_ CALLDEVSPECIFIC

hDevice = hCall-2

dwParam1 = SLDSMT_ ANNOUNCEMENT_ ENDED

dwParam2 = 0 dwParam3 = 0

LINE_ CALLSTATE dwParam1

=

0x40004000

(CLDSMT_ ANNOUNCEMENT_ CALL_ STATE + DIS

CONNECTED)

LINE_ CALLSTATE dwParam1 = 0x40000001

(CLDSMT_ ANNOUNCEMENT_ CALL_ STATE + IDLE

)

Persistent call has been created on A / RD-1.

Announcement with ID "WelcomeID" is defined on CUCM.

Table 25. Drop Announcement Call
Action TAPI Messages TAPI Structures

Create Announcement Call:

LineMakeCall() on Line-A:

lpCallParams:

devSpecific =

Cisco_ CallParamsDevSpecific {

dwCallPriority = 0x00000000;

dwDevSpecificFlags = 0x00000004

(Cisco_ CALLPARAMS_ DEVSPECIFICFLAGS_ ANNOUNCEMENTCALL)

}

CallData = "WelcomeID"

LINE_ CALLSTATE

hDevice = hCall-2 dwParam1 = 0x40000002

(CLDSMT_ ANNOUNCEMENT_ CALL_ STATE + OFFERING)

LINE_ CALLSTATE dwParam1 = 0x40000004

(CLDSMT_ ANNOUNCEMENT_ CALL_ STATE + ACCEPTED)

LINE_ CALLSTATE

hDevice = hCall-2 dwParam1 = 0x40000100

(CLDSMT_ ANNOUNCEMENT_ CALL_ STATE + CONNECTED)

LINE_ CALLDEVSPECIFIC

hDevice = hCall-2

dwParam1 = SLDSMT_ ANNOUNCEMENT_ STARTED

dwParam2 = 0 dwParam3 = 0

LINECALLINFO (hCall-2) dwOrigin = OUTBOUND dwReason = DIRECT CallerID = 5000

CallerIDName = RD5000 CalledID = A

ConnectedID = 5000

In DevSpecific portion:

CallAttributeType = 0x00008000 ( TSPCallAttribute_ AnnouncementCall)

Drop AnnouncementtCall:

(while announcement being played)

LineDrop() on Line-A:

LINE_ CALLDEVSPECIFIC

hDevice = hCall-2

dwParam1 = SLDSMT_ ANNOUNCEMENT_ ENDED

dwParam2 = 0 dwParam3 = 0

LINE_ CALLSTATE dwParam1 = 0x40004000 (CLDSMT_ ANNOUNCEMENT_ CALL_ STATE + DIS CONNECTED)

LINE_ CALLSTATE dwParam1 = 0x40000001

(CLDSMT_ ANNOUNCEMENT_ CALL_ STATE + IDLE

)

Precondition: No Persistent call on CTIRD-1

Table 26. Negative -Create Announcement Call Failed / No Persistent Call
Action TAPI Messages TAPI Structures

Create Announcement Call:

LineMakeCall() on Line-A:

lpCallParams:

devSpecific =

Cisco_ CallParamsDevSpecific {

dwCallPriority = 0x00000000;

dwDevSpecificFlags = 0x00000004

(Cisco_ CALLPARAMS_ DEVSPECIFICFLAGS_ ANNOUNCEMENTCALL)

}

CallData = "WelcomeID"

LINE_ REPLY

LINEERR_ NO_ PERSISTENT_ CALL_ EXISTS (0xC0000021)

Blind Transfer

The following table describes the message sequences for Blind Transfer when A calls B, B answers, and A and B are connected.

Table 27. 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 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 28. 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 29. 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 Sets Up Conference 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 30. Call Initiated From TAPI From Phone A and B on Cluster 1, B Sets Up Conference 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 31. 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 32. 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 33. 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:

"Queue Calls" check box is selected.

“Display Line Group Member DN as Connected Party" check box is selected.

HP1: LG1

HP2: LG1

A, B (IP phones/CTI Ports)

Table 34. Basic Hunt List Call (HP1 Has at Least 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 35. 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 36. 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 37. 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 38. 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 39. 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 40. 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

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

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

Call Recording for SIP or TLS Authenticated calls

Scenario One

Recording behavior for an authenticated Phone when Service Parameter Authenticated Phone Recording set to Do not Allow Recording.

A is an Authenticated Phone having selective recording configured and Recording Profile assigned to it. Caller A calls B. B answers the call.

Action

Events

A issues startrecording request by lineDevSpecific

Recording fails with error Response= CTIERR_SECURITY_CAPABLITY_MISMATCH as LINEERR_SECURITY_CAPABILITIES_MISMATCH

Scenario Two

Recording behavior for an authenticated Phone when Service Parameter Authenticated Phone Recording set to Allow Recording.

A is an Authenticated Phone having selective recording configured and Recording Profile assigned to it. Caller A calls B. B answers the call.

Action

Events

A issues startrecording request by lineDevSpecific

Recording session gets established between the agent phone and the recorder

Along with the regular events for call answer, the following events will also be delivered to the call observer:

LINE_CALLDEVSPECIFIC

hDevice=hCall-1

dwCallbackInstance=0

dwParam1= SLDSMT_RECORDING_ STARTED

dwParam2=0

dwParam3=0

A is an Authenticated Phone having auto recording configured and Recording Profile assigned to it. Caller A calls B. B answers the call.

Action

Events

When B answers

Along with the regular events for call answer, the following events will also be delivered to the call observer:

LINE_CALLDEVSPECIFIC

hDevice=hCall-1

dwCallbackInstance=0

dwParam1= SLDSMT_RECORDING_ STARTED

dwParam2=0

dwParam3=0

CCMEncryption Enhancements

Precondition: CTI service Parameter - "Require Public Key encryption" = true/false

Table 42. CiscoTSP Connecting to 10.x CUCM
Action TAPI Messages TAPI Structures
PhoneInitializeEx/LineInitializeEx Devices are Enumerated/ Lines are Enumerated

Note


Applications would be able to control /monitor devices/Lines as before no change.

Variant: Test the same with Secure CUCM and Secure Connection between CiscoTSP and CTI.


Precondition: CTI service Parameter - "Require Public Key encryption" = False

Table 43. 9.x CiscoTSP Connecting to 10.x CUCM
Action TAPI Messages TAPI Structures
PhoneInitializeEx/LineInitializeEx Devices are Enumerated/ Lines are Enumerated

Note


Applications would be able to control /monitor devices/Lines as before no change

Precondition: CTI service Parameter - "Require Public Key encryption" = False

Table 44. 9.x CiscoTSP Connecting to 10.x CUCM
Action TAPI Messages TAPI Structures
PhoneInitializeEx/LineInitializeEx Initialization fails and CiscoTSP devices won't be Enumerated.

Notifier will pop-up error message indicating that Provider Init failed.

Error - Provider Init failed - Incompatible protocol version

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

OnHoldPendConf

Conference – Caller = C, Called = A, Connected = A

Connected -Caller = C, Called = D, Connected = D

At D:

Connected -Caller = C, Called = D, Connected = C

C issues a lineAddToConference to D

At A:

Conference – Caller = A, Called = B, Connected = B

Connected

Conference – Caller = A, Called = C, Connected = C

Conference – Caller = A, Called = D, Connected = D

At B:

Conference – Caller = A, Called = B, Connected = A

Connected

Conference – Caller = B, Called = C, Connected = C

Conference – Caller = B, Called = D, Connected = D

At C:

Conference – Caller = B, Called = C, Connected = B

Connected

Conference – Caller = C, Called = A, Connected = A

Conference – Caller = C, Called = D, Connected = D

At D:

Conference – Caller = C, Called = D, Connected = C

Connected

Conference – Caller = D, Called = A, Connected = A

Conference – Caller = D, Called = B, Connected = B

Chaining Two Ad Hoc Conferences Using Join

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

CTI 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 Does Not 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:

CiscoLineDevSpecific AddRemoteDestination 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":

CiscoLineDevSpecific UpdateRemoteDestination 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":

CiscoLineDevSpecific UpdateRemoteDestination 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":

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