Понимаю, что тема избита, но я уже все мозги сломала себе... Подскажите, пожалуйста, как мне в текущем конфиге добавить запрет вызовов по определенным номерам?
АТС используется только для внутренних вызовов. Номера четырехзначные.
Требуется сделать запрет звонков, например, для номера 1111 на все номера, кроме 1121 и 1131. Либо же для номера 1151 запрет на вызов 1111,1121,1131 но с возможностью вызова на все остальные. extensions.conf далее
[globals]
INT_DIAL_LENGHT=80 ;
[general]
autofallthrough=yes
[SIP]
include => internal
include => goint
include =>noint-signs
[internal]
exten => _[0-9]XXX,1,Macro(internal-main,${EXTEN},${CALLERID(num)},SIP)
[goint]
exten => _X.,1,Verbose(A call to the extension ${EXTEN})
exten => _X.,n,Hangup(21)
exten => _X,1,Verbose(A call to the extension ${EXTEN})
exten => _X,n,Hangup(21)
[noint-signs]
exten => _[*#].,1,Verbose(No call to ${EXTEN})
exten => _[*#].,n,Hangup(21)
exten => _[*#],1,Verbose(A call to the extension ${EXTEN})
exten => _[*#],n,Hangup(21)
[macro-internal-main]
exten => s,1,Verbose(An internal call to the extension ${ARG1} from the number ${ARG2})
exten => s,n,GotoIf($["${DEVICE_STATE(${ARG3}/${ARG1})}" = "BUSY"]?busy:)
exten => s,n,GotoIf($["${DEVICE_STATE(${ARG3}/${ARG1})}" = "UNAVAILABLE"]?unav:)
exten => s,n,GotoIf($["${DEVICE_STATE(${ARG3}/${ARG1})}" = "INVALID"]?unav:)
exten => s,n,Dial(${ARG3}/${ARG1},${INT_DIAL_LENGHT},g)
exten => s,n,GotoIf($["${DIALSTATUS}" = "CHANUNAVAIL"]?unav:)
exten => s,n,GotoIf($["${DIALSTATUS}" = "BUSY"]?busy:)
exten => s,n,GotoIf($["${DIALSTATUS}" = "CONGESTION"]?cong:)
exten => s,n,Hangup(16)
exten => s,n(unav),Hangup(21)
exten => s,n(busy),Hangup(17)
exten => s,n(cong),Hangup(34)
Спасибо большое! А то замучалась уже
1. Можно с помощью контекстов, что будет правильно и легче в правке.
2. Можно с помощью анализатора звонка по каждому номеру, усложняется задача и логика.
Что-то вроде
[callblock]
exten => 1111,1,Dial(SIP/1121})
exten => 1121,2,Dial(SIP/1111})
exten => h,1,Hangup
И это будет запретом вызова с 1111 на 1121 и наоборот? Или я вообще все перепутала?
вставить перед exten => s,n,Dial(${ARG3}/${ARG1},${INT_DIAL_LENGHT},g)
в случае с SHELL проще, потому-что можно использовать что угодно, главное, чтобы напечатался текст например yes или no,
а там уже if и dial или отказ вызова
если таких номеров более чем 10 - лучше анализатор, а если меньше - то можно с номерным планом поколдовать.
_________________
С уважением, DarkUser.
| Цитата: |
| И это будет запретом вызова с 1111 на 1121 и наоборот? |
exten => 111/112,1,Hangup
exten => 112/111,1,Hangup
Вот это будет самым простым запретом.
Получила пищу для размышлений, теперь буду пробовать!