diff --git a/configs/features.conf.sample b/configs/features.conf.sample index b5cf5ff2adfed45173047e2c1a02dfa1b046e0b2..b5d8399b079cce056f461f6227cc853129eeb940 100755 --- a/configs/features.conf.sample +++ b/configs/features.conf.sample @@ -12,7 +12,7 @@ context => parkedcalls ; Which context parked calls are in ;courtesytone = beep ; Sound file to play to the parked caller ; when someone dials a parked call ;xfersound = beep ; to indicate an attended transfer is complete -;xferfailsound ; to indicate a failed transfer +;xferfailsound = beeperr ; to indicate a failed transfer ;adsipark = yes ; if you want ADSI parking announcements ;pickupexten = *8 ; Configure the pickup extension. Default is *8 ;featuredigittimeout = 500 ; Max time (ms) between digits for diff --git a/res/res_features.c b/res/res_features.c index 040b5fa93143bf949bf0e008647a5be64101a67d..ea911b93348f1c4332e2719a55c85d59b886e27a 100755 --- a/res/res_features.c +++ b/res/res_features.c @@ -60,6 +60,11 @@ static char parking_ext[AST_MAX_EXTENSION] = "700"; static char pickup_ext[AST_MAX_EXTENSION] = "*8"; +/* Default sounds */ +static char courtesytone[256] = ""; +static char xfersound[256] = "beep"; +static char xferfailsound[256] = "pbx-invalid"; + /* First available extension for parking */ static int parking_start = 701; @@ -72,12 +77,6 @@ static int transferdigittimeout = DEFAULT_TRANSFER_DIGIT_TIMEOUT; 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"; @@ -496,7 +495,10 @@ 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, xferfailsound, transferee->language); + if (!ast_strlen_zero(xferfailsound)) + res = ast_streamfile(transferer, xferfailsound, transferee->language); + else + res = 0; if (res) { ast_moh_stop(transferee); ast_autoservice_stop(transferee); @@ -585,7 +587,7 @@ static int builtin_atxfer(struct ast_channel *chan, struct ast_channel *peer, st } if (!ast_strlen_zero(xfersound) && !ast_streamfile(transferer, xfersound, transferer->language)) { if (ast_waitstream(transferer, "") < 0) { - ast_log(LOG_WARNING, "Failed to play %s\n", xfersound); + ast_log(LOG_WARNING, "Failed to play courtesy tone!\n"); } } ast_moh_stop(transferee); @@ -648,7 +650,7 @@ static int builtin_atxfer(struct ast_channel *chan, struct ast_channel *peer, st if (!ast_strlen_zero(xfersound) && !ast_streamfile(newchan, xfersound, newchan->language)) { if (ast_waitstream(newchan, "") < 0) { - ast_log(LOG_WARNING, "Failed to play %s!\n", xfersound); + ast_log(LOG_WARNING, "Failed to play courtesy tone!\n"); } } ast_bridge_call_thread_launch(tobj); @@ -663,7 +665,7 @@ 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); - if(!ast_strlen_zero(xferfailsound)) { + if (!ast_strlen_zero(xferfailsound)) { res = ast_streamfile(transferer, xferfailsound, transferer->language); if (!res && (ast_waitstream(transferer, "") < 0)) { return -1; @@ -675,20 +677,16 @@ 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); - if(!ast_strlen_zero(xferfailsound)) { - res = ast_streamfile(transferer, xferfailsound, transferer->language); - if (!res && (ast_waitstream(transferer, "") < 0)) { - return -1; - } + res = ast_streamfile(transferer, "beeperr", transferer->language); + if (!res && (ast_waitstream(transferer, "") < 0)) { + return -1; } } } else { ast_log(LOG_WARNING, "Did not read data.\n"); - if(!ast_strlen_zero(xferfailsound)) { - res = ast_streamfile(transferer, xferfailsound, transferer->language); - if (ast_waitstream(transferer, "") < 0) { - return -1; - } + res = ast_streamfile(transferer, "beeperr", transferer->language); + if (ast_waitstream(transferer, "") < 0) { + return -1; } } ast_moh_stop(transferee); @@ -1413,13 +1411,13 @@ int load_module(void) featuredigittimeout = DEFAULT_FEATURE_DIGIT_TIMEOUT; } } else if (!strcasecmp(var->name, "courtesytone")) { - strncpy(courtesytone, strcmp(var->value, "undef") ? var->value : "", sizeof(courtesytone) - 1); + strncpy(courtesytone, var->value, sizeof(courtesytone) - 1); } else if (!strcasecmp(var->name, "xfersound")) { - strncpy(xfersound, strcmp(var->value, "undef") ? var->value : "", sizeof(xfersound) - 1); + strncpy(xfersound, var->value, sizeof(xfersound) - 1); } else if (!strcasecmp(var->name, "xferfailsound")) { - strncpy(xferfailsound, strcmp(var->value, "undef") ? var->value : "", sizeof(xferfailsound) - 1); + strncpy(xferfailsound, var->value, sizeof(xferfailsound) - 1); } else if (!strcasecmp(var->name, "pickupexten")) { - strncpy(pickup_ext, strcmp(var->value, "undef") ? var->value : "", sizeof(pickup_ext) - 1); + strncpy(pickup_ext, var->value, sizeof(pickup_ext) - 1); } var = var->next; }