Anrufanzeige mit Callmonitor und KDE

m0e

Neuer User
Mitglied seit
30 Jun 2007
Beiträge
106
Punkte für Reaktionen
0
Punkte
0
Hallo,

ich bin seit gestern glücklicher Besitzer einer Fritz 7050, und habe da auch gleich den ds-mod mit dem Callmonitor installiert. Auf meinem Laptop läuft KDE, deshalb wollte ich nicht unbedingt das GTK2-Perlskript zum Signalisieren der Anrufe verwenden. Also hab ich quick'n dirty eine Lösung für KDE gebastelt. Das ganze basiert auf gnu-netcat (nc) und dem dcopserver von KDE:

Code:
#!/bin/sh
while /bin/true ; do
        FRITZ=`nc -l -t -p 7777 | sed -e 's/|/\\n/g'`
        dcop knotify Notify notify event "Anruf" "$FRITZ" "" "" 16 0
done

Auf der Fritzseite hab ich diesen Listener:
Code:
in:request ^ ^ rawmsg -t "${DEST}|${SOURCE}|${SOURCE_NAME}" 10.6.1.100 -p 7777

Die | zwischen den Variablen und das sed im Skript dient nur dazu, zwischen den Ausgaben der Zielnummer, Quellnummer und Quellname einen Zeilenumbruch zu haben. Mann kanns auch weiter verschönern, aber mir reichts so.

Das Skript muss irgendwo gespeichert werden, ausführbar gemacht werden (chmod +x) und dann innerhalb der KDE-Sitzung gestartet werden. Irgendwelche Ausgaben gibts nicht, bei nem Anruf kommt für einige Sekunden oben links ein passives Popup, also eine Einblendung die alleine wieder verschwindet. Wenn man eine Box haben will die solange stehen bleibt bis man Ok klickt, kann man die 16 oben durch eine 2 ersetzen. Was die zweite Zahl (0) bedeuten soll weiß ich nicht, hab auf die Schnelle auch keine gute Beschreibung dieser Funktion gefunden. Darum ist es ja auch eine quick'n dirty Lösung :)

Bugs:
Wenn man statt dem passiven Popup eine Messagebox nimmt, erfolgen keine neuen Signalisierungen solange die erste Box nicht mit Ok beendet wurde.

Umlaute (Suchergebnis aus Telefonbuch) werden als Kästchen dargestellt.

Gruss & ich hoffe es nützt irgendjmd.
Maurice
 
Zuletzt bearbeitet:
interessant,
ich nutze dafür auf der Box smbclient und beim KDE das Programm Linpopup. Ist sicherlich das gleiche, nur in grün. Hintergrund: Ich hab smbclient sowieso benutzt, um Nachrichten zu Windows zu schicken

have fun
jampr
 
Hat in etwa den gleichen Effekt ;-)
smbclient passt auf meine Box nicht mehr rauf.. 4MB sind dann doch etwas eng..
 
cool, so was in der art hab ich gestern gesucht, allerdings für mac os x
aber da ich auch kubuntu hab: danke :-)
weiß jemand ob es so etwas auch für mac os x gibt?
also was auf callmonitor basiert
würde denk ich mal mit growl sinn machen (growl.info)

nico
 
Aufgrund von Freezes der Box, die wohl mit dem callmonitor zusammenhängen, habe ich jetzt eine andere Lösung gebastelt, die den Callmonitor der original Firmware nutzt:
Code:
#!/bin/bash

KAB="${HOME}/.kde/share/apps/kabc/std.vcf"
TMPFILE="/tmp/callmon"
BOXIP="1.2.3.4"
Name=""

function searchKAB ()
{
        SNR=`echo $1 | cut -c 2-`
        ##echo "searchKAB: Suche nach $SNR"
        OName=`grep -B5 $SNR $KAB | grep \^FN | cut -d : -f 2`
        if [ "$OName" == "" ]; then
                ##echo "searchKAB: Kein Erfolg"
                return -1
        else
                ##echo "searchKAB: Erfolg $Name"
                return 0
        fi
}

function searchDasOE ()
{
        ##echo "searchDasOE"
        wget -q -O $TMPFILE "http://www1.dasoertliche.de/?form_name=search_inv&ph=$1"
        #OName=`grep 'class=\"entry\".*' $TMPFILE | sed -e s/^.*\"entry\"\>//g -e s/\<'\/'a\>.*//g`
        OName=`grep 'class=\"entry\".*' $TMPFILE | cut -d '>' -f 2 | cut -d '<' -f 1`
        ODetails=`grep ';.*<br\/>' $TMPFILE  | sed -e s/\&nbsp\;/\ /g -e s/'\n'//g -e s/'\t'//g -e s/\<br.*//g`
        if [ "$OName" == "" ]; then
                return -1
        else
                Name="$OName
                $ODetails"
                return 0
        fi
}

function notify ()
{
        QNummer=`echo $2 | cut -d \; -f 4`
        ZNummer=`echo $2 | cut -d \; -f 5`
        ##echo "Anruf von $QNummer auf $ZNummer"
        if [ "$QNummer" == "" ]; then
                Name="Unterdrückt"
        else
                searchKAB $QNummer || searchDasOE $QNummer || Name="Unbekannt"
        fi
        MSG="Anruf auf $ZNummer:
        Nummer: $QNummer
        Name: $Name"
        dcop knotify Notify notify event "Anruf" "$MSG" "" "" 16 0 &
}

while ping -c1 -t2 ${BOXIP} > /dev/null ; do
unset a
read a </dev/tcp/${BOXIP}/1012
if ( echo $a | grep -q RING ); then
notify $a
fi
done

Aber auch das ist wieder nur schnell zusammengeschustert, die Afrage des KDE-Adressbuches z.B. geht bestimmt auch eleganter..
 
Kostenlos!

Statistik des Forums

Themen
248,917
Beiträge
2,305,038
Mitglieder
378,638
Neuestes Mitglied
Patrick89