[Freeswitch-svn] [commit] r6640 - freeswitch/trunk/src/mod/applications/mod_dptools

Freeswitch SVN anthm at freeswitch.org
Tue Dec 11 10:14:33 EST 2007


Author: anthm
Date: Tue Dec 11 10:14:33 2007
New Revision: 6640

Modified:
   freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c

Log:
add vars

Modified: freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c	Tue Dec 11 10:14:33 2007
@@ -1446,6 +1446,7 @@
 	const char *dest = NULL;
 	static switch_call_cause_t cause;
 	unsigned int timelimit = 60;
+	switch_channel_t *new_channel = NULL;
 
 	user = switch_core_session_strdup(session, outbound_profile->destination_number);
 
@@ -1460,6 +1461,19 @@
 		goto done;
 	}
 
+	if ((x_params = switch_xml_child(x_domain, "params"))) {
+		for (x_param = switch_xml_child(x_params, "param"); x_param; x_param = x_param->next) {
+			const char *var = switch_xml_attr(x_param, "name");
+			const char *val = switch_xml_attr(x_param, "value");
+			
+			if (!strcasecmp(var, "dial-string")) {
+				dest = val;
+				break;
+			}
+
+		}
+	}
+
 	if ((x_params = switch_xml_child(x_user, "params"))) {
 		for (x_param = switch_xml_child(x_params, "param"); x_param; x_param = x_param->next) {
 			const char *var = switch_xml_attr(x_param, "name");
@@ -1486,11 +1500,12 @@
 		}
 		
 		d_dest = switch_channel_expand_variables(channel, dest);
-
+		
 		if (switch_ivr_originate(session, new_session, &cause, d_dest, timelimit, NULL, NULL, NULL, NULL) == SWITCH_STATUS_SUCCESS) {
 			const char *context;
 			switch_caller_profile_t *cp;
-			switch_channel_t *new_channel = switch_core_session_get_channel(*new_session);
+
+			new_channel = switch_core_session_get_channel(*new_session);
 			
 			if ((context = switch_channel_get_variable(new_channel, "inbound_context"))) {
 				if ((cp = switch_channel_get_caller_profile(new_channel))) {
@@ -1506,6 +1521,25 @@
 		}
 	}
 
+	if (new_channel && xml) {
+		if ((x_params = switch_xml_child(x_domain, "variables"))) {
+			for (x_param = switch_xml_child(x_params, "variable"); x_param; x_param = x_param->next) {
+				const char *var = switch_xml_attr(x_param, "name");
+				const char *val = switch_xml_attr(x_param, "value");
+				switch_channel_set_variable(new_channel, var, val);
+			}
+		}
+
+		if ((x_params = switch_xml_child(x_user, "variables"))) {
+			for (x_param = switch_xml_child(x_params, "variable"); x_param; x_param = x_param->next) {
+				const char *var = switch_xml_attr(x_param, "name");
+				const char *val = switch_xml_attr(x_param, "value");
+				switch_channel_set_variable(new_channel, var, val);
+			}
+		}
+		
+	}
+
 	if (xml) {
 		switch_xml_free(xml);
 	}



More information about the Freeswitch-svn mailing list