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

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

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]
                    ...
удалить закрыть спам изменить тег редактировать

спросил 2015-12-21 01:33:43 +0400

etskh Gravatar etskh
326 40 19

Comments

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

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

StuxForce ( 2015-12-21 10:12:02 +0400 )редактировать

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

etskh ( 2015-12-21 16:35:25 +0400 )редактировать

2 Ответа

1

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

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

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

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

ответил 2015-12-21 04:08:07 +0400

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

Comments

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

etskh ( 2015-12-21 16:31:51 +0400 )редактировать

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

etskh ( 2015-12-21 17:04:31 +0400 )редактировать

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

zzuz ( 2015-12-21 17:06:32 +0400 )редактировать
0

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

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

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

ответил 2015-12-21 13:53:36 +0400

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

Comments

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

etskh ( 2015-12-21 16:27:31 +0400 )редактировать

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

meral ( 2015-12-22 00:09:48 +0400 )редактировать

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

StuxForce ( 2015-12-22 10:31:17 +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 ленту новостей

Статистика

Задан: 2015-12-21 01:33:43 +0400

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

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

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