Building on the excellent ideas presented already, you could create a feature code you can prefix extension numbers with that inserts the delay. Add this to extensions_custom.conf
:
[from-internal-custom]
exten => _**XXX*XXXX,1,Noop(Entering user defined context from-internal-custom in extensions_custom.conf)
exten => _**XXX*XXXX,n,Noop(ext: ${EXTEN:-4} delay: ${EXTEN:2:3})
exten => _**XXX*XXXX,n,Wait(${EXTEN:2:3})
exten => _**XXX*XXXX,n,goto(from-internal,${EXTEN:-4},1)
If you want to dial extension 5002 with a leading 10 second delay, you would dial **010*5002
-- Executing [**010*5002@from-internal:1] NoOp("SIP/5002-00000004", "Entering user defined context from-internal-custom in extensions_custom.conf") in new stack
-- Executing [**010*5002@from-internal:2] NoOp("SIP/5002-00000004", "ext: 5002 delay: 010") in new stack
-- Executing [**010*5002@from-internal:3] Wait("SIP/5002-00000004", "010") in new stack
-- Executing [**010*5002@from-internal:4] Goto("SIP/5002-00000004", "from-internal,5002,1") in new stack
**snip**
Now add the above dial string to your queues instead of a plain ext number. Delay must be 3 digits exactly in seconds, extension number must be 4 exactly. Edit to suit.
edit - In more recent versions of freepbx, there’s a core context that you can use to initiate local extension calls that will block from going to voicemail, which is almost certainly what you want for this use case. Dialplan changes to:
[from-internal-custom]
exten => _**XXX*XXXX,1,Noop(Entering user defined context from-internal-custom in extensions_custom.conf)
exten => _**XXX*XXXX,n,Noop(ext: ${EXTEN:-4} delay: ${EXTEN:2:3})
exten => _**XXX*XXXX,n,Wait(${EXTEN:2:3})
exten => _**XXX*XXXX,n,goto(originate-skipvm,${EXTEN:-4},1)