[ds-mod] Callmonitor

Status
Für weitere Antworten geschlossen.

buehmann

Aktives Mitglied
Mitglied seit
11 Jun 2005
Beiträge
1,810
Punkte für Reaktionen
0
Punkte
36
Hallo,

auf dieser Seite geht es um den weiterentwickelten [thread=81203]Callmonitor[/thread] für den [thread=85371]Mod von danisahne (ds-mod)[/thread].

[size=+1]Installation[/size]

Im Normalfall genügt es, ein "make menuconfig" im ds-mod aufzurufen und den Callmonitor zu aktivieren.

Zur manuellen Installation einer neuen Version des Callmonitors als Addon folgt einfach den Anweisungen in der Anleitung "./howto/de/HOWTO - Pakete von Hand installieren.txt" aus dem ds-mod. Ihr müsst zwei Pakete installieren, callmonitor und telefon.

Tipp: Um schnell eine neue Version des Callmonitors im dsmod auszuprobieren, benutze ich statt der Addon-Methode auch gerne den Aufruf "make CALLMONITOR_VERSION=x.y.z" nach dem normalen "make menuconfig".

[size=+1]Konfiguration[/size]

Zur Konfiguration gibt es im Web-Interface vier neue Seiten:
  • Pakete/Callmonitor: Optionen zum Startverhalten, zur Rückwärtsuche etc.
  • Pakete/Telefon: Optionen zum Verhalten von telefon
  • Einstellungen/Listeners: Die Aktionen, die bei bestimmten Mustern von Quell- und Zielrufnummer ausgeführt werden sollen (ehemals callmonitor.listeners); Regeln in [thread=81203]gewohnter Syntax[/thread] (mit einer kleinen Neuerung, siehe unten)
  • Einstellungen/Callers: Das dauerhaft (im Flash) gespeicherte Telefonbuch (Format: <Rufnummer mit Vorwahl><Whitespace><Name>); Ergebnisse der Rückwärtssuche beim Örtlichen können hier gespeichert werden für schnelleren Zugriff in der Zukunft; natürlich können auch von Hand Nummer-Name-Paare eingetragen oder geändert werden.
Außerdem lässt sich über das Web-Interface die Regelmenge mit vorgetäuschten Testanrufen testen (es wird bei euch nicht klingeln; die Testanrufe sieht nur der Callmonitor). Das ist recht praktisch bei der Fehlersuche.
Unter Extras gibt existiert noch eine Seite zur Wartung des Telefonbuchs.

[size=+1]Neuerungen[/size]

0.1: Erste Version des Callmonitors für ds-mod (ds-0.1rc3)
  • Man kann negative Muster bei den Listeners verwenden, indem man ein Ausrufezeichen voranstellt: "!123" passt auf alle Nummern, die nicht irgendwo 123 enthalten.
  • Es gibt eine neue Aktion, um Nachrichten an einen VDR (http://www.cadsoft.de/vdr/) zu senden: "vdr IP [Nachricht]"
  • Alle Regeln werden nun parallel abgearbeitet; das bedeutet, die Aktion in Regel fünf muss nicht mehr warten, bis Aktionen 1 bis 4 fertig sind. Das hat das Potential zu einer schnelleren Reaktion bei einem Anruf.
  • Eigene Aktionen können als Shell-Funktionen in einer oder mehreren Dateien /tmp/flash/callmonitor/actions.d/*.sh abgelegt werden. (Es können so auch Standard-Funktionen überschrieben werden, z.B. default_message())
0.1.1: Minimale interne Anpassung an ds-0.1rc4; das Callmonitor-Paket ist jetzt beim ds-mod mit dabei
0.2:
  • phonebook: 49er-Rufnummern (ohne 00, länger als 10 Zeichen) werden erkannt
  • mail_missed_call: Bei verpassten Anrufen eine Mail schicken (nach einer Idee von fritzchen; danke!)
    • Die Funktion mail_missed_call verschickt eine E-Mail mit Hilfe der Daten, die für den Push-Service eingerichtet sind (falls man nicht beim Aufruf etwas anderes befiehlt (mailer-Optionen)); der Push-Service selbst kann ruhig ausgeschaltet bleiben, wichtig sind die Einstellungen für Adressen, Mailserver & Co. Beispiele zum Einsatz in Listeners:
      Code:
      mail_missed_call
      mail_missed_call -t [email][email protected][/email]
      mail_missed_call -s "Oh, oh ... ($SOURCE)"
    • mail_missed_call ruft 60 Sekunden nach dem Eintreffen des Anrufs die CSV-Anrufliste aus dem Webinterface ab (das Passwort besorgt es sich ggf. selbst; man muss es nicht nochmal einstellen) und muss dann ein bisschen raten, um den passenden Anruf zu finden (im Moment: letzter Anruf mit der genau passenden Quellrufnummer, falls dieser von der Zeit her ungefähr passt (+- 1,5 Minuten)). Hier ist euer Feedback, ob es funktioniert oder wann nicht, also besonders gefragt.
    • Zur Anpassung der Mails: siehe mail_call_subject und mail_call_body in missed-call.sh (zum Überschreiben am besten /tmp/flash/callmonitor/actions.d/ verwenden; siehe oben).
  • mail: Skript, um Mails bei Mailserverfehlern zwischenzuspeichern und erneut zu schicken (alle Parameter und Attachments werden gepackt in /var/spool/mail/ abgelegt).
    • wird von der Aktion mail_missed_call verwendet
    • ihr solltet regelmäßig (mit cron) ein "mail process" ausführen, um evtl. wartende Mail zu versenden
    • (mail gehört streng genommen nicht unbedingt zum Callmonitor, weil auch andere Dienste es brauchen könnten; vielleicht wird in Zukunft mal ein eigenes Paket daraus)
  • callmonitor: MSISDN und CALLER sind ab sofort leer, wenn keine Information übertragen/gefunden wurde. Für alternative Texte in den Benachrichtigungen können die Listener sorgen
  • callmonitor: Logging ins Syslog (hauptsächlich im Debug-Modus; sonst nur Infos über erkannte Anrufe)
0.3: Viele Anregungen aus diesem Thread aufgenommen
  • phonebook: Name des Angerufenen steht zur Verfügung (vor allem für SIP0 bis SIP9) (Danke an dsl123 für die Idee); man kann die Zuordnung zu Namen im Telefonbuch (Callers) vornehmen, entweder direkt für SIP0 bis SIP9 oder für Adressen der Form "username@registrar" (das zweite hat den Vorteil, dass man im Telefonbuch nichts anpassen muss, wenn man seine SIP-Accounts in anderer Reihenfolge einträgt). Beim Start werden Kurznamen für alle Accounts generiert und als Vorgabe in die Callers eingetragen (Danke an fritzchen).
  • callmonitor: Die Schnittstelle des Callmonitors zu den Aktionen hat sich geändert: Es stehen jetzt folgende Umgebungsvariablen zur Verfügung:
    • SOURCE (früher MSISDN): Quellrufnummer
    • SOURCE_NAME (früher CALLER): Name zur Quellrufnummer
    • DEST (früher CALLED): Zielrufnummer
    • DEST_NAME (neu): Name zur Zielrufnummer
    • NT (neu): Anruf vom NT? (true/false)
    Die alten Variablen MSISDN, CALLER und CALLED sind momentan noch zusätzlich vorhanden, können aber in einer der nächsten Versionen des Callmonitors verschwinden.
  • phonebook: Änderung der Suchstrategie: Erst Nummer unverändert im lokalen Telefonbuch (Callers) nachschlagen, dann normalisieren (evtl. Ortsvorwahl davor; SIP[0-9] wird zu username@registrar) und noch einmal lokal probieren. Dann erst bei dasoertliche.de probieren.
  • telefon: Wenn telefon nicht (auch) auf localhost lauscht, kann er von der Box selbst nicht erreicht werden! (z.B. vom Webinterface ISDN-Endgeräte)); deswegen im Webinterface Vereinfachung auf "externer Zugriff ja/nein" (Danke an carlo65)
  • phonebook: Bei ausgehenden Anrufen (vom NT) wird für die angerufene Nummer ggf. eine Anfrage bei dasoertliche.de durchgeführt, nicht für die eigene (Danke an tzhs)
0.4: Zerlegung in zwei Pakete: callmonitor und telefon
  • Ich habe ein telefon-Paket vom Callmonitor abgespalten: Es ermöglicht viele parallele Leser der telefon-Ausgabe gleichzeitig.
  • Es müssen die Pakete callmonitor und telefon installiert werden.
  • Kurzanleitung, falls ihr einen zusätzlichen Leser habt:
    1. Erzeugt mit mkfifo eine Fifo (Named Pipe) namens $FIFO (irgendein Name)
    2. Startet euren Leser und lasst ihn aus $FIFO lesen (er blockiert dann zunächst).
    3. Ruft "telfifo enable $FIFO" auf, um eure Fifo zu registrieren und zu aktivieren (telefon wird automatisch neugestartet, seine Ausgabe dann (via "tee") in alle registrierten Fifos geschrieben).
    4. Sorgt dafür, dass euer Leser ständig aus der Fifo liest (auch bei EOF solltet ihr die Fifo wieder neu öffnen und weiterlesen; das passiert jedes Mal, wenn telefon neugestartet wird), sonst blockieren irgendwann alle Leser.
    5. Wenn ihr euren Leser beenden wollt: Erst mit "telfifo disable $FIFO" die Fifo abschalten, erst dann mit dem Lesen aufhören. ("telfifo list" zeigt alle registrierten Leser an und ist zum Debugging gedacht.)
0.5
  • callmonitor.cgi: Debug-Modus über Web-Oberfläche einstellbar
  • Makefile: Neue Paket-Konvention für ds-0.2 (./root, ./docs)
  • dboxpopup, dboxmessage: Standardnachricht in UTF-8 mit Zeilenwechseln statt Kommas (Dank an IngoB)
  • phonebook: Rückwärtssuche ohne Caching möglich (Dank an mode)
  • aint.cgi: Wartungsseite zum Aufräumen des Telefonbuchs
0.6
  • callmonitor: Auch Fritz!Box 7170 wird unterstützt (leichte Änderung an den telefon-Ausgaben); Dank an SatBandit.
  • messages.sh: dreammessage ist über die Umgebungsvariablen DREAM_TIMEOUT, DREAM_CAPTION und DREAM_ICON weiter parametrisierbar
  • [experimentell] callmonitor: "E:" als Präfix beim Quellmuster passt nur beim Ende eines Anrufs; das ist nützlich für das Ausführen von Aktionen per Telefoncode (auch wenn inkrementell gewählt!). Achtung: Keine Nummern mit unerwünschten Nebenwirkungen verwenden. (Die Unterscheidung NT/nicht NT ist nicht möglich.) Beispiel:
    Code:
    E:^  ^5\*$  ether-wake ...
0.7: Performance ist nicht alles, aber ohne Performance ist alles nichts.
  • phonebook: Einträge im Telefonbuch endeten fälschlicherweise immer mit einem Semikolon; die Rückwärtssuche ist an die Änderungen bei dasoertliche.de angepasst (Dank an meimi039); die Adresse bei der Rückwärtssuche steht jetzt in Klammern
  • Performance-Optimierungen (leider zu Lasten der Lesbarkeit des Codes): vom erkanntem Anruf bis zur Regelausführung (getestet bei einer einfachen Regel und ohne Rückwärtssuche) nun in ca. einer statt vorher in 5 Sekunden (Dank fürs Drängeln an xenon80 :))
0.8:
  • callmonitor: Effizienteres Logging
  • Alten Kompatibilitätslink /usr/lib/callmonitor/bin/telefon entfernt.
  • dboxlcd(): Meldungen auf dem LCD der Dbox anzeigen; DBOX_TIMEOUT standardmäßig 10 Sekunden
  • xboxmessage(): Zweizeilige Meldung (+ Titel) auf der X-Box; Titel anpassbar durch XBOX_CAPTION
  • phonebook: als Bibliothek in den Callmonitor laden
1.0 (und folgende): [thread=100706]In einem neuen Thread.[/thread]

[size=+1]Download[/size]

Achtung: Bitte beachtet die Installationshinweise oben: In vielen Fällen übernimmt der ds-mod schon das Herunterladen und Installieren des Callmonitor-Pakets.


Download des Callmonitors bei BerliOS


---Ich würde mich über Testberichte jeder Art (Fehler, Verbesserungsvorschläge, ...) in diesem Thread freuen.

Viel Spaß mit dem Callmonitor,

Andreas
 

Anhänge

  • callmonitor.png
    callmonitor.png
    61.2 KB · Aufrufe: 2,134
  • listeners.png
    listeners.png
    43.9 KB · Aufrufe: 1,530
  • callers.png
    callers.png
    43.2 KB · Aufrufe: 1,256
  • testcall.png
    testcall.png
    60.8 KB · Aufrufe: 1,332
  • maint.png
    maint.png
    45.8 KB · Aufrufe: 1,213
  • telefon.png
    telefon.png
    33.4 KB · Aufrufe: 1,187
Zuletzt bearbeitet:
von wo stammen die Screenshuts? webinterface auf der FBF?
Die sehen echt cool aus.
 
wenn ich auf Listeners bearbeiten gehe, bekomme ich den Fehler: "Fehler: Konfiguration in der aktuellen Sicherheitsstufe nicht definiert!"
 
dsl123 schrieb:
wenn ich auf Listeners bearbeiten gehe, bekomme ich den Fehler: "Fehler: Konfiguration in der aktuellen Sicherheitsstufe nicht definiert!"
Hi, das hat seine Richtigkeit. Der ds-mod kennt momentan drei Sicherheitsstufen (0 bis 2, je nachdem, was über das Web geändert werden kann) und Listeners kann in der Standardeinstellung (1) nicht über das Webinterface bearbeitet werden, weil man darüber ja beliebigen Code auf der Box ausführen kann. Die Listeners kann man wie z.B. die Crontab nur in Sicherheitsstufe 0 bearbeiten.
Entweder kannst du die Sicherheit runtersetzen ("echo 0 > /tmp/flash/security"), wenn das für dich in Frage kommt, oder direkt auf der Box /tmp/flash/callmonitor/listeners bearbeiten.

Viele Grüße.
 
Danke @buehmann
 
buehmann schrieb:
echo 0 > /tmp/flash/security

Ich hätte das Feature vielleicht erst mal dokumentieren sollen :) Hol ich morgen nach.

Mfg,
danisahne
 
Hallo buehmann,
bei abkommenden Anrufe zu einer 1&1 Nummer, ist die MSISDN in der Form 49511xxxxxx. Der Callmonitor behandelt sie als lokale Nummer und umwandelt sie in 051149511xxxxxx.
Könntest du das ändern und Nummern mit 49 am Anfang anders umwandeln!?
 
dsl123 schrieb:
bei abkommenden Anrufe zu einer 1&1 Nummer
Was genau ist ein "abkommender Anruf"? "ankommend" oder "abgehend" würden für mich Sinn ergeben. Also rein oder raus? :)

ist die MSISDN in der Form 49511xxxxxx. Der Callmonitor behandelt sie als lokale Nummer und umwandelt sie in 051149511xxxxxx.
Könntest du das ändern und Nummern mit 49 am Anfang anders umwandeln!?
Hmm, klar könnte ich das. Ich weiß nur noch nicht genau, wie das am besten allgemeingültig funktionieren sollte. (Was ist, wenn dann die 49237 aus dem Ortsnetz anruft? Oder kommen bei der 1&1-Nummer dann alle Nummern mit 49+Ortsvorwahl an? Aber was ist dann bei der Mischung verschiedener Anbieter?) Wenn jemand Ideen hat, wie man das am konfigurieren können sollte, nur zu.
 
ich habe es so gelöst, dass die str-Länge über fern oder nah entscheidet.

Da fällt mir aber gerade ein, dass CLIP doch immer mit Ortsvorahl gesendet wird. Ds Problem sind also immer nur die abgehenden Rufe, aber die behandelt der Callmonitor doch eh nicht... Oder doch? Habe leider kein ISDN, daher kann ich den NT-Modus nicht nachvolziehen.

edit:
Jfritz wandelt 49179... auch in 0179... um, also kann man es ja vielleicht davon kopieren
 
fritzchen schrieb:
Da fällt mir aber gerade ein, dass CLIP doch immer mit Ortsvorahl gesendet wird.
Tatsächlich? Ich meine mich zu erinnern, dass bei mir auch schon "kurze" Nummern aus demselben Ortsnetz angekommen sind.

nur die abgehenden Rufe, aber die behandelt der Callmonitor doch eh nicht... Oder doch?
Nur, wenn die Nummer als Ganzes bei der Fritzbox ankommt. Das ist bei Nicht-ISDN wahrscheinlich unmöglich (oder?).

Jfritz wandelt 49179... auch in 0179... um, also kann man es ja vielleicht davon kopieren
Danke für den Tipp, vielleicht schaue ich mir das mal an.

Viele Grüße, buehmann.
 
buehmann schrieb:
Tatsächlich? Ich meine mich zu erinnern, dass bei mir auch schon "kurze" Nummern aus demselben Ortsnetz angekommen sind.

Kann es sein, dass Dein Telefon die Vorwahl weggenommen hat? Hatte auch mal so eins, in dem man die Vorwahl eingeben konnte...
 
buehmann schrieb:
fritzchen schrieb:
Da fällt mir aber gerade ein, dass CLIP doch immer mit Ortsvorahl gesendet wird.
Tatsächlich? Ich meine mich zu erinnern, dass bei mir auch schon "kurze" Nummern aus demselben Ortsnetz angekommen sind.
Das war bei der Fritz bei mir der Fall, als ich da direkt analoge Fons angeschlossen hatte. Da kamen VoIP-Gespräche aus dem eigenen Ortsnetz ohne Vorwahl an, Ortsgespräche aus dem Festnetz aber mit Vorwahl...
Jetzt habe ich die 7050 per ISDN vor der TK-Anlage, und da kann ich das Phänomen nicht mehr beobachten.
 
fritzchen schrieb:
ich habe es so gelöst, dass die str-Länge über fern oder nah entscheidet.
So ähnlich macht es jfritz auch:
Code:
		if (number.startsWith(countryCode) && number.length() > 10) {
			// International numbers without countryPrefix
			// (some VOIP numbers) }
			return "+" + number;
		}
Mal sehen, vielleicht übernehme ich eine ähnliche Heuristik in den Callmonitor.

Kann es sein, dass Dein Telefon die Vorwahl weggenommen hat? Hatte auch mal so eins, in dem man die Vorwahl eingeben konnte...
Nein, in meinem ISDN-Telefon kann ich keine Vorwahl einstellen.

@Novize: Zu eingehenden Festnetzanrufen kann ich leider nichts sagen, weil ich kein Festnetz mehr habe. Ich habe eine lokale Nummer sicher bei einem eingehenden VoIP-Anruf aus demselben Ortsnetz gesehen (sofern man da von Ortsnetz sprechen kann; das ist wahrscheinlich auch das Problem, so ein Anruf kommt ja auch ohne Rufnummern (im herkömmlichen Sinn) auf beiden Seiten aus; und bei der Vergabe von SIP-Adressen (in denen oft ein Teil der Nummer vorkommt) hat ja jeder Anbieter seine eigene Konvention.)
 
Ja, perfekt kann man es wohl kaum machen. Von Sipgate zu Sipgate kommt auch nur die benutzerknnung, und nicht die Rufnummer. So zum Beispiel ;)
 
fritzchen schrieb:
Von Sipgate zu Sipgate kommt auch nur die benutzerknnung, und nicht die Rufnummer.
Richtig, genau der Fall war es: Und da bei Sipgate die Benutzerkennung (in allen Fällen, die ich kenne) der Rufnummer im lokalen Ortsnetz entspricht und da ich und mein Anrufer beide ihre Sipgate-Rufnummer im selben Ort haben, sah es so aus, als würde nur die lokale Rufnummer angezeigt. Hach, schöne neue Welt ... :eek:)
 
Nutze nun rc4 und die den aktuellen JFritz.
Was muss ich nun unter callmonitor eingeben, damit es funktioniert ?

Ich möchte einfach nur, dass mir ein Anrufer auf meinen XP rechner angezeigt wird, wenn jemand anruft.

Wie mache ich dies am besten und einfachsten ?
 
ts201 schrieb:
Nutze nun rc4 und die den aktuellen JFritz.
Was muss ich nun unter callmonitor eingeben, damit es funktioniert?
Hast du den Abschnitt "Anrufmonitor" im Handbuch von JFritz schon gelesen (bei Version 0.4.5 Abschnitt 10.5)? Die einzige Variante, die du von dort im Zusammenhang mit dem Callmonitor aus ds-0.1rc4 realisieren könntest, ist der "YAC-Anrufmonitor" (10.5.4). Dazu müsstest du in den Listeners so etwas wie das hier eintragen (wenn alle Anrufe von außen signalisiert werden sollen):
Code:
^   ^   yac <IP/Name deines Rechners>
(den <...>-Teil natürlich entsprechend ausfüllen).

Viel Erfolg,
buehmann.
 
Danke, würde ich gern mal testen, allerdings habe ich jfritz eben mal insatlliert. Der erste start geht auch, nur wenn ich neu starte komme ich nicht mehr in die einstellungen. Wenn ich auf "einstellungen" klicke, passiert nichts mehr. woran kann dies liegen ?
 
ts201 schrieb:
[jfritz] Wenn ich auf "einstellungen" klicke, passiert nichts mehr. woran kann dies liegen ?
Sorry, da kann ich dir nicht helfen; ich habe JFritz noch nicht benutzt. Lies oder frag das am besten an der passenden Stelle nach; hier geht's nur um den Callmonitor.
 
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.