Merge pull request #961 in FS/freeswitch from ~LAZEDO/freeswitch:feature/FS-9526 to master

* commit 'e76350df42bd31180147180bebcf72f2dd588b9a':
  FS-9526 [mod_conference] add deaf sounds
This commit is contained in:
Mike Jerris 2016-09-19 17:53:13 -05:00
commit fca259d13c
4 changed files with 42 additions and 0 deletions

View File

@ -563,6 +563,11 @@ switch_status_t conference_api_sub_deaf(conference_member_t *member, switch_stre
return SWITCH_STATUS_GENERR;
conference_utils_member_clear_flag_locked(member, MFLAG_CAN_HEAR);
if (!(data) || !strstr((char *) data, "quiet")) {
conference_utils_member_set_flag(member, MFLAG_INDICATE_DEAF);
}
if (stream != NULL) {
stream->write_function(stream, "OK deaf %u\n", member->id);
}
@ -587,6 +592,11 @@ switch_status_t conference_api_sub_undeaf(conference_member_t *member, switch_st
return SWITCH_STATUS_GENERR;
conference_utils_member_set_flag_locked(member, MFLAG_CAN_HEAR);
if (!(data) || !strstr((char *) data, "quiet")) {
conference_utils_member_set_flag(member, MFLAG_INDICATE_UNDEAF);
}
if (stream != NULL) {
stream->write_function(stream, "OK undeaf %u\n", member->id);
}

View File

@ -1401,6 +1401,20 @@ void conference_loop_output(conference_member_t *member)
conference_utils_member_clear_flag(member, MFLAG_INDICATE_UNMUTE);
}
if (conference_utils_member_test_flag(member, MFLAG_INDICATE_DEAF)) {
if (!zstr(member->conference->deaf_sound)) {
conference_member_play_file(member, member->conference->deaf_sound, 0, SWITCH_TRUE);
}
conference_utils_member_clear_flag(member, MFLAG_INDICATE_DEAF);
}
if (conference_utils_member_test_flag(member, MFLAG_INDICATE_UNDEAF)) {
if (!zstr(member->conference->undeaf_sound)) {
conference_member_play_file(member, member->conference->undeaf_sound, 0, SWITCH_TRUE);
}
conference_utils_member_clear_flag(member, MFLAG_INDICATE_UNDEAF);
}
if (switch_core_session_private_event_count(member->session)) {
switch_channel_set_app_flag(channel, CF_APP_TAGGED);
switch_ivr_parse_all_events(member->session);

View File

@ -2379,6 +2379,8 @@ conference_obj_t *conference_new(char *name, conference_xml_cfg_t cfg, switch_co
char *is_unlocked_sound = NULL;
char *kicked_sound = NULL;
char *join_only_sound = NULL;
char *deaf_sound = NULL;
char *undeaf_sound = NULL;
char *pin = NULL;
char *mpin = NULL;
char *pin_sound = NULL;
@ -2616,6 +2618,10 @@ conference_obj_t *conference_new(char *name, conference_xml_cfg_t cfg, switch_co
is_locked_sound = val;
} else if (!strcasecmp(var, "is-unlocked-sound") && !zstr(val)) {
is_unlocked_sound = val;
} else if (!strcasecmp(var, "deaf-sound") && !zstr(val)) {
deaf_sound = val;
} else if (!strcasecmp(var, "undeaf-sound") && !zstr(val)) {
undeaf_sound = val;
} else if (!strcasecmp(var, "member-flags") && !zstr(val)) {
member_flags = val;
} else if (!strcasecmp(var, "conference-flags") && !zstr(val)) {
@ -3076,6 +3082,14 @@ conference_obj_t *conference_new(char *name, conference_xml_cfg_t cfg, switch_co
conference->bad_pin_sound = switch_core_strdup(conference->pool, bad_pin_sound);
}
if (!zstr(deaf_sound)) {
conference->deaf_sound = switch_core_strdup(conference->pool, deaf_sound);
}
if (!zstr(undeaf_sound)) {
conference->undeaf_sound = switch_core_strdup(conference->pool, undeaf_sound);
}
if (!zstr(pin)) {
conference->pin = switch_core_strdup(conference->pool, pin);
}

View File

@ -210,6 +210,8 @@ typedef enum {
MFLAG_SILENT,
MFLAG_FLIP_VIDEO,
MFLAG_ROTATE_VIDEO,
MFLAG_INDICATE_DEAF,
MFLAG_INDICATE_UNDEAF,
///////////////////////////
MFLAG_MAX
} member_flag_t;
@ -545,6 +547,8 @@ typedef struct conference_obj {
char *muted_sound;
char *mute_detect_sound;
char *unmuted_sound;
char *deaf_sound;
char *undeaf_sound;
char *locked_sound;
char *is_locked_sound;
char *is_unlocked_sound;