if (state == CS_ROUTING) {
switch_channel_event_set_data(channel, event);
} else {
+ const char *v;
+
switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Channel-State", switch_channel_state_name(state));
switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Channel-Call-State", switch_channel_callstate2str(channel->callstate));
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Channel-State-Number", "%d", state);
} else {
switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Answer-State", "ringing");
}
+
+
+ if ((v = switch_channel_get_variable(channel, "presence_id"))) {
+ switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Channel-Presence-ID", v);
+ }
+
+ if ((v = switch_channel_get_variable(channel, "presence_data"))) {
+ switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Channel-Presence-Data", v);
+ }
+
+ if ((v = switch_channel_get_variable(channel, "presence_data_cols"))) {
+ switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Presence-Data-Cols", v);
+ switch_event_add_presence_data_cols(channel, event, "PD-");
+ }
+
}
switch_event_fire(&event);
}
case CS_DESTROY:
case CS_REPORTING:
break;
+ case CS_EXECUTE:
+ if ((extra_cols = parse_presence_data_cols(event))) {
+ new_sql() = switch_mprintf("update channels set state='%s',%s where uuid='%q'",
+ switch_event_get_header_nil(event, "channel-state"),
+ extra_cols,
+ switch_event_get_header_nil(event, "unique-id"));
+ free(extra_cols);
+
+ } else {
+ new_sql() = switch_mprintf("update channels set state='%s' where uuid='%s'",
+ switch_event_get_header_nil(event, "channel-state"),
+ switch_event_get_header_nil(event, "unique-id"));
+ }
+ break;
case CS_ROUTING:
if ((extra_cols = parse_presence_data_cols(event))) {
new_sql() = switch_mprintf("update channels set state='%s',cid_name='%q',cid_num='%q',callee_name='%q',callee_num='%q',"