Aus SatriaWiki
Wechseln zu: Navigation, Suche

Tipps und Tricks rund um Asterisk (VoIP / Trunk Software), FreePBX (GUI für Asterisk) und Raspbx (Raspberry PI 3 Portierung von FreePBX)

Generelles Verständnis

Asterisk ist vereinfacht gesagt ein VoIP Client und Server zugleich. Es baut eine Verbindung zum SIP Provider auf, von dem man seine Telefonnummern erhält und stellt gleichzeitig SIP Zugänge für die anzuschließenden Telefone bereit.

Begriffe

Trunk
SIP Provider im Internet
Extension
Die Nebenstelle oder der Benutzer, der an Asterisk angeschlossen werden soll mit eigener Durchwahl.
User
Benutzer, die sich am WebUI anmelden können. Können mit Nebenstellen verknüpft werden.
Outbound Routes
Regeln, die beim Wählen einer Nummer durch eine Nebenstelle entscheiden, welcher Trunk verwendet werden soll.
Inbound Routes
Regeln, die bei ankommenden Gesprächen entscheiden, auf welche Neben stelle das Gespräch weitergeleitet werden soll, also auch welches Telefon klingeln soll.
DID / DDI
Direct Inward Dialing / Direct Dial In. Bezeichnet das Prinzip, dass die gewählte Nummer an die PBX Zentrale übergeben wird, um dort das Routing auf die Endgeräte vornehmen zu können.

Trunk Konfiguration

Die Provider können Daten erwarten, die voneinander leicht abweichen. Als recht universell haben sich die Werte von/für toplink-xpress herausgestellt:

Allgemeines

Asterisk bedient sich für das Registrieren beim VoIP Anbieter (für eingehende Telefonate) eines sog. Register-Strings, der sich aus Logindaten, dem Server und ggf. anderen Parametern zusammensetzt.

Er hat dieses Format
[peer?][transport://]user[@domain][:secret[:authuser]]@host[:port][/extension][~expiry]
oder
[peer?][transport://]user[@domain][:secret[:authuser]]@trunkname[/extension][~expiry]
In den meisten Fällen setzt er sich lediglich so zusammen
user:secret@host[:port][/user]
oder
user:secret@trunkname[/user]

Trunk Parameter allgemein

qualify=yes
means that your system will periodically send a request that the other system identify itself
net=yes
tells Asterisk that the system you are communicating with is or may be behind a NAT, and that Asterisk should ignore the IPAddress in the from line and instead use the IP address that the packets actually come from
keepalive=30

"30" is the number of seconds that Asterisk will wait between sending keepalive messages. Keepalive messages are important if you are behind a NAT firewall, because if the firewall closes the port, you may not receive all incoming calls

Toplink

Die Outgoing Parameter:

Trunk Name
toplink
PEER Details
type=peer
username=<username>
secret=<password>
insecure=port,invite
host=sip.toplink-xpress.de
fromuser=<username>
fromdomain=sip.toplink-xpress.de

Die Incoming-Parameter:

USER Context
<leer>
USER Details
<leer>
Register String
<username>:<password>@sip.toplink-xpress.de/<username>
Alternativ: <username>:<password>@toplink/<username>

o2

Die Outgoing Parameter:

Trunk Name
alicesip
PEER Details
type=peer
username=<Vollständige Rufnummer ohne +>
secret=<password>
insecure=port,invite
host=sip.alice-voip.de
fromuser=<Vollständige Rufnummer ohne +>
fromdomain=sip.alice-voip.de
qualify=no
caninvite=no
canreinvite=no
context=public
keepalive=120

Die Incoming-Parameter:

USER Context
<leer>
USER Details
<leer>
Register String
<username>:<password>@alicesip/EXT~1800

EXT steht hier für die Extension-Nummer, auf der es klingeln soll. o2 liefert keine DID mit, so dass man Inbound Rules verwenden könnte, um den Anruf zu leiten, sondern man legt im Register-String bereits fest, an welcher Extension der Anruf eingehen soll. Noch dazu muss diese Extension im [public] Context definiert sein!

Hierzu muss man sich auf per SSH auf den Raspbx begeben und die Datei /etc/asterisk/extensions_custom.conf editieren mit dem Inhalt:

[public]
include => from-trunk

Jetzt werden Anrufe im Context [public] genauso behandelt wie andere externe, landen aber auf der Extension EXT.

Wenn aber z.B. keine bestimmte Extension, sondern eine Gruppe klingeln soll, muss man sich eine Art "Dummy"-Extension (z.B. 99) anlegen, die man dann so konfiguriert, dass sie alle Anrufe direkt umleitet auf das gewünschte Ziel. Hier kann das Modul "Follow Me" behilflich sein.

Fonial

Die Outgoing Parameter:

Trunk Name
fonial
PEER Details
type=friend
host=sip.alice-voip.de
username=<Benutzername>
secret=<Passwort>
fromdomain=sip.plusnet.de
nat=force_port,comedia
qualify=yes
insecure=port,invite
canreinvite=no

Die Incoming-Parameter:

USER Context
<leer>
USER Details
<leer>
Register String
<username>:<password>@fonial/<Vollständige Rufnummer mit +>

Bei Fonial ist die Besonderheit, dass der letzte Teil des Register-Strings bei einem Anruf als DID mitgegeben wird. Man muss hier also die vollständige Rufnummer eintragen (und nicht den Benutzernamen, wie auf der fonial website), um eingehende Routen auf Basis der angerufenen Nummer definieren zu können.

Inbound Routes

Diese Regeln leiten die Anrufe an die korrekten Nebenstellen weiter. Es muss für jede extern erreichbare Nummer jeweils eine Inbound Route geben, in der die DID (komplette externe Nummer) gesetzt ist. "Set Destination" bestimmt dann die Nebenstelle, an die der Anruf gehen soll.

Für interne Anrufe muss es eine Inbound Route geben, in der die CID mit der internen Nebenstellennummer gesetzt ist und ebenfalls unter "Set Destination" die gewünschte Nebenstelle.

Outbound Routes

Eine Outbound Route wird anhand der gewählten Nummer aktiviert. Das "Dial Pattern" bestimmt, wie die gewählten Nummern erkannt und ggf. modifiziert werden.

Ein Pattern gilt dann als erfüllt, wenn prefix und [match pattern] mit der Nummer übereinstimmen. Danach wird allerdings prefix von der Nummer entfernt und (prepend) vorangestellt.

Default outgoing

So möchte man z.B., dass lokalen Nummern die Ortsvorwahl vorangestellt wird. Lokale Nummern beginnen hier in D. mit einer Zahl größer 1. Dafür steht der Buchstabe N. Gefolgt von beliebigen und beliebig vielen weiteren Nummern. Hierfür steht der Punkt. Daraus ergibt sich bei der Ortsvorwahl 02206 das folgende Pattern:

(+492206) | [N.] => Es wird nichts entfernt, aber +492206 vorangestellt. Aus 80105 wird so +49220680105

Aus Nummern, die mit Vorwahlen (also einer 0) beginnen, möchte man das Internationale Format machen. Das ist dann dieses Pattern:

(+49) 0 | [Z.] => Greift bei einer beliebigen Nummer, die mit 0 beginnt und mit 1...9 weitergeht, entfernt die 0 und setzt +49 davor. Aus 0220680105 wird so: +49220680105.

Aber auch beim internationalen Format soll unsere Regel greifen. Dafür sorgt dieses Pattern:

() | [+Z.] => Greift bei allen international formatierten Nummern und verändert nichts.

Internal

Werden 3-stellige Nummern gewählt, die mit 2 beginnen (110 und 112 müssen ausgehende Nummern sein!), soll das Gespräch intern geroutet werden. Dafür legt man eine eigene Route an, markiert sie als Intra-Company, ohne Trunk und legt das folgende Pattern dort an:

() | [NXX] => Greift bei allen 3-stelligen Nummern, die mit einer Zahl größer als 1 beginnen.

Special numbers

Sondernummern sind Notfallnummern, aber auch die Auskunft usw. Diese beginnen mit einer 1, ihnen soll aber nicht die Ortsvorwahl vorangestellt werden. Daher legt man eine neue Route an, markiert sie mit Emergency und legt das folgende Pattern an:

() | [[1].] => Greift bei allen beliebig langen Nummern, die mit einer 1 beginnen.

Email

Die Email-Konfiguration kann über die Oberfläche nur vorgenommen werden, wenn man "Sysadmin Pro" erworben hat. Ansonsten muss man das auf der Shell manuell tun:

Methode 1

(Funktioniert bei mir nicht, da /etc/postfix schon nicht vorhanden ist)

edit /etc/postfix/main.cf:
relayhost = SMTP server address
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options =
smtp_generic_maps = hash:/etc/postfix/generic

edit /etc/postfix/sasl_passwd:
relayhost username:password

execute:
postmap hash://etc/postfix/sasl_passwd

edit /etc/postfix/generic:
<source> <real_email_address@real-comain.tld>
...

execute:
postmap /etc/postfix/generic

do a postfix reload:
service postfix restart

Methode 2

  1. Per SSH wird dieser Befehl ausgeführt:
    dpkg-reconfigure exim4-config
    In dem Setup alle Einstellungen so belassen, wie sie sind, außer bei der Frage nach "IP address or the host name of a mail server". Hier die SMTP-Adresse eintragen!
  2. In die Datei /etc/exim4/passwd.client am Ende die Zeile einfügen:
    SMTP_HOSTNAME:USERNAME:PASSWORD
    dabei natürlich die echten Werte einsetzen!
  3. In die Datei /etc/email-addresses am Ende diese Zeilen einfügen:
    root: from@server.de
    asterisk: from@server.de
    dabei wieder die echten Werte einsetzen!
  4. Befehl update-exim4.conf ausführen!
  5. Testen: send_test_email target@server.de

Update

Updates über das FreePBX WebUI sollten in der folgenden Reihenfolge vorgenommen werden:

  1. FreePBX Framework. Danach Apply Config
  2. Core. Danach Apply Config
  3. Process Management. Danach Apply Config
  4. Restliche Module. Danach Apply Config und Neustart.

Tampered Files

Wenn im Dashboard eine Meldung erscheint, die von "tampered files" erzählt, müssen über SSH diese Befehle ausgeführt werden:

amportal chown
amportal a ma refreshsignatures
amportal a reload

Backup directory placeholders

__AMPWEBROOT__
/var/www/html
__ASTETCDIR__
/etc/asterisk
__AMPSBIN__
/usr/sbin
__ASTVARLIBDIR__
/var/lib/asterisk
__ASTSPOOLDIR__
/var/spool/asterisk:In diesem Verzeichnis befindet sich auch das "backup"-Verzeichnis selbst, in dem die Backups abgelegt werden.

Quellen und Tutorials

rogermayer.info/asterisk-konfiguration-fur-toplink-xpress-sip-trunk

www.toplink-xpress.de/wie-kann-ich-meinen-ip-anschluss-an-einer-asterisk-basierten-anlage-einrichten

www.voip-info.org/asterisk-config-sipconf

wiki.freepbx.org/display/FPG/PBX+GUI+Home

www.youtube.com/watch?v=77KzDLij8eQ

wiki.freepbx.org/display/PPS/Setup+Postfix+Manually

www.raspberry-asterisk.org/documentation/#email

Elektronik-Kompendium - Audio-Codecs zur Sprachdigitalisierung

forums.whirlpool.net.au/archive/2688065