allow process_import to specify a prefix

This commit is contained in:
Anthony Minessale 2010-11-05 18:20:09 -05:00 committed by Brian West
parent f69f4a7747
commit e0c37c1f6e
3 changed files with 17 additions and 9 deletions

View File

@ -840,7 +840,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_say_ip(switch_core_session_t *session
SWITCH_DECLARE(switch_status_t) switch_ivr_set_user(switch_core_session_t *session, const char *data); SWITCH_DECLARE(switch_status_t) switch_ivr_set_user(switch_core_session_t *session, const char *data);
SWITCH_DECLARE(switch_status_t) switch_ivr_sound_test(switch_core_session_t *session); SWITCH_DECLARE(switch_status_t) switch_ivr_sound_test(switch_core_session_t *session);
SWITCH_DECLARE(void) switch_process_import(switch_core_session_t *session, switch_channel_t *peer_channel, const char *varname); SWITCH_DECLARE(void) switch_process_import(switch_core_session_t *session, switch_channel_t *peer_channel, const char *varname, const char *prefix);
SWITCH_DECLARE(switch_bool_t) switch_ivr_uuid_exists(const char *uuid); SWITCH_DECLARE(switch_bool_t) switch_ivr_uuid_exists(const char *uuid);

View File

@ -998,8 +998,10 @@ static switch_status_t messagehook (switch_core_session_t *session, switch_core_
if (caller_channel) { if (caller_channel) {
switch_channel_set_variable(caller_channel, "fifo_role", "caller"); switch_channel_set_variable(caller_channel, "fifo_role", "caller");
switch_process_import(consumer_session, caller_channel, "fifo_caller_consumer_import"); switch_process_import(consumer_session, caller_channel, "fifo_caller_consumer_import",
switch_process_import(caller_session, consumer_channel, "fifo_consumer_caller_import"); switch_channel_get_variable(consumer_channel, "fifo_import_prefix"));
switch_process_import(caller_session, consumer_channel, "fifo_consumer_caller_import",
switch_channel_get_variable(caller_channel, "fifo_import_prefix"));
} }
@ -2846,8 +2848,8 @@ SWITCH_STANDARD_APP(fifo_function)
switch_core_media_bug_resume(session); switch_core_media_bug_resume(session);
switch_core_media_bug_resume(other_session); switch_core_media_bug_resume(other_session);
switch_process_import(session, other_channel, "fifo_caller_consumer_import"); switch_process_import(session, other_channel, "fifo_caller_consumer_import", switch_channel_get_variable(channel, "fifo_import_prefix"));
switch_process_import(other_session, channel, "fifo_consumer_caller_import"); switch_process_import(other_session, channel, "fifo_consumer_caller_import", switch_channel_get_variable(other_channel, "fifo_import_prefix"));
if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, FIFO_EVENT) == SWITCH_STATUS_SUCCESS) { if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, FIFO_EVENT) == SWITCH_STATUS_SUCCESS) {
switch_channel_event_set_data(channel, event); switch_channel_event_set_data(channel, event);
switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "FIFO-Name", argv[0]); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "FIFO-Name", argv[0]);

View File

@ -1038,7 +1038,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_wait_for_answer(switch_core_session_t
return status; return status;
} }
SWITCH_DECLARE(void) switch_process_import(switch_core_session_t *session, switch_channel_t *peer_channel, const char *varname) SWITCH_DECLARE(void) switch_process_import(switch_core_session_t *session, switch_channel_t *peer_channel, const char *varname, const char *prefix)
{ {
const char *import, *val; const char *import, *val;
switch_channel_t *caller_channel; switch_channel_t *caller_channel;
@ -1054,7 +1054,13 @@ SWITCH_DECLARE(void) switch_process_import(switch_core_session_t *session, switc
if ((argc = switch_separate_string(mydata, ',', argv, (sizeof(argv) / sizeof(argv[0]))))) { if ((argc = switch_separate_string(mydata, ',', argv, (sizeof(argv) / sizeof(argv[0]))))) {
for (i = 0; i < argc; i++) { for (i = 0; i < argc; i++) {
if ((val = switch_channel_get_variable(peer_channel, argv[i]))) { if ((val = switch_channel_get_variable(peer_channel, argv[i]))) {
switch_channel_set_variable(caller_channel, argv[i], val); if (prefix) {
char *var = switch_mprintf("%s%s", prefix, argv[i]);
switch_channel_set_variable(caller_channel, var, val);
free(var);
} else {
switch_channel_set_variable(caller_channel, argv[i], val);
}
} }
} }
} }
@ -3296,7 +3302,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess
} else { } else {
status = SWITCH_STATUS_FALSE; status = SWITCH_STATUS_FALSE;
if (caller_channel && peer_channel) { if (caller_channel && peer_channel) {
switch_process_import(oglobals.session, peer_channel, "import"); switch_process_import(oglobals.session, peer_channel, "import", NULL);
} }
peer_channel = NULL; peer_channel = NULL;
goto done; goto done;
@ -3347,7 +3353,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess
if (caller_channel) { if (caller_channel) {
switch_channel_set_variable(caller_channel, "originate_disposition", "call accepted"); switch_channel_set_variable(caller_channel, "originate_disposition", "call accepted");
if (peer_channel) { if (peer_channel) {
switch_process_import(oglobals.session, peer_channel, "import"); switch_process_import(oglobals.session, peer_channel, "import", NULL);
} }
} }
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(oglobals.session), SWITCH_LOG_DEBUG, "Originate Resulted in Success: [%s]\n", switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(oglobals.session), SWITCH_LOG_DEBUG, "Originate Resulted in Success: [%s]\n",