Definir si el usuario quiere continuar esperando

150 views
Skip to first unread message

Carlos Eduardo

unread,
Jun 19, 2012, 12:26:54 PM6/19/12
to aster...@googlegroups.com
Hola a todos y todas,

Estoy implementando en mi central con Asterisk 1.6, un código que me permita llamar a un departamento y que timbre secuencialmente de extensión a extensión, pero cuado llegue a la última, enviar un mensaje que "No se le pudo atender, digite 1 si desea intentar de nuevo o 2 si desea volver al menu principal"

Creo que lo puedo hacer con Gotoif pero no se como sería el código, hasta el momento tengo esto:

exten => 5*,1,Answer
exten => 5*,n,Dial(SIP/1088,10,tT)
exten => 5*,n,Playback(/var/lib/asterisk/sounds/espera)
exten => 5*,n,Dial(SIP/1089,10,tT)
exten => 5*,n,Playback(/var/lib/asterisk/sounds/espera)
exten => 5*,n,Dial(SIP/1090,10,tT)
exten => 5*,n,Playback(/var/lib/asterisk/sounds/espera)
exten => 5*,n,Dial(SIP/1086,10,tT)

Aquí sería dar la opcion con un waitexten() para que digite 1 o 0 y repetir el ciclo o ir a menu-dia que es el menu principal

exten => 5*,n,GOTO(menu-dia,s,1) 
exten => 5*,n,HANGUP

Alguien me podría guiar?

Saludos

--
Usuario Linux 400008
Debian User
------------------
Universidad Técnica Nacional
Centro de Tecnología e Informática

Carlos Eduardo

unread,
Jun 19, 2012, 1:06:47 PM6/19/12
to aster...@googlegroups.com
Estoy haciendo esto ahora, pero se queda enciclado aunque digite "2":

exten => 5*,1,Answer
exten => 5*,2,Dial(SIP/1088,10,tT)
exten => 5*,n,Playback(/var/lib/asterisk/sounds/espera)
exten => 5*,n,Dial(SIP/1088,10,tT)
exten => 5*,n,Set(extension)
exten => 5*,n,Read(extension)
exten => 5*,n,GOTOIF(${extension}="1"?5*,2)  
exten => 5*,n,GOTOIF(${extension}="2"?menu-dia,s,1)
exten => 5*,n,HANGUP

Alguna luz? Tendré mal la sintaxis?

José Luis Gómez

unread,
Jun 19, 2012, 1:32:42 PM6/19/12
to aster...@googlegroups.com

--
Este email pertenece a la lista de Asterisk-ES (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

Dejá espacios en la condicion:
GOTOIF(${extension}="1"?5*,2) -> GOTOIF(${extension} = "1"?5,2)

En las condiciones, asterisk se pone exquisito.
Saludos.


--
Ing. José Luis Gómez
www.qualis.com.ar

Carlos Eduardo

unread,
Jun 19, 2012, 1:38:41 PM6/19/12
to aster...@googlegroups.com
No entendí muy bien, lo que dices es que lo deje en una sola línea los dos GOTOIF separados por "=>"?

 
Este email pertenece a la lista de Asterisk-ES (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

Dejá espacios en la condicion:
GOTOIF(${extension}="1"?5*,2) -> GOTOIF(${extension} = "1"?5,2)

En las condiciones, asterisk se pone exquisito.
Saludos.


--
Ing. José Luis Gómez
www.qualis.com.ar

--
Este email pertenece a la lista de Asterisk-ES (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

José Luis Gómez

unread,
Jun 19, 2012, 1:54:59 PM6/19/12
to aster...@googlegroups.com
No, te mostré lo que pusiste y lo que deberias poner. El "=>" significa "reemplazá por"
Deberia quedar así:

exten => 5*,n,GOTOIF(${extension} = "1"?5*,2)  
exten => 5*,n,GOTOIF(${extension} = "2"?menu-dia,s,1)

Saludos.

Carlos Eduardo

unread,
Jun 19, 2012, 2:00:24 PM6/19/12
to aster...@googlegroups.com
OK Jose, pero igual ya lo había probado como lo mencionas, separado, pero sigue entrando al primer GOTOIF

No se si será por algo en la definición de la variable, voy a seguir investigando, muchas gracias

Igual si a alguien se le ocurre algo, bienvenido sea

Saludos

Raúl Alexis Betancor Santana

unread,
Jun 19, 2012, 2:39:40 PM6/19/12
to aster...@googlegroups.com
On Tue, Jun 19, 2012 at 02:54:59PM -0300, Jos� Luis G�mez wrote:
> No, te mostr� lo que pusiste y lo que deberias poner. El "=>" significa
> "reemplaz� por"
> Deberia quedar as�:
> exten => 5*,n,GOTOIF(${extension} = "1"?5*,2)
> exten => 5*,n,GOTOIF(${extension} = "2"?menu-dia,s,1)


No es el fallo,a Asterisk le dan igual los espacios, el fallo es que
el if est� mal planteado, punto.

Saludos

José Luis Gómez

unread,
Jun 19, 2012, 2:40:32 PM6/19/12
to aster...@googlegroups.com
Otra forma es::


exten => 5*,1,Answer
exten => 5*,2,Dial(SIP/1088,10,tT)
exten => 5*,n,Playback(/var/lib/asterisk/sounds/espera)
exten => 5*,n,Dial(SIP/1088,10,tT)
exten => 5*,n,Set(TIMEOUT(response)=10)
exten => 5*,n,Waitexten()
exten => 5*,n,HANGUP

exten => 1,1,GOTO(5*,2)  
exten => 2,1,GOTO(menu-dia,s,1)

Raúl Alexis Betancor Santana

unread,
Jun 19, 2012, 2:44:01 PM6/19/12
to aster...@googlegroups.com
On Tue, Jun 19, 2012 at 12:00:24PM -0600, Carlos Eduardo wrote:
> OK Jose, pero igual ya lo hab�a probado como lo mencionas, separado, pero
> sigue entrando al primer GOTOIF
>
> No se si ser� por algo en la definici�n de la variable, voy a seguir
> investigando, muchas gracias
>
> Igual si a alguien se le ocurre algo, bienvenido sea


A ver ... tienes m�l la sintaxis ... te la pego como recordatorio ...

Asterisk cmd GotoIf

Synopsis
Conditional goto

Description
GotoIf(condition?label1[[:label2])
GotoIf(condition?[context1],[extension1],[priority1]:[context2],[extension2],[priority2])

Ahora repasa lo que tienes puesto y a ver si eres capaz de descubrir
QUE ES LO QUE TIENES MAL en la sintaxis, pista ... no he visto en
ninguna parte de tu dialplan para 5*, las 'labels' a las que haces
referencia en tu salto.

Saludos

Raúl Alexis Betancor Santana

unread,
Jun 19, 2012, 2:45:47 PM6/19/12
to aster...@googlegroups.com
On Tue, Jun 19, 2012 at 03:40:32PM -0300, Jos� Luis G�mez wrote:
>
> Otra forma es::
>
> exten => 5*,1,Answer
> exten => 5*,2,Dial(SIP/1088,10,tT)
> exten => 5*,n,Playback(/var/lib/asterisk/sounds/espera)
> exten => 5*,n,Dial(SIP/1088,10,tT)
> exten => 5*,n,Set(TIMEOUT(response)=10)
> exten => 5*,n,Waitexten()
> exten => 5*,n,HANGUP
>
> exten => 1,1,GOTO(5*,2)
> exten => 2,1,GOTO(menu-dia,s,1)

Esta forma es incorrecta, adem�s de ser un agujero de seguridad como
una casa.

Saludos

José Luis Gómez

unread,
Jun 19, 2012, 3:01:45 PM6/19/12
to aster...@googlegroups.com
El 19 de junio de 2012 15:45, Raúl Alexis Betancor Santana <ra...@dimension-virtual.com> escribió:
On Tue, Jun 19, 2012 at 03:40:32PM -0300, José Luis Gómez wrote:
>
> Otra forma es::
>
> exten => 5*,1,Answer
> exten => 5*,2,Dial(SIP/1088,10,tT)
> exten => 5*,n,Playback(/var/lib/asterisk/sounds/espera)
> exten => 5*,n,Dial(SIP/1088,10,tT)
> exten => 5*,n,Set(TIMEOUT(response)=10)
> exten => 5*,n,Waitexten()
> exten => 5*,n,HANGUP
>
> exten => 1,1,GOTO(5*,2)
> exten => 2,1,GOTO(menu-dia,s,1)

Esta forma es incorrecta, además de ser un agujero de seguridad como
una casa.

Saludos

--
Este email pertenece a la lista de Asterisk-ES (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

Para saber, cual sería el agujero de seguridad?
Saludos.


José Luis Gómez

unread,
Jun 19, 2012, 3:07:31 PM6/19/12
to aster...@googlegroups.com
El 19 de junio de 2012 15:44, Raúl Alexis Betancor Santana <ra...@dimension-virtual.com> escribió:
On Tue, Jun 19, 2012 at 12:00:24PM -0600, Carlos Eduardo wrote:
> OK Jose, pero igual ya lo había probado como lo mencionas, separado, pero

> sigue entrando al primer GOTOIF
>
> No se si será por algo en la definición de la variable, voy a seguir

> investigando, muchas gracias
>
> Igual si a alguien se le ocurre algo, bienvenido sea


A ver ... tienes mál la sintaxis ... te la pego como recordatorio ...


Asterisk cmd GotoIf

Synopsis
       Conditional goto

       Description
               GotoIf(condition?label1[[:label2])
               GotoIf(condition?[context1],[extension1],[priority1]:[context2],[extension2],[priority2])

Ahora repasa lo que tienes puesto y a ver si eres capaz de descubrir
QUE ES LO QUE TIENES MAL en la sintaxis, pista ... no he visto en
ninguna parte de tu dialplan para 5*, las 'labels' a las que haces
referencia en tu salto.

Saludos
--
Este email pertenece a la lista de Asterisk-ES (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

No es necesario el contexto, por lo que en el ejemplo solo paso extension y prioridad.
Dependiendo de la cantidad de parametros, asterisk interpreta:
1 param.: label o prioridad
2 param.: extension, prioridad
3 param.: contexto, extension, prioridad

La condición es de igualdad.
Cual sería el error? lo probaste?
Lo que no he usado es el set y read que usa antes, pero el gotoif de la manera que comento funciona, aunque no lo he probado en la versión 10.
Saludos.


Raúl Alexis Betancor Santana

unread,
Jun 19, 2012, 3:40:59 PM6/19/12
to aster...@googlegroups.com
On Tue, Jun 19, 2012 at 04:01:45PM -0300, Jos� Luis G�mez wrote:
> Para saber, cual ser�a el agujero de seguridad?

Para empezar, no controlas la longitud de las extensiones que
capturas, y para seguir, dependiendo de donde est� 'incluido' ese
contexto, pues imag�nate que 'recoges' una 'extensi�n' que llama a un
DISA, o a otra extensi�n, etc. ... ;)

Saludos

José Luis Gómez

unread,
Jun 19, 2012, 3:49:06 PM6/19/12
to aster...@googlegroups.com
El 19 de junio de 2012 16:40, Raúl Alexis Betancor Santana <ra...@dimension-virtual.com> escribió:
On Tue, Jun 19, 2012 at 04:01:45PM -0300, José Luis Gómez wrote:
> Para saber, cual sería el agujero de seguridad?

Para empezar, no controlas la longitud de las extensiones que
capturas, y para seguir, dependiendo de donde esté 'incluido' ese
contexto, pues imagínate que 'recoges' una 'extensión' que llama a un
DISA, o a otra extensión, etc. ... ;)


Saludos

--
Este email pertenece a la lista de Asterisk-ES (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


Ahh, si, concuerdo con eso, lo dejás abierto, pero si en el contexto lo controlás, no hay problema.
Al agujero sería ponerlo en cualquier lado je.

Carlos Eduardo

unread,
Jun 19, 2012, 4:41:39 PM6/19/12
to aster...@googlegroups.com
Ok, si está en el mismo contexto, echándole un ojo la CLI me aparece esto:

WARNING[18014]: pbx.c:9184 pbx_builtin_gotoif: Ignoring, since there is no variable to check
    -- Executing [5*@menu-dia:8] GotoIf("DAHDI/3-1", "1 = "2"?s,1") in new stack
    -- Goto (menu-dia,s,1)

Lo raro es que también me aparece:
User entered '1'

Osea, si está agarrando el 1 pero como que no lo está guardando en la variable, este es lo último que he editado del fragmento de código:

exten => 5*,1,Answer
exten => 5*,2,Dial(SIP/1087,10,tT)
exten => 5*,n,Playback(/var/lib/asterisk/sounds/esperamatricula0)
exten => 5*,n,Dial(SIP/1087,10,tT)
exten => 5*,n,Set(extension)
exten => 5*,n,Read(extension)
exten => 5*,n,GOTOIF(${extension = "1"?5*,2)
exten => 5*,n,GOTOIF(${extension} = "2"?s,1)
exten => 5*,n,HANGUP

Se queda enciclado  y me lo manda al menu-dia, al saludo de bienvenida, osea, al segundo GOTOIF no entra al primer GOTOIF aunque marque 1

José Luis Gómez

unread,
Jun 21, 2012, 9:23:29 PM6/21/12
to aster...@googlegroups.com

Fijate que te falta cerrar la llave de la variable.
Tambien tene en cuenta que la variable debe ir entre comillas para comparar dos strings, o sacale las comillas al 1. Lo mismo con el otro goto.
Saludos

Enviado desde Samsung Mobile

Reply all
Reply to author
Forward
0 new messages