Variablen addieren

nc2001

Neuer User
Mitglied seit
29 Jul 2004
Beiträge
134
Punkte für Reaktionen
0
Punkte
0
Hallo,

ich möchte eine Lösung programmieren, die einen Anrufer abfängt, wenn ein SIP-Anschluss besetzt ist. Der Ansatz ist dieser: Wenn ein SIP-Gerät abgehend telefoniert oder angerufen wird, wird eine "busy"-Variable hochgezählt. Diese habe ich busy1234 genannt, wo 1234 dynamisch je nach Rufnummer zugewiesen wird (damit auch pro Anschluß der Status abgefragt werden kann). Die Kommandos ChanIsAvail und DIALSTATUS haben nichts gebracht, daher diese Lösung.

Um das zu erreichen, möchte ich eben eine dynamische, globale Variable hochzählen. Leider hat das so nicht funktioniert:

exten => s,n,SetGlobalVar(busy${ARG1}=$[ ${busy${ARG1}}+1])

(Anmerking: ARG1 ist die variable Extension, die die Variable dann busy1234 benennt.)

Asteriskt beschwert sich, da das "+" nicht erwartet wurde. Die Variable war vor dem Wählen leer, also nicht definiert.

Am Ende vom Dialplan, wenn der Zähler nach dem Hangup wieder runtergesetzt wird, klappt es:

exten => s,n,SetGlobalVar(busy${ARG1}=$[${busy${ARG1}}-1])

Ich habe mir die Variable danach per noop ausgeben lassen und es wurde -1 abgezogen. Warum klappt das mit Plus nicht?

Chris
 
SetGlobalVar ist doch Asterisk-Uralt?

Nimm function MATH() zum rechnen.

Ansonsten schau Die mal die function GROUP() an, mit der macht man das eigentlich.

Was auch sehr gut funktioniert für den Telefonstatus ist API ExtensionState.
Unterscheidet sogar zwischen BUSY und klingeln.
 
Danke für die Hinweise. Das mit Group scheint ja im Grunde das zu sein, was ich brauche.

Bei meiner Konstruktion hat es wohl nur daran gelegen, dass ich vorher die Variable nicht ausdrücklich auf 0 gesetzt habe. Dann klappt auch das Plus rechnen. Da ich jetzt aber in der Extensions.conf nicht jede busy-Variable mit 0 festsetzen will, wie kann ich das in ne IF-Abfrage einbinden?

Also WENN busy1234 nicht exisitiert, erstelle die Variable und setzte sie gleich Null.

Ich hab da schon einiges Probiert, nur irgendwie komme ich mit den ganzen Klammern durcheinander. Das ist bei PHP irgendwie einfacher.
Wäre nett, wenn mir jemand dazu nen Tipp geben könnte.

Chris
 
exten => 851,n,GoToIF($[x${testvar}=x]?e_auf_null:e_weiter)

Das "x" ist wichtig. Ebenfalls immer vorsichtig mit Leerzeichen.

Ja, das "programmieren" ist sehr speziell.

Wenn AEL, bzw. AEL2 ausgereift ist werde ich wechseln. Bis dahin muss man die Ecken und Kanten beachten.
 
Klasse! Vielen Dank! An dieser IF-Abfrage habe ich gestern Stunden zugebracht. Meine Besetzt-Lösung funktioniert jetzt, so wie sie soll. Das mit Group werde ich aber bei Gelegenheit auch mal ausprobieren.
 
Kostenlos!

Statistik des Forums

Themen
248,856
Beiträge
2,302,980
Mitglieder
378,504
Neuestes Mitglied
Hallo61Hallo