Возможность оставить свой номер для связи в случае если сотрудник занят

Администратор,

Ситуация
Звонит клиент, Донабирает внутренний номер абонента, а абонент занят (на линии). Клиент слышит такое меню "Извините, вызываемый Вами абонент занят. Вы можете нажать 1, оставить свой номер, и он перезвонит Вас сразу как только освободится". Далее, если клиент нажимает 1, то Система проговаривает его callerid number, и спрашивает, на этот ли номер перезвонить. Клиент должен либо подтвердить номер (снова нажать 1), либо ввести другой (нажать 2 и ввести номер, и снова запросить подтверждения). Записать фразу для сотрудника (типа voicemail).

Решение
Алгоритм:

проговорить sorry-not-available
запросить решение (перезвонить / нет)
подтвердить номер
сформировать call file, в котором:
установить абсолютный timeout в 24 часа (борьба с висяками)
в цикле while true обрашивать статус внутреннего абонента (через функцию DEVICE_STATE), с интервалом в 15 сек (дать сотруднику отойти от предыдущего разговора)
вызвать сотрудника, сообщить ему, что ему звонили с номера такого-то, проиграть записанную голосом клиента фразу.
запросить решение (хочет ли сотрудник перезвонить прямо сейчас, или через 10 минут - типа snooze)
если перезвонить (нажать 1) и произойдет соединение с клиентом.
если snooze, то повторяем call file  и будем добивать пока не будет соединения.