ВидеоКонф(ВКС)  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

проверку по поводу нахождения подстроки в строке

Новичком считается только что прочитавший «Астериск - будущее телефонии»
http://asterisk.ru/knowledgebase/books
и пытающийся сделать большее

Модераторы: april22, Zavr2008

проверку по поводу нахождения подстроки в строке

Сообщение whoim » 03 авг 2018, 16:37

А проверку по поводу нахождения подстроки в строке кто нибудь делал?)

ExecIf($[ ${VARIABLE} содержит "ТЕКСТ" ]?..)

да, я новичок xD
облачные и локальные сервера asterisk/freepbx/a2billing/crm с полной техподдержкой. skype: whoim2, sipuri: whoim@asterisk.ru
whoim
 
Сообщений: 766
Зарегистрирован: 26 ноя 2013, 23:25
Откуда: Краснодар

Re: проверку по поводу нахождения подстроки в строке

Сообщение asterisker » 03 авг 2018, 17:02

У меня так:
ExecIf($["${CALLERID(NUM):1:1}" = "_"]

но тут моя специфика использования, не универсально.

Ну еще моя специфика - через cut:
same => n,Set(SEQ=B31-B32-B34-B35-B36-B37-B38)
same => n(loop),Set(SEQLEN=${FIELDQTY(SEQ,-)})
same => n,Set(RNDSEL=${RAND(1,${SEQLEN})})
same => n,Set(CURITEM=${CUT(SEQ,-,${RNDSEL})})
same => n,GoSub(single-trunk-out,s,1(${ARG1},${CURITEM}))
same => n,ExecIf($['${RNDSEL}' = '${SEQLEN}']?Set(SEQ=${STRREPLACE(SEQ,-${CURITEM})}):Set(SEQ=${STRREPLACE(SEQ,${CURITEM}-)}))
same => n,Noop(${SEQ})
same => n,GotoIf($[${FIELDQTY(SEQ,-)} = 1]?end:loop)
asterisker
 
Сообщений: 65
Зарегистрирован: 18 июл 2016, 12:40

Re: проверку по поводу нахождения подстроки в строке

Сообщение whoim » 03 авг 2018, 17:20

Не, у меня значения другие.. со своего сервиса

Пока так оставлю. Стыдно, но работает
Код: выделить все
exten => _X.,n,Set(REGION=${SHELL(wget....
exten => _X.,n,ExecIf($["${REGION}q" : "(^.+Bashkortostan.+)"]?Set(TRUNK_NUM=01))
exten => _X.,n,ExecIf($["${REGION}q" : "(^.+Leningradskayaobl.+)"]?Set(TRUNK_NUM=02))
exten => _X.,n,ExecIf($["${REGION}q" : "(^.+gSankt-Peterburg.+)"]?Set(TRUNK_NUM=02))
exten => _X.,n,ExecIf($["${TRUNK_NUM}"=""]?Set(TRUNK_NUM=00))
облачные и локальные сервера asterisk/freepbx/a2billing/crm с полной техподдержкой. skype: whoim2, sipuri: whoim@asterisk.ru
whoim
 
Сообщений: 766
Зарегистрирован: 26 ноя 2013, 23:25
Откуда: Краснодар

Re: проверку по поводу нахождения подстроки в строке

Сообщение whoim » 03 авг 2018, 17:28

наверное, даже так будет вернее
"q${REGION}q"

любой символ, ибо по окончанию строки regexp не ищет, а я в них не понимаю(
облачные и локальные сервера asterisk/freepbx/a2billing/crm с полной техподдержкой. skype: whoim2, sipuri: whoim@asterisk.ru
whoim
 
Сообщений: 766
Зарегистрирован: 26 ноя 2013, 23:25
Откуда: Краснодар

Re: проверку по поводу нахождения подстроки в строке

Сообщение virus_net » 03 авг 2018, 18:45

function REGEX
мой SIP URI sip:virus_net@asterisk.ru
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)

ENUMER - звони бесплатно и напрямую.
virus_net
 
Сообщений: 2337
Зарегистрирован: 05 июн 2013, 08:12
Откуда: Москва

Re: проверку по поводу нахождения подстроки в строке

Сообщение whoim » 08 авг 2018, 12:12

именно ее разновидность (в операторе :) и используется.
И именно это я и просил, поскольку не изучал регулярные выражения
облачные и локальные сервера asterisk/freepbx/a2billing/crm с полной техподдержкой. skype: whoim2, sipuri: whoim@asterisk.ru
whoim
 
Сообщений: 766
Зарегистрирован: 26 ноя 2013, 23:25
Откуда: Краснодар

Re: проверку по поводу нахождения подстроки в строке

Сообщение Repz » 08 авг 2018, 14:30

если ищем совпадения в строке, то конструкцию можно сократить
exten => 10,1,set(text=piter812)
;exten => 10,1,set(text=moscow495)
same => n,gotoif($[${text} =~ "er8"]?true:false)
;same => n,gotoif($[${text} =~ "sco"]?true:false)
same => n(true),NoOp(true ${text})
same => n,hangup
same => n(false),NoOp(false ${text})
Repz
 
Сообщений: 169
Зарегистрирован: 04 мар 2015, 12:35


Вернуться в Вопросы новичков

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 24

© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH