Variablenverwendung in Asterisk extentions.ael

sunware

Neuer User
Mitglied seit
6 Jul 2006
Beiträge
20
Punkte für Reaktionen
0
Punkte
0
Beim Aufbau einer neuen und meiner ersten Telefonanlage mit Asterisk möchte ich vorwiegend mit der AEL Syntax arbeiten.

Beim Zuweisen und Abrufen von Variablen im Dailplan kann ich noch kein konsistentes Verhalten feststellen.

Folgende Situation:

// Definition der globalen Variablen
globals {

IntVorwahl=0;
MeikeAnwesend=1;

Meike_F=SIP/21;
Meike_M=SIP/22;
}

// in einem speziellen Context können die Variablen gesetzt werden
// neuer Zustand durch Sprachausgabe
context setvariables {

66210 => {
Answer();
SetGlobalVar(MeikeAnwesend = 0);
Playback(sw_MeikeAbwesend);
Wait(1);
Hangup;
};
66211 => {
Answer();
SetGlobalVar(MeikeAnwesend = 1);
Playback(sw_MeikeAnwesend);
Wait(1);
Hangup;
};
};

// spezieller Context zum Testen
// Debuggen durch Sprachausgabe
context vonextern {
6605 => {
Answer();
Wait(2);
If( ${CALLERIDNUM:-2} = ${IntVorwahl} )
{
Set(LANGUAGE()=us);
}
else
{
Set(LANGUAGE()=de);
};

SayDigits( ${MeikeAnwesend} );

if ( ${MeikeAnwesend} = 1 )
{
SayDigits(2);
}
else
{
SayDigits(3);
};

};
};

nach dem Verändern der der extensions.ael unf extentions.conf wird in der CLI ein "reload" und "ael reload" ausgeführt.

Wird dann die Variable mit 66211 gesetz bzw. mit 66210 gelöscht, wird die Sprachmeldung richtig ausgegeben, jedoch beim Überprüfen durch wählen von 6605 wird nur manchmal auch wirklich die globale Variable gesetzt.

Wie kann das sein?
Müssen globale Variablen immer mit SetGlobalVar gesetzt werden?
Welche CLI Funktionen müssen aufgerufen werden um ein vollständiger Einlesen der neuen Konfiguration zu erriechen?

Wer hat eine Idee was zu tun ist.

Julian
 
Müssen globale Variablen immer mit SetGlobalVar gesetzt werden?

Ja.

Welche CLI Funktionen müssen aufgerufen werden um ein vollständiger Einlesen der neuen Konfiguration zu erriechen?

Ein
Code:
reload
sollte den Dialplan komplett neu einlesen. Mit
Code:
show dialplan
kannst Du das kontrollieren.
 
betateilchen [CODE schrieb:
reload[/CODE] sollte den Dialplan komplett neu einlesen. kontrollieren.


extensions reload

...damit startest nicht alles neu
 
Selbst wenn ich direkt vor SayDigits die SetGlobalVar neu setze liefert SayDigits 1

Beispiel:
Code von obigem Beispiel
...
SetGlobalVar( MeikeAnwesend=0);
SayDigits( ${MeikeAnwesend} );
...

Muß ich globale Variablen anders abfragen ?
 
Problem gelöst

Danke für die Hilfe - damit ist das Problem gelöst.

Mit dem Befehl:
Set(Variable = Wert|g);

wurde auch kein Wert übergeben
erst nachdem die Leerzeichen vor und hinter dem "=" entfernt wurden, wurde der Wert zugewiesen.

richtig ist:
Set(Variable=Wert|g);

Gibt es irgendwo eine Aufstellung wo Leerzeichen erlaubt, notwendig oder gleichgültig sind. Bei AEL ist das dann fast bei jedem Befehl anders.
 
Die Dokumentation zu den Leerzeichen findest Du grundsätzlich auf voip-info.org
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.