Praktikumsbericht als docx - HTW Berlin - Hochschule für Technik ...
Upcoming SlideShare
Loading in...5
×
 

Praktikumsbericht als docx - HTW Berlin - Hochschule für Technik ...

on

  • 589 views

 

Statistics

Views

Total Views
589
Views on SlideShare
586
Embed Views
3

Actions

Likes
0
Downloads
2
Comments
0

1 Embed 3

http://www.health.medicbd.com 3

Accessibility

Categories

Upload Details

Uploaded via as Microsoft Word

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Praktikumsbericht als docx - HTW Berlin - Hochschule für Technik ... Praktikumsbericht als docx - HTW Berlin - Hochschule für Technik ... Document Transcript

  • Praktikumsbericht<br />Martin Becker<br />s0516299<br />Fachhochschule für Technik und Wirtschaft Berlin<br />Firma Comberry Ltd. Shanghai China<br />Oktober 2008 bis März 2009<br />Inhalt TOC o " 1-3" h z u Einleitung PAGEREF _Toc225253747 h 3Porträt der Firma PAGEREF _Toc225253748 h 4Das Team – Organisation der Firma PAGEREF _Toc225253749 h 5Einarbeitungsphase PAGEREF _Toc225253750 h 6Einrichtung der Arbeitsumgebung PAGEREF _Toc225253751 h 6Einarbeitung in die Benutzerverwaltung PAGEREF _Toc225253752 h 6Backupsystemverwaltung PAGEREF _Toc225253753 h 6Angebotserstellungen PAGEREF _Toc225253754 h 8Angebot Renommee PAGEREF _Toc225253755 h 8Angebot Ospidali Psalmendatenbank PAGEREF _Toc225253756 h 8Angebot Helgaa PAGEREF _Toc225253757 h 9Projekt DocSEO PAGEREF _Toc225253758 h 10Beschreibung des Projektes PAGEREF _Toc225253759 h 10Entwicklungsumgebung PAGEREF _Toc225253760 h 12Vorstellung der Software Asterisk PAGEREF _Toc225253761 h 12Installation von Asterisk Version 1.6 PAGEREF _Toc225253762 h 12Funktionsweise von Asterisk PAGEREF _Toc225253763 h 13Ablaufplan des Programms PAGEREF _Toc225253764 h 14Warteschleifen PAGEREF _Toc225253765 h 15Die zu sammelnden Daten PAGEREF _Toc225253766 h 15Aufsetzen einer Datenbank PAGEREF _Toc225253767 h 16Auslagern der Call-Detail-Records (CDR) PAGEREF _Toc225253768 h 17Realtime – Auslagern der Konfigurationsdateien PAGEREF _Toc225253769 h 18DB-Abfragen im dialplan PAGEREF _Toc225253770 h 19Asterisk-Gateway-Interface PAGEREF _Toc225253771 h 19Verbindung mit dem deutschen Festnetz PAGEREF _Toc225253772 h 20Zusammenfassung PAGEREF _Toc225253773 h 21Fazit PAGEREF _Toc225253774 h 22<br />Einleitung<br />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.<br />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.<br />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.<br />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.<br />Porträt der Firma<br />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.<br />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.<br />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.<br />In näherer Zukunft ist eine Ausweitung des Vermittlungsserviceprojektes zu erwarten. In diesem Jahr ist darüberhinaus noch die Entwicklung einer Zeichentrick-Filmserie geplant.<br />Das Team – Organisation der Firma<br />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.<br />Organigramm<br />Einarbeitungsphase<br />Einrichtung der Arbeitsumgebung<br />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.<br />Einarbeitung in die Benutzerverwaltung<br />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.<br />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.<br />(Für beide Anleitungen sehe ich an dieser Stelle keinen praktischen Zweck diese hier aufzuführen deshalb verzichte ich darauf.)<br />Backupsystemverwaltung<br />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. <br />Script:<br />#!/bin/sh<br />date=`date -I`<br />mysqldump --all-databases | gzip > /var/www/html/mysql_backup/backup-$date.sql.gz<br />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.<br />Angebotserstellungen<br />Angebot Renommee<br />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.<br />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.<br />Angebot Ospidali Psalmendatenbank<br />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”.<br />Letztendlich konnte ich dieses Projekt in 11 große Arbeitsschritte einteilen. <br />Einrichten der Entwicklungsumgebung<br />Datenbankentwurf<br />Layout-Gestaltung und Stylesheet-Erstellung<br />Erstellung der Navigation<br />...<br />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.<br />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.<br />Angebot Helgaa<br />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.<br />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.<br />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.<br />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.<br />Projekt DocSEO<br />Beschreibung des Projektes<br />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.<br />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.<br />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.<br />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“.<br />Das Vermittlungssystem hat nun folge Informationen gesammelt:<br />Telefonnummer des Anrufers (sofern übermittelt)<br />Name des Inhabers des Telefonanschlusses (falls im Telefonbuch eingetragen)<br />Versicherungsstatus des Anrufers (privat oder gesetzlich)<br />Kundenstatus des Anrufers (neuer Patient oder wiederkehrender Patient)<br />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.“<br />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.<br />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.<br />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.<br />Detailierte Statistiken zu jeder Arztpraxen sind Grundlage für die Abrechnung mit der teilnehmenden Arztpraxen. Diese werden vom TVS voll-automatisch erzeugt.<br />Entwicklungsumgebung<br />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:<br />VM-Ware<br />Ubuntu-Betriebssystem in der VM laufend<br />Xlite – Softphone<br />Asterisk open source PBX<br />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.<br />Vorstellung der Software Asterisk<br />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.<br />Installation von Asterisk Version 1.6<br />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.<br />#cd /usr/src<br />/usr/src# wget http://downloads.digium.com/pub/asterisk/asterisk-1.6-current.tar.gz<br />/usr/src# tar xvzf asterisk-1.6-current.tar.gz<br />/usr/src# cd asterisk-1.6*<br />usr/src/asterisk-1.4.10# ./configure<br />usr/src/asterisk-1.4.10# make<br />usr/src/asterisk-1.4.10# make install<br />Funktionsweise von Asterisk<br />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.<br />Zuerst wird ein Telefon in der ‚sip.conf‘ definiert.<br />[general]<br />port=5060<br />bindaddr=0.0.0.0<br />context=sonstige<br />[2000]<br />type=friend<br />context=meine-telefone<br />secret=1234<br />host=dynamic<br />Danach wird im dialplan im dafür vorgesehenen Kontext die gewünschte Funktion festgelegt.<br />[sonstige]<br />[meine-telefone]<br />exten => 1001,1,Answer()<br />exten => 1001,2,Playback(hello-world)<br />exten => 1001,3,Hangup()<br />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.<br />etc/asterisk# asterisk –vvvvvc<br />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.<br />*CLI> -- Registered SIP ’2000’ at 192.168.0.69 port 5060 expires 120 -- Unregistered SIP ’2000’<br />Ablaufplan des Programms<br />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‘. <br />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.<br />Warteschleifen<br />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.<br />[49030123_old_private]<br />member => SIP/2000<br />announce = comberry/hellodoc_old_private<br />[49030123_old_public]<br />member => SIP/2000<br />announce = comberry/hellodoc_old_private<br />...<br />Die zu sammelnden Daten<br />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:<br />Telefonnummer der jeweils angerufenen Praxis<br />Telefonnummer des Anrufers (sofern übermittelt)<br />Zeit des Telefongesprächs (nur die reine Verbindungszeit in der beide Gesprächspartner wirklich miteinander verbunden sind)<br />Datum und Uhrzeit des Gesprächs<br />Aufsetzen einer Datenbank<br />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. <br />Die Arbeitsschritte für eine erfolgreiche Kommunikation von Asterisk mit der DB fassen sich in folgende Stichpunkte zusammen:<br />Installation eines ODBC-Layers für MySQL (MyODBC)<br />Konfiguration der entsprechenden Dateien in Asterisk<br />Anlegen der gewünschten DB mit den dazugehörigen Tabellen<br />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:<br />Auslagern der Call-Detail-Records (CDR)<br />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. <br />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‘.<br />Realtime – Auslagern der Konfigurationsdateien<br />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.<br />Für eine neue Praxis werden folgende Bestandteile angelegt:<br />Eintrag in die ‚sip.conf‘, welches das Telefon einer Praxis definiert<br />Einträge in die ‚queues.conf‘, welche die Warteschleifen für eine Praxis definiert<br />Eintrag in die Tabelle ‚available_numbers‘, welche alle anwählbaren 0800-Telefonnummern definiert (keine Asterisk-Konfiguration)<br />Eintrag in die Tabelle ‚phone_numbers‘, welche die 0800er-Nummer den Praxisnummern und einen Typen zuordnet (keine Asterisk-Konfiguration)<br />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:<br />sipusers => odbc,asterisk,sip<br />sippeers => odbc,asterisk,sip<br />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‘,<br />angelegt.<br />DB-Abfragen im dialplan <br />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:<br />[GermanPhoneNumber]<br />prefix=get<br />dsn=asterisk<br />read=SELECT german_number FROM phone_numbers WHERE direct_dial = '${ARG1}' <br />Der entsprechende Aufruf im dialplan sieht dann folgendermaßen aus:<br />exten => _498002200120XXX,n,Set(GLOBAL(PHONENUMBER)=${get_GermanPhoneNumber(${EXTEN})}) <br />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.<br />Asterisk-Gateway-Interface<br />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:<br />exten => check,n,AGI(checkOpeningTime.php|${PHONENUMBER})<br />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:<br />echo " exec Set AUSGABE=$speech" ; <br />Der Wert muss dann noch im dialplan entgegengenommen werden.<br />exten => notavailable,4,Set(SPEECH=${AUSGABE})<br />exten => notavailable,5,Playback(${SPEECH}) <br />Verbindung mit dem deutschen Festnetz<br />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. <br />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. <br />Zusammenfassung<br />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.<br />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.<br />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.<br />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.<br />Fazit<br />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.<br />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.<br />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.<br />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.<br />