-- 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