-- ConfigurationModule: FreeSwitchXml
--
module(...,package.seeall)
FreeSwitchXml = {}
-- Create FreeSwitchXml object
function FreeSwitchXml.new(self, object)
object = object or {}
setmetatable(object, self)
self.__index = self
return object
end
function FreeSwitchXml.param(self, name, value)
return ''
end
function FreeSwitchXml.variable(self, name, value)
return ''
end
function FreeSwitchXml.document(self, sections_xml)
if type(sections_xml) == "string" then
sections_xml = { sections_xml }
elseif type(sections_xml) == "nil" then
sections_xml = { "" }
end
local xml_string=
[[
]] .. table.concat(sections_xml, "\n") .. [[
]]
return xml_string
end
function FreeSwitchXml.directory(self, entries_xml, domain)
if type(entries_xml) == "string" then
entries_xml = { entries_xml }
elseif type(entries_xml) == "nil" then
entries_xml = { "" }
end
local xml_string =
[[
]] .. table.concat(entries_xml, "\n") .. [[
]]
return xml_string
end
function FreeSwitchXml.group_default(self, entries_xml)
if type(entries_xml) == "string" then
entries_xml = { entries_xml }
elseif type(entries_xml) == "nil" then
entries_xml = { "" }
end
local xml_string =
[[
]] .. table.concat(entries_xml, "\n") .. [[
]]
return xml_string
end
function FreeSwitchXml.user(self, user)
require 'common.configuration_file'
local params = common.configuration_file.get('/opt/freeswitch/scripts/ini/sip_accounts.ini', 'parameters');
params['password'] = user.password;
params['vm-password'] = user.voicemail_pin;
local variables = {
user_context = "default",
gs_from_gateway = "false",
gs_account_id = user.id,
gs_account_uuid = user.uuid,
gs_account_type = "SipAccount",
gs_account_state = user.state,
gs_account_caller_name = user.caller_name,
gs_account_owner_type = user.sip_accountable_type,
gs_account_owner_id = user.sip_accountable_id
}
local params_xml = {}
for name, value in pairs(params) do
params_xml[#params_xml+1] = self:param(name, value)
end
local variables_xml = {}
for name, value in pairs(variables) do
variables_xml[#variables_xml+1] = self:variable(name, value)
end
local xml_string =
[[
]] .. table.concat(params_xml, "\n") .. [[
]] .. table.concat(variables_xml, "\n") .. [[
]]
return xml_string
end
function FreeSwitchXml.gateway_user(self, user, gateway_name, auth_name)
user.id = user.id or 0
local params = {
['password'] = user.password,
}
local variables = {
user_context = "default",
gs_from_gateway = "true",
gs_gateway_name = gateway_name,
gs_gateway_id = user.id
}
local params_xml = {}
for name, value in pairs(params) do
params_xml[#params_xml+1] = self:param(name, value)
end
local variables_xml = {}
for name, value in pairs(variables) do
variables_xml[#variables_xml+1] = self:variable(name, value)
end
local xml_string =
[[
]] .. table.concat(params_xml, "\n") .. [[
]] .. table.concat(variables_xml, "\n") .. [[
]]
return xml_string
end
function FreeSwitchXml.sofia(self, parameters, profiles_xml)
if type(profiles_xml) == "string" then
profiles_xml = { profiles_xml }
elseif type(profiles_xml) == "nil" then
profiles_xml = { "" }
end
local params_xml = {}
for name, value in pairs(parameters) do
params_xml[#params_xml+1] = self:param(name, value)
end
local xml_string =
[[
]] .. table.concat(params_xml, "\n") .. [[
]] .. table.concat(profiles_xml, "\n") .. [[
]]
return xml_string
end
function FreeSwitchXml.sofia_profile(self, profile_name, parameters, gateways_xml)
params_xml = {}
for name, value in pairs(parameters) do
params_xml[#params_xml+1] = self:param(name, value)
end
if type(gateways_xml) == "string" then
gateways_xml = { gateways_xml }
elseif type(gateways_xml) == "nil" then
gateways_xml = { "" }
end
local xml_string =
[[
]] .. table.concat(gateways_xml, "\n") .. [[
]] .. table.concat(params_xml, "\n") .. [[
]]
return xml_string
end
function FreeSwitchXml.gateway(self, gateway_name, parameters)
local params_xml = {}
if parameters then
for name, value in pairs(parameters) do
params_xml[#params_xml+1] = self:param(name, value)
end
end
local xml_string =
[[
]] .. table.concat(params_xml, "\n") .. [[
]]
return xml_string
end
function FreeSwitchXml.conference(self, profiles_xml)
if type(profiles_xml) == "string" then
profiles_xml = { profiles_xml }
elseif type(profiles_xml) == "nil" then
profiles_xml = { "" }
end
local xml_string =
[[
]] .. table.concat(profiles_xml, "\n") .. [[
]]
return xml_string
end
function FreeSwitchXml.conference_profile(self, profile_name, parameters)
params_xml = {}
for name, value in pairs(parameters) do
params_xml[#params_xml+1] = self:param(name, value)
end
local xml_string =
[[
]] .. table.concat(params_xml, "\n") .. [[
]]
return xml_string
end