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".