Asterisk mysql-addon in 1.6.2.x

Burkin

Neuer User
Mitglied seit
22 Jul 2010
Beiträge
5
Punkte für Reaktionen
0
Punkte
0
Hallo

Bisher hab ich Asterisk hauptsächlich in der 1.4er Variante eingesetzt und dort mit den mysql-addons meine Dialpläne dynamischer gestaltet
Bei der Umstellung auf 1.6.2.16.1 funktioniert das nicht mehr. OK das Quoting im SQL-Statement ist nicht mehr nötig.
Also, Backslashes entfernt funktioniert aber immer noch nicht, er beschwert sich jetzt über Klammern im SQL-Statement egal ob gequotet oder nicht
Code:
exten => s,1,Set(CDR(userfield)=${clientaddress})
exten => s,n,Set(tel=${CUT(clientaddress,/,2)})
exten => s,n,Set(fil=${CUT(clientaddress,/,1)})
exten => s,n,Set(mand=${CDR(accountcode)})
exten => s,n,Set(Mandant=${CUT(mand,,3)})
exten => s,n(ok),NoOp( Mandant : ${Mandant} : Sperre : ${usersperre} :${CONTEXT} )
exten => s,n,MYSQL(Connect connid 127.0.0.1 asterisk JT2agh asterisk)
exten => s,n,Set(HMandant=${FILTER(ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜ,${Mandant})})
exten => s,n,MYSQL(Query resultid ${connid} SELECT case when mandant='${Mandant}' then montyp else (select montyp from asterisk.monitoring where mandant='${HMandant}' and basiskanal='AVR') end as montyp,case when clientaddress is NULL then '0' else clientaddress end as clientaddr FROM asterisk.monitoring where mandant in('${Mandant}','${HMandant}') and basiskanal='AVR';)
exten => s,n,MYSQL(Fetch foundRow ${resultid} montyp clientaddr)
exten => s,n,MYSQL(Clear ${resultid})
exten => s,n,MYSQL(Disconnect ${connid})
exten => s,n,NoOp(MysqlResults ${montyp} : ${clientaddr})
exten => s,n,GotoIf($[${foundRow}=0]?notvr)
exten => s,n,GotoIf($["${clientaddr}"="0"]?${montyp})
exten => s,n,GotoIf($[${clientaddr}=${clientadddress}]?${montyp})
exten => s,n,GotoIf($[${DB_EXISTS(AVR/${Mandant})} | ${DB_EXISTS(AVR/${clientaddress})}]?${DB_RESULT}:notvr); wenn in ASTDB Eintrag unter AVR(Agentvr)/Mandant vorhanden dann aufzeichnen
exten => s,n(mix),MixMonitor(${Mandant}-${fil}-${tel}-${DATETIME}.WAV)
exten => s,n,Goto(notvr)
exten => s,n(mon),Monitor(wav,${Mandant}-${fil}-${tel}-${DATETIME})
exten => s,n(notvr),AgentLogin(${agentid},s)
exten => s,n(gesperrt),Hangup

Hat jemand eine Ahnung wie ich die Klammern innerhalb des SQL-Statements behandeln muß, damit er das Statement korrekt ausführt?

Unter Asterisk 1.4 mit Backslash vor jedem Sonderzeichen funtioniert das Stement seit Monaten einwandfrei.

Hier die CLI-Ausgabe
Code:
    -- Executing [s@start_agent:1] Set("Local/0351XXXXXX@agent-out-842d;1", "CDR(userfield)=EXT/0351XXXXXXX") in new stack
    -- Executing [s@start_agent:2] Set("Local/0351XXXXXX@agent-out-842d;1", "tel=0351XXXXXXX") in new stack
    -- Executing [s@start_agent:3] Set("Local/0351XXXXXX@agent-out-842d;1", "fil=EXT") in new stack
    -- Executing [s@start_agent:4] Set("Local/0351XXXXXX@agent-out-842d;1", "mand=DDAC04-C-TMT-XX") in new stack
    -- Executing [s@start_agent:5] Set("Local/0351XXXXXX@agent-out-842d;1", "Mandant=TMT") in new stack
    -- Executing [s@start_agent:6] NoOp("Local/0351XXXXXX@agent-out-842d;1", " Mandant : TMT : Sperre :  :start_agent ") in new stack
    -- Executing [s@start_agent:7] Set("Local/0351XXXXXX@agent-out-842d;1", "SPYGROUP=") in new stack
    -- Executing [s@start_agent:8] MYSQL("Local/0351XXXXXX@agent-out-842d;1", "Connect connid 127.0.0.1 asterisk _________ asterisk") in new stack
    -- Executing [s@start_agent:9] Set("Local/0351XXXXXX@agent-out-842d;1", "HMandant=TMT") in new stack
    -- Executing [s@start_agent:10] MYSQL("Local/0351XXXXXX@agent-out-842d;1", "Query resultid 1 SELECT case when mandant='TMT' then montyp else (select montyp from asterisk.monitoring where mandant='TMT' and basiskanal='AVR') end as montyp,case when clientaddress is NULL then '0' else clientaddress end as clientaddr FROM asterisk.monitoring where mandant in('TMT','TMT'") in new stack
[Jan 31 15:22:02] WARNING[17230]: app_addon_sql_mysql.c:383 aMYSQL_query: aMYSQL_query: mysql_query failed. Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
    -- Executing [s@start_agent:11] MYSQL("Local/0351XXXXXX@agent-out-842d;1", "Fetch foundRow  montyp clientaddr") in new stack
[Jan 31 15:22:02] WARNING[17230]: app_addon_sql_mysql.c:481 aMYSQL_fetch: aMYSQL_fetch: missing some arguments
    -- Executing [s@start_agent:12] MYSQL("Local/0351XXXXXX@agent-out-842d;1", "Clear ") in new stack
[Jan 31 15:22:02] WARNING[17230]: app_addon_sql_mysql.c:183 find_identifier: Identifier 0, identifier_type 2 not found in identifier list
[Jan 31 15:22:02] WARNING[17230]: app_addon_sql_mysql.c:495 aMYSQL_clear: Invalid result identifier 0 passed in aMYSQL_clear
    -- Executing [s@start_agent:13] MYSQL("Local/0351XXXXXX@agent-out-842d;1", "Disconnect 1") in new stack
    -- Executing [s@start_agent:14] NoOp("Local/0351XXXXXX@agent-out-842d;1", "MysqlResults  : ") in new stack
[Jan 31 15:22:02] WARNING[17230]: ast_expr2.fl:445 ast_yyerror: ast_yyerror():  syntax error: syntax error, unexpected '=', expecting $end; Input:
=0
^
[Jan 31 15:22:02] WARNING[17230]: ast_expr2.fl:449 ast_yyerror: If you have questions, please refer to doc/tex/channelvariables.tex.
    -- Executing [s@start_agent:15] GotoIf("Local/0351XXXXXX@agent-out-842d;1", "?notvr") in new stack
    -- Executing [s@start_agent:16] GotoIf("Local/0351XXXXXX@agent-out-842d;1", "0?") in new stack
[Jan 31 15:22:02] WARNING[17230]: ast_expr2.fl:445 ast_yyerror: ast_yyerror():  syntax error: syntax error, unexpected '=', expecting $end; Input:
=
^
[Jan 31 15:22:02] WARNING[17230]: ast_expr2.fl:449 ast_yyerror: If you have questions, please refer to doc/tex/channelvariables.tex.
    -- Executing [s@start_agent:17] GotoIf("Local/0351XXXXXX@agent-out-842d;1", "?") in new stack
    -- Executing [s@start_agent:18] GotoIf("Local/0351XXXXXX@agent-out-842d;1", "0?:notvr") in new stack
    -- Goto (start_agent,s,22)
    -- Executing [s@start_agent:22] AgentLogin("Local/0351XXXXXX@agent-out-842d;1", "9951,s") in new stack
    -- Started music on hold, class 'default', on Local/0351XXXXXX@agent-out-842d;1
  == Agent '9951' logged in (format slin/slin)

Danke für einen Tip
 
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.