Trouble Removing + Sign
I’m using BLACKLIST() to check numbers, which does not like leading +
signs. I want to test if there is a plus sign, and then remove it.
I tried:
; strip leading plus sign
same => n, Verbose( callerid 0:1 is ${CALLERID(num):0:1} )
same => n,ExecIf($[“${CALLERID(num):0:1}” = “+”]?Set(CALLERID(num) =
${CALLERID(num):1})
same=>n,GotoIf(${BLACKLIST()}?make-em-wait)
but it’s stripping the first character + sign or not. The callerid is
1203XXYYYY
— Executing [s@hangup-spam:3] Verbose(“PJSIP/2667075-0000000b”, ”
callerid 0:1 is 1 “) in new stack
callerid 0:1 is 1
— Executing [s@hangup-spam:4] ExecIf(“PJSIP/2667075-0000000b”,
“0?Set(CALLERID(num) = 203XXXYYYY”) in new stack
— Executing [s@hangup-spam:5] GotoIf(“PJSIP/2667075-0000000b”,
“0?make-em-wait”) in new stack
ExecIf correctly finds the comparison false(the “0”), but still executes the appiftrue .
What am I missing ?
—
7 thoughts on - Trouble Removing + Sign
Try == in your gotoif (instead of =)
Regards,
Dovid
Original Message
From: seandarcy2@gmail.com Sent: February 14, 2019 01:14
To: asterisk-users@lists.digium.com Reply-to: asterisk-users@lists.digium.com Subject: [asterisk-users] trouble removing + sign
I’m using BLACKLIST() to check numbers, which does not like leading +
signs. I want to test if there is a plus sign, and then remove it.
I tried:
; strip leading plus sign
same => n, Verbose( callerid 0:1 is ${CALLERID(num):0:1} )
same => n,ExecIf($[“${CALLERID(num):0:1}” = “+”]?Set(CALLERID(num) =
${CALLERID(num):1})
same=>n,GotoIf(${BLACKLIST()}?make-em-wait)
but it’s stripping the first character + sign or not. The callerid is
1203XXYYYY
— Executing [s@hangup-spam:3] Verbose(“PJSIP/2667075-0000000b”, ”
callerid 0:1 is 1 “) in new stack
callerid 0:1 is 1
— Executing [s@hangup-spam:4] ExecIf(“PJSIP/2667075-0000000b”,
“0?Set(CALLERID(num) = 203XXXYYYY”) in new stack
— Executing [s@hangup-spam:5] GotoIf(“PJSIP/2667075-0000000b”,
“0?make-em-wait”) in new stack
ExecIf correctly finds the comparison false(the “0”), but still executes the appiftrue .
What am I missing ?
—
Tried the double equal sign. Same result.
sean
—
Le 14/02/2019 à 00:12, sean darcy a écrit :
Try ExecIf($[“x${CALLERID(num):0:1}” == “x+”]?Set(CALLERID(num) =
${CALLERID(num):1})
Or you could use somethjing like
exten = _X.,1,NoOp(Your dialplan)
same = n,… exten = _+.,1,Goto(${EXTEN:1},1)
—
Daniel
—
I think that is the supposed behaviour… Being true, it executes what you tell it to do and continues to the next priority.
I would suggest you to try using gotoif instead, maybe it helps controlling the flow easily. Something like:
same => n, Verbose(callerid 0:1 is ${CALLERID(num):0:1})
same => n, GotoIf($[“${CALLERID(num):0:1}” = “+”]?remove:send)
same => n(remove),Set(CALLERID(num) = ${CALLERID(num):1})
same => n(send),Verbose(called number is ${CALLERID(num))
same => n,GotoIf(${BLACKLIST()}?make-em-wait)
ExecIf($[“${CALLERID(num):0:1}”=”+”]?Set(CALLERID(num)=${CALLERID(num):1}))
Executes the appiftrue or just shows what could be executed?
—
Stefan Tichy ( asterisk3 at pi4tel dot de )
—
The format of Set is Set(MYVAR=myval) not Set(MYVAR = myval)
—
http://help.nyigc.net/
—
I like using the “x” before caller id. That deals with caller id null values.
I also agree that the Set equal sign should not have spaces on either side.
But, the problem here was : no closing parens for the ExecIf !
Thanks for the help. I figured this out because I kept changing the line based on your suggestions.
sean
—