anidar comprobaciones en un gotoif

124 views
Skip to first unread message

juanmol

unread,
Jul 27, 2010, 7:59:23 AM7/27/10
to asterisk-es
Hola, llevo un rato mirando en http://www.voip-info.org/wiki/view/Asterisk+Expressions
y creo que no puedo anidar comprobaciones ¿no?, lo que quiero es:
exten => _1XX,1,GotoIf( EXTEN != 100 & != 101 & != 102,ok)

o a lo mejor es
exten => _1XX,1,GotoIf( EXTEN != 100 & EXTEN != 101 & EXTEN != 102,ok)

"si exten es distinto de 100 y 101 y 102 ..."

¿se puede? ¿cómo?

Iñaki Baz Castillo

unread,
Jul 27, 2010, 8:02:03 AM7/27/10
to aster...@googlegroups.com
El día 27 de julio de 2010 13:59, juanmol <jua...@gmail.com> escribió:
> Hola, llevo un rato mirando en http://www.voip-info.org/wiki/view/Asterisk+Expressions
> y creo que no puedo anidar comprobaciones ¿no?, lo que quiero es:
> exten => _1XX,1,GotoIf( EXTEN != 100 & != 101 & != 102,ok)
>
> o a lo mejor es
> exten => _1XX,1,GotoIf( EXTEN != 100 & EXTEN != 101 & EXTEN != 102,ok)

"And lastly, the contents of $[ .. ] expressions are evaluated and substituted."

No veo nada de $[...] en tu expresión así que no es una expresión a
evaluar por Asterisk.

--
Iñaki Baz Castillo
<i...@aliax.net>

juanmol

unread,
Jul 27, 2010, 8:14:14 AM7/27/10
to asterisk-es
era por ahorrar tiempo :)
exten => _1XX,1,GotoIf($["${EXTEN}" != "100"]?fin)
con eso compruebo si es 100, pero no se como es si es 100 o 101 o 102.
Supongo que sera algo como:

exten => _1XX,1,GotoIf($["${EXTEN}" != "100"]&["${EXTEN}" != "101"]?
fin)
no se esactamente como formar la comprobacion, a lo mejor es?:
exten => _1XX,1,GotoIf($["${EXTEN}" != "100" != "101" != "102"]?fin)

ni idea ...

On 27 jul, 14:02, Iñaki Baz Castillo <i...@aliax.net> wrote:
> El día 27 de julio de 2010 13:59, juanmol <juan...@gmail.com> escribió:
>
> > Hola, llevo un rato mirando enhttp://www.voip-info.org/wiki/view/Asterisk+Expressions

Iñaki Baz Castillo

unread,
Jul 27, 2010, 8:23:49 AM7/27/10
to aster...@googlegroups.com
El día 27 de julio de 2010 14:14, juanmol <jua...@gmail.com> escribió:
> era por ahorrar tiempo :)
> exten => _1XX,1,GotoIf($["${EXTEN}" != "100"]?fin)
> con eso compruebo si es 100, pero no se como es si es 100 o 101 o 102.
> Supongo que sera algo como:
>
> exten => _1XX,1,GotoIf($["${EXTEN}" != "100"]&["${EXTEN}" != "101"]?
> fin)
> no se esactamente como formar la comprobacion, a lo mejor es?:
> exten => _1XX,1,GotoIf($["${EXTEN}" != "100" != "101" != "102"]?fin)


Yo lo haría con expresiones regulares:

GotoIf($[${REGEX("^(100|101|102)$" ${EXTEN})}]=1?fin)

Paco Gil

unread,
Jul 27, 2010, 8:24:37 AM7/27/10
to aster...@googlegroups.com
Hola juanmol,

No te gusta hacer pruebas? Ponte unos cuantos Noop y vas viendo y luego nos cuentas...

Enviado desde mi iPhone

> --
> Este email pertenece a la lista de Asterisk-ES (http://www.asterisk-es.org)
>
> Entra ahora en el canal de irc de Asterisk-ES para charlar en directo sobre VoIP y
> Asterisk: http://www.asterisk-es.org/
>
> ~~~~~ Normas de la lista Asterisk-ES: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> http://comunidad.asterisk-es.org/index.php?title=Lista:normas-asterisk-es
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> - Para anular la suscripción: asterisk-es...@googlegroups.com

juanmol

unread,
Jul 27, 2010, 8:45:20 AM7/27/10
to asterisk-es
Me pasa algo raro con esa comprobacion:
GotoIf($[${REGEX("^(100|101|102)$" ${EXTEN})}]=1?fin)
nunca se cumple, en la consola me pone
... GotoIf("SIP/150-0060c360", "0=1?fin")
aunque la ${EXTEN} valga 100, pero si pongo:
GotoIf($[${REGEX("^(100|101|102)$" 100)}]=1?fin)
si que se cumple y en la consola pone:
... GotoIf("SIP/150-0060c360", "1=1?fin")

¿por que no me pilla la variable ${EXTEN} en el REGEX?


On 27 jul, 14:23, Iñaki Baz Castillo <i...@aliax.net> wrote:

Jon Bonilla

unread,
Jul 27, 2010, 8:51:54 AM7/27/10
to aster...@googlegroups.com
El Tue, 27 Jul 2010 05:14:14 -0700 (PDT)
juanmol <jua...@gmail.com> escribió:

> era por ahorrar tiempo :)
> exten => _1XX,1,GotoIf($["${EXTEN}" != "100"]?fin)
> con eso compruebo si es 100, pero no se como es si es 100 o 101 o 102.
> Supongo que sera algo como:
>
> exten => _1XX,1,GotoIf($["${EXTEN}" != "100"]&["${EXTEN}" != "101"]?
> fin)
> no se esactamente como formar la comprobacion, a lo mejor es?:
> exten => _1XX,1,GotoIf($["${EXTEN}" != "100" != "101" != "102"]?fin)
>
> ni idea ...
>

Si pones dos tienes que ponerlo todo entre $[]

Prueba algo como

GotoIf ($[ $[Primera comparacion] & $[segunda comparacion] ])

Iñaki Baz Castillo

unread,
Jul 27, 2010, 9:29:02 AM7/27/10
to aster...@googlegroups.com
El día 27 de julio de 2010 14:45, juanmol <jua...@gmail.com> escribió:
> Me pasa algo raro con esa comprobacion:
> GotoIf($[${REGEX("^(100|101|102)$" ${EXTEN})}]=1?fin)
> nunca se cumple, en la consola me pone
> ... GotoIf("SIP/150-0060c360", "0=1?fin")
> aunque la ${EXTEN} valga 100, pero si pongo:
> GotoIf($[${REGEX("^(100|101|102)$" 100)}]=1?fin)
> si que se cumple y en la consola pone:
> ... GotoIf("SIP/150-0060c360", "1=1?fin")

Si el resultado es 1 significa que la expresión regular no se cumple.
El problema es que con alguna versión de Asterisk la expresión que he
puesto de REGEX no funciona (especialmente lo de ^y &, alguna cagada
que han hecho).


> ¿por que no me pilla la variable ${EXTEN} en el REGEX?

Nadie ha dicho que no "pille" esa variable.

Rosalva Carrascosa

unread,
Jul 27, 2010, 8:17:21 AM7/27/10
to aster...@googlegroups.com
Pues mira yo tengo esto en mi dialplan y funciona:
 
exten =>_7[0-4][0-9],n,GotoIf($["${EXTEN}" = "701"|"${EXTEN}" = "707""|"${EXTEN}" = "713"]?movil)
 
 
Espero sea lo que quieres.
Saludos

juanmol

unread,
Jul 28, 2010, 2:37:00 AM7/28/10
to asterisk-es
Perfecto Rosalva, justo lo que buscaba.
Gracias a todos.

On 27 jul, 14:17, Rosalva Carrascosa <rosalva.carrasc...@gmail.com>
wrote:
> Pues mira yo tengo esto en mi dialplan y funciona:
>
> exten =>_7[0-4][0-9],n,GotoIf($["${EXTEN}" = "701"|"${EXTEN}" =
> "707""|"${EXTEN}" = "713"]?movil)
>
> Espero sea lo que quieres.
> Saludos
>
> >http://comunidad.asterisk-es.org/index.php?title=Lista:normas-asteris...
Reply all
Reply to author
Forward
0 new messages