[Frage] GotoIf im Dialplan

cybermanx

Neuer User
Mitglied seit
21 Aug 2010
Beiträge
15
Punkte für Reaktionen
0
Punkte
0
Asterisk 1.8: Irgendwie funktioniert mein GotoIf im Dialplan nicht. Folgendes steht im Dialplan:
Code:
exten => _XX.,n,MYSQL(Connect connid 192.168.1.100 asterisk asterisk asterisk)
exten => _XX.,n,NoOP(Connid ist: ${connid})
exten => _XX.,n,GotoIf($["${connid}" = ""]?DB_Connect_Error)
exten => _XX.,n(DB_Connect_Error),NoOP(kein Connect zum SQL-Server mgl)

Wenn keine Verbindung zustande kommt sollte er also in NoOP(kein Connect zum SQL-Server mgl) reinrennen. Macht er auch, dummerweise aber auch wenn die Verbindung besteht.

Hier mal der Fall, dass MySQL erreichbar ist:
Code:
-- Executing [0712345@Ansage:2] MYSQL("SIP/qsc-00000021", "Connect connid 192.168.1.100 asterisk asterisk as   terisk") in new stack
-- Executing [0712345@Ansage:3] NoOp("SIP/qsc-00000021", "Connid ist: 1") in new stack
-- Executing [0712345@Ansage:4] GotoIf("SIP/qsc-00000021", "0?DB_Connect_Error") in new stack
-- Executing [0712345@Ansage:5] NoOp("SIP/qsc-00000021", "kein Connect zum SQL-Server mgl") in new stack

und der Fall wenn ich MySQL deaktiviert habe
Code:
-- Executing [0712345@Ansage:2] MYSQL("SIP/qsc-00000022", "Connect connid 192.168.1.100 asterisk asterisk asterisk") in new stack
[Apr  9 08:49:47] WARNING[6742]: app_mysql.c:358 aMYSQL_connect: mysql_real_connect(mysql,192.168.1.100,asterisk,dbpass,asterisk,...) failed(2003): Can't connect to MySQL server on '192.168.1.100' (111)
-- Executing [0712345@Ansage:3] NoOp("SIP/qsc-00000022", "Connid ist: ") in new stack
-- Executing [0712345@Ansage:4] GotoIf("SIP/qsc-00000022", "1?DB_Connect_Error") in new stack
-- Goto (Ansage,0712345,5)
-- Executing [0712345@Ansage:5] NoOp("SIP/qsc-00000022", "kein Connect zum SQL-Server mgl") in new stack

Man sieht also ganz deutlich, dass er in beiden Fällen den NoOP(kein Connect zum SQL-Server mgl) ausführt, obwohl bei einen Mal die Condition "0?DB_Connect_Error" und bei anderen mal "1?DB_Connect_Error" ist. Das selbe ist auch bei anderen Applikationen wie z.B. Playback. Er führt es immer aus, obwohl er es eigentlich lt. GotoIf ignorieren müsste.
 
Hi!

Man sieht also ganz deutlich, dass er in beiden Fällen den NoOP(kein Connect zum SQL-Server mgl) ausführt, obwohl bei einen Mal die Condition "0?DB_Connect_Error" und bei anderen mal "1?DB_Connect_Error" ist.
Ist das jetzt eine Fangfrage?

Anders rum gefragt, was sollte deiner Meinung nach als nächstes ausgeführt werden, wenn weder das WENN zutrifft und es aber auch keine Anweisung für ELSE angegeben wurde (wie bei dir)?

Du solltest schon wenn du die NoOp-Zeile überspringen willst, nach dem 'DB_Connect_Error' eine Anweisung angeben, sonst wird IMMER die nächste Zeile ausgeführt! Ein mal weil du dahin springst und ein mal weil es einfach der nächste Befehl in der Kette ist.
Z.B. so:
Code:
exten => _XX.,n,GotoIf($["${connid}" = ""]?DB_Connect_Error:DB_Connected)
Gruss
 
Zuletzt bearbeitet:
Kostenlos!

Statistik des Forums

Themen
248,887
Beiträge
2,303,973
Mitglieder
378,565
Neuestes Mitglied
BenGradish