# Asterisk Project : Using Templates

Added by malcolmd , edited by lmadsen on Apr 28, 2011

To use a template when creating another section, simply put the template name in parentheses after the section heading name, as shown in the example below. If you want to inherit from multiple templates, use commas to separate the template names).

    [template-name](!)
    setting=value

    [template-2](!)
    setting2=value2

    [section-name](template-name,template-2)
    setting3=value3

The newly-created section will inherit all the values and objects defined in the template(s), as well as any new settings or objects defined in the newly-created section. The settings and objects defined in the newly-created section override settings or objects of the same name from the templates. Consider this example:

    [test-one](!)
    permit=192.168.0.2
    host=alpha.example.com
    deny=192.168.0.1

    [test-two](!)
    permit=192.168.1.2
    host=bravo.example.com
    deny=192.168.1.1

    [test-three](test-one,test-two)
    permit=192.168.3.1
    host=charlie.example.com

The [test-three] section will be processed as though it had been written in the following way:

    [test-three]
    permit=192.168.0.2
    host=alpha.example.com
    deny=192.168.0.1
    permit=192.168.1.2
    host=bravo.example.com
    deny=192.168.1.1
    permit=192.168.3.1
    host=charlie.example.com

## Comments:

Shouldn't section test-three(foo,bar) read test-three(test-one,test-two) instead? Posted by jpms at Nov 07, 2010 23:33
IMO this is actually a bad example. Having multiple host definitions within a peer is not a valid configuration. Same can be said about deny, permit, deny, permit logic. sip.conf.sample currently has the following example:
    [basic-options](!)                ; a template
            dtmfmode=rfc2833
            context=from-office
            type=friend

    [natted-phone](!,basic-options)   ; another template inheriting basic-options
            nat=yes
            directmedia=no
            host=dynamic

    [public-phone](!,basic-options)   ; another template inheriting basic-options
            nat=no
            directmedia=yes

    [my-codecs](!)                    ; a template for my preferred codecs
            disallow=all
            allow=ilbc
            allow=g729
            allow=gsm
            allow=g723
            allow=ulaw

    [ulaw-phone](!)                   ; and another one for ulaw-only
            disallow=all
            allow=ulaw

    ; and finally instantiate a few phones
    ;
    ; [2133](natted-phone,my-codecs)
    ;        secret = peekaboo
    ; [2134](natted-phone,ulaw-phone)
    ;        secret = not_very_secret
    ; [2136](public-phone,ulaw-phone)
    ;        secret = not_very_secret_either
Posted by pabelanger at Nov 08, 2010 08:19
True, it's not the best example. However, since it was blatantly wrong, I went ahead and made the suggested fix. Posted by russell at Nov 08, 2010 14:18