Callmonitor 1.*

Status
Für weitere Antworten geschlossen.
Hallo, ich habebis jetzt nichts gefunden, aber wie schaffe ich es wenn ich mich mit meinen Handy auf eine meine 1. SipNummer oder auch Festnetznummer anrufe das die Box einen Neustart macht.

in:request ^handynummer$ ^festnetznummer$

oder muss das anders lauten?


Danke
 
Wenn du genau weißt, wie deine Handy- und Festnetznummer in der Box aussehen, ja. (Vorwahl oder nicht, Landesvorwahl? 0049 oder 49, etc. pp.) Um das herauszufinden, hilft ein Blick ins Systemlog oder eine Regel 'in:request ^ ^ irgendeine_Ausgabe "$SOURCE $DEST"'

Andreas
 
Der Callmonitor liest das AVM-Telefonbuch über die Weboberfläche mithilfe der (selbst erstellten) Datei /usr/www/all/html/callmonitor/fonbuch.txt. Das Ergebnis kannst du dir hier ansehen: http://fritz.box/cgi-bin/webcm?getpage=../html/callmonitor/fonbuch.txt

Taucht dort der Name nur einmal auf (mit nur einer Nummer)? Da ich selbst nur eine 7050 habe...

Hallo Andreas,

ich will mich mal daran versuchen diese Abfrage zu erweitern.
Die Abrage wird ja über die Datei /usr/www/all/html/callmonitor/fonbuch.txt realisiert.
Code:
<? if eq 0 <? query telcfg:settings/HotDialRefresh ?> '' '' ?><? multiquerytext telcfg:settings/HotDialEntry/list(Number,Name)
`$2      $3
`
?>
Jetzt ist mir die Funktionsweise leider noch nicht ganz klar.
Was genau wird mit telcfg:settings/HotDialRefresh bzw. telcfg:settings/HotDialEntry/list(Number,Name) angesteuert?

Ich habe schon verschiedene Variationen der fonbuch.txt probiert, aber bisher nicht den erwünschten Erfolg.

Einige Hinweise habe ich hier gefunden: http://www.ip-phone-forum.de/showpost.php?p=1036634&postcount=415

Danke
wengi
 
Hallo wengi,

ich habe mir, um die richtigen Queries zu finden, den Telefonieteil des AVM-Webinterface angeschaut, zu finden in /usr/www/all/html/de/fon. Dort werden ja zum Darstellen/Bearbeiten/Auflisten der Telefonbucheinträge dieselben Funktionen gebraucht. Ich würde dir also raten, dort mal zu stöbern und zu versuchen, die Funktionsweise dieser Seiten nachzuvollziehen.

Interpretiert werden diese "<? query ...?>"- und "<? multiquery ... ?>"-Einträge von dem Programm webcm (siehe auch die von dir zitierte URL).

Die Refresh-Aufrufe sind vor vielen größeren Anfragen nötig, damit diese richtige (oder überhaupt ein) Ergebnis liefern. Vermutlich wird dort eine Vorverarbeitung vorgenommen oder ein Cache aufgefrischt.

Viele Grüße,

Andreas
 
Hallo,

ich bin schon ein Stück weiter, hänge nun aber:
Die relevante Webseite der AVM Firmware ist /usr/www/all/html/de/home/fonbuch.html

Hier geschehen prinzipiell zwei Abfragen:

1.) Die Anzahl der Einträge und deren Name
2.) Die eingetragenen Nummern zum jeweiligen Eintrag.

Das sieht bis jetzt so aus:
Code:
<? if eq 0 <? query telcfg:settings/HotDialRefresh ?> '' '' ?><? multiquery telcfg:settings/Phonebook/Entry/list(Name,Category,Number)
`$1     $2
`
?>

<? multiquery telcfg:settings/Phonebook/$1/Number/list(Type,Number,Code,Vanity)
`$2     $3
`
?>
Erklärung:
$1 der ersten Abfrage liefert "Entry1" für den 1. Eintrag, "Entry2" für den 2. usw.
$2 der ersten Abfrage liefert den Namen. Also z.B. "wengi"

$2 der zweiten Abfrage liefert "home", "mobile" oder "work"
$3 der zweiten Abfrage liefert die zu $2 gehörige Nummer.

Mein Problem:
Die zweite Abfrag funktioniert im Moment nicht, wenn ich $1 dort stehen habe.
Es funktioniert nur, wenn ich $1 manuell durch z.B. "Entry5" ersetze.
Also "telcfg:settings/Phonebook/$1/Number/list(Typ..." funktioniert NICHT, "telcfg:settings/Phonebook/Entry5/Number/list(Typ..." funktioniert.
Ich müsste da also eine Schleife bauen.
kann mir jemand erklären wie das geht?

wengi

EDIT: Hat jemand schon mal rausbekommen, wo und in welchem Format diese Daten gespeichert werden? Ist das eine Datenbank?
 
Zuletzt bearbeitet:
Hi, du kannst die Anfragen schachteln (Beispiele dafür dürften im Webinterface auch irgendwo vorkommen): Der generelle Aufbau z.B. einer multiquery ist ja der (ich hoffe, du kennst die Fachbegriffe):
Code:
<? multiquery SELEKTION(PROJEKTION) AUSGABE ?>
Das heißt, die SELEKTION liefert eine Reihe von Tupeln; die AUSGABE wird für jedes Tupel ausgewertet/expandiert, dabei kann auf die einzelnen Komponenten des Tupels (in der PROJEKTION ausgewählt) mit $1, $2, etc. zugegriffen werden (vielleicht auch null-basiert, also ab $0).

Jetzt könntest du also in der Ausgabe wieder eine Anfrage machen. Ich würde als nächsten Schritt mal etwas in dieser Richtung probieren:
Code:
<? multiquery telcfg:settings/Phonebook/Entry/list(Name,Category,Number)
`$1     $2
  <? multiquery telcfg:settings/Phonebook/$1/Number/list(Type,Number,Code,Vanity)
  '$2     $3' ?>
`
?>
Zu der genauen Syntax müsstest du noch einmal Beispiele in den Webseiten suchen; wenn ich mich recht erinnere, kann man zur Begrenzung der Ausgabe verschiedene Anführungszeichen verwenden (hier im Beispiel ` und '), um die Schachtelung einfacher hinzubekommen. Ob es ein Escape-Zeichen gibt, weiß ich nicht mehr.

Weiterhin viel Erfolg,

Andreas
 
Hi,

wieder ein ganzes Stück weiter. Ich bekomme alle Namen mit zugehörigen Nummern.
Code:
<? multiquery telcfg:settings/Phonebook/Entry/list(Name,Category) '
$0      $2      $3
<? multiquery telcfg:settings/Phonebook/$1/Number/list(Type,Number,Code,Vanity) `
$12     $13     $14     $15
` ?>
<script type="text/javascript">document.write(TrFon1());</script>
' ?>

Jetzt geht es um die Formatierung, die Du für Callmonitor benötigst.
Bisher kommt als Rückgabe "Nummer#1 !Name#1 Nummer#2 !Name#2"
Is das das Format wie Du es brauchst? Das ! als Trennzeichen?

wengi
 
Ich bräuchte das gleiche Format, das auch bei den manuell erstellten "Callers" vorliegt: Pro Zeile ein Nummer-Name-Paar, getrennt durch Whitespace:
Code:
Nummer1   Name1
Nummer2   Name2
Nummer3   Name3
Andreas

PS: Die Ausrufezeichen gehören zum Name-Feld und haben dort irgendeine Markierungsfunktion, die ich vergessen habe. (Wichtiger Anrufer?) Die schneide ich dann bei der Weiterverarbeitung schon ab.
 
Hi,

Das hier wäre nun mal zu testen (Nicht nur von buehmann):
Code:
<? multiquery telcfg:settings/Phonebook/Entry/list(Name,Category) '<? multiquery telcfg:settings/Phonebook/$1/Number/list(Type,Number,Code,Vanity) `
$13  $2 - $12`?>' ?>

Das lässt sich im laufenden Betrieb testen, wenn man Platte/Stick angeschlossen hat:
- auf dem Stick ein Verzeichnis "callmonitor" anlegen und Obiges in eine Datei "fonbuch.txt" in diesem Verzeichnis einfügen.
- "mount --bind /var/media/ftp/uStor01/callmonitor /usr/www/all/html/callmonitor" ausführen
- Im Browser http://fritz.box/cgi-bin/webcm?getpage=../html/callmonitor/fonbuch.txt ansteuern und sich den Quelltext ansehen.
Mein Telefonbuch habe ich mal als Grafik angehängt.
Als Seiten-Quelltext wird Folgendes geliefert:
111123456789 Testname1 - home
111198765432 Testname1 - mobile
111168446846 Testname1 - work
3333123456789 Testname3 - home
3333987654321 Testname3 - mobile
3333216486498 Testname3 - work
2222123456789 Testname2 - home
2222987654321 Testname2 - mobile
2222687468864 Testname2 - work
Es sollte immer Die Nummer und der Name in einer Zeile angezeigt werden.
Ich bitte um Rückmeldung falls es bei Euch nicht so ist - vor allen Dingen auch bei Boxen, die die Mehrfacheinträge NICHT unterstützen.

@buehmann: In der alten Version werden die Einträge übrigens nur angezeigt, wenn eine Kurzwahl (z.B. **701) vorhanden ist.

wengi

PS: mit "umount /usr/www/all/html/callmonitor" lässt sich der Urzustand wiederherstellen.
PPS: Am liebsten hätte ich noch eine Funktion, die ausgewählte Anrufer aus der callers in das Telefonbuch einträgt. Aber das wird wohl (vorerst) noch ein Wunsch bleiben.
 

Anhänge

  • telefonbuch.JPG
    telefonbuch.JPG
    32.3 KB · Aufrufe: 27
Zuletzt bearbeitet:
Noch ein kleiner Nachtrag.
Für die, die es interessiert was wo gespeichert ist: fonbuch.txt
Code:
<? multiquery telcfg:settings/Phonebook/Entry/list(Name,Category) '
0:$0    1:$1    2:$2    3:$3    4:$4    5:$5    6:$6    7:$7    8:$8    9:$9
<? multiquery telcfg:settings/Phonebook/$1/Number/list(Type,Number,Code,Vanity) `
0:$0    1:$1    2:$2    3:$3    4:$4    5:$5    6:$6    7:$7    8:$8    9:$9    10:$10  11:$11  12:$12  13:$13  14:$14  15:$15  16:$16  17:$17`?>
' ?>
liefert mit obiger Konstellation
0:0 1:Entry0 2:Testname1 3:1 4: 5: 6: 7: 8: 9:

0:0 1:Entry0 2:Testname1 3:1 4: 5: 6: 7: 8: 9: 10:0 11:Number0 12:home 13:111123456789 14:1 15: 16: 17:
0:0 1:Entry0 2:Testname1 3:1 4: 5: 6: 7: 8: 9: 10:1 11:Number1 12:mobile 13:111198765432 14: 15: 16: 17:
0:0 1:Entry0 2:Testname1 3:1 4: 5: 6: 7: 8: 9: 10:2 11:Number2 12:work 13:111168446846 14: 15: 16: 17:

0:1 1:Entry1 2:Testname3 3:1 4: 5: 6: 7: 8: 9:

0:1 1:Entry1 2:Testname3 3:1 4: 5: 6: 7: 8: 9: 10:0 11:Number0 12:home 13:3333123456789 14:3 15: 16: 17:
0:1 1:Entry1 2:Testname3 3:1 4: 5: 6: 7: 8: 9: 10:1 11:Number1 12:mobile 13:3333987654321 14: 15: 16: 17:
0:1 1:Entry1 2:Testname3 3:1 4: 5: 6: 7: 8: 9: 10:2 11:Number2 12:work 13:3333216486498 14: 15: 16: 17:

0:2 1:Entry2 2:Testname2 3: 4: 5: 6: 7: 8: 9:

0:2 1:Entry2 2:Testname2 3: 4: 5: 6: 7: 8: 9: 10:0 11:Number0 12:home 13:2222123456789 14: 15: 16: 17:
0:2 1:Entry2 2:Testname2 3: 4: 5: 6: 7: 8: 9: 10:1 11:Number1 12:mobile 13:2222987654321 14:2 15: 16: 17:
0:2 1:Entry2 2:Testname2 3: 4: 5: 6: 7: 8: 9: 10:2 11:Number2 12:work 13:2222687468864 14: 15: 16: 17:
$3 ist demnach wohl das Feld "Wichtig".
$14 markiert anscheinend die Hauptrufnummer, wobei mir die Zahl (hier 1, 2 oder 3) noch nichts sagt...
Die Felder über 9 bzw. 17 scheinen nicht belegt zu sein.

wengi
 
Zuletzt bearbeitet:
Hi wengi,

super! Danke für deine Bemühungen. Ich werde zu Hause mal testen, ob settings/Phonebook auch auf meiner 7050 funktioniert, ich bezweifle das aber und tippe eher darauf, dass das eine neu eingeführte Schnittstelle im Rahmen des erweiterten Telefonbuchs ist. In dem Fall müssten wir noch eine Lösung zusammenstellen, die sowohl auf alten als auch auf neuen Boxen funktioniert.

Noch zwei Bemerkungen: Könntest du bitte noch überprüfen, ob nicht bei dir auch irgendeine Refresh-Funktion aufgerufen werden muss, damit die folgenden Abfragen immer funktionieren? Ich hatte damals den Fall, dass während der Entwicklung alles wunderbar funktionierte, hinterher dann nicht mehr. (Während der Entwicklung habe ich häufig genug auch das Webinterface aufgerufen, wodurch dieser Refresh erfolgte.) Aber vielleicht hat AVM das auch verbessert.

@buehmann: In der alten Version werden die Einträge übrigens nur angezeigt, wenn eine Kurzwahl (z.B. **701) vorhanden ist.
In der alten Version (der Firmware) gibt es nur eine Nummer pro Name und, wenn ich mich recht erinnere, muss jeder Eintrag eine Kurzwahl haben.

Gruß,

Andreas
 
Könntest du bitte noch überprüfen, ob nicht bei dir auch irgendeine Refresh-Funktion aufgerufen werden muss, damit die folgenden Abfragen immer funktionieren?
Kann ich prüfen, wenn ich weis wie...
Meinst Du , dass nach eine Timeout zunächst wieder das admin-Passwort eigegeben werden muss? Das hatte ich hier auch...
Wie rufe ich die Webseite eigentlich lokal unter ssh auf? Darüber habe ich mir noch gar keine Gedanken gemacht.

In der alten Version (der Firmware) gibt es nur eine Nummer pro Name und, wenn ich mich recht erinnere, muss jeder Eintrag eine Kurzwahl haben.
In der neuen Version kann man die Kurzwahlen auch ohne Fehlermeldung löschen. Das scheint sich also geändert zu haben.

wengi
 
Kann ich prüfen, wenn ich weis wie...
Meinst Du , dass nach eine Timeout zunächst wieder das admin-Passwort eigegeben werden muss? Das hatte ich hier auch...
Nein, die Sache mit dem Passwort ist davon unabhängig. Zum Prüfen: Entweder stellst du fest, dass nach längerer Zeit (Stunden, Tag), am besten nach einem Reboot, nach dem du vom Webinterface nichts angefasst hast, die Abfrage über fonbuch.txt nicht mehr funktioniert; dann weißt du, dass noch etwas fehlt. Oder du inspizierst direkt die entsprechende Telefonbuchseite von AVM und schaust, ob irgendwo eine Query mit verdächtigem Namen gemacht wird, deren Ergebnisse nicht angezeigt werden (weil sie zum Beispiel in einem HTML-Kommentar steht oder in so einem Dummy-Vergleich benutzt wird wie in meinem bisherigen fonbuch.txt).
Wie rufe ich die Webseite eigentlich lokal unter ssh auf?
Am einfachsten dürfte für dich sein, "phonebook start" aufzurufen (vorher das Lesen des AVM-Telefonbuchs in der Callmonitor-Konfiguration anschalten), das ruft die Seite ab (incl. Passwort) und speichert das Ergebnis nach /var/cache/phonebook/avm (Datei vorher löschen, sonst wird sie nicht neu erstellt).

Andreas
 
Bei ersten Aufruf kam eine Fehlermeldung, die Datei wurde aber erfolgreich erstellt.
Jetzt funktioniert es immer sauber:
/var/media/ftp/uStor01/callmonitor # phonebook start
Reading AVM's phone book...done.
/var/media/ftp/uStor01/callmonitor # cat /var/cache/phonebook/avm

111123456789 Testname1 - home
111198765432 Testname1 - mobile
111168446846 Testname1 - work
3333123456789 Testname3 - home
3333987654321 Testname3 - mobile
3333216486498 Testname3 - work
2222123456789 Testname2 - home
2222987654321 Testname2 - mobile
2222687468864 Testname2 - work
/var/media/ftp/uStor01/callmonitor #
Die Datei avm wurde erfolgreich erstellt und der Inhalt passt.
wengi
 
Zuletzt bearbeitet:
"phonebook start" löscht das Verzeichnis /var/cache/phonebook am Anfang (insofern war mein Hinweis zum Löschen der einen Datei überflüssig). Du befindest dich aber noch darin (in der alten Version). Mach einfach ein "cd /var/cache/phonebook" ...
 
Ich habs gerade gemerkt und oben editiert :)
 
Hi,

wenn bei Dir überhaupt keine Ausgabe kommt müssten wir das doch eigentlich mit einem if abfragen können und die bisherige Abfrage starten.
In der original fonbuch.htm findet sich das hier
Code:
<? if eq <? query telcfg:settings/Phonebook/Entry/count ?> 0 `
Das müsste sich irgendwie weiter verwenden lassen. Wenn es ein else gibt ist das schon gegessen.
Wenn obiges if passt verwende die neuen, ansonsten die bisherige Abfrage.

Ich habe die fonbuch.html mal angehängt.

Welche Sprache programmieren wir hier eigentlich gerade?
ich hab echt keine Ahnung, was ich hier gerade mache, aber es funktioniert :D

wengi
 

Anhänge

  • fonbuch.html.txt
    2.6 KB · Aufrufe: 12
Zuletzt bearbeitet:
Hi,

ja, die Idee mit dem "count" kam mir gestern auch noch, das gibt es bei allen Arten von Listen.
Wenn obiges if passt verwende die neuen, ansonsten die bisherige Abfrage.
Eher andersherum, oder? Wenn die Bedingung falsch ist, liefert count einen Wert ungleich null, was bedeutet, dass auf die Liste der Telefonbucheinträge auf die neue Weise zugegriffen werden kann und sie nicht leer ist. Wenn die Bedingung wahr ist, ist entweder die Liste leer (dann ist es auch egal, dass wir dann die alte Anfrage nehmen) oder die count-Anfrage hat nicht funktioniert. Ich hoffe nur, dass in diesem Fehlerfall das count auf Null als Default zurückfällt und nicht die Auswertung des ganzen if mit einem Fehler abgebrochen wird. Ich werde das mal umzusetzen versuchen und stelle dir dann das Ergebnis zum Testen auf der anderen Seite bereit.
Welche Sprache programmieren wir hier eigentlich gerade?
Eine Eigenentwicklung von AVM zum Thema "in HTML eingebettete Sprache mit genau der Mächtigkeit, die wir brauchen, nämlich Kontrollstrukturen + Config-Anfragen", würde ich sagen. :)

Andreas
 
Hi,

Du hast natürlich Recht. Ich hatte das > vor der 0 als grüßer gesehen..
Kleine Konzentrationsschwäche.

Eine "if neq" Abfrage geht. Das habe ich in den anderen html Dateien gesehen.
Code:
<? query telcfg:settings/Phonebook/Entry/count ?>
<? if eq <? query telcfg:settings/Phonebook/Entry/count ?> 0 `Alte Firmware-Abfrage starten`?>
<? if neq <? query telcfg:settings/Phonebook/Entry/count ?> 0 `<? multiquery telcfg:settings/Phonebook/Entry/list(Name,Category) '<? multiquery telcfg:settings/Phonebook/$1/Number/list(Type,Number,Code,Vanity) `
$13  $2 - $12`?>' ?> `?>
Der obige Code funktioniert nicht. Ich glaube das Problem sind die Trennzeichen '' bzw ``. Dürfen die doppelt verwendet werden? Wenn nein: Gibt es ein weitere Trennzeichen (´´)?
Das Ergebnis der ersten Abfrage ist bei mir 3. Bei Dir sollte es 0 sein.
Danach kommt bei mir leider nichts mehr. Bei Dir sollte der Text "Alte Firmware-Abfrage starten" auftauchen.

wengi

EDIT:
das hier sollte uns wenigstens zeigen, ob die if-Abfrage auf den verschiedenen Boxen läuft:
Code:
<? query telcfg:settings/Phonebook/Entry/count ?>
<? if eq <? query telcfg:settings/Phonebook/Entry/count ?> 0 `Alte Firmware-Abfrage starten`?>
<? if neq <? query telcfg:settings/Phonebook/Entry/count ?> 0 `Neue Firmware-Abfrage starten`?>
Wenn gar keine Meldung kommt haben wir ein Problem.
 
Zuletzt bearbeitet:
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.