# Sending ISDN-specific messages

Not all variants support the sending and receiving of ISDN-specific messages. The capability mask lists the capabilities for each variant. The application determines whether a variant supports sending and receiving of ISDN messages by invoking nccQueryCapability. The NCC_CAP_SEND_CALL_MESSAGE bit in the capability mask returned by this function indicates if the variant supports this capability.

To send ISDN-specific messages, use nccSendCallMessage. nccSendCallMessage takes the following arguments:

Argument | Description
--- | ---
callhd | Call handle to which message should be sent.
message | Pointer to buffer containing the message structure.
size | Size of the buffer.

All ISDN-specific structures and macros associated with NCC are defined in nccxisdn.h. Each of the structures in this file contains:

- A header, identifying the id and the type of the message.

- (Optional) The rest of the structure specific to the message.

The header structure is:

typedef struct
{
WORD message_id; /* Message id */
WORD message_type; /* Message type */
} NCC_ISDN_SEND_CALL_MESSAGE;

## message_id field values

The following table lists possible values for the message_id field:

message_id value | Description
--- | ---
NCC_ISDN_TRANSPARENT_BUFFER | Transparent message sending operation.
NCC_ISDN_TRANSFER_CALLID_RQ | Request a call identifier for a call to be transferred.

## message_type field values

The following table lists possible values that can be returned in the message_type field:

message_type value | Description
--- | ---
NCC_ISDN_RETURN_REJECT | Rejection of a request to invoke the operation.
NCC_ISDN_RETURN_RESULT | Successful completion of the operation.
NCC_ISDN_RETURN_ERROR | Unsuccessful completion of the operation.

To invoke an operation, use any of NCC_ISDN_xxx_INVOKE structures, where xxx is the ID of the message. The structure to use depends upon what operation the application is to perform. For example, the structure used to invoke TBCT is NCC_ISDN_TBCT_INVOKE.