Files
fusionpbx/resources/install/scripts/resources/functions/blf.lua
Alexey Melnichuk 6fc6e231c8 Add. BLF indication for call forward. (#2664)
* Add. BLF indication for call forward.

To display general status of CallForward use blf like `forward+<extension>`
To display status for specific phone number use blf like `forward+<extension>/<number>`

* Fix. Escape variable in regex expression.

* Fix. Sync DND and CF blf.

* Add. `blf_subscribe` service which can handle all custom subscriptions.

To run for specific protocol it possible run as `luarun blf_subscribe.lua <PROTO>`
2017-06-20 09:23:23 -06:00

47 lines
1.3 KiB
Lua

local presence_in = require "resources.functions.presence_in"
local function blf(enabled, proto, id, domain)
local user = string.format('%s+%s@%s', proto, id, domain)
presence_in.turn_lamp(enabled, user)
end
local function dnd(enabled, extension, number_alias, domain)
blf(enabled, 'dnd', extension, domain)
if number_alias and #number_alias > 0 then
blf(enabled, 'dnd', number_alias, domain)
end
end
local function forward(enabled, extension, number_alias, number, domain)
if number then
extension = extension .. '/' .. number
if number_alias and #number_alias > 0 then
number_alias = number_alias .. '/' .. number
end
end
blf(enabled, 'forward', extension, domain)
if number_alias and #number_alias > 0 then
blf(enabled, 'forward', number_alias, domain)
end
end
local function forward_toggle(enabled, extension, number_alias, old_number, new_number, domain)
-- turn off previews BLF number
if old_number and #old_number > 0 and old_number ~= new_number then
forward(false, extension, number_alias, old_number, domain)
end
-- set common BLF status
forward(enabled, extension, number_alias, nil, domain)
-- set destination specifc status
if new_number and #new_number > 0 then
forward(enabled, extension, number_alias, new_number, domain)
end
end
return {
dnd = dnd;
forward = forward_toggle;
}