diff options
Diffstat (limited to 'main/features_config.c')
-rw-r--r-- | main/features_config.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/main/features_config.c b/main/features_config.c index c4a6ffc40..9fed53b32 100644 --- a/main/features_config.c +++ b/main/features_config.c @@ -132,6 +132,15 @@ <configOption name="pickupfailsound"> <synopsis>Sound to play to picker when a call cannot be picked up</synopsis> </configOption> + <configOption name="transferdialattempts" default="3"> + <synopsis>Number of dial attempts allowed when attempting a transfer</synopsis> + </configOption> + <configOption name="transferretrysound" default="pbx-invalid"> + <synopsis>Sound that is played when an incorrect extension is dialed and the transferer should try again.</synopsis> + </configOption> + <configOption name="transferinvalidsound" default="privacy-incorrect"> + <synopsis>Sound that is played when an incorrect extension is dialed and the transferer has no attempts remaining.</synopsis> + </configOption> </configObject> <configObject name="featuremap"> <synopsis>DTMF options that can be triggered during bridged calls</synopsis> @@ -306,6 +315,9 @@ <enum name="pickupfailsound"><para><xi:include xpointer="xpointer(/docs/configInfo[@name='features']/configFile[@name='features.conf']/configObject[@name='globals']/configOption[@name='pickupfailsound']/synopsis/text())" /></para></enum> <enum name="courtesytone"><para><xi:include xpointer="xpointer(/docs/configInfo[@name='features']/configFile[@name='features.conf']/configObject[@name='globals']/configOption[@name='courtesytone']/synopsis/text())" /></para></enum> <enum name="recordingfailsound"><para><xi:include xpointer="xpointer(/docs/configInfo[@name='features']/configFile[@name='features.conf']/configObject[@name='globals']/configOption[@name='recordingfailsound']/synopsis/text())" /></para></enum> + <enum name="transferdialattempts"><para><xi:include xpointer="xpointer(/docs/configInfo[@name='features']/configFile[@name='features.conf']/configObject[@name='globals']/configOption[@name='transferdialattempts']/synopsis/text())" /></para></enum> + <enum name="transferretrysound"><para><xi:include xpointer="xpointer(/docs/configInfo[@name='features']/configFile[@name='features.conf']/configObject[@name='globals']/configOption[@name='transferretrysound']/synopsis/text())" /></para></enum> + <enum name="transferinvalidsound"><para><xi:include xpointer="xpointer(/docs/configInfo[@name='features']/configFile[@name='features.conf']/configObject[@name='globals']/configOption[@name='transferinvalidsound']/synopsis/text())" /></para></enum> </enumlist> </parameter> </syntax> @@ -366,6 +378,9 @@ #define DEFAULT_ATXFER_COMPLETE "*2" #define DEFAULT_ATXFER_THREEWAY "*3" #define DEFAULT_ATXFER_SWAP "*4" +#define DEFAULT_TRANSFER_DIAL_ATTEMPTS 1 +#define DEFAULT_TRANSFER_RETRY_SOUND "pbx-invalid" +#define DEFAULT_TRANSFER_INVALID_SOUND "pbx-invalid" /*! Default pickup options */ #define DEFAULT_PICKUPEXTEN "*8" @@ -773,6 +788,7 @@ static void xfer_copy(struct ast_features_xfer_config *dest, const struct ast_fe dest->atxferloopdelay = src->atxferloopdelay; dest->atxfercallbackretries = src->atxfercallbackretries; dest->atxferdropcall = src->atxferdropcall; + dest->transferdialattempts = src->transferdialattempts; } static void pickup_copy(struct ast_features_pickup_config *dest, const struct ast_features_pickup_config *src) @@ -882,6 +898,12 @@ static int xfer_set(struct ast_features_xfer_config *xfer, const char *name, ast_string_field_set(xfer, atxferthreeway, value); } else if (!strcasecmp(name, "atxferswap")) { ast_string_field_set(xfer, atxferswap, value); + } else if (!strcasecmp(name, "transferdialattempts")) { + res = ast_parse_arg(value, PARSE_INT32, &xfer->transferdialattempts); + } else if (!strcasecmp(name, "transferretrysound")) { + ast_string_field_set(xfer, transferretrysound, value); + } else if (!strcasecmp(name, "transferinvalidsound")) { + ast_string_field_set(xfer, transferinvalidsound, value); } else { /* Unrecognized option */ res = -1; @@ -917,6 +939,12 @@ static int xfer_get(struct ast_features_xfer_config *xfer, const char *field, ast_copy_string(buf, xfer->atxferthreeway, len); } else if (!strcasecmp(field, "atxferswap")) { ast_copy_string(buf, xfer->atxferswap, len); + } else if (!strcasecmp(field, "transferdialattempts")) { + snprintf(buf, len, "%u", xfer->transferdialattempts); + } else if (!strcasecmp(field, "transferretrysound")) { + ast_copy_string(buf, xfer->transferretrysound, len); + } else if (!strcasecmp(field, "transferinvalidsound")) { + ast_copy_string(buf, xfer->transferinvalidsound, len); } else { /* Unrecognized option */ res = -1; @@ -1731,6 +1759,12 @@ static int load_config(void) DEFAULT_ATXFER_THREEWAY, xfer_handler, 0); aco_option_register_custom(&cfg_info, "atxferswap", ACO_EXACT, global_options, DEFAULT_ATXFER_SWAP, xfer_handler, 0); + aco_option_register_custom(&cfg_info, "transferdialattempts", ACO_EXACT, global_options, + __stringify(DEFAULT_TRANSFER_DIAL_ATTEMPTS), xfer_handler, 0); + aco_option_register_custom(&cfg_info, "transferretrysound", ACO_EXACT, global_options, + DEFAULT_TRANSFER_RETRY_SOUND, xfer_handler, 0); + aco_option_register_custom(&cfg_info, "transferinvalidsound", ACO_EXACT, global_options, + DEFAULT_TRANSFER_INVALID_SOUND, xfer_handler, 0); aco_option_register_custom(&cfg_info, "pickupexten", ACO_EXACT, global_options, DEFAULT_PICKUPEXTEN, pickup_handler, 0); |