Seite 1 von 1

Fritzbox Anrufmonitor im Browser

Verfasst: Dienstag 9. Dezember 2008, 14:39
von bake
Mal wieder eine Frage die in Richtung dynamische Anzeige von Ereignissen geht. Es geht um einen browserbasierten Anrufmonitor.

Bei der Fritzbox ist es ja so, das man sich per Telnet verbindet und dann per read anfragt, ob eine Aktivität (eingehender, ausgehender anruf, angenommen, aufgelegt) vorliegt.
Dafür muss der Prozess ja am leben bleiben. Wenn man nun die Aktivitäten in der Console ausgeben oder z.B. in einer Datenbank loggen will ist das ja kein Problem.
Hatte überlegt ob ich die Aktivitäten in eine Datenbank schreibe und dann im Browser per Ajax-Request und Python Abfrage ob etwas neues passiert ist. Dadurch entsteht aber natürlich eine gewisse Verzögerung.
Ich könnte mir aber vorstellen, dass wenn nun ein Anruf reinkommt und angenommen wird, das ganze einfach zu schnell von statten geht, als das es auf diese Art und Weise im Browser dargestellt werden kann.
Für Hinweise, Ratschläge und andere Lösungsansätze bin ich dankbar! :)

Re: Fritzbox Anrufmonitor im Browser

Verfasst: Dienstag 9. Dezember 2008, 15:02
von Hyperion
bake hat geschrieben: Bei der Fritzbox ist es ja so, das man sich per Telnet verbindet und dann per read anfragt, ob eine Aktivität (eingehender, ausgehender anruf, angenommen, aufgelegt) vorliegt.
ok, ist also ein eigenes Protokoll?
Dafür muss der Prozess ja am leben bleiben.
Welcher Prozess? Derjenige, der per telnet Anfragen an die Box sendet?
Wenn man nun die Aktivitäten in der Console ausgeben oder z.B. in einer Datenbank loggen will ist das ja kein Problem.
Wann ist es also eines?
Hatte überlegt ob ich die Aktivitäten in eine Datenbank schreibe und dann im Browser per Ajax-Request und Python Abfrage ob etwas neues passiert ist. Dadurch entsteht aber natürlich eine gewisse Verzögerung.
Ich könnte mir aber vorstellen, dass wenn nun ein Anruf reinkommt und angenommen wird, das ganze einfach zu schnell von statten geht, als das es auf diese Art und Weise im Browser dargestellt werden kann.
Also geht es darum, einen Hinweis auf den Monitor zu pinseln, sobald ein Anruf reinkommt? (Und Du dachtest da an eine Browser, sprich HTML Lösung?)

Du solltest das Problem noch mal klar spezifizieren, ansonsten kann man auch keine Lösungsansätze geben ;-)

Kann natürlich auch sein, dass ich das nur nicht raffe .... aber ein Satz a la: "Ich will das Problem XYZ lösen, welches daran besteht, dass ..." wäre schon sinnvoll :-)

Verfasst: Dienstag 9. Dezember 2008, 16:53
von bake
Hier erstmal der Code mit dem man sich die Anrufaktivitäten auf der Console anzeigen lassen kann:

Code: Alles auswählen

def __init__(self):
    self.telnet = Telnet( )
    self.running = False
        
def run(self):
    while True:
	self.ping_ok = self.is_ping_ok_( )
	if self.ping_ok:
	    if self.running == False:
		try:
		    self.telnet.open( get_setting("ip"), int(get_setting("port")) )
		    self.running = True
		except:
		    self.running = False
	else:
	    if self.running == True:
		try:
		    self.telnet.close( )
		    self.running = False
		except:
		    self.running = False

	if self.running == True:
	    try:
		self.incomming_data = self.telnet.read_very_eager( )
		self.data_array = string.split( self.incomming_data, ";" )
	    except:
		print "ERROR"

	    if ( len( self.data_array ) >= 5 ):
		print 'There is some activity:', self.data_array
Man kann eventuelle Anrufinformationen per read_very_eager( ) auslesen. Falls momentan kein Anruf aktiv ist bekommt man natürlich auch nichts zurück geliefert.
Hyperion hat geschrieben: Welcher Prozess? Derjenige, der per telnet Anfragen an die Box sendet?
das wollte ich damit ausdrücken, ja.
Hyperion hat geschrieben: Also geht es darum, einen Hinweis auf den Monitor zu pinseln, sobald ein Anruf reinkommt? (Und Du dachtest da an eine Browser, sprich HTML Lösung?)
Ich dachte an eine HTML Lösung. Mein Problem ist nun folgendes.
Es kommt mir irgendwie komisch vor, jede Sekunde per SetInterval und einem AjaxRequest ein PythonSkript auf zu rufen welches sich dann per Telnet verbindet, die Daten abfragt und das Ergebniss zurückgibt, so dass diese im Browser angezeigt werden können.

Ich habe mich vl. etwas unklar ausgedrückt, aber das Problem ist irgendwie schwer in Worte zu fassen. :? Ich hoffe jetzt wird es etwas klarer?


EDIT: Irgendwie wird der Code hier im Forum nicht richtig eingerückt... Merkwürdig. Alles unter der while True Schleife gehört natürlich eingerückt...

Verfasst: Dienstag 9. Dezember 2008, 17:29
von Hyperion
Also ehrlich gesagt wird es mir nicht wirklich viel klarer ...

Du willst also wissen, ob die Lösung nicht optimal ist? Kann ich schwer sagen, da die Anforderungen immer noch nicht klar sind! (Schreib doch einfach mal, was Du genau erreichen willst!)

Hast Du denn einen Webserver laufen? Oder wer oder was nimmt den Ajax-Request entgegen?

Wieso muss es eine Lösung per HTML sein? (s. Anforderungen)