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:
committed by
FusionPBX
parent
7015209e54
commit
d43cb9e700
@@ -163,6 +163,10 @@
|
|||||||
$destination_extension = str_replace("+", "\+", $destination_extension);
|
$destination_extension = str_replace("+", "\+", $destination_extension);
|
||||||
|
|
||||||
$destination_feature = $call_flow_feature_code;
|
$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);
|
||||||
$destination_feature = str_replace("+", "\+", $destination_feature);
|
$destination_feature = str_replace("+", "\+", $destination_feature);
|
||||||
|
|
||||||
|
|||||||
@@ -207,6 +207,12 @@ if (session:ready()) then
|
|||||||
call_flow_feature_code.."@"..domain_name,
|
call_flow_feature_code.."@"..domain_name,
|
||||||
call_flow_uuid
|
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
|
--active label
|
||||||
local active_flow_label = (toggle == "true") and call_flow_label or call_flow_alternate_label
|
local active_flow_label = (toggle == "true") and call_flow_label or call_flow_alternate_label
|
||||||
|
|||||||
@@ -10,15 +10,19 @@ local find_call_flow do
|
|||||||
|
|
||||||
local find_call_flow_sql = [[select t1.call_flow_uuid, t1.call_flow_status
|
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
|
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)
|
function find_call_flow(user)
|
||||||
local ext, domain_name = split_first(user, '@', true)
|
local ext, domain_name = split_first(user, '@', true)
|
||||||
|
local _, short = split_first(ext, '+', true)
|
||||||
if not domain_name then return end
|
if not domain_name then return end
|
||||||
local dbh = Database.new('system')
|
local dbh = Database.new('system')
|
||||||
if not dbh then return end
|
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()
|
dbh:release()
|
||||||
if not row then return end
|
if not row then return end
|
||||||
return row.call_flow_uuid, row.call_flow_status
|
return row.call_flow_uuid, row.call_flow_status
|
||||||
@@ -27,6 +31,7 @@ end
|
|||||||
end
|
end
|
||||||
|
|
||||||
local find_dnd do
|
local find_dnd do
|
||||||
|
|
||||||
local find_dnd_sql = [[select t1.do_not_disturb
|
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
|
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)]]
|
where t2.domain_name = :domain_name and (t1.extension = :extension or t1.number_alias=:extension)]]
|
||||||
|
|||||||
Reference in New Issue
Block a user