app.c: Allow ampersands in playback lists to be escaped.

Any function or application that accepts a `&`-separated list of
filenames can now include a literal `&` in a filename by wrapping the
entire filename in single quotes, e.g.:

```
exten = _X.,n,Playback('https://example.com/sound.cgi?a=b&c=d'&hello-world)
```

Fixes #172

UpgradeNote: Ampersands in URLs passed to the `Playback()`,
`Background()`, `SpeechBackground()`, `Read()`, `Authenticate()`, or
`Queue()` applications as filename arguments can now be escaped by
single quoting the filename. Additionally, this is also possible when
using the `CONFBRIDGE` dialplan function, or configuring various
features in `confbridge.conf` and `queues.conf`.

(cherry picked from commit 6b4d7f2125)
This commit is contained in:
Sean Bright
2023-11-07 15:03:53 -05:00
committed by Asterisk Development Team
parent 3344b19dac
commit a8015816b1
9 changed files with 69 additions and 19 deletions

View File

@@ -49,9 +49,15 @@
name.</para>
</parameter>
<parameter name="filenames" argsep="&amp;">
<argument name="filename" required="true">
<para>file(s) to play before reading digits or tone with option i</para>
</argument>
<para>Ampersand separated list of filenames to play before
reading digits or tone with option <literal>i</literal>. If
the filename is a relative filename (it does not begin with a
slash), it will be searched for in the Asterisk sounds
directory. If the filename is able to be parsed as a URL,
Asterisk will download the file and then begin playback on
it. To include a literal <literal>&amp;</literal> in the URL
you can enclose the URL in single quotes.</para>
<argument name="filename" required="true" />
<argument name="filename2" multiple="true" />
</parameter>
<parameter name="maxdigits">