FBCallNotify - Callmonitor in Python

maxi_king_333

Neuer User
Mitglied seit
11 Jan 2010
Beiträge
5
Punkte für Reaktionen
0
Punkte
0
Hi Liebe Forumgemeinde,

also erstmal: Ich hoffe Ihr lasst Euch nicht von dem langen Beitrag abschrecken.

Ich habe ein kleines Programm geschrieben, welches sich FBCallNotify nennt.
Da es in Python geschrieben ist, sollte es unter jeder Plattform laufen.
Bis jetzt habe ich es aber nur unter Linux getestet, plane aber es auch unter Windows zu testen bzw. so anzupassen, dass es auch dort läuft.

Features:
  • Konfigurationsdateien
  • Konsolen-Ausgabe
  • Ausführen von Kommandos
  • Notification über Libnotify
Geplante Features:
  • Grafisches-Interface
  • Logging
  • Nummer = Name Auflösung
  • Inverssuche
Benötigt:
  • Libnotify
So nun etwas zur Konfiguration (wieder nur zu Linux):
Ihr müsst in Eurem home-Verzeichnis ein neues Verzeichnis mit dem Namen .fbcallnotify erstellen.
Dort legt Ihr eine Datei mit dem Namen main.conf mit folgendem Inhalt an:
Code:
[main]
host=IP
port=PORT
numbers=ANZAHL_EURER_NUMMERN

[numbers]
1=NUMMER_EINS
2=NUMMER_ZWEI
  • IP steht für die IP Eurer FritzBox (meistens 192.168.178.1).
  • PORT für den Port, an dem der AVM Call Monitor seine Informationen ausgibt (eigentlich immer 1012)
  • ANZAHL_EURER_NUMMERNAnzahl der Nummern, die Ihr verwenden möchtet.
    Wenn in Eurer FritzBox z.B. 4 Nummern registriert sind Ihr aber nur eine mit dem Programm benutzen wollt, dann gebt Ihr hier 1 an.
  • Nun müsst ihr Eure Nummern Festlegen.
    Als Beispiel habe ich hier 2 Nummern, die dann fortlaufend nummeriert werden.
    Als z.B. NUMMER_EINS müsst ihr dann die Nummer eintragen.
    Die Nummer ist bei mir einfach die Internet Rufnummer.
    Um die Nummer herauszufinden gebt in Linux
    Code:
    netcat IP PORT
    ein.
    Nun nehmt ein Telefon, das Ihr registrieren wollt und ruft eine beliebige Nummer an.
    Jetzt solltet Ihr in etwa so eine Ausgabe bekommen:
    Code:
    12.01.10 19:21:45;CALL;0;2;**********;****;SIP4;
    Die Nummer hier mit ********** gekennzeichnet ist die einzutragene Rufnummer.
Das war es auch schon für's erste.
Hier noch eine Beispiel Konfigurations-Datei mit den Nummern 444 und 555:
Code:
[main]
host=192.168.178.1
port=1012
numbers=2

[numbers]
1=444
2=555
Nun müsst Ihr in dem Konfigurations Verzeichnis noch für jede Nummer eine Datei erstellen.
Also für meine 2 Beispiel Nummern: eine Datei 444.conf und eine 555.conf.
Hier eine Beispiel Konfiguration (sie ist für beide Nummern einsetzbar):
Code:
[ring]
number=3

[ring1]
type=print
str=Eingehender Anruf von %FROMNUMBER% zu %TONUMBER%
background=false

[ring2]
type=libnotify
title=Eingehender Anruf
str=Eingehender Anruf von %FROMNUMBER% zu %TONUMBER%
background=true

[ring3]
type=exec
command=rhythmbox-client --set-volume 0.5
background=false

[call]
number=3

[call1]
type=print
str=Ausgehender Anruf von %FROMNUMBER% zu %TONUMBER%
background=false

[call2]
type=libnotify
title=Ausgehender Anruf
str=Ausgehender Anruf von %FROMNUMBER% zu %TONUMBER%
background=true

[call3]
type=exec
command=rhythmbox-client --set-volume 0.5
background=false

[connect]
number=3

[connect1]
type=print
str=Anruf von %FROMNUMBER% zu %TONUMBER% angenommen
background=false

[connect2]
type=libnotify
title=Anruf angenommen
str=Anruf von %FROMNUMBER% zu %TONUMBER% angenommen
background=true

[connect3]
type=exec
command=rhythmbox-client --pause
background=false

[disconnect]
number=4

[disconnect1]
type=print
str=Anruf von %FROMNUMBER% zu %TONUMBER% beendet
background=false

[disconnect2]
type=libnotify
title=Anruf beendet
str=Anruf von %FROMNUMBER% zu %TONUMBER% beendet
background=true

[disconnect3]
type=exec
command=rhythmbox-client --set-volume 1
background=false

[disconnect4]
type=exec
command=rhythmbox-client --play
background=false
Wie Ihr sehen könnt ist die Config Datei in 4 Abschnitte eingeteilt.
ring, call, connect und disconnect.
Abschnitte:
  • ring wird ausgeführt, wenn die Nummer angerufen wird.
    call wird ausgeführt, wenn von der Nummer aus angerufen wird.
    connect wenn angenommen wurde.
    disconnect wird beim auflegen ausgeführt
Diese beinhalten eine Konfigurations Variable number.
Diese muss mit der Nummer der auszulösenden Events übereinstimmen.
Die Abschnitte danach wie z.B. ring1 definieren ein Event durch die Variable type.
Events:
  • print gibt Informationen auf der Konsole aus.
  • libnotify zeigt Informationen über libnotify.
  • exec führt einen Befehl auf der Shell aus.
Wie Ihr seht, werden z.B. bei der Ausgabe Dinge wie %FROMNUMBER% verwendet.
Diese werden durch bestimmte Dinge ersetzt.
Hier eine Liste:
  • %TYPE% Typ der Verbindung [in=Ankommend, out=Ausgehend]
  • %FROMNUMBER% die Nummer von der angerufen wird, immer die Nummer von der Angerufen wird, bei call die Interne bei ring die Externe
  • %TONUMBER%Das Gegenstück zu %FROMNUMBER%, enthält immer die andere Nummer.
  • %OVEREXT% steht nur bei ring zu Verfügung, was das genau bringt, weiß ich nicht, ergab bei mir aber immer ISDN (vielleicht testet das mal wer und sagt es mir dann)
  • %OVERINT% steht nur bei connectl und cal zur Verfügung und enthält das Gerät das abgenommen hat bzw, von dem aus angerufen wird.
  • %TIME% steht erst bei disconnect zur Verfügung und enthält die Sekunden, die Telefoniert wurden
  • %STATUS% enthält den Status der Verbindung.
    Wechselt ist nur bei connect on sonst off (Sinn, für Skripte, die bei jedem Event die gleichen sind.
    Dann kann aus %TYPE% und %STATUS% geschaut werden, welches Event gerade aufgerufen wurde)
Es gibt quasi 2 Event Definitionen einmal, sind das ring usw. und dann print usw..
Aufrufen lässt es sich einmal als ganz normales Python Programm und dann durch das mitgelieferte Skript.
Das Skript backgrounded alles gleich, so läuft es quasi als Dämon.
So das war's.

Das Projekt liegt auf BerliOS: https://developer.berlios.de/projects/fbcallnotify/
/* Edit: Hier noch der Download-Link: http://prdownload.berlios.de/fbcallnotify/fbcallnotify-1.0-pre-alpha.tar.gz */

Ich hoffe es gefällt euch und ich freue mich auf (hoffentlich) über ganz viele Tester.

Viele Grüße
Maxi
 
Zuletzt bearbeitet:
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.