Система простая и настроена просто.
Принцип работы такой:
Когда звонок поступает на наш сервак, то играет ГОЛОСОВОЕ МЕНЮ
В меню есть выбор от 0 до 9.
Если нажать на 0 - то перебрасывает на строку, которая звонит сразу всем ОПЕРАТОРАМ.
И один и тот же оператор может видеть звонящего на своей линии, даже когда он уже с кем-то говорит.
Как сделать так, чтоб если оператор занят, то к нему не звонило , а пробовало следующего оператора, свободного
А уж если все операторы заняты, то пусть скажет ОБ ЭТОМ голосом
Можно как-то не сильно сложно это сделать, потому как я только начал познавать астериск ???.
----------------------
[incoming]
; Поднимаем трубку, проговариваем меню выбора, ждем 10 секунд, пока выберут, иначе кладем трубку.
exten => 380777777717,1,Answer()
exten => 380777777717,n,Background(/usr/local/share/asterisk/sounds/en/001-menu_new5)
exten => 380777777717,n, WaitExten(10)
exten => 380777777717,n,Hangup()
; Если выбрали "0", то звоним на всех операторов 1007,1004,1002,1003,1001 в течении 20 секунд.
; если за 20 секунд никто трубку не взял, то проигрываем сообщение - ВСЕ ЗАНЯТЫ !!!, потом кладем трубку.
exten => 0,1,Dial(SIP/1007&SIP/1004&SIP/1002&SIP/1003&SIP/1001, 20,m)
exten => 0,n,Playback(vm-nobodyavail)
exten => 0,n,Hangup()
; тут мы на каждый выбор из меню проигрываем голосовое сообщение. (такие как 001, 002....)
exten => 1,1,Playback(001)
exten => 1,n,Hangup()
exten => 2,1,Playback(002)
exten => 2,n,Hangup()
; и т.д............................
; эта строка заворачивает нас по кругу, чтоб меню еще раз слушать (я так думаю...)
exten => i,1,Goto(incoming, 380777777717,1)
exten => t,1,Playback(vm-nobodyavail)
exten => t,n,Hangup()