# nccHoldCall

Places a call on hold.

#### Prototype

DWORD nccHoldCall ( NCC_CALLHD callhd, void *holdparms )

Argument | Description
callhd | Handle of the call being placed on hold.
holdparms | Pointer to a protocol-specific Natural Access call hold parameter structure. Specify NULL to use default values. See the protocol-specific documentation for details.

#### Return values

Return value | Description
SUCCESS |
CTAERR_INVALID_HANDLE | The call handle is not valid. It may have been released.
CTAERR_INVALID_STATE | The line is not in the appropriate state to invoke this function.
CTAERR_SVR_COMM | A server communication error occurred.
NCCERR_INVALID_CALL_STATE | The call is not in the connected state. The protocol requires a call to be in the connected state before it can be put on hold.
NCCERR_NOT_CAPABLE | The protocol does not support the capability of putting a call on hold.

#### Events

Event | Description
NCCEVN_CALL_HELD | The call was successfully put on hold. The line is in an idle state.
NCCEVN_HOLD_REJECTED | The request to put a call on hold was rejected. The value field contains information on why the request was rejected. If the NCC_CAP_HOLD_IN_ANY_STATE bit is set in the capabilitymask returned by nccQueryCapability, depending upon what state the call is in, you may receive other events that are valid in that state. Refer to the event/call state chart in NCC events and call states for details.

#### Details

nccHoldCall puts a call on hold. There is no call state transition. A call on hold is no longer active. The line state changes to idle since there are no active calls currently on the line.

The call is on hold only after the application receives an NCCEVN_CALL_HELD event. The held field in the NCC_CALL_STATUS structure is set to a non-zero value.

Use nccRetrieveCall to release a call from being held.

Some protocols do not support the capability to put a call on hold. The application can determine if the protocol supports call hold/retrieve by examining the NCC_CAP_HOLD_CALL bit in the capabilitymask returned by nccQueryCapability.

Some protocols allow a call to be put on hold only from the connected state. The application can determine whether or not a call can be put on hold from any state by examining the NCC_CAP_HOLD_IN_ANY_STATE bit in the capabilitymask returned by nccQueryCapability.

The application can perform media functions on a held call, for example, play user voice file or play silence, using a Natural Access media service.

#### See also

nccTransferCall