diff --git a/doc/appdocsxml.dtd b/doc/appdocsxml.dtd
index a475cd32f9..f8e7100f20 100644
--- a/doc/appdocsxml.dtd
+++ b/doc/appdocsxml.dtd
@@ -71,7 +71,7 @@
-
+
diff --git a/main/features_config.c b/main/features_config.c
index a40d0f70ef..9fe72a2252 100644
--- a/main/features_config.c
+++ b/main/features_config.c
@@ -26,8 +26,248 @@
#include "asterisk/app.h"
#include "asterisk/cli.h"
-/* BUGBUG XML Documentation is still needed for configuration options */
/*** DOCUMENTATION
+
+ Features Configuration
+
+
+
+
+
+ Milliseconds allowed between digit presses when entering a feature code.
+
+
+ Sound to play when automon or automixmon is activated
+
+
+ Milliseconds allowed between digit presses when dialing a transfer destination
+
+
+ Milliseconds to wait for attended transfer destination to answer
+
+
+ Hang up the call entirely if the attended transfer fails
+
+ When this option is set to no, then Asterisk will attempt to
+ re-call the transferrer if the call to the transfer target fails. If the call to the
+ transferrer fails, then Asterisk will wait atxferloopdelay
+ milliseconds and then attempt to dial the transfer target again. This process will
+ repeat until atxfercallbackretries attempts to re-call
+ the transferrer have occurred.
+ When this option is set to yes, then Asterisk will not attempt
+ to re-call the transferrer if the call to the transfer target fails. Asterisk will instead
+ hang up all channels involved in the transfer.
+
+
+
+ Milliseconds to wait between attempts to re-dial transfer destination
+ atxferdropcall
+
+
+ Number of times to re-attempt dialing a transfer destination
+ atxferdropcall
+
+
+ Sound to play to during transfer and transfer-like operations.
+
+ This sound will play to the transferrer and transfer target channels when
+ an attended transfer completes. This sound is also played to channels when performing
+ an AMI Bridge action.
+
+
+
+ Sound to play to a transferee when a transfer fails
+
+
+ Digits to dial to abort an attended transfer attempt
+
+ This option is only available to the transferrer during an attended
+ transfer operation. Aborting a transfer results in the transfer being cancelled and
+ the original parties in the call being re-bridged.
+
+
+
+ Digits to dial to complete an attended transfer
+
+ This option is only available to the transferrer during an attended
+ transfer operation. Completing the transfer with a DTMF sequence is functionally
+ equivalent to hanging up the transferrer channel during an attended transfer. The
+ result is that the transfer target and transferees are bridged.
+
+
+
+ Digits to dial to change an attended transfer into a three-way call
+
+ This option is only available to the transferrer during an attended
+ transfer operation. Pressing this DTMF sequence will result in the transferrer,
+ the transferees, and the transfer target all being in a single bridge together.
+
+
+
+ Digits used for picking up ringing calls
+
+ In order for the pickup attempt to be successful, the party attempting to
+ pick up the call must either have a namedpickupgroup in
+ common with a ringing party's namedcallgroup or must
+ have a pickupgroup in common with a ringing party's
+ callgroup.
+
+
+
+ Sound to play to picker when a call is picked up
+
+
+ Sound to play to picker when a call cannot be picked up
+
+
+
+ DTMF options that can be triggered during bridged calls
+
+ DTMF sequence to initiate an attended transfer
+
+ The transferee parties will be placed on hold and the
+ transferrer may dial an extension to reach a transfer target. During an
+ attended transfer, the transferrer may consult with the transfer target
+ before completing the transfer. Once the transferrer has hung up or pressed
+ the atxfercomplete DTMF sequence, then the transferees
+ and transfer target will be bridged.
+
+
+
+ DTMF sequence to initiate a blind transfer
+
+ The transferee parties will be placed on hold and the
+ transferrer may dial an extension to reach a transfer target. During a
+ blind transfer, as soon as the transfer target is dialed, the transferrer
+ is hung up.
+
+
+
+ DTMF sequence to disconnect the current call
+
+ Entering this DTMF sequence will cause the bridge to end, no
+ matter the number of parties present
+
+
+
+ DTMF sequence to park a call
+
+ The parking lot used to park the call is determined by using either the
+ PARKINGLOT channel variable or a configured value on
+ the channel (provided by the channel driver) if the variable is not present. If
+ no configured value on the channel is present, then "default"
+ is used. The call is parked in the next available space in the parking lot.
+
+
+
+ DTMF sequence to start or stop monitoring a call
+
+ This will cause the channel that pressed the DTMF sequence
+ to be monitored by the Monitor application. The
+ format for the recording is determined by the TOUCH_MONITOR_FORMAT
+ channel variable. If this variable is not specified, then wav is the
+ default. The filename is constructed in the following manner:
+
+ prefix-timestamp-filename
+
+ where prefix is either the value of the TOUCH_MONITOR_PREFIX
+ channel variable or auto if the variable is not set. The timestamp
+ is a UNIX timestamp. The filename is either the value of the TOUCH_MONITOR
+ channel variable or the callerID of the channels if the variable is not set.
+
+
+
+ DTMF sequence to start or stop mixmonitoring a call
+
+ Operation of the automixmon is similar to the automon
+ feature, with the following exceptions:
+ TOUCH_MIXMONITOR is used in place of TOUCH_MONITOR
+ TOUCH_MIXMONITOR_FORMAT is used in place of TOUCH_MIXMONITOR
+ There is no equivalent for TOUCH_MONITOR_PREFIX. "auto" is always how the filename begins.
+
+ automon
+
+
+
+ Section for defining custom feature invocations during a call
+
+ The applicationmap is an area where new custom features can be created. Items
+ defined in the applicationmap are not automatically accessible to bridged parties. Access
+ to the individual items is controled using the DYNAMIC_FEATURES channel variable.
+ The DYNAMIC_FEATURES is a # separated list of
+ either applicationmap item names or featuregroup names.
+
+
+ A custom feature to invoke during a bridged call
+
+ Each item listed here is a comma-separated list of parameters that determine
+ how a feature may be invoked during a call
+ Example:
+ eggs = *5,self,Playback(hello-world),default
+ This would create a feature called eggs that could be invoked
+ during a call by pressing the *5. The party that presses the DTMF
+ sequence would then trigger the Playback application to play the
+ hello-world file. The application invocation would happen on the
+ party that pressed the DTMF sequence since self is specified. The
+ other parties in the bridge would hear the default music on hold
+ class during the playback.
+ In addition to the syntax outlined in this documentation, a backwards-compatible alternative
+ is also allowed. The following applicationmap lines are functionally identical:
+ eggs = *5,self,Playback(hello-world),default
+ eggs = *5,self,Playback,hello-world,default
+ eggs = *5,self,Playback,"hello-world",default
+
+
+
+ The DTMF sequence used to trigger the option
+
+
+ The party that the feature will be invoked on
+
+
+
+
+
+
+ The dialplan application to run when the DTMF sequence is pressed
+
+ The arguments to the dialplan application to run
+
+
+
+ Music on hold class to play to bridge participants that are not the target of the application invocation
+
+
+
+
+
+ Groupings of items from the applicationmap
+
+ Feature groups allow for multiple applicationmap items to be
+ grouped together. Like with individual applicationmap items, feature groups
+ can be part of the DYNAMIC_FEATURES channel variable.
+ In addition to creating groupings, the feature group section allows for the
+ DTMF sequence used to invoke an applicationmap item to be overridden with
+ a different sequence.
+
+
+ Applicationmap item to place in the feature group
+
+ Each item here must be a name of an item in the applicationmap. The
+ argument may either be a new DTMF sequence to use for the item or it
+ may be left blank in order to use the DTMF sequence specified in the
+ applicationmap. For example:
+ eggs => *1
+ bacon =>
+ would result in the applicationmap items eggs and
+ bacon being in the featuregroup. The former would have its
+ default DTMF trigger overridden with *1 and the latter would
+ have the DTMF value specified in the applicationmap.
+
+
+
+
+
Get or set a feature option on a channel.
@@ -37,21 +277,21 @@
The allowed values are:Inherit feature settings made in FEATURE or FEATUREMAP to child channels.
- Milliseconds allowed between digits when entering a feature code.
- Milliseconds allowed between digits when dialing a transfer destination
- Milliseconds to wait for transfer destination to answer
- Hang up the call entirely if the attended transfer fails
- Milliseconds to wait between attempts to re-dial transfer destination
- Number of times to re-attempt dialing a transfer destination
- Sound to play to a transferee when a transfer completes
- Sound to play to a transferee when a transfer fails
- Digits to dial to abort an attended transfer attempt
- Digits to dial to complete an attended transfer
- Digits to dial to change an attended transfer into a three-way call
- Digits used for picking up ringing calls
- Sound to play to picker when a call is picked up
- Sound to play to picker when a call cannot be picked up
- Sound to play when automon or automixmon is activated
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -97,6 +337,7 @@
***/
/*! Default general options */
#define DEFAULT_FEATURE_DIGIT_TIMEOUT 1000
+#define DEFAULT_COURTESY_TONE ""
/*! Default xfer options */
#define DEFAULT_TRANSFER_DIGIT_TIMEOUT 3000