Advokat als CID-Quelle in FreePBX einbinden
Die FreePBX Telefonanlage ist eine
Konfigurationoberfläche zur einfachen Konfiguration einer Asterisk-basierenden
Telefonanlage.
Sie beinhaltet auch ein interessantes Modul zur Caller ID Bestimmung, über
welches man verschiedene Methoden zur Reversnummernabfrage verwenden kann.
In Österreich ist das Anwaltskanzleipaket Advokat recht populär. Es wäre also
nicht unpraktisch, gleich den Namen des Mandanten am Display durch die Telefon-
Anlage angezeigt zu bekommen ganz ohne TAPI am Schirm.
Dies ist gar nicht so schwer zu realisieren, sofern die .MDB Datenbank am
Server liegt, wovon wir einmal ausgehen.
Die mdbtools sind hierfür ein nützliches Paket und können über unixodbc
einfach abgefragt werden.
Leider sind die Paketversionen der mdbtools buggy, sodas wir eine
fehlerberenigte Version der Bibliothek manuell installieren müssen:
apt-get install unixodbc php5-odbc libglib2.0-dev txt2man cd /usr/src wget https://github.com/leecher1337/mdbtools/archive/master.zip unzip master.zip rm master.zip cd mdbtools-master autoreconf -fi ./configure --with-unixodbc=/usr/lib/odbc make make install
Nun die Datenquelle für die Advokat.mdb eintragen (Pfad anpassen):
vi /etc/odbc.ini
[Advokat] Description = Advokat Driver = MDBTools Servername = localhost Database = /home/data/advokat/Advokat/Daten/ADVOKAT.MDB UserName = Password = port = 5432
Jetzt noch den MDB-Treiber, den wir kompiliert haben mit ODBC registrieren:
vi /etc/odbcinst.ini
[MDBTools] Description = MDBTools Driver Driver = /usr/local/lib/libmdbodbc.so
Nun benötigen wir noch ein kleines PHP-Script, welches die Nummern
normalisiert, damit diese mit der eingehenden Nummer auf der Telefonanlage
verglichen werden können.
Die Normalisierung der Nummer muss man sich entsprechend der Anlagenparameter
anpassen, da diese wohl je nach Provider in unterschiedlicher Form kommt.
Das Script z.B. in den root der FreePBX-Installation kopieren oder an einen
Ort, wo es das CIDLookup Script finden kann:
tel.php:
<?php define('DSN_ADVOKAT', 'Advokat'); function GetName($odbc, $NNr) { if ($result = odbc_exec($odbc, 'select Titel, Vorname, Name1 from Namen Where NNr='.$NNr)) { if (odbc_fetch_row($result)) { $titel = odbc_result($result,1); $ret=($titel?$titel.' ':'').odbc_result($result,2).' '.odbc_result($result,3); } odbc_free_result($result); } return $ret; } $odbc = odbc_connect(DSN_ADVOKAT, '', ''); if ($result = odbc_exec($odbc, "select NNr, Vorwahl, Telefon from Telefon Where Art='Telefon' or Art='Handy'")) { while (odbc_fetch_row($result)) { $tel = trim(odbc_result($result,2).odbc_result($result,3)); if ($tel[0]=='+') $tel='00'.substr($tel, 1); $tel = preg_replace("/[^0-9,.]/", "", $tel); if ($tel[0] == '0') $tel='43'.substr($tel,$tel[1]=='0'?2:1); if ($tel==$_REQUEST['nr']) { echo GetName($odbc, odbc_result($result,1)); break; } } odbc_free_result($result); } odbc_close($odbc); ?>
Danach müssen wir nur noch eine neue Quelle im CIDLookup definieren.
Source type: HTTP
Host: localhost
Port: 80 oder wo immer der Webserver läuft
Path: /tel.php
Query: nr=[NUMBER]
Das sollte es gewesen sein.
Comments
Trackbacks