Приветствую всех. Поднимаю вопрос. Asterisk freepbx есть макро, как нескольким экстеншенам запретить его выполнение. Самостоятельно не смог разобраться по наводке из предыдущего ответа. Макро забит в extensions_custom.conf. Прекрасно понимаю настрой опытных астерисковедов на подобных форумах к подобным просьбам. Прошу не плеваться ядом. Передо мной стоит задача выходящая за рамки моих компетенций, но выполнить мне её надо.
[macro-CHECKDEVICESTATE]
exten => s,1,Noop(DEVICE STATE - ${DEVICE_STATE(${DSTRING})})
exten => s,n,ExecIf($["${DEVICE_STATE(${DSTRING})}" = "INUSE"]?Playback(abonent-zanyat))
exten => s,n,ExecIf($["${DEVICESTATE(${DSTRING})}" = "INUSE"]?Set(DOPTIONS=Ttm))
exten => s,n,ExecIf($["${DEVICE_STATE(${DSTRING})}" = "RINGINUSE"]?Playback(abonent-zanyat))
exten => s,n,ExecIf($["${DEVICESTATE(${DSTRING})}" = "RINGINUSE"]?Set(DOPTIONS=Ttm))
[macro-CHECKDEVICESTATE]
exten => s,1,Set(ext=${CUT(CHANNEL(name),/,2)})
exten => s,2,Gosub(check_permissions,${CUT(ext,-,1)},1); будет только номер сип-канала..
; тут дальше макро
[check_permissions]
include => permissions_deny
include => permissions_allow
include => permissions_other
[permissions_other]
exten => _.,1,Return; default action - allow
;exten => _.,1,Hangup; default action - deny
[permissions_allow]
exten => 1000,1,Return
[permissions_deny]
exten => 1001,1,Hangup
Пробовал вместо s указывать хотя бы какие то ограничения, например [2-3]XX, что бы хотя бы этот макрос выполнялся только для трёх значных номеров начинающихся с 2 и с 3. В таком случае он вообще перестаёт выполняться
вот так делаетcя
exten => s/_[23]XX,1,Noop
https://wiki.asterisk.org/wiki/display/AST/Pattern+Matching (пример возле фразы unexpected-jump-test)
Задан: 2017-05-03 16:38:52 +0400
Просмотрен: 164 раз
Обновлен: May 04 '17
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.
Пробовал вместо s указывать хотя бы какие то ограничения, например [2-3]XX, что бы хотя бы этот макрос выполнялся только для трёх значных номеров начинающихся с 2 и с 3. В таком случае он вообще перестаёт выполняться.
Серж ( 2017-05-03 17:43:23 +0400 )редактироватьИзменением макроса никак.
zzuz ( 2017-05-03 19:08:09 +0400 )редактироватьНу почему же никак. "Как" если передавать в макос некий аргумент и его же в нем обрабатывать.
Вместо s ессно не будет работать. Золотое правило: когда не работает и не понимаешь - открой инструкцию https://www.voip-info.org/wiki/view/Asterisk+cmd+Macro
virus_net ( 2017-05-04 11:08:15 +0400 )редактировать"никак" здесь не с точки зрения возможности , а с стороны ситуации. очевидно , что проще запретить выполнения этого макроса , но автор считает , что мы сами должны догадываться ,как и где он вызывается.
zzuz ( 2017-05-04 12:29:44 +0400 )редактироватьФайл functions.inc.php
$mcontext = 'macro-dial-one';
$ext->add($mcontext,$exten,'godial', new extexecif('$["${QAGENT}"=""]', 'Macro', 'CHECKDEVICE_STATE,'));
$ext->add($mcontext,$exten,'', new extdial('${DSTRING}', '${ARG1},${DOPTIONS}'));
Серж ( 2017-05-04 13:26:13 +0400 )редактировать[macro-dial-one]
exten => s,n(godial),ExecIf($["${QAGENT}"=""]?Macro(CHECKDEVICESTATE,))
exten => s,n,Dial(${DSTRING},${ARG1},${D_OPTIONS})
Серж ( 2017-05-04 13:39:20 +0400 )редактироватьНадеюсь, я правильно вас понял и предоставил информацию как и где он вызывается. это не сарказм, понимаю вас, что вы не провидцы.
Серж ( 2017-05-04 13:42:45 +0400 )редактироватьКак тогда вяжется ковыряние в исходниках и фраза "Макро забит в extensions_custom.conf" ?
zzuz ( 2017-05-04 17:59:13 +0400 )редактироватьВ исходниках ковырялся не я, я просто отследил от куда ноги растут. По логу это сделать не сложно. А макрос забит именно в extensions_custom.conf и выполняется от туда macro-dial-one
meral, большое, огромное спасибо, попробую.
exten => s/_[23]XX,1,Noop как я понял это: всем кроме 4-х значных номеров начинающихся на 23. я правильно прочитал это выражение?
Серж ( 2017-05-05 18:00:29 +0400 )редактироватьнеправильно. [23] это множество цифр 2 и 3. То есть читается выражение , как трехзначные цисла , начинающиеся с 2 или 3 .
zzuz ( 2017-05-05 18:08:46 +0400 )редактировать