Страница 1 из 2

настройка группы исходящих линий

Добавлено: 06 янв 2016, 21:39
bagrintsev
Коллеги, вечер добрый.

Есть шесть входящих/исходящих номерных городских линий и кучка внутренних абонентов.
Маршрутизация входящих из города элементарна и уже настроена.
Нужно настроить исходящие, причем чтобы для исходящего звонка использовалась ЛЮБАЯ СВОБОДНАЯ линия.
Я примерно догадываюсь, что можно это сделать скриптом, проверяя каждую линию на "свободность" (какую нибудь переменную вроде dialstatus).

Где то читал, но забыл где, что линии можно объединить в группу и назначать исходящий городской звонок на эту группу, а там они в группе уже сами разберутся: кто первый свободный, тот и звонит.
Подскажите плз как это обычно делается.

Re: настройка группы исходящих линий

Добавлено: 07 янв 2016, 00:03
ded

Код: Выделить всё

exten => _X.,1,Dial(DAHDI/line1/${EXTEN})
exten => _X.,n,Dial(DAHDI/line2/${EXTEN})
exten => _X.,n,Dial(DAHDI/line3/${EXTEN})
exten => _X.,n,Dial(DAHDI/line4/${EXTEN})
exten => _X.,n,Dial(DAHDI/line5/${EXTEN})
exten => _X.,n,Dial(DAHDI/line6/${EXTEN})

Re: настройка группы исходящих линий

Добавлено: 07 янв 2016, 13:11
bagrintsev
Спасибо за ответ, ded. То что надо!

Я правильно понимаю, по умолчанию звонок ломится на 1 линию.
Если она занята, переходим ко второй линии, и так далее до последней.
В конце можно еще сообщение дать, если все линии заняты.

Re: настройка группы исходящих линий

Добавлено: 07 янв 2016, 13:46
Aven
Это не совсем правильный код, нужно анализировать результат предыдущего Dial, т.к. переход на следующую строку происходит при любой ошибке дозвона, а так же по таймауту, а не только при занятости линии. Если абонент (а не линия) будет занят, то будет повторный дозвон через другую линию.

Re: настройка группы исходящих линий

Добавлено: 07 янв 2016, 14:36
ded
ТС ничего не сообщил про шесть входящих/исходящих номерных городских линий - это могут быть одноканальные SIP, или аналоговые через шлюзы или карточки FXO. При которыхрезультат предыдущего Dial будет разный, в зависимости от технологии.
Поэтому ответ абстрактный, основанный на картах таро.

Re: настройка группы исходящих линий

Добавлено: 07 янв 2016, 18:50
april22
Мне кажется проще один раз написать контекст, вылмзать его и использовать при любых исходящих вызовах бросая вызов просто в этот контекст .

Re: настройка группы исходящих линий

Добавлено: 07 янв 2016, 19:55
bagrintsev
ded
ТС ничего не сообщил про шесть входящих/исходящих номерных городских линий - это могут быть одноканальные SIP, или аналоговые через шлюзы или карточки FXO. При которыхрезультат предыдущего Dial будет разный, в зависимости от технологии.
Поэтому ответ абстрактный, основанный на картах таро.
Извините, конечно нужно было рассказать поподробнее. Cообщаю доп. инфу.

Астериск стоит 12, самый свежий, компилил из сорцов. Стоит на Ubuntu 14.04 на виртуальной машине VMware vSphere ESXi.
С помощью DAHDI от Parabel подключена железка Asteroid-1L3S на 8 входящих FXO, 22 внутренних FXS.
Входящих 5 линий номерных от Ростелекома по меди.
SIP, IAX и прочее будет настроено потом, сейчас все на голом аналоге, народ по выходу на работу не должен даже понять, что работают уже не по старой АТС-ке.

Настроил исходящие как советовал ded (удаленно, в бою пока не проверял).

Aven
Это не совсем правильный код, нужно анализировать результат предыдущего Dial, т.к. переход на следующую строку происходит при любой ошибке дозвона, а так же по таймауту, а не только при занятости линии. Если абонент (а не линия) будет занят, то будет повторный дозвон через другую линию.
Напишите плз, какие нужно делать проверки. DAHDI/8 - DAHDI/12 - это как раз телекомовские линии.

Вырезка из extensions.conf

Код: Выделить всё

;**************************
[line-analog]

ignorepat => 9

; исходящие на экстренные службы
exten => _0[1-4]!,1,Dial(DAHDI/8,3,D(${EXTEN}))
exten => _0[1-4]!,n,Dial(DAHDI/9,3,D(${EXTEN}))
exten => _0[1-4]!,n,Dial(DAHDI/10,3,D(${EXTEN}))
exten => _0[1-4]!,n,Dial(DAHDI/11,3,D(${EXTEN}))
exten => _0[1-4]!,n,Dial(DAHDI/12,3,D(${EXTEN}))
exten => _0[1-4]!,n,Congestion()
exten => _0[1-4]!,n,Hangup()

exten => _112!,1,Dial(DAHDI/8,3,D(${EXTEN}))
exten => _112!,n,Dial(DAHDI/9,3,D(${EXTEN}))
exten => _112!,n,Dial(DAHDI/10,3,D(${EXTEN}))
exten => _112!,n,Dial(DAHDI/11,3,D(${EXTEN}))
exten => _112!,n,Dial(DAHDI/12,3,D(${EXTEN}))
exten => _112!,n,Congestion()
exten => _112!,n,Hangup()

exten => _911!,1,Dial(DAHDI/8,3,D(${EXTEN}))
exten => _911!,n,Dial(DAHDI/9,3,D(${EXTEN}))
exten => _911!,n,Dial(DAHDI/10,3,D(${EXTEN}))
exten => _911!,n,Dial(DAHDI/11,3,D(${EXTEN}))
exten => _911!,n,Dial(DAHDI/12,3,D(${EXTEN}))
exten => _911!,n,Congestion()
exten => _911!,n,Hangup()

; исходящие на город (9 + шесть цифр)
exten => _9NXXXXX,1,Dial(DAHDI/8,3,D(${EXTEN:1})) ; набор городской 
exten => _9NXXXXX,n,Dial(DAHDI/9,3,D(${EXTEN:1})) ; набор городской 
exten => _9NXXXXX,n,Dial(DAHDI/10,3,D(${EXTEN:1})) ; набор городской 
exten => _9NXXXXX,n,Dial(DAHDI/11,3,D(${EXTEN:1})) ; набор городской 
exten => _9NXXXXX,n,Dial(DAHDI/12,3,D(${EXTEN:1})) ; набор городской 
exten => _9NXXXXX,n,Congestion() ; 
exten => _9NXXXXX,n,Hangup() ; 

; исходящие на сотовые 
exten => _989XXXXXXXXX,1,Dial(DAHDI/8,3,D(${EXTEN:1})) ; сотовые операторы. 92х,93х - мегафон, 91х, 98х - мтс, 96х - билайн 
exten => _989XXXXXXXXX,n,Dial(DAHDI/9,3,D(${EXTEN:1})) ; сотовые операторы. 92х,93х - мегафон, 91х, 98х - мтс, 96х - билайн 
exten => _989XXXXXXXXX,n,Dial(DAHDI/10,3,D(${EXTEN:1})) ; сотовые операторы. 92х,93х - мегафон, 91х, 98х - мтс, 96х - билайн 
exten => _989XXXXXXXXX,n,Dial(DAHDI/11,3,D(${EXTEN:1})) ; сотовые операторы. 92х,93х - мегафон, 91х, 98х - мтс, 96х - билайн 
exten => _989XXXXXXXXX,n,Dial(DAHDI/12,3,D(${EXTEN:1})) ; сотовые операторы. 92х,93х - мегафон, 91х, 98х - мтс, 96х - билайн 
exten => _989XXXXXXXXX,n,Congestion() ;  
exten => _989XXXXXXXXX,n,Hangup() ;  

; исходящие на все остальное (потом лучше наверное прикрыть от греха подальше). 
exten => _9.,1,Dial(DAHDI/8,3,D(${EXTEN:1})) 
exten => _9.,n,Dial(DAHDI/9,3,D(${EXTEN:1})) 
exten => _9.,n,Dial(DAHDI/10,3,D(${EXTEN:1})) 
exten => _9.,n,Dial(DAHDI/11,3,D(${EXTEN:1})) 
exten => _9.,n,Dial(DAHDI/12,3,D(${EXTEN:1})) 
exten => _9,n,Congestion()
exten => _9,n,Hangup()
  
; внутренние звонки между абонентами конторы
exten => 100,1,Dial(${100-DIRECTOR},20,tm(${MUSIK-MY}))  ;    опция t - безусловный перевод по #  
exten => 101,1,Dial(${101-SECRETAR},20,tm(${MUSIK-MY}))  ;   
exten => 102,1,Dial(${102-GLAVBUH},20,tm(${MUSIK-MY}))  ;   
exten => 103,1,Dial(${103-BUH},20,tm(${MUSIK-MY}))  ;   
exten => 104,1,Dial(${104-ZAVSKLAD},20,tm(${MUSIK-MY}))  ;   
exten => 105,1,Dial(${105-TEHDIR},20,tm(${MUSIK-MY}))  ;   
exten => 106,1,Dial(${106-SB},20,tm(${MUSIK-MY}))  ;   
exten => 107,1,Dial(${107-PTO},20,tm(${MUSIK-MY}))  ;   
exten => 108,1,Dial(${108-ZAMDIR},20,tm(${MUSIK-MY}))  ;   
exten => 109,1,Dial(${109-ZAMGLAVBUH},20,tm(${MUSIK-MY}))  ;   
exten => 110,1,Dial(${110-KADRY},20,tm(${MUSIK-MY}))  ;   
exten => 111,1,Dial(${111-GUARD},20,tm(${MUSIK-MY}))  ;   
exten => 112,1,Dial(${112-IT},20,tm(${MUSIK-MY}))  ;   
exten => 113,1,Dial(${113-GLAVMEH},20,tm(${MUSIK-MY}))  ;   
exten => 114,1,Dial(${114-PROMBAZA},20,tm(${MUSIK-MY}))  ;   
exten => 115,1,Dial(${115-ZNAKI},20,tm(${MUSIK-MY}))  ;   
; не подключенные пока линии
;exten => 116,1,Dial(DAHDI/25,20,tm(${MUSIK-MY}))  ;   
;exten => 117,1,Dial(DAHDI/26,20,tm(${MUSIK-MY}))  ;   
;exten => 118,1,Dial(DAHDI/27,20,tm(${MUSIK-MY}))  ;   
;exten => 119,1,Dial(DAHDI/28,20,tm(${MUSIK-MY}))  ;   
;exten => 120,1,Dial(DAHDI/29,20,tm(${MUSIK-MY}))  ;   
;exten => 121,1,Dial(DAHDI/30,20,tm(${MUSIK-MY}))  ;   

Re: настройка группы исходящих линий

Добавлено: 07 янв 2016, 20:51
ded
1) Не стоит использовать синтаксис

Код: Выделить всё

 exten => _0[1-4]! 
- старое наследие, использовалось в старом AsteriskNOW, хотя, конечно, работает и так.
exten => _0[1-4]XXXXX - определённой значности, лучше.
2) Проверки:
Делаете тестовый
exten => 234567,1,Dial(DAHDI/8,3,D(${EXTEN})) ; (где 2345678 - ваш домашний номер телефона)
Набираете его с работы (и смотрите в CLI)
Говорите жене - "Дорогая, повиси так на трубке, мне надо кое-что потестировать
и набираете телефон дрруга (!) с другого рабочего телефона, смотрите код отлупа (тестируем занятость гор. линии на Астероиде).
Для сравнения - потом просите жену из дома позвонить подруге, и повисеть минуты 2-3, поговорить за жизнь.
При этом набираете опять же свой дом. номер с работы и смотрите код отлупа.

При правильной постановке дела в первом тесте должен уйти на следующий шаг
exten => _0[1-4]!,n,Dial(DAHDI/9,3,D(${EXTEN}))

При неправильной постановке дела звонок уйдёт на второй-третий-четвёртый при втором тесте.

Re: настройка группы исходящих линий

Добавлено: 07 янв 2016, 21:00
bagrintsev
Сижу вот форум от нечего делать перечитываю.
Похоже, не я первый на эту граблю наступил.
Вот, например: Проверка доступности канала
Или вот: ChanIsAvail.
И ни одного законченного ответа.
Очень странно, тема про исходящие должны быть вроде как основной в телефонии.

Re: настройка группы исходящих линий

Добавлено: 07 янв 2016, 21:01
bagrintsev
спасибо, ded, попробую!

Про _0[1-4]! - дельное замечание, косяк в безопасности.