How to blind transfer the call?

Another very simple function, when we would like to transfer the call to an other destination, to an other client, there are several ways to do this, for example we can transfer the call with BlindTransfer().

Using BlindTransfer() during a call, the third party's phone starts to ring, like it would be dialled first, and not ours. When the third party answers the call, we are stepping out from that.

if (call != null && !string.IsNullOrEmpty(destination))
{
	call.BlindTransfer(destination);
}

Call flow diagram

The diagram below illustrates a full SIP Blind transfer call flow.

sequenceDiagram participant Softphone as Softphone Application participant Endpoint as Remote SIP Endpoint/PBX participant Dest as Transfer Destination Softphone->>Softphone: User presses **Blind transfer** (call.BlindTransfer(destination)) Softphone->>Endpoint: SIP REFER (Blind Transfer Refer PDU, Refer-To: Dest URI) Endpoint-->>Softphone: 202 Accepted (Blind Transfer Accept PDU) Endpoint->>Dest: SIP INVITE (new call leg toward destination) Dest-->>Endpoint: 100 Trying (status in NOTIFY body) Endpoint-->>Softphone: SIP NOTIFY (Blind Transfer Notify PDU, 100 Trying) Dest-->>Endpoint: 180 Ringing (status in NOTIFY body) Endpoint-->>Softphone: SIP NOTIFY (Blind Transfer Notify PDU, 180 Ringing) Dest-->>Endpoint: 200 OK (destination answered) Endpoint-->>Softphone: SIP NOTIFY (Blind Transfer OK Notify PDU, 200 OK) Softphone->>Endpoint: SIP BYE (Blind Transfer Bye PDU, terminate transferor leg) Endpoint-->>Softphone: 200 OK (Blind Transfer OK Bye PDU) Softphone->>Softphone: Release local call resources, transferor steps out Endpoint->>Dest: Media flows between original caller and destination only

Capture SIP BlindTransfer traffic with Wireshark

SIP Blind Transfer Refer PDU

A SIP Blind Transfer Refer PDU is the SIP REFER request sent by the transferring endpoint to instruct the remote party to call a new target without further involvement from the transferor. It carries a Refer-To header containing the URI of the destination number, and reuses the existing dialog identifiers like Call-ID and To/From tags so the transfer operation is bound to the active call. In the softphone, this PDU is generated by the blind transfer logic, which hands control of the call over to the REFER mechanism while the transferor prepares to step out.

SIP Blind Transfer Refer PDU
SIP Blind Transfer Refer PDU

SIP Blind Transfer Accept PDU

A SIP Blind Transfer Accept PDU is the 202 Accepted response sent back to the REFER, indicating that the remote endpoint or PBX has accepted responsibility for attempting the blind transfer. It confirms the REFER transaction by echoing headers such as Call-ID, CSeq, and the appropriate To/From tags, ensuring that the transfer request is now in progress. After this PDU, the softphone expects further notifications about the status of the new call leg, rather than directly controlling the media or signaling of the transfer target.

SIP Blind Transfer Accept PDU
SIP Blind Transfer Accept PDU

SIP Blind Transfer Notify PDU

A SIP Blind Transfer Notify PDU is the NOTIFY message sent from the REFER target side to report progress and final outcome of the blind transfer attempt. Its body typically contains a SIP fragment with a status code (for example 100 Trying, 180 Ringing, or 200 OK) that describes how the new call leg is progressing. This PDU lets the transferring endpoint track whether the blind transfer succeeded or failed, even though it no longer drives the actual INVITE signaling toward the destination.

SIP Blind Transfer Notify PDU
SIP Blind Transfer Notify PDU

SIP Blind Transfer OK Notify PDU

A SIP Blind Transfer OK Notify PDU is the final NOTIFY carrying a successful 200-class status, indicating that the blind transfer has completed and the caller is now connected to the new destination. It includes a Subscription-State header showing that the REFER subscription can be terminated, and a body with a 200 OK status for the transferred call. Once this OK Notify is received, the softphone treats the transfer as complete and can safely release its own view of the original call leg.

SIP Blind Transfer OK Notify PDU
SIP Blind Transfer OK Notify PDU

SIP Blind Transfer Bye PDU

A SIP Blind Transfer Bye PDU is the BYE request the transferring endpoint or PBX sends to tear down its own leg of the call after a blind transfer has succeeded or is no longer needed. It uses the existing Call-ID, dialog tags, and a new CSeq value to close the session between the transferor and the remote party cleanly. In the softphone implementation, this BYE corresponds to the moment when the transferor fully steps out of the conversation, leaving media flowing only between the original caller and the transferred destination.

SIP Blind Transfer Bye PDU
SIP Blind Transfer Bye PDU

SIP Blind Transfer OK Bye PDU

A SIP Blind Transfer OK Bye PDU is the 200 OK response confirming that the BYE related to the blind transfer leg has been processed and that this dialog is now terminated. It matches the BYE using the same Call-ID and CSeq, and echoes the To/From and Via headers to complete the transaction. After receiving this OK Bye, all signaling and media resources associated with the transferor’s leg are released, and only the new, transferred call remains active in the system.

SIP Blind Transfer OK Bye PDU
SIP Blind Transfer OK Bye PDU


More information