Asterisk-common

aus PUG, der Penguin User Group
Wechseln zu: Navigation, Suche

Asterisk Konfiguration

Bei den folgenden Beispielen wird davon ausgegangen, dass Asterisk mit 2 HFC ISDN Karten läuft. Beide Karten werden mit mISDN kontrolliert. Die erste Karte läuft als NT im Context from-internal, die zweite Karte ist als TE im Context from-pstn konfiguriert. Bei bristuff oder anderen Karten ist meist statt misdn der entsprechende ZAP Kanal zu wählen.

Wie eine reine SIP Lösung konfiguriert wird, ist unter Asterisk@taunusstein.net zu sehen. Dort ist eine komplette sip.conf und eine extensions.conf samt Telefonmarketing-Abwimmler zu finden.

Das interne Netz

Zunächst müssen die Extensions eingerichtet werden. Zweckmäÿigerweise fängt man bei Asterisk@Home mit der Nummer 200 an. Es muss ein "Custom Channel" verwendet werden. Als Dialstring gibt man bei der Extension 200 dann an:

misdn/1/200

Damit ist die erste (mISDN) Karte und das Telefon mit der MSN 200 gemeint. Die 1 zwischen misdn und 200, beschreibt den Port, der in der misdn.conf eingetragen wurde.

Der Rest der Welt

Erstmal muss ein Trunk eingerichtet werden, der bereits vorhandene Trunk ZAP/g0 kann gelöscht werden. Dazu muss ein Custom Trunk eingerichtet werden. Als Dialstring ist

misdn/2/$OUTNUM$

zu benutzen. Im Menü Outbound Routing wird der alte Trunk ZAP/g0 durch unseren neuen Trunk ersetzt. Zweckmäÿigerweise sollte man als Dialrule die 9 durch eine 0 ersetzen. In USA wird normalerweise immer die 9 für das Amt vorgewählt, aber wir sind hier in Europa und da ist eben die 0 üblich.

Ankommende Rufe

Damit Asterisk, weiss, was bei einem ankommenden Anruf zu tun ist, müssen Inbound Routen gesetzt werden. Als DID-Number ist die gewünschte (eigene) MSN einzutragen, auf die die Route reagieren soll. Was unter Destination zur Auswahl angeboten wird, erklärt sich eigentlich von selbst.

Mehrere ISDN Telefone klingeln lassen

Ein S0 Interface kann nur 2 B Kanäle haben. Die naheliegende Konfiguration einer Ringgroup funktioniert also nicht, wenn mehr als 2 Telefone gleichzeitig angerufen werden sollen. Meine Lösung sieht wie folgt aus: Jedes ISDN Telefon hat 2 MSNs, eine davon ist eindeutig, also 200, 201, 202 usw. Die zweite MSN ist 255, diese MSN ist auf allen Telefon eingetragen. Die Inbound Route legt die MSN 123000 auf die 255, die MSN 123001 geht z.B. auf die 200.

Selektives Routing

Dazu muss etwas in der Caller-ID eingetragen werden, nämlich die MSN des Anrufers. Hier gilt die Regel best matches, d.h. die am besten passende Route schlägt zu. Die Caller-ID, die leer ist, wird also nur verwendet, wenn keine andere Inbound Route besser "passt". Kleine Anmerkung am Rande: Diese lästigen Telemarketingläden identifizieren sich nie, also würde genau diese Route matchen.

Anrufer, die sich mit 0190... oder 0900... identifizieren, kann man so gleich nach /dev/null (z.B. ein Skript, dass "verp... Dich !" sagt) umleiten.

Alles Andere kann man auf einzelne Telefone oder Sammelnummern leiten.

Geschafft!

Damit solltet Ihr nun telefonieren können. Nun sollten folgende Funktionstests erfolgen:

  • Nebenstelle ruft Nebenstelle an
  • Nebenstelle ruft öffentliche Nummer an, z.B. das eigene Handy
  • Mit z.B. Handy die Asterisk Anlage anrufen

SIP

Was wäre Asterisk ohne SIP (VoIP) ? Hier nun die Anleitung, wie man mit Freenet.de und Sipgate Kontakt aufnehmen kann. Es wird hier davon ausgegangen, dass ein Account bei den entsprechenden Providern bereits angelegt ist.

freenet.de

Das ist schon der erste Sonderfall, weil hier in der Registrierung freenet.de stehen muss, dieser DNS Eintrag allerdings auf die falsche IP Adresse zeigt. In der /etc/hosts muss Kraft vi folgende ÿnderung eingetragen werden:

194.97.54.97    freenet.de

Möglicherweise ist dann zwar von unserer Asterisk-Anlage dann die Homepage von freenet.de nicht mehr erreichbar, aber dafür "gewinnt" man ja den VoIP Zugang.

SIP-Trunk

dieser wird wieder für abgehende Verbindungen benötigt, hier müssen folgende Einträge rein:

Outgoing Settings / Peer Details:

allow=gsm&ilbc&alaw&ulaw
context=in
disallow=all
fromdomain=freenet.de
fromuser=<username>
host=freenet.de&freenet.de
insecure=very
secret=<passwort>
type=peer&friend
username=<username>

Dass der Username hier mehrfach vorkommt, ist kein Fehler.

Registerstring

Als Registerstring ist einzutragen:

<username>:<passwort>@freenet.de/<username>

Diese Einstellung funktioniert mit freenet.de (getestet)

sipgate

Bei Sipgate gibt es im Gegensatz zu freenet.de eine eigene Nummer, dafür kann man aber nicht für lau raustelefonieren.

SIP-Trunk

dieser wird wieder für abgehende Verbindungen benötigt, hier müssen folgende Einträge rein:

Outgoing Settings / Peer Details:

allow=gsm&ilbc&alaw&ulaw
context=from-pstn
disallow=all
fromdomain=sipgate.net
fromuser=<von Sipgate zugewiesene Nummer ohne Vorwahl>
host=sipgate.de
insecure=very
secret=<SIP passwort>
type=friend
username=<von Sipgate zugewiesene Nummer ohne Vorwahl>

Das SIP Passwort ist bei Sipgate nicht identisch mit dem Loginpasswort.

Registerstring

Als Registerstring ist einzutragen:

<username>:<passwort>@sipgate.de/<username>

Username / Passwort, wie in Outgoing Setting angegeben.

bluesip

Bei Bluesip gibt es ebenfalls eine eigene Nummer, aber auch hier kann man nicht für lau raustelefonieren. Bluesip ist sehr kleinlich, was die Konfiguration betrifft, offenbar gab es in der Vergangenheit böse Probleme mit kranken Clientkonfigurationen, die sogar die Stablität des Servers beeinträchtigt haben. Eine konsistente IP-NAT Konfig der Linux Maschine ist hier zwingend, will heissen, dass die im SIP Protokoll präsentierte IP-Adresse identisch sein muss mit der Src-IP des IP-Pakets.

Bluesip nimmt alles sehr genau

Nehmen wir mal den Fall an, folgend iptables Regel erzwingt die Verwendung einer bestimmten IP-Adresse, wobei ppp0 die IP 172.16.0.1 und eth0 die IP 192.168.0.1 haben. Normalerweise würde bei allen lokalen abgehenden Verbindungen die 172.16.0.1 als Src-Adresse verwendet. Mit

iptables -A POSTROUTING -s 172.16.0.1 -j SNAT --to-source 192.168.0.1

wird nun für alle abgehenden Verbindungen 192.168.0.1 verwendet. Das ist in der Praxis natürlich nur sinnvoll, wenn man auf eth0 auch RIPE IP-Adressen hat. Damit Bluesip auch hier mitspielt, sind in die sip.conf unter genral folgende Zeilen einzutragen:

[general]
externip=192.168.0.1
localnet=172.16.0.1/32

Ist hier ein Fehler, so äussert sich das unter sip debug peer bluesip mit folgendem Output:

asterisk1*CLI>
<-- SIP read from 217.74.179.29:5060:
Via: SIP/2.0/UDP 194.231.189.2:5060;branch=z9hG4bK1cb45ac3;received=193.138.96.2

Bösartigerweise ist das keine Fehlermeldung, sondern eine Info. Richtig muss es so aussehen:

asterisk1*CLI>
Via: SIP/2.0/UDP 193.138.96.2:5060;branch=z9hG4bK7a54b765

Die Warning, die der Debug Output am Ende des Blocks bringt kann man ignorieren hat hat mit dem Problem nichts zu tun. Wenn Ihr Euch mit z.B. einem Handy über Bluesip selbst anrufen könnt, dann klappt es :-)

SIP-Trunk

dieser wird wieder für abgehende Verbindungen benötigt, hier müssen folgende Einträge rein:

Outgoing Settings / Peer Details:

allow=gsm&ilbc&alaw&ulaw
auth=md5,plaintext
canreinvite=no
context=from-pstn
disallow=all
fromdomain=bluesip.net&bluesip.net
fromuser=<bluesip Username>
host=bluesip.net
insecure=very
nat=yes
qualify=yes
secret=<bluesip Passwort>
type=friend
username=bluesip/<bluesip Username>

Registerstring

Als Registerstring ist einzutragen:

bluesip/<bluesip Username>:<bluesip Passwort>@bluesip.net/bluesip

Username / Passwort, wie in Outgoing Setting angegeben.

Deutsche Ansagen

Ein Archiv mit den Deutschen Ansagen gibt es bei [http://www.stadt-pforzheim.de/asterisk], das kann man direkt in / auspacken, in /var/lib/asterisk/sounds werden die passenden Unterverzeichnisse angelegt.

In /etc/asterisk/misdn.conf (wer es verwendet) und /etc/asterisk/zapata.conf ist language=de einzutragen. Der alte Eintrag language=en ist zu überschreiben.

Die Ansagen, die vom festival Skript kommen sind allerdings immer noch in Englisch.

Offene Punkte / To-Do

chan_capi

chan_capi gibt es hier: http://sourceforge.net/projects/chan-capi, die Installation wird wahrscheinlich auf dem Workshop gemacht und dokumentiert.

Telefonmarketingabwimmler

(soll bitte über die 0900 Nummer anrufen für nur 1,86€ pro Minute ;-)

Mit dem Thema hat man sich schon befasst, in der Readme der neusten Asterisk-Beta ist folgender Link zu finden: http://www.voip-info.org/wiki-Asterisk+Telemarketer+Torture. So kann man diese Anrufer z.B. in Endlosschleifen schicken und selbstverständlich nicht die Background-Option der Asterisk nutzen, so dass erst eine Option ausgewählt werden kann, wenn die Voicemail den gesamten Text abgespult hat.

Meine eigene Lösung besteht darin, dass man einfach die "1" wählen muss, falls sich der Anrufer nicht mit seiner Nummer identifiziert. Da Anrufautomaten und Callcenter dies meist nicht können, ist diese Lösung außerordentlich wirksam. Seit einem Jahr keine Werbeanrufe mehr. Ansonsten wird an Unternehmen nur die 0180 Nummer rausgegeben.

Christian