Script ausführen bei eingehenden Anrufen?

Status
Für weitere Antworten geschlossen.

khigh

Neuer User
Mitglied seit
4 Jan 2005
Beiträge
21
Punkte für Reaktionen
0
Punkte
0
Ich würde gerne bei Anrufen die Uhrzeit, Nummer des Anrufers und die angerufene Nummer auf meine dbox schicken. die das dann auf dem Fernseher anzeigt.
Zur Zeit mach ich das mit Capisuite über meinen Server, aber das geht natürlich nur bei Festnetzanrufen.

Die Telefongespräche werden ja mittlerweile schon geloggt, aber erst nachdem das Gespräch beendet wurde?
Naja könnte auch sein das es gleich geloggt wird und am Ende die Dauer etc hinzugefügt wird.
Werden die Anrufe evtl auch über syslogd (wenn man den startet) geloggt oder kann man den entsprechenden daemon evtl dazu bewegen die Infos nach stdout zu spucken.
Wenn das irgendwie ginge könnte man mit wget das ganze ganz einfach auf die dbox schicken.

Echt genial wäre auch ein Telefonbuch mit Namen aber mal abwarten was es mit der Buddyliste auf sich hat.
 
Daran habe ich auch Interesse. Habe seit 2 Tagen auch eine dbox und mache Anrufmonitoring mit meinem Server, aber halt nur bei Festnetz.

Im Syslog steht soweit ich weiß nix zu Festnetzanrufen. VoIP-Anrufe werden angezeigt. Möglich wäre nun, auf dem Server einen Logwatcher laufen zu lassen, der auf entsprechende Einträge im Syslog (das er von der FB remote bekommt) zu reagieren oder?

Andere Ideen?
 
Hmm so als linux quereinsteiger ...

... hätte ich gesagt:

mit nem cronjob jede sekunde schaun, ob die LED FN oder INET aktiviert wird ...

gibt bestimmt ne sauberere möglichkeit *smile*
 
Erstens kannst du Cron nur jede Minute ausführen und zweitens würde man das mit einem Daemon machen.
 
als nur Windows User und absoluter Laie in Bezug auf Linux waere es schoen, wenn das direkt auf der Box laufen koennte. Also wenn die Nummer von der Box in das Anruferlogfile gepackt wird, sollte es grundsaetzlich ja moeglich sein diese Nummer ueber ein "Tool" auch Net Sent konform (muss es glaube ich sein fuer die dbox) an eine IP im Netzwerk zu verschicken, oder ist das zuviel verlangt. Ich stell mir das so aehnlich vor wie das installieren des "Updates" mit dem man auf der aktuellen Firmware wieder Telnet machen kann :) auch wenn ich selber so 0 Ahnung davon habe, hoert sich das fuer mich machbar an. Zum Aufruf der Programs noch einenEintrag in irgendeine CFG Datei bekomme ich auch noch hin.
Ansonsten, fuer diejenigen die eine Rufnummernanzeige auf der dbox wollen: ISDN-CAPI-Watch (www.scanny.de) ist sehr fit wie ich finde
 
Nein, ist nicht net send. Ist ein stinknormaler http-Request:
Code:
http://dbox/control/message?nmsg=Dies+Ist+ein+Test
für eine zu bestätigende Meldung oder
Code:
http://dbox/control/message?popup=Dies+Ist+ein+Test
für ein von selbst verschwindendes Popup.

Code:
# general imports
import time,os,re,string,pwd,httplib
# CapiSuite imports
import capisuite,cs_helpers

# @brief main function called by CapiSuite when an incoming call is received
#
# It will decide if this call should be accepted, with which service and for
# which user. The real call handling is done in faxIncoming and voiceIncoming.
#
# @param call reference to the call. Needed by all capisuite functions
# @param service one of SERVICE_FAXG3, SERVICE_VOICE, SERVICE_OTHER
# @param call_from string containing the number of the calling party
# @param call_to string containing the number of the called party
def callIncoming(call,service,call_from,call_to):
        # read config file and search for call_to in the user sections
        try:
                ## DBOX2 ##
                zeit = time.strftime("%a %H:%M:%S")
                conn = httplib.HTTPConnection("dbox")
                conn.request("GET", "/control/message?nmsg=" + zeit + \
                " Anruf von " + call_from + " an " + call_to)
                r1 = conn.getresponse()
                conn.close()
                ## DBOX2 ##

                config=cs_helpers.readConfig()
                userlist=config.sections()
                userlist.remove('GLOBAL')
                curr_user=""

                for u in userlist:
                        if config.has_option(u,'v ...
in der incoming.py von Capisuite tut genau dies aber halt leider nur für Festnetzanrufe.

Vielleicht findet sich ja was :)
 
genau so ist es

In einem shellscript:
Code:
wget "http://dbox/control/message?nmsg=`date +%H:%M:%S` Uhr: Anruf von $1 an $2"

Aufruf des scripts:
./dboxmsg.sh 012541 79127

aber auch n net send zu schicken wär kein Problem es gibt ausser smbclient was hier eher nicht in Frage kommt sicher schon n schlankes c program.
So ein net send passt in ein udp-paket und braucht auch nicht viel code wenn man es selber coden müsste.

Damit der Thread jetzt hier nicht von der dbox gehijackt wird:
http://wiki.tuxbox.org/Telefonanrufe_anzeigen
 
für den fli4l-Router gab es mal ein Script, mit welchem ich genau die gewünschten Fuktionen auf dem Router auslösen konnte. Der ist ja nun zugunsten der FBF weggefallen und ich behelfe mir da mit dem Windows-Tool ISDN-CAPI-WATCH mehr recht als schlecht. Der Nachteil daran ist, daß dazu immer der Rechner laufen muß (was er ja eigentlich immer tut, wenn ich zu Hause bin :) )

Das (abgekupferte) Script \usr\local\bin\callid.sh sieht folgendermaßen aus:
Code:
#! /bin/sh
name="`grep $1 </etc/phonebook | cut -d"=" -f2 | sed 's/ /%20/g'`"
if [ -z "$name" ] ; then
name=$1
fi
aufruf=http://DBOX-IP/control/message?popup=%20$name%20ruft%20an!
wget -O/dev/null $aufruf

Das Telefonbuch unter /etc müßte dann noch angelegt werden, damit die Rufnummern gleich in Klarnamen übersetzt werden. Fehlt also nur noch das auslösende Ereignis für den Aufruf des Scriptes. Leider fehlt mir dafür der Durchblick.

Vielleicht könnte man den in das Script einbauen, welches die Anrufe in das Log schreibt, oder eben dieses um den notwendigen Code erweitern. Ich denke mal, daß ein Telmond-ähnliches Toll auf der FBF läuft und denke mal, daß wget vorhanden sein müßte, schließlich lädt die Box ja Updates auch von angeschlossenen Rechnern.
 
Watt hier abgeht....

Pimp my Fritz!Box!

:mrgreen:
 
Was ich in zwischenzeit rausgefunden habe:

Auf der FritzBox läuft ISDN mit capi4linux
Zumindestens mit Teilen davon.
VoIP wurde mit oSIP realisiert.
evtl werden noch properitäre libs verwendet, aber damit liese sich schon was anfangen.
Leider sind meine c skills zu bescheiden um das einfach so mal einzutippen.

Mit isdnlog und dem Script aus dem vdr-forum hätte man schonmal eine Rufnummeranzeige mit Rückwärtsuche und Telefonbuch bei isdn anrufen.
Ob isdnlog schlank genug zu bekommen ist und ob es auf der fritzbox läuft weis ich nicht, es läuft aber mit capi4linux

Für VoIP hab ich noch nichts "fertiges" gefunden,
aber bei den Asterisk leuten gibts bestimmt auch noch interessantes...
 
Gibt es schon neue Erkenntnisse? Würde mich nämlich auch brennend interssieren ;)
 
Wie bereits erwähnt, werden eingehende Anrufe ja von telefon ausgegeben.
Könnte man nicht ein Programm schreiben, dass diese Ausgaben per Named Pipe liest , auswertet und gegebenenfalls ein entsprechendes Ereignis triggert (wget etc.)?
 
Hallo,

habe seit längerem sowas am laufen, allerdings mehr als primitiven Hack. Dazu hab ich einfach in der debug.cfg ein Skript gepackt was sich beim booten "auspackt", anschließend wird telefon gestoppt, neu gestartet und die Ausgabe durch das Skript gepiped. Die MSISDN wird als Kommentar in der debug.cfg gespeichert und wenn dort nicht eingetragen auch im Örtlichen nachgeschlagen. Benötigt allerdings ein busybox auf der Box welches awk (mit "pattern matching"), sed und wget unterstützt.


Wollte ich noch um "send net" Funktionalität für Windows PCs erweitern, bin daran allerdings bisher gescheitert (wer packt mir perl für die fritz in ein Image ? ;-)

Wie gesagt, bei mir läuft es, allerdings nur schnell runter gehackt und ich hab auch keine Ahnung wie sich das mit dem Speicherplatz in /var/flash oder /var/tmp verhält....

Bei größerem Interesse häng ich das mal hier an, allerdings erst am WE, habs direkt auf der fritz erstellt und müsste erst ein "Image" draus machen ?

Max
 
Wie bereits erwähnt, werden eingehende Anrufe ja von telefon ausgegeben.
Könnte man nicht ein Programm schreiben, dass diese Ausgaben per Named Pipe liest , auswertet und gegebenenfalls ein entsprechendes Ereignis triggert (wget etc.)?

Genau.
Hier ist das 'Programm'...
#! /bin/sh
# Signalisierung ankommender Anrufe auf Fritz!Box
#
logtype=
logline=
calltype="IncomingCall:"
#
while true
do
read logtype logline
if [ "$logtype" = "$calltype" ]; then
echo $logline
fi
done

...und hier die Anleitung:
- wir nennen das Script 'dbox'
- wir kopieren die Datei 'dbox' auf /var/flash
- wir wechseln auf /var/flash
- wir geben ein:
# chmod 777 dbox (damit das Script ausführbar wird)
# mkfifo telfifo (wir bauen eine Fifo)
# chmod 777 telfifo (damit die Fifo beschreibbar wird)
# killall telefon (wir töten das Telefon) /sorry, muß leider sein
# telefon >telfifo& (aber wir erschaffen ein neues)
# ./dbox <telfifo (wir starten unser Script)


Gut, dieses Script gibt nur die Anrufe auf dem Terminal aus.
Aber ich hab ja auch gar keine DBox (Ist das die Telekom-Version der XBox oder was?)
Wer die hat, muß die Zeile echo ... eben mit wget .... ersetzen

Viel Spaß beim Basteln
crusader
 
[s:509744bb85]Anbei callmonitor für dbox und Windows PCs. Auf ersteren erfolgt die Ausgabe über das Webinterface wahlweise als popup (verschwindet alleine) oder messagebox (muss weggedrückt werden). Für PCs ist der YAC listener erforderlich (sunflowerhead.com/software/yac/).

Als "Firmwareupdate" auf die Fritz box spielen, anschließend mit telnet einloggen und mit nvi die debug.cfg den eigenen Bedürfnissen anpassen, dazu zwischen den Zeilen
cat <<EOF > /var/tmp/callmonitor.listeners
und
EOF
die IP Adressen der eigenen PCs / dboxen mit dem jeweiligen Typ (dboxpopup, dboxmessage, yac) eintragen. Beispiel ist selbsterklärend. Statt IP Adressen können auch Rechnernamen (aus der multid.leases) oder Teile davon angegeben werden. Anschließend mit "reboot" nochmal booten.

Bei Anrufen wird in der debug.cfg nach dem Namen zur entsprechenden Telefonnummer gesucht. Sollte dort nichts hinterlegt sein wird die Telefonnummer mit Inverssuche im Oertlichen nachgeschlagen und in debug.cfg gespeichert. Anschließend werden alle "listener" entsprechend der Einstellungen oben benachrichtigt.
Funktioniert mit mod52 auf meiner WLAN, würde gerne wissen wie es bei anderen aussieht. Vorerst bitte nur Leute die wissen wie sie ihre fritz wieder recovern können.

ACHTUNG:

ups... Zwei bugs hab ich gerade selber gefunden:

1. cut gibts auf mod52 normalerweise nicht, daher funktioniert das lookup in multid.leases nicht. Um das zu korrigieren die folgende Zeile in debug.cfg abändern:

IPS=`fgrep -i $listener /var/flash/multid.leases | cut -d" " -f3`

ändern in

IPS=`fgrep -i $listener /var/flash/multid.leases | awk '{ print $3 }'`

Das hätte ich merken müssen, shame on me ;-(

Das zweite Problem ist bei mir nicht aufgefallen da ich das nur mit Rechnern getestet hab die eh immer an sind... "nc" bricht dummerweise nicht ab wenn es keine Verbindung zum client herstellen kann, statt dessen bleibt der Prozess bestehen. Ist deshalb ein wenig blöde weil die fritz das merkt und irgendwann neu bootet, abhängig von der Anzahl der Anrufe und der Anzahl der nicht erreichbaren "listener". Dazu brauch ich ein wenig mehr Ruhe.

Neues tar file zum runter laden gibt es wenn Problem 2 gelöst ist, frühestens aber nächstes Wochenende. Wenn sich jemand vorher dran versuchen möchte bitte die install.sh auch gleich so ändern dass das alte Skript aus der debug.cfg gelöscht wird sonst steht es zweimal drin.

Falls jemandem sonst noch was auffällt (jedes feedback ist besser als keines), nur her damit.

Sorry,
Max[/s:509744bb85]

Ist in mod53 enthalten, daher von hier entfernt

Max
 
@Max-1968
coole Sache, das find ich auch noch brauchbar
Aber wo man doch recht vorsichtig sein sollte beim Bearbeiten der Fritzbox: so wirklich richtig klar wird das nicht wie die debug.cfg geaendert werden muss - zumindest mir nicht :) bei mir scheitert es schon daran wie mit nvi das Ding editiert wird, also nvi /????/ßß/debug.cfg (find ich auch nirgends, der Pfad zur voip.cfg steht ja in jedem 2ten Thread)
einfach mal nen Beispiel bringen wo vielleicht noch eine Zeile der debug.cfg drin steht ?!
und ich denke da ich es so auch nicht wirklich erkennen kann und die meisten sicherlich mit IPs arbeiten werden: kannst du das Beispiel mit IP-Adresse machen ? :)
Was mich aber noch mehr begeistern koennte: mittlerweile bietet die Telekom die Inverssuche ja auch im Internet an :) - http://www.dasoertliche.de/oetb_1.htm?s=2&AKTION=INVERSSUCHE_KLICK&SEITE=SUCHE_V&bi=0
also wenn man das Scripütmaessig auch noch auf die deBox bekommen wuerde, waer das schon ein Hit :)
 
Das ist doch genau die Seite, die im Script von Max-1968 abgefragt wird.
also was die Leute auch immer rauchen... :ziggi:

crusader
 
@JSchling:

Hola, zum jetzigen Zeitpunkt habe ich ganz bewusst nur wenig "Doku" geschrieben, weil ich nicht wollte dass jemand nachher mit ner box dasteht die er nicht mehr zum laufen bekommt...

Wie sich leider gezeigt hat zu Recht, siehe die beiden bugs die ich gestern abend noch nachgetragen habe. Sobald das Ding von mehreren bestätigt stabil läuft gibt's auch ein paar mehr Erklärungen, solange solltest Du besser noch warten.

Max
 
ach da wird schon so eine Abfrage gestartet :) ich dachte das ganze dient erstmal nur um die Anzeige auf dem PC und der dbox zu realisieren :)
also drauf hab ichs halt noch nicht, wie auch schon geschrieben
ich bastle gern etwas, aber eben, so halbwegs sicher muss das schon sein und wo ich A: kein Linux habe und mich B: noch wie weniger damit auskenne... mit Windows komm ich ganz gut klar und so nen bischen auf ner dbox spielen auch, das ist ja auch weniger ein Problem, auf der Kiste kann man eigentlich alles wieder hinbiegen und ist auch nur TV, "meinen DSL-Zugang" + Telefonanlage ne Woche auf Reperatur schicken zu muessen waere haerter
 
"nc" bricht dummerweise nicht ab wenn es keine Verbindung zum client herstellen kann,
@Max
Wie ich in aus dem Parallel-Thread entnehme, baust Du an einer Lösung mit "nc -w 1" (only wait for connect for 1 second...). Die Busybox aus mod-0.52 unterstützt diesen Parameter aber leider nicht.
Hast Du eine Quelle für eine verbesserte Busybox ? Oder sonst jemand ?
Falls ja, würde ich schon mal ein Image bauen und Dein Script testen.

Gruß
crusader
 
Status
Für weitere Antworten geschlossen.
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.