Hi All,
 
I'm trying to figure out why in the below code, the PSTN_NUM variable is
always amended
 
exten => s,n,NoOp(${PSTN_NUM})
exten => s,n,ExecIf( $[ "${PSTN_NUM:0:1}" != "0" ] &
$[
${LEN(${PSTN_NUM})} = 10 ]|Set|PSTN_NUM=001${PSTN_NUM})
exten => s,n,NoOp(${PSTN_NUM})
 
-- Executing [s at macro-setpstncli:8] NoOp("SIP/427-b7d0f518",
"0123456789") in new stack
    -- Executing [s at macro-setpstncli:9] ExecIf("SIP/427-b7d0f518",
" 0 &
1|Set|PSTN_NUM=0010123456789") in new stack
    -- Executing [s at macro-setpstncli:10] NoOp("SIP/427-b7d0f518",
"0010123456789") in new stack
 
It should evaluate PSTN_NUM and add a 001 only if: PSTN_NUM is 10 digits
long and doesn't start with a 0.
 
However, from the debug it's being changed, even though the first test
operator logically is 0.  If seems as though the "&" isnt being
applied.
 
Any ideas?
 
Thanks
 
Adrian
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
http://lists.digium.com/pipermail/asterisk-users/attachments/20080525/738b97e1/attachment.htm
James Sneeringer
2008-May-26  14:47 UTC
[asterisk-users] Logical AND (resent due to bounces)
On Sun, May 25, 2008 at 6:17 AM, Adrian Marsh <Adrian.Marsh at ubiquisys.com> wrote:> I'm trying to figure out why in the below code, the PSTN_NUM variable is > always amended > > exten => s,n,NoOp(${PSTN_NUM}) > exten => s,n,ExecIf( $[ "${PSTN_NUM:0:1}" != "0" ] & $[ ${LEN(${PSTN_NUM})} > = 10 ]|Set|PSTN_NUM=001${PSTN_NUM}) > exten => s,n,NoOp(${PSTN_NUM}) > > -- Executing [s at macro-setpstncli:8] NoOp("SIP/427-b7d0f518", "0123456789") > in new stack > -- Executing [s at macro-setpstncli:9] ExecIf("SIP/427-b7d0f518", " 0 & > 1|Set|PSTN_NUM=0010123456789") in new stack > -- Executing [s at macro-setpstncli:10] NoOp("SIP/427-b7d0f518", > "0010123456789") in new stackRemove the space between "ExecIf(" and "$[". It's causing the first comparison to evaluate to the string " 0" (space-zero) and not the digit 0, and a string will always evaluate to "true" if its length is greater than zero. -James