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