[HowTo] Anrufliste der Fritz!Box mit einem Mitel SIP Telefon nutzen

chrsto

IPPF-Promi
Mitglied seit
8 Sep 2010
Beiträge
3,722
Punkte für Reaktionen
702
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:

  • 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
Über einen CronJob wird durch die fb_tools die Anrufliste der Fritz!Box regelmäßig abgefragt und als csv Datei auf dem Server abgelegt. Das Telefon fragt dann über ein PHP Script die CSV Datei ab und zeigt die jeweilige Anrufliste (angenommen, angerufene oder verpasst) an.

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.
 
  • Like
Reaktionen: Rangierdraht und Fall

Statistik des Forums

Themen
245,931
Beiträge
2,242,839
Mitglieder
373,246
Neuestes Mitglied
tiny1900
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.