Telefonieren mit Asterisk (III)

Asterisk LogoDer letzte Teil hat gezeigt, dass die Konfiguration einfacher Aufgaben leicht zu bewerkstelligen ist. Mit ein paar Zeilen in den Konfigurationsdateien extensions.conf und sip.conf kann eine einfache, hausinterne Telefonanlage aufgebaut werden. Die Aufgabe bestand darin, zwei Telefone via SIP mit dem Server zu verbinden und einen möglichst einfachen Wähplan zu erstellen, so dass zwischen den beiden Endgeräten Gespräche geführt werden können. Im folgenden soll die Telefonanlage so ausgebaut werden, dass auch externe Gespräche geführt werden können. Genau so, wie mit einem herkömmlichen Telefon, das am Festnetz angeschlossen ist.

Um das Kunststück zu vollbringen, benötigen wir ein VoIP Konto bei einem Schweizer Provider. VoIP Konti für den Heimgebrauch gibt es bei SolNet oder Green bereits für eine Monatspauschale ab Fr. 10.–. Bei beiden Providern gibt es VoIP als eigenständiges Produkt oder als Zugabe zu einem ADSL Abonnement. VoIP Kontos werden meist in Verbindung mit einer ATA Box (Analog-Telefon-Adapter) verwendet, so dass sie auch mit einem handelsüblichen, analogen Telefon genutzt werden können. Eine kurze Beschreibung einer Fritz!Box ATA gibt es hier. Ich verwende im folgenden ein VoIP Konto mit den folgenden fiktiven Zugangswerten:

Telefonnummer: 032 517 81 80
Login: 0325178180
Passwort: horsepower
SIP Server: sip.solnet.ch

ATA Boxen oder SIP-fähige VoIP Telefone können diesen Zugang direkt nutzen, um externe Teilnehmer anzurufen oder Gespräche zu empfangen. Im folgenden Beispiel erweitern wir unsere Konfiguration so, dass der Asterisk Server den VoIP Zugang nutzt. Dies bringt den Vorteil, dass alle am Server angeschlossenen Telefone externe Nummer anrufen können – auch gleichzeitig! Bei eingehenden Gesprächen kann bestimmt werden, welche internen Telefone das Gespräch entgegennehmen können.

Bei einigen Providern können zusätzliche Telefonnummern zu einem VoIP Konto bestellt werden, so dass jedem Telefon eine externe Nummer zugewiesen werden kann. Wir werden uns vorerst mit einer Nummer begnügen. Die Konfiguration unserer Anlage sieht dementsprechend wie folgt aus:

Beide im letzten Kapitel angeschlossenen Telefone können externe Nummern wählen und werden dann via Asterisk und dem VoIP Provider mit dem gewünschtne Teilnehmer verbunden. Falls das Telefon des Angerufenen eine Nummernanzeige hat, erscheint dort die Nummer des VoIP Kontos, also 032 517 8180. Mit Asterisk ist es möglich, zusätzlich zur Nummer auch einen Namen anzugeben. Es gibt eine Vielzahl an Möglichkeiten, die Caller ID (CID) zu manipulieren. Ruft ein externer Teilnehmer an, klingeln beide am Asterisk angeschlossenen Telefone.

In der Datei sip.conf müssen die folgenden Ergänzungen angefügt werden:

register => 0325178180:horsepower@sip.solnet.ch/0325178180

Damit wird der Asterisk Server angewiesen, sich beim VoIP Provider mit der Nummer 0325178180 zu registrieren. Der SIP Proxy beim Provider wird damit informiert, an welche Adresse im Internet ein eingehendes Gespräch weitergeleitet werden muss. Ruft jemand die Nummer 0325178180, gelangt das Gespräch zum VoIP Provider und dieser leitet es an unseren Asterisk Server weiter. Damit auch unser Server weiss, was er mit dem eingehenden Anruf zu tun hat, schreiben wird noch folgendes in sip.conf:

[sip-inout-0325178180]
type=peer
secret=horsepower
username=0325178180
fromuser=0325178180
host=sip.solnet.ch
context=default
insecure=very

Dieser Konfigurationsblock bewirkt zweierlei: Er wird einerseits benötigt um ausgehende Gespräche über den Wählplan zu initiieren. Andererseits dient er der Zuweisung eines externen Gespräches an einen Benutzer: Ruft jemand von extern auf unsere Nummer, durchsucht Asterisk alle Einträge in dieser Datei nach einem Namen, der mit der gewählten Nummer übereinstimmt. Wird ein Eintrag gefunden, gelten alle für diesen Benutzer festgelegten Parameter. Anschliessend wird im Wählplan eine passende Extension gesucht. Die Direktiven fromuser, insecure und context können in den meisten Fällen weggelassen werden. Ich habe sie trotzdem in das Beispiel aufgenommen, um sicherzustellen, dass das Beispiel funktioniert. Zum Schluss muss extensions.com noch wie folgt erweitert werden.

; Eingehende Anrufe
exten => 0325178180, 1, Dial(SIP/pc1&SIP/pc2,60)
exten => 0325178180, n, Hangup
; Ausgehende Anrufe
exten => _X., 1, Dial(SIP/${EXTEN}@sip-inout-0325178180, 120)
exten => _X., n, Hangup

Die erste Extension regelt die Zuweisung eines eingehenden Anrufes. Wird die Nummer 0325178180 gewählt, gelangt der Anruf via VoIP Provider auf unseren Asterisk Server. Dieser weist den Anruf dem internen SIP Konto sip-inout-0325178180 zu und sucht dann im Wählplan eine zur gewählten Nummer passende Extension. Diese wird in der zweiten Zeile nach dem Kommentar gefunden und ausgeführt. Mit Dial wird erreicht, dass beide Endgeräte, also die Softphones auf PC 1 und PC 2 während 60 Sekunden läuten. Wird auf einem der Geräte der Anruf entgegengenommen, kommt das Gespräch zustande. Das Dial Kommando kann also mehrere Telefone ansprechen, die SIP Kontos müssen lediglich durch ein ‚&‘ voneinander getrennt werden. Sollen mehrere Teilnehmer einen Anruf entgegennehmen können, bieten sich die Queues an. Queues sind wesentlich flexibler und erlauben die verschiedensten Optionen zur Steuerung.

Die Zeilen fünf und sechs, die dem zweiten Kommentar folgen, regeln das Verhalten des Servers bei ausgehenden Gesprächen. Als Extension verwenden wir hier ein Suchmuster, das auf eine beliebige Zahlenfolge der Ziffern 0 bis 9 zutrifft:

  • Eingeleitet werden Suchmuster im Wählplan stets mit einem Unterstrich (_). Asterisk erkennt daran, dass im folgenden keine Nummer kommt, sondern einer oder mehrere Platzhalter für Ziffern.
  • Ein ‚X‘ steht für eine beliebige Ziffer im Bereich 0 bis 9. Für Zahlenbereiche von 1 bis 9 kann ‚Z‘ verwendet werden, Bereiche von 2 bis 9 werden mit ‚N‘ notiert.
  • Der Punkt ist ein Platzhalter für eines oder mehrere Zeichen. _X. bedeutet somit: Eine oder mehrere Ziffern im Bereich 0 bis 9. So einfach ist das :-)

Wird nun eine Nummer wie zum Beispiel 0326143754 gewählt, geschieht folgendes: Asterisk sucht im Wählplan eine passende Extension und wird beim Suchmuster _X. fündig. Nun wird die gewählte Nummer, die in der Variablen ${EXTENSION} gespeichert ist, gewählt. Dazu wird wiederum das SIP Protokoll verwendet. Als Erweiterung kommt hinzu, dass wir den zuvor definierten SIP Peer verwenden. Dieser leitet das Gespräch anhand der Login- und Server Parameter an den VoIP Provider weiter. Dies geschieht einfach dadurch, dass wir am Ende der zu wählenden Nummer mit einem Klammeraffen angeben, welcher Peer für den Gesprächsaufbau verwendet werden soll.

Nun geht’s an’s ausprobieren. Zuvor muss aber dem Asterisk Server mitgeteilt werden, dass die Konfigurationsdateien neu geladen werden müssen. Öffnen Sie mit asterisk -r eine Konsole und geben Sie die beiden folgenden Kommandos ein:

extensions reload
sip reload

Falls jetzt keine Fehlermeldungen angezeigt werden, sind die Aenderungen akzeptiert worden und Sie können mit den Tests beginnen. Stellen Sie einen hohen verbose Level ein, um zu sehen, was im System vor sich geht.

Ein Gedanke zu „Telefonieren mit Asterisk (III)

  1. Pingback: Benjamin Stocker » Blog Archive » Telefonieren mit Asterisk (V)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert