CURLOPT(useragent) Fails With Set Requires An ‘=’ To Be A Valid Assignment

Home » Asterisk Users » CURLOPT(useragent) Fails With Set Requires An ‘=’ To Be A Valid Assignment
Asterisk Users 4 Comments

All my other CURLOPT settings like timeout work fine. But this:

same => n,Set(CURLOPT(useragent)=”Mozilla/5.0 (Windows NT 10.0;
Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.41
Safari/537.36″)

give the following warning on dialplan reload, with and without quotes around the user agent. Everything else is fine – perhaps it is the parenthesis in the user agent?
If so, how do I get round this? I am fairly sure it’s a typo at my end, but I’ve looked at examples from other people/gists and my usage looks correct. It’s only the useragent option it chokes on.

— Executing [s@setup:3] Set(“Local/s@setup-00000006;2”,
“CURLOPT(useragent”) in new stack
[Dec 14 17:24:30] WARNING[10243][C-00000007]: pbx_variables.c:1140
pbx_builtin_setvar: Set requires an ‘=’ to be a valid assignment.
— Executing [s@setup:4] Set(“Local/s@setup-00000006;2”,
“CURLOPT(conntimeout)=3”) in new stack
— Executing [s@setup:5] Set(“Local/s@setup-00000006;2”,
“CURLOPT(dnstimeout)=3”) in new stack

NOTE: The reason I’m doing this is because I want Asterisk to give a different user agent for ControlPlayback function and move on quickly if the remote file is not available / slow. If that is not the correct way then please let me know!

4 thoughts on - CURLOPT(useragent) Fails With Set Requires An ‘=’ To Be A Valid Assignment

  • There are semicolons in the useragent string you are trying to set. If that is the exact dialplan line then those semicolons are being seen as a start of a comment.

    Richard

  • Thank you.

    Yes, the useragent string does indeed contain semicolon, and as most seem to, how can I set the (useragent) to a valid useragent?

    And does that mean I can never SET something with a semicolon in the string, even if wrapped in quotes?

    Sorry if I’m being thick here!

    Thanks

  • The character to escape it is “\” thus: “\;” would tell the config parser to not treat it as a comment.

  • Of course! Thank you. I had not thought about escaping it because “;”
    is not a character I’ve normally had to escape.

    Thanks again for this – so obvious now you mention it.