Walt Reed
2004-Aug-18 07:56 UTC
[Asterisk-Users] Testing null values: ast_yyerror(): syntax error
OK, I'm going nuts here trying to correctly identify null values, specifically when callerID info is not available. FYI, I'm running Asterisk CVS-HEAD-08/17/04-13:08:53, and Bison 1.875a (debian Sid). A snippit of my dialplan looks like this: exten => s,1,SetCIDNum(${CALLERIDNUM}) exten => s,2,NoOp,${CALLERID} exten => s,3,DBGet(temp=idiot/${CALLERIDNUM}) ; Is the person calling an idiot? exten => s,4,Goto(s,2001) ; Yep, he's an idiot. ; else check for callerID. If none (or 800 number,) handle special. exten => s,104,GotoIf($[${CALLERIDNUM} = ""]?s|1000:s|105) exten => s,105,GotoIf($[${CALLERIDNUM:0:3} = 877]?s|1000:s|106) Output from * is: -- Executing SetCIDNum("Zap/2-1", "") in new stack -- Executing NoOp("Zap/2-1", "") in new stack -- Executing DBget("Zap/2-1", "temp=idiot/") in new stack -- DBget: varname=temp, family=idiot, key -- DBget: Value not found in database. Aug 18 10:34:06 WARNING[458767]: ast_expr.y:474 ast_yyerror: ast_yyerror(): syntax error: syntax error; Input: = "" ^ -- Executing GotoIf("Zap/2-1", "0?s|1000:s|105") in new stack -- Goto (bell2,s,105) Aug 18 10:34:06 WARNING[458767]: ast_expr.y:474 ast_yyerror: ast_yyerror(): syntax error: syntax error; Input: = 877 When I DO have a valid caller ID number, everything works: -- Executing SetCIDNum("SIP/601-83b7", "601") in new stack -- Executing NoOp("SIP/601-83b7", ""Office" <601>") in new stack -- Executing DBget("SIP/601-83b7", "temp=idiot/601") in new stack -- DBget: varname=temp, family=idiot, key=601 -- DBget: Value not found in database. -- Executing GotoIf("SIP/601-83b7", "0?s|1000:s|105") in new stack -- Goto (bell2,s,105) -- Executing GotoIf("SIP/601-83b7", "0?s|1000:s|106") in new stack -- Goto (bell2,s,106) I have tried the "foo" method too with similar results (this shows both a failed and working calledID): Aug 16 14:58:33 ERROR[409616]: fsk_serie made mylen < 0 (-16) Aug 16 14:58:33 WARNING[409616]: CallerID feed failed: Success Aug 16 14:58:33 WARNING[409616]: CallerID returned with error on channel 'Zap/2-1' Aug 16 14:58:36 WARNING[409616]: ast_yyerror(): syntax error: syntax error; Input: foo = foo ^^^^^^^^^ ^ Aug 16 17:19:07 WARNING[425999]: ast_yyerror(): syntax error: syntax error; Input: foo2075551212 = foo ^^^^^^^^^^^^^^^^^^^ So, IS there a method that works? Can I set CID to 0 if it's missing or something? Or some other variable that gives the real CID status (feed error, anonymous, unavailable)?
Grzegorz Nosek
2004-Aug-21 11:08 UTC
[Asterisk-Users] Testing null values: ast_yyerror(): syntax error
Dnia ?roda, 18 sierpnia 2004 16:56, Walt Reed napisa?:> OK, I'm going nuts here trying to correctly identify null values, > specifically when callerID info is not available. > > FYI, I'm running Asterisk CVS-HEAD-08/17/04-13:08:53, and Bison 1.875a > (debian Sid). > > A snippit of my dialplan looks like this: > exten => s,1,SetCIDNum(${CALLERIDNUM}) > exten => s,2,NoOp,${CALLERID} > exten => s,3,DBGet(temp=idiot/${CALLERIDNUM}) ; Is the person calling an > idiot? exten => s,4,Goto(s,2001) ; Yep, he's an idiot. >Don't know whether there's a more elegant solution, but maybe try putting values like x${CALLERIDNUM} into the DB? that way if you get a null CID, it should match against "x".