From a1c6a9f4d54d354ef55298c15f2d754d0d591f28 Mon Sep 17 00:00:00 2001 From: Mark Crane Date: Sat, 29 Mar 2014 07:25:52 +0000 Subject: [PATCH] Add a new option 'transfer' for outbound routes. --- .../dialplan_outbound_add.php | 140 ++++++++++-------- 1 file changed, 82 insertions(+), 58 deletions(-) diff --git a/app/dialplan_outbound/dialplan_outbound_add.php b/app/dialplan_outbound/dialplan_outbound_add.php index 7655f842ef..dc8623c421 100644 --- a/app/dialplan_outbound/dialplan_outbound_add.php +++ b/app/dialplan_outbound/dialplan_outbound_add.php @@ -75,6 +75,10 @@ else { if (strtolower(substr($gateway, 0, 7)) == "freetdm") { $gateway_type = 'freetdm'; } + //set the gateway type to transfer + if (strtolower(substr($gateway, 0, 8)) == "transfer") { + $gateway_type = 'transfer'; + } //set the gateway type to dingaling if (strtolower(substr($gateway, 0, 4)) == "xmpp") { $gateway_type = 'xmpp'; @@ -308,6 +312,19 @@ else { if ($gateway_3_type == "enum") { $bridge_3_data .= "\${enum_auto_route}"; } + if ($gateway_type == "transfer") { + $dialplan_name = "transfer.".$abbrv; + $gateway_array = explode(":",$gateway); + $action_data = $gateway_array[1]; + } + if ($gateway_2_type == "transfer") { + $gateway_array = explode(":",$gateway_2); + $bridge_2_data = $gateway_array[1]; + } + if ($gateway_3_type == "transfer") { + $gateway_array = explode(":",$gateway_3); + $bridge_3_data = $gateway_array[1]; + } if (strlen($dialplan_order) == 0) { $dialplan_order ='333'; } @@ -354,29 +371,31 @@ else { $dialplan_detail_group = ''; dialplan_detail_add($_SESSION['domain_uuid'], $dialplan_uuid, $dialplan_detail_tag, $dialplan_detail_order, $dialplan_detail_group, $dialplan_detail_type, $dialplan_detail_data); - if (strlen($accountcode) > 0) { - $dialplan_detail_tag = 'action'; //condition, action, antiaction - $dialplan_detail_type = 'set'; - $dialplan_detail_data = 'sip_h_X-accountcode='.$accountcode; - $dialplan_detail_order = '010'; - $dialplan_detail_group = ''; - dialplan_detail_add($_SESSION['domain_uuid'], $dialplan_uuid, $dialplan_detail_tag, $dialplan_detail_order, $dialplan_detail_group, $dialplan_detail_type, $dialplan_detail_data); - } - else { - $dialplan_detail_tag = 'action'; //condition, action, antiaction - $dialplan_detail_type = 'set'; - $dialplan_detail_data = 'sip_h_X-accountcode=${accountcode}'; - $dialplan_detail_order = '010'; - $dialplan_detail_group = ''; - dialplan_detail_add($_SESSION['domain_uuid'], $dialplan_uuid, $dialplan_detail_tag, $dialplan_detail_order, $dialplan_detail_group, $dialplan_detail_type, $dialplan_detail_data); - } + if ($gateway_type != "transfer") { + if (strlen($accountcode) > 0) { + $dialplan_detail_tag = 'action'; //condition, action, antiaction + $dialplan_detail_type = 'set'; + $dialplan_detail_data = 'sip_h_X-accountcode='.$accountcode; + $dialplan_detail_order = '010'; + $dialplan_detail_group = ''; + dialplan_detail_add($_SESSION['domain_uuid'], $dialplan_uuid, $dialplan_detail_tag, $dialplan_detail_order, $dialplan_detail_group, $dialplan_detail_type, $dialplan_detail_data); + } + else { + $dialplan_detail_tag = 'action'; //condition, action, antiaction + $dialplan_detail_type = 'set'; + $dialplan_detail_data = 'sip_h_X-accountcode=${accountcode}'; + $dialplan_detail_order = '010'; + $dialplan_detail_group = ''; + dialplan_detail_add($_SESSION['domain_uuid'], $dialplan_uuid, $dialplan_detail_tag, $dialplan_detail_order, $dialplan_detail_group, $dialplan_detail_type, $dialplan_detail_data); + } - $dialplan_detail_tag = 'action'; //condition, action, antiaction - $dialplan_detail_type = 'set'; - $dialplan_detail_data = 'sip_h_X-Tag='; - $dialplan_detail_order = '012'; - $dialplan_detail_group = ''; - dialplan_detail_add($_SESSION['domain_uuid'], $dialplan_uuid, $dialplan_detail_tag, $dialplan_detail_order, $dialplan_detail_group, $dialplan_detail_type, $dialplan_detail_data); + $dialplan_detail_tag = 'action'; //condition, action, antiaction + $dialplan_detail_type = 'set'; + $dialplan_detail_data = 'sip_h_X-Tag='; + $dialplan_detail_order = '012'; + $dialplan_detail_group = ''; + dialplan_detail_add($_SESSION['domain_uuid'], $dialplan_uuid, $dialplan_detail_tag, $dialplan_detail_order, $dialplan_detail_group, $dialplan_detail_type, $dialplan_detail_data); + } $dialplan_detail_tag = 'action'; //condition, action, antiaction $dialplan_detail_type = 'set'; @@ -385,45 +404,47 @@ else { $dialplan_detail_group = ''; dialplan_detail_add($_SESSION['domain_uuid'], $dialplan_uuid, $dialplan_detail_tag, $dialplan_detail_order, $dialplan_detail_group, $dialplan_detail_type, $dialplan_detail_data); - $dialplan_detail_tag = 'action'; //condition, action, antiaction - $dialplan_detail_type = 'set'; - $dialplan_detail_data = 'hangup_after_bridge=true'; - $dialplan_detail_order = '020'; - $dialplan_detail_group = ''; - dialplan_detail_add($_SESSION['domain_uuid'], $dialplan_uuid, $dialplan_detail_tag, $dialplan_detail_order, $dialplan_detail_group, $dialplan_detail_type, $dialplan_detail_data); + if ($gateway_type != "transfer") { + $dialplan_detail_tag = 'action'; //condition, action, antiaction + $dialplan_detail_type = 'set'; + $dialplan_detail_data = 'hangup_after_bridge=true'; + $dialplan_detail_order = '020'; + $dialplan_detail_group = ''; + dialplan_detail_add($_SESSION['domain_uuid'], $dialplan_uuid, $dialplan_detail_tag, $dialplan_detail_order, $dialplan_detail_group, $dialplan_detail_type, $dialplan_detail_data); - $dialplan_detail_tag = 'action'; //condition, action, antiaction - $dialplan_detail_type = 'set'; - $dialplan_detail_data = 'effective_caller_id_name=${outbound_caller_id_name}'; - $dialplan_detail_order = '025'; - $dialplan_detail_group = ''; - dialplan_detail_add($_SESSION['domain_uuid'], $dialplan_uuid, $dialplan_detail_tag, $dialplan_detail_order, $dialplan_detail_group, $dialplan_detail_type, $dialplan_detail_data); + $dialplan_detail_tag = 'action'; //condition, action, antiaction + $dialplan_detail_type = 'set'; + $dialplan_detail_data = 'effective_caller_id_name=${outbound_caller_id_name}'; + $dialplan_detail_order = '025'; + $dialplan_detail_group = ''; + dialplan_detail_add($_SESSION['domain_uuid'], $dialplan_uuid, $dialplan_detail_tag, $dialplan_detail_order, $dialplan_detail_group, $dialplan_detail_type, $dialplan_detail_data); - $dialplan_detail_tag = 'action'; //condition, action, antiaction - $dialplan_detail_type = 'set'; - if ($dialplan_expression == '^(911)$') { - $dialplan_detail_data = 'effective_caller_id_number=${emergency_caller_id_number}'; + $dialplan_detail_tag = 'action'; //condition, action, antiaction + $dialplan_detail_type = 'set'; + if ($dialplan_expression == '^(911)$') { + $dialplan_detail_data = 'effective_caller_id_number=${emergency_caller_id_number}'; + } + else { + $dialplan_detail_data = 'effective_caller_id_number=${outbound_caller_id_number}'; + } + $dialplan_detail_order = '030'; + $dialplan_detail_group = ''; + dialplan_detail_add($_SESSION['domain_uuid'], $dialplan_uuid, $dialplan_detail_tag, $dialplan_detail_order, $dialplan_detail_group, $dialplan_detail_type, $dialplan_detail_data); + + $dialplan_detail_tag = 'action'; //condition, action, antiaction + $dialplan_detail_type = 'set'; + $dialplan_detail_data = 'inherit_codec=true'; + $dialplan_detail_order = '035'; + $dialplan_detail_group = ''; + dialplan_detail_add($_SESSION['domain_uuid'], $dialplan_uuid, $dialplan_detail_tag, $dialplan_detail_order, $dialplan_detail_group, $dialplan_detail_type, $dialplan_detail_data); + + $dialplan_detail_tag = 'action'; //condition, action, antiaction + $dialplan_detail_type = 'set'; + $dialplan_detail_data = 'continue_on_fail=true'; + $dialplan_detail_order = '040'; + $dialplan_detail_group = ''; + dialplan_detail_add($_SESSION['domain_uuid'], $dialplan_uuid, $dialplan_detail_tag, $dialplan_detail_order, $dialplan_detail_group, $dialplan_detail_type, $dialplan_detail_data); } - else { - $dialplan_detail_data = 'effective_caller_id_number=${outbound_caller_id_number}'; - } - $dialplan_detail_order = '030'; - $dialplan_detail_group = ''; - dialplan_detail_add($_SESSION['domain_uuid'], $dialplan_uuid, $dialplan_detail_tag, $dialplan_detail_order, $dialplan_detail_group, $dialplan_detail_type, $dialplan_detail_data); - - $dialplan_detail_tag = 'action'; //condition, action, antiaction - $dialplan_detail_type = 'set'; - $dialplan_detail_data = 'inherit_codec=true'; - $dialplan_detail_order = '035'; - $dialplan_detail_group = ''; - dialplan_detail_add($_SESSION['domain_uuid'], $dialplan_uuid, $dialplan_detail_tag, $dialplan_detail_order, $dialplan_detail_group, $dialplan_detail_type, $dialplan_detail_data); - - $dialplan_detail_tag = 'action'; //condition, action, antiaction - $dialplan_detail_type = 'set'; - $dialplan_detail_data = 'continue_on_fail=true'; - $dialplan_detail_order = '040'; - $dialplan_detail_group = ''; - dialplan_detail_add($_SESSION['domain_uuid'], $dialplan_uuid, $dialplan_detail_tag, $dialplan_detail_order, $dialplan_detail_group, $dialplan_detail_type, $dialplan_detail_data); if ($gateway_type == "enum" || $gateway_2_type == "enum") { $dialplan_detail_tag = 'action'; //condition, action, antiaction @@ -641,6 +662,7 @@ function type_onchange(dialplan_detail_type) { echo " "; echo " \n"; echo " \n"; + echo " \n"; echo " \n"; echo ""; echo "\n"; @@ -700,6 +722,7 @@ function type_onchange(dialplan_detail_type) { echo ""; echo " \n"; echo " \n"; + echo " \n"; echo " \n"; echo ""; echo "\n"; @@ -759,6 +782,7 @@ function type_onchange(dialplan_detail_type) { echo ""; echo " \n"; echo " \n"; + echo " \n"; echo " \n"; echo ""; echo "\n";