Re: [asterisk-users] Trouble applying regex to dialplan variable that contains double-quotes

2016-08-09 Thread Alex Villací­s Lasso

El 08/08/16 a las 21:34, Eric Wieling escribió:


How Set handles quotes can be changed with the 'app_set' setting in the 
[compat] section of /etc/asterisk/asterisk.conf.  See also: 
https://wiki.asterisk.org/wiki/display/AST/Application_Set Perhaps you have the 
value left over from an old Asterisk setup.



I do not have any [compat] section in my /etc/asterisk/asterisk.conf file. Also the previous assignments to RX and T1 work correctly and the values are set as they appear in the dialplan. It is only the evaluation of the regex operator inside the $[ that 
gives me trouble. I thought the QUOTE() function would be the way to use a dialplan variable with special characters inside an expression, but apparently the backslash-double quote sequence is not being recognized as an escape sequence for a literal 
double-quote character in the string. See below for the actual result. So, what am I doing wrong?



On 08/08/2016 04:31 PM, Alex Villací­s Lasso wrote:
I am writing a dialplan context under asterisk 11.21.0 to handle SIP message routing between registered SIP peers using chan_sip. I am having trouble with double-quotes when the source peer uses a display name, which appears in quotes before the SIP 
URI. I want to extract the SIP URI from MESSAGE(from) in order to (conditionally) route a failure message back to the source peer.


My test dialplan sets up variables like these:

exten => _X.,n,Set(RX=".*<(.+)>")
exten => _X.,n,Set(T1="Example name" )

If I just apply the regex operator (:) on T1 using regexp RX, like this:

exten => _X.,n,Set(FROM_SIPURI=$[${T1}:${RX}])

...I get this syntax error:

[2016-08-08 15:04:02] WARNING[1653][C-]: ast_expr2.fl:470 ast_yyerror: 
ast_yyerror():  syntax error: syntax error, unexpected ':', expecting '-' or '!' or 
'(' or ''; Input:
"Example name" :".*<(.+)>"
^
(caret points at the colon character)

If I enclose the T1 variable in double quotes, like this:

exten => _X.,n,Set(FROM_SIPURI=$["${T1}":${RX}])

...I get this syntax error:

[2016-08-08 15:05:40] WARNING[1653][C-]: ast_expr2.fl:470 ast_yyerror: 
ast_yyerror():  syntax error: syntax error, unexpected '', expecting 
$end; Input:
""Example name" ":".*<(.+)>"
  ^
(caret points at letter E)

If I use the QUOTE() function to quote the double quotes before applying the 
regexp, like this:

exten => _X.,n,Set(FROM_SIPURI=$[${QUOTE(${T1})}:${RX}])

... I get this syntax error:

[2016-08-08 14:53:35] WARNING[1653][C-]: ast_expr2.fl:470 ast_yyerror: 
ast_yyerror():  syntax error: syntax error, unexpected '', expecting 
$end; Input:
"\"Example name\" ":".*<(.+)>"
   ^
(caret points at letter E)

Currently I am working around the issue by using REPLACE() to strip all 
double-quotes, but I believe this is not a correct solution. How should I write 
the $[ expression so that the double-quotes are handled correctly?







--
_
-- 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


Re: [asterisk-users] Trouble applying regex to dialplan variable that contains double-quotes

2016-08-08 Thread Eric Wieling


How Set handles quotes can be changed with the 'app_set' setting in the 
[compat] section of /etc/asterisk/asterisk.conf.  See also: 
https://wiki.asterisk.org/wiki/display/AST/Application_Set Perhaps you 
have the value left over from an old Asterisk setup.


On 08/08/2016 04:31 PM, Alex Villací­s Lasso wrote:
I am writing a dialplan context under asterisk 11.21.0 to handle SIP 
message routing between registered SIP peers using chan_sip. I am 
having trouble with double-quotes when the source peer uses a display 
name, which appears in quotes before the SIP URI. I want to extract 
the SIP URI from MESSAGE(from) in order to (conditionally) route a 
failure message back to the source peer.


My test dialplan sets up variables like these:

exten => _X.,n,Set(RX=".*<(.+)>")
exten => _X.,n,Set(T1="Example name" )

If I just apply the regex operator (:) on T1 using regexp RX, like this:

exten => _X.,n,Set(FROM_SIPURI=$[${T1}:${RX}])

...I get this syntax error:

[2016-08-08 15:04:02] WARNING[1653][C-]: ast_expr2.fl:470 
ast_yyerror: ast_yyerror():  syntax error: syntax error, unexpected 
':', expecting '-' or '!' or '(' or ''; Input:

"Example name" :".*<(.+)>"
^
(caret points at the colon character)

If I enclose the T1 variable in double quotes, like this:

exten => _X.,n,Set(FROM_SIPURI=$["${T1}":${RX}])

...I get this syntax error:

[2016-08-08 15:05:40] WARNING[1653][C-]: ast_expr2.fl:470 
ast_yyerror: ast_yyerror():  syntax error: syntax error, unexpected 
'', expecting $end; Input:

""Example name" ":".*<(.+)>"
  ^
(caret points at letter E)

If I use the QUOTE() function to quote the double quotes before 
applying the regexp, like this:


exten => _X.,n,Set(FROM_SIPURI=$[${QUOTE(${T1})}:${RX}])

... I get this syntax error:

[2016-08-08 14:53:35] WARNING[1653][C-]: ast_expr2.fl:470 
ast_yyerror: ast_yyerror():  syntax error: syntax error, unexpected 
'', expecting $end; Input:

"\"Example name\" ":".*<(.+)>"
   ^
(caret points at letter E)

Currently I am working around the issue by using REPLACE() to strip 
all double-quotes, but I believe this is not a correct solution. How 
should I write the $[ expression so that the double-quotes are handled 
correctly?





--
if at first you don't succeed, skydiving isn't for you


--
_
-- 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


[asterisk-users] Trouble applying regex to dialplan variable that contains double-quotes

2016-08-08 Thread Alex Villací­s Lasso
I am writing a dialplan context under asterisk 11.21.0 to handle SIP message routing between registered SIP peers using chan_sip. I am having trouble with double-quotes when the source peer uses a display name, which appears in quotes before the SIP URI. I 
want to extract the SIP URI from MESSAGE(from) in order to (conditionally) route a failure message back to the source peer.


My test dialplan sets up variables like these:

exten => _X.,n,Set(RX=".*<(.+)>")
exten => _X.,n,Set(T1="Example name" )

If I just apply the regex operator (:) on T1 using regexp RX, like this:

exten => _X.,n,Set(FROM_SIPURI=$[${T1}:${RX}])

...I get this syntax error:

[2016-08-08 15:04:02] WARNING[1653][C-]: ast_expr2.fl:470 ast_yyerror: 
ast_yyerror():  syntax error: syntax error, unexpected ':', expecting '-' or '!' or 
'(' or ''; Input:
"Example name" :".*<(.+)>"
^
(caret points at the colon character)

If I enclose the T1 variable in double quotes, like this:

exten => _X.,n,Set(FROM_SIPURI=$["${T1}":${RX}])

...I get this syntax error:

[2016-08-08 15:05:40] WARNING[1653][C-]: ast_expr2.fl:470 ast_yyerror: 
ast_yyerror():  syntax error: syntax error, unexpected '', expecting 
$end; Input:
""Example name" ":".*<(.+)>"
  ^
(caret points at letter E)

If I use the QUOTE() function to quote the double quotes before applying the 
regexp, like this:

exten => _X.,n,Set(FROM_SIPURI=$[${QUOTE(${T1})}:${RX}])

... I get this syntax error:

[2016-08-08 14:53:35] WARNING[1653][C-]: ast_expr2.fl:470 ast_yyerror: 
ast_yyerror():  syntax error: syntax error, unexpected '', expecting 
$end; Input:
"\"Example name\" ":".*<(.+)>"
   ^
(caret points at letter E)

Currently I am working around the issue by using REPLACE() to strip all 
double-quotes, but I believe this is not a correct solution. How should I write 
the $[ expression so that the double-quotes are handled correctly?


--
_
-- 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