[Frage] Auslesen von Daten des aktuellen Telefonats möglich?

z23

Neuer User
Mitglied seit
19 Jun 2013
Beiträge
57
Punkte für Reaktionen
0
Punkte
0
Ich such nach einer Möglichkeit rauszufinden, ob grad ein Telefongespräch läuft, ggf. die Anrufernummer, so vorhanden, rauszufiltern und als Variable zu speichern.

Ich hab eine FRITZ!Box Fon WLAN 7390 mit FRITZ!OS 05.52 und will kein zusätzliches Tool wie Fritz!Box Monitor o.ä. verwenden, sondern ein Skript (das noch andere Aufgaben hat).

Muss ich dafür erst eine andere Firmware (Laborversion, alternative Firmware wie Freetz) einspielen?
Ich such nach einer simplen Lösung (z.B. nvi-Edit per telnet oder curl-Befehl...), mein System ist Windows 7x64.

Irgendwelche Ideen? :?
 
Ist ein tolles Projekt von spackmat.

Mein Ziel ist zweistufig, die erste Stufe muss, die zweite darf.
1. Stufe: Wird grade telefoniert? Gibt nur 1 Antwort drauf (ja oder nein).
2. Stufe: Welche externe Nummer? (Für Stufe 2 brauch ich foncalls_list.lua plus Zeitfilter o.ä.)

Zunächst hänge ich bei Stufe 1 fest. Leider seh ich im PHP-Projekt nicht, ob sich die Information "Anruf aktiv" ermitteln lässt.
 
Abend

Von der Logik her müsste ein Laufendes Gespräch erkannt und eine Variable mit Inhalt gefüllt werden.
Da /var/flash/calllog nur eingehende Anrufe signalisiert bietet sich hierfür die Callmonitor Schnittstelle an.

Zuerst aktivieren mit angeschlossenen Fon1-3 oder DECT oder angelegter Kurzwahl im AVM-Telefonbuch.
#96*5* anschalten
#96*4* auschalten
In einer ssh oder telnet Session dann in der Konsole mal...
Code:
nc 127.0.0.1 1012
...und mal so einen Tag lang den Telefonverkehr beobachten.
Mit den angezeigten Zuständen liesse sich schon was anstellen.
 
Ich verwende dazu folgenden Befehl:

echo "AT&V" | nc localhost 1011 | grep Port
 
Gut, #96*5* ist erledigt und telnetd läuft. Die Zeile
echo "AT&V" | nc localhost 1011 | grep Port
ist ja nur in einer Telnet-Session gültig.
Sie liefert sowas:

Port1 ONHOOK
Port2 ONHOOK
Port3 NOSLIC
Port4 NOSLIC


Es wird grad kein Telefonat geführt (logisch).
Ich hab für ein andres Skript UPnP aktiviert, darüber lässt sich wohl nichts erreichen..?
:gruebel:

Oder wie kann ich diese Zeile extern auswerten?
Hab sie auch hier gefunden (öhm..), bringt mir aber nichts...
 
Zuletzt bearbeitet:
Bei mir getestet...
Code:
Port1 ONHOOK
Port2 NOSLIC
Port3 NOSLIC
Port4 NOSLIC
Port5 Reroute **621(**621)->**622(**622)
...so sieht ein laufendes Gespräch auf Port5 aus.

Den Telefoncode brauchst du nur, wenn du mit...
Code:
nc 127.0.0.1 1012
...die Callmonitor Schnittstelle überwachen tust.

Bei Eisbärs Beispiel nicht, denn der Port 1011 stammt vom: telefon a127.0.0.1
(Siehe mit ps die laufenden Prozesse)
Das ist so eine Art Telefon Modem, ohne den Telefonie gar nicht geht.
 
Zuletzt bearbeitet:
Zuletzt bearbeitet:
Ich hab da ein Verständnisproblem: Klar kann ich in der telnet-Sitzung die Zeile eintippen.
Auch weiß ich, dass ich nach OFFHOOK filtern muss (schön, dass in der nächsten Spalte die Nummer steht).

Mein Problem: Ich hab eine Batch. Telnet ist Mist unter Windows, lässt sich nämlich nicht automatisieren.
Wie komm ich mit einem Skript an eine Ausgabe wie die von eisbaerin (Port3 OFFHOOK 015xxxxxxxx)?

:confused:
 
Was Du brauchst, ist ein Programm, welches ständig am Port 1012 der FritzBox lauscht und entsprechende Ausgaben auswertet. So arbeiten auch Callmonitore wie JFritz (setzt z.B. auf Java auf). Da wirst Du mit einer Batch-Datei nicht weit kommen. Dazu musst Du schon eine Progammiersprache Deiner Wahl bemühen. Die Kommunikation via Telnet diente nur dem Nachweis der grundsätzlichen Funktionsfähigkeit.

Gruß Telefonmännchen
 
ein Programm, welches ständig am Port 1012 der FritzBox lauscht

Aha, ein Programm also, das 2 Dinge tut:
Bei Aufruf per Batch Port 1011 der Fritz!Box prüft und das Ergebnis für die Batch zurückliefert (und sich beendet, kein TSR).
Nur weiß ich nicht, wie der Informationsaustausch abläuft, erst recht nicht wie man das programmiert.
 
Aha, ein Programm also, das 2 Dinge tut:
Nö, eigentlich wird es gestartet und lauscht ständig an den Port und wertet die Ausgaben dort aus. An dem Port ist eigentlich nur was zu lesen, wenn etwas passiert (Klingeln, Verbindungsauf- und -abbau). Das musst Du sehen wie eine Protokollschnittstelle. Dort steht nichts an, was man auslesen kann.

Gruß Telefonmännchen
 
eigentlich wird es gestartet und lauscht ständig an den Port und wertet die Ausgaben dort aus.
Das brauch ich nicht mal. Mal meine Laien-Sicht dazu:
- mit irgendeinem Tool (curl..?) Port 1011 der Fritz!Box abfragen; ein grep auf "Reroute" und ggf. die jeweilige Nummer
- Rückliefern Boolean Reroute (false/true) und ggf. der Nummer (an Batchdatei)

Einen Dienst der permanent auf Telefonate prüft brauch ich nicht.
 
Diese sensiblen Dienste telefon (Port 1011) und Callmonitor (Port 1012) laufen nur auf localhost (127.0.0.1).
Da kommste von aussen nur schwer bis garnicht ran,
der Telefondienst telefon läßt sich zwar beenden und statt auf localhost bspw. auf 192.168.178.1 (fritz.box) wieder starten,
doch bei der Callmonitorschnittstelle geht das meines Wissens nicht.
 
Einen Dienst der permanent auf Telefonate prüft brauch ich nicht.
Mag sein, dass Du das nicht brauchst, aber entsprechend Deiner Anforderungen ist eben keine weiter Dienst nach außen vorhanden. Du musst das betrachten wie eine Schnittstelle, auf der ein Log live ausgegeben wird. Entweder Du liest es ständig mit mit und reagierst entsprechend drauf, oder Du bekommst nichts mit, weil der "Logeintrag" schon auf der Schnittstelle geschrieben ist (und damit weg). Nachträglich lässt sich über diese Schnittstelle kein Status abfragen. Bei einem Radio kannst Du auch die Verkehrsnachrichten nur hören, wenn sie gerade gesendet werde, willst Du in die Historie gehen, musst Du eine Aufzeichnung mitlaufen lassen, oder eine andere Technologie/Schnittstelle benutzen. (OK, der Verglecih hinkt etwas, aber das tun sie doch alle). Aber genau diese andere Schnittstelle ist an der FritzBox nicht vorhanden.

Gruß Telefonmännchen
 
Nachträglich lässt sich über diese Schnittstelle kein Status abfragen. (...)
Aber genau diese andere Schnittstelle ist an der FritzBox nicht vorhanden.
Genau das stört mich ja. In einer früheren Firmwareversion (noch vor dem "Fritz!OS") war es offenbar möglich, die Information "Telefonat aktiv" per curl+POST auszulesen, das klappt seit dem Wechsel auf lua nicht mehr. Hier wär meiner Meinung nach AVM gefragt.
 
Moin

Ich denke die echo "AT&V" | nc localhost 1011 ist für sowas am brauchbarsten.

Wobei...
ONHOOK = Telefon liegt brav auf seiner Gabel (Haken).
OFFHOOK = Telefon wurde abgenommen, oder liegt nicht auf seiner Gabel.
NOSLIC = Subscriber line interface circuit (SLIC) Nicht angeschlossen.
...bedeutet.

IP-Telefone (auch Softphones) können allerdings nur über einen aktiven Port identifiziert werden.
 
Falls du einen Weg kennst, das mit wget/curl o.ä. client-seitig zu skripten, s.o. ...
 
Da der "Telefonserver" (Prozess telefon a127.0.0.1) ans Loopback-Device, also Lokal gebunden ist, seh ich nur einen Trick:

Den Prozess telefon a127.0.0.1 beenden und in mit/als telefon a192.168.178.1 starten.
Dann kann auch lokal im LAN (Klientseitig) eine Abfrage drauf abgesetzt werden.
Code:
root@DEEPBASE:/var/mod/root# ps|grep -E [a]127
16066 root      5324 S    telefon a127.0.0.1
16070 root      5324 S    telefon a127.0.0.1
16071 root      5324 S    telefon a127.0.0.1
root@DEEPBASE:/var/mod/root# killall telefon
root@DEEPBASE:/var/mod/root# telefon a192.168.178.1
root@DEEPBASE:/var/mod/root# ps|grep -E [a]192
16122 root      5324 S    telefon a192.168.178.1
16123 root      5324 S    telefon a192.168.178.1
16124 root      5324 S    telefon a192.168.178.1
...dann kannste meinetwegen mit telnet fritz.box 1011 draufconnecten und mal eintippen:
AT& (dann kommt ein OK) und ein V
 
Zuletzt bearbeitet:
@z23

Habe mal für das abfragen der Ports (ONHOOK bzw. OFFHOOK und Reroute) der Fritzbox ein kleines Programm geschrieben.
Es loggt sich über den Telnet Port ein - führt ein echo "AT&V" | nc 127.0.0.1 1011 | grep Port
aus und wertet die Rückmeldungen aus.

Über die Option -s (Silent Mode) gibt das Programm keine Rückmeldungen per Text aus
und du kannst in einer Batchdatei über 'errorlevel' abfragen ob telefoniert wird oder nicht.

errorlevel == 0 keine Verbindungen
errorlevel == 1 Verbindung(en) bestehen
errorlevel == 2 Programmfehler
 

Anhänge

  • chktel101.zip
    3.4 KB · Aufrufe: 17
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.