No one wants to wait in a call queue. It is especially inappropriate when the wait is expected to be long.
A much more customer-oriented approach is to offer a call-back.
Dynamically offer call-back when demand is high
It is important to offer call-back in the right circumstances. So you need to automatically decide in the call-flow whether the customer is likely to wait long or not. This requires real-time metrics on availability of agents who have the right right skills to handle the call in question.
Allow prioritization of customers to call-back
In many cases, when you offer a call-back you also need a mechanism to prioritize who to call first, i.e. call-back attempts later need to be scheduled and re-scheduled when no one is reached. There need to be reliable means to control the ordering at each stage.
Automate rescheduling of contact attempts
Reduce admin effort and increase the speed of preparing lists of contact entries to be contacted.