Global Call API for HMP on Windows Programming Guide — August 2006 65
Call State Models
describes the call state transitions that occur when the functions are used. This section also
provides figures that illustrate the call state transitions for advanced call model functions.
Note: The hold, retrieve, and transfer functions are supported by particular protocols for the ISDN, E1
(PDKRT only) and T1 (PDKRT only) technologies. For more information, see the function
descriptions in the Global Call API Library Reference and the appropriate Global Call Technology
Guide.
3.5.2 Advanced Call States for Hold and Transfer
Two advanced call states are appended to the basic call model to support call hold and transfer.
These advanced call states are as follows:
On-Hold State (GCST_ONHOLD)
A call must be in the Connected call state to be put on hold. When a call is put on hold, the
remote party is often routed via the local switch or network to receive background music while
temporarily suspended from conversing with the local party. The call remains on hold until the
application retrieves the call, effectively re-transitioning it into the Connected,
“conversational” state. The application may not issue a gc_MakeCall() or receive another call
while a call is in the On-hold state.
There is no limit to the number of times a call may be placed in and retrieved from the On-hold
state. In addition, either the called party or the calling party can put the call in the On-hold
state.
The On-hold call state applies only to call scenarios where a single call is present on the
specified channel. The On-hold call state does not apply to call transfer scenarios that use the
On-Hold Pending Transfer call state instead.
On-Hold Pending Transfer State (GCST_ONHOLDPENDINGTRANSFER)
During a supervised call transfer, two calls are made accessible to the local channel. Both calls
must be in the Connected call state. The call that is temporarily suspended from conversing is
considered to be in the On-hold Pending Transfer call state. This call is often routed via the
local switch or network to receive background music while awaiting completion of the call
transfer.
Both the suspended call and the currently active call may be swapped at any time so that the
call that was in the On-hold Pending Transfer state is now actively connected, while the former
active call is placed in the On-hold Pending Transfer state. There is no limit to the number of
times two calls may be swapped between the On-hold Pending Transfer and “Connected”
states. The completion of the call transfer is independent of which call is active or on hold.
3.5.3 Call Hold
The advanced call model allows the application to place a call on hold. The Global Call API
provides the following functions to place a call on hold and, subsequently, to retrieve the call on
hold:
gc_HoldCall( )
place a call on hold
gc_RetrieveCall( )
retrieve a call from hold