[Frage] FreeTDS wie MySQL im Dialplan?

stäubel

Neuer User
Mitglied seit
11 Aug 2006
Beiträge
198
Punkte für Reaktionen
0
Punkte
16
Hallo zusammen

Habe mir mal mit FreeTDS eine DB Verbindung eingerichtet.
Von der Linux Shell kann ich nun über sqsh eine
Verbindung auf die Datenbank herstellen:
Code:
sqsh -U root -P geheim -S test

Nun wollte ich herausfinden ob man auch über Asterisk auf diese
DB zugreiffen kann, wie man z.B auch auf eine MySQL zugreifen könnte:

Code:
exten => 10,n,MYSQL(Connect CONNID localhost asteriskuser 1234 test)
exten => 10,n,MYSQL(Query RESULTID ${CONNID} SELECT CallID\, Ref\ FROM x WHERE \`Ref\`=${sRef})
exten => 10,n,MYSQL(Fetch vdp_tmp ${RESULTID} CallID Ref)
exten => 10,n,MYSQL(Disconnect ${CONNID})

Habe bis jetzt nur herausgefunden wie man die CDR
in die Datenbank speichern könnte:

http://www.voip-info.org/wiki/view/FreeTDS

Aber über den Dialplan finde ich keine Beispiele und ich möchte
es nicht unbedingt über einen System Aufruf lösen.
Hätte jemand eine Idee?

Vielen Grüsse

Stäubel
 
Du kannst FreeTDS wie andere Datenbankbackends auch über ODBC nutzen. in Asterisk sind dann res_odbc bzw. func_odbc zuständig.
Das ganze sieht dann im Dialplan auch deutlich einfacher aus, als die (veraltete) native MYSQL-Implemetierung:

Abfrage mit 0..1 Record
Code:
Set(ARRAY(var1,var2,...,varx)=${ODBC_FUNC(${myvar})});

Abfrage mit 0..n Records
Code:
Set(resultid=${ODBC_FUNCMR(Select blubb from bla where var='${EXTEN:0:3}')})
fetchnext:
Set(HASH(myvar)=${ODBC_FETCH(${resultid})});
if ("X${myvar}" != "X")
       .... // Do anything with myvar
       goto fetchnext;
} else {
       ODBCFinish(resultid);
}

Voraussetzung ist, dass unixODBC (einschließlich dev-Files) installiert sind, damit die Module in Asterisk gebaut werden und dass Du einen Treiber für FreeTDS installierst und konfigurierst.
 
Vielen Dank für die schnelle und sehr gute Antwort!
Jetzt habe ich einen super Anhaltspunkt.
Werde es versuchen so in meiner extensions.conf umzusetzen.

Aber ist es wegen der zusätzlichen Abstraktionsschicht
von ODBC nicht villeicht ein kleiner Nachteil es über ODBC zu lösen?

Okay, aber für meine Anwendung bestimmt nicht relevant :)

Viele Grüsse

Stäubel

N.B. Sind eigentlich deine Beispiele AGI-Applikationen?
 
Also: Ja ODBC ist ein Abstraktionslayer, aber: Im Vergleich zur MYSQL-Nativ-Lösung von Asterisk war es bei mir sogar schneller ...

Und die Beispiele sind lediglich (verkürzte) AEL-Schreibweise, ich gebe zu, dass ich da faul war, aber es ist tatsächlich reine Dialplanlogik (extensions.ael) ...
 
Kostenlos!

Statistik des Forums

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