I run a telephone network in Canada, and I have somewhat of a Crude "ACL" for a system-wide blocklist. I have been using it for years, and it's pretty effective though not very efficient to manage.
I monitor incoming trunks and alarm on spikes. When I get a spike from a robodialer, I look up the number online to see if it's listed as a scam or generic robo call. If it is, I simply add it to my "ACL," and all further calls coming into my system are rejected with a short message. The message states that if they would like to phone anyone on our system they need to first call our main business office (the only number they are allowed to dial) and explain who they are.
I have a large list of obviously fake numbers that I reject (all zeros, 01234567890, 1111111111, etc )
Occasionally I will have a collection agency that phones in and complains that they are a valid business, and that they should be let through (using a number such as 1-000-000-0000. I explain that there is no valid reason why they would need to spoof their number, and that they should dial as PRIVATE or BLOCKED if they want to proceed. I simply do not allow them to phone in.
I'm not totally sure on the legalities of this, but customers love it, and I enjoy the satisfaction of blocking a tonne of calls. I have no way of dealing with companies that spoof local numbers, but I can at least block all of my exchanges as they would never be coming back in over the same trunk group as these robo dialers anyway.
This is one of those projects that I have slowly tweaked over time, but I am considering writing scripts that will go out and crawl those common telephone complain sites to build a list on the fly every week and add those numbers to my 'ACL.' It would be nice if there was an up-to-date 'spamhaus' equivalent for phone numbers.