Add. Allow use call_flow_subscribe.lua with feature codes without flow+ prefix. (#2609)

This commit allows create call flow extension with some feature code (e.g. `*401`)
Then on the phone you can configure BLF like `flow+*401` and use `call_flow_subscribe` to
track current status of this call flow. BLF like `*401` will also works but only if
use `call_flow_monitor` script.
Also it is possible dial `flow+*401` as well as `*401` to toggle call flow state.
This commit is contained in:
Alexey Melnichuk
2017-06-08 18:44:45 +03:00
committed by FusionPBX
parent 7015209e54
commit d43cb9e700
3 changed files with 17 additions and 2 deletions

View File

@@ -163,6 +163,10 @@
$destination_extension = str_replace("+", "\+", $destination_extension);
$destination_feature = $call_flow_feature_code;
// Allows dial feature code as `flow+<feature_code>`
if (substr($destination_feature, 0, 5) != 'flow+') {
$destination_feature = '(?:flow+)?' . $destination_feature;
}
$destination_feature = str_replace("*", "\*", $destination_feature);
$destination_feature = str_replace("+", "\+", $destination_feature);

View File

@@ -207,6 +207,12 @@ if (session:ready()) then
call_flow_feature_code.."@"..domain_name,
call_flow_uuid
);
if string.find(call_flow_feature_code, 'flow+', nil, true) ~= 1 then
presence_in.turn_lamp( toggle == "false",
'flow+'..call_flow_feature_code.."@"..domain_name,
call_flow_uuid
);
end
--active label
local active_flow_label = (toggle == "true") and call_flow_label or call_flow_alternate_label

View File

@@ -10,15 +10,19 @@ local find_call_flow do
local find_call_flow_sql = [[select t1.call_flow_uuid, t1.call_flow_status
from v_call_flows t1 inner join v_domains t2 on t1.domain_uuid = t2.domain_uuid
where t2.domain_name = :domain_name and t1.call_flow_feature_code = :feature_code
where t2.domain_name = :domain_name and (t1.call_flow_feature_code = :feature_code
or t1.call_flow_feature_code = :short_feature_code)
]]
function find_call_flow(user)
local ext, domain_name = split_first(user, '@', true)
local _, short = split_first(ext, '+', true)
if not domain_name then return end
local dbh = Database.new('system')
if not dbh then return end
local row = dbh:first_row(find_call_flow_sql, {domain_name = domain_name, feature_code = ext})
local row = dbh:first_row(find_call_flow_sql, {
domain_name = domain_name, feature_code = ext, short_feature_code = short
})
dbh:release()
if not row then return end
return row.call_flow_uuid, row.call_flow_status
@@ -27,6 +31,7 @@ end
end
local find_dnd do
local find_dnd_sql = [[select t1.do_not_disturb
from v_extensions t1 inner join v_domains t2 on t1.domain_uuid = t2.domain_uuid
where t2.domain_name = :domain_name and (t1.extension = :extension or t1.number_alias=:extension)]]