diff --git a/CHANGES b/CHANGES index c032471d0e9bb5a0560c9e08555194b6d507667a..6cdf26b35cdd57d8b3baa8b2f68f6885aa34ece5 100644 --- a/CHANGES +++ b/CHANGES @@ -112,6 +112,7 @@ Application Changes status variable SENDIMAGESTATUS to one of 'SUCCESS', 'FAILURE', or 'UNSUPPORTED'. This change makes SendImage() more consistent with other applications. + * Park has a new option, 's', which silences the announcement of the parking space number. SIP Changes ----------- diff --git a/main/features.c b/main/features.c index 9d228acc2f6cd10c046aec22ef42c3c4e8f1cec1..6aa717aec38b45b129e9d59ed037e117044cc5fc 100644 --- a/main/features.c +++ b/main/features.c @@ -182,6 +182,7 @@ static char *descrip2 = " options - A list of options for this parked call. Valid options are:\n" " 'r' - Send ringing instead of MOH to the parked call.\n" " 'R' - Randomize the selection of a parking space.\n" +" 's' - Silence announcement of the parking space number.\n" ""; static struct ast_app *monitor_app = NULL; @@ -431,6 +432,8 @@ enum ast_park_call_options { /*! Randomly choose a parking spot for the caller instead of choosing * the first one that is available. */ AST_PARK_OPT_RANDOMIZE = (1 << 1), + /*! Do not announce the parking number */ + AST_PARK_OPT_SILENCE = (1 << 2), }; struct ast_park_call_args { @@ -625,7 +628,7 @@ static int ast_park_call_full(struct ast_channel *chan, struct ast_channel *peer if (!con) /* Still no context? Bad */ ast_log(LOG_ERROR, "Parking context '%s' does not exist and unable to create\n", parkinglot->parking_con); /* Tell the peer channel the number of the parking space */ - if (peer && (ast_strlen_zero(args->orig_chan_name) || !strcasecmp(peer->name, args->orig_chan_name))) { /* Only say number if it's a number and the channel hasn't been masqueraded away */ + if (peer && !ast_test_flag(args, AST_PARK_OPT_SILENCE) && (ast_strlen_zero(args->orig_chan_name) || !strcasecmp(peer->name, args->orig_chan_name))) { /* Only say number if it's a number and the channel hasn't been masqueraded away */ /* If a channel is masqueraded into peer while playing back the parking slot number do not continue playing it back. This is the case if an attended transfer occurs. */ ast_set_flag(peer, AST_FLAG_MASQ_NOSTREAM); ast_say_digits(peer, pu->parkingnum, "", peer->language); @@ -2602,6 +2605,7 @@ struct ast_parkinglot *find_parkinglot(const char *name) AST_APP_OPTIONS(park_call_options, BEGIN_OPTIONS AST_APP_OPTION('r', AST_PARK_OPT_RINGING), AST_APP_OPTION('R', AST_PARK_OPT_RANDOMIZE), + AST_APP_OPTION('s', AST_PARK_OPT_SILENCE), END_OPTIONS ); /*! \brief Park a call */ @@ -2670,7 +2674,7 @@ static int park_call_exec(struct ast_channel *chan, void *data) } } - ast_app_parse_options(park_call_options, &flags, NULL, NULL); + ast_app_parse_options(park_call_options, &flags, NULL, app_args.options); args.flags = flags.flags; res = ast_park_call_full(chan, chan, &args);