diff --git a/conf/insideout/autoload_configs/conference.conf.xml b/conf/insideout/autoload_configs/conference.conf.xml
index 75a12c78fd..ce82169c99 100644
--- a/conf/insideout/autoload_configs/conference.conf.xml
+++ b/conf/insideout/autoload_configs/conference.conf.xml
@@ -63,6 +63,8 @@
+
+
@@ -110,6 +112,7 @@
+
@@ -135,6 +138,7 @@
+
@@ -160,6 +164,7 @@
+
diff --git a/conf/testing/autoload_configs/conference.conf.xml b/conf/testing/autoload_configs/conference.conf.xml
index 7e8b728865..5a01927a6f 100644
--- a/conf/testing/autoload_configs/conference.conf.xml
+++ b/conf/testing/autoload_configs/conference.conf.xml
@@ -93,6 +93,8 @@
+
+
@@ -156,6 +158,7 @@
+
@@ -181,6 +184,7 @@
+
@@ -220,6 +224,7 @@
+
@@ -258,6 +263,7 @@
+
@@ -293,6 +299,7 @@
+
@@ -325,6 +332,7 @@
+
@@ -358,6 +366,7 @@
+
@@ -391,6 +400,7 @@
+
@@ -423,6 +433,7 @@
+
@@ -456,6 +467,7 @@
+
diff --git a/conf/vanilla/autoload_configs/conference.conf.xml b/conf/vanilla/autoload_configs/conference.conf.xml
index b927d9b883..21d38edf8b 100644
--- a/conf/vanilla/autoload_configs/conference.conf.xml
+++ b/conf/vanilla/autoload_configs/conference.conf.xml
@@ -74,6 +74,8 @@
+
+
@@ -137,6 +139,7 @@
+
@@ -162,6 +165,7 @@
+
@@ -201,6 +205,7 @@
+
@@ -238,6 +243,7 @@
+
@@ -274,6 +280,7 @@
+
@@ -309,6 +316,7 @@
+
@@ -344,6 +352,7 @@
+
diff --git a/src/mod/applications/mod_conference/conf/autoload_configs/conference.conf.xml b/src/mod/applications/mod_conference/conf/autoload_configs/conference.conf.xml
index 7b9349fd09..b21763aaea 100644
--- a/src/mod/applications/mod_conference/conf/autoload_configs/conference.conf.xml
+++ b/src/mod/applications/mod_conference/conf/autoload_configs/conference.conf.xml
@@ -80,6 +80,8 @@
+
+
@@ -143,6 +145,7 @@
+
@@ -168,6 +171,7 @@
+
@@ -193,6 +197,7 @@
+
diff --git a/src/mod/applications/mod_conference/conference_member.c b/src/mod/applications/mod_conference/conference_member.c
index c258e59783..786118f0b6 100644
--- a/src/mod/applications/mod_conference/conference_member.c
+++ b/src/mod/applications/mod_conference/conference_member.c
@@ -938,13 +938,17 @@ switch_status_t conference_member_add(conference_obj_t *conference, conference_m
if (conference->count >= conference->announce_count && conference->announce_count > 1) {
switch_snprintf(msg, sizeof(msg), "There are %d callers", conference->count);
conference_member_say(member, msg, CONF_DEFAULT_LEADIN);
- } else if (conference->count == 1 && !conference->perpetual_sound && !conference_utils_test_flag(conference, CFLAG_WAIT_MOD)) {
+ } else if (conference->count == 1 && !conference->perpetual_sound) {
/* as long as its not a bridge_to conference, announce if person is alone */
if (!conference_utils_test_flag(conference, CFLAG_BRIDGE_TO)) {
- if (conference->alone_sound && !conference_utils_member_test_flag(member, MFLAG_GHOST)) {
+ if (conference->alone_sound && !conference_utils_test_flag(conference, CFLAG_WAIT_MOD) && !conference_utils_member_test_flag(member, MFLAG_GHOST)) {
conference_file_stop(conference, FILE_STOP_ASYNC);
conference_file_play(conference, conference->alone_sound, CONF_DEFAULT_LEADIN,
switch_core_session_get_channel(member->session), 0);
+ } else if (conference->waiting_sound && conference_utils_test_flag(conference, CFLAG_WAIT_MOD) && !conference_utils_member_test_flag(member, MFLAG_GHOST)) {
+ conference_file_stop(conference, FILE_STOP_ASYNC);
+ conference_file_play(conference, conference->waiting_sound, CONF_DEFAULT_LEADIN,
+ switch_core_session_get_channel(member->session), 0);
} else {
switch_snprintf(msg, sizeof(msg), "You are currently the only person in this conference.");
conference_member_say(member, msg, CONF_DEFAULT_LEADIN);
diff --git a/src/mod/applications/mod_conference/mod_conference.c b/src/mod/applications/mod_conference/mod_conference.c
index aa606170d5..9f7c3b22f3 100644
--- a/src/mod/applications/mod_conference/mod_conference.c
+++ b/src/mod/applications/mod_conference/mod_conference.c
@@ -2729,6 +2729,7 @@ conference_obj_t *conference_new(char *name, conference_xml_cfg_t cfg, switch_co
char *sound_prefix = NULL;
char *exit_sound = NULL;
char *alone_sound = NULL;
+ char *waiting_sound = NULL;
char *muted_sound = NULL;
char *mute_detect_sound = NULL;
char *unmuted_sound = NULL;
@@ -2982,6 +2983,8 @@ conference_obj_t *conference_new(char *name, conference_xml_cfg_t cfg, switch_co
exit_sound = val;
} else if (!strcasecmp(var, "alone-sound") && !zstr(val)) {
alone_sound = val;
+ } else if (!strcasecmp(var, "waiting-sound") && !zstr(val)) {
+ waiting_sound = val;
} else if (!strcasecmp(var, "perpetual-sound") && !zstr(val)) {
perpetual_sound = val;
} else if (!strcasecmp(var, "moh-sound") && !zstr(val)) {
@@ -3526,6 +3529,9 @@ conference_obj_t *conference_new(char *name, conference_xml_cfg_t cfg, switch_co
if (!zstr(alone_sound)) {
conference->alone_sound = switch_core_strdup(conference->pool, alone_sound);
}
+ if (!zstr(waiting_sound)) {
+ conference->waiting_sound = switch_core_strdup(conference->pool, waiting_sound);
+ }
if (!zstr(locked_sound)) {
conference->locked_sound = switch_core_strdup(conference->pool, locked_sound);
diff --git a/src/mod/applications/mod_conference/mod_conference.h b/src/mod/applications/mod_conference/mod_conference.h
index e45a921c21..af79ef5baf 100644
--- a/src/mod/applications/mod_conference/mod_conference.h
+++ b/src/mod/applications/mod_conference/mod_conference.h
@@ -609,6 +609,7 @@ typedef struct conference_obj {
char *enter_sound;
char *exit_sound;
char *alone_sound;
+ char *waiting_sound;
char *perpetual_sound;
char *moh_sound;
char *tmp_moh_sound;