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

Как нескольким екстеншенам запретить выполнять макро

0

Приветствую всех. Поднимаю вопрос. 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))

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

спросил 2017-05-03 16:38:52 +0400

Серж Gravatar Серж
1 1 2

Comments

Пробовал вместо 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 )редактировать

1 Ответ

0
[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-04 21:41:47 +0400

meral Gravatar meral flag of Ukraine
22277 24 20 173
http://pro-sip.net/

обновил 2017-05-04 21:51:06 +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 ленту новостей

Статистика

Задан: 2017-05-03 16:38:52 +0400

Просмотрен: 57 раз

Обновлен: May 04

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