Protocol capabilities

Different protocols support different call control features. After a protocol is started, the application can query it to determine the features it supports. This information is important for an application supporting multiple protocols because it determines which function calls are valid, and which events the application can expect to receive.

To retrieve protocol capability information, the application calls nccQueryCapability. This synchronous function returns a capabilitymask, where each bit in the mask indicates if the protocol supports a particular capability. The following table describes each bit in the capabilitymask:

Mnemonic

If the bit is set...

NCC_CAP_ACCEPT_CALL

The protocol supports the accepting call state in the inbound call control state machine. The application can invoke nccAcceptCall.

NCC_CAP_SET_BILLING

The application can set billing parameters using nccSetBilling.

NCC_CAP_OVERLAPPED_SENDING

The protocol supports overlapped sending of digits, using nccSendDigits.

NCC_CAP_HOLD_CALL

The protocol allows calls to be placed on hold using nccHoldCall. Calls can then be retrieved using nccRetrieveCall.

NCC_CAP_SUPERVISED_TRANSFER

The protocol supports supervised call transfer. The application can invoke nccTransferCall.

NCC_CAP_AUTOMATIC_TRANSFER

The protocol supports blind call transfer. The application can invoke nccAutomaticTransfer.

NCC_CAP_TWOCHANNEL_TRANSFER

The protocol supports two channel call transfer. The application can invoke nccTransferCall.

NCC_CAP_EXTENDED_CALL_STATUS

The protocol supports the ability to get protocol-specific call status information using nccGetExtendedCallStatus.

NCC_CAP_SEND_CALL_MESSAGE

The protocol supports sending of a protocol-specific call message using nccSendCallMessage.

NCC_CAP_SEND_LINE_MESSAGE

The protocol supports sending of a protocol-specific line message using nccSendLineMessage.

NCC_CAP_HOLD_IN_ANY_STATE

The protocol allows a call to be placed on hold in any state. By default, a call can be placed on hold only if it is in the connected state.

NCC_CAP_DISCONNECT_IN_ANY_STATE

The application can call nccDisconnectCall regardless of the call state. If this bit is not set, nccDisconnectCall can only be invoked in the connected or placing call states.

NCC_CAP_MEDIA_IN_SETUP

The protocol contains embedded media capability. The application can:

  • Use play ring and user audio modes when invoking nccAcceptCall.

  • Use play ring, play busy, play reorder, and play user audio modes when invoking nccRejectCall.

NCC_CAP_CALLER_ID

The protocol supports caller ID. Caller ID information is returned in the callingaddr field in the NCC_CALL_STATUS structure.

If the capabilities of a protocol change, the application receives NCCEVN_CAPABILITY_UPDATE. The application can then invoke nccQueryCapability to determine the changes.