For a long time, I have been working on the Billing/LCR for FusionPBX in-app software.
The LCR software has the main objective to help you to save money by selecting automatically the cheapest route depending on your destination. However, LCR is more than that. LCR allows you to have smart fault tolerance, it will always try the first best option, then the second-best option which is not always the same.
The BIlling software allows you to bill for your PBX use. You will be able to bill by the minute, by the call or a combination of both. It also allows you to deal with different currencies and
I am very proud to present version 1.2.0 with the following outstanding changes.
You can create groups of carriers by assigning the same carriers. Let's say you have carriers that offer grey routes and carriers with premium rates. According to your policy, and for the sake of the economy, you want to try first all the grey routes regardless of the rate. LCR will then try all the grey routes before trying the best premium one.
Some advanced carriers require the Diversion header before allowing you to do Caller ID spoofing. The LCR software is now able to send the correct header. You may require the additional Diversion for FusionPBX in-app.
This is a tricky one and it seems all the websites I was consulting about LCR have this problem. I think I figure it out.
The problem resides when you are using different carriers using different breakdowns and different rates. Let's do an example, let's say:
If we want to call 1 613 700 9999, the default logic in most LCR software is to select the best fit. In this case, the best fit is Carrier B, however, it is not the cheapest option. The new LCR logic needs to evaluate the best fit of each carrier, not the general best fit. The best fit of each carrier gives route 1613 from Carrier A as the best option.
Before 1.2.0 the importing rates from the CSV file were really ugly (but working). I have reworked that part to present it really beautifully using FusionPBX skin.
Some carriers such as VoIP MS have an API where you can check the rate in real-time. Taking advantage of this, LCR for FusionPBX can update this carrier without importing the CSV manually.
The LCR software uses the mod_lcr module from FreeSWITCH. If you take a look at the query, you will realize it is quite complex. It has three or four inner joins depending on the profile you are using. Adding the best match of each carrier policy stacks additional complexity. Without the proper optimizations, the query would take up to 30 seconds; by changing the query, I have figure out to make it run in less than half a second.
For whatever the reason is, you may want to specify the minimum top-up amount your customers need to pay. This value can be set as a general default setting or a plugin-specific default setting. If both settings exist, the system will require greater value.
Postpaid customers can be forced to pay all the amounts of their balance.
Some users have been reporting that their customers got charged twice. After they kindly researched why that happens, it seems people click more than once on the paying button causing the browser to charge double. To void this scenario, the payment button gets disabled after the first click.
We are following the FusionPBX naming convention. All the default settings with a dot are not deprecated. They do still work but if you have paypal.enabled and paypal_enabled, the second one will have priority. The dot default settings will be eliminated in 1.3.0 or 2.0 (depending on where we get first).
Although I can't promise that this will happen for sure. I have the following features in my sight:
If you feel you need some of this or another new capability, don't hesitate on contacting me, you could sponsor one and speed up the process.
P.D. Don't forget to support the open-source funding.blog comments powered by Disqus