Привет!
ACD модуль работает по указке разработчика. Вы принимаете звонок, и когда вы в коде решили что надо его распределять на оператора - вызываете
enqueueACDRequest для помещения звонка в очередь. Когда освободится оператор, объекту звонка придет событие
OperatorReached в ответ на которое вы можете включить аудиопотоки между пользвателем и оператором. А можете предварительно что-нибудь оператору синтезировать. Или сделать какаую-нибудь логику. Вообщем на ваше усмотрение.
"Встал в очередь, а потом скинул" - решается в вашем же коде. Если пользователь повесил трубку до того, как вы его соединили с оператором, то объету звонка приходит соответствующий эвент. В ответ на который вы можете
убрать запрос из очереди. А можете не убирать, подождать ответа оператора и синтезировать ему что "тут вам звонили, но не дозвонились. Перезвонить пользователю сейчас?"
Как что работает вы сами решаете в джаваскрипте. Польный контроль, любая удобная вам логика. Кстати, мы недавно сделали
новый цикл статей, посвященных как раз работе ACD. Сам писал! Оцените, если все еще будут вопросы - пишите, постараюсь и вам помочь, и наши статьи с документацией улучшить!