On Wednesday 24 July 2013, James B. Byrne wrote: > Additional data: > > Arch = x86_64 > OS = CentOS-6.4 (freepbx) > Asterisk = 11.4 > FreePBX = 2.11.0.4 > > > -------------------------- Original Message -------------------------- > Subject: What is my syntax error here? > From: "James B. Byrne" <byrn...@harte-lyne.ca> > Date: Wed, July 24, 2013 10:08 > To: asterisk-users@lists.digium.com > ---------------------------------------------------------------------- > > I have thsi code in a dial plan. The purpose of which is to set > distinctive ring tones for internal and transferred calls. > > > exten => _.,1,Noop(CALLERID_ALL=${CALLERID(all)}) > > exten => _.,n,Set(CallerIDNum=${CALLERID(num)}) > > ; This just shows a list of interesting variables and their values > ; Comment it out when finished debugging > ;include => macro-dumpvars > ;exten => _.,n,Macro(dumpvars) > > exten => _417XX,n,Set(AlertSnom=<http://www.notused.com>\;info=) > > ; alert-external, alert-group and alert-internal are > ; Snom predefined values. > exten => _417XX,n,Set(AlertExternalCall=alert-external) > > ; alert_internal_call and alert_internal_transfer are > ; locally customised values > exten => _417XX,n,Set(AlertInternalCall=alert_internal_call) > > exten => _417XX,n,Set(AlertInternalTransfer=alert_internal_transfer) > > exten => _417XX,n,Set(__ALERT_INFO=${AlertSnom}${AlertInternalTransfer}) > > exten => _417XX,n,GotoIf( > $[$["${CallerIDNum}" > "41799"] | > $["${CallerIDNum}" < "41700"]]?notfromlocal:) > > exten => _417XX,n,Set(__ALERT_INFO=${AlertSnom}${AlertInternalCall}) > > > This works for internal calls but not transfers and it only works at > all only because of the fall through structure. It contains this > error that I do not understand: > > -- Executing [41720@from-internal:1] NoOp("SIP/41712-00000548", > "CALLERID_ALL="James B Byrne" <41712>") in new stack > > -- Executing [41720@from-internal:2] Set("SIP/41712-00000548", > "CallerIDNum=41712") in new stack > > -- Executing [41720@from-internal:3] Set("SIP/41712-00000548", > "AlertSnom=<http://www.notused.com>;info=") in new stack > > -- Executing [41720@from-internal:4] Set("SIP/41712-00000548", > "AlertExternalCall=alert-external") in new stack > > -- Executing [41720@from-internal:5] Set("SIP/41712-00000548", > "AlertInternalCall=alert_internal_call") in new stack > > -- Executing [41720@from-internal:6] Set("SIP/41712-00000548", > "AlertInternalTransfer=alert_internal_transfer") in new stack > > -- Executing [41720@from-internal:7] Set("SIP/41712-00000548", > "__ALERT_INFO=<http://www.notused.com>;info=alert_internal_transfer") > in new stack > > -- Executing [41720@from-internal:8] GotoIf("SIP/41712-00000548", > "") in new stack > > == Extension Changed 41712[ext-local] new state InUse for Notify > User 41714 > > > > [2013-07-24 09:50:42] WARNING[10630][C-00006b44]: pbx.c:11544 > pbx_builtin_gotoif: Ignoring, since there is no variable to check > > [2013-07-24 09:50:42] WARNING[10630][C-00006b44]: pbx.c:11544 > pbx_builtin_gotoif: Ignoring, since there is no variable to check > > > > -- Executing [41720@from-internal:9] Set("SIP/41712-00000548", > "__ALERT_INFO=<http://www.notused.com>;info=alert_internal_call") > in new stack > > -- Executing [41720@from-internal:10] Goto("SIP/41712-00000548", > "from-internal-original-override,41720,1") in new stack > -- Goto (from-internal-original-override,41720,1) > > So my question is simple. What error in syntax have I committed here? > I expect that CallerIDNum == 41712 in the check: > > exten => _417XX,n,GotoIf( > $[$["${CallerIDNum}" > "41799"] | > $["${CallerIDNum}" < "41700"]]?notfromlocal:)
I think that bitwise-or | should be a boolean-or ||. And you may have one too many $[] constructs there. The way to check would be with a few NoOp() lines just above that one: exten => _417XX,n,NoOp($["${CallerIDNum}" > "41799"]) exten => _417XX,n,NoOp($["${CallerIDNum}" < "41700"]) exten => _417XX,n,NoOp($["${CallerIDNum}" > "41799"] | $["${CallerIDNum}" < "41700"]) exten => _417XX,n,NoOp($["${CallerIDNum}" > "41799"] | $["${CallerIDNum}" < "41700"]) exten => _417XX,n,NoOp($[$["${CallerIDNum}" > "41799"] || $["${CallerIDNum}" < "41700"]]) exten => _417XX,n,NoOp($[$["${CallerIDNum}" > "41799"] || $["${CallerIDNum}" < "41700"]]) Note that 0 or an empty string is "false"; anything else is "true". But why do you even need to set things based on ${CallerIDNum} anyway? What's wrong with just using separate contexts for internal and inbound external calls, and hard-coding the setting of the alert there? -- AJS Answers come *after* questions. -- _____________________________________________________________________ -- 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