Konfigurations-Templates

Konfigurationsdateien wie die pjsip.conf, iax.conf, queues.conf oder confbridge.conf haben oft viele sehr ähnliche Einträge und werden dadurch schnell unübersichtlich.

In diesem Anhang zeigen wir das Template-Feature am Beispiel von PJSIP-Endpoints — das Prinzip funktioniert aber in allen Asterisk-Konfigurationsdateien identisch.

Ohne Template

[201]
type=endpoint
context=default
disallow=all
allow=ulaw
allow=alaw
auth=201
aors=201

[201]
type=auth
auth_type=userpass
username=201
password=GEHEIM1

[201]
type=aor
max_contacts=1

[202]
type=endpoint
context=default
disallow=all
allow=ulaw
allow=alaw
auth=202
aors=202

[202]
type=auth
auth_type=userpass
username=202
password=GEHEIM2

[202]
type=aor
max_contacts=1

Bei drei Telefonen noch überschaubar, bei dreißig ein Alptraum.

Mit Template

Ein Template wird durch (!) nach dem Blocknamen markiert und von einem anderen Block mit (template-name) geerbt:

; --- Templates ---
[endpoint-template](!)
type=endpoint
context=default
disallow=all
allow=ulaw
allow=alaw
allow=g722

[auth-template](!)
type=auth
auth_type=userpass

[aor-template](!)
type=aor
max_contacts=1

; --- Telefon 201 ---
[201](endpoint-template)
auth=201
aors=201

[201](auth-template)
username=201
password=GEHEIM1

[201](aor-template)

; --- Telefon 202 ---
[202](endpoint-template)
auth=202
aors=202

[202](auth-template)
username=202
password=GEHEIM2

[202](aor-template)

Die Templates (endpoint-template, auth-template, aor-template) sind selbst nicht aktiv — (!) markiert sie nur als Vorlage. Die konkreten Telefonblöcke erben deren Inhalte und überschreiben bei Bedarf einzelne Felder.

Template-Ketten und Mehrfach-Erben

Ein Block kann auch mehrere Templates erben:

[basis](!)
type=endpoint
disallow=all
allow=ulaw

[hd-audio](!)
allow=g722
allow=opus

[hq-telefon](basis,hd-audio)
auth=hq-telefon
aors=hq-telefon

Die Reihenfolge in den Klammern ist wichtig: Spätere Templates überschreiben frühere bei gleichen Feldnamen.

Wo funktionieren Templates?

Das Template-Feature ist eine Fähigkeit des allgemeinen Asterisk-Konfigurations-Parsers. Es funktioniert überall, wo dieser Parser benutzt wird — also in praktisch allen .conf-Dateien. Konkret sind Templates besonders nützlich in:

  • pjsip.conf (endpoint/auth/aor)

  • iax.conf

  • queues.conf (Queue-Definitionen)

  • confbridge.conf (Bridge- und User-Profile — hier sind Templates sogar idiomatisch)

  • manager.conf (AMI-Benutzer)