MODIFICAR UNA VARIABLE GLOBAL

281 views
Skip to first unread message

PRP

unread,
Jun 23, 2009, 6:55:36 AM6/23/09
to asterisk-es
Hola!

Me gustaria saber como puedo podificar una variable global desde el
DialPlan. He visto la instruccion Set(GLOBAL(variableGlobal)
=NuevoValor), pero cuando lo ejecuto no modifica el valor. Mi dialplan
es el siguiente.

exten => _XXXX,1,Set(GLOBAL(DICOMPRI)=${SIP_HEADER(X-Priority)})
exten => _XXXX,n,SIPAddHeader(X-Priority: ${SIP_HEADER(X-Priority)})
exten => _XXXX,n,DIAL(SIP/${EXTEN})

Alguna idea de porque puede ser? Gracias por adelantado! :D

Un saludo!

Iñaki Baz Castillo

unread,
Jun 23, 2009, 7:37:00 AM6/23/09
to aster...@googlegroups.com

Debería funcionar ya que la función GLOBAL hace precisamente eso (leer o
escribir el valor de la variable global que le pasas como parámetro).

Ahora, ¿realmente quieres cambiar una variable global en función de una
cabecera SIP? ¿y si llegan 3 INVITE's a la vez cada uno con un valor en dicha
cabecera? ¿te das cuenta de que el valor que añades en "SIPAddHeader" sería
el último recibido y no necesariamente el del INVITE recibido en cada canal?

No lo hagas con globales, es un error. Usa variables locales (sin GLOBAL ni
nada).

--
Iñaki Baz Castillo
<ib...@xtratelecom.es>

PRP

unread,
Jun 23, 2009, 7:44:46 AM6/23/09
to asterisk-es
En el caso de que me lleguen 3 INVITES me interesaria el del último.
El caso es que no me modifica el valor de la variable global. ¿Puede
tener que ver con algun parametro de configuración? Gracias!:D
> <i...@xtratelecom.es>

PRP

unread,
Jun 23, 2009, 8:12:52 AM6/23/09
to asterisk-es
Hola! Debería funcionar el cambio de variable global, pero aun asi no
lo hace. ¿Podria ser por algún problema de configuración? Gracias por
lo de las variables locales ;).

Un saludo!:D

On 23 jun, 13:37, Iñaki Baz Castillo <i...@xtratelecom.es> wrote:
> <i...@xtratelecom.es>

Iñaki Baz Castillo

unread,
Jun 23, 2009, 11:06:13 AM6/23/09
to aster...@googlegroups.com
El Tuesday 23 June 2009 13:44:46 PRP escribió:
> En el caso de que me lleguen 3 INVITES me interesaria el del último.

Vamos a ver: Imagina que te llegan 3 INVITE a la vez, uno de ellos
con "X-Priority = high" y los otros "low".

Resulta que se ha ejecutado en 3 threads diferentes la primera prioridad
del dialplan:
Set(GLOBAL(DICOMPRI)=${SIP_HEADER(X-Priority)})
y que el último en procesarse es "low".

Acto seguido se ejecuta para los 3 INVITE's (3 threads) la siguiente
prioridad:
SIPAddHeader(X-Priority: ${SIP_HEADER(X-Priority)})

Entonces en los 3 casos el INVITE saldrá con "X-Priority = low". No puedo
imaginar que éste sea el comportamiento que deseas.


> El caso es que no me modifica el valor de la variable global. ¿Puede
> tener que ver con algun parametro de configuración? Gracias!:D

La verdad es que nunca he probado a cambiar el valor de una variable global,
entiendo que debería funcionar a tenor de la documentación, pero ni idea.

Reply all
Reply to author
Forward
0 new messages