Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

проверка канала перед исходящим вызовом

0

Доброго времени суток. Есть астер, есть Duhdi канал (основной) и есть Sip-канал(резервный). Исходящие вызовы должны ходить через основной, если он доступен, а если недоступен - автоматом уходить на резервный. Входящие с двух каналов обрабатываются одинаково (это работает). Вопрос - как проверить состояние канала и перебросить вызов при необходимости? Заранее спасибо.

удалить закрыть спам изменить тег редактировать

спросил 2014-11-21 13:52:00 +0400

Arxangel06 Gravatar Arxangel06
1 4 3

Comments

${DIALSTATUS}

tesak89 ( 2014-11-21 14:11:39 +0400 )редактировать

А можно чуть подробнее? Сейчас обработка такая:

exten => 9X.,280,Dial(DAHDI/g1/${numtopri},35,S(3600)gm) ;exten => _9X.,280,Dial(SIP/${EXTEN:1}@mtt-out,35,S(3600)gm) exten => _9X.,281,Set(CDR(userfield)=${FullName}) exten => _9X.,282,Set(CDR(fromext)=${oldcallerid}) exten => 9X.,283,Set(CDR(toext)=${num}) exten => _9X.,284,Set(CDR(dialstatus)=${DIALSTATUS}) exten => _9X.,285,GoTo(s9-${DIALSTATUS},1) exten => _9X.,286,Hangup

В какое место и как именно вставить эту проверку DialStatus? Между первой и второй строкой вставить еще одну: exten => _9X.,281,GoTo(sX-${DIALSTATUS},1) и потом после теперь уже третьей(ныне закомментированной) еще одну: exten => sX-ANSWER,1 Отсутствующий третий параметр скажет системе не делать ничего и обработка просто перейдет к следующему шагу конфига. Все правильно?

Arxangel06 ( 2014-11-21 14:34:19 +0400 )редактировать

Делаете Dial через один транк, в зависимости от DIALSTATUS либо завершаете вызов, либо Dial через другой.

tesak89 ( 2014-11-21 15:23:49 +0400 )редактировать

оно и так будет по приоритетам работать без изврата, просто 2 последовательные вызовы Dial.

Zavr2008 ( 2014-11-21 17:28:41 +0400 )редактировать

Будет. Но без проверки после первого Dial, если вызываемый абонент положит трубку, пойдет второй Dial ему же, через другой транк.

tesak89 ( 2014-11-22 17:12:18 +0400 )редактировать

1 Ответ

0

Функция SIPPEER, параметр 'status'. Предполагается, что для этого пира должен быть включен 'qualify'.

exten => 606060,1,NoOp(  check peer status  )
    same => n,NoOp( [sipnet] SIPPEER info: ${SIPPEER(sipnet,status)})
    same => n,NoOp( ;===================================== )
    same => n,NoOp( [megavoip] SIPPEER info: ${SIPPEER(megavoip,status)})
    same => n,NoOp( ;===================================== )
    same => n,GotoIf($[${SIPPEER(sipnet,status)}= "OK"]?sndial:mv)
    same => n(sndial),Dial(SIP/sipnet/${EXTEN},5)
    same => n,Hangup
    same => n(mv),NoOp( [sipnet] is UNREACHABLE, trying [megavoip] in 1 second ... )
    same => n,Wait(1)
    same => n,GotoIf($[${SIPPEER(megavoip,status)}= "OK"]?mvdial:hang)
    same => n(mvdial),Dial(SIP/megavoip/${EXTEN},5)
    same => n,Hangup
    same => n(hang),Playback(all-peers-are-dead)
    same => n,Hangup
ссылка удалить спам редактировать

ответил 2014-11-21 16:43:07 +0400

Lexus45 Gravatar Lexus45
270 3 3 3

обновил 2014-11-21 16:52:36 +0400

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку

подписаться на rss ленту новостей

Статистика

Задан: 2014-11-21 13:52:00 +0400

Просмотрен: 1,264 раз

Обновлен: Nov 21 '14

Похожие вопросы:

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.