SIP Refer Support

teleapi true now supports RFC5589 flow 6.1 SIP Refer that allows clients to transfer calls.
This new feature enables usage of blind transfer capabilities in desk phones and other SIP clients such as Linphon
The feature is supported for calls that were created using the Dial verb and was tested with Yealink SIP-T21P E2, Cisco SPA525G and Polycom SoundPoint IP 335 deskphones.
Currently call transfer is not supported on peer to peer calls.


Let’s start with a simple scenario involving three parties: Alice, Bob and Carol. Alice calls Bob and Bob wants to connect Alice to Carol. Bob presses the Blind Transfer button on his desk phone and types Carol’s number. His phone hangs up and Alice is connected to Carol. There is a possibility that Carol will not answer in a timely manner or will be busy talking with somebody else. In that case, it’s necessary to connect Alice back to Bob. This is easy to implement with existing teleapi features as demonstrated below.
For the described scenario, we will need two incoming phone numbers:
  • Number A which is the number that Alice will call to connect to Bob. This number points to Visual Designer application that dials Bob. For this Number we need to set the refer url application;
  • Number B will be used by Bob as a transfer target during the call transfer. This Number points to an Visual Designer application that dials Carol.
The number A has an additional property called Refer URL which could be either Visual Designer application name or any other URL and is used to point to the refer application that will be executed during the call transfer.
So configuration for number A should look like this:
Configuration for a number A
During the call transfer, teleapi will check the SIP Refer request in order to extract the call transfer details and will create the following new parameters:
  • Transferor. Transferor is the one that initiates the transfer;
  • Transferee. Transferee is the one that gets transferred;
  • ReferTarget: ReferTarget is the transfer target.
The above new parameters will be part of the HTTP request that teleapi will do download the RCML and so at Visual Designer you can use the following new core variables:
For example, the Visual Designer application for number B that will be executed after call transfer can use $core_ReferTarget so whatever Bob dialed during the call transfer it will be in the Dial verb of the Refer application.
Call flow exceptions such as no answer, failed etc, should be handled the usual way, by using Dial Action or verbs after Dial.