Our telephone provider supports Call Deflection with SIP 302 “moved temporarily”. And it works perfectly with our old telephone system.
Unfortunately, I have not been able to get any further when trying to set it up with FreePBX. In my search there are many results for the old SIP driver, but hardly anything for PJSIP. Sometimes it says that in principle it should work automatically, someone else suggests using dialplan hooks (without saying exactly how).
And then there’s this open bug report about an incorrect header for SIP 302, which apparently requires a supplied patch: ASTERISK-30451: res_pjsip: Contact header set incorrectly for call redirect (302 Moved temp.) when external_* set
(But I really don’t want to install a self-compiled Asterisk in FreePBX…)
Can anyone comment on whether call deflection is feasible with FreePBX and PJSIP?
Or whether it is actually due to this bug?
For all those who don’t know what this is actually about: With call deflection, call forwarding is not carried out by the telephone system itself, but only the destination number is transmitted. This means that no valuable SIP channels are occupied.
I believe you need to use custom dialplan, as you need to use the Transfer application (before the call is answered). I think the required Transfer application parameters are:
Transfer(PJSIP/sip:<user>@<domain>)
where user would normally be the redirected phone number and domain would normally be that from the server setting.
Limits on the number of simultaneous calls are a commercial constraint; SIP doesn’t limit the number, and it is only the underlying IP bandwidth that is limited. Many providers won’t accept redirects, and, at least in theory, they could include redirected calls in the the limit on simultaneous calls.
Thank you for your answer!
But the explanation is too short for me to be able to do anything with it.
Unfortunately, I have no idea where I have to add the transfer command so that only calls for which call forwarding is activated are forwarded.
I’ve only done this sort of thing with raw Asterisk, and only with chan_sip.
As far as I know it is a power user change for FreePBX, so you really need an understanding of custom dialplans, and how FreePBX works, to be able to do it in a way that will be maintainable.
In any case, there isn’t enough information on your exact use case to be able to fill in the design details in a way that is sure to cover your intended usage.
You can transfer using pjsip (including 302 redirect if the call has not yet been answered); see
However, this is generally a good idea only if you are sending the call to an external answering service, your headquarters, or another destination that will reliably answer and log the call.
If forwarding to a personal mobile or home phone, transfer is usually undesirable, as the call could end up in personal voicemail or an error announcement (unreachable, etc.) Also, you won’t be able to record the call, transfer it further, have a record of its duration, or even know whether it was ultimately answered.
If your provider’s contract charges per minute for both incoming and outgoing calls, you will still be charged for both legs of a redirected call. Also, with such arrangements the number of channels is just an administrative setting and can probably be increased as desired at no additional cost.
OTOH, if you get ‘unlimited’ domestic calls, you are paying a monthly charge per channel; increasing the limit will incur additional monthly charges. However, in this case the provider will almost certainly count redirected calls against your channel limit.
My use case is quite “normal”. I have a (PJSIP) sip trunk to my phone provider. And PJSIP extensions for user phones.
And when a user activates call foward (to his cell phone for example), the PBX should do that via call deflection, instead of using two phone lines.
I have a basic understanding of the dialplan, although it is still not my best friend…
But I’m unsure yet where to modify it.
Did you use one of the dialplan hooks? Or do I have to use the context from the sip trunk?
However, IMO it’s not a good idea for your use case.
What problem do you see using two phone lines? Why do you even want a cellular voice call, rather than using a SIP app on the mobile?
Also, note that using call forward this way is error prone: users forget to turn on forwarding when they leave the office or are temporarily away from their desk, and forget to turn it off when they return (until their mobile unexpectedly starts ringing). A better solution is Follow Me, always active, that starts ringing the mobile if the desk phone is not answered quickly.
In our country, the telephone companies are unfortunately quite stingy when it comes to the number of simultaneous calls. That’s why I don’t want to be unnecessarily wasteful.
Why do you even want a cellular voice call, rather than using a SIP app on the mobile?
Firstly, I don’t want to share the telephone system with the public Internet.
And an extra SIP app on the cell phone might be something for me, but some of our users would probably find it difficult.
And a “follow me” doesn’t solve the real problem with the limited number of calls that can be made at the same time. As soon as someone calls, this also uses two lines.
Sure, in any country if you have a plan where there is no per-minute charge for domestic calls, you pay a fairly steep monthly charge for each channel. Once the channel limit is reached, further incoming calls get a busy signal and outgoing call attempts are rejected. However, first check with your carrier – they are likely to count redirected calls against your channel limit, in which case doing redirect won’t help.
In most of the world, VoIP apps are very popular and most users already have at least one: WhatsApp, FaceTime, Line, WeChat, Signal, Telegram, Skype, etc. An additional VoIP app shouldn’t be a problem. However, if you are in a country where these apps are blocked or even illegal, then I agree that a SIP app is unsuitable.
Good security is of course difficult. But if you have secure remote access for other purposes (employees working from home, intranet access for select customers and vendors, connections to branch offices, etc.), then you can use the same VPN or other technologies to secure phone connections. Also, if you are forwarding voice calls to cellular to avoid these security issues, be aware that properly securing DISA is also difficult.
I know this answer won’t be very helpful. I tried to implement call deflection in FreePBX/Asterisk once and I couldn’t make/find a working solution back than. I ended up by just buying more channels from our provider.
Our provider counts redirect but instead of using two channels (one inbound and one outbound) with call deflection it just gets counted as one used channel by the provider. So I can understand why OP wants to implement this.
This is not Redirecting the call, this is answering the call on the system and transferring it to the PSTN trunk endpoint. This is no different than you answering the call and hitting the transfer button to send the call to a new destination.
There is an actual process for redirecting calls for something like this:
The Transfer application is very much redirecting and it doesn’t answer the call.
If the call has not been answered, it sends a 302 response, with the URI as the Contact header.
If the call has been answered, it sends a REFER request, with the URI as the contents of the Refer-To header.
Obviously it has to be run on the actual incoming channel, so won’t work if, for example, FreePBX has interposed a local channel.
I think you are being confused by the fact that people refer to “transferring” a call when they are actually talking about making a tandem connnection.