Purpose
Request an implementation-dependent feature from a signaling process.
 
Requirement
Optional for all signaling processes.
 
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 _user_request_st{
                    size_t sizetLength;
                    int command;
                    int iChannelNo;
                    int iVpackNo;
                    unsigned char data[SL_USER_DATA_LEN];
                } user_request_st;
...
} SL_REQUEST_PARM_ST;
 
Description
The SL_USER_REQ primitive is sent by a custom server process
to the signaling process. This primitive allows any signaling process to provide
implementation-dependent primitives. 
The interpretation and usage of the SL_USER_REQ primitive
is up to the signaling process. If the signaling process does not support
the SL_USER_REQ primitive, it should respond by issuing sl_send_confirm(), specifying an SL_USER_CNF primitive
with ReplyCode set to SL_REPLY_NOT_IMPLEMENTED. 
Any implementation-dependent primitives, implemented using SL_USER_REQ, should be documented by the supplier of the signaling process. 
 
Corresponding state table action
None.
 
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 sending process. The signaling process should
use this value to set the pidCHP field of the corresponding SL_USER_CNF primitive. 
 
- Command.id 
 
- The primitive that the structure contains. Must be set to SL_USER_REQ. 
 
- Parms.user_request_st.sizetLength 
 
- Must be set to sizeof(struct _user_request_st). 
 
- Parms.user_request_st.command
 
- This field is provided for use by the signaling process to differentiate
implementation-dependent primitives. The values of this field are implementation-dependent,
and are defined by the provider of the signaling process.
 
- Parms.user_request_st.iChannelNo
 
- Identifies the channel, in the range SL_MIN_CHANNEL_ID to SL_MAX_CHANNEL_ID (see Pack and channel numbers).
 
- Parms.user_request_st.iVpackNo
 
- Identifies the trunk, in the range SL_MIN_TRUNK_ID to SL_MAX_TRUNK_ID (see Pack and channel numbers).
 
- Parms.user_request_st.data
 
- Up to SL_USER_DATA_LEN bytes of implementation-dependent
data. The interpretation of this field depends on the value of Parms.user_request_st.command, and is defined by the provider of the signaling process.