SL_CALL_TRANSFER_REQ primitive

Purpose

Request the transfer of an active call to a third party.

Requirement

Optional for all signaling processes. This primitive is one of the primitives used to implement the call transfer capability. signaling processes that implement the call transfer capability should specify SL_SIGPROC_CAPABILITY_TRANSFER on registration.

Library

The signaling interface library (libsl.a).

C syntax

typedef struct {
                SL_ID id;
                int iseq_no;
                pid_t pidCHP;
                SL_PRIMITIVE_TYPE Command;
                SL_REQUEST_PARM_ST Parms;
} SL_REQUEST_ST;
...
typedef union {
...
                struct _call_transfer_request_st {
                    size_t sizetLength;
                    SL_CALL_REF slCallReference;
                    char phone_num[SL_PHONE_NUM_LEN];
                    int pause;
                    int ring_wait;
                    int ring_time;
                    int iChannelNo;
                    int iVpackNo;
                    SL_APPL_INFO_ST slApplInfo;
                }call_transfer_request_st;
...
} SL_REQUEST_PARM_ST;

Description

The SL_CALL_TRANSFER_REQ primitive is sent by the channel process to the signaling process to request to transfer a active call to a third party. The channel process transfers a call by sending an SL_CALL_TRANSFER_REQ primitive to the signaling process, using the call reference to identify the call to be transferred. The signaling process then signals to the network to initiate the transfer. When the call is transferred, or when the transfer is known to have failed, the signaling process sends back the SL_CALL_TRANSFER_CNF primitive, with the ReplyCode set to indicate the success of the transfer.

Corresponding state table action

The SL_CALL_TRANSFER_REQ primitive and the matching SL_CALL_TRANSFER_CNF correspond to the TransferCall state table action. See the Blueworx Voice Response for AIX: Application Development using State Tables information.

Parameters

id
Eye-catcher that identifies the structure as containing a request primitive. Must be set to SLID_REQUEST_ST.
iseq_no
The sequence number of the primitive. This field must be set to 0 when the primitive is sent to Blueworx Voice Response; the actual sequence number is allocated by Blueworx Voice Response, and is available to the sender on return from sl_send_request(). The field is set when the primitive is received from Blueworx Voice Response by the signaling process.
pidCHP
The process id of the channel process. The signaling process should use this value to set the pidCHP field of the corresponding SL_CALL_TRANSFER_CNF primitive.
Command.id
The primitive that the structure contains. Must be set to SL_CALL_TRANSFER_REQ.
Parms.call_transfer_request_st.sizetLength
Must be set to sizeof(struct _call_transfer_request_st).
Parms.call_transfer_request_st.slCallReference
The call reference that identifies the call being transferred. For exchange date link signaling protocols, this field should be set to SL_CALL_REF_NULL. For common channel signaling protocols, this field should be set to the call reference for the call, which was allocated by Blueworx Voice Response for a previous SL_CALL_SETUP_REQ, or SL_CALL_SETUP_IND primitive.
Parms.call_transfer_request_st.pause
This field contains the value specified in the Pause parameter of the TransferCall state table action. The value specified by the state table may be ignored by common channel signaling processes.
Parms.call_transfer_request_st.ring_wait
This field contains the value specified in the Ring Wait parameter of the TransferCall state table action. This specifies how long to wait for ringback tone after sending digits.

If ring_wait and ring_time are set to 0, this is a request for a blind transfer. The signaling process should transfer the call and immediately return SL_REPLY_SUCCESS, without waiting for any further activity on the channel. For example, a blind transfer may be used to transfer incoming calls to an automatic call distributor (ACD) group for handling.

This time is usually part of the protocol specification for common channel signaling protocols. The value specified by the state table may be ignored by common channel signaling processes.

Parms.call_transfer_request_st.ring_time
This field contains the value specified in the Ring Time parameter of the TransferCall state table action. This specifies how long to wait while the dialled number rings.

If ring_wait and ring_time are set to 0, this is a request for a blind transfer. For more information, see ring_wait.

This time is usually part of the protocol specification for common channel signaling. The signaling process should return SL_REPLY_NO_ANSWER, if the value specified by the state table is less than the network maximum ring time and the call is not transferred. If the value specified by the state table is greater than the network maximum ring time, it may be ignored by common channel signaling processes.

Parms.call_transfer_request_st.iChannelNo
Identifies the channel associated with the call.
Parms.call_transfer_request_st.iVpackNo
Identifies the trunk associated with the call.
Parms.call_transfer_request_st.phone_num
This field contains the value specified in the Phone Number parameter of the TransferCall state table action. This specifies the phone number to call.

The maximum length of phone number supported by Blueworx Voice Response is SL_NUM_SZ-1 digits. The phone_num field is longer than this to allow for future expansion.

Parms.call_transfer_confirm_st.slApplInfo
Contains both the length of the call information tag string (including the null terminator '\0') and the call information tag string array itself. The string is used to pass information between state tables and the signaling process. For more information see SL_APPL_INFO_ST data structure

Related information