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 +?>