Call Transfer for Restcomm
We are pleased to announce that Call Transfer support was introduced as a part of the upcoming release of Restcomm.
This new feature enables usage of blind transfer capabilities in desk phones and other SIP clients such as Linphone. Besides with Linphone, it was also tested wth Yealink SIP-T21P E2, Cisco SPA525G and Polycom SoundPoint IP 335. The feature is implemented by handling SIP Refer functionality and performing Live Call Modification. Below is a short overview.
Let’s start with the 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 hungs up and Alice should be connected to Carol. There is also a possibility that Carol will not answer timely or will be busy talking with somebody else. In that case, it’s needed to connect Alice to Bob again, and this is easy to implement with existing RestComm features as we’ll see later.
For the described scenario, we will need two incoming phone numbers:
- Number, which has RVD application configured to dial Bob and refer request application set up;
- Number, which has RVD application configured to dial Carol.
The number has additional property called Refer Request which could be either RVD application name or URL and is used to set up refer application. So configuration for Bob’s number should look like this:
Alice should call Bob using the phone number instead of his client name because of Call Transfer limitation that transfers only those calls made by Dial verb. It’s because Live Call Modification which has the same limitation is used inside the Call Transfer.
The Refer application in its simplest case could be an RVD application, which looks like this:
<Response> <Say>Transferring to $core_ReferTarget</Say> <Dial><Number>$core_ReferTarget </Number></Dial> </Response>
This RVD application receives newly introduced $core_ReferTarget parameter from RestComm and produces RCML similar to the one below (if transfer was performed to number 5555):
<Response> <Say>Transferring to 5555</Say> <Dial><Number>5555</Number></Dial> </Response>
As you remember, in the scenario mentioned above we agreed to connect the call to Bob again when Carol does not answer. This could be implemented by specifying the Dial ‘action’ argument that loads another RCML URL and passes DialCallStatus as an argument when call is finished. So the application will know when Carol doesn’t answer (DialCallStatus=no-answer or busy). However, in this case an RVD application should be replaced with the web application that contains the conditional logic which is absent in RVD.
Hope you enjoyed the new RestComm feature and stay tuned!