praktikumsbericht als docx - htw berlin - hochschule für technik
DESCRIPTION
TRANSCRIPT
Praktikumsbericht
Martin Becker
s0516299
Fachhochschule für Technik und Wirtschaft Berlin
Firma Comberry Ltd. Shanghai China
Oktober 2008 bis März 2009
Inhalt
Einleitung·····················································································3
Porträt der Firma···········································································4
Das Team – Organisation der Firma····················································5
Einarbeitungsphase·········································································6
Einrichtung der Arbeitsumgebung...................................................................................6
Einarbeitung in die Benutzerverwaltung.........................................................................6
Backupsystemverwaltung................................................................................................6
Angebotserstellungen·······································································8
Angebot Renommee.........................................................................................................8
Angebot Ospidali Psalmendatenbank..............................................................................8
Angebot Helgaa...............................................................................................................9
Projekt DocSEO············································································10
Beschreibung des Projektes...........................................................................................10
Entwicklungsumgebung.................................................................................................12
Vorstellung der Software Asterisk.................................................................................12
Installation von Asterisk Version 1.6.............................................................................12
Funktionsweise von Asterisk.........................................................................................13
Ablaufplan des Programms............................................................................................14
Warteschleifen...............................................................................................................15
Die zu sammelnden Daten.............................................................................................15
Aufsetzen einer Datenbank............................................................................................16
Auslagern der Call-Detail-Records (CDR)....................................................................17
Realtime – Auslagern der Konfigurationsdateien..........................................................18
DB-Abfragen im dialplan..............................................................................................19
Asterisk-Gateway-Interface...........................................................................................19
Verbindung mit dem deutschen Festnetz.......................................................................20
Zusammenfassung·········································································21
Fazit···························································································22
2
Einleitung
Als Voraussetzung zur Absolvierung meines Studiums an der FHTW Berlin im
Studiengang internationale Medieninformatik ist es nötig, ein Praktikum im
zukünftigen Berufsfeld in einer im Ausland ansässigen Firma zu tätigen.
Meine Entscheidung, dieses Praktikum in der Firma Comberry Ltd. in Shanghai /
China zu machen, fällte ich nach kurzem Kontakt mit dem Chef der Firma. Nachdem
ich mit ihm meine Vorstellungen über die Zielsetzung des Praktikums besprochen und
er meine anfänglichen Zweifel an einem längerem Aufenthalt in China zerstreut hatte,
einigten wir uns auf eine Zusammenarbeit in seiner Firma über einen Zeitraum von
sechs Monaten, d.h. weit mehr als die vorgeschriebene Mindestdauer.
Das Hauptaugenmerk des Praktikums sollte in der Entwicklung von Telefon-
applikationen (z.B. IPhone) und webbasierten Anwendungen liegen, sowohl im Front-
als auch im Backend. Darüber hinaus wollte ich als Teil eines Teams an der
Produktion eines größeren Projektes beteiligt sein, um Erfahrungen in der
Organisation und Umsetzung derartiger Aufgaben zu sammeln. Im Zusammenhang
mit diesen Wünschen versprach ich mir eine Erweiterung meiner Fähigkeiten in
verschiedenen Programmiersprachen wie Java, PHP und vielleicht auch C/C++. Als
besonderen Nebeneffekt erhoffte ich mir auch eine deutliche Verbesserung meiner
Kenntnisse der englischen Sprache.
All dies schien die Firma Comberry Ltd. aufgrund der Vielfältigkeit der Projekte zu
bieten. Des Weiteren wurde mir eine gute Organisation der alltäglichen Dinge, z.B.
das Stellen einer Unterkunft nach “gehobenen westlichen Standard”, unterbreitet und
der positive persönlich Eindruck durch die Telefongespräche mit dem Besitzer des
Unternehmens ließen mich zu der Entscheidung kommen, für ein halbes Jahr nach
China zu gehen.
3
Porträt der Firma
Die Firma Comberry Ltd. wurde im Jahr 2004 in London gegründet. Die Besitzer der
Firma sind Martin Hackl (CEO) und Godfrey Du (Management). Der Hauptsitz der
Firma ist in London. In Deutschland gibt es eine Zweigstelle um den Kontakt mit der
Kundschaft, welche zum größten Teil aus Deutschland ist, zu pflegen. Die Produktion
und Umsetzung aller Projekte findet (aus wahrscheinlich finanziellen Gründen) in
Shanghai statt.
Das Unternehmen hat ein breites Spektrum an Dienstleistungen und Eigenent-
wicklungen zu bieten. In der näheren Vergangenheit wurden zahlreiche Projekte für
Internetanwendungen umgesetzt. Als Beispiele wären hier die Internetplattform
“TVman”, die browserbasierte Live Community “Vimp” und das Media CMS “OS
Tube” zu nennen.
Derzeit entwickelt das Unternehmen in Eigeninitiative einen internetbasierten
Vermittlungsservice mit VoIP-Telekommunikation und macht erste Gehversuche auf
dem Sektor der Telefonapplikationen für die Firmen Nokia und Apple. Nebenher läuft
als eigenständiger aber von der Firma kontrollierter Teil ein Unternehmen, welches
sich auf die Produktion von Adobe Flash-Animationen im Comic-Bereich
spezialisiert hat. Dieser Teil der Firma wird durch chinesische Führungskräfte nach
Vorgaben durch Martin Hackl und weiteren Partnern aus Deutschland geleitet und ist
maßgeblich an der Umsetzung einer e-Learning Plattform, finanziert durch die Firma
Bertelsmann, beteiligt.
In näherer Zukunft ist eine Ausweitung des Vermittlungsserviceprojektes zu erwarten.
In diesem Jahr ist darüberhinaus noch die Entwicklung einer Zeichentrick-Filmserie
geplant.
4
Das Team – Organisation der Firma
Die Führungsposition in der Entwicklung und bei der Verteilung der Aufgaben nimmt
Martin Hackl ein. Er gibt die Projekte vor und vergibt Teilaufgaben an die einzelnen
Mitarbeiter. Mit ihm habe ich jeweils direkt meine jeweils nächsten Aufgaben
besprochen und auch bei ihm nach Beendigung des Projektes / der Teilaufgabe
abgegeben bzw. vorgeführt.
Organigramm
5
Einarbeitungsphase
Einrichtung der Arbeitsumgebung
Als meine erste Aufgabe galt es mir meinen eigenen Arbeitsplatz einzurichten. Mir
wurde ein handelsüblicher Rechner zur Verfügung gestellt auf dem das Betriebs-
system Windows XP bereits vorinstalliert war. Um diesen Rechner nutzen zu können
wurde mir ein User-Account im Firmennetzwerk eingerichtet. Ich musste mich selbst-
ständig in das firmeninterne Bug-Reporting-System “Mantis” einarbeiten. Des
Weiteren galt es, die von meinen Kollegen genutzten Kommunikationstools wie
Skype und Pidgin zu installieren und einen Account im e-Mail-Versandsystem
einrichten zu lassen.
Einarbeitung in die Benutzerverwaltung
In der Zeit meines Praktikums sollte ich jederzeit in der Lage sein neue Nutzer im
Firmennetzwerk anzulegen und diese mit entsprechenden Zugriffsrechten zu
versehen. Die Verwaltung der User-Accounts wird mit dem Programm “Active
Directory Users and Computers” der Firma Microsoft verwendet. Es bestand bis zu
diesem Zeitpunkt keinerlei Dokumentation, somit erstellte ich eine Schritt-für-Schritt
Anleitung mit Screenshots zum Anlegen neuer User.
Die gleiche Aufgabe stellte sich für das Anlegen von neuen Mail-Accounts für neue
Mitarbeiter. Als primäres e-Mail-Versandsystem wird ein Produkt von Google
genutzt. Als Fall-back-System wird zusätzlich “Microsoft Exchange Server 2007”
verwendet. Auch für dieses Programm erstellte ich nach Einarbeitung eine Anleitung
um die Arbeit meinen Nachfolgern zu erleichtern.
(Für beide Anleitungen sehe ich an dieser Stelle keinen praktischen Zweck diese hier
aufzuführen deshalb verzichte ich darauf.)
Backupsystemverwaltung
Zu Beginn musste festgestellt werden, welche Daten gesichert werden sollten. Als
meine Aufgabe in Zusammenarbeit mit einem erfahreneren Kollegen stellte sich die
Sicherung der Datenbanken auf dem Linux Web-Server heraus. Wir erstellten einen
Cron-Job im Ordner “/etc/cron.daily/” auf dem Server.
6
Script:
Dieses Script macht einen Dump aller Datenbanken und schreibt diese in eine
einzelne Datei. Der Dateiname enthält dabei das Datum und die Uhrzeit des Backups.
Das Backup wird komprimiert und im Ordner “/var/www/html/mysql_backup/”
gespeichert.
7
#!/bin/shdate=`date -I`mysqldump --all-databases | gzip > /var/www/html/mysql_backup/backup-$date.sql.gz
Angebotserstellungen
Angebot Renommee
Um ein Angebot im Namen der Firma zu erstellen wird das Programm “Microsoft
Excel” verwendet. Für dieses Programm stand zu Beginn meines Praktikums bereits
ein von meinem Vorgänger erstelltes Makro bereit. Dieses Makro enthält eine auto-
matische Zusammenrechnung der Stunden, Arbeitskosten und die automatisierte
Seitenumbrucheinstellung. Nach Erforschung des Programms konnte ich mit der
eigentlichen Arbeit beginnen.
Um festzustellen, welche Arbeitsabläufe in Rechnung gestellt werden müssten war es
notwendig, die Mußkriterien des Projektes heraus zu finden. Dazu wurden mir
mehrere e-Mails des Kunden übermittelt welche ich durchlesen und verstehen musste.
Als Anhaltspunkte für den Umfang der einzelnen Arbeiten erhielt ich Einblick in viele
verschiedene ältere Angebote der Firma und konnte somit die Anzahl der
Arbeitsstunden festlegen. Zuletzt wurde das Angebot mit dem Chef besprochen und
korrigiert. Der gesamte Prozess erstreckte sich über zwei Arbeitstage.
Angebot Ospidali Psalmendatenbank
Als neue Aufgabe sollte ich ein weiteres Angebot in ähnlicher Form erstellen. Dieses
Mal lag ein vom Kunden erstelltes “Pflichtenheft” vor. Somit bestand meine
Hauptaufgabe im Studium dieses Dokumentes. Leider war dies nicht im Entferntesten
für die Softwareentwicklung geeignet. Es befanden sich sehr viele Ungereimtheiten
und nicht eindeutige Aussagen bzw. Wünsche des Kunden in diesem Dokument somit
verbrachte ich zwei Arbeitstage mit dem Herausfinden “was die eigentlich wollen”.
Letztendlich konnte ich dieses Projekt in 11 große Arbeitsschritte einteilen.
Einrichten der Entwicklungsumgebung
Datenbankentwurf
Layout-Gestaltung und Stylesheet-Erstellung
Erstellung der Navigation
...
8
Mit wurde bei diesem Angebot bewusst, dass viele Arbeitsschritte sich von Projekt zu
Projekt immer wieder wiederholen bzw. sich sehr ähneln. Daher war es einfach sich
durch Sichtung der alten Angebote ein Bild vom Umfang des Projektes zu machen.
Des Weiteren habe ich bei der Erstellung dieses Angebotes gelernt, dass viele Kunden
es vorziehen, ein sogenanntes Pflichtenheft in laienhafter Form zu erstellen und dies
an eine Firma zur Angebotserstellung weiterleiten. Das dabei von professionellen
Softwareentwicklern erstellte Angebot wird daraufhin häufig als Basis für ein neues
Pflichtenheft missbraucht. Dieser Umstand erschwert es den kleinen und mittel-
ständischen Unternehmen sich am Markt zu behaupten.
Angebot Helgaa
Die Firma hatte in der Vergangenheit schon einmal an dem Projekt “Helgaa”
gearbeitet. Dieses scheiterte jedoch, da es für die Auftraggeber finanziell nicht weiter
tragbar war. Der Grund war schlicht eine fehlende Übersicht über die Vielzahl der
einzelnen Aufgabengebiete. Es gab nur ein mangelhaftes Pflichtenheft.
Diese Auftraggeber kamen erneut mit einer komplett neu erstellten Dummy-Website
auf unsere Firma zu und erbaten ein Angebot dazu. Als meine Aufgabe stellte sich die
Erforschung dieser Website und die Erstellung eines Angebotes heraus.
Bei dem Projekt Helgaa handelt es sich um eine Online-Community mit Browser-
spieloberfläche in Form einer Flash-Stadtkarte. Die Website besteht aus einer
Startseite mit Login-Möglichkeit. Nach dem Login kann man ähnlich der Online-
Community “Facebook” mit anderen Mitspielern kommunizieren, handeln und
spielen. Als besonderes Herausstellungsmerkmal steht dabei die Spieloberfläche im
Vordergrund, auf der jeder Mitspieler nach bestimmten Parametern Objekte platzieren
und verändern kann.
Nach sechs Arbeitstagen der Analyse und dem Versuch der genauen Beschreibung
des gesamten Projektes wurde ich durch meinen Chef in der Arbeit unterbrochen.
Dieses Projekt ist extrem umfangreich und durch den Auftraggeber leider nicht
eindeutig beschrieben, dass nur ein Teilbereich der gesamten Community von der
Firma umgesetzt werden würde. Das von mir erstellte Angebot umfasste mehr als 15
Seiten mit verschiedensten Aufgabenbereichen. Nur durch eine exakte Beschreibung
wird dieses Projekt umsetzbar sein.
9
Projekt DocSEO
Beschreibung des Projektes
10
Bei dem Projekt handelt es sich um eine professionelle Klientenvermittlung, welche
die Vorteile von Telefon und Internet miteinander verknüpft. Pro Vermittlung eines
Klienten wird dem Kunden ein einmaliges Erfolgshonorar berechnet. Schaffen es die
Vermittler (die Firma Comberry) nicht, neue Klienten für einen Kunden zu werben, so
fallen für diesen auch keine Kosten an.
Das Telefonvermittlungssystem (TVS) ist das Herzstück des Internet-basierten
Klientenvermittlungssystems. Damit ist es möglich, teilnehmenden Kunden
gegenüber eindeutig zu beweisen, wie viele Vermittlungen durch das Engagement der
Vermittler tatsächlich zustande gekommen sind.
Jeder Kunde erhält 2 kostenfreie Rufnummern für seine Homepage bzw. Flyer und
andere Werbemittel (0800er Servernummern, etwa 0800/1234567-101 und
0800/1234567-102). Eine Nummer dient zur Terminvereinbarung für
Privatklienten, die andere zur Terminvereinbarung für weitere Klienten. Die
Nummern sind direkt mit dem zentralen TVS der Vermittler in Luxemburg
verbunden. Das System basiert auf einer modifizierten Version der freien VoIP-
Telefonanlage Asterisk. Diese Software nimmt eingehende Gespräche automatisch
entgegen und ordnet sie anhand der Durchwahl einem Kunden zu.
In diesem Projekt handelt es sich bei den Kunden um Arztpraxen, bei den Klienten
um private bzw. Kassen-Patienten. Der Klient(Patient) hört zunächst eine
Begrüßung wie etwa „Herzlich willkommen in der gynäkologischen Praxis Dr.
Meier“. Daraufhin wir der Klient dazu aufgefordert, eine Angabe darüber zu
machen, ob er schon einmal zu Gast in der Praxis war oder ob er ein neuer Patient
ist: „Falls Sie zum ersten Mal einen Termin bei uns vereinbaren, bleiben Sie bitte
einfach in der Leitung. Falls Sie bereits Patient bei uns sind, drücken Sie bitte die
1“.
11
Das Vermittlungssystem hat nun folge Informationen gesammelt:
Telefonnummer des Anrufers (sofern übermittelt)
Name des Inhabers des Telefonanschlusses (falls im Telefonbuch
eingetragen)
Versicherungsstatus des Anrufers (privat oder gesetzlich)
Kundenstatus des Anrufers (neuer Patient oder wiederkehrender
Patient)
Der nächste Schritt ist die Vermittlung des Gesprächs mit der entsprechenden
Arztpraxis. Der Anrufer hört in der Zwischenzeit eine Ansage: „Bitte haben Sie einen
Moment Geduld. Eine Sprachstundenhilfe ist gleich für Sie da.“
Das TVS kontaktiert nun die Arztpraxis. Sobald der Anruf von einer
Sprechstundenhilfe entgegengenommen wird, gibt das TVS per Ansage alle
relevanten Informationen zum Anrufer durch (Beispiel): „Patientenvermittlung.
Anrufer ist ein neuer Privatpatient. Verbinde…“. Die Vermittlung ist damit
abgeschlossen.
Das TVS speichert nun lediglich noch die Dauer des Gesprächs zwischen Anrufer und
Sprechstundenhilfe. Sollte das Gespräch weniger als 15 Sek. andauern, wird nicht
davon ausgegangen, dass ein Termin vereinbart wurde.
Detailierte Statistiken zu jeder Arztpraxen sind Grundlage für die Abrechnung mit der
teilnehmenden Arztpraxen. Die für die Statistiken erforderlichen Daten über die
einzelnen Telefonate werden von dem TVS vollautomatisch für eine weitere
Auswertung in einer Datenbank abgespeichert.
Detailierte Statistiken zu jeder Arztpraxen sind Grundlage für die Abrechnung mit der
teilnehmenden Arztpraxen. Diese werden vom TVS voll-automatisch erzeugt.
Entwicklungsumgebung
VM-Ware Ubuntu-Betriebssystem in der VM laufend Xlite – Softphone Asterisk open source PBX
Auf meinem PC war schon durch einen Praktikanten, welcher vorher an diesem
Projekt erste Tests gemacht hat, eine Virtual Maschine(VM) auf dem Rechner
installiert. In der VM läuft Ubuntu. Die Asterisk-Software der Version 1.4 war bereits
vorinstalliert.
Vorstellung der Software Asterisk
Asterisk ist eine Software, welche alle Moeglichkeiten einer herkoemmlichen
Telefonanlage bereitstellen kann. Sie unterstuetzt Verbindungen mittels Voice-over-
IP (VoIP) in Verbindung mit unterschiedlichen Protokollen. Durch das breite
Spektrum an Funktionen, Schnittstellen und unterstuetzten Protokollen und durch das
leichte Manipulieren mittels einer eigenen Scriptsprache fiel die Entscheidung auf
eben diese Software, um mit ihr das Projekt umzusetzen. Als Uebertragungsprotokoll
benutzen wir in fuer die Anrufe das Setion Initiation Protocol (SIP) welches sich
durch verschiedene Vorzuege als das beste heraus stellte.
Installation von Asterisk Version 1.6
Um möglichst alle Schritte zum Aufsetzen der Software selbst zu erlernen entschied
ich mich die vorinstallierte Software zu deinstallieren und selbst von Grund auf die
Anlage neu einzuspielen. Dies ist nach Anleitung denkbar einfach. Zuerst muss die
Software von entsprechender Stelle heruntergeladen und danach installiert werden.
#cd /usr/src/usr/src# wget http://downloads.digium.com/pub/asterisk/asterisk-1.6-current.tar.gz/usr/src# tar xvzf asterisk-1.6-current.tar.gz/usr/src# cd asterisk-1.6*usr/src/asterisk-1.4.10# ./configureusr/src/asterisk-1.4.10# makeusr/src/asterisk-1.4.10# make install
12
Auf dem Arbeitsrechner ist das Betriebssystem Windows XP Professional 64Bit
Version installiert. Für die Arbeit an der virtuellen Telefonanlage werden
folgende Programme benötigt / benutzt:
Funktionsweise von Asterisk
Um die Software seinen Wünschen entsprechend zu verändern muss man in den dafür
vorgesehenen Konfigurationsdateien (zu finden unter ‚/etc/asterisk/‘) programmieren.
Das Herzstück der Software stellt dabei die Datei ‚extensions.conf‘ dar. In dieser wird
der sogenannte dialplan (deutsch: Wählplan) festgelegt. Hier findet die Zuweisung
von Nummern und Telefonen statt. In der ‚sip.conf‘ werden die Telefone, mit denen
man mit dem System kommunizieren kann, fest. Zur Erklärung der Funktionsweise
diente in meinem Falle ein kleines Beispiel.
Zuerst wird ein Telefon in der ‚sip.conf‘ definiert.
[general]port=5060bindaddr=0.0.0.0context=sonstige[2000]type=friendcontext=meine-telefonesecret=1234host=dynamic
Danach wird im dialplan im dafür vorgesehenen Kontext die gewünschte Funktion
festgelegt.
[sonstige][meine-telefone]exten => 1001,1,Answer()exten => 1001,2,Playback(hello-world)exten => 1001,3,Hangup()
Es muss nun ein Softphone, in meinem Fall die Software Xlite, installiert und
entsprechend konfiguriert (Username:2000, Passwort:1234, IP-Adresse des Asterisk-
Servers usw.) werden. Dann kann man Asterisk starten.
etc/asterisk# asterisk –vvvvvc
Nun befindet man sich auf dem Command Line Interface (CLI) von Asterisk. Hier
kann man verschiedene Befehle an die Software übergeben und den aktuellen Ablauf
des Programms mit verfolgen. Wenn man nun das Softphone richtig eingestellt hat,
kann man auf der CLI folgende Ausgabe sehen.
*CLI> -- Registered SIP ’2000’ at 192.168.0.69 port 5060 expires 120 -- Unregistered SIP ’2000’
13
Ablaufplan des Programms
Nach den ersten erfolgreichen Tests mit Asterisk musste festgelegt werden, wie der
eigentliche Ablauf des von mir zu erstellenden Programms sein sollte. Hierzu
erläuterte mir mein Vorgesetzter seine Vorstellungen und ich visualisierte diesen
Ablaufplan mit der Software ‚Microsoft Office Visio 2007‘.
Die Queues sind Warteschleifen. In diese wird der anrufende Patient geschickt und
soll Musik zu hören bekommen solange er auf Verbindung mit der Arztpraxis wartet.
Das System soll im Hintergrund automatisch die entsprechende Praxis anrufen. Um
Missverständnissen bei der Verbindung des Anrufers mit dem Angerufenen
vorzubeugen und die Praxisangestellten auf das zu erwartende Gespräch vor-
zubereiten, soll dem Angerufenen eine Soundfile vorgespielt werden.
14
Warteschleifen
Die Warteschleifen (Queues) haben in diesem Programm eine ausschlaggebende
Bedeutung. Sie werden vom Anrufer angerufen. Dieser kann dann eine vordefinierte
Warteschleifenmusik hören während das Programm den Wählvorgang automatisch
übernimmt. Die Queues werden in der ‚queues.conf‘ definiert und mit Eigenschaften
versehen. In meinem Fall benötige ich vier Queues. Dies ergibt sich aus dem Status
der Versicherung und daraus, ob der Patient schon registriert ist oder eben nicht. Als
geeignete Funktion zur Ankündigung des zu erwartenden Patiententyps stellte sich
das Abspielen von announcements (Deutsch: Ankündigungen) heraus.
[49030123_old_private]
member => SIP/2000
announce = comberry/hellodoc_old_private
[49030123_old_public]
member => SIP/2000
announce = comberry/hellodoc_old_private
...
Die zu sammelnden Daten
Um eine Ausgangsbasis für eine Rechnungsstellung zu haben ist es notwendig, die
Daten über eine erfolgreiche Verbindung zu ermitteln. Die Software Asterisk bringt
standardmäßig eine Log-Funktion der Telefonverbindungen mit. Diese werden in
einer CSV-Datei mit dem Namen ‚Master.csv‘ gespeichert welche sich im Ordner
‚/var/log/asterisk/cdr-csv/‘ befindet. Des Weiteren wird die Speicherung folgender
Daten vom System verlangt:
Telefonnummer der jeweils angerufenen Praxis
Telefonnummer des Anrufers (sofern übermittelt)
Zeit des Telefongesprächs (nur die reine Verbindungszeit in der beide
Gesprächspartner wirklich miteinander verbunden sind)
Datum und Uhrzeit des Gesprächs
15
Aufsetzen einer Datenbank
Erst durch eine Datenbank (DB) wird es für alle Module in dem gesamten Projekt
möglich, Daten miteinander auszutauschen, anzulegen oder zu löschen. In
verschiedenen Anleitungen zu der Asterisk-Software wird empfohlen, eine Postgre-
SQL-DB zu benutzen, somit entschied ich mich eine solche in meiner virtual machine
zu installieren. Es stellte sich als äußerst schwierig heraus, eine Verbindung zwischen
Asterisk und der aufgesetzten DB herzustellen. Nach einer Woche crashte die gesamte
Installation der Asterisk-Software sodass ich mich für eine Weiterarbeit auf dem
eigentlichen Projekte-Server in Luxemburg entschied. Auf dieser Plattform ist
ohnehin schon ein MySQL-DB-Server installiert, welcher vom gesamten Projekt
genutzt wird.
Die Arbeitsschritte für eine erfolgreiche Kommunikation von Asterisk mit der DB
fassen sich in folgende Stichpunkte zusammen:
Installation eines ODBC-Layers für MySQL (MyODBC)
Konfiguration der entsprechenden Dateien in Asterisk
Anlegen der gewünschten DB mit den dazugehörigen Tabellen
Da die Konfiguration sehr aufwändig war und viel Zeit gekostet hat soll die folgende
Grafik die Kommunikation der einzelnen Dateien veranschaulichen und als
Dokumentation dienen:
16
Auslagern der Call-Detail-Records (CDR)
Die Daten werden zur besseren Analyse in eine DB ausgelagert. Dazu musste eine
Tabelle mit dem Namen ‚cdr‘ in der DB ‚asterisk‘ auf dem Projekte-Server angelegt
werden. Die Tabelle wurde von mir nach Vorgaben von der Website
‚http://www.voip-info.org/wiki-Asterisk+cdr+mysql‘ erstellt. Darüberhinaus muss in
der Datei ‚cdr_odbc.conf‘ noch die Verbindung zur DB hergestellt werden. Somit
werden sämtliche Daten über Telefongespräche, welche über die Anlage geführt
werden, in einer Tabelle gespeichert. Nach umfangreichen Tests stellte sich jedoch
heraus, dass die Daten nicht zur genauen Analyse ausreichen. Das Problem liegt in
der Speicherung der Zeit der Verbindung des Anrufers mit dem System. Es wird von
Asterisk nicht unterschieden, ob der Anrufer gerade nur mit der Software verbunden
ist oder ob ein echtes Telefongespräch zwischen Patient und Arztpraxis zustande
kommt.
Da die Gespräche mit den Praxen jeweils über eine Queue geführt werden, müssen die
Events, ausgelöst durch die Queues, analysiert werden. Derzeit existiert (noch) keine
optimale Lösung für eine Speicherung der Events der Queues in einer DB. Asterisk
legt eine log-Datei namens ‚queue_log‘ im Ordner ‚/var/log/asterisk/‘ an. Um diese
Daten ebenfalls in die DB auszulagern muss man selbst ein Script anlegen, um die
Daten automatisch in eine Tabelle zu speichern. Ich habe mich für ein Perl-Script,
welches ständig im Hintergrund läuft, entschieden. Es gibt ebenfalls die Möglichkeit
in der ‚extconfig.conf‘ das Übertragen der Logs in eine Tabelle freizuschalten, diese
hat aber bei dieser Installation nicht funktioniert. In beiden Fällen muss man in der
DB eine entsprechende Tabelle vorher anlegen. Diese hat den Namen ‚csr_queue‘.
Eine gute Beschreibung zum Anlegen der DB-Tabelle findet man unter
‚http://www.voip-info.org/wiki/view/Asterisk+queue_log+on+MySQL‘.
17
Realtime – Auslagern der Konfigurationsdateien
Die Software Asterisk bietet die Möglichkeit der Auslagerung einiger Konfigu-
rationsdateien, welche im Ordner ‚/etc/asterik/‘ zu finden sind, in eine DB. Dies wird
Realtime genannt. Es gibt statisches Realtime, welches im Prinzip nur anstelle der
Dateien im genannten Ordner die entsprechenden Tabellen in der DB ausliest, und es
gibt dynamisches Realtime, was das Nachladen von neuen Informationen ohne einen
Neustart der Software in Echtzeit erlaubt. Da das System jederzeit mit neuen Daten
umgehen soll, ist die zweite Variante das Mittel der Wahl.
Für eine neue Praxis werden folgende Bestandteile angelegt:
Eintrag in die ‚sip.conf‘, welches das Telefon einer Praxis definiert
Einträge in die ‚queues.conf‘, welche die Warteschleifen für eine Praxis
definiert
Eintrag in die Tabelle ‚available_numbers‘, welche alle anwählbaren 0800-
Telefonnummern definiert (keine Asterisk-Konfiguration)
Eintrag in die Tabelle ‚phone_numbers‘, welche die 0800er-Nummer den
Praxisnummern und einen Typen zuordnet (keine Asterisk-Konfiguration)
Um dem System mitzuteilen, dass Konfigurationen in der DB zu finden sind, muss
man die ausgelagerten conf-Dateien in der ‚extconfig.conf‘ eintragen, z.B. muss man
für die ‚sip.conf‘ einen solchen Eintrag schreiben:
sipusers => odbc,asterisk,sip
sippeers => odbc,asterisk,sip
Damit werden SIP-Telefone, welche nicht in der ‚sip.conf‘ eingetragen sind, vom
System aber als Ziel angesteuert werden sollen, in der entsprechenden Tabelle
gesucht. Der Einfachheit halber habe ich mich für eine Kombination von peers
(können vom System angerufen werden) und von users (können über das System
anrufen) in einer Tabelle entschieden. Die Sip-Tabelle habe ich nach der Anleitung zu
finden unter ‚http://www.voip-info.org/wiki-Asterisk+RealTime+Sip‘, die Queue-
Tabelle nach Anleitung von
‚http://www.voip-info.org/wiki/view/Asterisk+RealTime+Queue‘,
angelegt.
18
DB-Abfragen im dialplan
Zur flexiblen Gestaltung des dialplans kann man nun die Einträge in der DB benutzen.
Mit Asterisk kann man sowohl lesend als auch schreibend auf die Daten zugreifen.
Diese Datenbankenzugriffe werden in der Datei ‚func_odbc.conf‘ definiert. Ein
Beispiel für einen DB-Lesezugriff:
[GermanPhoneNumber]
prefix=get
dsn=asterisk
read=SELECT german_number FROM phone_numbers WHERE direct_dial = '${ARG1}'
Der entsprechende Aufruf im dialplan sieht dann folgendermaßen aus:
exten => _498002200120XXX,n,Set(GLOBAL(PHONENUMBER)=${get_GermanPhoneNumber(${EXTEN})})
Da der schreibende Zugriff zwar theoretisch möglich ist. aber von der Syntax her
unnötig kompliziert, habe ich mich entschieden, die Daten per Aufruf eines externen
Skriptes in die DB einzutragen.
Asterisk-Gateway-Interface
Das Asterisk-Gateway-Interface (AGI) ist eine Schnittstelle, mit der man aus dem
dialplan direkt externe Programme / Skripte ausführen kann. Diesen kann man
Parametern übergeben und sich auch Werte in den dialplan zurückgeben lassen. Mit
dem AGI kann man die meisten modernen Programmiersprachen ausführen lassen
wie Perl, PHP, Java etc. In diesem Projekt starte ich mehrere kleinere php-Scripte um
Werte in die DB zu übertragen. Ein Aufruf aus dem dialplan sieht wie folgt aus:
exten => check,n,AGI(checkOpeningTime.php|${PHONENUMBER})
Die Skripte liegen standardmäßig im Ordner ‚/usr/share/asterisk/agi-bin/‘. Die
Übergabe der Werte aus den Skripten erfolgen über die Kommunikationskanäle
STDIN, STDOUT und STDERR. In meinem Fall benutzte ich php-Skripte, d.h. die
Ausgabe des Skriptes lautet dann bspw. so:
echo "exec Set AUSGABE=$speech";
Der Wert muss dann noch im dialplan entgegengenommen werden.
exten => notavailable,4,Set(SPEECH=${AUSGABE})
exten => notavailable,5,Playback(${SPEECH})
19
Verbindung mit dem deutschen Festnetz
Als eine meine ersten Aufgaben war das Auffinden eines geeigneten Partners für
unser Vorhaben. Wir benötigen eine Firma, welche uns eine 0800er Nummer mit
1000 Durchwahlen zu einem möglichst günstigen Preis anbieten kann. Des Weiteren
benötigen wir einen Partner, welchen wir als sogenanntes SIP-Gate nutzen können,
d.h. welche die Anrufe aus dem deutschen Festnetz entgegennimmt und via VoIP an
unsere statische IP weiterleitet. Mit der Firma Outbox AG fand ich die geeignete
Lösung.
Outbox leitet nun alle Gespräche über die von der Firma Comberry gemietete 0800er-
Nummer an unser System weiter. Diese werden daraufhin verarbeitet und dann wieder
an Outbox zurückgesandt von wo wie dann wiederum in das deutsche Festnetz
eingespeist werden.
20
Zusammenfassung
Das Projekt DocSEO ist bis zum Ende meines Praktikums noch nicht vollständig
abgeschlossen. Es besteht aus vielen verschiedenen Modulen welche in der
Entwicklung noch nicht fertig sind denn das Projekt ist eine Eigenentwicklung der
Firma und somit in der Priorität weiter hinten angestellt als andere Projekte.
Die Aufgaben, welche mir gestellt wurden, habe ich nach bestem Wissen und Können
umgesetzt, allerdings wurden zwischenzeitlich auch immer mal wieder die konkreten
Wünsche der Funktionalitäten geändert was einzelne Aufgaben zeitlich in ihrer
Umsetzung sehr gedehnt hat.
Mein Chef hat eine viele gute Ideen, bei denen mir es auch Spaß gemacht hat, an der
Umsetzung mit beteiligt gewesen zu sein. Zum Beispiel sollte es möglich sein, die
Öffnungszeiten einer Praxis per dynamischer Bandansage sich anzuhören. Diese
Funktionalität ist in dem von mir programmierten Telefonsystem zwar jetzt gegeben,
muss aber vorerst auskommentiert bleiben, da die Informationen zu den
Öffnungszeiten noch nicht von dem Projektkern bereitgestellt werden können.
Zusammenfassend kann ich sagen, mein Teilprojekt soweit abgeschlossen zu haben
und es gut dokumentiert an meinen Nachfolger (ebenfalls von der FHTW) nach zwei-
wöchiger Einarbeitungszeit zur weiteren Bearbeitung zu übergeben. Es bleiben noch
einige neue Ideen unbearbeitet, da die Zeit meines Praktikums abgelaufen ist.
21
Fazit
Die Firma Comberry hat mir mit den übergebenen Aufgaben viel Vertrauen
entgegengebracht. Die meiste Zeit war ich beim Erlernen der neuen Techniken und
beim Recherchieren auf mich selbst gestellt, was sich im Nachhinein als eine mir sehr
gelegene Arbeitsweise herausgestellt hat.
Ich kann jetzt von mir behaupten, mir professionelles Wissen in der VoIP-Telefonie
angeeignet zu haben und darüberhinaus auch viel über Linux Ubuntu gelernt zu
haben. Desweiteren habe ich meine Kenntnisse in der Programmiersprache PHP
erweitert und bin mit dem Datenbankmanagementsystem MySQL vertraut. Gern hätte
ich auch in anderen Programmiersprachen mein Können verbessert, leider blieb mir
das aufgrund des Projektes verwehrt.
Die Volksrepublik China ist ein hochinteressantes Land mit sehr eigenen
Charakteristika. Am meisten bin ich wohl von den sozialen Eigenschaften der
chinesischen Bevölkerung beeindruckt, welche nicht unterschiedlicher zu der
europäischen sein könnten. Ich muss dazu allerdings sagen, dass ich die letzten sechs
Monate ausschließlich in riesigen Metropolen verbracht habe, deshalb kann ich nur
schwer über China als ganzes urteilen. Nur soviel: ich bin ohne Vorurteile in dieses
Land gegangen doch die Respektlosigkeit dem Leben anderer gegenüber, mangelnde
Hygiene und die Arbeitseinstellung der chinesischen Bevölkerung werde ich nur
schwer vergessen können.
Ich bin an einer weiteren Zusammenarbeit mit der Firma Comberry interessiert, da
mich die Dynamik der Firma und die Aufgabengebiete faszinieren. Ich hoffe mit
meiner Arbeit einen produktiven Beitrag für die Firma geleistet zu haben und bin mir
sicher, dass die freiwillige Verlängerung der Praktikumszeit sich für mich bezahlt
gemacht hat.
22