Зачем столько стёба, не понимаю... Switch, IgorG, не будьте такими жесткокими. При том, что автор нормальным русским поставил задачу....
Насчет реализации. Можно сделать на обычном dialplan'е. Давайте миром ТЗ поставим и вместе сделаем.
с другой стороны сделать такой велосипед можно за час.
Я уже 15 мин на ТЗ затратил, теперь твоя очередь. Шучу, но давай на самом деле сделаем. Эта как раз та фича, чтобы бить проприетарщину.
Итак, ТЗ
Звонит клиент, Донабирает нутренний номер абонента, а абонент занят (на линии). Клиент слышит такое меню "Извините, вызываемый Вами абонент занят. Вы можете нажать 1, оставить свой номер, и он перезвонит Вас сразу как только освободится". Далее, если клиент нажимает 1, то Система проговаривает его callerid number, и спрашивает, на этот ли номер перезвонить. Клиент должен либо подтвердить номер (снова нажать 1), либо ввести другой (нажать 2 и ввести номер, и снова запросить подтверждения). Записать фразу для сотрудника (типа voicemail).
Решение ¶
Алгоритм:
* проговорить sorry-not-available
* запросить решение (перезвонить / нет)
* подтвердить номер
* сформировать call file, в котором:
o установить абсолютный timeout в 24 часа (борьба с висяками)
o в цикле while true обрашивать статус внутреннего абонента (через функцию DEVICE_STATE), с интервалом в 15 сек (дать сотруднику отойти от предыдущего разговора)
o вызвать сотрудника, сообщить ему, что ему звонили с номера такого-то, проиграть записанную голосом клиента фразу.
o запросить решение (хочет ли сотрудник перезвонить прямо сейчас, или через 10 минут - типа snooze :-) )
o если перезвонить (нажать 1) и произойдет соединение с клиентом.
o если snooze, то повторяем call file :-) и будем добивать пока не будет соединения.
Какие будут зачечания и дополнения?