提交 809284e7 authored 作者: Anthony Minessale's avatar Anthony Minessale

add some events

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@3652 d0543943-73ff-0310-b7d9-9358b9ac24b2
上级 ba6fb352
...@@ -880,42 +880,71 @@ static void conference_loop(conference_member_t *member) ...@@ -880,42 +880,71 @@ static void conference_loop(conference_member_t *member)
for (digit = dtmf; *digit; digit++) { for (digit = dtmf; *digit; digit++) {
switch(*digit) { switch(*digit) {
case '0': case '0':
if (switch_test_flag(member, MFLAG_CAN_SPEAK)) { {
switch_clear_flag_locked(member, MFLAG_CAN_SPEAK | MFLAG_CAN_HEAR); char *action = "mute-member";
if (member->conference->muted_sound) {
conference_member_play_file(member, member->conference->muted_sound, 0); if (switch_test_flag(member, MFLAG_CAN_SPEAK)) {
} else { switch_clear_flag_locked(member, MFLAG_CAN_SPEAK | MFLAG_CAN_HEAR);
snprintf(msg, sizeof(msg), "Muted"); if (member->conference->muted_sound) {
conference_member_say(member->conference, member, msg, 0); conference_member_play_file(member, member->conference->muted_sound, 0);
} } else {
} else { snprintf(msg, sizeof(msg), "Muted");
switch_set_flag_locked(member, MFLAG_CAN_SPEAK); conference_member_say(member->conference, member, msg, 0);
if (member->conference->unmuted_sound) { }
conference_member_play_file(member, member->conference->unmuted_sound, 0); } else {
} else { switch_set_flag_locked(member, MFLAG_CAN_SPEAK);
snprintf(msg, sizeof(msg), "Un-Muted"); if (member->conference->unmuted_sound) {
conference_member_say(member->conference, member, msg, 0); conference_member_play_file(member, member->conference->unmuted_sound, 0);
} } else {
} snprintf(msg, sizeof(msg), "Un-Muted");
break; conference_member_say(member->conference, member, msg, 0);
case '*': action = "unmute-member";
if (switch_test_flag(member, MFLAG_CAN_SPEAK)) { }
switch_clear_flag_locked(member, MFLAG_CAN_SPEAK|MFLAG_CAN_HEAR); }
if (member->conference->muted_sound) { if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
conference_member_play_file(member, member->conference->muted_sound, 0); switch_channel_t *channel = switch_core_session_get_channel(member->session);
} else { switch_channel_event_set_data(channel, event);
snprintf(msg, sizeof(msg), "Muted");
conference_member_say(member->conference, member, msg, 0); switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Conference-Name", member->conference->name);
} switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Member-ID", "%u", member->id);
} else { switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Action", action);
switch_set_flag_locked(member, MFLAG_CAN_SPEAK|MFLAG_CAN_HEAR); switch_event_fire(&event);
if (member->conference->unmuted_sound) { }
conference_member_play_file(member, member->conference->unmuted_sound, 0); }
} else { break;
snprintf(msg, sizeof(msg), "UN-Muted"); case '*':
conference_member_say(member->conference, member, msg, 0); {
} char *action = "mute-deaf-member";
} if (switch_test_flag(member, MFLAG_CAN_SPEAK)) {
switch_clear_flag_locked(member, MFLAG_CAN_SPEAK|MFLAG_CAN_HEAR);
if (member->conference->muted_sound) {
conference_member_play_file(member, member->conference->muted_sound, 0);
} else {
snprintf(msg, sizeof(msg), "Muted");
conference_member_say(member->conference, member, msg, 0);
}
} else {
switch_set_flag_locked(member, MFLAG_CAN_SPEAK|MFLAG_CAN_HEAR);
if (member->conference->unmuted_sound) {
conference_member_play_file(member, member->conference->unmuted_sound, 0);
} else {
snprintf(msg, sizeof(msg), "UN-Muted");
conference_member_say(member->conference, member, msg, 0);
action = "unmute-deaf-member";
}
}
if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
switch_channel_t *channel = switch_core_session_get_channel(member->session);
switch_channel_event_set_data(channel, event);
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Conference-Name", member->conference->name);
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Member-ID", "%u", member->id);
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Action", action);
switch_event_fire(&event);
}
}
break; break;
case '9': case '9':
switch_mutex_lock(member->flag_mutex); switch_mutex_lock(member->flag_mutex);
...@@ -926,6 +955,17 @@ static void conference_loop(conference_member_t *member) ...@@ -926,6 +955,17 @@ static void conference_loop(conference_member_t *member)
switch_mutex_unlock(member->flag_mutex); switch_mutex_unlock(member->flag_mutex);
snprintf(msg, sizeof(msg), "Energy level %d", member->energy_level); snprintf(msg, sizeof(msg), "Energy level %d", member->energy_level);
conference_member_say(member->conference, member, msg, 0); conference_member_say(member->conference, member, msg, 0);
if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
switch_channel_t *channel = switch_core_session_get_channel(member->session);
switch_channel_event_set_data(channel, event);
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Conference-Name", member->conference->name);
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Member-ID", "%u", member->id);
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "New-Level", "%u", member->energy_level);
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Action", "energy-level");
switch_event_fire(&event);
}
break; break;
case '8': case '8':
switch_mutex_lock(member->flag_mutex); switch_mutex_lock(member->flag_mutex);
...@@ -933,6 +973,16 @@ static void conference_loop(conference_member_t *member) ...@@ -933,6 +973,16 @@ static void conference_loop(conference_member_t *member)
switch_mutex_unlock(member->flag_mutex); switch_mutex_unlock(member->flag_mutex);
snprintf(msg, sizeof(msg), "Energy level %d", member->energy_level); snprintf(msg, sizeof(msg), "Energy level %d", member->energy_level);
conference_member_say(member->conference, member, msg, 0); conference_member_say(member->conference, member, msg, 0);
if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
switch_channel_t *channel = switch_core_session_get_channel(member->session);
switch_channel_event_set_data(channel, event);
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Conference-Name", member->conference->name);
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Member-ID", "%u", member->id);
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "New-Level", "%u", member->energy_level);
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Action", "energy-level");
switch_event_fire(&event);
}
break; break;
case '7': case '7':
switch_mutex_lock(member->flag_mutex); switch_mutex_lock(member->flag_mutex);
...@@ -943,6 +993,16 @@ static void conference_loop(conference_member_t *member) ...@@ -943,6 +993,16 @@ static void conference_loop(conference_member_t *member)
switch_mutex_unlock(member->flag_mutex); switch_mutex_unlock(member->flag_mutex);
snprintf(msg, sizeof(msg), "Energy level %d", member->energy_level); snprintf(msg, sizeof(msg), "Energy level %d", member->energy_level);
conference_member_say(member->conference, member, msg, 0); conference_member_say(member->conference, member, msg, 0);
if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
switch_channel_t *channel = switch_core_session_get_channel(member->session);
switch_channel_event_set_data(channel, event);
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Conference-Name", member->conference->name);
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Member-ID", "%u", member->id);
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "New-Level", "%u", member->energy_level);
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Action", "energy-level");
switch_event_fire(&event);
}
break; break;
case '3': case '3':
switch_mutex_lock(member->flag_mutex); switch_mutex_lock(member->flag_mutex);
...@@ -951,6 +1011,16 @@ static void conference_loop(conference_member_t *member) ...@@ -951,6 +1011,16 @@ static void conference_loop(conference_member_t *member)
switch_mutex_unlock(member->flag_mutex); switch_mutex_unlock(member->flag_mutex);
snprintf(msg, sizeof(msg), "Volume level %d", member->volume_out_level); snprintf(msg, sizeof(msg), "Volume level %d", member->volume_out_level);
conference_member_say(member->conference, member, msg, 0); conference_member_say(member->conference, member, msg, 0);
if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
switch_channel_t *channel = switch_core_session_get_channel(member->session);
switch_channel_event_set_data(channel, event);
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Conference-Name", member->conference->name);
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Member-ID", "%u", member->id);
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "New-Level", "%u", member->volume_out_level);
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Action", "volume-level");
switch_event_fire(&event);
}
break; break;
case '2': case '2':
switch_mutex_lock(member->flag_mutex); switch_mutex_lock(member->flag_mutex);
...@@ -958,6 +1028,16 @@ static void conference_loop(conference_member_t *member) ...@@ -958,6 +1028,16 @@ static void conference_loop(conference_member_t *member)
switch_mutex_unlock(member->flag_mutex); switch_mutex_unlock(member->flag_mutex);
snprintf(msg, sizeof(msg), "Volume level %d", member->volume_out_level); snprintf(msg, sizeof(msg), "Volume level %d", member->volume_out_level);
conference_member_say(member->conference, member, msg, 0); conference_member_say(member->conference, member, msg, 0);
if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
switch_channel_t *channel = switch_core_session_get_channel(member->session);
switch_channel_event_set_data(channel, event);
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Conference-Name", member->conference->name);
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Member-ID", "%u", member->id);
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "New-Level", "%u", member->volume_out_level);
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Action", "volume-level");
switch_event_fire(&event);
}
break; break;
case '1': case '1':
switch_mutex_lock(member->flag_mutex); switch_mutex_lock(member->flag_mutex);
...@@ -966,6 +1046,16 @@ static void conference_loop(conference_member_t *member) ...@@ -966,6 +1046,16 @@ static void conference_loop(conference_member_t *member)
switch_mutex_unlock(member->flag_mutex); switch_mutex_unlock(member->flag_mutex);
snprintf(msg, sizeof(msg), "Volume level %d", member->volume_out_level); snprintf(msg, sizeof(msg), "Volume level %d", member->volume_out_level);
conference_member_say(member->conference, member, msg, 0); conference_member_say(member->conference, member, msg, 0);
if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
switch_channel_t *channel = switch_core_session_get_channel(member->session);
switch_channel_event_set_data(channel, event);
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Conference-Name", member->conference->name);
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Member-ID", "%u", member->id);
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "New-Level", "%u", member->volume_out_level);
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Action", "volume-level");
switch_event_fire(&event);
}
break; break;
case '6': case '6':
switch_mutex_lock(member->flag_mutex); switch_mutex_lock(member->flag_mutex);
...@@ -974,6 +1064,16 @@ static void conference_loop(conference_member_t *member) ...@@ -974,6 +1064,16 @@ static void conference_loop(conference_member_t *member)
switch_mutex_unlock(member->flag_mutex); switch_mutex_unlock(member->flag_mutex);
snprintf(msg, sizeof(msg), "Gain level %d", member->volume_in_level); snprintf(msg, sizeof(msg), "Gain level %d", member->volume_in_level);
conference_member_say(member->conference, member, msg, 0); conference_member_say(member->conference, member, msg, 0);
if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
switch_channel_t *channel = switch_core_session_get_channel(member->session);
switch_channel_event_set_data(channel, event);
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Conference-Name", member->conference->name);
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Member-ID", "%u", member->id);
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "New-Level", "%u", member->volume_in_level);
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Action", "gain-level");
switch_event_fire(&event);
}
break; break;
case '5': case '5':
switch_mutex_lock(member->flag_mutex); switch_mutex_lock(member->flag_mutex);
...@@ -981,6 +1081,16 @@ static void conference_loop(conference_member_t *member) ...@@ -981,6 +1081,16 @@ static void conference_loop(conference_member_t *member)
switch_mutex_unlock(member->flag_mutex); switch_mutex_unlock(member->flag_mutex);
snprintf(msg, sizeof(msg), "Gain level %d", member->volume_in_level); snprintf(msg, sizeof(msg), "Gain level %d", member->volume_in_level);
conference_member_say(member->conference, member, msg, 0); conference_member_say(member->conference, member, msg, 0);
if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
switch_channel_t *channel = switch_core_session_get_channel(member->session);
switch_channel_event_set_data(channel, event);
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Conference-Name", member->conference->name);
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Member-ID", "%u", member->id);
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "New-Level", "%u", member->volume_in_level);
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Action", "gain-level");
switch_event_fire(&event);
}
break; break;
case '4': case '4':
switch_mutex_lock(member->flag_mutex); switch_mutex_lock(member->flag_mutex);
...@@ -989,6 +1099,16 @@ static void conference_loop(conference_member_t *member) ...@@ -989,6 +1099,16 @@ static void conference_loop(conference_member_t *member)
switch_mutex_unlock(member->flag_mutex); switch_mutex_unlock(member->flag_mutex);
snprintf(msg, sizeof(msg), "Gain level %d", member->volume_in_level); snprintf(msg, sizeof(msg), "Gain level %d", member->volume_in_level);
conference_member_say(member->conference, member, msg, 0); conference_member_say(member->conference, member, msg, 0);
if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
switch_channel_t *channel = switch_core_session_get_channel(member->session);
switch_channel_event_set_data(channel, event);
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Conference-Name", member->conference->name);
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Member-ID", "%u", member->id);
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "New-Level", "%u", member->volume_in_level);
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Action", "gain-level");
switch_event_fire(&event);
}
break; break;
case '#': case '#':
switch_clear_flag_locked(member, MFLAG_RUNNING); switch_clear_flag_locked(member, MFLAG_RUNNING);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论