AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

Dial на выключенный sip-сервер.

Newbies/FAQ Forum 6 сообщений -
#1

Есть сервер, который звонит по сип на другие сервера.
Например:
exten => _X., 1, Dial(SIP/sipserv/${EXTEN},60,L(2100000))

Если сервер ответил что свободных каналов нет, то звонок идет на другой сервер(анализируется dialstatus).
А вот если сервер выключен(упал)... астериск пытается дозвониться до него 60 сек. Как сделать так, чтобы в этом случае 60 сек не ждать, а сразу пойти дальше по диалплану и послать этот звонок через другой сервер.
#2

Проверить его статус перед звонком ChanIsAvail
#3

хм...
вот что сейчас в диалплене:

exten => s,n,ChanIsAvail(SIP/sipserv)
exten => s,n,GotoIf($["${AVAILCHAN}"=""]?noop)
exten => s,n,Dial(SIP/sipserv/${MACRO_EXTEN:${ARG1}},60,L(3000000))
exten => s,n(noop),NoOp()

ChanIsAvail против ситуации, что я описал так не помогает(
#4

qualify установлен на сервера?
_________________
ubuntu-server*CLI> core show channels count
30 active channels
30 of 200 max active calls ( 15.0% of capacity)
3073645 calls processed
ubuntu-server*CLI> core show uptime
System uptime: 1 year, 6 weeks, 18 hours, 14 minutes, 22 seconds
#5

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 то звоним по ней.
#6

Спасибо!
Поставил qualify и все ок.