switch_clear_flag(conference, CFLAG_WAIT_MOD);
}
+ channel = switch_core_session_get_channel(member->session);
+ switch_channel_set_variable_printf(channel, "conference_member_id", "%d", member->id);
+
if (conference->count > 1) {
if (conference->moh_sound && !switch_test_flag(conference, CFLAG_WAIT_MOD)) {
/* stop MoH if any */
conference_stop_file(conference, FILE_STOP_ASYNC);
}
- if (conference->enter_sound) {
+ if (conference->enter_sound && (!switch_channel_test_flag(channel, CF_RECOVERED) ||
+ switch_true(switch_channel_get_variable(channel, "conference_silent_entry")))) {
conference_play_file(conference, conference->enter_sound, CONF_DEFAULT_LEADIN, switch_core_session_get_channel(member->session),
switch_test_flag(conference, CFLAG_WAIT_MOD) ? 0 : 1);
}
}
- channel = switch_core_session_get_channel(member->session);
- switch_channel_set_variable_printf(channel, "conference_member_id", "%d", member->id);
-
call_list = (call_list_t *) switch_channel_get_private(channel, "_conference_autocall_list_");
switch_snprintf(saymsg, sizeof(saymsg), "Auto Calling %d parties", call_list->iteration);
conference_member_say(member, saymsg, 0);
} else {
- if (zstr(conference->special_announce)) {
+ if (zstr(conference->special_announce) && (!switch_channel_test_flag(channel, CF_RECOVERED) ||
+ switch_true(switch_channel_get_variable(channel, "conference_silent_entry")))) {
/* announce the total number of members in the conference */
if (conference->count >= conference->announce_count && conference->announce_count > 1) {
switch_snprintf(msg, sizeof(msg), "There are %d callers", conference->count);
switch_set_flag(conference, CFLAG_ENFORCE_MIN);
}
- if (test_eflag(conference, EFLAG_ADD_MEMBER) &&
+ if (test_eflag(conference, EFLAG_ADD_MEMBER) && (!switch_channel_test_flag(channel, CF_RECOVERED) ||
+ switch_true(switch_channel_get_variable(channel, "conference_silent_entry"))) &&
switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
conference_add_event_member_data(member, event);
switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "add-member");
const char *prefix = switch_channel_get_variable(channel, "conference_auto_outcall_prefix");
int to = 60;
- if (ann) {
+ if (ann && (!switch_channel_test_flag(channel, CF_RECOVERED) ||
+ switch_true(switch_channel_get_variable(channel, "conference_silent_entry")))) {
member->conference->special_announce = switch_core_strdup(member->conference->pool, ann);
}
}
}
- if (conference->special_announce) {
+ if (conference->special_announce && (!switch_channel_test_flag(channel, CF_RECOVERED) ||
+ switch_true(switch_channel_get_variable(channel, "conference_silent_entry")))) {
conference_local_play_file(conference, session, conference->special_announce, CONF_DEFAULT_LEADIN, NULL, 0);
}
for (param = switch_xml_child(x_extension, "application"); param; param = param->next) {
const char *var = switch_xml_attr_soft(param, "app_name");
const char *val = switch_xml_attr_soft(param, "app_data");
- switch_caller_extension_add_application(session, extension, var, val);
+ /* skip announcement type apps */
+ if (strcasecmp(var, "speak") && strcasecmp(var, "playback") && strcasecmp(var, "gentones" || strcasecmp(var, "say"))) {
+ switch_caller_extension_add_application(session, extension, var, val);
+ }
}
}
switch_channel_set_variable(channel, "is_outbound", "true");
}
+ if (flag == CF_RECOVERED) {
+ switch_channel_set_variable(channel, "recovered", "true");
+ }
+
}
SWITCH_DECLARE(void) switch_channel_set_flag_recursive(switch_channel_t *channel, switch_channel_flag_t flag)
if (flag == CF_OUTBOUND) {
switch_channel_set_variable(channel, "is_outbound", "true");
}
+
+ if (flag == CF_RECOVERED) {
+ switch_channel_set_variable(channel, "recovered", "true");
+ }
}
if (flag == CF_OUTBOUND) {
switch_channel_set_variable(channel, "is_outbound", NULL);
}
+
+ if (flag == CF_RECOVERED) {
+ switch_channel_set_variable(channel, "recovered", NULL);
+ }
}