[Freeswitch-users] originate api: Escaping variable names/values
Shane Mitchell
sm at opencluster.com.au
Tue Nov 23 06:48:30 UTC 2021
Using the originate API and enterprise origination: I am attempting to specify various variables, such as custom headers and digest credentials, and am trying to understand how escaping is implemented, as I am inserting user-specified values into the string. I need to set it all up in one API call due to the various ways originate is being used. Here's a simple example:
originate [sip_h_X-Custom=ESCAPED]sofia/public/user at example.com $park()
I have searched the docs and source code, and have a solution that works most of the time, but there are edge cases I can't seem to resolve.
I've tried URL encoding but it seems to have no effect here. Escaping with back-slash seems to have an effect, so I've experimented with it below.
For example, this works:
Escaped: \'123 (inserted in above API command)
Actual: '123 (the value of X-Custom observed in the generated INVITE)
Expected: '123
While this doesn't:
Escaped: \'1\'23
Actual: 123
Expected: '1'23
In fact, for an even number of quotes, none survive, while for an odd number of quotes, only the last quote ever survives:
Escaped: \'1\'2\'3
Actual: 12'3
Expected: '1'2'3
Escaped: \'1\'2\'3\'4\'5\'6\'7\'8\'9
Actual: 12345678'9
Expected: '1'2'3'4'5'6'7'8'9
Wrapping the entire argument with single quotes does not change the behavior:
Escaped: '\'1\'2\'3\'4\'5\'6\'7\'8\'9'
Actual: 12345678'9
Expected: '1'2'3'4'5'6'7'8'9
Besides single quotes, backslashes also act strangely. Many times they work properly:
Escaped: a\\b\\c
Actual: a\b\c
Expected: a\b\c
But when escape sequences are in a sequence, they act unexpectedly:
Escaped: \\\\
Actual: \
Expected: \\
Escaped: a\\\'b
Actual: a'b
Expected: a\'b
The next example becomes truncated. My guess is that it is interpreting "\n" as a new line.
Escaped: a\\nice\\day
Actual: a
Expected: a\nice\day
Can anyone advise if I'm using the correct syntax/this is an issue, or if there's something I'm missing/doing wrong?
Version: FreeSWITCH Version 1.10.7-release-19-883d2cb662~64bit (-release-19-883d2cb662 64bit)
More information about the FreeSWITCH-users
mailing list