From 85d3c1346d76b8c49857a17c4e3aeef03d627f95 Mon Sep 17 00:00:00 2001 From: Alexey Melnichuk Date: Thu, 30 Jul 2015 16:21:50 +0400 Subject: [PATCH] Add. Option to ignore busy from destination in follow me dial-string. --- app/calls/app_languages.php | 11 +++++++++++ app/calls/call_edit.php | 16 ++++++++++++++++ app/calls/resources/classes/follow_me.php | 17 ++++++++++++----- app/follow_me/app_config.php | 4 ++++ 4 files changed, 43 insertions(+), 5 deletions(-) diff --git a/app/calls/app_languages.php b/app/calls/app_languages.php index c3ea2aa975..981ca16dd8 100644 --- a/app/calls/app_languages.php +++ b/app/calls/app_languages.php @@ -101,6 +101,17 @@ $text['label-on-busy']['sv-se'] = "Vid Upptaget "; $text['label-on-busy']['uk'] = "Якщо зайнято"; $text['label-on-busy']['de-at'] = "Bei Besetzt"; +$text['label-ignore-busy']['en-us'] = "Ignore Busy"; +$text['label-ignore-busy']['es-cl'] = ""; +$text['label-ignore-busy']['pt-pt'] = ""; +$text['label-ignore-busy']['fr-fr'] = ""; +$text['label-ignore-busy']['it-it'] = ""; +$text['label-ignore-busy']['pt-br'] = ""; +$text['label-ignore-busy']['pl'] = ""; +$text['label-ignore-busy']['sv-se'] = ""; +$text['label-ignore-busy']['uk'] = ""; +$text['label-ignore-busy']['de-at'] = ""; + $text['label-number']['en-us'] = "Number"; $text['label-number']['es-cl'] = "Número"; $text['label-number']['pt-pt'] = "Número"; diff --git a/app/calls/call_edit.php b/app/calls/call_edit.php index d4d151ee07..85e26d0ad9 100644 --- a/app/calls/call_edit.php +++ b/app/calls/call_edit.php @@ -127,6 +127,7 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) { $cid_number_prefix = check_str($_POST["cid_number_prefix"]); $follow_me_enabled = check_str($_POST["follow_me_enabled"]); $follow_me_caller_id_uuid = check_str($_POST["follow_me_caller_id_uuid"]); + $follow_me_ignore_busy = check_str($_POST["follow_me_ignore_busy"]); $destination_data_1 = check_str($_POST["destination_data_1"]); $destination_delay_1 = check_str($_POST["destination_delay_1"]); @@ -280,6 +281,7 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) { $follow_me->cid_number_prefix = $cid_number_prefix; $follow_me->follow_me_enabled = $follow_me_enabled; $follow_me->follow_me_caller_id_uuid = $follow_me_caller_id_uuid; + $follow_me->follow_me_ignore_busy = $follow_me_ignore_busy; $follow_me->destination_data_1 = $destination_data_1; $follow_me->destination_type_1 = $destination_type_1; @@ -402,6 +404,7 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) { $cid_number_prefix = $row["cid_number_prefix"]; $follow_me_enabled = $row["follow_me_enabled"]; $follow_me_caller_id_uuid = $row["follow_me_caller_id_uuid"]; + $follow_me_ignore_busy = $row["follow_me_ignore_busy"]; $sql = "select * from v_follow_me_destinations "; $sql .= "where follow_me_uuid = '$follow_me_uuid' "; @@ -738,6 +741,19 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) { echo "\n"; echo "\n"; + echo " \n"; + echo " "; + echo $text['label-ignore-busy']; + echo " \n"; + echo " \n"; + echo " \n"; + echo "
Interrupt call if one of destination are busy\n"; + echo " \n"; + echo " \n"; + if (permission_exists('follow_me_cid_name_prefix')) { echo "\n"; echo "\n"; diff --git a/app/calls/resources/classes/follow_me.php b/app/calls/resources/classes/follow_me.php index 6bb12d36c5..8afeda794d 100644 --- a/app/calls/resources/classes/follow_me.php +++ b/app/calls/resources/classes/follow_me.php @@ -39,6 +39,7 @@ include "root.php"; public $accountcode; public $follow_me_enabled; public $follow_me_caller_id_uuid; + public $follow_me_ignore_busy; public $outbound_caller_id_name; public $outbound_caller_id_number; private $extension; @@ -90,7 +91,8 @@ include "root.php"; $sql .= "cid_number_prefix, "; } $sql .= "follow_me_caller_id_uuid, "; - $sql .= "follow_me_enabled "; + $sql .= "follow_me_enabled, "; + $sql .= "follow_me_ignore_busy "; $sql .= ")"; $sql .= "values "; $sql .= "("; @@ -106,7 +108,8 @@ include "root.php"; else { $sql .= 'null, '; } - $sql .= "'$this->follow_me_enabled' "; + $sql .= "'$this->follow_me_enabled', "; + $sql .= "'$this->follow_me_ignore_busy' "; $sql .= ")"; if ($v_debug) { echo $sql."
"; @@ -122,6 +125,7 @@ include "root.php"; //update follow me table $sql = "update v_follow_me set "; $sql .= "follow_me_enabled = '$this->follow_me_enabled', "; + $sql .= "follow_me_ignore_busy = '$this->follow_me_ignore_busy', "; $sql .= "cid_name_prefix = '$this->cid_name_prefix', "; if (strlen($this->follow_me_caller_id_uuid) > 0) { $sql .= "follow_me_caller_id_uuid = '$this->follow_me_caller_id_uuid', "; @@ -276,8 +280,11 @@ include "root.php"; $prep_statement_2 = $db->prepare(check_sql($sql)); $prep_statement_2->execute(); $result = $prep_statement_2->fetchAll(PDO::FETCH_NAMED); - $dial_string = "{fail_on_single_reject=USER_BUSY"; - $dial_string .= ",instant_ringback=true"; + $dial_string = "{"; + if ($this->follow_me_ignore_busy != 'true') { + $dial_string .= "fail_on_single_reject=USER_BUSY,"; + } + $dial_string .= "instant_ringback=true,"; $dial_string .= ",ignore_early_media=true"; $dial_string .= ",domain_uuid=".$_SESSION['domain_uuid']; $dial_string .= ",sip_invite_domain=".$_SESSION['domain_name']; @@ -375,7 +382,7 @@ include "root.php"; if (is_numeric($row["follow_me_destination"])) { if ($_SESSION['domain']['bridge']['text'] == "outbound" || $_SESSION['domain']['bridge']['text'] == "bridge") { $bridge = outbound_route_to_bridge ($_SESSION['domain_uuid'], $row["follow_me_destination"]); - $dial_string .= $bridge[0].","; + $dial_string .= $bridge[0]; } elseif ($_SESSION['domain']['bridge']['text'] == "loopback") { $dial_string .= "loopback/".$row["follow_me_destination"]."/".$_SESSION['domain_name']; diff --git a/app/follow_me/app_config.php b/app/follow_me/app_config.php index 18c64547f4..d5803f4437 100644 --- a/app/follow_me/app_config.php +++ b/app/follow_me/app_config.php @@ -122,6 +122,10 @@ $apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)"; $apps[$x]['db'][$y]['fields'][$z]['description']['en'] = ""; $z++; + $apps[$x]['db'][$y]['fields'][$z]['name'] = "follow_me_ignore_busy"; + $apps[$x]['db'][$y]['fields'][$z]['type'] = "text"; + $apps[$x]['db'][$y]['fields'][$z]['description']['en'] = ""; + $z++; //schema details $y = 1; //table array index