пункт 3 вызывает сомнения.
Я бы сделал отдельные очереди для операторов еще, и одну общюю.
когда клиент набрал код, он попадает в очередь конкретного оператора.
Но тогда может возникнуть вопрос:
1. даем очереди оператора больший приоретет, и тогда как оператор освобождается соединяется с этим клиентов. но тогда клиент не ждет общюю очередь.
2. даем очереди меньший приоритет, и тогда клиент ждет общюю очередь до самого конца.
Вообщем, тут есть над чем подумать, возможные варианты.