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

* commit '03e87faac125dca0acd5a15fdb3d7cd6a084e8f9':
  FS-9518 [mod_conference] allow deaf only command in caller-controls
This commit is contained in:
Mike Jerris 2016-09-15 17:28:04 -05:00
commit 7aa97b76a5
2 changed files with 39 additions and 1 deletions

View File

@ -67,7 +67,10 @@ struct _mapping control_mappings[] = {
{"execute_application", conference_loop_exec_app},
{"floor", conference_loop_floor_toggle},
{"vid-floor", conference_loop_vid_floor_toggle},
{"vid-floor-force", conference_loop_vid_floor_force}
{"vid-floor-force", conference_loop_vid_floor_force},
{"deaf", conference_loop_deaf_toggle},
{"deaf on", conference_loop_deaf_on},
{"deaf off", conference_loop_deaf_off}
};
int conference_loop_mapping_len()
@ -228,6 +231,38 @@ void conference_loop_lock_toggle(conference_member_t *member, caller_control_act
}
void conference_loop_deaf_toggle(conference_member_t *member, caller_control_action_t *action)
{
if (member == NULL)
return;
if (conference_utils_member_test_flag(member, MFLAG_CAN_HEAR)) {
conference_api_sub_deaf(member, NULL, NULL);
} else {
conference_api_sub_undeaf(member, NULL, NULL);
}
}
void conference_loop_deaf_on(conference_member_t *member, caller_control_action_t *action)
{
if (member == NULL)
return;
if (conference_utils_member_test_flag(member, MFLAG_CAN_HEAR)) {
conference_api_sub_deaf(member, NULL, NULL);
}
}
void conference_loop_deaf_off(conference_member_t *member, caller_control_action_t *action)
{
if (member == NULL)
return;
if (!conference_utils_member_test_flag(member, MFLAG_CAN_HEAR)) {
conference_api_sub_undeaf(member, NULL, NULL);
}
}
void conference_loop_deafmute_toggle(conference_member_t *member, caller_control_action_t *action)
{
if (member == NULL)

View File

@ -1151,6 +1151,9 @@ void conference_loop_mute_off(conference_member_t *member, caller_control_action
void conference_loop_event(conference_member_t *member, caller_control_action_t *action);
void conference_loop_transfer(conference_member_t *member, caller_control_action_t *action);
void conference_loop_exec_app(conference_member_t *member, caller_control_action_t *action);
void conference_loop_deaf_toggle(conference_member_t *member, caller_control_action_t *action);
void conference_loop_deaf_on(conference_member_t *member, caller_control_action_t *action);
void conference_loop_deaf_off(conference_member_t *member, caller_control_action_t *action);