Insert in MySQL-DB mittles Wählplan

VOIPdani

Mitglied
Mitglied seit
8 Aug 2005
Beiträge
432
Punkte für Reaktionen
0
Punkte
0
Hallo!

Es besteht ja die Möglichkeit, mittels der extensions.conf auf eine MySQL-DB zuzugreifen, siehe http://www.voip-info.org/wiki/view/Asterisk+cmd+MYSQL

Ich habe das ganze mal testweise in mein System aufgenommen:
Code:
exten => 4444,1,MYSQL(Connect connid localhost monty **** dyn_data)
exten => 4444,2,MYSQL(Query resultid ${connid} INSERT INTO showchannels VALUES(${EXTEN},${CALLERIDNUM},NULL,NULL))
exten => 4444,3,MYSQL(Clear ${resultid})
exten => 4444,4,MYSQL(Disconnect ${connid})

Ich möchte damit die an einem Gespräch beteiligten User zum Zeitpunkt des Gesprächsaufbaus in die DB speichern.

Ich habe das ganze dann mal ausprobiert, aber so einfach scheint es nicht zu sein:
Code:
    -- Executing MYSQL("SIP/LetD-b66a", "Connect connid localhost monty **** dyn_data") in new stack
    -- Executing MYSQL("SIP/LetD-b66a", "Query resultid 1 INSERT INTO showchannels VALUES(4444|9213|NULL|NULL)") in new stack
    -- Executing MYSQL("SIP/LetD-b66a", "Clear ") in new stack
Feb 23 11:49:30 WARNING[1734]: app_addon_sql_mysql.c:115 find_identifier: Identifier 0, identifier_type 2 not found in identifier list
Feb 23 11:49:30 WARNING[1734]: app_addon_sql_mysql.c:348 aMYSQL_clear: Invalid result identifier 0 passed in aMYSQL_clear
    -- Executing MYSQL("SIP/LetD-b66a", "Disconnect 1") in new stack
    -- Executing GotoIf("SIP/LetD-b66a", "0?102") in new stack

Hat damit schon jemand Erfahrung?

lg Dani
 
Hi,

hast du evtl die \ vergessen in deiner INSERT-Anweisung?!

also:

Code:
exten => 4444,2,MYSQL(Query resultid ${connid} INSERT\ INTO\ showchannels\ VALUES\ (${EXTEN},${CALLERIDNUM},NULL,NULL))

Versuchs mal. Hab damit noch nichts gemacht ...


Gruß,
Tucca
 
@Tucca: Hab deinen Vorschlag mal getestet, aber leider erhalte ich auch wenn ich die \ mache dieselbe Fehlermeldung wie im ersten Post beschrieben.

Vielleicht mache ich ja etwas grundsätzlich falsch?
Kann mir da jemand weiterhelfen?

lg Dani
 
Tausch mal das Query mit Insert aus. Query ist denke ich für Abfragen.

Insert => Einfügen
Update => Ändern

Also:
exten => 4444,2,MYSQL(Insert resultid ${connid} INSERT INTO showchannels VALUES(${EXTEN},${CALLERIDNUM},NULL,NULL))

Gruß,
Tucca
 
Da sagt dann mein * folgendes:
Code:
    -- Executing MYSQL("SIP/LetD-b7a3", "Connect connid localhost monty asterisk dyn_data") in new stack
    -- Executing MYSQL("SIP/LetD-b7a3", "Insert resultid 1 INSERT INTO showchannels VALUES(4444|9213|NULL|NULL)") in new stack
Feb 27 09:06:18 WARNING[31520]: app_addon_sql_mysql.c:405 MYSQL_exec: Unknown argument to MYSQL application : Insert resultid 1 INSERT INTO showchannels VALUES(4444|9213|NULL|NULL)
    -- Executing MYSQL("SIP/LetD-b7a3", "Clear ") in new stack
Feb 27 09:06:18 WARNING[31520]: app_addon_sql_mysql.c:115 find_identifier: Identifier 0, identifier_type 2 not found in identifier list
Feb 27 09:06:18 WARNING[31520]: app_addon_sql_mysql.c:348 aMYSQL_clear: Invalid result identifier 0 passed in aMYSQL_clear
    -- Executing MYSQL("SIP/LetD-b7a3", "Disconnect 1") in new stack
 
Kannst du mal bitte die TAbellen Struktur von MySQL posten.

Vielleicht kann ich ja daraus was erkennen.
 
Meine Tabelle showchannels sieht wie folgt aus:
Code:
showchannels
Field 	            Type 	Null 	Default
channel  	varchar(64) 	Yes  	NULL 
location  	varchar(64) 	Yes  	NULL 
state  	        varchar(64) 	Yes  	NULL 
appdata  	varchar(64) 	Yes  	NULL
Die Tabelle hab ich schon vorher zu Testzwecken angelegt gehabt und jetzt einfach zum Testen hergenommen.

lg Dani
 
Versuchs doch mal so:

Code:
exten => 4444,2,MYSQL(Query resultid ${connid} INSERT\ INTO\ showchannels\ (channels, location, state, appdata) VALUES\ (${EXTEN},${CALLERIDNUM},NULL,NULL))
 
Irgendwie will es nicht so recht sein: Habs mit deinem Vorschlag probiert -->
Code:
   -- Executing MYSQL("SIP/LetD-1aec", "Connect connid localhost monty asterisk dyn_data") in new stack
    -- Executing MYSQL("SIP/LetD-1aec", "Query resultid 1 INSERT INTO showchannels (channels| location| state| appdata) VALUES (4444|9213|NULL|NULL)") in new stack
    -- Executing MYSQL("SIP/LetD-1aec", "Clear ") in new stack
Feb 27 15:34:24 WARNING[7755]: app_addon_sql_mysql.c:115 find_identifier: Identifier 0, identifier_type 2 not found in identifier list
Feb 27 15:34:24 WARNING[7755]: app_addon_sql_mysql.c:348 aMYSQL_clear: Invalid result identifier 0 passed in aMYSQL_clear
    -- Executing MYSQL("SIP/LetD-1aec", "Disconnect 1") in new stack
 
Hab noch was im Inet gefunden:

Code:
exten => _8.,1,MYSQL(Connect connid asterisk password asterisk)
exten => _8.,2,MYSQL(Query resultid ${connid} INSERT INTO calls (caller,cellee,thedate) VALUES('1','2','3'))
exten => _8.,3,MYSQL(Fetch fetchid ${resultid} limit)
exten => _8.,4,MYSQL(Clear ${resultid})
exten => _8.,5,MYSQL(Disconnect ${connid})

Beachte die Zeile MYSQL(Fetch fetchid ...

Sorry, kann es auf meinem * gerade nicht testen...
 
Darauf bin ich auch schon gestoßen....das Fetch hab ich deshalb rausgelassen, weil ich eigentlich nur ein Insert machen möchte und kein Select+Fetch um die Daten anzuzeigen, verstehst du was ich meine?

lg Dani
 
MySQL liefert dir bei erfolgreichem Insert oder Update eine 1 zurück.
Wenn nicht erfolgreich eben nichts.

Von daher passt der Fetch-Befehl schon irgendwie.
 
Ich hab den Fetch-Befehl mal hinzugefügt und ausprobiert was mein * sagt:
Code:
    -- Executing MYSQL("SIP/LetD-f5e5", "Connect connid localhost monty asterisk dyn_data") in new stack
    -- Executing MYSQL("SIP/LetD-f5e5", "Query resultid 1 INSERT INTO showchannels (channels| location| state| appdata) VALUES (4444|9213|NULL|NULL)") in new stack
    -- Executing MYSQL("SIP/LetD-f5e5", "Fetch fetchid  limit") in new stack
Feb 28 07:12:30 WARNING[14215]: app_addon_sql_mysql.c:115 find_identifier: Identifier 0, identifier_type 2 not found in identifier list
Feb 28 07:12:30 WARNING[14215]: app_addon_sql_mysql.c:330 aMYSQL_fetch: aMYSQL_fetch: Invalid result identifier 0 passed
    -- Executing MYSQL("SIP/LetD-f5e5", "Clear ") in new stack
Feb 28 07:12:30 WARNING[14215]: app_addon_sql_mysql.c:115 find_identifier: Identifier 0, identifier_type 2 not found in identifier list
Feb 28 07:12:30 WARNING[14215]: app_addon_sql_mysql.c:348 aMYSQL_clear: Invalid result identifier 0 passed in aMYSQL_clear
    -- Executing MYSQL("SIP/LetD-f5e5", "Disconnect 1") in new stack
Schaut net gut aus....

lg Dani
 
Habs bei meinem mal versucht. Der mag net mal den login in die DB... :(

Mit PHP gehts.
Hast du's mal mit PHP als AGI versucht?
 
Über welche MySQL Version reden wir hier eigentlich ?
Hast Du schonmal probiert, die Values in Anführungszeichen zu setzen, bevor Du sie dem Insert übergibst ?


Code:
VALUES(\`${EXTEN}\`,\`${CALLERIDNUM}\`,\`NULL\`,\`NULL\`)
 
Ich verwende die MySQL-Version 4.0.21

Also ein Insert hab ich irgendwie immer noch nicht hingekriegt, auch nicht wenn die Values in Anfürhungszeichen gesetzt sind, aber ich hab mal versucht ein Select abzusetzten, und das geht:
Code:
 -- Executing MYSQL("SIP/LetD-92d3", "Connect connid localhost monty asterisk dyn_data") in new stack
    -- Executing MYSQL("SIP/LetD-92d3", "Query resultid 1 SELECT channel FROM showchannels") in new stack
    -- Executing MYSQL("SIP/LetD-92d3", "Fetch fetchid 2 test") in new stack
Mar  1 10:29:45 WARNING[2169]: app_addon_sql_mysql.c:318 aMYSQL_fetch: ast_MYSQL_fetch: numFields=1
    -- Executing NoOp("SIP/LetD-92d3", "Gespeicherte Channelinfos: Zap/4-1") in new stack
 
Die Variable $resultid ist leer oder unbekannt.

VOIPdani schrieb:
Code:
    -- Executing MYSQL("SIP/LetD-f5e5", "Clear ") in new stack
Feb 28 07:12:30 WARNING[14215]: app_addon_sql_mysql.c:115 find_identifier: Identifier 0, identifier_type 2 not found in identifier list

das habe ich gerade auch

der ursprügliche Befehl hies z.B: exten => h,5, MYSQL(Clear ${resultid})
und ausgeführt wurde "Clear ":
-- Executing MYSQL("SIP/LetD-f5e5", "Clear ") in new stack
statt
-- Executing MYSQL("SIP/LetD-f5e5", "Clear xyz") in new stack

Die Variable $resultid ist leer oder unbekannt.
Wenn mann die Zeile mit Clear wegmacht funktioniert bei mir de Insert.

Gruß linuxbee.
 
Inserts mache ich so

exten => s,8,MYSQL(Query RESULTID ${CONNID} INSERT\ INTO\ orders\ SET\ orderId=${UNIQUEID}\,kdnr=${KDNR}\, artNr=${CHECKART}\, artBez="${TEXT}")


wo ich probleme mit habe ist eine Tabelle auszulesen und Zeile für Zeile auszugeben. Jemand ne Idee

Gruss

lazarus
 
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.