Страница 1 из 1

AMI. GetConfig/GetConfigJSON

СообщениеДобавлено: 12 сен 2018, 00:06
Garnish
Всем привет. Может кто-то сможет подсказать по синтаксису команды?
Action: GetConfigJSON
ActionID: <value>
Filename: <value>
Category: <value>
Filter: <value>

Конкретно интересует категория "Filter"
Какой должен быть синтаксис? В доке написано:
Filter - A comma separated list of name_regex=value_regex expressions which will cause only categories whose variables match all expressions to be considered. The special variable name TEMPLATES can be used to control whether templates are included. Passing include as the value will include templates along with normal categories. Passing restrict as the value will restrict the operation to ONLY templates. Not specifying a TEMPLATES expression results in the default behavior which is to not include templates.

Но нет примеров. Интернет тоже не богат.
Для примера, я пытаюсь вытащить из файла ami_extensions.conf, секция globals его настройки.
Содержимое файла примерно такое:
[globals]

AMO_CONNECTOR = /var/lib/asterisk/agi-bin/amo-connector/handler.php
AMO_CONNECTOR_PROD = /var/lib/asterisk/agi-bin/amo-connector-prod/handler.php
MONITOR_EXEC = /usr/local/bin/2wav2mp3.sh
ccnumber0 = 123105
ccnumber1 = 123106
smallccnumber0 = 123108
smallccnumber1 = 123139
smallccnumber2 =

MOBILE_120 = 89104XXXXXX
MOBILE_200 = 89035XXXXXX
MOBILE_201 = 89629XXXXXX
MOBILE_202 = 89168XXXXXX

я бы хотел вытащить только строки, в которых есть значение "MOBILE". Как это можно сделать с помощью filter и можно ли вообще?
Пытался подставить регулярки из ЯП, но либо показывает весь конфиг, либо ничего.
Пытался подставлять:
Filter: myfilter=MOBILE* - No categories found
Filter: myfilter=MOBILE\w* - No categories found
Filter: myfilter=.* - выдает весь конфиг (в целом, ожидаемо)

Сделать обработку средствами языка программирования не проблема, но, если есть возможность решить это средствами астера, то конечно хотелось бы сделать с помощью него. Иначе, как говорится, это не python way.

Re: AMI. GetConfig/GetConfigJSON

СообщениеДобавлено: 12 сен 2018, 08:21
virus_net
Filter: myfilter=^MOBILE.*
Не?

Re: AMI. GetConfig/GetConfigJSON

СообщениеДобавлено: 12 сен 2018, 09:11
Garnish
Увы, но нет.

Re: AMI. GetConfig/GetConfigJSON

СообщениеДобавлено: 12 сен 2018, 09:16
virus_net
а что возвращается при этом regexp`е ?

Re: AMI. GetConfig/GetConfigJSON

СообщениеДобавлено: 12 сен 2018, 09:27
Garnish
Response: Success
No categories found

Re: AMI. GetConfig/GetConfigJSON

СообщениеДобавлено: 12 сен 2018, 09:32
virus_net
Судя по поиску Filter в GetConfigJSON появился начиная с 12-ой ветки *
У вас какая версия ?

+ в доке конечно не ясность:
which will cause only categories whose variables match

А если речь идет не про название переменной, а про её значение ?
Filter: myfilter=\d+
или
Filter: myfilter=^\d+$
Дает что-то ?

Так же попробуйте, потом, value_regex взять в двойные кавычки.

Re: AMI. GetConfig/GetConfigJSON

СообщениеДобавлено: 12 сен 2018, 13:27
Garnish
Не помогает. Такое ощущение, что астер не понимает квантификаторы. Пытался найти инфу по REGEX (синтаксис), тоже толку 0. Либо показывает весь контекст, если указать ^[0-9], либо ничего, если задать имя MOBILE
Версия астера 15

Re: AMI. GetConfig/GetConfigJSON

СообщениеДобавлено: 12 сен 2018, 14:04
virus_net
Других идей у меня нет. Должна быть аналогия с Action: Filter.
Example whitelist filter: "Event: Newchannel"
Example blacklist filter: "!Channel: DAHDI.*"

Двойные кавычки попробовали ?

Re: AMI. GetConfig/GetConfigJSON

СообщениеДобавлено: 12 сен 2018, 14:49
Garnish
Да, пробовал. Про filter тоже думал и тоже в свое время не удалось найти явную документацию по регуляркам. Спасибо за ваши советы, буду парсить через регулярку ЯПа.