Send REFER to transfer call away from PBX

Christian Stredicke
CEO of Vodia Networks

We have added a new feature that makes it easier for the calls to transfer calls away from the PBX. The use case is that someone dials into the PBX, then enters some kind of digits and then should be transferred to an external destination. In SIP this is usually done using the REFER request, which contains a Refer-To header to get this done. This helps to reduce the load on the PBX, because the call leaves the PBX and continues on the calling system.

In order to get this done, we have added something to the IVR node. We already had action commands, like bye or goto. All we needed to do is another another command called refer that essentially works like goto. But instead of switching accounts it puts a REFER message on the cable and waits until the leg disconnects the call.

The DTMF Match List could look like this: !([0-9]{4})!\1 . Then the List of actions would be looking something like this: action:refer?dest={input}

 

Then when the user enters the four digits 1234, the PBX would send out a REFER request like this:

REFER sip:41@192.168.1.167:41291;transport=tls;line=646jglzy SIP/2.0
Via: SIP/2.0/TLS 192.168.1.143:5061;branch=z9hG4bK-f005c6a05e36125c3c8afa128a1e37ba;rport
From: <sip:75@localhost;user=phone>;tag=072c9c90aa
To: "41" <sip:41@localhost>;tag=shpwwplo0w
Call-ID: 313438353535313839393339333031-lcwr1z8t3h72
CSeq: 30265 REFER
Max-Forwards: 70
Contact: <sip:41@192.168.1.143:5061;transport=tls>
Refer-To: "1234" <1234@domain.local>
P-Asserted-Identity: <sip:75@domain.local>
Content-Length: 0 

And voila, the call gets sent to its new destination, 1234 without having the PBX in the loop any more.