First time here? Check out the FAQ!

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

Разрешить только цифры

0

Здравствуйте. Казалось бы, самые азы, но астериск почему то не понимает моих просьб. Пытаюсь разрешить набирать только цифры, если будут какие то символы или буквы, в контекст не попадать. Но классические маски _X! или _[0-9]! почему то не проходят. Символы вида "-" или "!" лезут в набор

CLI> dialplan show 2-2!223333@out-context

[ Context 'out-context' created by 'pbx_config' ]
 
'_[0-9]!' =>      1. NoOp(Out Call)                             [pbx_config]
                   
2. Agi(call-limit.php)                        [pbx_config]
                   
4. Set(GROUP()=${CDR(accountcode)})           [pbx_config]
                   
5. Set(CALLS=${GROUP_COUNT(${GROUP()})})      [pbx_config]
                   
6. ExecIf($[${CALLS} > ${MAXCALL} ]?Congestion) [pbx_config]
                   
...

спросил Dec 20 '15

etskh Gravatar etskh
326 40 19

Comments

Но классические маски _X! или _[0-9]! почему то не проходят.

Так все верно, ваши маски подразумевают "начинается с цифры, а далее следуют любые символы". Читайте описание: https://wiki.asterisk.org/wiki/display/AST/Pattern+Matching

StuxForce (Dec 21 '15)edit

думал, что "." - это маска для любых символов, а "!" - любое количество символов согласно предыдущему символу "_X", т.е. только цифры от 0 до 9. Русскоязычные мануалы ввели в заблуждение.

etskh (Dec 21 '15)edit

2 Ответа

1

Используйте функцию FILTER()

[out-context]
exten
=> _.,1,Goto(${FILTER(0-9,${EXTEN})},1)
exten
=> _X.,1,....

Плюс разнести экстеншен по контекстам и добавить проверку ввода.

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

ответил Dec 21 '15

zzuz Gravatar zzuz flag of Russian Federation
7174 2 6 75
http://line24.ru/

Comments

О про эту функцию не слышал, думал через REGEX делать. Да, и как же делать проверку ввода если человек звонит с какой-нибудь звонилки, которая не режет символы сама.

etskh (Dec 21 '15)edit

И да, вы только не советуете больше такой пример, а то зациклит всё нафиг. ))

etskh (Dec 21 '15)edit

Это наглядный пример одной строки , где применяется функция. Сочувствую , если Вы так бездумно копируете .

zzuz (Dec 21 '15)edit
0

потомучто начинатеся с цифры и только цифры это разные фразы.

используйте чтото типа такого

_X
_XX
_XXX
_XXXX
_XXXXX
_XXXXXX
_XXXXXXX
ссылка удалить спам редактировать

ответил Dec 21 '15

meral Gravatar meral flag of Ukraine
23347 24 20 177
http://pro-sip.net/

Comments

А почему тогда не срабатывает на номер 7-4953333333 маска вида _XXXXXXХ. ? Точнее как раз срабатывает и астериск считает, что данный номер подходит под эту маску.

etskh (Dec 21 '15)edit

смотрите консоль. может у вас телефон убирает все минусы и до астериска доходит нормальная.

meral (Dec 21 '15)edit

Все верно. Символ '-' игнорируется в extensions. Там же по ссылке в моем комментарии к первому посту это написано.

StuxForce (Dec 22 '15)edit

Ваш ответ

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 ленту новостей

Статистика

Задан: Dec 20 '15

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

Обновлен: Dec 21 '15

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