Einfaches GotoIf - müder Wurm?

HobbyStern

Aktives Mitglied
Mitglied seit
5 Dez 2005
Beiträge
1,844
Punkte für Reaktionen
0
Punkte
36
Grüsse Euch,

das Wochenende war lang und ich darf mich hier "mal eben" am Sonntag noch durch einige Dinge durchwühlen - natürlich "mal eben" produktiv, habe leider keine testebene - daher würde ich Euch sehr danken wenn Ihr meine Faulheit verzeiht.

Folgender einfacher GotoIf Code versagt bei mir :gruebel: :

Code:
exten => _X.,1,GotoIf($["${ARTNR_EIN}" = 70]?10)
exten => _X.,2,GotoIf($["${ARTMENGE_EIN}" > 50]?4)      ; Wenn NICHT ArtNr 70 ist und die Menge groesser als 50 dann gehe nach 4

In beiden Abfragefällen lande ich bei "3" , es greift also nichts. Die eingegebenen Werte waren Beispielsweise :

ARTNR_EIN = 10
ARTMENGE_EIN = 180
Resultat-Spungpunkt = "3" :-(

In ARTNR_EIN schreibe ich einen Wert aus der AstDB, eine reine Zahl, also sollte ich keine leading "" verwenden müssen, IMHO. Auch die Erkennung der ARTMENGE_EIN schlägt fehl, die Zahlen stammen aus der Usereingabe und werden über waitexten reingeholt...

Was mache ich falsch? Zu müde? Über jede kleine Hilfe sehr dankbar!

Liebe Grüsse,

Stefan
 
Hallo HobbyStern,

versuche bitte probehalber deine Werte in "Anführungszeichen" zu setzen.
Code:
GotoIf($["${ARTMENGE_EIN}" > [COLOR="red"]"[/COLOR]50[COLOR="red"]"[/COLOR]]?4)


Gruß
R.
 
Hey!

Habs probeweise mal verbaut (hatte es aber bereits mal ausprobiert) - er schluckt es nicht.. :-(

Die Variablen werden sauber gesetzt ... :

Code:
Set("SIP/44-00001059", "ARTMENGE_EIN=150") in new stack

er scheint auch "ARTNR_EIN" zu erkennen....(er geht NICHT nach 10 - und das ist ja auch richtig so, meine TestArtNr war 50 (!)) :

Code:
    -- Executing [_X.@eingabe_speichern-v2:1] GotoIf("SIP/44-00001059", "0[B]?10[/B]") in new stack

aber der gesamte Block zeigt...

Code:
    -- Executing [_X.@retoureingabe_speichern-v2:1] GotoIf("SIP/44-00001059", "0?10") in new stack
    -- Executing [_X.@retoureingabe_speichern-v2:2] GotoIf("SIP/44-00001059", "0?4") in new stack
    -- Executing [_X.@retoureingabe_speichern-v2:3] Goto("SIP/44-00001059", "||10") in new stack

ArtNr = 70 --> gehe nach 10 - nein
ArtMenge > 50 (eingabe war 150), wenn ja gehe nach 4 - nein
wenn nichts greift, gehe nach 10 - ja

Scheint son "Sonntagsverhalten" zu sein, wie?

Ich denke der beste Weg ist mir die Variablen einmal vorher sauber ausgeben zu lassen (NoOp) - das mache ich am besten morgen auf einer testinstallation und ohne all die ausgaben des produktivsystems....

Wenn noch jemand "wissenden" Rat hat, gerne :) ! Danke!

LG Stefan
 
Ach so, vermutlich fehlt lediglich die "else" Bedingung in der Syntax. Versuch mal bitte:
Code:
GotoIf($["${ARTMENGE_EIN}" > "50"]?4[COLOR="red"]:10[/COLOR])

Wenn Wert größer 50, gehe zu Prio 4, sonst gehe zu Prio 10.


Gruß
R.
 
Zuletzt bearbeitet:
Stefan, das klingt nach Erweiterungen für Dein Bestell-System. Bald wird SAP bei Dir anfragen. ;-)

Laut Doku sind label1 und label2 beim GotoIf optional, nur nicht beide gleichzeitig.

Ich vermute das Problem bei den Anführungszeichen. Kann das sein, dass Asterisk durch die Anführungszeichen von Strings ausgeht und deshalb nicht mit dem > umgehen kann?

Code:
exten => _X.,1,GotoIf($["${ARTNR_EIN}" = "70"]?10)
exten => _X.,2,GotoIf($[${ARTMENGE_EIN} > 50]?4)

Svenja
 
falsch
Code:
GotoIf($["${KURZ}" > 50]?5:10)
richtig
Code:
GotoIf($[${KURZ} > 50]?5:10)
:done:

ARTMENGE_EIN habe ich schlichtweg durch KURZ ersetzt, was wirklich wichtig war sind die "" um die Variable, ich habe mir das Beispiel (wie so oft) von voip-info.org besorgt, dort steht es als beispiel ebenfalls falsch geschrieben. Ohne "" läuft die ganze Sache, ich denke er kann es ohne "" auch mathematische behandeln.

LG Stefan (und Danke!)
 
Zuletzt bearbeitet:
Hey Svenja,

habe gerade noch meinen Beitrag editiert (wow, das "neue" IPPF kann sogar dynamisch aktualisieren - während ich schrieb sah ich deinen Beitrag hinzuhüpfen...cool)

Ja, Erweiterungen fürs produktive Bestellsystem, Falscheingaben filtern (statt 6,9 Liter/Kilo/Stück hatten manche Benutzer 69 bestellt - oder statt 0,642 (härtefall) sogar einer 642) - das sollte jetzt nicht mehr passieren ohne es zu quittieren. Nebenher rechne ich nunmehr noch dynamisch die bestellten ¤ aus.

Es scheint so als ob Du Recht hast Svenja, die "" dürfen nicht die Variable umsetzen, da Asterisk dann nicht mehr rechnen kann. Aus der ausgeschlafenen Sicht eines Morgens eigentlich auch logisch..

Dank Euch!

LG Stefan
 
Hab grad auf voip-info.org geschaut, die Beispiele dort sind richtig. Wenn man eine Abfrage mit = oder != macht, sind die " schon sinnvoll. Damit wird eine Fehlerausgabe vermieden, wenn die zu überprüfende Variable leer ist. Weiter unten bei den Hints steht dann auch noch, dass man bei numerischen Vergleichen die " weglassen, und dafür eine 0 vor die Variable setzen soll.

Svenja
 
Du hast Recht , Brille aufsetzen hätte geholfen

Code:
$[${GROUP_COUNT(numcalls)} > 40]
:-Ö
 

Statistik des Forums

Themen
246,295
Beiträge
2,249,585
Mitglieder
373,893
Neuestes Mitglied
Kukkatto
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.