Complicated Inbound Routing w/ Time Conditions, Caller ID, and Holidays

I currently have a working, but complicated inbound routing implementation. As my business grows, it’s getting difficult to manage. I operate an IT services company, and this is specifically for the helpdesk.

All of my clients have dedicated DIDs so I can route them based on priority and give a custom greeting.

Everyone else that calls our main “published” number gets treats normally.

Currently my standard incoming call routes like this:

Incoming call -> Caller ID route or DID route -> Time Condition: Holiday? (yes / NO) -> Time Condition: Open? (YES / no) -> IVR w/ greeting

Where it gets complicated is I have a TON of inbound routes for each customer either by Caller ID or DID.

This means I have to create a holiday time condition for every single customer as well as an open time condition for every single customer.

Is there any way to do the following?

Inbound call -> Time Condition: Holiday? (yes / NO) -> Time Condition: Open? (YES / no) -> Check caller ID or dialed DID and route to the proper IVR

When I’m closed, my general customers are brought to a voicemail box. My ‘special’ customers are brought to a system that can page the on call technicians or leave a voicemail in a priority box.

To further complicate matters, I have a customized greeting for each customer. “you have reached the helpdesk for yourABC company.”

Although it doesn’t happen often, I sometimes need to throw a kill switch on the phone system and send ALL calls to closed messages. With the wide assortment of inbound routes and time conditions I have, it’s an extreme chore to put that kill switch into play.

Any thoughts on how to better handle what I’m currently doing?

Well I don’t think that you can do anything with the FreePBX web interface. You can do it with some custom dialplan.

To start, I’d put both of these together into a single time condition. That solves a lot of the multiple time condition issues.

This, on the other hand, is a little more challenging.

A lot is going to depend on the IVRs. For example, if you always have “press ‘1’ for this, press ‘2’ for that”, then you could set up a custom IVR that pulls in variables based on the DID or CID. Copy the existing IVR context from the *_extensions.conf and put it in the extensions_override_freepbx.conf. Make your changes to the ‘override’ file and it will set up whatever you need to change for your IVR needs.

For example, you can use the DID or CID (they’d both just be phone numbers at that point) and do all sorts of goofy things. It’s more of an idea than a plan, but I think it should get your closer.