Anrufbeantworter
Einen hab ich noch:
Bestimmt nicht die eleganteste- und auch nicht die universal Methode, aber bei mir klappt das soweit ganz gut.
Zur Überlegung: Ich nehme an, daß nach einem Anruf, welcher beendet wurde auf der Fritzbox, im Anrufbeantworter-Ordner, eine neue Datei entsteht. Der Name ist mir erstmal egal, wobei man mit dem Dateinamen theoretisch (da weiß ich nicht wie Callmonitor das handhabt) auch bei zwei parallelen Anrufen, die beide auf dem AB sprechen die Anzeigen hinbekommen sollte....
Also filtere ich den string vom Callmonitor nach dem Eintrag "in:disconnect". Sendet Callmonitor "in:disconnect" druchsuche ich den AB-Ordner nach files, die nicht älter als eine Minute sind(ist). Finde ich so eine Datei, dann muss es zwangsläufig ein gerade aufgenommene Sprachdatei sein, welche zu dem Anruf von gerade eben passt.
Der Rest ist dann nur noch bischen Fleißarbeit. Die if_calls Dateinbank um einen Parameter erweitern und diese in der Callsplugin.php abfragen.
Mein jetztiger calls.sh auf meiner Fritzbox mit sehr vielen echos um zu sehen ob die Parameter wie gewünscht übergeben werden. Vorsicht da kommt schnell einiges an kByte logs zusammen!!!(nach erfolgreichem testen sollte man sie auskomentieren oder löschen):
Code:
#!/bin/sh
localpath="/var/media/ftp/infoframe"
serverscript="http://192.168.XXX.XXX/infoframe/index.php"
LOG="/var/media/ftp/uStor01/logs/infoframe.log"
ANRUFBEANTWORTER="/var/media/ftp/uStor01/FRITZ/voicebox/rec"
if [ -z $1 ]; then
wget "$serverscript?$1" -O $localpath/tmp.jpg
echo "hier sollte der innhalt von $1 stehen" $1 >> $LOG
else
L=$1'&answermachine='
cd $ANRUFBEANTWORTER
if [ `echo $L | grep -c "in:disconnect"` == 1 ]; then
if [ `find . -type f -mmin -1` ]; then
L=$L'1'
echo "file ist juenger als 60sekunden" $L >> $LOG
else
echo "file ist aelter als 60sekunden--> regulaerer anruf" $L >> $LOG
fi
else
echo "kein event in:disconnect auflegen" >> $LOG
fi
wget "$serverscript?$L" -O $localpath/tmp.jpg
echo "nach wget" $L >> $LOG
fi
Der listener Eintrag bei Callmonitor (Habe sie um $source_number und $dest_number erweitert, weil ich im Callsplugin mit den standard Parametern nicht zurecht kam. evtl. kann sich das mal einer anschauen, der von php auch Ahnung hat, ich hab auf jedenfall keine
)
Code:
*:* ^ ^ /var/media/ftp/infoframe/call.sh "action=call&event=$EVENT&src_name=$(urlencode "$SOURCE_NAME")&src_number=$(urlencode "$SOURCE")&src_address=$(urlencode "$SOURCE_ADDRESS")&dst_name=$(urlencode "$DEST_NAME")&dst_number=$(urlencode "$DEST")&dst_address=$(urlencode "$DEST_ADDRESS")&duration=$DURATION"
Nun gehts ans php
:
/library/dbconn.php habe ich if_calls wie folgt abgeändert:
Code:
// table "if_calls"
if(mysql_num_rows( mysql_query("SHOW TABLES LIKE 'if_calls'", self::$connection) ) != 1) {
$query = "CREATE TABLE `if_calls` (
`id` int(11) NOT NULL auto_increment,
`type` int(11) NOT NULL,
`timestamp` datetime NOT NULL,
`name` varchar(100) collate latin1_general_cs default NULL,
`address` varchar(100) collate latin1_general_cs default NULL,
`number` varchar(100) collate latin1_general_cs default NULL,
`duration` int(11) default NULL,
`answermachine` int(11) default NULL,
PRIMARY KEY (`id`),
KEY `type` (`type`,`timestamp`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_cs; ";
mysql_query($query, self::$connection) or die('Error, insert query failed: '.mysql_error());
}
Jetzt fehlt nur noch die CallsPlugin.php. und ein AB-icon. Die hänge ich mal als Anhang mit drann. Ich hoffe ich hab keine Fehler gemacht, denn meine eigene CallsPlugin.php sieht anders aus, weil ich für verschiedene Rufnummern verschiedene Farben verwende.
Sooo, nun viel Spaß damit, hoffe es klappt bei euch auch ohne Probleme. Verbesserungsvorschläge, Weiterentwicklungen gerne gesehen.
€ Screenshot eingefögt, hab ich gestern irgendwie vergessen....