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;