Update fax_send.php

- Optimize the database connection
- Use loopback for local FAX destinations
This commit is contained in:
FusionPBX 2024-10-17 02:39:03 -06:00 committed by GitHub
parent 75a2f5ffd9
commit ed836aa41e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 44 additions and 32 deletions

View File

@ -61,6 +61,9 @@
exit; exit;
} }
//connect to the database
$database = new database;
//shutdown call back function //shutdown call back function
function shutdown() { function shutdown() {
//when the fax status is still sending //when the fax status is still sending
@ -156,7 +159,6 @@
$sql .= "where fax_queue_uuid = :fax_queue_uuid "; $sql .= "where fax_queue_uuid = :fax_queue_uuid ";
$sql .= "and q.domain_uuid = d.domain_uuid and f.fax_uuid = q.fax_uuid"; $sql .= "and q.domain_uuid = d.domain_uuid and f.fax_uuid = q.fax_uuid";
$parameters['fax_queue_uuid'] = $fax_queue_uuid; $parameters['fax_queue_uuid'] = $fax_queue_uuid;
$database = new database;
$row = $database->select($sql, $parameters, 'row'); $row = $database->select($sql, $parameters, 'row');
if (is_array($row)) { if (is_array($row)) {
$fax_queue_uuid = $row['fax_queue_uuid']; $fax_queue_uuid = $row['fax_queue_uuid'];
@ -262,13 +264,35 @@
$fax_options = "fax_use_ecm=true,fax_enable_t38=true,fax_enable_t38_request=true,fax_disable_v17=true"; $fax_options = "fax_use_ecm=true,fax_enable_t38=true,fax_enable_t38_request=true,fax_disable_v17=true";
} }
else { else {
//try the user defineable method again //try the user-definable method again
$fax_options = ''; $fax_options = '';
foreach($setting->get('fax','variable') as $variable) { foreach($setting->get('fax','variable') as $variable) {
$fax_options .= $variable.","; $fax_options .= $variable.",";
} }
} }
//extract fax_dtmf from the fax number
fax_split_dtmf($fax_number, $fax_dtmf);
//get the fax toll allow
if (!empty($fax_toll_allow)) {
$channel_variables["toll_allow"] = $fax_toll_allow;
}
//check to see if the destination number is local
$sql = "select t.*, d.domain_name ";
$sql .= "from v_destinations as t, v_domains as d ";
$sql .= "where destination_number = :destination_number ";
$sql .= "and t.domain_uuid = d.domain_uuid ";
$parameters['destination_number'] = $fax_number;
$destination_count = $database->select($sql, $parameters, 'column');
if ($destination_count > 0) {
//$domain_uuid = $row['domain_uuid'];
//$domain_name = $row['domain_name'];
$route_array[] = 'loopback/'.$fax_number.'/public';
//$is_local = true;
}
//define the fax file //define the fax file
$common_variables = ''; $common_variables = '';
$common_variables = "accountcode='" . escape_quote($fax_accountcode) . "',"; $common_variables = "accountcode='" . escape_quote($fax_accountcode) . "',";
@ -281,36 +305,28 @@
$common_variables .= "fax_header='" . escape_quote($fax_caller_id_name) . "',"; $common_variables .= "fax_header='" . escape_quote($fax_caller_id_name) . "',";
$common_variables .= "fax_file='" . escape_quote($fax_file) . "',"; $common_variables .= "fax_file='" . escape_quote($fax_file) . "',";
//extract fax_dtmf from the fax number
fax_split_dtmf($fax_number, $fax_dtmf);
//prepare the fax command //prepare the fax command
if (!empty($fax_toll_allow)) { if (empty($route_array)) {
$channel_variables["toll_allow"] = $fax_toll_allow; $route_array = outbound_route_to_bridge($domain_uuid, $fax_prefix . $fax_number, $channel_variables);
} if (count($route_array) == 0) {
$route_array = outbound_route_to_bridge($domain_uuid, $fax_prefix . $fax_number, $channel_variables); //check for valid extension
if (count($route_array) == 0) { $sql = "select count(extension_uuid) ";
//check for valid extension $sql .= "from v_extensions ";
$sql = "select count(extension_uuid) "; $sql .= "where extension = :fax_number ";
$sql .= "from v_extensions "; $sql .= "and domain_uuid = :domain_uuid ";
$sql .= "where extension = :fax_number "; $parameters['domain_uuid'] = $domain_uuid;
$sql .= "and domain_uuid = :domain_uuid "; $parameters['fax_number'] = $fax_number;
$parameters['domain_uuid'] = $domain_uuid; $extension_count = $database->select($sql, $parameters, 'column');
$parameters['fax_number'] = $fax_number; if ($extension_count > 0) {
$database = new database; //send the internal call to the registered extension
$extension_count = $database->select($sql, $parameters, 'column'); $route_array[] = "user/".$fax_number."@".$domain_name;
if ($extension_count > 0) { }
//send the internal call to the registered extension else {
$route_array[] = "user/".$fax_number."@".$domain_name; $fax_status = 'failed';
} }
else {
$fax_status = 'failed';
} }
} }
//set the origination uuid
$origination_uuid = uuid();
//build a list of fax variables //build a list of fax variables
$dial_string = $common_variables; $dial_string = $common_variables;
$dial_string .= $fax_options.","; $dial_string .= $fax_options.",";
@ -371,7 +387,6 @@
$p->add('fax_queue_edit', 'temp'); $p->add('fax_queue_edit', 'temp');
//save the data //save the data
$database = new database;
$database->app_name = 'fax queue'; $database->app_name = 'fax queue';
$database->app_uuid = '3656287f-4b22-4cf1-91f6-00386bf488f4'; $database->app_uuid = '3656287f-4b22-4cf1-91f6-00386bf488f4';
$database->save($array, false); $database->save($array, false);
@ -415,7 +430,6 @@
$parameters['template_language'] = $language_code; $parameters['template_language'] = $language_code;
$parameters['template_category'] = 'fax'; $parameters['template_category'] = 'fax';
$parameters['template_type'] = 'html'; $parameters['template_type'] = 'html';
$database = new database;
$fax_templates = $database->select($sql, $parameters, 'all'); $fax_templates = $database->select($sql, $parameters, 'all');
unset($sql, $parameters); unset($sql, $parameters);
} }
@ -467,7 +481,6 @@
$sql .= "from v_fax_logs "; $sql .= "from v_fax_logs ";
$sql .= "where fax_log_uuid = :fax_log_uuid "; $sql .= "where fax_log_uuid = :fax_log_uuid ";
$parameters['fax_log_uuid'] = $fax_log_uuid; $parameters['fax_log_uuid'] = $fax_log_uuid;
$database = new database;
$row = $database->select($sql, $parameters, 'row'); $row = $database->select($sql, $parameters, 'row');
if (is_array($row)) { if (is_array($row)) {
$fax_success = $row['fax_success']; $fax_success = $row['fax_success'];
@ -589,7 +602,6 @@
$p->add('fax_queue_edit', 'temp'); $p->add('fax_queue_edit', 'temp');
//save the data //save the data
$database = new database;
$database->app_name = 'fax queue'; $database->app_name = 'fax queue';
$database->app_uuid = '3656287f-4b22-4cf1-91f6-00386bf488f4'; $database->app_uuid = '3656287f-4b22-4cf1-91f6-00386bf488f4';
$database->save($array, false); $database->save($array, false);