Hier moechte ich euch zeigen, wie ihr einen Asterisk Server als Telefonanlage unter Debian lenny bei euch einsetzt. Dieses Tutorial wird Stueck fuer Stueck erweitert und neue Moeglichkeiten werden hinzukommen. Es lohnt sich also, oefter mal vorbei zu schauen.
Fuer den Asterisk Server benoetigen wir in diesem Tutorial 2 PCI ISDN Karten mit dem HFC-Chipsatz (preislich ca. 25Euro fuer eine ISDN Karte. Ich nutze die "ISDN TA Karte" von Conrad), ein extra NTBA damit wir eine Stromversorgung auf den S0-Bus bekommen und ein Debian lenny auf dem neusten Stand. Wir werden hier Asterisk aus dem Debian Repository benutzen.
Wenn wir diese Pakete installiert haben, muessen wir als naechstes das Modul fuer die ISDN-Karten kompilieren. Hierfuer nutzen wir "module-assistant", was uns die Arbeit erheblich leichter macht.
Wenn wir nun das Modul kompiliert und installiert haben, muessen wir noch ein paar Grundkonfigurationen vornehmen bevor wir anfangen koennen Asterisk einzurichten. Hierzu legen wir die Datei /etc/zaptel.conf an mit folgendem Inhalt:
#/etc/zaptel.conf
loadzone=de
defaultzone=de
span=1,1,3,ccs,ami
bchan=1-2
dchan=3
span=2,1,3,ccs,ami
bchan=4-5
dchan=6
Nun fuegen wir noch folgenden Inhalt in die /etc/modprobe.d/blacklist ein, damit diese Module auf keinen Fall geladen werden:
#fuer asterisk
blacklist hisax
blacklist vzaphfc
Und wir muessen unserem OS noch sagen, dass es beim booten noch unser "zaphfc" Modul laden soll. Hierfuer tragen wir folgende Zeile in die /etc/modules ein:
zaphfc modes=1
Mit "modes=1" schalten wir die erste ISDN-Karte in den NT-Modus (network termination) und die zweite in den TE-Modus (terminal equipment), mit "modes=2" schalten wir die erste ISDN-Karte in den TE-Modus und die zweite in den NT-Modus und mit "modes=3" setzen wir beide ISDN-Karten in den TE-Modus. Wenn wir nachher Kabel anschliessen, muss unsere Karte die im TE-Modus ist an das NTBA am Hausanschluss angeschlossen werden und unsere Karte die im NT-Modus ist wird mit dem NTBA auf der Seite unserer zu verwaltenden Endgeraeten angeschlossen.
Zwischen eurer ISDN-Karte im NT-Modus und dem NTBA der mit den weiteren Endgeraeten verbunden ist, muesst ihr ein Crossover ISDN-Kabel benutzen. Dieses muesst ihr euch selber bauen. Keine Angst, es ist ganz einfach.
Das ISDN-Kabel besitzt vier Adern, jeweils zwei Adern gehoeren zusammen. Die Pins 3, 4, 5 und 6 sind bei einem ISDN Kabel belegt.
Ihr muesst wie es auf dem Bild gezeigt wird, das Kabel auf Pin 3 und auf Pin 4 vertauschen und das Kabel von Pin 5 und Pin 6. Wenn ihr dieses getan habt, ist euer Crossover ISDN-Kabel fertig.
Nun schliesst ihr eure ISDN-Karte im TE-Modus an euren NTBA der am Hausanschluss liegt an und eure ISDN-Karte im NT-Modus mit dem Crossover ISDN-Kabel an euer zweites NTBA an. Dieses NTBA benoetigen wir, damit wir eine Stromversorgung auf dem S0-Bus haben und passive Geraete ohne eigene Stromversorgung mit unserer Telefonanlage betreiben koennen. An das zweite NTBA schliesst ihr dann alle weiteren Geraete wie Telefone usw an. Ungefaehr so sollte dann eure Verkabelung aussehen:
Wenn ihr euren Asterisk Server und eure Telefone richtig verkabelt habt, koennen wir Asterisk weiter einrichten.
Hier zeige ich euch nun, wie ihr Asterisk so konfiguriert, dass ein Telefonanruf direkt zu dem Telefon weitergeleitet wird und ein Anruf von eurem Telefon nach draussen direkt durchgeleitet wird. Diese Konfiguration nehmen wir immer als Konfigurationsbasis fuer alle weiteren Beschreibungen.
Als erstes muesst ihr einfach den Inhalt der /etc/asterisk/zapata.conf mit folgendem Inhalt ersetzen (zieht euch eine Sicherheitskopie der automatisch konfigurierten zapata.conf):
immediate=no
overlapdial=yes
group = 1
context=default
channel => 1-2
signalling = bri_cpe_ptmp
; signalling = bri_cpe_ptmp, bei einem Mehrgeraeteanschluss
group = 2
context=default
channel => 4-5
Als naechstes muesst ihr einfach nur die /etc/asterisk/extensions.conf zu diesem hier veraendern (zieht euch eine Sicherheitskopie der automatisch konfigurierten extensions.conf):
In dieser Konfiguration wird, wenn ein Anruf auf die Nummer 1234567 eingeht, ein Anruf auf dem ersten Interface (unsere ISDN-Karte fuer die Endgeraete) mit der gleichen Nummer getaetigt. Wenn ein Anruf auf irgendeine andere Nummer eingeht, wird ein Anruf mit der gleichen Nummer auf dem zweiten Interface (unsere ISDN-Karte zum Hausanschluss) getaetigt. Durch diese einfache Konfiguration, koennt ihr nun normal telefonieren.
Da wir aber nicht wollen, dass von dem externen Interface unsere internen "spezial" Rufnummern erreichbar und benutzbar sind, und vielleicht sogar jemand auf unsere Kosten telefonieren koennte, muessen wir noch etwas in der /etc/asterisk/zapata.conf veraendern (die Fett geschriebenen Zeilen):
immediate=no
overlapdial=yes
group = 1 context=intern
channel => 1-2
signalling = bri_cpe_ptmp
; signalling = bri_cpe_ptmp, bei einem Mehrgeraeteanschluss
group = 2 context=extern
channel => 4-5
Jetzt ist die ISDN-Karte die im NT-Modus ist und an unserem Hausanschluss angeschlossen ist im "extern" Kontext und die andere ISDN-Karte fuer unsere internen Endgeraete im "intern" Kontext. Nun muesst ihr allerdings noch die /etc/asterisk/extensions.conf ueberarbeiten:
Als erstes zeige ich euch, wie ihr einem anrufenden Teilnehmer Musik vorspielt bis jemand an das Telefon geht und einen ausgehenden Anruf mit Musik hinterlegt bis der angerufende Teilnehmer ans Telefon geht.
Zunaechst einmal muesst ihr ein Paket aus dem Debian Repository nachinstallieren.
h3rmes:~# apt-get install mpg123
Dieses Paket brauchen wir um MP3s abzuspielen. Dann legt ihr zwei Ordner an. Einen fuer die Musik fuer eingehende Anrufe und einen fuer die Musik fuer ausgehende Gespraeche.
Nun kopiert ihr die MP3s in den Ordner, die abgespielt werden sollen. Denkt daran, dass es sich hierbei um Lizenzfreie MP3s handeln muss, damit ihr keine Probleme bekommt, wenn ihr Musik fuer einkommende Anrufe abspielen wollt. Die MP3s solltet ihr auch am besten dem User und der Group "asterisk" zuweisen:
Ich finde die quietmp3 Option am passensten zum MP3 abspielen. Dies kann jeder fuer sich selber entscheiden. Hier liste ich der Vollstaendigkeit halber einmal alle Modi auf:
; valid mode options:
; quietmp3 -- default
; mp3 -- loud
; mp3nb -- unbuffered
; quietmp3nb -- quiet unbuffered
; custom -- run a custom application
; files -- read files from a directory in any Asterisk supported format
Wenn wir nun mit der Grundeinstellung fertig sind, koennen wir die /etc/asterisk/extensions.conf bearbeiten. Als erstes konfigurieren wir sie so, dass alle eingehenden Anrufe Musik hoeren:
Diese Konfiguration spielt dem Anrufenden solange Musik aus dem Ordner "/var/lib/asterisk/moh/incoming" vor, bis jemand das Gespraech annimmt. Eine kleine Erweiterung waere folgende Einstellung:
Mit dieser Einstellung wuerde euer Telefon nur 20 Sekunden klingeln und dann wuerde Asterisk automatisch auflegen.
Nun zeige ich euch die Konfiguration, wie ihr ausgehende Gespraeche mit Musik hinterlegt, bis der Angerufene das Gespraech annimmt. Hierzu veraendern wir die /etc/asterisk/extensions.conf folgendermassen:
Mit dieser Einstellung wird solange Musik aus dem Ordner "/var/lib/asterisk/moh/outgoing" absgespielt, bis man selber auflegt oder der Angerufene das Gespraech annimmt.
Jetzt koennt ihr ersteinmal frei ausprobieren und ein wenig damit herumspielen. Vielleicht baut ihr ja euer eigenes Callcenter hiermit auf ;)
Waehrend ich hier noch einen Trick benutzt habe, um eine Anrufbenachrichtigung ueber Jabber zu versenden, benutzen wir in dieser Beschreibung den internen Jabber Client von Asterisk. Wenn wir einen Account auf einem Jabber Server eingerichtet haben, den unser Asterisk nutzen soll, fuegen wir folgendes in unsere /etc/asterisk/jabber.conf ein:
Mit dieser Einstellung wird TLS benutzt, damit auch die Daten nicht unverschluesselt verschickt werden. Wenn ihr nun eure Nuzterdaten eingegeben habt, koennen wir einen Eintrag in die /etc/asterisk/extensions.conf machen:
[extern]
;incoming
exten => 1234567,1,jabbersend(jabber-asterisk,empfaenger@jabber.de,"Incoming call from number ${CALLERID(num)} on ${STRFTIME(,,%A %B %d %G at %R)}")
exten => 1234567,2,Dial(Zap/g1/${EXTEN})
Wenn ihr diesen Eintrag nun gemacht und Asterisk neu gestartet habt, bekommt ihr immer eine Benachrichtigung in folgender Form: "Incoming call at number 012347654321 on Saturday December 27 2008 at 16:31" ueber Jabber zugeschickt wenn ihr angerufen werdet.
Wie ihr VoiceMail so einrichtet, dass ihr die aufgenommene Nachricht via eMail zugeschickt bekommt, habe ich ausfuehrlich hier beschrieben. Ihr solltet in der Lage sein die /etc/asterisk/extensions.conf so zu schreiben, dass VoiceMail bei einem einkommenden Anruf aktiv ist.
Hier beschreibe ich euch allerdings wie ihr VoiceMail einrichtet und diese Nachrichten ueber euer Telefon abrufen koennt. Dazu muesst ihr dieses hier in die /etc/asterisk/voicemail.conf eintragen:
Ich nutze die Telefonnummer immer als Namen fuer die VoiceMailBox. Euer PIN fuer diese VoiceMailBox ist "1234" in diesem Fall. Nun muesst ihr noch eure /etc/asterisk/extensions.conf veraendern:
Nun wird die "unavailable" Nachricht abgespielt und eine Nachricht aufgenommen, wenn ihr nach 20 Sekunden nicht an euer Telefon gegangen seid. Um eure Nachrichten abzuhoeren oder Einstellungen in eurer VoiceMailBox zu veraendern ruft ihr einfach intern mit eurem Telefon die Nummer "123456789" an. Als erstes werdet ihr nach dem PIN der VoiceMailBox abgefragt. Diese hattet ihr in der /etc/asterisk/voicemail.conf angegeben und ist in diesem Beispiel die "1234". Alles weitere koennt ihr nach Ansage der Stimme machen.