VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Проверка доступности канала

Новичком считается только что прочитавший «Астериск - будущее телефонии»
http://asterisk.ru/knowledgebase/books
и пытающийся сделать большее

Модераторы: april22, Zavr2008

Ответить
ballrak
Сообщения: 11
Зарегистрирован: 28 ноя 2012, 15:54

Проверка доступности канала

Сообщение ballrak »

Есть телефонная линия по протоколу SIP - основной канал. И резервная телефония через аналоговые лини.
У провайдера SIP статический ip, и у нашего Asterisk тоже. Провайдер идентифицирует нас по CALLERID и ip.
Как сделать автоматический переход при недоступности SIP на резервный канал, и если основной канал стал доступным обратный переход.
awsswa
Сообщения: 2390
Зарегистрирован: 09 июн 2012, 10:52
Откуда: Россия, Пермь skype: yarick_perm

Re: Проверка доступности канала

Сообщение awsswa »

chanisavail
платный суппорт по мере возможностей
ded
Сообщения: 15628
Зарегистрирован: 26 авг 2010, 19:00

Re: Проверка доступности канала

Сообщение ded »

exten => _X.,1,Set(${CALLERID(num)}=123456)
exten => _X.,n,Dial(SIP/provider/${EXTEN})
exten => _X.,n,Dial(DAHDI/1/${EXTEN})
exten => _X.,n,Dial(DAHDI/2/${EXTEN})
ballrak
Сообщения: 11
Зарегистрирован: 28 ноя 2012, 15:54

Re: Проверка доступности канала

Сообщение ballrak »

exten => _X.,1,Set(${CALLERID(num)}=123456)
exten => _X.,n,Dial(SIP/provider/${EXTEN})
exten => _X.,n,Dial(DAHDI/1/${EXTEN})
exten => _X.,n,Dial(DAHDI/2/${EXTEN})
Я правильно понял, если SIP канал недоступен или просто занят переходим на аналоговый канал?
Если да то мне этот вариант не подходит, по SIP исходящие звонки дешевле, и мне нужно переключение только при недоступности канала.
Попробовал разобраться с chanisavail. Хотел проверить как он вообще работает, на обычных телефонах.
exten => 401,1,ChanIsAvail(SIP/401,j)
exten => 401,n,SayNumber(${AVAILSTATUS})
exten => 401,n,Dial(SIP/401,10,t)
exten => 401,n,Hangup()
exten => 401,102,Dial(SIP/403,10,t)
exten => 401,103,Hangup()
Выключал 401 (чтобы вообще не регистрировался), со включенным проверял. Всегда один и тот же статус 0.
Нашел что он обозначает 0 AST_DEVICE_UNKNOWN - "Unknown"; channel is valid, but unknown state.
Даже ChanIsAvail(SIP/любой несуществующий номер,j), все равно статус 0.
Что я делаю неправильно?
Аватара пользователя
zzuz
Сообщения: 1658
Зарегистрирован: 21 сен 2010, 13:33
Контактная информация:

Re: Проверка доступности канала

Сообщение zzuz »

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

exten => s,n,ChanIsAvail(SIP/401)
exten => s,n,Set(FREE_TRUNK=${CUT(AVAILCHAN,,1)})
exten => s,n,GotoIF($["${EXISTS(${FREE_TRUNK)}" = "0"]?DIAL_DAHDI)
Линия24 - Системы Массового Телефонного Обслуживания
awsswa
Сообщения: 2390
Зарегистрирован: 09 июн 2012, 10:52
Откуда: Россия, Пермь skype: yarick_perm

Re: Проверка доступности канала

Сообщение awsswa »

exten => _9XXXXXXX,1,Macro(stat-out-allcall,${EXTEN:1:7})
[macro-stat-out-allcall]
exten => s,1,ChanIsAvail(SIP/2009XXX-1&SIP/2009XXX-2&SIP/2009XXX-3,as)
exten => s,n,NoOp(Availchan is ${AVAILCHAN}) ; будет выведено какой канал доступен
exten => s,n,NoOp(Availstatus is ${AVAILSTATUS}) ; будет указан статус канала
exten => s,n,Dial(${CUT(AVAILCHAN,,1&2)}/${ARG1})
exten => s,n,Hangup()

Функция ChanIsAvail - проверяет статус линии и на выходе выдает варианты:
1-зарегестрирован, не звонит
2-зарегестрирован и используется (если call-limit = 1 не установлен)
3-зарегестрирован и используется (call-limit = 1)
5-не зарегестрирован
6-зарегестрирован и звонит
Узнаем статус линии - если статус 1 или 2 то звоним по ней.
платный суппорт по мере возможностей
ballrak
Сообщения: 11
Зарегистрирован: 28 ноя 2012, 15:54

Re: Проверка доступности канала

Сообщение ballrak »

awsswa Спасибо ;) . Работает. Проблема была с опцией в ChanIsAvail. Если указываешь опцию s то Availstatus принимает значения отличные от нуля. Если ее нет то при всех условиях 0.
У ChanIsAvail две опции.
s - Рассматривает канал как недоступный, если он всегда используется.
j - Включает поддержку перехода на команду с приоритетом n+101, если нет доступных каналов.
А можно их вместе использовать? Просто тогда можно было бы не использовать переход GotoIF, а сразу резервный канал писать на n+101 строке.
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH