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

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

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

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

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

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