Schulhomepage.de - Pädagogik & Webdesign

Suche










Asterisk

Telefonischer Verteilungsdienst mit Asterisk & Co.

ein Artikel von Philipp Hoffmann

Hallo, liebe Schulhomepage.de Gemeinde! Vielen Dank für den Gewinn in Höhe von 500 EUR. Die am Ende der Seite zu findenden Vorschläge von anderen Nutzern sind bereits in der neuen Verteilungsdienst Version vorgesehen. Alle Funktionen sind nun "professionell" verfügbar, dass heißt z.B. das sich die Daten nun in MySQL Tabellen befinden. Sobald alle Teilnehmer erreicht wurden oder nach 45 Minuten wird ein STATUSBERICHT per E-Mail und auf Wunsch auch per SMS versendet. Bitte habt jedoch Verständnis dafür, dass ich diese Version nicht unbedingt herausgeben möchte/kann. Wenn Ihr mir euer Vorhaben mit dem Verteilungsdienst schildern wollt, können wir aber vielleicht doch noch was ändern. Ruft mich einfach an unter 0208 69 677 11.

1. Einleitung

Was ist ein telefonischer Verteilungsdienst?
Ein telefonischer Verteilungsdienst ist eine Telefon Anlage, welche bestimmte Telefonnr. anruft und diesen eine festgelegte Nachricht automatisch vorspielt.

Wofür kann ein telefonischer Verteilungsdienst an Schulen genutzt werden?
Der telefonische Verteilungsdienst würde klassische Telefonketten ersetzen. So muss man sich z.B. keine Sorgen machen, ob auch wirklich eine gesamte Klasse die entsprechende Information erhalten hat.

Was benötige ich für den Aufbau eines telefonischen Verteilungsdienstes?
Sie benötigen nichts weiter als

  • einen Linux Server und
  • eine Anbindung an das Telefonnetz

Wieso benötige ich einen Linux Server?
Der Linux Server ersetzt die Telefon Anlage. Sobald Sie diesen (wie in dieser Anleitung beschrieben) eingerichtet haben, können Sie den telefonischen Verteilungsdienst nutzen.

Wie kann der telefonische Verteilungsdienst genutzt werden?
Ein Lehrer oder eine andere berechtigte Person kann den Verteilungsdienst über eine bestimmte Telefonnr. erreichen. Danach wird er als erstes aufgefordert seine PIN einzugeben. Nachdem ist eine Eingabe der Klasse bzw. der Rufnummernliste erforderlich. Zu letzt kann der Benutzer eine Nachricht aufsprechen, welche dann an allen Telefonen der Klasse bzw. der Rufnummernliste vorgespielt wird.

2. Anbindung an das Telefonnetz

Damit der Linux Server Telefonketten ersetzen kann, muss natürlich eine Anbindung an das Telefonnetz verhanden sein. Es gibt zwei Möglichkeiten:

  1. Sie können einen VoIP Anschluss nutzen. Bei Host Europe z.B. lässt sich dieser für nur 12 EUR/jährlich mieten. Wenn Sie sich für diese Variante endscheiden, stellt Ihr Linux Server eine Verbindung zum VoIP Provider her. Alle Anrufe werden dann über das Internet geführt und vom Provider ins Telefonnetz umgeleitet.
  2. Sie können Ihren Linux Server direkt mit einer ISDN Karte (z.B. von AVM) an Festnetz anbinden.

Ich werde in dieser Anleitung nur erklären, wie sich der Verteilungsdienst mit einem VoIP Anschluss nutzen lässt.

3. Einrichtung des Linux Servers

Je nach Linux Distribution kann diese Anleiung von Ihrem System abweichen. In dieser Anleitung wird OpenSUSE 11 von Novell verwendet.
Führen Sie folgende Schritte durch, um den telefonischen Verteilungsdienst zu installieren:

3.1 Anmeldung als Administrator

Melden Sie sich auf der Konsole als Administrator an.
Um auf den Server über einen Windows Rechner zuzugreifen, verwenden Sie z.B. den kostenlosen SSH Client PuTTY.
login as: root
Using keyboard-interactive authentication.
Password:
Last login: Fri Feb 6 14:10:35 2009 from 10.100.0.20
Have a lot of fun…
hermes:~ #

3.2 Installation eines Kompilers (gcc)

Um den Telefon Server (Asterisk) später zu installieren, müssen Sie als erstes den Kompiler gcc über die SuSE Paketverwaltung YaST installieren. Bei Debian können Sie z.B. den Befehl apt-get verwenden.

Desweiteren muss das Programm make installiert werden, um den Kompelierungsvorgang zu automatisieren:

hermes:~ # yast2 -i gcc41 gcc41-ada gcc41-c++ gcc41-fortan gcc41-gij gcc41-java gcc41-locale gcc41-obj-c++ gcc41-objc gcc41-testresults make

Wichtiger Hinweis: Bitte verwenden Sie den Kompiler gcc41. Bei gcc bzw. gcc42 kann es zu Problemen in der Sprachqualität kommen. Wenn Sie gcc41 und gcc42 installiert haben, achten Sie darauf, dass die Verknüpfung /usr/bin/gcc auf /usr/bin/gcc-4.1 zeigt.

Nachdem die Software installiert wurde, prüfen Sie, ob die Befehle gcc und make nun verfügbar sind:

hermes:~ # which gcc
/usr/bin/gcc
hermes:~ # which make
/usr/bin/make
hermes:~ #

3.3 Download von Asterisk

Download Sie Asterisk 1.6 von den Seiten des Herstellers Digitum:

hermes:~ # wget http://downloads.digium.com/pub/asterisk/releases/asterisk-1.6.0.5.tar.gz

Fertig. Sie können nun mit der Installation von Asterisk beginnen!

3.4 Installation von Asterisk

Entpacken Sie als erstes das Archiv:

hermes:~# tar -xzvf asterisk-1.6.0.5.tar.gz

Wechseln Sie in das entpackte Verzeichnis:

hermes:~# cd asterisk-1.6.0.5
hermes:~/asterisk-1.6.0.5 #

Konfigurieren Sie Asterisk:
hermes:~/asterisk-1.6.0.5 # ./configure

Kompilieren Sie Asterisk: hermes:~/asterisk-1.6.0.5 # make

Nachdem Sie einige Minuten gewartet haben, wurde Asterisk für Ihr System kompeliert. Sollte es während dieses Vorgangs zu Fehlermeldungen kommen, überprüfen Sie ggf. ob alle benötigen Pakete installiert sind.

Als nächstes installieren Sie Asterisk:
hermes:~/asterisk-1.6.0.5 # make install
Installieren Sie die Beispieldatein:
hermes:~/asterisk-1.6.0.5 # make samples
Installieren Sie die Start Konfiguration:
hermes:~/asterisk-1.6.0.5 # make config

Das Programm asterisk sollte nun auf Ihrem System verfügbar sein:

hermes:~/asterisk-1.6.0.5 # which asterisk
/usr/sbin/asterisk

3.5 Installation des Verteilungsdienstes

Damit der Verteilungsdienst richtig arbeiten kann, müssen Sie PHP installieren:

hermes:~/asterisk-1.6.0.5 # yast2 -i php5

Wechseln Sie in das Asterisk Konfigurationsverzeichnis:

hermes:~/asterisk-1.6.0.5 # cd /etc/asterisk
hermes:/etc/asterisk #

Löschen Sie die Datei extensions.conf:

hermes:/etc/asterisk # rm extensions.conf

Downloaden Sie das Verteilungsdienst Modul:

hermes:/etc/asterisk # wget http://www.hn-systems.com/verteilungsdienst/extensions.conf

Wechseln Sie nach /root und downloaden Sie den Calling-Script:

hermes:/etc/asterisk # cd /root
hermes:~ # wget http://www.hn-systems.com/verteilungsdienst/calling.php.txt
hermes:~ # mv calling.php.txt calling.php

Legen Sie das Verzeichnis /root/verteilungsdienst an.

hermes:~ # # mkdir /root/verteilungsdienst

3.6 Sprach- und Netzwerkeinstellungen von Asterisk festlegen

Es empfiehlt sich, die allg. Sprache von Asterisk auf Deutsch zu setzen. Dazu legen Sie in der Datei sip.conf den Parameter language auf de. Löschen Sie zuerst die Standart Werte:

hermes:/etc/asterisk # rm sip.conf

Legen Sie eine neue Datei mit dem Namen sip.conf an und füllen Sie diese mit folgendem Inhalt:

[general]
language=de

Zuletzt bestimmen Sie die Netzwerk Einstellungen von Asterisk:

bindport=5060
bindaddr=0.0.0.0

3.7 Installation der deutschen Sprachdatein

Legen Sie das entsprechende Verzeichnis an und wechseln Sie in dieses:

hermes:/etc/asterisk # mkdir /var/lib/asterisk/sounds/de
hermes:/etc/asterisk # mkdir /var/lib/asterisk/sounds/de/verteilungsdienst
hermes:/etc/asterisk # cd /var/lib/asterisk/sounds/de/verteilungsdienst

Downloaden Sie die Datein:

hermes:/var/lib/asterisk/sounds/de/verteilungsdienst # wget http://www.hn-systems.com/verteilungsdienst/sprache/again.gsm
hermes:/var/lib/asterisk/sounds/de/verteilungsdienst # wget http://www.hn-systems.com/verteilungsdienst/sprache/finish.gsm
hermes:/var/lib/asterisk/sounds/de/verteilungsdienst # wget http://www.hn-systems.com/verteilungsdienst/sprache/input-id.gsm
hermes:/var/lib/asterisk/sounds/de/verteilungsdienst # wget http://www.hn-systems.com/verteilungsdienst/sprache/input-msg.gsm
hermes:/var/lib/asterisk/sounds/de/verteilungsdienst # wget http://www.hn-systems.com/verteilungsdienst/sprache/input-pin.gsm
hermes:/var/lib/asterisk/sounds/de/verteilungsdienst # wget http://www.hn-systems.com/verteilungsdienst/sprache/intro.gsm
hermes:/var/lib/asterisk/sounds/de/verteilungsdienst # wget http://www.hn-systems.com/verteilungsdienst/sprache/invaild.gsm
hermes:/var/lib/asterisk/sounds/de/verteilungsdienst # wget http://www.hn-systems.com/verteilungsdienst/sprache/playmsg.gsm
hermes:/var/lib/asterisk/sounds/de/verteilungsdienst # wget http://www.hn-systems.com/verteilungsdienst/sprache/press.gsm
hermes:/var/lib/asterisk/sounds/de/verteilungsdienst # wget http://www.hn-systems.com/verteilungsdienst/sprache/thankyou.gsm
hermes:/var/lib/asterisk/sounds/de/verteilungsdienst # wget http://www.hn-systems.com/verteilungsdienst/sprache/timeout.gsm

Übersicht der Sprachdatein:

again Bitte versuchen Sie es nocheinmal
input-pin Bitte geben Sie nun Ihre PIN über die Telefontastatur ein
intro Hallo, Sie sind verbunden mit dem telefonischem Verteilungsdienst.
invaild Dieses war keine gültige Eingabe. Bitte probieren Sie es erneut.
playmsg Die Nachricht wird Ihnen nun vorgespielt.
press Wenn Sie die Nachricht nocheinmal hören möchten, drücken Sie bitte die eins. Wenn Sie die Nachricht erneut aufnehmen möchten, drücken Sie bitte die zwei. Um die Nachricht jetzt zu senden, drücken Sie bitte die drei.
thankyou Vielen Dank.
timeout Es wurde keine Eingabe ermittelt.
finish Ihre Nachricht wurde erfolgreich gesendet. Vielen Dank für das Nutzen dieses Dienstes.
input-id Bitte geben Sie nun die Verteilungsid ein.
input-msg Bitte nehmen Sie nach dem Signalton Ihre Nachricht auf und beenden Sie mit der Rautetaste.

3.8 Anbindung an das Festnetz über VoIP

Sollten Sie vorhaben, Asterisk über VoIP an das deutsche Festnetz zu binden, legen Sie den Parameter register in der sip.conf fest.

register ⇒ Benutzer:Kennwort@Host/Benutzer

Wobei Benutzer für den Benutzernamen beim VoIP Provider steht, Kennwort für das entsprechende Kennwort, Host für den VoIP Server des Providers und Telefonnr für Ihre Telefonnummer! Bei Host Europe lautet Host z.B. sip.hosteurope.de.

Zudem müssen Sie in diesem Fall auch noch einen weiteren Bereich in der sip.conf einfügen:

[Benutzer]
type=peer
context=eingehend
username=Benutzer
fromuser=Benutzer
authuser=Benutzer
secret=Kennwort
host=Host
fromdomain=Host
insecure=invite
canreinvite=no
nat=no

Nun müssen Sie Asterisk noch sagen, dass alle Anrufe vom Festnetz an den Verteilungsdienst weitergeleitet werden sollen. Fügen Sie in der extensions.conf folgenden Bereich ein:

[eingehend]
exten ⇒ Telefonnr,1,Goto(verteilungsdienst,s,1)

3.9 Asterisk starten/stoppen

Um Asterisk nun zu starten führen Sie folgenden Befehl aus:

hermes:/ # /etc/init.d/asterisk start
Mit
hermes:/ # /etc/init.d/asterisk stop
wird Asterisk gestoppt.
Mit
hermes:/ # /etc/init.d/asterisk restart
wird Asterisk neugestartet.

4. Anlegen von Klassen bzw. Rufnummernlisten

Um eine Klasse bzw. Rufnummernliste anzulegen, führen Sie folgenden Befehl aus:

hermes:/ # touch /root/verteilungsdienst/Name.txt

Um die Liste im System bekannt zu geben fügen Sie nach der Zeile — Rufnummernliste — die Einträge

exten ⇒ Name,1,Set(ID=${EXTEN})
exten ⇒ Name,n,Goto(verteilungsdienst2,Msg,1)

hinzu.

Wobei Name die ID der Klasse bzw. Rufnummernliste ist. Mein Tipp:
Verwenden Sie für die Klasse 10a z.B. die ID 101.
10 für die Jahrgangsstufe und 1 für a. B wäre somit 2, usw.

Wenn Sie eine neue Telefonnr. in die Liste aufnehmen möchten führen Sie

hermes:/ # echo Telefonnr » /root/verteilungsdienst/Name.txt aus.

Wobei Telefonnr für die gewünschte Telefonnummer steht.
Name steht für die Rufnummernliste.

5. Anlegen von Zugängen (PINs)

Um einen Zugang (PIN) anzulegen fügen Sie in der Datei extensions.conf den Eintrag

exten ⇒ PIN,1,Goto(verteilungsdienst2,s,1) unter PIN Liste — hinzu.

Wobei PIN für die entsprechende PIN steht.

6. Fragen?

Alle Fragen bitte an: Philipp Hoffmann (info@hn-systems.com).
Altanativ können Sie Fragen in der Diskusion zu diesem Artikel oder im schulhomepage.de Forum stellen.

Bitte senden Sie mir Ihre Anregung, Ihr Lob oder Ihre Kretik.

Diskussion

Felix Riesterer, 06/02/2009/ 20:58

Sehr coole Idee!

Ist diese Funktionalität mit anderen Serverdiensten (Webserver, Datenbankserver, Router für Internet-Café) gleichzeitig sinnvoll möglich? Oder sollte man für diese Anwendungen besser einen eigenen Rechner einsetzen und für den telefonischen Verteilerdienst einen einzelnen Rechner ohne andere Dienste bereitstellen?

Philipp Hoffmann, 06/02/2009/ 21:55

Du kannst das System natürlich z.B. auch auf einem Webserver betreiben.
Der Server sollte nur nicht zu ausgelastet sein.
P.S. Die deutschen Sprachdatein sind bald fertig.

Mirjam Bartberger, 10/02/2009/ 16:44

Woher weiß der Anrufer, ob jeder Angerufene auch erreicht wurde? Bei einer Telefonkette ruft der Letzte der Kette den Initiator des Rundrufes an und man weiß dadurch, dass alle die Nachricht erhalten haben.
Einmal mehr eine nette technische Spielerei, um den Schülern Verantwortung (hier für eine Telefonkette und somit den Mitschüler) abzunehmen, zu der wir sie eigentlich auch erziehen sollten.

Philipp Hoffmann, 13/02/2009/ 14:10

Es ist möglich in der calling.php anzugeben, wie lange das System probieren soll, den Schüler zu erreichen. Sobald ein Schüler bzw. das entsprechende Telefon erreicht wurde, wird das entsprechende Callfile im Verzeichnis /var/spool/asterisk/outgoing gelöscht. Als Administrator kann du somit gucken, welche Schüler noch nicht erreicht wurde….

Mirjam Bartberger, 13/02/2009/ 19:42

Also hat nur der Admin die Möglichkeit, zu sehen, ob alle erreicht wurden. Und was ist mit dem Initiator des Rundrufes, der nicht zugleich Admin ist? Also doch lieber die altbewährte Telefonkette :)

Felix Riesterer, 15/02/2009/ 13:02

Nein, das lässt sich sicherlich so konfigurieren, dass der Initiator der Kette auch eine technische Rückmeldung abfragen kann, welche Nummern bis dato erreicht wurden, und welche (noch) nicht.

Verantwortung an Schüler zu übertragen und dann auch einzufordern ist sicherlich sinnvoll. Es ist aber manchmal die zuverlässige Informationsweitergabe wichtiger, als in jedem Falle die berühmte Lernsituation zu schaffen. Daher ist diese „technische Spielerei“ mit Sicherheit ebenso nützlich, wie die „altbewährte Telefonkette“ - ein Werkzeug, das je nach Aufgabe passend gewählt und eingesetzt werden muss.

Sicherlich lässt sich die Idee eines telefonischen Verteilers mit einer Rundmail-Funktion koppeln, sodass ein Informationserhalt nicht nur über das Antelefonieren, sondern auch über das Bestätigen einer Mail rückgemeldet werden kann… zumindest wäre das sinnvoll und wünschenswert.

Philipp Hoffmann, 17/02/2009/ 18:18

Ich habe vor, eine Art - Hosting Verteilungsdienst - kostenlos anzubieten. Jede Schule erhält eine Telefonnr. mit Durchwahl. Die Telefonlisten müssen mir per Email gesendet werden. Danach kann der Verteilungsdienst sofort genutzt werden.

Felix Riesterer, 17/02/2009/ 22:08

Die Idee ist nicht schlecht. Ob sie angenommen wird, bleibt abzuwarten.

Ich fand die Idee mit dem schuleigenen Server sehr gut! Da kann die Schule dann ihre Daten auch selbst verwalten; sie bleiben „im Haus“ und sind damit auch datenschutzrechtlich unproblematisch gehandhabt. Wenn das einem externen Dienst anvertraut werden sollte, sähe das allerdings ganz anders aus…

Philipp Hoffmann, 22/02/2009/ 09:30

Der Hosting Dienst ist jetzt fertig. Wer sich bei mir meldet (per Email) erhält eine Rufnummer welche er zum Testen oder als Produktionslösung einsetzen kann.

Philipp Hoffmann, 08/05/2009/ 13:30

Die gewünschten Funktionen sind nun verfügbar! Bitte an den Anfang der Seite gucken!

telefon.txt · Zuletzt geändert: 08/05/2009/ 13:26 von philipp_hoffmann
Nach oben