So, again. In my last article related to how to work around the crappy surcharges some greedy carriers are imposing, I describe how to extend the call to a minimum of 6 seconds when the caller hangs up first. This is very useful in a class-5 PBX, but it is not enough. Another surcharge that carriers are innovating is the cancellation ratio; you may get a surcharge if a certain percentage of your calls in a given period exceeds a threshold.
Possible Scenarios
This is difficult to avoid, for starters, think of a ring group that points to a mix of extensions and cellphone numbers (to make it worse, some extensions have a call forward to cellphones). When a call arrives, all the endpoints and cellphones will ring; when someone answers every other call is cancelled raising right away your cancellation ratio. Also if you have a teenager you may know that they do not always answer the phone, 10 to 20 lost calls just to find out they forgot to they put it on mute.
Any of these possible scenarios or any other you may have raises your cancellation ratio and, therefore your surcharges. I will describe a technique I have implemented in the next LCR for FusionPBX 1.3.0 release.
My Solution: Adding a Smart Delay
The principle of the solution is easy. I propose to add a delay that will hold before connecting to any carrier. That given delay must be smart and dynamic. Users who have a low cancellation ratio shouldn't be punished for those who do.
So, let's get back to the old good days of school and remember the statistics courses, more specifically the standard deviation.
https://static.inside-out.xyz/images/standard_deviation_diagram.png" />
I propose that the given delay should be the mean + two times the standard deviation. This would give the 97.7% of probability that the caller historic waits while waiting before deciding to cancel the call.
For example, let's pretend my telephone number has the following statistics in the last month:
- an average waiting of 5 seconds, and
- a standard deviation of 15 seconds.
My smart delay would be 35 seconds. Because the statistics show I can wait for that time before cancelling a call, the wait should be passed unnoticed. In the meantime, I should be listening to the local ring-back tone.
Tips to Deploy This Workaround
The first one I could give you is to get the LCR for FusionPBX, I have successfully added it and it will be released in the 1.3.0 version. If you want to do it for yourselves, take in mind:
- don't use a fixed delay, make it dynamic, even the same source changes its habits a long time;
- use something to discriminate between users. You may use the account code, the caller ID number, or the source IP variables. It depends on your scenario. I selected the caller ID number.
- make sure you send the ring-back tone somehow. A dead-air silence will give you customer drama. You don't want that.
- define a threshold before applying the policy, 15% is a good start. If someone calls for the very first time to the cellphone to make a test, because they are clean, they shouldn't be punished.
Good luck!