82 lines
2.2 KiB
Lua
82 lines
2.2 KiB
Lua
require 'resources.functions.config'
|
|
require 'resources.functions.trim'
|
|
|
|
local Database = require 'resources.functions.database'
|
|
|
|
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
|
|
|
|
function channel_transfer(uuid, ext, typ, ctx)
|
|
local cmd = ("uuid_transfer %s %s %s %s"):format(uuid, ext, typ, ctx)
|
|
local result = trim(api:executeString(cmd))
|
|
if result:sub(1, 4) == '-ERR' then return nil, result end
|
|
if result == '_undef_' then return false end
|
|
return result
|
|
end
|
|
|
|
function channel_kill(uuid, cause)
|
|
cause = cause or 'CALL_REJECTED'
|
|
local res = trim(api:executeString("uuid_kill " .. uuid .. " " .. cause))
|
|
return res == '+OK'
|
|
end
|
|
|
|
function channel_display(uuid, text)
|
|
local cmd = ("uuid_display %s '%s'"):format(uuid, text)
|
|
local result = trim(api:executeString(cmd))
|
|
if result:sub(1, 4) == '-ERR' then return nil, result end
|
|
if result == '_undef_' then return false end
|
|
return result
|
|
end
|
|
|
|
local _switchname
|
|
local function switchname()
|
|
if _switchname then return _switchname end
|
|
|
|
local result = api:executeString("switchname")
|
|
|
|
if result:sub(1, 4) == '-ERR' then return nil, result end
|
|
if result == '_undef_' then return false end
|
|
|
|
_switchname = result
|
|
return result
|
|
end
|
|
|
|
function channels_by_number(number, domain)
|
|
local hostname = assert(switchname())
|
|
local dbh = Database.new('switch')
|
|
|
|
local full_number = number .. '@' .. (domain or '%')
|
|
|
|
local sql = ([[select * from channels where hostname='%s' and (
|
|
(context = '%s' and (cid_name = '%s' or cid_num = '%s'))
|
|
or name like '%s' or presence_id like '%s' or presence_data like '%s'
|
|
)
|
|
order by created_epoch
|
|
]]):format(hostname,
|
|
domain, number, number,
|
|
full_number, full_number, full_number
|
|
)
|
|
|
|
local rows = assert(dbh:fetch_all(sql))
|
|
|
|
dbh:release()
|
|
return rows
|
|
end
|