.titleBar { margin-bottom: 5px!important; }

Script ausführen bei eingehenden Anrufen?

Dieses Thema im Forum "FRITZ!Box Fon: Modifikationen" wurde erstellt von khigh, 5 Jan. 2005.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. khigh

    khigh Neuer User

    Registriert seit:
    4 Jan. 2005
    Beiträge:
    21
    Zustimmungen:
    0
    Punkte für Erfolge:
    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.
     
  2. FFL

    FFL Neuer User

    Registriert seit:
    15 Nov. 2004
    Beiträge:
    144
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    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?
     
  3. sphings

    sphings Mitglied

    Registriert seit:
    3 Okt. 2004
    Beiträge:
    522
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    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*
     
  4. FFL

    FFL Neuer User

    Registriert seit:
    15 Nov. 2004
    Beiträge:
    144
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    Erstens kannst du Cron nur jede Minute ausführen und zweitens würde man das mit einem Daemon machen.
     
  5. JSchling

    JSchling Gesperrt

    Registriert seit:
    21 Sep. 2004
    Beiträge:
    1,543
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    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
     
  6. FFL

    FFL Neuer User

    Registriert seit:
    15 Nov. 2004
    Beiträge:
    144
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    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 :)
     
  7. khigh

    khigh Neuer User

    Registriert seit:
    4 Jan. 2005
    Beiträge:
    21
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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
     
  8. Telefonmännchen

    Telefonmännchen IPPF-Promi

    Registriert seit:
    22 Okt. 2004
    Beiträge:
    5,393
    Zustimmungen:
    1
    Punkte für Erfolge:
    38
    Ort:
    Nordwürttemberg
    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.
     
  9. Elmo

    Elmo Mitglied

    Registriert seit:
    8 Sep. 2004
    Beiträge:
    313
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Hattingen
    Watt hier abgeht....

    Pimp my Fritz!Box!

    :mrgreen:
     
  10. khigh

    khigh Neuer User

    Registriert seit:
    4 Jan. 2005
    Beiträge:
    21
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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...
     
  11. DirkNienhaus

    DirkNienhaus Neuer User

    Registriert seit:
    8 Okt. 2004
    Beiträge:
    12
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Gibt es schon neue Erkenntnisse? Würde mich nämlich auch brennend interssieren ;)
     
  12. florianmar

    florianmar Neuer User

    Registriert seit:
    2 Okt. 2004
    Beiträge:
    68
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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.)?
     
  13. Max-1968

    Max-1968 Neuer User

    Registriert seit:
    16 Nov. 2004
    Beiträge:
    42
    Zustimmungen:
    0
    Punkte für Erfolge:
    6
    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
     
  14. crusader

    crusader Mitglied

    Registriert seit:
    28 Okt. 2004
    Beiträge:
    425
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Valdecruz
    Genau.
    Hier ist das 'Programm'...
    ...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
     
  15. Max-1968

    Max-1968 Neuer User

    Registriert seit:
    16 Nov. 2004
    Beiträge:
    42
    Zustimmungen:
    0
    Punkte für Erfolge:
    6
    [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
     
  16. JSchling

    JSchling Gesperrt

    Registriert seit:
    21 Sep. 2004
    Beiträge:
    1,543
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    @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 :)
     
  17. crusader

    crusader Mitglied

    Registriert seit:
    28 Okt. 2004
    Beiträge:
    425
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Valdecruz
    Das ist doch genau die Seite, die im Script von Max-1968 abgefragt wird.
    also was die Leute auch immer rauchen... :ziggi:

    crusader
     
  18. Max-1968

    Max-1968 Neuer User

    Registriert seit:
    16 Nov. 2004
    Beiträge:
    42
    Zustimmungen:
    0
    Punkte für Erfolge:
    6
    @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
     
  19. JSchling

    JSchling Gesperrt

    Registriert seit:
    21 Sep. 2004
    Beiträge:
    1,543
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    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
     
  20. crusader

    crusader Mitglied

    Registriert seit:
    28 Okt. 2004
    Beiträge:
    425
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Valdecruz
    @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 des Themas:
Es sind keine weiteren Antworten möglich.