In SIP IOS call transfer is achieved using REFER method. Similar to H450.2, a REFER message will be sent from transferor to transferee to initiate a follow-up call from transferee to transfer-to party. This can be either blind transfer or committed transfer (commit-at-alerting or commit-at-connect).
The REFER message received from transferor to transferee contains the following major headers:
- REFER-TO: This includes SIP URL of the transfer-to. This header may contain three sub-headers:
- ACCEPT-CONTACT: Not used by IOS
- PROXY-AUTHORIZATION: This will be copied from REFER message to INVITE message. Its not used by IOS (may be used by other products for billing)
- REPLACES: This is required in order to indicate whether transferor is requesting blind or committed transfer. In case of committed transfer this header will be present, however, it won't be in case of blind transfer.
After transfer completion (success or fail), the transferee should update the transferor with the result. This is done using NOTIFY message.
REFER can be disabled/enabled using the voice service voip sub-command supplementary-service sip refer. In case its disabled, transfer won't work since IOS SIP doesn't have hairpinning concept.
In CUCM things are different. CUCM won't use REFER message. CUCM will use a combination of UPDATE and INVITE messages in order to connect both transferee and transfer-to. Those messages will include the IP addresses of transferee and transfer-to parties in SDP to establish RTP session between them.
But what about integrating CUCM with IOS SIP. CUCM can receive REFER message and act accordingly based on REFER-TO header without any issues (by sending UPDATE/INVITE messages). However, when CUCM receives REFER message with REPLACES header (committed transfer), by default CUCM will drop the transfer. To enabled REPLACES header support, you need to enabled Accept Replaces Header feature in SIP Trunk Security profile.
Note: Some systems like CME can fallback from REFER method to INVITE/UPDATE method (used by CUCM) in case SIP 403 Forbidden response is received for REPLACES header.
Starting from CUCM 8.6, CUCM can pass received REFER message to an outgoing SIP trunk. This feature is called REFER Transparency and it is very important when CUCM is deployed at gatekeeper with multiple CUBEs.
You can enable REFER transparency by associating the refer-passthrough script or a custom REFER transparency script with one or more SIP trunks on the Trunk Configuration window (Device > Trunk). You must configure the fields in the Normalization Script group box.
Note: To upload custom scripts in CUCM, use the SIP Normalization Script Configuration window (Device > Device Settings > SIP Normalization Script)