diff --git a/app/fifo/app_menu.php b/app/fifo/app_menu.php
index 136a9c66a7..23d13ed651 100644
--- a/app/fifo/app_menu.php
+++ b/app/fifo/app_menu.php
@@ -3,9 +3,9 @@
$apps[$x]['menu'][0]['title']['en-us'] = "Queues";
$apps[$x]['menu'][0]['title']['es-cl'] = "Colas";
$apps[$x]['menu'][0]['title']['es-mx'] = "Colas";
-$apps[$x]['menu'][0]['title']['de-de'] = "";
-$apps[$x]['menu'][0]['title']['de-ch'] = "";
-$apps[$x]['menu'][0]['title']['de-at'] = "";
+$apps[$x]['menu'][0]['title']['de-de'] = "Warteschlangen";
+$apps[$x]['menu'][0]['title']['de-ch'] = "Warteschlangen";
+$apps[$x]['menu'][0]['title']['de-at'] = "Warteschlangen";
$apps[$x]['menu'][0]['title']['fr-fr'] = "Queues";
$apps[$x]['menu'][0]['title']['fr-ca'] = "";
$apps[$x]['menu'][0]['title']['fr-ch'] = "";
@@ -19,4 +19,4 @@ $apps[$x]['menu'][0]['path'] = "/app/dialplan/dialplans.php?app_uuid=16589224-c8
$apps[$x]['menu'][0]['groups'][] = "admin";
$apps[$x]['menu'][0]['groups'][] = "superadmin";
-?>
\ No newline at end of file
+?>
diff --git a/app/follow_me/app_menu.php b/app/follow_me/app_menu.php
index 15e922e343..6054e217f0 100644
--- a/app/follow_me/app_menu.php
+++ b/app/follow_me/app_menu.php
@@ -2,9 +2,9 @@
$apps[$x]['menu'][0]['title']['en-us'] = "Follow Me";
$apps[$x]['menu'][0]['title']['es-mx'] = "SÃgueme";
- $apps[$x]['menu'][0]['title']['de-de'] = "";
- $apps[$x]['menu'][0]['title']['de-ch'] = "";
- $apps[$x]['menu'][0]['title']['de-at'] = "";
+ $apps[$x]['menu'][0]['title']['de-de'] = "Follow Me";
+ $apps[$x]['menu'][0]['title']['de-ch'] = "Follow Me";
+ $apps[$x]['menu'][0]['title']['de-at'] = "Follow Me";
$apps[$x]['menu'][0]['title']['fr-fr'] = "Follow Me";
$apps[$x]['menu'][0]['title']['fr-ca'] = "";
$apps[$x]['menu'][0]['title']['fr-ch'] = "";
@@ -18,4 +18,4 @@
$apps[$x]['menu'][0]['groups'][] = "admin";
$apps[$x]['menu'][0]['groups'][] = "superadmin";
-?>
\ No newline at end of file
+?>
diff --git a/app/provision/index.php b/app/provision/index.php
index edd3b02cc2..fa20304c10 100644
--- a/app/provision/index.php
+++ b/app/provision/index.php
@@ -77,6 +77,7 @@ openlog("fusion-provisioning", LOG_PID | LOG_PERROR, LOG_LOCAL0);
$domain_uuid = $row["domain_uuid"];
}
unset($result, $prep_statement);
+ $_SESSION['domain_uuid'] = $domain_uuid;
//get the domain name
$domain_name = $_SESSION['domains'][$domain_uuid]['domain_name'];
@@ -311,4 +312,4 @@ openlog("fusion-provisioning", LOG_PID | LOG_PERROR, LOG_LOCAL0);
return $needed_parts ? false : $data;
}
-?>
\ No newline at end of file
+?>
diff --git a/app/xml_cdr/xml_cdr.php b/app/xml_cdr/xml_cdr.php
index 83a15eb7ad..a667148085 100644
--- a/app/xml_cdr/xml_cdr.php
+++ b/app/xml_cdr/xml_cdr.php
@@ -471,21 +471,21 @@ else {
switch ($row['direction']) {
case "inbound" :
if ($row['billsec'] == 0)
- echo "
\n";
+ echo "
\n";
else
- echo "
\n";
+ echo "
\n";
break;
case "outbound" :
if ($row['billsec'] == 0)
- echo "
\n";
+ echo "
\n";
else
- echo "
\n";
+ echo "
\n";
break;
case "local" :
if ($row['billsec'] == 0)
- echo "
\n";
+ echo "
\n";
else
- echo "
\n";
+ echo "
\n";
break;
default:
echo " ";
diff --git a/resources/install/scripts/app/ring_groups/index.lua b/resources/install/scripts/app/ring_groups/index.lua
index 31a31ee532..3a99d108af 100644
--- a/resources/install/scripts/app/ring_groups/index.lua
+++ b/resources/install/scripts/app/ring_groups/index.lua
@@ -27,6 +27,8 @@
-- Mark J Crane
-- Luis Daniel Lucio Qurioz
+local log = require "resources.functions.log".ring_group
+
--connect to the database
require "resources.functions.database_handle";
dbh = database_handle('system');
@@ -618,10 +620,23 @@
end
freeswitch.consoleLog("NOTICE", "[ring group] app_data: "..app_data.."\n");
session:execute("bridge", app_data);
+ -- log.noticef("bridge done: originate_disposition:%s answered:%s ready:%s bridged:%s", session:getVariable("originate_disposition"), session:answered() and "true" or "false", session:ready() and "true" or "false", session:bridged() and "true" or "false")
end
--timeout destination
if (app_data ~= nil) then
+ if ring_group_strategy == "enterprise"
+ and ( true
+ --- I see 2 errors here `failure` and `PICKED_OFF`
+ --- but they be more. I think check `answered` is enough.
+ -- or session:getVariable("originate_disposition") == "failure"
+ -- or session:getVariable("originate_disposition") == "PICKED_OFF"
+ )
+ and session:answered() then
+ -- for enterprise calls when intercept we get "failure" but session answered
+ return
+ end
+
if (session:getVariable("originate_disposition") == "ALLOTTED_TIMEOUT"
or session:getVariable("originate_disposition") == "NO_ANSWER"
or session:getVariable("originate_disposition") == "NO_USER_RESPONSE"
diff --git a/resources/install/scripts/app/voicemail/resources/functions/message_waiting.lua b/resources/install/scripts/app/voicemail/resources/functions/message_waiting.lua
index 176910f5a6..b1225075bc 100644
--- a/resources/install/scripts/app/voicemail/resources/functions/message_waiting.lua
+++ b/resources/install/scripts/app/voicemail/resources/functions/message_waiting.lua
@@ -32,9 +32,9 @@
sql = [[SELECT extension, number_alias from v_extensions
WHERE domain_uuid = ']] .. domain_uuid ..[['
AND (mwi_account = ']]..voicemail_id..[[' or mwi_account = ']]..voicemail_id..[[@]]..domain_name..[[')]];
- --if (debug["sql"]) then
+ if (debug["sql"]) then
freeswitch.consoleLog("notice", "[voicemail] SQL: " .. sql .. "\n");
- --end
+ end
status = dbh:query(sql, function(row)
if (string.len(row["number_alias"]) > 0) then
table.insert(accounts, row["number_alias"]);
@@ -74,4 +74,4 @@
event:addHeader("MWI-Voice-Message", message_count.."/0 ("..message_count.."/0)");
event:fire();
end
- end
\ No newline at end of file
+ end
diff --git a/resources/install/scripts/intercept.lua b/resources/install/scripts/intercept.lua
index d6845a940b..a7a6695731 100644
--- a/resources/install/scripts/intercept.lua
+++ b/resources/install/scripts/intercept.lua
@@ -48,6 +48,7 @@
--add the function
require "resources.functions.trim";
+ require "resources.functions.channel_utils";
--exits the script if we didn't connect properly
assert(dbh:connected());
@@ -119,7 +120,7 @@ if ( session:ready() ) then
callee_num = '';
--check the database to get the uuid of a ringing call
- sql = "select call_uuid as uuid, hostname, callee_num, ip_addr from channels ";
+ sql = "select uuid, call_uuid, hostname, callee_num, ip_addr from channels ";
sql = sql .. "where callstate in ('RINGING', 'EARLY') ";
--sql = sql .. "AND direction = 'outbound' ";
if (extension) then
@@ -132,11 +133,18 @@ if ( session:ready() ) then
if (debug["sql"]) then
freeswitch.consoleLog("NOTICE", "sql "..sql.."\n");
end
- dbh:query(sql, function(result)
+ dbh:query(sql, function(result)
--for key, val in pairs(result) do
-- freeswitch.consoleLog("NOTICE", "result "..key.." "..val.."\n");
--end
- uuid = result.uuid;
+ if result.uuid == result.call_uuid then
+ uuid = channel_variable(result.uuid, 'ent_originate_aleg_uuid') or
+ channel_variable(result.uuid, 'cc_member_session_uuid') or
+ channel_variable(result.uuid, 'fifo_bridge_uuid') or
+ result.uuid
+ else
+ uuid = result.call_uuid;
+ end
call_hostname = result.hostname;
callee_num = result.callee_num;
end);
diff --git a/resources/install/scripts/intercept_group.lua b/resources/install/scripts/intercept_group.lua
index 32b1f4ef17..845666c96e 100644
--- a/resources/install/scripts/intercept_group.lua
+++ b/resources/install/scripts/intercept_group.lua
@@ -35,11 +35,19 @@
--add the function
require "resources.functions.explode";
+ require "resources.functions.trim";
+ require "resources.functions.channel_utils";
+
+--prepare the api object
+ api = freeswitch.API();
--connect to the database
require "resources.functions.database_handle";
dbh = database_handle('system');
+--get the hostname
+ hostname = trim(api:execute("switchname", ""));
+
--check if the session is ready
if ( session:ready() ) then
--answer the session
@@ -163,7 +171,7 @@
--check the database to get the uuid of a ringing call
call_hostname = "";
- sql = "SELECT call_uuid AS uuid, hostname, ip_addr FROM channels ";
+ sql = "SELECT uuid, call_uuid, hostname, ip_addr FROM channels ";
sql = sql .. "WHERE callstate in ('RINGING', 'EARLY') ";
--sql = sql .. "AND direction = 'outbound' ";
sql = sql .. "AND (";
@@ -189,14 +197,19 @@
--for key, val in pairs(row) do
-- freeswitch.consoleLog("NOTICE", "row "..key.." "..val.."\n");
--end
- uuid = row.uuid;
+ if row.uuid == row.call_uuid then
+ uuid = channel_variable(row.uuid, 'ent_originate_aleg_uuid') or
+ channel_variable(row.uuid, 'cc_member_session_uuid') or
+ channel_variable(row.uuid, 'fifo_bridge_uuid') or
+ row.uuid
+ else
+ uuid = row.call_uuid;
+ end
call_hostname = row.hostname;
ip_addr = row.ip_addr;
end);
end
---get the hostname
- hostname = freeswitch.getGlobalVariable("hostname");
freeswitch.consoleLog("NOTICE", "Hostname:"..hostname.." Call Hostname:"..call_hostname.."\n");
--intercept a call that is ringing
diff --git a/resources/install/scripts/resources/functions/channel_utils.lua b/resources/install/scripts/resources/functions/channel_utils.lua
new file mode 100644
index 0000000000..a078939d2e
--- /dev/null
+++ b/resources/install/scripts/resources/functions/channel_utils.lua
@@ -0,0 +1,20 @@
+
+local api = api or freeswitch.API()
+
+function channel_variable(uuid, name)
+ local result = api:executeString("uuid_getvar " .. uuid .. " " .. name)
+
+ if result:sub(1, 4) == '-ERR' then return nil, result end
+ if result == '_undef_' then return false end
+
+ return result
+end
+
+function channel_evalute(uuid, cmd)
+ local result = api:executeString("eval uuid:" .. uuid .. " " .. cmd)
+
+ if result:sub(1, 4) == '-ERR' then return nil, result end
+ if result == '_undef_' then return false end
+
+ return result
+end
diff --git a/resources/switch.php b/resources/switch.php
index 096b5d4921..a37727a9d6 100644
--- a/resources/switch.php
+++ b/resources/switch.php
@@ -501,7 +501,8 @@ function outbound_route_to_bridge ($domain_uuid, $destination_number) {
global $db;
$destination_number = trim($destination_number);
- if (is_numeric($destination_number)) {
+ preg_match('/^[\*\+0-9]*$/', $destination_number, $matches, PREG_OFFSET_CAPTURE);
+ if (count($matches) > 0) {
//not found, continue to process the function
}
else {
@@ -1443,4 +1444,4 @@ if (!function_exists('save_switch_xml')) {
}
}
-?>
\ No newline at end of file
+?>