Skip to content

Auerswald/FONtevo COMfortel D-series desktop phones#

<?xml version="1.0" encoding="utf-8"?>
<!-- Template für Telefone der D-Serie  -->
<configuration>
    <locales>
        <deviceLanguage>$(ui.language:isolocale)</deviceLanguage>
        <webserverLanguage>$(ui.language:isolocale)</webserverLanguage>
        <deviceLocation>$(pbx.loc.language:iculocale)</deviceLocation>
    </locales>
    <identities>
       <identity>
          <active>true</active>
          <displayname>$(sip.displayname)</displayname>
          <username>$(sip.username)</username>
          <host>$(sip.server)</host>
          <password>$(sip.userpassword)</password>
          <frameSize>20</frameSize>
          <audiocodecs>
             <audiocodec>G.722</audiocodec>
             <audiocodec>G.711</audiocodec>
             <audiocodec>G.726</audiocodec>
             <audiocodec>G.729</audiocodec>
             <audiocodec>iLBC</audiocodec>
          </audiocodecs>
          <clir>displayAnonymous</clir>
          <localmoh>false</localmoh>
          <secureConnection>$(sip.usesrtp:false,true)</secureConnection>
          <srtp>$(sip.usesrtp:disabled,mandatory)</srtp>
          <checkHostname>true</checkHostname>
          <pickupCode>##06</pickupCode>
          <certificate>$(pbx.certificate)</certificate>
       </identity>
       <identity>
          <active>false</active>
       </identity>
       <identity>
          <active>false</active>
       </identity>
       <identity>
          <active>false</active>
       </identity>
       <identity>
          <active>false</active>
       </identity>
       <identity>
          <active>false</active>
       </identity>
    </identities>
    <contacts>
       <ldap>
          <active>$(ldap.enable:false,true)</active>
          <baseDN>$(ldap.base)</baseDN>
          <ldapProtocol>ldap</ldapProtocol>
          <ldapVersion>three</ldapVersion>
          <maxHits>20</maxHits>
          <nameAttributes>cn sn givenName company o</nameAttributes>
          <nameFilter>(|(cn=%*)(sn=%*)(givenName=%*)(company=%*)(o=%*))</nameFilter>
          <numberAttributes>mobile telephoneNumber homePhone</numberAttributes>
          <numberFilter>(|(telephoneNumber=*%*)(mobile=*%*)(homePhone=*%*))</numberFilter>
          <orderBy>orderByFirstname</orderBy>
          <port>389</port>
          <reverseNumberLookupIncoming>1</reverseNumberLookupIncoming>
          <reverseNumberLookupOutgoing>1</reverseNumberLookupOutgoing>
          <password>$(ldap.password)</password>
          <server>$(ldap.server)</server>
          <username>$(ldap.username)</username>
       </ldap>
    </contacts>
    <provisioning>
        <active>true</active>
        <dhcp>false</dhcp>
        <redirect>false</redirect>
        <pbx>true</pbx>
        <execution>
            <mondays>true</mondays>
            <tuesdays>true</tuesdays>
            <wednesdays>true</wednesdays>
            <thursdays>true</thursdays>
            <fridays>true</fridays>
            <saturdays>true</saturdays>
            <sundays>true</sundays>
            <time>01:00</time>
        </execution>
        <sip>
           <active>true</active>
        </sip>
        <url>https://$(prov.secureserver):$(prov.port)/$(prov.path)</url>
    </provisioning>
    <timeAndDate>
        <ntpEnable>$(time.ntp_enable:false,true)</ntpEnable>
        <ntpServer>$(time.server)</ntpServer>
        <timezone>Europe/$(time.timezonename.town)</timezone>
    </timeAndDate>
    <keys>
      <phoneXtensions>
        <key keyNumber="4" label="ID $(sip.username)">
          <keyConfiguration>
            <line>
              <id>1</id>
              <component/>
            </line>
          </keyConfiguration>
          <templateName>@string/line_title</templateName>
        </key>
      </phoneXtensions>
        <homeScreen>
        <key keyNumber="1">
          <keyConfiguration>
            <function>
              <invocations>
                <invocation>
                  <intent>
                    <component>de.auerswald.home/.MenuActivity</component>
                    <action>de.auerswald.intent.ALL_APPS</action>
                  </intent>
                </invocation>
              </invocations>
            </function>
          </keyConfiguration>
        </key>
        <key keyNumber="2">
          <keyConfiguration>
            <function>
              <invocations>
                <invocation>
                  <intent>
                    <component>com.android.dialer/.calllog.CallLogActivity</component>
                    <action>android.intent.action.MAIN</action>
                  </intent>
                </invocation>
              </invocations>
            </function>
          </keyConfiguration>
        </key>
        <key keyNumber="3">
          <keyConfiguration>
            <function>
              <invocations>
                <invocation>
                  <intent>
                    <component>de.auerswald.contacts/.AddressBookActivityFromSoftkey</component>
                    <action>android.intent.action.MAIN</action>
                  </intent>
                </invocation>
              </invocations>
            </function>
          </keyConfiguration>
        </key>
        <key keyNumber="4" label="@string/softkey_layer">
          <keyConfiguration>
            <function>
              <invocations>
                <invocation>
                  <setting path="/keyLayer/phoneXtensions">
                    <values>
                      <value>1</value>
                    </values>
                    <values>
                      <value>2</value>
                    </values>
                    <values>
                      <value>3</value>
                    </values>
                  </setting>
                </invocation>
              </invocations>
            </function>
          </keyConfiguration>
        </key>
      </homeScreen>
    </keys>
    <templates>
        <!-- Activate a predefined config in the PBX
           parameter: identity for PBX identification
           parameter: configuration_id
        -->
        <template prio="10" name="@string/config_activation_title">
            <keyConfiguration>
                <lua>
                    <code>
                        local valid = false
                        local active = false
                        local on = "##8*81"
                        local userpath = "/identities/identity["..identity.."]/"
                        local host = config.get(userpath .. "host")
                        local user = config.get(userpath .. "username")

                        local function updateLed()
                            if valid then
                                if active then
                                    key:setLed( "green" )
                                else
                                    key:setLed( "off" )
                                end
                            else
                                key:setLed( "red", true )
                            end
                        end
                        local unescape = function(url)
                            return url:gsub("%%(%x%x)", function(x) return string.char(tonumber(x, 16)) end )
                        end
                        local function check_sub(data, uri, handle)
                            local x = xml.eval(data)
                            local test_uri_on = "sip:"..on..konfid.."#"..user.."@"..host
                            if unescape(uri) == test_uri_on then
                                for _,dlg in ipairs(x) do
                                    state = dlg:find("state")
                                    if state and state[1] == "trying" then
                                        active = true
                                    elseif state and state[1] == "terminated" then
                                        active = false
                                    end
                                end
                            end
                            updateLed()
                        end
                        local function check_valid()
                            if identity == "" or konfid == "" then
                                valid = false
                            else
                                valid = true
                            end
                        end
                        local function sub()
                            sip.subscribe(on..konfid.."#"..user,"0",identity,check_sub)
                        end
                        function onKeyUp()
                            if not active and valid then
                                sip.invite(on..konfid.."#"..user,false,identity,true)
                            end
                        end
                        check_valid()
                        updateLed()
                        sub()
                    </code>
                    <params>
                        <param name="identity"/>
                        <param name="konfid"/>
                    </params>
                </lua>
            </keyConfiguration>
            <parameters>
                <parameter name="@string/identity">
                    <path>//param[@name="identity"]/value</path>
                </parameter>
                <parameter name="@string/configuration_id">
                    <path>//param[@name="konfid"]/value</path>
                </parameter>
            </parameters>
        </template>
        <!-- switch the call forwarding within the PBX on or off
             parameter: identity
             parameter: msn: which msn to forward
             parameter: target: call forwarding target
        -->
        <template prio="10" name="@string/call_forwarding_extern_unconditional_title">
        <keyConfiguration>
            <lua>
                <code>
                    local valid = false
                    local active = false
                    local prefix ="##96"
                    local on = "*21*"
                    local off = "##21#"
                    local userpath = "/identities/identity["..identity.."]/"
                    local host = config.get(userpath .. "host")
                    local user = config.get(userpath .. "username")

                    local function updateLed()
                        if valid then
                            if active then
                                key:setLed( "green" )
                            else
                                key:setLed( "off" )
                            end
                        else
                            key:setLed( "red", true )
                        end
                    end
                    local unescape = function(url)
                        return url:gsub("%%(%x%x)", function(x) return string.char(tonumber(x, 16)) end )
                    end
                    local function check_sub(data, uri, handle)
                        local x = xml.eval(data)
                        local test_uri_on = "sip:"..prefix..msn.."#"..on..target.."#"..user.."@"..host
                        if (unescape(uri) == test_uri_on) and x ~= nil then
                            for _,dlg in ipairs(x) do
                                state = dlg:find("state")
                                if state and state[1] == "trying" then
                                    active = true
                                elseif state and state[1] == "terminated" then
                                    active = false
                                end
                            end
                        end
                        updateLed()
                    end
                    local function check_valid()
                        if identity =="" or target=="" then
                            valid = false
                        else
                            valid = true
                        end
                    end
                    local function sub()
                        sip.subscribe(prefix..msn.."#"..on..target.."#"..user,"0",identity,check_sub)
                    end
                    function onKeyUp()
                        if active and valid then
                                sip.invite(prefix..msn..off.."#"..user,false,identity,true)
                        elseif valid then
                            sip.invite(prefix..msn.."#"..on..target.."#"..user,false,identity,true)
                        end
                    end
                    check_valid()
                    updateLed()
                    sub()
                </code>
                <params>
                    <param name="identity"/>
                    <param name="target"/>
                    <param name="msn"/>
                </params>
            </lua>
        </keyConfiguration>
        <parameters>
            <parameter name="@string/identity">
                <path>//param[@name="identity"]/value</path>
            </parameter>
            <parameter name="@string/msn">
                <path>//param[@name="msn"]/value</path>
            </parameter>
            <parameter name="@string/target">
                <path>//param[@name="target"]/value</path>
            </parameter>
        </parameters>
        </template>
        <!-- switch the call forwarding for busy within the PBX on or off
             parameter: identity
             parameter: msn: which msn to forward
             parameter: target: call forwarding target
        -->
        <template prio="10" name="@string/call_forwarding_extern_busy_title">
            <keyConfiguration>
                <lua>
                    <code>
                        local valid = false
                        local active = false
                        local prefix ="##96"
                        local on = "*67*"
                        local off = "##67#"
                        local userpath = "/identities/identity["..identity.."]/"
                        local host = config.get(userpath .. "host")
                        local user = config.get(userpath .. "username")
                        local function updateLed()
                            if valid then
                                if active then
                                    key:setLed( "green" )
                                else
                                    key:setLed( "off" )
                                end
                            else
                                key:setLed( "red", true )
                            end
                        end

                        local unescape = function(url)
                            return url:gsub("%%(%x%x)", function(x) return string.char(tonumber(x, 16)) end )
                        end
                        local function check_sub(data, uri, handle)
                            local x = xml.eval(data)
                            local test_uri_on = "sip:"..prefix..msn.."#"..on..target.."#"..user.."@"..host
                            if unescape(uri) == test_uri_on and x ~= nil then
                                for _,dlg in ipairs(x) do
                                    state = dlg:find("state")
                                    if state and state[1] == "trying" then
                                        active = true
                                    elseif state and state[1] == "terminated" then
                                        active = false
                                    end
                                end
                            end
                            updateLed()
                        end
                        local function check_valid()
                            if identity =="" or target=="" then
                                valid = false
                            else
                                valid = true
                            end
                        end
                        local function sub()
                            sip.subscribe(prefix..msn.."#"..on..target.."#"..user,"0",identity,check_sub)
                        end
                        function onKeyUp()
                            if active and valid then
                                    sip.invite(prefix..msn..off.."#"..user,false,identity,true)
                            elseif valid then
                                sip.invite(prefix..msn.."#"..on..target.."#"..user,false,identity,true)
                            end
                        end
                        check_valid()
                        updateLed()
                        sub()
                    </code>
                    <params>
                        <param name="identity"/>
                        <param name="target"/>
                        <param name="msn"/>
                    </params>
                </lua>
            </keyConfiguration>
            <parameters>
                <parameter name="@string/identity">
                    <path>//param[@name="identity"]/value</path>
                </parameter>
                <parameter name="@string/msn">
                    <path>//param[@name="msn"]/value</path>
                </parameter>
                <parameter name="@string/target">
                    <path>//param[@name="target"]/value</path>
                </parameter>
            </parameters>
        </template>
        <!-- switch the call forwarding for not responding within the PBX on or off
             parameter: identity
             parameter: msn: which msn to forward
             parameter: target: call forwarding target
        -->
        <template prio="10" name="@string/call_forwarding_extern_no_response_title">
            <keyConfiguration>
                <lua>
                    <code>
                        local valid = false
                        local active = false
                        local prefix ="##96"
                        local on = "*61*"
                        local off = "##61#"
                        local userpath = "/identities/identity["..identity.."]/"
                        local host = config.get(userpath .. "host")
                        local user = config.get(userpath .. "username")

                        local function updateLed()
                            if valid then
                                if active then
                                    key:setLed( "green" )
                                else
                                    key:setLed( "off" )
                                end
                            else
                                key:setLed( "red", true )
                            end
                        end
                        local unescape = function(url)
                            return url:gsub("%%(%x%x)", function(x) return string.char(tonumber(x, 16)) end )
                        end
                        local function check_sub(data, uri, handle)
                            local x = xml.eval(data)
                            local test_uri_on = "sip:"..prefix..msn.."#"..on..target.."#"..user.."@"..host
                            if unescape(uri) == test_uri_on and x ~= nil then
                                for _,dlg in ipairs(x) do
                                    state = dlg:find("state")
                                    if state and state[1] == "trying" then
                                        active = true
                                    elseif state and state[1] == "terminated" then
                                        active = false
                                    end
                                end
                            end
                            updateLed()
                        end
                        local function check_valid()
                            if identity =="" or target=="" then
                                valid = false
                            else
                                valid = true
                            end
                        end
                        local function sub()
                            sip.subscribe(prefix..msn.."#"..on..target.."#"..user,"0",identity,check_sub)
                        end
                        function onKeyUp()
                            if active and valid then
                                    sip.invite(prefix..msn..off.."#"..user,false,identity,true)
                            elseif valid then
                                sip.invite(prefix..msn.."#"..on..target.."#"..user,false,identity,true)
                            end
                        end
                        check_valid()
                        updateLed()
                        sub()
                    </code>
                    <params>
                        <param name="identity"/>
                        <param name="target"/>
                        <param name="msn"/>
                    </params>
                </lua>
            </keyConfiguration>
            <parameters>
                <parameter name="@string/identity">
                    <path>//param[@name="identity"]/value</path>
                </parameter>
                <parameter name="@string/msn">
                    <path>//param[@name="msn"]/value</path>
                </parameter>
                <parameter name="@string/target">
                    <path>//param[@name="target"]/value</path>
                </parameter>
            </parameters>
        </template>
        <!-- switch the call forwarding within the PBX on or off
             parameter: identity
             parameter: target: call forwarding target
        -->
        <template prio="10" name="@string/call_forwarding_unconditional_title">
            <keyConfiguration>
                <lua>
                    <code>
                        local valid = false
                        local active = false
                        local on = "*21*"
                        local off = "#21#"
                        local userpath = "/identities/identity["..identity.."]/"
                        local host = config.get(userpath .. "host")
                        local user = config.get(userpath .. "username")
                        local function updateLed()
                            if valid then
                                if active then
                                    key:setLed( "green" )
                                else
                                    key:setLed( "off" )
                                end
                            else
                                key:setLed( "red", true )
                            end
                        end
                        local unescape = function(url)
                            return url:gsub("%%(%x%x)", function(x) return string.char(tonumber(x, 16)) end )
                        end
                        local function check_sub(data, uri, handle)
                            local x = xml.eval(data)
                            local test_uri_on = "sip:"..on..target.."#"..user.."@"..host
                            if unescape(uri) == test_uri_on and x ~= nil then
                                for _,dlg in ipairs(x) do
                                    state = dlg:find("state")
                                    if state and state[1] == "trying" then
                                        active = true
                                    elseif state and state[1] == "terminated" then
                                        active = false
                                    end
                                end
                            end
                            updateLed()
                        end
                        local function check_valid()
                            if identity == "" or target== "" then
                                valid = false
                            else
                                valid = true
                            end
                        end
                        local function sub()
                            sip.subscribe(on..target.."#"..user,"0",identity,check_sub)
                        end
                        function onKeyUp()
                            if active and valid then
                                    sip.invite(off.."#"..user,false,identity,true)
                            elseif valid then
                                sip.invite(on..target.."#"..user,false,identity,true)
                            end
                        end
                        check_valid()
                        updateLed()
                        sub()
                    </code>
                    <params>
                        <param name="identity"/>
                        <param name="target"/>
                    </params>
                </lua>
            </keyConfiguration>
            <parameters>
                <parameter name="@string/identity">
                    <path>//param[@name="identity"]/value</path>
                </parameter>
                <parameter name="@string/target">
                    <path>//param[@name="target"]/value</path>
                </parameter>
            </parameters>
        </template>
        <!-- switch the call forwarding for busy within the PBX on or off
             parameter: identity
             parameter: target: call forwarding target
        -->
        <template prio="10" name="@string/call_forwarding_busy_title">
            <keyConfiguration>
                <lua>
                    <code>
                        local valid = false
                        local active = false
                        local on = "*67*"
                        local off = "#67#"
                        local userpath = "/identities/identity["..identity.."]/"
                        local host = config.get(userpath .. "host")
                        local user = config.get(userpath .. "username")
                        local function updateLed()
                            if valid then
                                if active then
                                    key:setLed( "green" )
                                else
                                    key:setLed( "off" )
                                end
                            else
                                key:setLed( "red", true )
                            end
                        end
                        local unescape = function(url)
                            return url:gsub("%%(%x%x)", function(x) return string.char(tonumber(x, 16)) end )
                        end
                        local function check_sub(data, uri, handle)
                            local x = xml.eval(data)
                            local test_uri_on = "sip:"..on..target.."#"..user.."@"..host
                            if unescape(uri) == test_uri_on and x ~= nil then
                                for _,dlg in ipairs(x) do
                                    state = dlg:find("state")
                                    if state and state[1] == "trying" then
                                        active = true
                                    elseif state and state[1] == "terminated" then
                                        active = false
                                    end
                                end
                            end
                            updateLed()
                        end
                        local function check_valid()
                            if identity =="" or target=="" then
                                valid = false
                            else
                                valid = true
                            end
                        end
                        local function sub()
                            sip.subscribe(on..target.."#"..user,"0",identity,check_sub)
                        end
                        function onKeyUp()
                            if active and valid then
                                    sip.invite(off.."#"..user,false,identity,true)
                            elseif valid then
                                sip.invite(on..target.."#"..user,false,identity,true)
                            end
                        end
                        check_valid()
                        updateLed()
                        sub()
                    </code>
                    <params>
                        <param name="identity"/>
                        <param name="target"/>
                    </params>
                </lua>
            </keyConfiguration>
            <parameters>
                <parameter name="@string/identity">
                    <path>//param[@name="identity"]/value</path>
                </parameter>
                <parameter name="@string/target">
                    <path>//param[@name="target"]/value</path>
                </parameter>
            </parameters>
        </template>
        <!-- switch the call forwarding for not responding within the PBX on or off
             parameter: identity
             parameter: target: call forwarding target
        -->
        <template prio="10" name="@string/call_forwarding_no_response_title">
            <keyConfiguration>
                <lua>
                    <code>
                        local valid = false
                        local active = false
                        local on = "*61*"
                        local off = "#61#"
                        local userpath = "/identities/identity["..identity.."]/"
                        local host = config.get(userpath .. "host")
                        local user = config.get(userpath .. "username")
                        local function updateLed()
                            if valid then
                                if active then
                                    key:setLed( "green" )
                                else
                                    key:setLed( "off" )
                                end
                            else
                                key:setLed( "red", true )
                            end
                        end
                        local unescape = function(url)
                            return url:gsub("%%(%x%x)", function(x) return string.char(tonumber(x, 16)) end )
                        end
                        local function check_sub(data, uri, handle)
                            local x = xml.eval(data)
                            local test_uri_on = "sip:"..on..target.."#"..user.."@"..host
                            if unescape(uri) == test_uri_on and x ~= nil then
                                for _,dlg in ipairs(x) do
                                    state = dlg:find("state")
                                    if state and state[1] == "trying" then
                                        active = true
                                    elseif state and state[1] == "terminated" then
                                        active = false
                                    end
                                end
                            end
                            updateLed()
                        end
                        local function check_valid()
                            if identity =="" or target=="" then
                                valid = false
                            else
                                valid = true
                            end
                        end
                        local function sub()
                            sip.subscribe(on..target.."#"..user,"0",identity,check_sub)
                        end
                        function onKeyUp()
                            if active and valid then
                                    sip.invite(off.."#"..user,false,identity,true)
                            elseif valid then
                                sip.invite(on..target.."#"..user,false,identity,true)
                            end
                        end
                        check_valid()
                        updateLed()
                        sub()
                    </code>
                    <params>
                        <param name="identity"/>
                        <param name="target"/>
                    </params>
                </lua>
            </keyConfiguration>
            <parameters>
                <parameter name="@string/identity">
                    <path>//param[@name="identity"]/value</path>
                </parameter>
                <parameter name="@string/target">
                    <path>//param[@name="target"]/value</path>
                </parameter>
            </parameters>
        </template>
        <!-- toggles do not disturb in the PBX
        parameter: identity specifying the PBX
        -->
        <template prio="10" name="@string/do_not_disturb_title">
            <keyConfiguration>
                <lua>
                    <code>
                        local valid = false
                        local active = false
                        local on = "##8*211"
                        local off = "##8*210"
                        local userpath = "/identities/identity["..identity.."]/"
                        local host = config.get(userpath .. "host")
                        local user = config.get(userpath .. "username")
                        local function updateLed()
                            if valid then
                                if active then
                                    key:setLed( "red" )
                                else
                                    key:setLed( "off" )
                                end
                            else
                                key:setLed( "red", true )
                            end
                        end
                        local unescape = function(url)
                            return url:gsub("%%(%x%x)", function(x) return string.char(tonumber(x, 16)) end )
                        end
                        local function check_sub(data, uri, handle)
                            local x = xml.eval(data)
                            local test_uri_on = "sip:"..on.."#"..user.."@"..host
                            if unescape(uri) == test_uri_on and x ~= nil then
                                for _,dlg in ipairs(x) do
                                    state = dlg:find("state")
                                    if state and state[1] == "trying" then
                                        active = true
                                    elseif state and state[1] == "terminated" then
                                        active = false
                                    end
                                end
                            end
                            updateLed()
                        end
                        local function check_valid()
                            if identity == "" then
                                valid = false
                            else
                                valid = true
                            end
                        end
                        local function sub()
                            sip.subscribe(on.."#"..user,"0",identity,check_sub)
                        end
                        function onKeyUp()
                            if active and valid then
                                    sip.invite(off.."#"..user,false,identity,true)
                            elseif valid then
                                sip.invite(on.."#"..user,false,identity,true)
                            end
                        end
                        check_valid()
                        updateLed()
                        sub()
                    </code>
                    <params>
                        <param name="identity"/>
                    </params>
                </lua>
            </keyConfiguration>
            <parameters>
                <parameter name="@string/identity">
                    <path>//param[@name="identity"]/value</path>
                </parameter>
            </parameters>
        </template>
        <!-- toggle a group membership
        parameter: identity specifying the PBX
        parameter: group id
         -->
        <template prio="10" name="@string/group_title">
            <keyConfiguration>
                <lua>
                    <code>
                        local valid = false
                        local active = false
                        local on = "##8*401"
                        local off = "##8*400"
                        local userpath = "/identities/identity["..identity.."]/"
                        local host = config.get(userpath .. "host")
                        local user = config.get(userpath .. "username")
                        local function updateLed()
                            if valid then
                                if active then
                                    key:setLed( "green" )
                                else
                                    key:setLed( "off" )
                                end
                            else
                                key:setLed( "red", true )
                            end
                        end
                        local unescape = function(url)
                            return url:gsub("%%(%x%x)", function(x) return string.char(tonumber(x, 16)) end )
                        end
                        local function check_sub(data, uri, handle)
                            local x = xml.eval(data)
                            local test_uri_on = "sip:"..on..group.."#"..user.."@"..host
                            if unescape(uri) == test_uri_on and x ~= nil then
                                for _,dlg in ipairs(x) do
                                    state = dlg:find("state")
                                    if state and state[1] == "trying" then
                                        active = true
                                    elseif state and state[1] == "terminated" then
                                        active = false
                                    end
                                end
                            end
                            updateLed()
                        end
                        local function check_valid()
                            if identity == "" or group == "" then
                                valid = false
                            else
                                valid = true
                            end
                        end
                        local function sub()
                            sip.subscribe(on..group.."#"..user,"0",identity,check_sub)
                        end
                        function onKeyUp()
                            if active and valid then
                                    sip.invite(off..group.."#"..user,false,identity,true)
                            elseif valid then
                                sip.invite(on..group.."#"..user,false,identity,true)
                            end
                        end
                        check_valid()
                        updateLed()
                        sub()
                    </code>
                    <params>
                        <param name="identity"/>
                        <param name="group"/>
                    </params>
                </lua>
            </keyConfiguration>
            <parameters>
                <parameter name="@string/identity">
                    <path>//param[@name="identity"]/value</path>
                </parameter>
                <parameter name="@string/group">
                    <path>//param[@name="group"]/value</path>
                </parameter>
            </parameters>
        </template>
    </templates>
</configuration>