[Asterisk-code-review] xmldocs: Improve examples. (asterisk[18])
Friendly Automation
asteriskteam at digium.com
Wed Jun 8 21:37:05 CDT 2022
Friendly Automation has submitted this change. ( https://gerrit.asterisk.org/c/asterisk/+/18647 )
Change subject: xmldocs: Improve examples.
......................................................................
xmldocs: Improve examples.
Use example tags instead of regular para tags
where possible.
ASTERISK-30090
Change-Id: Iada8bbfda08f30b118cedf2d040bbb21e4966ec5
---
M apps/app_confbridge.c
M funcs/func_cdr.c
M funcs/func_dialgroup.c
M funcs/func_env.c
M funcs/func_frame_drop.c
M funcs/func_frame_trace.c
M funcs/func_math.c
M funcs/func_odbc.c
M funcs/func_periodic_hook.c
M funcs/func_pitchshift.c
M funcs/func_rand.c
M funcs/func_sha1.c
M funcs/func_shell.c
M funcs/func_speex.c
M funcs/func_strings.c
M funcs/func_talkdetect.c
M funcs/func_version.c
M funcs/func_vmcount.c
M funcs/func_volume.c
M res/res_calendar.c
M res/res_mutestream.c
M res/res_pjsip_config_wizard.c
M res/res_pjsip_header_funcs.c
23 files changed, 353 insertions(+), 243 deletions(-)
Approvals:
Joshua Colp: Looks good to me, but someone else must approve
Kevin Harwell: Looks good to me, approved
Friendly Automation: Approved for Submit
diff --git a/apps/app_confbridge.c b/apps/app_confbridge.c
index ae17bca..9b3ddba 100644
--- a/apps/app_confbridge.c
+++ b/apps/app_confbridge.c
@@ -198,23 +198,29 @@
<para>---- Example 1 ----</para>
<para>In this example the custom user profile set on the channel will
automatically be used by the ConfBridge application.</para>
- <para>exten => 1,1,Answer()</para>
+ <example title="Example 1">
+ exten => 1,1,Answer()
+ </example>
<para>; In this example the effect of the following line is</para>
<para>; implied:</para>
- <para>; same => n,Set(CONFBRIDGE(user,template)=default_user)</para>
- <para>same => n,Set(CONFBRIDGE(user,announce_join_leave)=yes)</para>
- <para>same => n,Set(CONFBRIDGE(user,startmuted)=yes)</para>
- <para>same => n,ConfBridge(1) </para>
+ <example title="Example 1b">
+ same => n,Set(CONFBRIDGE(user,template)=default_user)
+ same => n,Set(CONFBRIDGE(user,announce_join_leave)=yes)
+ same => n,Set(CONFBRIDGE(user,startmuted)=yes)
+ same => n,ConfBridge(1)
+ </example>
<para>---- Example 2 ----</para>
<para>This example shows how to use a predefined user profile in
<filename>confbridge.conf</filename> as a template for a dynamic profile.
Here we make an admin/marked user out of the <literal>my_user</literal>
profile that you define in <filename>confbridge.conf</filename>.</para>
- <para>exten => 1,1,Answer()</para>
- <para>same => n,Set(CONFBRIDGE(user,template)=my_user)</para>
- <para>same => n,Set(CONFBRIDGE(user,admin)=yes)</para>
- <para>same => n,Set(CONFBRIDGE(user,marked)=yes)</para>
- <para>same => n,ConfBridge(1)</para>
+ <example title="Example 2">
+ exten => 1,1,Answer()
+ same => n,Set(CONFBRIDGE(user,template)=my_user)
+ same => n,Set(CONFBRIDGE(user,admin)=yes)
+ same => n,Set(CONFBRIDGE(user,marked)=yes)
+ same => n,ConfBridge(1)
+ </example>
</description>
</function>
<function name="CONFBRIDGE_INFO" language="en_US">
diff --git a/funcs/func_cdr.c b/funcs/func_cdr.c
index d7bc211..2c6e2e1 100644
--- a/funcs/func_cdr.c
+++ b/funcs/func_cdr.c
@@ -161,7 +161,9 @@
<note><para>CDRs can only be modified before the bridge between two channels is
torn down. For example, CDRs may not be modified after the <literal>Dial</literal>
application has returned.</para></note>
- <para>Example: exten => 1,1,Set(CDR(userfield)=test)</para>
+ <example title="Set the userfield">
+ exten => 1,1,Set(CDR(userfield)=test)
+ </example>
</description>
</function>
<function name="CDR_PROP" language="en_US">
diff --git a/funcs/func_dialgroup.c b/funcs/func_dialgroup.c
index 9a98b3c..64aa658 100644
--- a/funcs/func_dialgroup.c
+++ b/funcs/func_dialgroup.c
@@ -67,10 +67,11 @@
fallback to a queue when the front line people are busy or unavailable, but
you still want front line people to log in and out of that group, just like
a queue.</para>
- <para>Example:</para>
- <para>exten => 1,1,Set(DIALGROUP(mygroup,add)=SIP/10)</para>
- <para>exten => 1,n,Set(DIALGROUP(mygroup,add)=SIP/20)</para>
- <para>exten => 1,n,Dial(${DIALGROUP(mygroup)})</para>
+ <example title="Add 2 endpoints to a dial group">
+ exten => 1,1,Set(DIALGROUP(mygroup,add)=SIP/10)
+ same => n,Set(DIALGROUP(mygroup,add)=SIP/20)
+ same => n,Dial(${DIALGROUP(mygroup)})
+ </example>
</description>
</function>
***/
diff --git a/funcs/func_env.c b/funcs/func_env.c
index 2602500..aba7533 100644
--- a/funcs/func_env.c
+++ b/funcs/func_env.c
@@ -178,48 +178,61 @@
<description>
<para>Read and write text file in character and line mode.</para>
<para>Examples:</para>
- <para/>
<para>Read mode (byte):</para>
- <para> ;reads the entire content of the file.</para>
- <para> Set(foo=${FILE(/tmp/test.txt)})</para>
- <para> ;reads from the 11th byte to the end of the file (i.e. skips the first 10).</para>
- <para> Set(foo=${FILE(/tmp/test.txt,10)})</para>
- <para> ;reads from the 11th to 20th byte in the file (i.e. skip the first 10, then read 10 bytes).</para>
- <para> Set(foo=${FILE(/tmp/test.txt,10,10)})</para>
- <para/>
+ <example title="Reads the entire content of the file">
+ same => n,Set(foo=${FILE(/tmp/test.txt)})
+ </example>
+ <example title="Reads from the 11th byte to the end of the file (i.e. skips the first 10)">
+ same => n,Set(foo=${FILE(/tmp/test.txt,10)})
+ </example>
+ <example title="Reads from the 11th to 20th byte in the file (i.e. skip the first 10, then read 10 bytes)">
+ same => n,Set(foo=${FILE(/tmp/test.txt,10,10)})
+ </example>
<para>Read mode (line):</para>
- <para> ; reads the 3rd line of the file.</para>
- <para> Set(foo=${FILE(/tmp/test.txt,3,1,l)})</para>
- <para> ; reads the 3rd and 4th lines of the file.</para>
- <para> Set(foo=${FILE(/tmp/test.txt,3,2,l)})</para>
- <para> ; reads from the third line to the end of the file.</para>
- <para> Set(foo=${FILE(/tmp/test.txt,3,,l)})</para>
- <para> ; reads the last three lines of the file.</para>
- <para> Set(foo=${FILE(/tmp/test.txt,-3,,l)})</para>
- <para> ; reads the 3rd line of a DOS-formatted file.</para>
- <para> Set(foo=${FILE(/tmp/test.txt,3,1,l,d)})</para>
- <para/>
+ <example title="Reads the 3rd line of the file">
+ same => n,Set(foo=${FILE(/tmp/test.txt,3,1,l)})
+ </example>
+ <example title="Reads the 3rd and 4th lines of the file">
+ same => n,Set(foo=${FILE(/tmp/test.txt,3,2,l)})
+ </example>
+ <example title="Reads from the third line to the end of the file">
+ same => n,Set(foo=${FILE(/tmp/test.txt,3,,l)})
+ </example>
+ <example title="Reads the last three lines of the file">
+ same => n,Set(foo=${FILE(/tmp/test.txt,-3,,l)})
+ </example>
+ <example title="Reads the 3rd line of a DOS-formatted file">
+ same => n,Set(foo=${FILE(/tmp/test.txt,3,1,l,d)})
+ </example>
<para>Write mode (byte):</para>
- <para> ; truncate the file and write "bar"</para>
- <para> Set(FILE(/tmp/test.txt)=bar)</para>
- <para> ; Append "bar"</para>
- <para> Set(FILE(/tmp/test.txt,,,a)=bar)</para>
- <para> ; Replace the first byte with "bar" (replaces 1 character with 3)</para>
- <para> Set(FILE(/tmp/test.txt,0,1)=bar)</para>
- <para> ; Replace 10 bytes beginning at the 21st byte of the file with "bar"</para>
- <para> Set(FILE(/tmp/test.txt,20,10)=bar)</para>
- <para> ; Replace all bytes from the 21st with "bar"</para>
- <para> Set(FILE(/tmp/test.txt,20)=bar)</para>
- <para> ; Insert "bar" after the 4th character</para>
- <para> Set(FILE(/tmp/test.txt,4,0)=bar)</para>
- <para/>
+ <example title="Truncate the file and write bar">
+ same => n,Set(FILE(/tmp/test.txt)=bar)
+ </example>
+ <example title="Append bar">
+ same => n,Set(FILE(/tmp/test.txt,,,a)=bar)
+ </example>
+ <example title="Replace the first byte with bar (replaces 1 character with 3)">
+ same => n,Set(FILE(/tmp/test.txt,0,1)=bar)
+ </example>
+ <example title="Replace 10 bytes beginning at the 21st byte of the file with bar">
+ same => n,Set(FILE(/tmp/test.txt,20,10)=bar)
+ </example>
+ <example title="Replace all bytes from the 21st with bar">
+ same => n,Set(FILE(/tmp/test.txt,20)=bar)
+ </example>
+ <example title="Insert bar after the 4th character">
+ same => n,Set(FILE(/tmp/test.txt,4,0)=bar)
+ </example>
<para>Write mode (line):</para>
- <para> ; Replace the first line of the file with "bar"</para>
- <para> Set(FILE(/tmp/foo.txt,0,1,l)=bar)</para>
- <para> ; Replace the last line of the file with "bar"</para>
- <para> Set(FILE(/tmp/foo.txt,-1,,l)=bar)</para>
- <para> ; Append "bar" to the file with a newline</para>
- <para> Set(FILE(/tmp/foo.txt,,,al)=bar)</para>
+ <example title="Replace the first line of the file with bar">
+ same => n,Set(FILE(/tmp/foo.txt,0,1,l)=bar)
+ </example>
+ <example title="Replace the last line of the file with bar">
+ same => n,Set(FILE(/tmp/foo.txt,-1,,l)=bar)
+ </example>
+ <example title="Append bar to the file with a newline">
+ same => n,Set(FILE(/tmp/foo.txt,,,al)=bar)
+ </example>
<note>
<para>If <literal>live_dangerously</literal> in <literal>asterisk.conf</literal>
is set to <literal>no</literal>, this function can only be executed from the
diff --git a/funcs/func_frame_drop.c b/funcs/func_frame_drop.c
index f5d70f3..522685c 100644
--- a/funcs/func_frame_drop.c
+++ b/funcs/func_frame_drop.c
@@ -91,9 +91,15 @@
</syntax>
<description>
<para>Examples:</para>
- <para>exten => 1,1,Set(FRAME_DROP(TX)=DTMF_BEGIN,DTMF_END); drop only DTMF frames towards this channel.</para>
- <para>exten => 1,1,Set(FRAME_DROP(TX)=ANSWER); drop only ANSWER CONTROL frames towards this channel.</para>
- <para>exten => 1,1,Set(FRAME_DROP(RX)=DTMF_BEGIN,DTMF_END); drop only DTMF frames received on this channel.</para>
+ <example title="Drop only DTMF frames towards this channel">
+ exten => 1,1,Set(FRAME_DROP(TX)=DTMF_BEGIN,DTMF_END)
+ </example>
+ <example title="Drop only Answer control frames towards this channel">
+ exten => 1,1,Set(FRAME_DROP(TX)=ANSWER)
+ </example>
+ <example title="Drop only DTMF frames received on this channel">
+ exten => 1,1,Set(FRAME_DROP(RX)=DTMF_BEGIN,DTMF_END)
+ </example>
</description>
</function>
***/
diff --git a/funcs/func_frame_trace.c b/funcs/func_frame_trace.c
index b62bae9..b023c9f 100644
--- a/funcs/func_frame_trace.c
+++ b/funcs/func_frame_trace.c
@@ -69,9 +69,15 @@
</syntax>
<description>
<para>Examples:</para>
- <para>exten => 1,1,Set(FRAME_TRACE(white)=DTMF_BEGIN,DTMF_END); view only DTMF frames. </para>
- <para>exten => 1,1,Set(FRAME_TRACE()=DTMF_BEGIN,DTMF_END); view only DTMF frames. </para>
- <para>exten => 1,1,Set(FRAME_TRACE(black)=DTMF_BEGIN,DTMF_END); view everything except DTMF frames. </para>
+ <example title="View only DTMF frames">
+ exten => 1,1,Set(FRAME_TRACE(white)=DTMF_BEGIN,DTMF_END)
+ </example>
+ <example title="View only DTMF frames">
+ exten => 1,1,Set(FRAME_TRACE()=DTMF_BEGIN,DTMF_END)
+ </example>
+ <example title="View everything except DTMF frames">
+ exten => 1,1,Set(FRAME_TRACE(black)=DTMF_BEGIN,DTMF_END)
+ </example>
</description>
</function>
***/
diff --git a/funcs/func_math.c b/funcs/func_math.c
index c5c30e4..c3bc71f 100644
--- a/funcs/func_math.c
+++ b/funcs/func_math.c
@@ -71,7 +71,9 @@
<description>
<para>Performs mathematical functions based on two parameters and an operator. The returned
value type is <replaceable>type</replaceable></para>
- <para>Example: Set(i=${MATH(123%16,int)}) - sets var i=11</para>
+ <example title="Sets var i to 11">
+ same => n,Set(i=${MATH(123%16,int)})
+ </example>
</description>
</function>
<function name="INC" language="en_US">
@@ -104,8 +106,10 @@
</syntax>
<description>
<para>Decrements the value of a variable, while returning the updated value to the dialplan</para>
- <para>Example: DEC(MyVAR) - Decrements MyVar</para>
- <para>Note: DEC(${MyVAR}) - Is wrong, as DEC expects the variable name, not its value</para>
+ <example title="Decrements MyVAR">
+ same => n,NoOp(${DEC(MyVAR)})
+ </example>
+ <note><para>DEC(${MyVAR}) is wrong, as DEC expects the variable name, not its value</para></note>
</description>
</function>
<function name="MIN" language="en_US">
@@ -123,8 +127,9 @@
</syntax>
<description>
<para>Returns the minimum of two numbers <replaceable>num1</replaceable> and <replaceable>num2</replaceable>.</para>
- <para>Example: Set(min=${MIN(7,4)});
- Sets the min variable equal to 4.</para>
+ <example title="Sets the min variable equal to 4">
+ same => n,Set(min=${MIN(7,4)})
+ </example>
</description>
</function>
<function name="MAX" language="en_US">
@@ -142,8 +147,9 @@
</syntax>
<description>
<para>Returns the maximum of two numbers <replaceable>num1</replaceable> and <replaceable>num2</replaceable>.</para>
- <para>Example: Set(max=${MAX(4,7)});
- Sets the max variable equal to 7.</para>
+ <example title="Sets the max variable equal to 13">
+ same => n,Set(max=${MAX(4,7)})
+ </example>
</description>
</function>
<function name="ABS" language="en_US">
@@ -160,8 +166,9 @@
</syntax>
<description>
<para>Returns the absolute value of a number <replaceable>num</replaceable>.</para>
- <para>Example: Set(absval=${ABS(-13)});
- Sets the absval variable equal to 13.</para>
+ <example title="Sets the absval variable equal to 13">
+ same => n,Set(absval=${ABS(-13)})
+ </example>
</description>
</function>
***/
diff --git a/funcs/func_odbc.c b/funcs/func_odbc.c
index 7e4e6a3..43c4a0c 100644
--- a/funcs/func_odbc.c
+++ b/funcs/func_odbc.c
@@ -93,7 +93,9 @@
<description>
<para>Used in SQL templates to escape data which may contain single ticks
<literal>'</literal> which are otherwise used to delimit data.</para>
- <para>Example: SELECT foo FROM bar WHERE baz='${SQL_ESC(${ARG1})}'</para>
+ <example title="Escape example">
+ SELECT foo FROM bar WHERE baz='${SQL_ESC(${ARG1})}'
+ </example>
</description>
</function>
<function name="SQL_ESC_BACKSLASHES" language="en_US">
@@ -106,7 +108,9 @@
<description>
<para>Used in SQL templates to escape data which may contain backslashes
<literal>\</literal> which are otherwise used to escape data.</para>
- <para>Example: SELECT foo FROM bar WHERE baz='${SQL_ESC(${SQL_ESC_BACKSLASHES(${ARG1})})}'</para>
+ <example title="Escape with backslashes example">
+ SELECT foo FROM bar WHERE baz='${SQL_ESC(${SQL_ESC_BACKSLASHES(${ARG1})})}'
+ </example>
</description>
</function>
***/
diff --git a/funcs/func_periodic_hook.c b/funcs/func_periodic_hook.c
index 6b90ee3..3c7b93e 100644
--- a/funcs/func_periodic_hook.c
+++ b/funcs/func_periodic_hook.c
@@ -67,15 +67,15 @@
<para>For example, you could use this function to enable playing
a periodic <literal>beep</literal> sound in a call.</para>
<para/>
- <para>To turn on:</para>
- <para> Set(BEEPID=${PERIODIC_HOOK(hooks,beep,180)})</para>
- <para/>
- <para>To turn off:</para>
- <para> Set(PERIODIC_HOOK(${BEEPID})=off)</para>
- <para/>
- <para>To turn back on again later:</para>
- <para>Set(PERIODIC_HOOK(${BEEPID})=on)</para>
- <para/>
+ <example title="To turn on">
+ same => n,Set(BEEPID=${PERIODIC_HOOK(hooks,beep,180)})
+ </example>
+ <example title="To turn off">
+ same => n,Set(PERIODIC_HOOK(${BEEPID})=off)
+ </example>
+ <example title="To turn back on again later">
+ same => n,Set(PERIODIC_HOOK(${BEEPID})=on)
+ </example>
<para>It is important to note that the hook does not actually
run on the channel itself. It runs asynchronously on a new channel.
Any audio generated by the hook gets injected into the call for
diff --git a/funcs/func_pitchshift.c b/funcs/func_pitchshift.c
index 779f064..4057ed9 100644
--- a/funcs/func_pitchshift.c
+++ b/funcs/func_pitchshift.c
@@ -97,15 +97,30 @@
</syntax>
<description>
<para>Examples:</para>
- <para>exten => 1,1,Set(PITCH_SHIFT(tx)=highest); raises pitch an octave </para>
- <para>exten => 1,1,Set(PITCH_SHIFT(rx)=higher) ; raises pitch more </para>
- <para>exten => 1,1,Set(PITCH_SHIFT(both)=high) ; raises pitch </para>
- <para>exten => 1,1,Set(PITCH_SHIFT(rx)=low) ; lowers pitch </para>
- <para>exten => 1,1,Set(PITCH_SHIFT(tx)=lower) ; lowers pitch more </para>
- <para>exten => 1,1,Set(PITCH_SHIFT(both)=lowest) ; lowers pitch an octave </para>
-
- <para>exten => 1,1,Set(PITCH_SHIFT(rx)=0.8) ; lowers pitch </para>
- <para>exten => 1,1,Set(PITCH_SHIFT(tx)=1.5) ; raises pitch </para>
+ <example title="Raises pitch an octave">
+ exten => 1,1,Set(PITCH_SHIFT(tx)=highest)
+ </example>
+ <example title="Raises pitch more">
+ exten => 1,1,Set(PITCH_SHIFT(rx)=higher)
+ </example>
+ <example title="Raises pitch">
+ exten => 1,1,Set(PITCH_SHIFT(both)=high)
+ </example>
+ <example title="Lowers pitch">
+ exten => 1,1,Set(PITCH_SHIFT(rx)=low)
+ </example>
+ <example title="Lowers pitch more">
+ exten => 1,1,Set(PITCH_SHIFT(tx)=lower)
+ </example>
+ <example title="Lowers pitch an octave">
+ exten => 1,1,Set(PITCH_SHIFT(both)=lowest)
+ </example>
+ <example title="Lowers pitch">
+ exten => 1,1,Set(PITCH_SHIFT(rx)=0.8)
+ </example>
+ <example title="Raises pitch">
+ exten => 1,1,Set(PITCH_SHIFT(tx)=1.5)
+ </example>
</description>
</function>
***/
diff --git a/funcs/func_rand.c b/funcs/func_rand.c
index bf208e9..2b70ba3 100644
--- a/funcs/func_rand.c
+++ b/funcs/func_rand.c
@@ -49,8 +49,9 @@
<para>Choose a random number between <replaceable>min</replaceable> and <replaceable>max</replaceable>.
<replaceable>min</replaceable> defaults to <literal>0</literal>, if not specified, while <replaceable>max</replaceable> defaults
to <literal>RAND_MAX</literal> (2147483647 on many systems).</para>
- <para>Example: Set(junky=${RAND(1,8)});
- Sets junky to a random number between 1 and 8, inclusive.</para>
+ <example title="Set random number between 1 and 8, inclusive">
+ exten => s,1,Set(junky=${RAND(1,8)})
+ </example>
</description>
</function>
***/
diff --git a/funcs/func_sha1.c b/funcs/func_sha1.c
index 6c96ecd..11685b2 100644
--- a/funcs/func_sha1.c
+++ b/funcs/func_sha1.c
@@ -45,9 +45,11 @@
</syntax>
<description>
<para>Generate a SHA1 digest via the SHA1 algorythm.</para>
- <para>Example: Set(sha1hash=${SHA1(junky)})</para>
- <para>Sets the asterisk variable sha1hash to the string <literal>60fa5675b9303eb62f99a9cd47f9f5837d18f9a0</literal>
- which is known as his hash</para>
+ <example title="Set sha1hash variable to SHA1 hash of junky">
+ exten => s,1,Set(sha1hash=${SHA1(junky)})
+ </example>
+ <para>The example above sets the asterisk variable sha1hash to the string <literal>60fa5675b9303eb62f99a9cd47f9f5837d18f9a0</literal>
+ which is known as its hash</para>
</description>
</function>
***/
diff --git a/funcs/func_shell.c b/funcs/func_shell.c
index fe1debe..c8c2187 100644
--- a/funcs/func_shell.c
+++ b/funcs/func_shell.c
@@ -91,7 +91,9 @@
</syntax>
<description>
<para>Collects the output generated by a command executed by the system shell</para>
- <para>Example: <literal>Set(foo=${SHELL(echo bar)})</literal></para>
+ <example title="Shell example">
+ exten => s,1,Set(foo=${SHELL(echo bar)})
+ </example>
<note>
<para>The command supplied to this function will be executed by the
system's shell, typically specified in the SHELL environment variable. There
diff --git a/funcs/func_speex.c b/funcs/func_speex.c
index 1a88fae..7d05d6f 100644
--- a/funcs/func_speex.c
+++ b/funcs/func_speex.c
@@ -66,9 +66,10 @@
analog lines, but could be useful for other channels as well. The target volume
is set with a number between <literal>1-32768</literal>. The larger the number
the louder (more gain) the channel will receive.</para>
- <para>Examples:</para>
- <para>exten => 1,1,Set(AGC(rx)=8000)</para>
- <para>exten => 1,2,Set(AGC(tx)=off)</para>
+ <example title="Apply automatic gain control">
+ exten => 1,1,Set(AGC(rx)=8000)
+ exten => 1,2,Set(AGC(tx)=off)
+ </example>
</description>
</function>
<function name="DENOISE" language="en_US">
@@ -87,9 +88,10 @@
that it is executed on. It is very useful for noisy analog lines, especially
when adjusting gains or using AGC. Use <literal>rx</literal> for audio received from the channel
and <literal>tx</literal> to apply the filter to the audio being sent to the channel.</para>
- <para>Examples:</para>
- <para>exten => 1,1,Set(DENOISE(rx)=on)</para>
- <para>exten => 1,2,Set(DENOISE(tx)=off)</para>
+ <example title="Apply noise reduction">
+ exten => 1,1,Set(DENOISE(rx)=on)
+ exten => 1,2,Set(DENOISE(tx)=off)
+ </example>
</description>
</function>
***/
diff --git a/funcs/func_strings.c b/funcs/func_strings.c
index 3eed847..77cdc99 100644
--- a/funcs/func_strings.c
+++ b/funcs/func_strings.c
@@ -62,7 +62,10 @@
carriage return, and tab characters, respectively. Also, octal and hexadecimal specifications are recognized
by the patterns <literal>\0nnn</literal> and <literal>\xHH</literal>, respectively. For example, if you wanted
to encode a comma as the delimiter, you could use either <literal>\054</literal> or <literal>\x2C</literal>.</para>
- <para>Example: If ${example} contains <literal>ex-amp-le</literal>, then ${FIELDQTY(example,-)} returns 3.</para>
+ <example title="Prints 3">
+ exten => s,1,Set(example=ex-amp-le)
+ same => n,NoOp(${FIELDQTY(example,-)})
+ </example>
</description>
</function>
<function name="FIELDNUM" language="en_US">
@@ -83,7 +86,10 @@
carriage return, and tab characters, respectively. Also, octal and hexadecimal specifications are recognized
by the patterns <literal>\0nnn</literal> and <literal>\xHH</literal>, respectively. For example, if you wanted
to encode a comma as the delimiter, you could use either <literal>\054</literal> or <literal>\x2C</literal>.</para>
- <para>Example: If ${example} contains <literal>ex-amp-le</literal>, then ${FIELDNUM(example,-,amp)} returns 2.</para>
+ <example title="Prints 2">
+ exten => s,1,Set(example=ex-amp-le)
+ same => n,NoOp(${FIELDNUM(example,-,amp)})
+ </example>
</description>
</function>
<function name="LISTFILTER" language="en_US">
@@ -190,8 +196,10 @@
string, instead.</para>
<note><para>The functions which take a variable name need to be passed var and not
${var}. Similarly, use PASSTHRU() and not ${PASSTHRU()}.</para></note>
- <para>Example: ${CHANNEL} contains SIP/321-1</para>
- <para> ${CUT(PASSTHRU(${CUT(CHANNEL,-,1)}),/,2)}) will return 321</para>
+ <example title="Prints 321">
+ exten => s,1,NoOp(${CHANNEL}) ; contains SIP/321-1
+ same => n,NoOp(${CUT(PASSTHRU(${CUT(CHANNEL,-,1)}),/,2)})
+ </example>
</description>
</function>
<function name="REGEX" language="en_US">
@@ -257,7 +265,9 @@
<parameter name="string" required="true" />
</syntax>
<description>
- <para>Example: ${KEYPADHASH(Les)} returns "537"</para>
+ <example title="Returns 537">
+ exten => s,1,Return(${KEYPADHASH(Les)})
+ </example>
</description>
</function>
<function name="ARRAY" language="en_US">
@@ -273,7 +283,9 @@
<para>The comma-delimited list passed as a value to which the function is set will
be interpreted as a set of values to which the comma-delimited list of
variable names in the argument should be set.</para>
- <para>Example: Set(ARRAY(var1,var2)=1,2) will set var1 to 1 and var2 to 2</para>
+ <example title="Set var1 to 1 and var2 to 2">
+ same => n,Set(ARRAY(var1,var2)=1,2)
+ </example>
</description>
</function>
<function name="STRPTIME" language="en_US">
@@ -289,7 +301,9 @@
<para>This is useful for converting a date into <literal>EPOCH</literal> time,
possibly to pass to an application like SayUnixTime or to calculate the difference
between the two date strings</para>
- <para>Example: ${STRPTIME(2006-03-01 07:30:35,America/Chicago,%Y-%m-%d %H:%M:%S)} returns 1141219835</para>
+ <example title="Prints 1141219835">
+ same => n,NoOp(${STRPTIME(2006-03-01 07:30:35,America/Chicago,%Y-%m-%d %H:%M:%S)})
+ </example>
</description>
</function>
<function name="STRFTIME" language="en_US">
@@ -343,7 +357,9 @@
<parameter name="string" required="true" />
</syntax>
<description>
- <para>Example: ${TOUPPER(Example)} returns "EXAMPLE"</para>
+ <example title="Prints EXAMPLE">
+ exten => s,1,NoOp(${TOUPPER(Example)})
+ </example>
</description>
</function>
<function name="TOLOWER" language="en_US">
@@ -354,7 +370,9 @@
<parameter name="string" required="true" />
</syntax>
<description>
- <para>Example: ${TOLOWER(Example)} returns "example"</para>
+ <example title="Prints example">
+ exten => s,1,NoOp(${TOLOWER(Example)})
+ </example>
</description>
</function>
<function name="LEN" language="en_US">
@@ -365,7 +383,9 @@
<parameter name="string" required="true" />
</syntax>
<description>
- <para>Example: ${LEN(example)} returns 7</para>
+ <example title="Prints 7">
+ exten => s,1,NoOp(${LEN(example)})
+ </example>
</description>
</function>
<function name="QUOTE" language="en_US">
@@ -399,11 +419,12 @@
<parameter name="delimiter" required="false" default="," />
</syntax>
<description>
- <para>Example:</para>
- <para>exten => s,1,Set(array=one,two,three)</para>
- <para>exten => s,n,While($["${SET(var=${SHIFT(array)})}" != ""])</para>
- <para>exten => s,n,NoOp(var is ${var})</para>
- <para>exten => s,n,EndWhile</para>
+ <example title="SHIFT example">
+ exten => s,1,Set(array=one,two,three)
+ exten => s,n,While($["${SET(var=${SHIFT(array)})}" != ""])
+ exten => s,n,NoOp(var is ${var})
+ exten => s,n,EndWhile
+ </example>
<para>This would iterate over each value in array, left to right, and
would result in NoOp(var is one), NoOp(var is two), and
NoOp(var is three) being executed.
@@ -419,11 +440,12 @@
<parameter name="delimiter" required="false" default="," />
</syntax>
<description>
- <para>Example:</para>
- <para>exten => s,1,Set(array=one,two,three)</para>
- <para>exten => s,n,While($["${SET(var=${POP(array)})}" != ""])</para>
- <para>exten => s,n,NoOp(var is ${var})</para>
- <para>exten => s,n,EndWhile</para>
+ <example title="POP example">
+ exten => s,1,Set(array=one,two,three)
+ exten => s,n,While($["${SET(var=${POP(array)})}" != ""])
+ exten => s,n,NoOp(var is ${var})
+ exten => s,n,EndWhile
+ </example>
<para>This would iterate over each value in array, right to left, and
would result in NoOp(var is three), NoOp(var is two), and
NoOp(var is one) being executed.
@@ -439,7 +461,10 @@
<parameter name="delimiter" required="false" default="," />
</syntax>
<description>
- <para>Example: Set(PUSH(array)=one,two,three) would append one,
+ <example title="PUSH example">
+ exten => s,1,Set(PUSH(array)=one,two,three)
+ </example>
+ <para>This would append one,
two, and three to the end of the values stored in the variable
"array".
</para>
@@ -454,7 +479,10 @@
<parameter name="delimiter" required="false" default="," />
</syntax>
<description>
- <para>Example: Set(UNSHIFT(array)=one,two,three) would insert one,
+ <example title="UNSHIFT example">
+ exten => s,1,Set(UNSHIFT(array)=one,two,three)
+ </example>
+ <para>This would insert one,
two, and three before the values stored in the variable
"array".
</para>
diff --git a/funcs/func_talkdetect.c b/funcs/func_talkdetect.c
index 88c470e..257ecda 100644
--- a/funcs/func_talkdetect.c
+++ b/funcs/func_talkdetect.c
@@ -103,11 +103,18 @@
natural speech.</para>
<para>By default this value is 2500ms. Valid values are 1
through 2^31.</para>
- <para>Example:</para>
- <para>same => n,Set(TALK_DETECT(set)=) ; Enable talk detection</para>
- <para>same => n,Set(TALK_DETECT(set)=1200) ; Update existing talk detection's silence threshold to 1200 ms</para>
- <para>same => n,Set(TALK_DETECT(remove)=) ; Remove talk detection</para>
- <para>same => n,Set(TALK_DETECT(set)=,128) ; Enable and set talk threshold to 128</para>
+ <example title="Enable talk detection">
+ same => n,Set(TALK_DETECT(set)=)
+ </example>
+ <example title="Update existing talk detection's silence threshold to 1200 ms">
+ same => n,Set(TALK_DETECT(set)=1200)
+ </example>
+ <example title="Remove talk detection">
+ same => n,Set(TALK_DETECT(remove)=)
+ </example>
+ <example title="Enable and set talk threshold to 128">
+ same => n,Set(TALK_DETECT(set)=,128)
+ </example>
<para>This function will set the following variables:</para>
<note>
<para>The TALK_DETECT function uses an audiohook to inspect the
@@ -117,10 +124,11 @@
it typically makes sense to place functions that modify the voice
media data prior to placing the TALK_DETECT function, as this will
yield better results.</para>
- <para>Example:</para>
- <para>same => n,Set(DENOISE(rx)=on) ; Denoise received audio</para>
- <para>same => n,Set(TALK_DETECT(set)=) ; Perform talk detection on the denoised received audio</para>
</note>
+ <example title="Denoise and then perform talk detection">
+ same => n,Set(DENOISE(rx)=on) ; Denoise received audio
+ same => n,Set(TALK_DETECT(set)=) ; Perform talk detection on the denoised received audio
+ </example>
</description>
</function>
***/
diff --git a/funcs/func_version.c b/funcs/func_version.c
index 01cb748..baef884 100644
--- a/funcs/func_version.c
+++ b/funcs/func_version.c
@@ -47,7 +47,7 @@
<enumlist>
<enum name="ASTERISK_VERSION_NUM">
<para>A string of digits is returned, e.g. 10602 for 1.6.2 or 100300 for 10.3.0,
- or 999999 when using an SVN build.</para>
+ or 999999 when using a Git build.</para>
</enum>
<enum name="BUILD_USER">
<para>The string representing the user's name whose account
@@ -73,9 +73,10 @@
</parameter>
</syntax>
<description>
- <para>If there are no arguments, return the version of Asterisk in this format: SVN-branch-1.4-r44830M</para>
- <para>Example: Set(junky=${VERSION()};</para>
- <para>Sets junky to the string <literal>SVN-branch-1.6-r74830M</literal>, or possibly, <literal>SVN-trunk-r45126M</literal>.</para>
+ <para>If there are no arguments, return the version of Asterisk in this format: 18.12.0</para>
+ <example title="Get current version">
+ same => n,Set(junky=${VERSION()} ; sets junky to 18.12.0, or possibly GITMasterxxxxxx
+ </example>
</description>
</function>
***/
diff --git a/funcs/func_vmcount.c b/funcs/func_vmcount.c
index 6600703..b6302cc 100644
--- a/funcs/func_vmcount.c
+++ b/funcs/func_vmcount.c
@@ -57,7 +57,9 @@
<description>
<para>Count the number of voicemails in a specified mailbox, you could also specify
the mailbox <replaceable>folder</replaceable>.</para>
- <para>Example: <literal>exten => s,1,Set(foo=${VMCOUNT(125 at default)})</literal></para>
+ <example title="Mailbox folder count">
+ exten => s,1,Set(foo=${VMCOUNT(125 at default)})
+ </example>
<para>An ampersand-separated list of mailboxes may be specified to count voicemails in
multiple mailboxes. If a folder is specified, this will apply to all mailboxes specified.</para>
<example title="Multiple mailbox inbox count">
diff --git a/funcs/func_volume.c b/funcs/func_volume.c
index a20bb76..9372872 100644
--- a/funcs/func_volume.c
+++ b/funcs/func_volume.c
@@ -59,11 +59,24 @@
<description>
<para>The VOLUME function can be used to increase or decrease the <literal>tx</literal> or
<literal>rx</literal> gain of any channel.</para>
- <para>For example:</para>
- <para>Set(VOLUME(TX)=3)</para>
- <para>Set(VOLUME(RX)=2)</para>
- <para>Set(VOLUME(TX,p)=3)</para>
- <para>Set(VOLUME(RX,p)=3)</para>
+ <example title="Increase volume">
+ same => n,Set(VOLUME(TX)=3)
+ </example>
+ <example title="Increase volume">
+ same => n,Set(VOLUME(RX)=2)
+ </example>
+ <example title="Increase volume with DTMF control">
+ same => n,Set(VOLUME(TX,p)=3)
+ </example>
+ <example title="Increase RX volume with DTMF control">
+ same => n,Set(VOLUME(RX,p)=3)
+ </example>
+ <example title="Decrease RX volume">
+ same => n,Set(VOLUME(RX)=-4)
+ </example>
+ <example title="Reset to normal">
+ same => n,Set(VOLUME(RX)=0)
+ </example>
</description>
</function>
***/
diff --git a/res/res_calendar.c b/res/res_calendar.c
index 98f9169..4af1fde 100644
--- a/res/res_calendar.c
+++ b/res/res_calendar.c
@@ -193,7 +193,9 @@
</parameter>
</syntax>
<description>
- <para>Example: CALENDAR_WRITE(calendar,field1,field2,field3)=val1,val2,val3</para>
+ <example title="Set calendar fields">
+ same => n,Set(CALENDAR_WRITE(calendar,field1,field2,field3)=val1,val2,val3)
+ </example>
<para>The field and value arguments can easily be set/passed using the HASHKEYS() and HASH() functions</para>
<variablelist>
<variable name="CALENDAR_SUCCESS">
diff --git a/res/res_mutestream.c b/res/res_mutestream.c
index 8040a3a..93c6d0a 100644
--- a/res/res_mutestream.c
+++ b/res/res_mutestream.c
@@ -69,16 +69,13 @@
</parameter>
</syntax>
<description>
- <para>The MUTEAUDIO function can be used to mute inbound (to the PBX) or outbound audio in a call.
- </para>
- <para>Examples:
- </para>
- <para>
- MUTEAUDIO(in)=on
- </para>
- <para>
- MUTEAUDIO(in)=off
- </para>
+ <para>The MUTEAUDIO function can be used to mute inbound (to the PBX) or outbound audio in a call.</para>
+ <example title="Mute incoming audio">
+ exten => s,1,Set(MUTEAUDIO(in)=on)
+ </example>
+ <example title="Do not mute incoming audio">
+ exten => s,1,Set(MUTEAUDIO(in)=off)
+ </example>
</description>
</function>
<manager name="MuteAudio" language="en_US">
diff --git a/res/res_pjsip_config_wizard.c b/res/res_pjsip_config_wizard.c
index 4c1c59b..59976b1 100644
--- a/res/res_pjsip_config_wizard.c
+++ b/res/res_pjsip_config_wizard.c
@@ -65,25 +65,24 @@
endpoint, aor, contact, auth and phoneprov objects necessary for a phone to
get phone provisioning information, register, and make and receive calls.
A hint is also created in the default context for extension 1000.</para>
- <para> </para>
-
- <para>[myphone]</para>
- <para>type = wizard</para>
- <para>sends_auth = no</para>
- <para>accepts_auth = yes</para>
- <para>sends_registrations = no</para>
- <para>accepts_registrations = yes</para>
- <para>has_phoneprov = yes</para>
- <para>transport = ipv4</para>
- <para>has_hint = yes</para>
- <para>hint_exten = 1000</para>
- <para>inbound_auth/username = testname</para>
- <para>inbound_auth/password = test password</para>
- <para>endpoint/allow = ulaw</para>
- <para>endpoint/context = default</para>
- <para>phoneprov/MAC = 001122aa4455</para>
- <para>phoneprov/PROFILE = profile1</para>
- <para> </para>
+ <example title="myphone">
+ [myphone]
+ type = wizard
+ sends_auth = no
+ accepts_auth = yes
+ sends_registrations = no
+ accepts_registrations = yes
+ has_phoneprov = yes
+ transport = ipv4
+ has_hint = yes
+ hint_exten = 1000
+ inbound_auth/username = testname
+ inbound_auth/password = test password
+ endpoint/allow = ulaw
+ endpoint/context = default
+ phoneprov/MAC = 001122aa4455
+ phoneprov/PROFILE = profile1
+ </example>
<para>The first 8 items are specific to the wizard. The rest of the items
are passed verbatim to the underlying objects.</para>
@@ -92,21 +91,20 @@
<para>The following configuration snippet would create the
endpoint, aor, contact, auth, identify and registration objects necessary for a trunk
to another pbx or ITSP that requires registration.</para>
- <para> </para>
-
- <para>[mytrunk]</para>
- <para>type = wizard</para>
- <para>sends_auth = yes</para>
- <para>accepts_auth = no</para>
- <para>sends_registrations = yes</para>
- <para>accepts_registrations = no</para>
- <para>transport = ipv4</para>
- <para>remote_hosts = sip1.myitsp.com:5060,sip2.myitsp.com:5060</para>
- <para>outbound_auth/username = testname</para>
- <para>outbound_auth/password = test password</para>
- <para>endpoint/allow = ulaw</para>
- <para>endpoint/context = default</para>
- <para> </para>
+ <example title="mytrunk">
+ [mytrunk]
+ type = wizard
+ sends_auth = yes
+ accepts_auth = no
+ sends_registrations = yes
+ accepts_registrations = no
+ transport = ipv4
+ remote_hosts = sip1.myitsp.com:5060,sip2.myitsp.com:5060
+ outbound_auth/username = testname
+ outbound_auth/password = test password
+ endpoint/allow = ulaw
+ endpoint/context = default
+ </example>
<para>Of course, any of the items in either example could be placed into
templates and shared among wizard objects.</para>
@@ -227,10 +225,10 @@
<para> <literal>exten => <hint_exten>,1,<hint_application></literal></para>
<para> </para>
<para>You can specify any valid extensions.conf application expression.</para>
- <para>Examples: </para>
- <para> <literal>Dial(${HINT})</literal></para>
- <para> <literal>Gosub(stdexten,${EXTEN},1(${HINT}))</literal></para>
- <para> </para>
+ <example title="Valid expressions">
+ Dial(${HINT})
+ Gosub(stdexten,${EXTEN},1(${HINT}))
+ </example>
<para>Any extensions.conf style variables specified are passed directly to the
dialplan.</para>
<para> </para>
diff --git a/res/res_pjsip_header_funcs.c b/res/res_pjsip_header_funcs.c
index ee94147..fa6db34 100644
--- a/res/res_pjsip_header_funcs.c
+++ b/res/res_pjsip_header_funcs.c
@@ -84,65 +84,59 @@
channel. One exception is that you can read headers that you have already
added on the outbound channel.</para>
<para>Examples:</para>
- <para>;</para>
- <para>; Set 'somevar' to the value of the 'From' header.</para>
- <para>exten => 1,1,Set(somevar=${PJSIP_HEADER(read,From)})</para>
- <para>;</para>
- <para>; Set 'via2' to the value of the 2nd 'Via' header.</para>
- <para>exten => 1,1,Set(via2=${PJSIP_HEADER(read,Via,2)})</para>
- <para>;</para>
- <para>; Set 'xhdr' to the value of the 1sx X-header.</para>
- <para>exten => 1,1,Set(xhdr=${PJSIP_HEADER(read,X-*,1)})</para>
- <para>;</para>
- <para>; Add an 'X-Myheader' header with the value of 'myvalue'.</para>
- <para>exten => 1,1,Set(PJSIP_HEADER(add,X-MyHeader)=myvalue)</para>
- <para>;</para>
- <para>; Add an 'X-Myheader' header with an empty value.</para>
- <para>exten => 1,1,Set(PJSIP_HEADER(add,X-MyHeader)=)</para>
- <para>;</para>
- <para>; Update the value of the header named 'X-Myheader' to 'newvalue'.</para>
- <para>; 'X-Myheader' must already exist or the call will fail.</para>
- <para>exten => 1,1,Set(PJSIP_HEADER(update,X-MyHeader)=newvalue)</para>
- <para>;</para>
- <para>; Remove all headers whose names exactly match 'X-MyHeader'.</para>
- <para>exten => 1,1,Set(PJSIP_HEADER(remove,X-MyHeader)=)</para>
- <para>;</para>
- <para>; Remove all headers that begin with 'X-My'.</para>
- <para>exten => 1,1,Set(PJSIP_HEADER(remove,X-My*)=)</para>
- <para>;</para>
- <para>; Remove all previously added headers.</para>
- <para>exten => 1,1,Set(PJSIP_HEADER(remove,*)=)</para>
- <para>;</para>
-
+ <example title="Set somevar to the value of the From header">
+ exten => 1,1,Set(somevar=${PJSIP_HEADER(read,From)})
+ </example>
+ <example title="Set via2 to the value of the 2nd Via header">
+ exten => 1,1,Set(via2=${PJSIP_HEADER(read,Via,2)})
+ </example>
+ <example title="Set xhdr to the value of the 1st X-header">
+ exten => 1,1,Set(xhdr=${PJSIP_HEADER(read,X-*,1)})
+ </example>
+ <example title="Add an X-Myheader header with the value of myvalue">
+ exten => 1,1,Set(PJSIP_HEADER(add,X-MyHeader)=myvalue)
+ </example>
+ <example title="Add an X-Myheader header with an empty value">
+ exten => 1,1,Set(PJSIP_HEADER(add,X-MyHeader)=)
+ </example>
+ <example title="Update the value of the header named X-Myheader to newvalue">
+ ; 'X-Myheader' must already exist or the call will fail.
+ exten => 1,1,Set(PJSIP_HEADER(update,X-MyHeader)=newvalue)
+ </example>
+ <example title="Remove all headers whose names exactly match X-MyHeader">
+ exten => 1,1,Set(PJSIP_HEADER(remove,X-MyHeader)=)
+ </example>
+ <example title="Remove all headers that begin with X-My">
+ exten => 1,1,Set(PJSIP_HEADER(remove,X-My*)=)
+ </example>
+ <example title="Remove all previously added headers">
+ exten => 1,1,Set(PJSIP_HEADER(remove,*)=)
+ </example>
<note><para>The <literal>remove</literal> action can be called by reading
- <emphasis>or</emphasis> writing PJSIP_HEADER.</para>
- <para>;</para>
- <para>; Display the number of headers removed</para>
- <para>exten => 1,1,Verbose( Removed ${PJSIP_HEADER(remove,X-MyHeader)} headers)</para>
- <para>;</para>
- <para>; Set a variable to the number of headers removed</para>
- <para>exten => 1,1,Set(count=${PJSIP_HEADER(remove,X-MyHeader)})</para>
- <para>;</para>
- <para>; Just remove them ignoring any count</para>
- <para>exten => 1,1,Set(=${PJSIP_HEADER(remove,X-MyHeader)})</para>
- <para>exten => 1,1,Set(PJSIP_HEADER(remove,X-MyHeader)=)</para>
- <para>;</para>
- </note>
+ <emphasis>or</emphasis> writing PJSIP_HEADER.</para></note>
+ <example title="Display the number of headers removed">
+ exten => 1,1,Verbose( Removed ${PJSIP_HEADER(remove,X-MyHeader)} headers)
+ </example>
+ <example title="Set a variable to the number of headers removed">
+ exten => 1,1,Set(count=${PJSIP_HEADER(remove,X-MyHeader)})
+ </example>
+ <example title="Just remove them ignoring any count">
+ exten => 1,1,Set(=${PJSIP_HEADER(remove,X-MyHeader)})
+ exten => 1,1,Set(PJSIP_HEADER(remove,X-MyHeader)=)
+ </example>
<note><para>If you call PJSIP_HEADER in a normal dialplan context you'll be
operating on the <emphasis>caller's (incoming)</emphasis> channel which
may not be what you want. To operate on the <emphasis>callee's (outgoing)</emphasis>
- channel call PJSIP_HEADER in a pre-dial handler. </para>
- <para>Example:</para>
- <para>;</para>
- <para>[handler]</para>
- <para>exten => addheader,1,Set(PJSIP_HEADER(add,X-MyHeader)=myvalue)</para>
- <para>exten => addheader,2,Set(PJSIP_HEADER(add,X-MyHeader2)=myvalue2)</para>
- <para>;</para>
- <para>[somecontext]</para>
- <para>exten => 1,1,Dial(PJSIP/${EXTEN},,b(handler^addheader^1))</para>
- <para>;</para>
- </note>
+ channel call PJSIP_HEADER in a pre-dial handler. </para></note>
+ <example title="Set headers on callee channel">
+ [handler]
+ exten => addheader,1,Set(PJSIP_HEADER(add,X-MyHeader)=myvalue)
+ exten => addheader,2,Set(PJSIP_HEADER(add,X-MyHeader2)=myvalue2)
+
+ [somecontext]
+ exten => 1,1,Dial(PJSIP/${EXTEN},,b(handler^addheader^1))
+ </example>
</description>
</function>
<function name="PJSIP_HEADERS" language="en_US">
--
To view, visit https://gerrit.asterisk.org/c/asterisk/+/18647
To unsubscribe, or for help writing mail filters, visit https://gerrit.asterisk.org/settings
Gerrit-Project: asterisk
Gerrit-Branch: 18
Gerrit-Change-Id: Iada8bbfda08f30b118cedf2d040bbb21e4966ec5
Gerrit-Change-Number: 18647
Gerrit-PatchSet: 1
Gerrit-Owner: N A <mail at interlinked.x10host.com>
Gerrit-Reviewer: Friendly Automation
Gerrit-Reviewer: Joshua Colp <jcolp at sangoma.com>
Gerrit-Reviewer: Kevin Harwell <kharwell at digium.com>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-code-review/attachments/20220608/e1baf223/attachment-0001.html>
More information about the asterisk-code-review
mailing list