.titleBar { margin-bottom: 5px!important; }

Insert in MySQL-DB mittles Wählplan

Dieses Thema im Forum "Asterisk Allgemein" wurde erstellt von VOIPdani, 23 Feb. 2006.

  1. VOIPdani

    VOIPdani Mitglied

    Registriert seit:
    8 Aug. 2005
    Beiträge:
    432
    Zustimmungen:
    0
    Punkte für Erfolge:
    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
     
  2. Tucca

    Tucca Neuer User

    Registriert seit:
    14 Juli 2004
    Beiträge:
    174
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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
     
  3. VOIPdani

    VOIPdani Mitglied

    Registriert seit:
    8 Aug. 2005
    Beiträge:
    432
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    @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
     
  4. Tucca

    Tucca Neuer User

    Registriert seit:
    14 Juli 2004
    Beiträge:
    174
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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
     
  5. VOIPdani

    VOIPdani Mitglied

    Registriert seit:
    8 Aug. 2005
    Beiträge:
    432
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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
    
     
  6. Tucca

    Tucca Neuer User

    Registriert seit:
    14 Juli 2004
    Beiträge:
    174
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Kannst du mal bitte die TAbellen Struktur von MySQL posten.

    Vielleicht kann ich ja daraus was erkennen.
     
  7. VOIPdani

    VOIPdani Mitglied

    Registriert seit:
    8 Aug. 2005
    Beiträge:
    432
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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
     
  8. Tucca

    Tucca Neuer User

    Registriert seit:
    14 Juli 2004
    Beiträge:
    174
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Versuchs doch mal so:

    Code:
    exten => 4444,2,MYSQL(Query resultid ${connid} INSERT\ INTO\ showchannels\ (channels, location, state, appdata) VALUES\ (${EXTEN},${CALLERIDNUM},NULL,NULL))
    
     
  9. VOIPdani

    VOIPdani Mitglied

    Registriert seit:
    8 Aug. 2005
    Beiträge:
    432
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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
    
     
  10. Tucca

    Tucca Neuer User

    Registriert seit:
    14 Juli 2004
    Beiträge:
    174
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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...
     
  11. VOIPdani

    VOIPdani Mitglied

    Registriert seit:
    8 Aug. 2005
    Beiträge:
    432
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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
     
  12. Tucca

    Tucca Neuer User

    Registriert seit:
    14 Juli 2004
    Beiträge:
    174
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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.
     
  13. VOIPdani

    VOIPdani Mitglied

    Registriert seit:
    8 Aug. 2005
    Beiträge:
    432
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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
     
  14. Tucca

    Tucca Neuer User

    Registriert seit:
    14 Juli 2004
    Beiträge:
    174
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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?
     
  15. betateilchen

    betateilchen Grandstream-Guru

    Registriert seit:
    30 Juni 2004
    Beiträge:
    12,882
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    am Letzenberg
    Ü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\`)
    
     
  16. VOIPdani

    VOIPdani Mitglied

    Registriert seit:
    8 Aug. 2005
    Beiträge:
    432
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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
    
     
  17. linuxnewbie

    linuxnewbie Neuer User

    Registriert seit:
    12 Juli 2006
    Beiträge:
    58
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Beruf:
    habeich
    Die Variable $resultid ist leer oder unbekannt.

     
  18. LaZaRuS

    LaZaRuS Neuer User

    Registriert seit:
    6 Juli 2004
    Beiträge:
    15
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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