Vererbung von Channel-Variablen

Wird im Lauf eines Gespräches ein weiterer Channel aufgebaut, so hat dieser natürlich wieder eigene Channel-Variablen.

Einstufige Vererbung

Will man eine Channel-Variable übergeben, aber keine globale Variable dafür benutzen, so kann man der Channel-Variable ein _ (Underscore) voransetzen. Diese Channel-Variable wird dann an den nächsten Channel vererbt. Dabei wird der Underscore entfernt. Die Vererbung kann also nur einmal erfolgen.

Beispiel:

exten => 1234,1,Set(_KUCHENSORTE="Marmorkuchen")

Mehrstufige Vererbung

Will man eine Channel-Variable beliebig oft vererben, so muss man zwei __ (Underscore)-Zeichen vor die Variable setzen. Die zwei Underscore-Zeichen werden dann immer mitvererbt.

[Warnung]

Asterisk unterscheidet die Namen von Variablen, die mit einem Underscore anfangen, nicht von Variablen, die keinen Underscore haben. So wird im folgenden Beispiel aus der vererbbaren Channel-Variable KUCHENSORTE eine normale (nicht vererbbare) Channel-Variable:

exten => 1234,1,Set(__KUCHENSORTE="Marmorkuchen")
exten => 1234,n,Set(KUCHENSORTE="Marmorkuchen")

Beispiel:

exten => 1234,1,Set(__KUCHENSORTE="Nusskuchen")

Bei einem Abruf einer vererbten Channel-Variable ist es egal, ob man die Unterstriche voranstellt oder nicht. Die beiden folgenden Zeilen geben zweimal den gleichen Wert im CLI aus:

exten => 1234,1,NoOp(${__KUCHENSORTE})
exten => 1234,n,NoOp(${KUCHENSORTE})