I’m using FreePBX, but I didn’t set it up and I’m not that familiar.
Incoming calls go to the Time Conditions module, and if it’s during business hours it’s sent to the ‘Admin’ queue we created.
From there, things are set so that when somebody calls in, they hear a brief message that says “Please hold for the next available representative.” During that message, dialing extensions does nothing. AFTER that message completes and the hold music starts playing, THEN they are able to dial an extension.
How can I make it so they can dial an extension at any time?
You can’t “easily” change that behavior assuming it is going to a queue.
The initial message is played by the queue app which does not have access to the direct dialing context until after the message is played and it enters the Queue.
At that point, the queue is associated with the context of an IVR which has the direct dial contexts available to the queue allowing them to break out of the queue (at least from what you describe).
If you wanted to achieve your desired behavior, you would need to make another IVR that has the same direct dial contexts available. You would play the desired ‘intro’ message there. You would then set the timeout on the IVR to 0 sec so that after it plays the message, it does not wait any longer for input. You then set the ‘t’ option in the IVR to go to the current Queue, and get rid of it’s intro message, so that it drops directly into the queue.
That combination would most likely get you closer to what you are trying to achieve.