Loop bei Datenbank-Abfrage

Tucca

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

ich setze derzeit *-1.0.9 ein (mit der *-DB).
Soweit läuft die Sache auch sehr gut ! :)

Das Problem ist, wenn ich eine Rufumleitung (die in der Ast-DB abgelegt wird) aktivieren möchte, gibt mir * statt der Ziel-Exten die eigene Nummer zurück. Das Problem tritt aber nur bei internen Ziel-Extens auf. Gebe ich als Ziel-Exten eine externe Nummer an funktioniert es.

Extensions.conf
Code:
[macro-stdexten]
exten => s,1,setLanguage(de)
exten => s,2,DBget(AB=AB/${MACRO_EXTEN})
exten => s,3,GotoIf(${AB}?50:4)
exten => s,4,DBget(CFIM=CFIM/${MACRO_EXTEN})
exten => s,5,GotoIf(${CFIM}?6:8)
exten => s,6,Goto(duo,${CFIM},1)
exten => s,8,DBget(CFBS=CFBS/${MACRO_EXTEN})
exten => s,9,SetGroup(${MACRO_EXTEN})
exten => s,10,CheckGroup(1)
exten => s,11,Dial(SIP/${MACRO_EXTEN},300,tT)
exten => s,112,Busy
exten => s-BUSY,Busy

Beispiel:
Exten 21 hat eine Umleitung auf Exten 20. Der Eintrag AB/21 ist leer - soweit auch ok.
Der Eintrag CFIM/21 ist 20. Und hier kommt das Problem. Die Ast-DB gibt der Variablen CFIM den Wert 21 ! Hiermit habe ich dann meine Schleife!!!
Wenn kein Eintrag in CFIM/21 ist geht wieder alles.

Hat jemand eine Ahnung was das ist?


Danke,
Tucca
 
Kannst Du mal einen "database show" machen und den Ausgabeteil der family hier posten ?
 
Asterisk liefert mir bei der zweiten Datenbankabfrage IMMER True zurück, was zur Folge hat, dass das erste Argument ausgeführt wird. Obwohl 90 <> 90 ja FALSE ergeben sollte.

Code:
    -- Executing GotoIf("CAPI/contr3/10467890-2655", "90 <> 90?60:8") in new stack
    -- Goto (macro-stdexten,s,60)

Code:
    -- Executing GotoIf("CAPI/contr3/10467890-2656", "10 <> 90?60:8") in new stack
    -- Goto (macro-stdexten,s,60)

DB
Code:
/CFIM/90                                          : 10

Wenn ich den Wert in der DB lösche geht es wieder...
 
Du hast einen Syntaxfehler in deinem GotoIF
Da sind irgendwo ein paar Klammern zu viel oder zu wenig - auf jeden Fall darf der logische Vergleich nie im "executing" stehen - da taucht dann eigentlich immer eine 0 oder 1 als Ergebnis Deiner Abfrage auf.

Generell werden die logischen Ausdrücke in eckige Klammern gesetzt. Bitte schau Dir nochmal diese Seite an, da findest Du Beispiele:

http://voip-info.org/wiki/index.php?page=Asterisk+cmd+GotoIf
 
Danke für den Hinweis ! :)
 
Kostenlos!

Statistik des Forums

Themen
248,469
Beiträge
2,292,142
Mitglieder
377,911
Neuestes Mitglied
FricktEuch