Le 21/03/2013 20:27, Steve Edwards a écrit :
On Thu, 21 Mar 2013, Administrator TOOTAI wrote:
I have a variable created like
... Set(__myVar=${ARG1})
... Set(__${myVar}STATUS=)
If ARG1 is abcd, variable is abcdSTATUS and should be empty. This is OK.
Now I would like to get the value of abcdSTATUS. How to do it?
${${myVar}STATUS}} isn't working, nor ${{myvar}STATUS}
If 'variable is abcdSTATUS and should be empty' what value are you
trying to get?
In your first try '${${myVar}STATUS}}' you have 1 too many closing
brace. In your second try '${{myvar}STATUS}' you're missing a 'dollar.'
Is this what you are trying to do?
exten = *,n, set(ARG1=abcd)
exten = *,n, set(__myVar=${ARG1})
exten = *,n, set(__${myVar}STATUS=status)
exten = *,n, verbose(myVar = ${myVar})
exten = *,n, verbose(dollar{myVar}STATUS = ${${myVar}STATUS})
exten = *,n, hangup()
Exactly, and this is working.
I found the problem, it's (I think) a bug with queue command. My dialplan:
[context]
...
exten => 33123,n,macro(unpauseQueueMembers,q820,104,105,136,,)
exten => 33123,n(back2Queue),Queue(${myQueue},nit,,,14400)
exten => 33123,n,NoOp(Queue ${myQueue} call status is ${QUEUESTATUS} -
Dial status is ${DIALSTATUS} - Our status is ${${myQueue}STATUS}) ;
value is empty
exten => 33123,n,GotoIf($["${${myQueue}STATUS}" = "myTIMEOUT"]?back2Queue)
[to-q820]
exten => 104,1,Dial(SIP/${EXTEN},,Tt)
exten => 105,1,Dial(SIP/${EXTEN},,Tt)
exten => 136,1,Dial(SIP/${EXTEN},,Tt)
exten => _XXX,2,macro(queueCallStatus,${EXTEN})
[macro-queueCallStatus]
exten => s,1,Set(__myExten=${ARG1})
same => n,NoOp(Call status to ${myExten}@${myQueue} is ${DIALSTATUS})
same => n,GotoIf($["${DIALSTATUS}" = "ANSWER"]?exitMacro)
same => n,GotoIf($["${DIALSTATUS}" != "NOANSWER"]?Pause)
same => n(exitMacro),MacroExit
...
same =>
n(Pause),NoOp(PauseQueueMember(,Local/${myExten}@to-${myQueue}))
same => n,Set(__${myQueue}STATUS=myTIMEOUT)
same => n,NoOp(Value of my variable is ${${myQueue}STATUS})
; here I get correct value
...
[macro-unpauseQueueMembers]
exten => s,1,Set(__myQueue=${ARG1})
same => n,Set(__${myQueue}STATUS=)
same => n,UnpauseQueueMember(,Local/${ARG2}@to-${myQueue})
same => n,UnpauseQueueMember(,Local/${ARG3}@to-${myQueue})
same => n,UnpauseQueueMember(,Local/${ARG4}@to-${myQueue})
If I 33123 the NoOp(Value of my variable is ${${myQueue}STATUS}) in
macro-queueCallStatus shows the right value which is text myTIMEOUT. But
this value isn't anymore present in
NoOp(Queue ${myQueue} call status is ${QUEUESTATUS} - Dial status is
${DIALSTATUS} - Our status is ${${myQueue}STATUS}) from [context] which
is *after* the queue cmd exit.
This is Asterisk 10.11.1. Can someone confirm before opening a bug?
--
Daniel
--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
http://www.asterisk.org/hello
asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
http://lists.digium.com/mailman/listinfo/asterisk-users