Home --> Documentations --> PJSIP Reference
SIP REFER dialog usage (call transfer, etc.)
More...
|
const pjsip_method * | pjsip_get_refer_method (void) |
|
pj_status_t | pjsip_xfer_init_module (pjsip_endpoint *endpt) |
|
pj_status_t | pjsip_xfer_create_uac (pjsip_dialog *dlg, const pjsip_evsub_user *user_cb, pjsip_evsub **p_evsub) |
|
pj_status_t | pjsip_xfer_create_uas (pjsip_dialog *dlg, const pjsip_evsub_user *user_cb, pjsip_rx_data *rdata, pjsip_evsub **p_evsub) |
|
pj_status_t | pjsip_xfer_initiate (pjsip_evsub *sub, const pj_str_t *refer_to_uri, pjsip_tx_data **p_tdata) |
|
pj_status_t | pjsip_xfer_accept (pjsip_evsub *sub, pjsip_rx_data *rdata, int st_code, const pjsip_hdr *hdr_list) |
|
pj_status_t | pjsip_xfer_notify (pjsip_evsub *sub, pjsip_evsub_state state, int xfer_st_code, const pj_str_t *xfer_st_text, pjsip_tx_data **p_tdata) |
|
pj_status_t | pjsip_xfer_current_notify (pjsip_evsub *sub, pjsip_tx_data **p_tdata) |
|
pj_status_t | pjsip_xfer_send_request (pjsip_evsub *sub, pjsip_tx_data *tdata) |
|
This describes a generic handling of SIP REFER request. The SIP REFER request is described in RFC 3515, and commonly used to perform call transfer functionality. Other types of SIP REFER usages are described in draft-worley-sip-many-refers-00 draft, for example:
- Remote Dial: where UAC sends REFER to instruct REFER recipient to initiate an INVITE session to some target.
A REFER request can be sent inside or outside existing dialog context, although for call transfer case, it is more common to send REFER inside existing INVITE session context. PJSIP supports both sending REFER request inside or outside dialog context.
The REFER framework uses SIP Event Notification (RFC 3265) Module to manage the event subscription created by the REFER request. Because of this, application must link with pjsip-ua AND pjsip-simple static libraries to use REFER functionality.
Reference:
◆ pjsip_get_refer_method()
Get REFER method constant
◆ pjsip_xfer_init_module()
Initialize the REFER subsystem. This currently does very little (only register REFER as supported method).
◆ pjsip_xfer_create_uac()
Create transferer (sender of REFER request).
- Parameters
-
dlg | The underlying dialog to use. |
user_cb | Pointer to callbacks to receive presence subscription events. |
p_evsub | Pointer to receive the presence subscription session. |
- Returns
- PJ_SUCCESS on success.
◆ pjsip_xfer_create_uas()
Create transferee (receiver of REFER request).
- Parameters
-
dlg | The underlying dialog to use. |
user_cb | Pointer to callbacks to receive presence subscription events. |
rdata | The incoming SUBSCRIBE request that creates the event subscription. |
p_evsub | Pointer to receive the presence subscription session. |
- Returns
- PJ_SUCCESS on success.
◆ pjsip_xfer_initiate()
Call this function to create request to initiate REFER subscription, to refresh subscription, or to unsubscribe. For request other than the initial REFER request, "refer_to_uri" argument may be NULL.
- Parameters
-
sub | Client subscription instance. |
refer_to_uri | URI to be put to the Refer-To header. This argument may be NULL for subsequent REFER requests. |
p_tdata | Pointer to receive the request. |
- Returns
- PJ_SUCCESS on success.
◆ pjsip_xfer_accept()
Accept the incoming REFER request by sending 2xx response.
- Parameters
-
sub | Server subscription instance. |
rdata | The incoming subscription request message. |
st_code | Status code, which MUST be 2xx. |
hdr_list | Optional list of headers to be added in the response. |
- Returns
- PJ_SUCCESS on success.
◆ pjsip_xfer_notify()
For notifier, create NOTIFY request to subscriber, and set the state of the subscription.
- Parameters
-
sub | The server subscription (notifier) instance. |
state | New state to set. |
xfer_st_code | The call status code to be reported with the NOTIFY request. |
xfer_st_text | Optional call status text to be reported with the NOTIFY request. If the value is NULL, default status text will be used. |
p_tdata | Pointer to receive the request. |
- Returns
- PJ_SUCCESS on success.
◆ pjsip_xfer_current_notify()
Create NOTIFY request to reflect current subscription status. Application can only call this function after it has sent NOTIFY before. This will also re-send the last "message/sipfrag" body that was sent in the previous NOTIFY.
- Parameters
-
sub | Server subscription object. |
p_tdata | Pointer to receive request. |
- Returns
- PJ_SUCCESS on success.
◆ pjsip_xfer_send_request()
Send request message that was previously created with initiate(), notify(), or current_notify(). Application may also send request created with other functions, e.g. authentication. But the request MUST be either request that creates/refresh subscription or NOTIFY request.
- Parameters
-
sub | The event subscription object. |
tdata | Request message to be send. |
- Returns
- PJ_SUCCESS on success.
References PJ_END_DECL.
◆ pjsip_refer_method
Declaration for REFER method constant.
PJSIP Open Source, high performance, small footprint, and very very portable SIP stack
Copyright (C) 2006-2008 Teluu Inc.
|