- Mitglied seit
- 8 Sep 2010
- Beiträge
- 3,975
- Punkte für Reaktionen
- 754
- Punkte
- 113
Dieser Beitrag hat mich auf die Idee gebracht, die Anrufliste der Fritz!Box an einem Mitel Telefon (6800, 6900) nutzbar zu machen.
Einleitung und Voraussetzungen:
Erläuterungen:
Werte in eckigen Klammern [] sind Platzhalter und müssen durch eigene, sinnvolle Werte ersetzt werden. Das betrifft insbesondere IP Adressen bzw. URL.
Ich gehe im Fall des Webservers davon aus, dass dieser extra für dieses Howto installiert wurde. Der 3. Punkt geht daher nur von der Existenz der default Seite aus.
Durchführung:
1. Provisionierungsdatei erweitern
In der Datei [macadresse].cfg folgende Zeilen einfügen:
Wer will, kann auch direkt die verpassten Anrufe anzeigen:
Mit topsoftkey1 ist die erste Taste, oben links neben dem Display gemeint und lässt sich natürlich beliebig abändern. Wenn kein Provisionierungsserver genutzt wird, kann die Taste auch über das Webinterface des Telefons angelegt werden.
Sofern das Telefon über eigene Tasten für Anruflisten bzw. Wahlwiederwiederholung verfügt, können diese auch belegt werden:
Speichern und das Telefon neu starten
2. Cron Job anlegen:
Die Datei /etc/cronjob editieren:
Damit wird alle 5 Minuten die Anrufliste in die Datei anrufe.csv gespeichert.
3. PHP Script für das Telefon auf dem Webserver erstellen:
Folgende Datei erstellen und im DocRoot des Webservers (z.B. /var/www/html/) als
Das Script lässt sich natürlich beliebig erweitern. Z.B. könnte noch ein zusätzlicher Filter eingebaut werden, sodass nur die Anrufliste des jeweiligen IP Telefons angezeigt wird. Den Spaghetti-Code bitte ich zu entschuldigen, ich bin kein Informatiker.
Einleitung und Voraussetzungen:
- Mitel SIP Telefon der Serie 6800i bzw. 6900i (6867i, 6869i, 6873i, 6920i, 6930i, 6940i, teilw. auch 67xx Serie, hier aber nicht berücksichtigt)
- Linux Server mit Webserver (z.B. nginx) und PHP.
- Gewisses Grundwissen in Linux/Web (wie installiere ich was, wie editiere ich was, Zuordnung Webpfad->lokaler Pfad)
- Die fb_tools von https://www.mengelke.de/Projekte/FritzBox-Tools
Erläuterungen:
Werte in eckigen Klammern [] sind Platzhalter und müssen durch eigene, sinnvolle Werte ersetzt werden. Das betrifft insbesondere IP Adressen bzw. URL.
Ich gehe im Fall des Webservers davon aus, dass dieser extra für dieses Howto installiert wurde. Der 3. Punkt geht daher nur von der Existenz der default Seite aus.
Durchführung:
1. Provisionierungsdatei erweitern
In der Datei [macadresse].cfg folgende Zeilen einfügen:
Code:
topsoftkey1 type: xml
topsoftkey1 label: Anrufliste
topsoftkey1 value: http://[ip-oder-url-vom-webserver]/liste.php
Wer will, kann auch direkt die verpassten Anrufe anzeigen:
Code:
topsoftkey1 type: xml
topsoftkey1 label: Wahlwiederholung
topsoftkey1 value: http://[ip-oder-url-vom-webserver]/liste.php?l=v
Mit topsoftkey1 ist die erste Taste, oben links neben dem Display gemeint und lässt sich natürlich beliebig abändern. Wenn kein Provisionierungsserver genutzt wird, kann die Taste auch über das Webinterface des Telefons angelegt werden.
Sofern das Telefon über eigene Tasten für Anruflisten bzw. Wahlwiederwiederholung verfügt, können diese auch belegt werden:
Code:
callers list script: http://[ip-oder-url-vom-webserver]/liste.php
redial script: http://[ip-oder-url-vom-webserver]/liste.php?l=a
Speichern und das Telefon neu starten
2. Cron Job anlegen:
Die Datei /etc/cronjob editieren:
Code:
*/5 * * * * www-data php [pfad-zu-fb_tools]/fb_tools.php http://[benutzername]:[kennwort]@fritz.box mode:anrufliste file:[/pfad/zum/html/root]/anrufe.csv -cs:","
Damit wird alle 5 Minuten die Anrufliste in die Datei anrufe.csv gespeichert.
3. PHP Script für das Telefon auf dem Webserver erstellen:
Folgende Datei erstellen und im DocRoot des Webservers (z.B. /var/www/html/) als
liste.php
abspeichern.
PHP:
<?php
if (isset($_GET['l'])) {
$l = $_GET['l'];
switch ($l) {
case 'e':
$call = 'in';
$head = 'ankommende Anrufe';
break;
case 'a':
$call = 'out';
$head = 'ausgehende Anrufe';
break;
case 'v':
$call = 'ring';
$head = 'verpasste Anrufe';
break;
}
if (($handle = fopen("anrufe.csv", "r")) !== FALSE) {
echo '<AastraIPPhoneTextMenu fontMono="no"><TopTitle>'.$head.'</TopTitle>';
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$anrufe[] = $data;
}
$anrufe = array_reverse($anrufe);
$num = count($anrufe);
for ($c=0; $c < $num; $c++) {
if ($anrufe[$c][0] == $call) {
if(is_numeric($anrufe[$c][3])) {
if($anrufe[$c][2] == '') {
$name = $anrufe[$c][3];
} else {
$name = htmlspecialchars($anrufe[$c][2]);
}
$number = $anrufe[$c][3];
} else {
$name = htmlspecialchars($anrufe[$c][2]).', '.htmlspecialchars($anrufe[$c][3]);
$number = $anrufe[$c][4];
}
echo '<MenuItem><Prompt>'.$name.', '.$anrufe[$c][1].'</Prompt><URI>SoftKey:Dial2</URI><Dial>'.$number.'</Dial></MenuItem>';
}
}
fclose($handle);
}
echo '<SoftKey index = "1">
<Label>Anrufen</Label>
<URI>SoftKey:Dial2</URI>
</SoftKey>
<SoftKey index = "3">
<Label>Verlassen</Label>
<URI>SoftKey:Exit</URI>
</SoftKey>
</AastraIPPhoneTextMenu>';
} else {
echo '<AastraIPPhoneTextMenu fontMono="no">
<TopTitle>Anruflisten</TopTitle>
<MenuItem>
<Prompt>ankommende Anrufe</Prompt>
<URI>http://[ip-oder-url-vom-webserver]/liste.php?l=e</URI>
</MenuItem>
<MenuItem>
<Prompt>ausgehende Anrufe</Prompt>
<URI>http://[ip-oder-url-vom-webserver]/liste.php?l=a</URI>
</MenuItem>
<MenuItem>
<Prompt>verpasste Anrufe</Prompt>
<URI>http://[ip-oder-url-vom-webserver]/liste.php?l=v</URI>
</MenuItem>
<SoftKey index = "1">
<Label>Verlassen</Label>
<URI>SoftKey:Exit</URI>
</SoftKey>
</AastraIPPhoneTextMenu>';
}
?>
Das Script lässt sich natürlich beliebig erweitern. Z.B. könnte noch ein zusätzlicher Filter eingebaut werden, sodass nur die Anrufliste des jeweiligen IP Telefons angezeigt wird. Den Spaghetti-Code bitte ich zu entschuldigen, ich bin kein Informatiker.