На сервере стоит Aterisk 1.6.1.6+DAHDI -2.2.0.2. Есть пять городских телефонных линий, которые входят в порты FXO на соответствующей плате. Есть 8 телефонов в организации, которые, соответственно входят в плату с FXS портами. Требуется сделать так, что бы, допустим, один человек поднял трубку и набрал номер. Система направила этот вызов в одну из свободных телефонных линий. Если следом другой человек пытается позвонить с другого телефона, а один порт уже занят, то его направляют на другой свободный порт, итд. В случае, когда все линиии заняты человеку выдается сообщение, что пока он позвонить не может, ну или просто выдаются короткие гудки. Задачу эту решил таким образом:
exten => _X.,1,Macro(calls-dahdi-outgouing, 13, ${EXTEN})
exten => _X.,n,Macro(calls-dahdi-outgouing, 14, ${EXTEN})
exten => _X.,n,Macro(calls-dahdi-outgouing, 15, ${EXTEN})
exten => _X.,n,Macro(calls-dahdi-outgouing, 16, ${EXTEN})
exten => _X.,n,Macro(calls-dahdi-outgouing, 17, ${EXTEN})
exten => _X.,n,Congestion()
13-17 - номер линии, через которую нужно позвонить
Тоесть происходит построчный перебор. Если линия занята, то осуществляется переход на следующую строку. И в конце, если все линии заняты - слышим короткие гудки.
Вопрос: нет ли в астериске функции, которая могла бы сразу выдавать номер свободной FXO линии ?