Infoframe AB
Ist normal. Das mit Spoon3er ist ganz entspannt. Ich denke er hat das jetzt alles im Griff und wird bald alles Veröffentlichen. Wenn dann noch fragen sind, können wir ja helfen. Er war auch 2 Tage sehr geduldig mit mir.
Danke für die Blumen!! Aber nun weiß ich auch was alles benötigt wird. War halt doch schon eine Zeit lang her, daß ich die AB-Anzeige gebastelt habe.
Sooooooooo..... nocheinmal ein howTo für die AB-Anzeige:
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 auch bei zwei parallelen Anrufen, die beide auf dem AB sprechen die Anzeigen hinbekommt.
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 eben passt.
Der Rest ist dann nur noch bisschen Fleißarbeit. Die if_calls Datenbank um einen Parameter erweitern, diese in der Callsplugin.php in die Datenbank eintragen und in der Index.php den Parameter bei anruf setzen.
Hier die call.sh:
Code:
#!/bin/sh
#pfade anpassen!
localpath="/var/media/ftp/infoframe"
serverscript="http://192.168.XXX.XXX"
LOG="/var/media/ftp/infoframe/logs/infoframe.log"
ANRUFBEANTWORTER="/var/media/ftp/FRITZ/voicebox/rec"
if [ -z $1 ]; then
wget "$serverscript?$1" -O $localpath/tmp.jpg
echo "hier sollte der innhalt von \$1 stehen. Da kein anruf ,also leer. Normaler cron refresh" $1 > $LOG
else
L=$1'&answermachine='
cd $ANRUFBEANTWORTER
if [ `echo $L | grep -c "in:disconnect"` -ge 1 ]; then
if [ `find . -type f -mmin -1` ]; then
L=$L'1'
echo "EVENT in:disconnect und file JUENGER als 1min, also AB BESPROCHEN!!" $L > $LOG
else
echo "EVENT in:disconnect, ABER file AELTER als 1min!!" $L > $LOG
fi
else
echo "KEIN event in:disconnect!!" $L > $LOG
fi
wget "$serverscript?$L" -O $localpath/tmp.jpg
echo "nach wget" $L >> $LOG
fi
Ich hänge das script zusammen mit der CallsPlugin.php am Ende des Posts nochmal an.
Der listener Eintrag bei Callmonitor. Habe die Übergabeparameter verändert. Es wird $src_name, $src_number, $dst_name, $dst_number, und $DURATION übergeben.
Damit habe ich entweder den Namen, falls bekannt, oder die vereinfachte Telefonnumer sowohl des Anrufers als auch des Angerufenens. (Ich betreibe das ganze mit 2 Telefonnummern. So sehe ich auf dem Bildschirm für wen angerufen wird).
Da die Übergabeparameter verändert sind
MUSS der Eintrag, bis auf den Pfad, 1 zu 1 übernommen werden!!!
Code:
*:* ^ ^ /var/media/ftp/infoframe/call.sh "action=call&event=$EVENT&src_name=$(urlencode "$SOURCE_NAME")&src_number=$(urlencode "$SOURCE_DISP")&dst_name=$(urlencode "$DEST_NAME")&dst_number=$(urlencode "$DEST_DISP")&duration=$DURATION"
Da die listener Parameter geändert wurden, muss auch die Datenbankstruktur für if_calls geändert werden. Entweder in der dbconn.php diesen Absatz suchen und mit meiner überschrieben oder die if_calls-Datenbank löschen und mit meiner aus dem download ersetzen. (ich würde einfach den Eintrag in der Datei suchen und ersetzen. Ist einfach sicherer.) Danach die if_calls-Datenbank löschen. Es sollte eine neue mit den richtigen Enträgen erstellt werden.
/library/dbconn.php
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,
`src_name` varchar(100) collate latin1_general_cs default NULL,
`src_number` varchar(100) collate latin1_general_cs default NULL,
`dst_name` varchar(100) collate latin1_general_cs default NULL,
`dst_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());
}
Bei der Index.php kommt man ums editieren nicht herum. Meine ist einfach viel zu arg verändert um mit einem download garantieren zu können, daß es funktioniert.
Also im Stammverzeichnis von Infoframe die Index.php öffnen und nach diesem Abschnitt suchen:
Code:
// process call action if exist
if(($_GET['action'] == 'call') && $plugins['CallsPlugin'])
$plugins['CallsPlugin']->processCallEvent($_GET['event'], $_GET['src_name'], $_GET['src_number'], $_GET['dst_name'], $_GET['dst_number'], $_GET['duration'], $_GET['answermachine']);
die Zeile $plugins['CallsPlugin'].... mit dem aus dem Code ersetzen
Jetzt fehlt nur noch die CallsPlugin.php und ein AB-icon. Diese sind in der .zip-Datei enthalten.
- CallsPlugin.php wird nach /infoframe/plugins kopiert
- AB-icon nach /infoframe/resources/icons
- dbconn.php nach /infoframe/library
- calls.sh in euren Infoframe-Ordner auf der Fritzbox. ACHTUNG: sowohl die Pfade in der call.sh als auch der Pfad im listener-Eintrag des Callmonitors müssen überprüft und eventuell auf eure Gegebenheiten angepasst werden. Achja: nicht vergessen die call.sh ausführbar zu machen!!!!
Anbei nocheinmal der screen von damals:
Have fun