[Asterisk-code-review] apps/confbridge: Added hear_own_join_sound option to control who hear... (asterisk[master])
Kevin Harwell
asteriskteam at digium.com
Mon May 2 15:45:33 CDT 2022
Kevin Harwell has submitted this change. ( https://gerrit.asterisk.org/c/asterisk/+/18500 )
Change subject: apps/confbridge: Added hear_own_join_sound option to control who hears sound_join
......................................................................
apps/confbridge: Added hear_own_join_sound option to control who hears sound_join
Added the hear_own_join_sound option to the confbridge user profile to
control who hears the sound_join audio file. When set to 'yes' the user
entering the conference and the participants already in the conference
will hear the sound_join audio file. When set to 'no' the user entering
the conference will not hear the sound_join audio file, but the
participants already in the conference will hear the sound_join audio
file.
ASTERISK-29931
Added by Michael Cargile
Change-Id: I856bd66dc0dfa057323860a6418c1371d249abd2
---
M apps/app_confbridge.c
M apps/confbridge/conf_config_parser.c
M apps/confbridge/include/confbridge.h
M configs/samples/confbridge.conf.sample
A doc/CHANGES-staging/app_confbridge_hear_join.txt
5 files changed, 34 insertions(+), 5 deletions(-)
Approvals:
Kevin Harwell: Looks good to me, but someone else must approve; Approved for Submit
George Joseph: Looks good to me, approved
diff --git a/apps/app_confbridge.c b/apps/app_confbridge.c
index d811d64..d365075 100644
--- a/apps/app_confbridge.c
+++ b/apps/app_confbridge.c
@@ -2725,17 +2725,24 @@
ast_autoservice_stop(chan);
}
- /* Play the Join sound to both the conference and the user entering. */
if (!quiet) {
const char *join_sound = conf_get_sound(CONF_SOUND_JOIN, conference->b_profile.sounds);
- if (strcmp(conference->b_profile.language, ast_channel_language(chan))) {
- ast_stream_and_wait(chan, join_sound, "");
+ /* if hear_own_join_sound is enabled play the Join sound to everyone */
+ if (ast_test_flag(&user.u_profile, USER_OPT_HEAR_OWN_JOIN_SOUND) ) {
+ if (strcmp(conference->b_profile.language, ast_channel_language(chan))) {
+ ast_stream_and_wait(chan, join_sound, "");
+ ast_autoservice_start(chan);
+ play_sound_file(conference, join_sound);
+ ast_autoservice_stop(chan);
+ } else {
+ async_play_sound_file(conference, join_sound, chan);
+ }
+ /* if hear_own_join_sound is disabled only play the Join sound to just the conference */
+ } else {
ast_autoservice_start(chan);
play_sound_file(conference, join_sound);
ast_autoservice_stop(chan);
- } else {
- async_play_sound_file(conference, join_sound, chan);
}
}
diff --git a/apps/confbridge/conf_config_parser.c b/apps/confbridge/conf_config_parser.c
index 4f58c18..b27adf2 100644
--- a/apps/confbridge/conf_config_parser.c
+++ b/apps/confbridge/conf_config_parser.c
@@ -97,6 +97,9 @@
<configOption name="quiet">
<synopsis>Silence enter/leave prompts and user intros for this user</synopsis>
</configOption>
+ <configOption name="hear_own_join_sound">
+ <synopsis>Determines if the user also hears the join sound when they enter a conference</synopsis>
+ </configOption>
<configOption name="announce_user_count">
<synopsis>Sets if the number of users should be announced to the user</synopsis>
</configOption>
@@ -1574,6 +1577,9 @@
ast_cli(a->fd,"Quiet: %s\n",
u_profile.flags & USER_OPT_QUIET ?
"enabled" : "disabled");
+ ast_cli(a->fd,"Hear Join: %s\n",
+ u_profile.flags & USER_OPT_HEAR_OWN_JOIN_SOUND ?
+ "enabled" : "disabled");
ast_cli(a->fd,"Wait Marked: %s\n",
u_profile.flags & USER_OPT_WAITMARKED ?
"enabled" : "disabled");
@@ -2396,6 +2402,7 @@
aco_option_register(&cfg_info, "startmuted", ACO_EXACT, user_types, "no", OPT_BOOLFLAG_T, 1, FLDSET(struct user_profile, flags), USER_OPT_STARTMUTED);
aco_option_register(&cfg_info, "music_on_hold_when_empty", ACO_EXACT, user_types, "no", OPT_BOOLFLAG_T, 1, FLDSET(struct user_profile, flags), USER_OPT_MUSICONHOLD);
aco_option_register(&cfg_info, "quiet", ACO_EXACT, user_types, "no", OPT_BOOLFLAG_T, 1, FLDSET(struct user_profile, flags), USER_OPT_QUIET);
+ aco_option_register(&cfg_info, "hear_own_join_sound", ACO_EXACT, user_types, "yes", OPT_BOOLFLAG_T, 1, FLDSET(struct user_profile, flags), USER_OPT_HEAR_OWN_JOIN_SOUND);
aco_option_register_custom(&cfg_info, "announce_user_count_all", ACO_EXACT, user_types, "no", announce_user_count_all_handler, 0);
aco_option_register(&cfg_info, "announce_user_count", ACO_EXACT, user_types, "no", OPT_BOOLFLAG_T, 1, FLDSET(struct user_profile, flags), USER_OPT_ANNOUNCEUSERCOUNT);
/* Negative logic. Defaults to "yes" and evaluates with ast_false(). If !ast_false(), USER_OPT_NOONLYPERSON is cleared */
diff --git a/apps/confbridge/include/confbridge.h b/apps/confbridge/include/confbridge.h
index 95a0732..f90f185 100644
--- a/apps/confbridge/include/confbridge.h
+++ b/apps/confbridge/include/confbridge.h
@@ -70,6 +70,7 @@
USER_OPT_ECHO_EVENTS = (1 << 18), /*!< Send events only to the admin(s) */
USER_OPT_TEXT_MESSAGING = (1 << 19), /*!< Send text messages to the user */
USER_OPT_ANSWER_CHANNEL = (1 << 20), /*!< Sets if the channel should be answered if currently unanswered */
+ USER_OPT_HEAR_OWN_JOIN_SOUND = (1 << 21), /*!< Set if the caller should hear the join sound */
};
enum bridge_profile_flags {
diff --git a/configs/samples/confbridge.conf.sample b/configs/samples/confbridge.conf.sample
index eecbb65..ed4c72b 100644
--- a/configs/samples/confbridge.conf.sample
+++ b/configs/samples/confbridge.conf.sample
@@ -41,6 +41,12 @@
; There are some prompts, such as the prompt to enter a PIN number,
; that must be played regardless of what this option is set to.
; Off by default
+;hear_own_join_sound=yes ; Sets if a user joining the conference should hear the sound_join
+ ; audio sound when they enter the conference. If set to 'no' the
+ ; user will not hear the sound_join audio but the other participants
+ ; in the conference will still hear the audio. If set to 'yes'
+ ; everyone hears the sound_join audio when this user enters the conference.
+ ; On by default
;announce_user_count=yes ; Sets if the number of users should be announced to the
; caller. Off by default.
;announce_user_count_all=yes ; Sets if the number of users should be announced to
diff --git a/doc/CHANGES-staging/app_confbridge_hear_join.txt b/doc/CHANGES-staging/app_confbridge_hear_join.txt
new file mode 100644
index 0000000..40f2383
--- /dev/null
+++ b/doc/CHANGES-staging/app_confbridge_hear_join.txt
@@ -0,0 +1,8 @@
+Subject: app_confbridge
+
+Added the hear_own_join_sound option to the confbridge user profile to
+control who hears the sound_join audio file. When set to 'yes' the user
+entering the conference and the participants already in the conference
+will hear the sound_join audio file. When set to 'no' the user entering
+the conference will not hear the sound_join audio file, but the
+participants already in the conference will hear the sound_join audio file.
--
To view, visit https://gerrit.asterisk.org/c/asterisk/+/18500
To unsubscribe, or for help writing mail filters, visit https://gerrit.asterisk.org/settings
Gerrit-Project: asterisk
Gerrit-Branch: master
Gerrit-Change-Id: I856bd66dc0dfa057323860a6418c1371d249abd2
Gerrit-Change-Number: 18500
Gerrit-PatchSet: 2
Gerrit-Owner: Michael Cargile <mikec at vicidial.com>
Gerrit-Reviewer: Friendly Automation
Gerrit-Reviewer: George Joseph <gjoseph at digium.com>
Gerrit-Reviewer: Kevin Harwell <kharwell at digium.com>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-code-review/attachments/20220502/ed8b4286/attachment-0001.html>
More information about the asterisk-code-review
mailing list