diff options
author | anthm <anthm@f38db490-d61c-443f-a65b-d21fe96a405b> | 2005-01-05 21:00:20 +0000 |
---|---|---|
committer | anthm <anthm@f38db490-d61c-443f-a65b-d21fe96a405b> | 2005-01-05 21:00:20 +0000 |
commit | d64e0791c1dff4add0d4a4f70fde40a1b4aa76f1 (patch) | |
tree | 7b4bd8145d4e6acb27e42e83ab8efdca467db6af /res/res_features.c | |
parent | deb2725de83abe0712764f81efec19cc6d9be82d (diff) |
allow sounds to be configurable
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@4678 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'res/res_features.c')
-rwxr-xr-x | res/res_features.c | 47 |
1 files changed, 31 insertions, 16 deletions
diff --git a/res/res_features.c b/res/res_features.c index f1e58b5ec..040b5fa93 100755 --- a/res/res_features.c +++ b/res/res_features.c @@ -74,6 +74,11 @@ static int featuredigittimeout = DEFAULT_FEATURE_DIGIT_TIMEOUT; /* Default courtesy tone played when party joins conference */ static char courtesytone[256] = ""; +/* Default sounds */ +static char xfersound[256] = "beep"; +static char xferfailsound[256] = "beeperr"; + + /* Registrar for operations */ static char *registrar = "res_features"; @@ -491,7 +496,7 @@ static int builtin_blindtransfer(struct ast_channel *chan, struct ast_channel *p if (option_verbose > 2) ast_verbose(VERBOSE_PREFIX_3 "Unable to find extension '%s' in context '%s'\n", newext, transferer_real_context); } - res = ast_streamfile(transferer, "pbx-invalid", transferee->language); + res = ast_streamfile(transferer, xferfailsound, transferee->language); if (res) { ast_moh_stop(transferee); ast_autoservice_stop(transferee); @@ -578,9 +583,9 @@ static int builtin_atxfer(struct ast_channel *chan, struct ast_channel *peer, st ast_frfree(f); f = NULL; } - if (!ast_streamfile(transferer, "beep", transferer->language)) { + if (!ast_strlen_zero(xfersound) && !ast_streamfile(transferer, xfersound, transferer->language)) { if (ast_waitstream(transferer, "") < 0) { - ast_log(LOG_WARNING, "Failed to play courtesy tone!\n"); + ast_log(LOG_WARNING, "Failed to play %s\n", xfersound); } } ast_moh_stop(transferee); @@ -641,9 +646,9 @@ static int builtin_atxfer(struct ast_channel *chan, struct ast_channel *peer, st tobj->peer = newchan; tobj->bconfig = *config; - if (!ast_streamfile(newchan, "beep", newchan->language)) { + if (!ast_strlen_zero(xfersound) && !ast_streamfile(newchan, xfersound, newchan->language)) { if (ast_waitstream(newchan, "") < 0) { - ast_log(LOG_WARNING, "Failed to play courtesy tone!\n"); + ast_log(LOG_WARNING, "Failed to play %s!\n", xfersound); } } ast_bridge_call_thread_launch(tobj); @@ -658,9 +663,11 @@ static int builtin_atxfer(struct ast_channel *chan, struct ast_channel *peer, st ast_log(LOG_WARNING, "Unable to create channel Local/%s do you have chan_local?\n",dialstr); ast_moh_stop(transferee); ast_autoservice_stop(transferee); - res = ast_streamfile(transferer, "beeperr", transferer->language); - if (!res && (ast_waitstream(transferer, "") < 0)) { - return -1; + if(!ast_strlen_zero(xferfailsound)) { + res = ast_streamfile(transferer, xferfailsound, transferer->language); + if (!res && (ast_waitstream(transferer, "") < 0)) { + return -1; + } } return -1; } @@ -668,16 +675,20 @@ static int builtin_atxfer(struct ast_channel *chan, struct ast_channel *peer, st ast_log(LOG_WARNING, "Extension %s does not exist in context %s\n",xferto,transferer_real_context); ast_moh_stop(transferee); ast_autoservice_stop(transferee); - res = ast_streamfile(transferer, "beeperr", transferer->language); - if (!res && (ast_waitstream(transferer, "") < 0)) { - return -1; + if(!ast_strlen_zero(xferfailsound)) { + res = ast_streamfile(transferer, xferfailsound, transferer->language); + if (!res && (ast_waitstream(transferer, "") < 0)) { + return -1; + } } } } else { ast_log(LOG_WARNING, "Did not read data.\n"); - res = ast_streamfile(transferer, "beeperr", transferer->language); - if (ast_waitstream(transferer, "") < 0) { - return -1; + if(!ast_strlen_zero(xferfailsound)) { + res = ast_streamfile(transferer, xferfailsound, transferer->language); + if (ast_waitstream(transferer, "") < 0) { + return -1; + } } } ast_moh_stop(transferee); @@ -1402,9 +1413,13 @@ int load_module(void) featuredigittimeout = DEFAULT_FEATURE_DIGIT_TIMEOUT; } } else if (!strcasecmp(var->name, "courtesytone")) { - strncpy(courtesytone, var->value, sizeof(courtesytone) - 1); + strncpy(courtesytone, strcmp(var->value, "undef") ? var->value : "", sizeof(courtesytone) - 1); + } else if (!strcasecmp(var->name, "xfersound")) { + strncpy(xfersound, strcmp(var->value, "undef") ? var->value : "", sizeof(xfersound) - 1); + } else if (!strcasecmp(var->name, "xferfailsound")) { + strncpy(xferfailsound, strcmp(var->value, "undef") ? var->value : "", sizeof(xferfailsound) - 1); } else if (!strcasecmp(var->name, "pickupexten")) { - strncpy(pickup_ext, var->value, sizeof(pickup_ext) - 1); + strncpy(pickup_ext, strcmp(var->value, "undef") ? var->value : "", sizeof(pickup_ext) - 1); } var = var->next; } |