MySQL Database auslesen

Pepsiman

Neuer User
Mitglied seit
7 Jun 2006
Beiträge
52
Punkte für Reaktionen
0
Punkte
0
Hallo Community,

ich möchte folgendes realiseren:

-Man ruft Asterisk an und wird nach eine Kunden-ID gefragt
-Wenn man eine korrekte ID eingegeben hat wird man nach einer Pin gefragt
-Wenn die Pin richtig eingegeben wurde, dann wird eine Eintragung in der Datenbank vorgenommen und eine Bestätigung wird abgespielt

Das ganze soll so funktionieren, dass Asterisk die daten ID und PIN aus der mysql database ausliest..

Danke im vorraus,

Gruß
Pep
 
Zuletzt bearbeitet:
Und was ist jetzt deine Frage? ;)
Wenn es um die Realisierung geht, kein Problem. Bei den asterisk-addons ist auch ein addon für mysql dabei. Damit kannst du im Dialplan eine Abfrage realisieren.
 
Danke für die Antwort ;)

Naja meine Frage ist wie ich das realisieren kann. Im VoIP wiki steig ich nicht so wirklich durch, wobei ich mich mit mysql sowieso 0,0 auskenne.

Deswegen wollte ich fragen ob ihr mir helfen könnt, das zu realisieren ;)
 
wenn du dich mit mysql nicht auskennst, würde ich es lassen.

wenn du eine konkrete frage hast, wirst du hier auch immer antwort bekommen, der haupteil der arbeit wird aber immer auf deiner seite liegen. desahlb rate ich dir, arbeite dich ein oder vergiss die idee.
 
Etwas machen wollen und sich nicht auskennen ist ein guter Anfang ;-)

Nicht bös gemeint, aber wenn du das kommerziell machst, möchte ich nicht die "Kunden"firma sein ;)

Und zum Problem: Ja, das geht auf verschiedenste Weisen. Jemand der darin firm ist hat das vermutlich in 15 Minuten gestrickt. Aber ich glaub kaum dass hier jemand für dich eine fertige Lösung präsentieren wird wenn du keine konkreten Fragen hast.
 
gerade zu mysql gibt es im inet eine Menge Anleitungen und HOWTOs - das solltest Du erst einmal durcharbeiten. Schwierig ist mysql nicht wirklich, mit hilfe von phpMyAdmin oder so ist es auch relativ einfach zu verwalten.
Wenn Du dann noch Fragen hast, sag bescheid.
 
Ich komm damit nicht klar.
Ich hab jetzt per myPhpAdmin eine Database names Kunden erstellt. In dieser gibt es es jetzt Tables mit dem Namen der Kundennummer .z.b. 0000. In dem Tables eintrag muss dann ein eintrag irgendwie verändert werden können.

Vorerst muss beim Anruf geprüft werden ob es das Table gibt. Wie gesagt, der anrufer wird nach kundennummer gefragt und wenn diese Existiert kommt eine Ansage wie "vielen dank" und dann wird irgendein Eintrag in der Tabelle verändert.

Könnt ihr mir nicht kurz ein Beispiel geben was ungefähr so aussehen würde?

Thx,
Greetings,
Pep
 
asterisk hat auch eine interne datenbank.
evtl reicht die schon aus für deine zwecke.
 
ist dein Problem noch akut ?

du könntest folgendes verwenden:

http://asterisk.li/belegt.htm

hier wird abgefragt ob die Numemr gleich ist.

Du müstest den anrufer annehmen und Ihn seine Kunden nummer eingeben lassen. Weisst du wie du das machst? Also wie du solche eingaben auswertest?

Wenn er seine Kundennummer eingegeben hat fragst du den Pin ab.

In der internen Datenbank legst du dann deine Kunden an.

das machst du auf der Konsole mit:

database put Kunden Kundennummer Pin

Wenn du die Kundennummer hast liesst du sie wieder vor und fragst den pin dann ab. Wenn der dann gleich ist wie in deiner DB dann kannste ihn weiterleiten oder sonstwas.

Auf der Seite oben wird abgefragt ob die zahl grösser oder kleiner ist. Du müsstest es wohl auf gleich setzen.
 
Hallo,

Ich hab zufällig gerade eben ziemlich exakt sowas realisiert. Zweck war eine Zeitaufzeichnung für Mitarbeiter im Aussendienst.
Realisiert habe ich das ganze mit phpagi - damit wars mehr oder weniger ein dreizeiler, zumal es ja vom php-skript aus ganz einfach ist, auf eine mysql-db zuzugreifen.

l.g.
Michael
 
Hallo IEEEE, ich habe so ziemlich das gleiche vor wie Pepsiman,
kannst du mir ma n Denkanstoss geben um das zu realisieren?
 
Hallo,

So als "Schubs in die richtige Richtung":

- Zuerst phpagi organisieren (man könnte das alles auch händisch machen, mit phpagi gehts aber einfacher)

in der extensions.conf sowas in der art:

exten => 555,1,Answer()
exten => 555,2,AGI(time.php)

die time.php könnte dann in etwa so aussiehen (mod_db ist die Datenbank Abstraktionsklasse, die ich verwende - ist ja letztendlich egal, wie man die Datenbank anzapft):


#/usr/bin/php

<?php
set_time_limit(100);
require('/pfad/zu/phpagi.php');
$agi = new AGI();
$agi->answer();
sleep(1);
$agi->stream_file('/pfad/htdocs/asterisk/sounds/falsch');
$result = $agi->get_data('/pfad/htdocs/asterisk/sounds/m_eingeben', 3000, 20);
$mitarbeiter_id = $result['result'];
$result = $agi->get_data('/pfad/htdocs/asterisk/sounds/pin_eingeben', 3000, 20);
$pin = $result['result'];
$pin = sha1($pin);
$sql = new mod_db();
$sql->query("SELECT id FROM mitarbeiter WHERE id = '$mitarbeiter_id' AND pin = '$pin'");
und so weiter
...
...
...

Netter Link in diesem Zusammenhang:
http://www.das-asterisk-buch.de/stable/agi-phpagi.html
 
:confused: cool, mehr ist das nich?!:confused:
Hatte mir das ein wenig komplizierter vorgestellt....
;)
 
ich bekomm n fehler:
Failed to execute bla bla: Exec format error

was bedeutet der fehler?
Wie kann ich den beheben?

die start.php:
<?php
require_once 'sql.php';
set_time_limit(100);
require_once 'phpagi.php';
$agi= new AGI();
$agi->answer();
sleep(1);
$agi->stream_file('sounds/hello-world');
$result= $agi->get_data('sounds/demo-thanks',3000,20);
$mitarbeiter_id=$result['result'];
$result= $agi->get_data('sounds/auth-thankyou',3000,20);
$pin = $result['result'];
$pin = sha1($pin);
verbinden();
$sql->query("SELECT * FROM ikunden WHERE kdnrv = '$mitarbeiter_id' AND Geheim= '$pin'");
?>
 
Hast Du in der ersten Zeile eh den Pfad zu Deinem php-Interpreter drin?

(zb:

#/usr/bin/php

)
 
ja, ich habs mit #/usr/bin/php

und mit #/usr/bin/php5

versucht, und beides ma kam der oben genannte Fehler
 
und die Interpreter liegen auch wirklich in diesen Verzeichnissen?

Ansonsten bin ich fürs erste ratlos.
 
ich hoffe es, auf jedenfall liegen liegen dort ne "@php" datei (ich denk ma n sym. link oder so) und ne php5 datei, welche heut erstellt worden ist, als ich xamp installiert habe
 
Ich habs irgendwie hinbekommen, lag glaub ich an den rechten der PHP-Dateien
(chmod +x <php-datei>) -> danach gings

Aber ich komme jetzt nicht weiter, wie kann ich mir die eingegebenen Nummern
(die Kundennummer, welche vom Anrufer eingegeben worden ist) von Asterisk anzeigen lassen? Meines Erachtens nach müsste das doch mit Get_variable gehen oder?

meine PHP datei:

#!/usr/bin/php -q
<?php
/**
* @package phpAGI_examples
* @version 2.0
*/

set_time_limit(30);
require('phpagi.php');
error_reporting(E_ALL);
require('sql.php');
$agi = new AGI();
$agi->answer();

$cid = $agi->parse_callerid();
$agi->text2wav("Hello, {$cid['name']}.");
do
{
$agi->text2wav('Please insert your customer ID');
$result = $agi->get_data('beep', 3000, 20);
$kdnrv = $result['result'];
$agi->text2wav('hello, please insert your PIN!.');
$result2 = $agi->get_data('beep', 3000, 20);
$geheim = $result['result2'];
verbinden();
$sql->query("SELECT Astelle from ikunden where kdnrv='$kdnrv' AND Geheim='$geheim'");
$agi->text2wav("You entered $kdnrv");
$agi->text2wav("You entered $geheim");
} while($keys != '71346315');
$agi->text2wav('Goodbye');
$agi->hangup();
?>

Wie kann ich zudem das SQL statement auswerten?
Steht in der Variable schon das Abfrageergebnis drin?
Oder ist das wie in php/MySQL ein array?
 
Zuletzt bearbeitet:

Zurzeit aktive Besucher

Statistik des Forums

Themen
244,831
Beiträge
2,219,105
Mitglieder
371,533
Neuestes Mitglied
ipeee
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.