Here you have a solution for an advanced solution with several priority levels.
It handle also the problem that calls from lower levels have to be handled in between calls from higher levels if the traffic is high. Without this mecanism, calls from the lower levels can be lost on this level if new calls comes in to higher levels all the time.
Enclosed you will find the complete figure of the solution.
The real agents (level 0) are logged on waiting queue level 0, but on each lower level you need virtual agents with port lics. The GW register on these virtual agents. Number of virtual agents in each levels gives the number of calls from the lover level that will be put in between calls in the next level.
Ex: 5 calls direct on level 1, many calls on level 2 and one virtual agent between level 1 and 2. The first call in level 2 will be picked up by the virtual agent and routed into level 1. As long as these six calls are waiting in level 1, no more calls from level 2 are put into level 1. But as soon the first call from level 2 (picked up by the virtual agent) has been answered, next call from level 2 is put into level 1.
The solution is a bit complicated, but it works. Good luck
WQ_hierarki.pdf