[asterisk-users] Logical AND

Stefan Schmidt sst at sil.at
Sun May 25 06:33:35 CDT 2008


Adrian Marsh schrieb:
> 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

hello,

you should try this:

exten => s,n,ExecIf($[ $[ "${PSTN_NUM:0:1}" != "0" ] & $[
  ${LEN(${PSTN_NUM})} = 10 ]]|Set|PSTN_NUM=001${PSTN_NUM})

cause the AND Operator is another thing to work, so the result at your 
way look like this ExecIf(1&1 | ...) and with my way it looks like this 
ExecIf($[1&1]|...) which is the right syntax for it.

best regards

steve smith



More information about the asterisk-users mailing list