From: Jonathan Rose Date: Fri, 15 Nov 2013 22:38:52 +0000 (+0000) Subject: Confbridge: Add option to review the recording similar to announce_join_leave X-Git-Tag: 13.0.0-beta1~832 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7950118e1895883cfb44d7aacff013d2f759920b;p=thirdparty%2Fasterisk.git Confbridge: Add option to review the recording similar to announce_join_leave Review: https://reviewboard.asterisk.org/r/3008/ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@402854 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/CHANGES b/CHANGES index f2bd97e738..c6166894b6 100644 --- a/CHANGES +++ b/CHANGES @@ -21,6 +21,11 @@ ConfBridge menus, bridge settings, and user settings that have been applied by the CONFBRIDGE dialplan function. + * Added conference user option 'announce_join_leave_review'. This option + implies 'announce_join_leave' with the added effect that the user will + be asked if they want to confirm or re-record the recording of their + name when entering the conference + Say -------------------------- * If a channel variable SAY_DTMF_INTERRUPT is present on a channel and set diff --git a/apps/app_confbridge.c b/apps/app_confbridge.c index 52cb04d150..8347bc6edd 100644 --- a/apps/app_confbridge.c +++ b/apps/app_confbridge.c @@ -1508,16 +1508,26 @@ static int conf_rec_name(struct confbridge_user *user, const char *conf_name) "%s/confbridge-name-%s-%s", destdir, conf_name, ast_channel_uniqueid(user->chan)); - res = ast_play_and_record(user->chan, - "vm-rec-name", - user->name_rec_location, - 10, - "sln", - &duration, - NULL, - ast_dsp_get_threshold_from_settings(THRESHOLD_SILENCE), - 0, - NULL); + if (!(ast_test_flag(&user->u_profile, USER_OPT_ANNOUNCE_JOIN_LEAVE_REVIEW))) { + res = ast_play_and_record(user->chan, + "vm-rec-name", + user->name_rec_location, + 10, + "sln", + &duration, + NULL, + ast_dsp_get_threshold_from_settings(THRESHOLD_SILENCE), + 0, + NULL); + } else { + res = ast_record_review(user->chan, + "vm-rec-name", + user->name_rec_location, + 10, + "sln", + &duration, + NULL); + } if (res == -1) { user->name_rec_location[0] = '\0'; @@ -1603,7 +1613,9 @@ static int confbridge_exec(struct ast_channel *chan, const char *data) } /* See if we need them to record a intro name */ - if (!quiet && ast_test_flag(&user.u_profile, USER_OPT_ANNOUNCE_JOIN_LEAVE)) { + if (!quiet && + (ast_test_flag(&user.u_profile, USER_OPT_ANNOUNCE_JOIN_LEAVE) || + (ast_test_flag(&user.u_profile, USER_OPT_ANNOUNCE_JOIN_LEAVE_REVIEW)))) { conf_rec_name(&user, args.conf_name); } diff --git a/apps/confbridge/conf_config_parser.c b/apps/confbridge/conf_config_parser.c index e7a18739cc..ec5b0e6182 100644 --- a/apps/confbridge/conf_config_parser.c +++ b/apps/confbridge/conf_config_parser.c @@ -110,6 +110,10 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") Prompt user for their name when joining a conference and play it to the conference when they enter + + Prompt user for their name when joining a conference and play it to the conference when they enter. + The user will be asked to review the recording of their name before entering the conference. + Sets a PIN the user must enter before joining the conference @@ -1384,8 +1388,9 @@ static char *handle_cli_confbridge_show_user_profile(struct ast_cli_entry *e, in u_profile.flags & USER_OPT_ANNOUNCEUSERCOUNT ? "enabled" : "disabled"); ast_cli(a->fd,"Announce join/leave: %s\n", - u_profile.flags & USER_OPT_ANNOUNCE_JOIN_LEAVE ? - "enabled" : "disabled"); + u_profile.flags & (USER_OPT_ANNOUNCE_JOIN_LEAVE | USER_OPT_ANNOUNCE_JOIN_LEAVE_REVIEW) ? + u_profile.flags & USER_OPT_ANNOUNCE_JOIN_LEAVE_REVIEW ? + "enabled (with review)" : "enabled" : "disabled"); ast_cli(a->fd,"Announce User Count all: %s\n", u_profile.flags & USER_OPT_ANNOUNCEUSERCOUNTALL ? "enabled" : "disabled"); @@ -2054,6 +2059,7 @@ int conf_load_config(void) aco_option_register(&cfg_info, "talk_detection_events", ACO_EXACT, user_types, "no", OPT_BOOLFLAG_T, 1, FLDSET(struct user_profile, flags), USER_OPT_TALKER_DETECT); aco_option_register(&cfg_info, "dtmf_passthrough", ACO_EXACT, user_types, "no", OPT_BOOLFLAG_T, 1, FLDSET(struct user_profile, flags), USER_OPT_DTMF_PASS); aco_option_register(&cfg_info, "announce_join_leave", ACO_EXACT, user_types, "no", OPT_BOOLFLAG_T, 1, FLDSET(struct user_profile, flags), USER_OPT_ANNOUNCE_JOIN_LEAVE); + aco_option_register(&cfg_info, "announce_join_leave_review", ACO_EXACT, user_types, "no", OPT_BOOLFLAG_T, 1, FLDSET(struct user_profile, flags), USER_OPT_ANNOUNCE_JOIN_LEAVE_REVIEW); aco_option_register(&cfg_info, "pin", ACO_EXACT, user_types, NULL, OPT_CHAR_ARRAY_T, 0, CHARFLDSET(struct user_profile, pin)); aco_option_register(&cfg_info, "music_on_hold_class", ACO_EXACT, user_types, NULL, OPT_CHAR_ARRAY_T, 0, CHARFLDSET(struct user_profile, moh_class)); aco_option_register(&cfg_info, "announcement", ACO_EXACT, user_types, NULL, OPT_CHAR_ARRAY_T, 0, CHARFLDSET(struct user_profile, announcement)); diff --git a/apps/confbridge/include/confbridge.h b/apps/confbridge/include/confbridge.h index 1efefea0b4..e3e3642eed 100644 --- a/apps/confbridge/include/confbridge.h +++ b/apps/confbridge/include/confbridge.h @@ -59,6 +59,7 @@ enum user_profile_flags { USER_OPT_DTMF_PASS = (1 << 13), /*!< Sets if dtmf should be passed into the conference or not */ USER_OPT_ANNOUNCEUSERCOUNTALL = (1 << 14), /*!< Sets if the number of users should be announced to everyone. */ USER_OPT_JITTERBUFFER = (1 << 15), /*!< Places a jitterbuffer on the user. */ + USER_OPT_ANNOUNCE_JOIN_LEAVE_REVIEW = (1 << 16), /*!< modifies ANNOUNCE_JOIN_LEAVE - user reviews the recording before continuing */ }; enum bridge_profile_flags { diff --git a/configs/confbridge.conf.sample b/configs/confbridge.conf.sample index 94739a6fe5..4f7c6e5522 100644 --- a/configs/confbridge.conf.sample +++ b/configs/confbridge.conf.sample @@ -128,6 +128,11 @@ type=user ; name when entering the conference. After the name is ; recorded, it will be played as the user enters and exists ; the conference. This option is off by default. +;announce_join_leave_review=yes ; When enabled, implies announce_join_leave, but the user + ; will be prompted to review their recording before + ; entering the conference. During this phase, the recording + ; may be listened to, re-recorded, or accepted as is. This + ; option is off by default. ;dtmf_passthrough=yes ; Sets whether or not DTMF should pass through the conference. ; This option is off by default. ;announcement= ; Play a sound file to the user when they join the conference.