How to set CPS (call per second) limit?

OK - let’s allow for a non-nefarious use (active shooter call tree, where you want to get the word out ASAP, but not exceed the system’s per-whatever limit). What is the effect of over-limit on a “per second” basis? Is it a billing issue? Does the ITSP block your access? What granularity are they computing the call-rate at? Is it averaged over time (even if that time is, say, a minute or six-seconds)? Is limiting the system to concurrent calls going to get you close enough?

If I have 1000 ‘workers’ at a ‘facility’ and want to send out a Shelter-In-Place/Stay Home/Come Get Your Kids voice message, I could easily exceed capacity without some kind of limiter. On the other hand, there’s got to be a way to change the perspective on the process where it’s not completely intractable.

I was trying to build a system like this for one of the local archdiocese schools a couple of years ago and found that 20 concurrent calls worked out pretty well to get the word out “in spec”. Could changing the focus of the request get you to a solution?

Six starts per second is a lot, but six concurrent calls is not, even if they are all started at the same second. There’s got to be an approach or different perspective that gets you where you want to go.

What you are pointing out is valid. I have a system that does emergency alerts and can send 2K calls in 5 minutes processing the list. But in those cases, each call is processed individually which means at best a couple will hit the system at the same time. Doing 6 CPS via callfiles means 6 callfiles are moved to the outgoing directory at once.

But in those cases there are no operators standing by to wait for 3000 parents to press 1 to talk to them when they announce the school is closed or sending out an active emergency alert to n destinations. If a concern is that the automated outbound calls can’t overwhelm call agents then there is an expectation that every answered call is connected to an agent. So this isn’t sounding like some sort of mass alerts/notifications system, it’s sounding like outbound call campaigns.

CPS restrictions from the provider - for example, it gives 20 trunks, but the threshold for them is 6 CPS, otherwise the price will increase.
The increase in the number of calls will go until the exhaustion of free lines, that is, in this example - 20 calls. Thus, it is necessary to limit the very possibility of simultaneous start of calls more than the specified CPS, putting the next in line, and taking them away from there as the lines become free.

Maybe this could work as well:

Nope, it is not meant for this at all. Tracking Calls Per Second requires very specific things like actually knowing how many calls are happening, when they were made and how many are happening that second. These are not things that can be done easily in a B2BUA. This is why companies that do high volume traffic like this generally invest in an SBC/proxy so they can do these high level tracking and routing functions.

Plus let’s be honest, 6 CPS with a 20 channel capacity is nothing. It’s done to limit them pretty hard. Sure you can send 6 CPS but after 3 seconds you’ve basically hit capacity. 6 more calls at second 4 will result in 80% of those calls being rejected. Any more calls after that could be rejected because there’s no more capacity and since all the connected or ringings calls won’t drop at the same second (unlike when they are made) that means after your first 3 second burst you’re now trying to figure out when you can send more calls because your trunk is full. So now you have to monitor when channels are dropped so you now can send more calls. But that still leaves you with the scenario of “At full capacity but now 3 calls have ended but I can’t send another batch of 6 because half will fail”

Is this a consistent problem or a safeguard just in case it happens so you don’t trigger a higher rate for a certain billing period.

For the occasional “just in case” use, it wouldn’t be too difficult to code some agi with some sort of wait lock to limit the outbound rate. Shouldn’t be a problem to protect against a handful of agents dialing out at the same time or conflicting with reasonably metered call file drops. Could cause resource havoc of you drop 1000 call files at once.

CPS limits are a consistent problem as they limit how many calls you can send in a 1 second period. This is generally not an issue for most, it is more for high volume wholesalers and those doing outbound dialing campaigns as they can trigger X calls to happen in a single second. This is in addition to any channel limits that may be imposed by the carrier.

With channel limits, yes you could end up paying for a higher cost or additional costs for the “bursting” of channels. That will not change the fact you are limited to X calls per second. So if you are limited to 6 and you send 10, only 6 of those calls will go through the other 4 are rejected for exceeding the CPS.

Follow up: Think of it like rate limiting. I don’t care if you download a 500GB file, if I have you rate limited to 10Mbps that’s as much as you’re going to get. You can still download that 500GB file but it’s going to take you quite a bit of time being limited to 10Mbps.

How about every second, releasing (MIN ((20 - current calls), CPS ) - numcallsinoutgoing) call files from the queue.

This topic was automatically closed 31 days after the last reply. New replies are no longer allowed.