изменения номера по условию
Откуда: Саратов
Сообщений: 64
|
изменения номера по условию
Есть переменная QAZ в которой находится номер телефона звонющего в виде 7ХХХХХХХХХХ
нужно если первые 5 цифр в номере = 78452 то номер отрубается
exten => 1,n,Set(QAZ1=${QAZ:5:6}
если начинается вот так 79ХХХХХХХХХ
exten => 1,n,Set(QAZ1=${QAZ:1:10}
я пока только в голове следующее
exten => s,1,GotoIf($["${QAZ:0:4}" = "78452"]?1,1)
exten => 1,1,Set(QAZ1=${QAZ:5:6}
exten => s,1,GotoIf($["${QAZ:0:2}" = "79"]?2,1)
exten => 2,1,Set(QAZ1=${QAZ:1:10}
как нибудь попроще можно?
|
Откуда: Киев
Сообщений: 1096
|
Re: изменения номера по условию
кроме goto есть еще execif, где можно сразу задать действие
насколько помню, использование goto считается плохим стилем..
|
Откуда: Уфа
Сообщений: 5856
|
Re: изменения номера по условию
svoy, использование goto считается плохим стилем для начинающих и дебилов
грамотный программист сумеет повысить читаемость программы и скорость ее работы с помощью goto, только вот не все это помнят.
Но в любом случае к диалплану астериска это не имеет отношения.
|
Откуда: Саратов
Сообщений: 64
|
Re: изменения номера по условию
сделал так:
exten => s,n,noop(${QAZ})
exten => s,n,ExecIf($["${QAZ:0:2}" = "79"]|Set(QAZ1=${QAZ:1:10}))
exten => s,n,ExecIf($["${QAZ:0:5}" = "78452"]|Set(QAZ1=${QAZ:5:6}))
exten => s,n,noop(${QAZ1})
в консоле:
-- Executing [s@macro-check_db:2] NoOp("SIP/78452572999-b6818078", "79173069666") in new stack
-- Executing [s@macro-check_db:3] ExecIf("SIP/78452572999-b6818078", "1|Set(QAZ1=9173069666)") in new stack
== Spawn extension (macro-check_db, s, 3) exited non-zero on 'SIP/78452572999-b6818078' in macro 'check_db'
== Spawn extension (ext-queues, 300, 5) exited non-zero on 'SIP/78452572999-b6818078'
астериск выдает звонящему сигнал занято
подскажите что я делаю не так.
|
Откуда: Киев
Сообщений: 1096
|
Re: изменения номера по условию
в вашем коде только манипуляции с переменными, а где dial, hangup ради чего все и затевалось?
|
Откуда: Саратов
Сообщений: 64
|
Re: изменения номера по условию
это не важно.
exten => s,n,noop(${QAZ})
exten => s,n,ExecIf($["${QAZ:0:2}" = "79"]?Set(QAZ1=${QAZ:1:10}))
exten => s,n,ExecIf($["${QAZ:0:5}" = "78452"]?Set(QAZ1=${QAZ:5:6}))
exten => s,n,noop(${QAZ1})
теперь все работает.
|
Откуда: SPb
Сообщений: 1307
|
Re: изменения номера по условию
"работа со строками - первый класс".
дайте человеку поиграться , он только только срезы освоил.
|
Откуда: Саратов
Сообщений: 64
|
Re: изменения номера по условию
проблема была в операции Execif
со строками давно умею работать.
|
Откуда: SPb
Сообщений: 1307
|
Re: изменения номера по условию
есть строка
+7921-232-2323
позвоните ..
на 89212322323
|
|