Eine einfache Asterisk-Konfiguration für einen SIP-Server als Telefonanlage

15.10.2020

Die hier vorgestellte Asterisk-Konfiguration dient als Muster für einen einfachen SIP-Server, der als Telefonanlage hinter einem Router arbeitet. Die Nebenstellen des SIP-Servers sind sowohl innerhalb des eigenen LANs als auch über das Internet erreichbar. Außerdem ermöglicht dieses Konfigurationsbeispiel Zugänge aus anderen Netzen über zwei fremde Provider. Über diese beiden Provider kann mit Hilfe von Vorwahlen das Einwählen in andere Netze stattfinden.

Außerdem sind noch verschiedene Testnummern integriert. Der hier vorgestellte Code dient als erweiterbares Schema und er wurde auf Asterisk 1.4.22 und auf Asterisk 16.2.1  über ein Jahr lang in einem realistischen Dauereinsatz getestet. Die Asterisk-Software steht kostenlos zur Verfügung.

Die notwendige Hardware: Der Asterisk-Server läuft bei mir auf einem Raspberry Pi 3 B+. Vorher kam eine FritzBox 7170 zum Einsatz. Die Installation und Konfiguration für den Raspberry Pi  ist unter

https://elektronikbasteln.pl7.de/asterisk-und-fail2ban-auf-dem-raspberry-pi

beschrieben. Die Nebenstellen lassen sich zum Beispiel mit FritzBoxen, Softphones und IP-Telefonen verwirklichen. Wo sich diese Endgeräte befinden, spielt keine Rolle. Sie können sich innerhalb des eigenen LANS befinden oder sie sind außerhalb über das Internet erreichbar. Der Betrieb von analogen Telefonen ist an einer FritzBox über den FON-Anschluss mit einer Zweidrahtleitung möglich. Ältere FritzBoxen erlauben sogar den Anschluss von Telefonen, die mit dem Impulswahlverfahren arbeiten. Dies ist bei Wählscheibentelefonen der Fall. Die FritzBox kann als Router dienen oder sie darf sich hinter einem Router befinden.

Der SIP-Server läuft auf einem Raspberry Pi 3 B+ hinter einem Router.
Die Nebenstellen können zum Beispiel in einer FritzBox als neue “Telefonanbieter” eingetragen werden. Manche FritzBoxen erlauben den drahtlosen Anschluss von DECT-Telefonen nach dem DECT-Standard. Die FritzBox kann sich im eigenen LAN oder in einem andern LAN  irgendwo in der Welt befinden. Sie kann als Router dienen oder sich hinter einem Router befinden.
Über den analogen Anschluss funktionieren an älteren FritzBoxen sogar Wählscheibentelefone.
IP-Telefone sind gebraucht günstig erhältlich und bieten jede Menge Komfortfunktionen. Das Thomson TB-30 bewältigt Konferenzen mit drei Teilnehmern.

Wie finde ich den leichten Einstieg? Der hier vorgestellte Entwurf und das Schema orientieren sich an dem didaktischn Aufbau, welcher unter  http://das-asterisk-buch.de/1.6/ verständlich erklärt ist.  Bei dieser Gelegenheit besten Dank an den Autor. Die Lektüre des Asterisk-Buches ist unbedingt für das weitere Verständnis zu empfehlen. Ich versuche nach Möglichkeit Fachwörter zu vermeiden, da sie für den Anfänger verwirrend sind und ihm die korrekten Bezeichnungen noch keinen Nutzen liefern. Deshalb arbeite ich lieber mit Beispielen. Einen weiteren leicht verständlichen Einstieg in die Asterisk-Programmierung bietet die locker und unterhaltsam geschriebene Serie

https://www.linux-magazin.de/ausgaben/2008/01/zeit-fuer-was-neues/

https://www.linux-magazin.de/ausgaben/2008/02/erweiterte-gespraechskultur/.

Beide Einführungen liefern einen Einstieg, der sich auf das Wesentliche konzentriert. Asterisk bietet eine Vielzahl von Möglichkeiten, die selbst für Fachleute nicht zu überblicken sind. Wer tiefer einsteigen möchte, findet unter

http://asterisk-service.com/downloads/Asterisk-%20The%20Definitive%20Guide,%204th%20Edition.pdf

einen umfassenden Einblick. Ansonsten lassen sich zahlreiche Beispiele im Web finden.

CLI-Befehle für Asterisk: Im nachfolgenden Kasten die wichtigsten Befehle für die Bedienung von Asterisk als SIP-Server im LX-Terminal auf der Kommandozeilenebene. Die Bedienung von Asterisk erfolgt also auf die harte Tour.

Die wichtigsten Befehle für die Bedienung von Asterisk

Starten von Asterisk. Die Anzahl der Vs hinter dem -r bestimmt den
Verbose-Level von 0 bis 10. Je höher der Level, desto
mehr Hinweise werden dargestellt:
sudo asterisk -rvvv

Setzt Verbose-Level auf 3. Statt drei gehen Zahlen von 0 bi 10.
core set verbose 3

Liste der peers, um festzustellen, welche Endgeräte
angemeldet ist:
sip show peers

Zeigt Informationen über die 1001:
sip show peer 1001

Welche Telefonate telefonieren gerade:
sip show channels

Sip.conf neu laden:
sip reload

Alle Conf-Dateien neu laden:
reload

Dialplan (extension.conf) neu laden:
dialplan reload

Die Konfigurations-Dateien: Die für einen SIP-Server notwendige Konfiguration verteilt sich auf die Dateien

Sip.conf, extensions.conf, rtp.conf, features.conf und logger.conf.

Diese liegen hier für eine Muster-Konfiguration als

AsteriskMusterKonfiguration14.10.2020.zip

vor. Für eine Wiederherstellung reicht es aus diese fünf Konfiguration-Dateien zu sichern. Die Hauptarbeit der Programmierung liegt in der Sip.conf und in der Extensions.conf. Die Konfigurationsdateien befinden sich alle unter einem Ordner, zum Beispiel auf Linux oft unter /etc/asterisk.

AntiSip: Das Beispiel arbeitet mi einem Account von AntiSip, den wir uns auf

https://www.antisip.com/service/register.html

beschaffen können. Wichtig ist, dass der Username nur aus Ziffern besteht, denn der Username entspricht der Telefonnummer.

Die Sip.conf: Sie enthält die Grundeinstellungen, damit der SIP-Server überhaupt mit der Außenwelt kommunizieren kann und sich die Nebenstellen unterhalten können. Im Beispiel sind drei Nebenstellen mit den Nummern 1001, 1002 und 1003 definiert. Außerdem kann der SIP-Server im Beispiel zu den fremden Providern Sipgate und AntiSip Telefonate aufbauen.

Der SIP-Server befindet sich für diese Konfiguration hinter einem Router, auf dem ein DynDNS-Dienst von noip.com eingerichet ist, der die Web-Adresse blabla.hopto.org liefert. Hat der Internetzugang immer die gleiche öffentliche IP, brauchen wir keinen DynDNS-Dienst und können die öffentliche IP verwenden, die unter externip einzutragen ist.

Der Sip-Server selbst ist zum Beispiel auf einem Raspberry Pi untergebracht, welcher im Beispiel die statische IP 192.168.1.111 besitzt. Normalerweise lautet der Standardport für SIP 5060. Da die 5060 oft schon durch andere SIP-Zugänge im LAN vergeben ist, wurde auf die 5064 ausgewichen.

sip.conf:

; Musterknonfiguration einer sip.conf vom 14.10.2020


[general]
port=5064 ; ueblich ist der port 5060. aber da Fritzboxen
; bereits den Port 5060 belegt haben, kommt hier immer 5064
; zum Einsatz
bindport=5064 ; siehe oben
context=telefone ; unter diesem context stehen die "Telefonnummern" in der extension.conf
bindaddr=0.0.0.0
allowguest=no
disallow=all
allow=alaw
allow=ulaw
allow=gsm
allow=g722
srvlookup=yes ; muss auf yes stehen

externhost=blabla.hopto.org ; Hier eine Webadresse eintragen, die wir uns
; zum  Beispiel bei https://www.noip.com/ besorgen und im Router eintragen.
; externip=xx.xxx.xx.xxx ; Alternative: IP-Adresse deines Internetanschlusses, falls sich
; diese nicht ändert. Siehe https://www.wieistmeineip.de/ oder https://www.meine-aktuelle-ip.de/
; Wenn wir externe ip wählen, dann externhost auskommentieren.
localnet=192.168.1.111/255.255.255.0 ; das ist die statische IP des SIP-Servers im LAN
; hinter dem Router. Diese IP entsprechend anpassen.
nat=comedia ; damit die IP-Adresse des LAN für das Internet umgesetzt wird.
insecure=invite
qualify=yes ; war auf 3000 https://www.voip-info.org/asterisk-variable-dialstatus/
maxexpirey=36000
defaultexpirey=600

; tos=0x04 veraltet
; https://www.voip-info.org/asterisk-sip-tos/
tos_sip=cs3 ; Sets TOS for SIP packets.
tos_audio=ef ; Sets TOS for RTP audio packets.

registerattempts=0 ; versucht sich ewig zu connecten.
registertimeout=1 ; kontrolliert jede Sekunde die Internet-Verbindung

localnet=192.168.0.0/255.255.0.0
localnet=10.0.0.0/255.0.0.0
localnet=172.16.0.0/12
localnet=169.254.0.0/255.255.0.0

call-limit=10
busylevel=10
allowsubscribe=no
; https://www.voip-forum.com/asterisk/2008-01/sip-subscriptions/


; Als Beispiel die Zugänge zu den externen Providern Sipgate und und Anti-SIP
; Notwendig um Anrufe vom SIP provider anzunehmen

; http://das-asterisk-buch.de/1.6/sip-ins-oeffentliche-netz.html
; https://www.voip-info.org/asterisk-config-sipconf/#AsteriskasaSIPclient
; 
register => 1234567e0:Passwort@sipgate.de/1234567e0 ; Sipgate
; Die Sipgate-Nummern bei Sipgate besorgen. Die 1234567e0 ist die SIP-ID.

register => 1234567890:Passwort@antisip.com/1234567890 ; Antisip
; Registrierung einer AntiSip-Nummer unter https://www.antisip.com/service/register.html
; Als Username unbedingt die gewünschte Telefonnummer angeben, die nur aus Ziffern
; bestehen darf, damit sie auf normalen Telefonen verwendbar ist.


; Externe Provider Herausgehende Telefonate

; ausgehende Sipgate Leitung 
[sipgate1]
context=sipgate-in
host=sipgate.de
username=1234567e0
secret=Passwort
fromuser=1234567e0
fromdomain=sipgate.de
canreinvite=no
qualify=yes 
nat=force_rport ; oder comedia 
registertimeout=600
type=friend ; oder peer


; ausgehende antisip Leitung 1234567890
[antisip]
context=antisip-in
host=sip.antisip.com
username=1234567890
secret=Passwort
fromuser=1234567890
fromdomain=sip.antisip.com
canreinvite=no
qualify=yes
nat=force_rport
type=friend

; Nebenstellen, die auch über das Internet erreichbar sind

; Nebenstelle 1
[1001] ; Haustelefon mit der Nummer 1001
type=friend
secret=Passwort
host=dynamic
username=1001
canreinvite=no
port=5064
dtmfmode=rfc2833
callerid = "Anton Mustermann" <1001>

; Nebenstelle 2
[1002] ; Haustelefon mit der Nummer 1002
type=friend
secret=Passwort
host=dynamic
username=1002
canreinvite=no
port=5064
dtmfmode=rfc2833
callerid = "Berta Musterfrau" <1002>

; Nebenstelle 3
[1003] ; Haustelefon mit der Nummer 1003
type=friend
secret=Passwort
host=dynamic
username=1003
canreinvite=no
port=5064
dtmfmode=rfc2833
callerid = "Heribert Feuerstein" <1003>

; Beispiel für die Anmeldedaten der Nebenstelle 1003
; für die FritzBox oder in Softphones:
;
; Nummer, User, Telefonnummer, SIP-ID: 1003
; Registrar: blabla.hopto.org:5064
; Passwort: Passwort

; Falls sich die Nebenstellen innerhalb des eigenen LANs befindet:

; Nummer, User, Telefonnummer, SIP-ID: 1003
; Registrar: 192.168.1.111:5064
; Passwort: Passwort


In der Sip.conf sind die Nummern der einzelnen Nebenstellen definiert. Für die 1003 lautet sie:

; Nebenstelle 3
[1003] ; Haustelefon mit der Nummer 1003
type=friend
secret=Passwort
host=dynamic
username=1003
canreinvite=no
port=5064
dtmfmode=rfc2833
callerid = "Heribert Feuerstein" <1003>

Was muss ich in die FritzBox oder in einem anderen SIP-Endgerät eintragen? Damit Heribert Feuerstein auch unter seiner 1003 erreichbar ist, muss er in seiner FritzBox unter neuer Telefonanbieter oder in seinem Softphone folgende Daten eingeben:

Nummer, User, Telefonnummer, SIP-ID: 1003
Registrar: blabla.hopto.org:5064
Passwort: Passwort

Befindet sich die Nebenstelle im eigenen LAN, wäre folgende Alternative möglich:

Nummer, User, Telefonnummer, SIP-ID: 1003
Registrar: 192.168.1.111:5064
Passwort: Passwort

Nachfolgend ein Beispiel für die Konfiguration im Windows-Softphone Ninja Lite. Was rot durchgestrichen wurde, muss laut unserem Beispiel durch blabla.hopto.org ersetzt werden. Den SIP-Port 5064 muss man hier getrennt unter SIP Port eintragen.

Das kostenloase Softphone Ninja Lite für Windows ist auf https://www.globaliptel.com/Contents/Products/Software/Ninja-Lite.html erhältlich. Falls der Download nicht klappt, einen anderen Browser verwenden. Die Konfiguration ist im rechten Fenster ersichtlich. Dieses Fenster öffnet sich, wenn man auf das kleine Zahnrad in der oberen Leiste des Telefons klickt. Auch dieses Softphone sollte mit einem Headset betrieben werden, obwohl es ein gute Echounterdrückung zu besitzen scheint.

Die extensions.conf: Sie enthält die Wahlregeln (Dialplan) und legt fest, was passiert, wenn jemand eine Nummer wählt.

Der Abschnitt [Callthrough] hat folgende Funktion, die für das Verständnis der Telefonanlage entscheidend ist. Ruft jemand über Sipgate oder AntiSip herein, hört der Anrufer eine weibliche Stimme, die auffordert die gewünschte Zielnummern einzutippen und mit # abzuschließen. Möchte man die 1001 erreichen, ist die 1001# einzutippen und man wird verbunden. Weiß der Anrufer nicht, welche Nummer er eintippen muss, wird er nach einer Weile automatisch mit der 1001 verbunden.

Möchte man über Sipgate heraustelefonieren kann je nach Auskomentierung der Programmzeilen zwischen zwei Möglichkeiten gewählt werden. Bei der einen gehen alle gewählten Nummern, die mit 0 biginnen über Sipgate. Bei der anderern Möglichkeit muss man die Vorwahl 8967 wählen. Wer über AntiSip herauswählen möchte, muss als Vorwahl die 8888 wählen. Angenommen man möchte die AntiSip-Nummer 1234 erreichen. Dann ist 88881234 zu wählen Das Programm schneidet die ersten 4 Ziffern ab, es bleibt die 1234 übrig, die zum Herauswählen an einen AntiSip-Account übergeben wird. Früher hätte das die Handvermittlung mit folgender Bitte  erledigt: “Ich möchte gerne die 1234 im AntiSip-Netz erreichen.”

;
; Musterversion der extensions.conf
; vom 14.10.2020
;
;
[general]
autofallthrough=no ; diese Einträge sind notwendig, damit CallThrough funtkioniert
static=yes         ; diese Einträge sind notwendig, damit CallThrough funtkioniert
writeprotect=no    ; diese Einträge sind notwendig, damit CallThrough funtkioniert


[telefone]  ; Siehe entsprechenden Eintrag in der sip.conf


; Die Nebenstellen, die in sip.conf definiert sind
; http://das-asterisk-buch.de/1.6/transfer.html
; tT ermoeglicht Rufweiterreichung mit Raute
; r lässt klingeln, nicht unbedingt notwendig
; wie in der features.conf definiert ist unter blindxfer

; So muesste man es Zeile fuer Zeile schreiben
; und Nummer fuer Nummer schreiben. Beispiel für 1001:
; exten => 1001,1,Dial(SIP/1001,60,tT)

; eleganter mit
; http://das-asterisk-buch.de/1.6/einleitung-regex.html
exten => _1XXX,1,Dial(SIP/${EXTEN},60,rtT)

; 1000 wählen und es klingeln alle 3 Nebenstellen
exten => 1000,1,Dial(SIP/1001&SIP/1002&SIP/1003,45,tT)

; ECHOTEST (HALL, ZEITVERZOEGERUNG)
exten => 1111,1,Answer()                ; Abheben
exten => 1111,n,Playback(demo-echotest) ; Ansage
exten => 1111,n,Echo                    ; Echotest
exten => 1111,n,Playback(demo-echodone) ; Bestaetigung
exten => 1111,n,Hangup()                ; Auflegen

; Test für Nummernschalter
exten => 1234567890,1,Goto(1111,1)

; 3333 zur Vertreibung von lästigen Werbeanrufen
exten => 3333,1,Ringing()
exten => 3333,n,Wait(1)
exten => 3333,n,Playback(tt-somethingwrong)
exten => 3333,n,Playback(tt-weasels)
exten => 3333,n,Playback(tt-monkeysintro)
exten => 3333,n,Playback(tt-monkeys)
exten => 3333,n,Playback(vm-goodbye)
exten => 3333,n,Hangup()

;ZEIT- UND DATUMSANZEIGE (zeitversetzt um eine Stunde) GMT
;beim Wählen der Nummer 2424
exten => 2424,1,Ringing()
exten => 2424,n,Wait(1)
exten => 2424,n,SayUnixTime(,Europe/Berlin,AdBY)
exten => 2424,n,Wait(1)
exten => 2424,n,SayUnixTime(,Europe/Berlin,H)
exten => 2424,n,Playback(hours)
exten => 2424,n,SayUnixTime(,Europe/Berlin,M)
exten => 2424,n,Playback(minutes)
exten => 2424,n,SayUnixTime(,Europe/Berlin,S)
exten => 2424,n,Playback(seconds)
exten => 2424,n,Wait(1)
exten => 2424,n,Playback(vm-goodbye)
exten => 2424,n,Wait(1)
exten => 2424,n,Hangup()



; TELEFONIEREN UEBER PROVIDER NACH AUSSEN 
; mit Hilfe von Vorwahlen
; https://wiki.asterisk.org/wiki/display/AST/Selecting+Characters+from+Variables

; WEITERLEITUNG AUF SIPGATE-NUMMERN UEBER SIPGATE 

; "@sipgate1", weil der entprechende Abschnitt [sipgate1] in der sip.conf vorkommt
; exten => _0X.,1,Dial(SIP/${EXTEN}@sipgate1,60,r)   ; fuer alle gewählt Nummern, die mit 0 beginnen 
exten => _8976X.,1,Dial(SIP/${EXTEN:4}@sipgate1,60,tT)     ; schneidet 8976 vorne ab
; mit der internen Vorwahl 8976 gehen die Telefonate über Sipgate heraus.

exten => 10000,1,Dial(SIP/${EXTEN}@sipgate1,60,r)     ; Willkommen bei Sipgate
exten => 10005,1,Dial(SIP/${EXTEN}@sipgate1,60,r)     ; Sprachtest Sipgate


; Weiterleiung auf Antisip-Nummern
exten => _8888X.,1,Dial(SIP/${EXTEN:4}@antisip,60,r)     ; schneidet vorne die 8888
; mit der Vorwahl 8888 können AntiSip-Nummern angewählt werden.

; Ansage gibt eigene Nummer zurück
exten => 55555,1,Ringing()
exten => 55555,n,Answer()
exten => 55555,n,Wait(1)
exten => 55555,n,SayDigits(${CALLERID(num)})
exten => 55555,n,Wait(1)
exten => 55555,n,SayNumber(${CALLERID(num)})
exten => 55555,n,Wait(1)
exten => 55555,n,HangUp()

; Zum Testen der Callthrough-Funktionen
exten => 880088,1,Goto(callthroughBlind,s,1)
exten => 880073,1,Goto(callthrough,s,1)

[callthroughBlind] ; Es werden die gewählten Ziffern angesagt
; Prompt caller to key-in number to be dialed and to finish with #
; Nach der Ansage Nummer (ev. mit Vorwahl) waehlen und mit # bestaetigen
; Beim Vertippen * und von vorne anfangen
exten => s,1,Ringing()
exten => s,2,Answer()
exten => s,3,Set(NR=)
exten => s,4,Background(vm-enter-num-to-call)
exten => s,5,Background(vm-then-pound)
exten => s,6,Set(TIMEOUT(response)=10)
exten => s,7,WaitExten
exten => s,8,Playback(vm-dialout)
exten => s,9,Dial(SIP/1001,45,tT)
exten => _X,1,Set(NR=${NR}${EXTEN})
exten => _X,2,Goto(s,6)
exten => *,1,Goto(s,3)
exten => #,1,NoOp(${NR})
exten => #,n,Wait(1)
exten => #,n,SayNumber(${NR})
exten => #,n,Wait(1)
exten => #,n,SayDigits(${NR})
exten => #,n,Wait(1)
exten => #,n,SayDigits(${NR})
exten => #,n,Wait(1)
exten => #,n,Playback(vm-dialout)
exten => #,n,NoOP(Dialing Now)
exten => #,n,NoOp(Dialing ${NR})
exten => #,n,Dial(SIP/${NR},45,tT)    ; nur zu Sip-Telefonen, mit Rufweiterleitung
exten => #,n,Playback(beep)           ; macht Beep, wenn keine Nebenstellen gewaehlt
exten => #,n,Goto(telefone,${NR},1)   ; springt zum Context telefone
exten => #,n,HangUp()


[callthrough]
; Prompt caller to key-in number to be dialed and to finish with #
; Nach der Ansage Nummer (ev. mit Vorwahl) waehlen und mit # bestaetigen
; Beim Vertippen * und von vorne anfangen
exten => s,1,Ringing()
exten => s,2,Answer()
exten => s,3,Set(NR=)
exten => s,4,Background(vm-enter-num-to-call)
exten => s,5,Background(vm-then-pound)
exten => s,6,Set(TIMEOUT(response)=30)
exten => s,7,WaitExten
exten => s,8,Playback(vm-dialout)
exten => s,9,Dial(SIP/1001,45,tT) ; wenn keine Nummer eingetippt, gehts zur 1001
exten => _X,1,Set(NR=${NR}${EXTEN})
exten => _X,2,Goto(s,6)
exten => *,1,Goto(s,3)
exten => #,1,NoOp(${NR})
exten => #,2,Playback(vm-dialout)
exten => #,3,NoOP(Dialing Now)
exten => #,4,NoOp(Dialing ${NR})
exten => #,5,Dial(SIP/${NR},45,tT)    ; nur zu Sip-Telefonen, mit Rufweiterleitung
exten => #,6,Playback(beep)           ; macht Beep, wenn keine Nebenstellen gewaehlt
exten => #,7,Goto(telefone,${NR},1)   ; springt zum Context telefone
exten => #,n,HangUp()


; Einwahl-Nummern von Aussen ueber CallThrough
; um zu einer beliebigen Nummer weiterzuleiten
[sipgate-in]
; von aussen Sipgate-Nummer  wählen,
exten => 1234567e0,1,Goto(callthrough,s,1)

; Alternativen:

; exten => 1234567e0,1,Dial(SIP/1001&SIP/1002&SIP/1003,45,tT)
; es klingeln alle drei Nebenstellen bei einem Anruf von Sipgate
; 
; exten => 1234567e0,1,Dial(SIP/1001,45,tT)
; es klingelt nur die 1001, wenn jemand von Sipgate anruft

[antisip-in] 
; von aussen Antisip-Nummer 1234567890 wählen,
exten => 1234567890,1,Goto(callthrough,s,1)

Ansonsten sind in dieser extensions.conf noch zahlreiche Testnummern zum Spielen enthalten, die Sound-Dateien aufrufen. Die Funktionen sind den Kommentarzeilen zu entnehmen. Sämtliche Soundfiles sind nach der Installation von Asterisk vorhanden.  Sie sind auf Englisch. Sollten sie dennoch fehlen, sind sie vielleicht auf http://www.spblinux.de/fbox/sounds16/ vorhanden. Es können auch Sound-Dateien anderer Sprachen nachinstalliert werden.

In der Extensions.conf müssen die Wahlregeln (extensions) für die 3 Nebenstellen 1001, 1002 und 1003 definiert sein:

exten => 1001,1,Dial(SIP/1001,60,tT)
exten => 1002,1,Dial(SIP/1002,60,tT)
exten => 1003,1,Dial(SIP/1003,60,tT)

Wenn jemand die Nummer 1001 wählt, dann klingelt auch 1001.

Etwas bequemer zum Eintippen ist folgende Variante, die dasselbe erledigt:

exten => 1001,1,Dial(SIP/${EXTEN},60,tT) 
exten => 1002,1,Dial(SIP/${EXTEN},60,tT) 
exten => 1003,1,Dial(SIP/${EXTEN},60,tT)

Was der Anrufer wählt, wird an ${EXTEN} weitergegeben. Bei drei Nummern kein Problem. Bei 1000 Nummern ist es lästig für jeden Anschluss eine Zeile zu schreiben. Es geht bequemer mit einer Zeile, die einen ganzen Nummernbereich abdeckt.

; eleganter mit
; http://das-asterisk-buch.de/1.6/einleitung-regex.html
exten => _1XXX,1,Dial(SIP/${EXTEN},60,rtT)

Unter http://das-asterisk-buch.de/1.6/einleitung-regex.html ist die Methode erklärt

Wir können uns auch einen Scherz erlauben:

exten => 1001,1,Dial(SIP/1002,60,tT)

Wenn  jemand also die 1001 wählt, dann klingelt es auf der 1002.

Folgende Variante ist möglich. Wenn 1000 gewählt wird, klingeln alle drei Telefone:

exten => 1000,1,Dial(SIP/1001&SIP/1002&SIP/1003,45,tT)

Derjenige, der zuerst abhebt, erhält das Gespräch.

Beispiel Echo-Test: Beispiel einer Test-Nummer in der extensions.conf, die einen Echo-Test ermöglicht.  Dabei hört man seine eigene Stimme etwas zeitverzögert:

; ECHOTEST (HALL, ZEITVERZOEGERUNG) beim Wählen der Nummer 1111
exten => 1111,1,Answer()                ; Abheben 
exten => 1111,n,Playback(demo-echotest) ; Ansage 
exten => 1111,n,Echo                    ; Echotest 
exten => 1111,n,Playback(demo-echodone) ; Bestaetigung 
exten => 1111,n,Hangup()                ; Auflegen

Vertreibung von lästigen Anrufern:

; 330 zur Vertreibung von lästigen Werbeanrufen
exten => 330,1,Ringing()
exten => 330,n,Wait(1)
exten => 330,n,Playback(tt-somethingwrong)
exten => 330,n,Playback(tt-weasels)
exten => 330,n,Playback(tt-monkeysintro)
exten => 330,n,Playback(tt-monkeys)
exten => 330,n,Playback(vm-goodbye)
exten => 330,n,Wait(1)
exten => 330,n,Hangup()

Dieser Code-Schnipsel in der extensions.conf spielt lustige Sounddateien ab, um unangenehme Anrufer zu vertreiben. Mit #330 erfolgt die Rufweiterleitung auf diese Darbietung. Aus dem Gedächtnis übersetzt lautet der Text: “Etwas Schreckliches ist passiert. Wiesel haben unser Sonnensystem aufgefressen. Sie wurden von Affen weggetragen. – Affengeschrei – Auf Wiedersehen.” Anrufer, die angeblich aus dem Microsoft Help Dest Center anrufen, rufen bei mir nie wieder an.

Beispiel Herauswählen aus dem SIP-Server in das Netz von AntiSip: Dazu ist in der Sip.conf folgendes festgelegt:

; ausgehende antisip Leitung 1234567890
[antisip] ; siehe exten => _8888X.,1,Dial(SIP/${EXTEN:4}@antisip,60,r) in der extensions.conf
context=antisip-in
host=sip.antisip.com
username=1234567890
secret=Passwort
fromuser=1234567890
fromdomain=sip.antisip.com
canreinvite=no
qualify=yes
nat=force_rport
type=friend

In der extensions.conf muss dann entsprechend folgendes stehen:

exten => _8888X.,1,Dial(SIP/${EXTEN:4}@antisip,60,r)

Die Zeile sorgt dafür, dass alle Nummern, die mit 8888 beginnen, über [antisip] -Nummer 123456789 geleitet werden. Möchte der Nutzer die AntiSip-Nummer 9876 erreichen, muss er 88889876 wählen. Die ersten 4 Ziffern werden vorne abgeschnitten und es wird über die Anti-Sip-Nummer 123456789 herausgewählt.

Beispiel Hereinwählen aus dem Netz von AntiSip: Dazu muss folgendes in der sip.conf stehen, damit die Registrierung des AntiSip-Accounts klappt.

; wir sind in der sip.conf
register => 1234567890:Passwort@antisip.com/1234567890 ; Antisip

und wie bereits gezeigt ist auch dieser Code-Schnipsel notwendig

; das hier ist auch in der sip.conf
; ausgehende antisip Leitung 1234567890
[antisip]
context=antisip-in ; entsprechenden context in der extensions.conf beachten
host=sip.antisip.com
username=1234567890
secret=Passwort
fromuser=1234567890
fromdomain=sip.antisip.com
canreinvite=no
qualify=yes
nat=force_rport
type=friend

Entsprechend sind dann folgende Einträge in der extensions.conf vorhanden: Es handelt sich um den Context [antisip-in]:

; und das steht in der extensions.conf

[antisip-in] ; siehe dazu in der sip.conf context=antisip-in
; von aussen Antisip-Nummer 1234567890 wählen und es geht zu callthrough,s,1
exten => 1234567890,1,Goto(callthrough,s,1)

Wer also im Netz von AntiSip die 1234567890 wählt, landet im Asterisk-Server, der den eingehenden Anruf auf den den context [callthrough] Zeile s,1 weiterleitet:

[callthrough]
; Prompt caller to key-in number to be dialed and to finish with #
; Nach der Ansage Nummer (ev. mit Vorwahl) waehlen und mit # bestaetigen
; Beim Vertippen * und von vorne anfangen
exten => s,1,Ringing()
exten => s,2,Answer()
exten => s,3,Set(NR=)
exten => s,4,Background(vm-enter-num-to-call)
exten => s,5,Background(vm-then-pound)
exten => s,6,Set(TIMEOUT(response)=30)
exten => s,7,WaitExten
exten => s,8,Playback(vm-dialout)
exten => s,9,Dial(SIP/1001,45,tT) ; wenn keine Nummer eingetippt, gehts zur 1001
exten => _X,1,Set(NR=${NR}${EXTEN})
exten => _X,2,Goto(s,6)
exten => *,1,Goto(s,3)
exten => #,1,NoOp(${NR})
exten => #,2,Playback(vm-dialout)
exten => #,3,NoOP(Dialing Now)
exten => #,4,NoOp(Dialing ${NR})
exten => #,5,Dial(SIP/${NR},45,tT)    ; nur zu Sip-Telefonen, mit Rufweiterleitung
exten => #,6,Playback(beep)           ; macht Beep, wenn keine Nebenstellen gewaehlt
exten => #,7,Goto(telefone,${NR},1)   ; springt zum Context telefone
exten => #,n,HangUp()

Die ist etwas kompliziert und macht folgendes. Der Nutzer landet nach der Wahl der Telefonnummer 1234567890 auf den Context Callthrough Zeile s,1. Er hört das Klingelzeichen. Dann fordert ihn eine Stimme auf die gewünschte Zielnummer einzutippen und mit der  Raute # abzuschließen. Tippt er zum Beispiel die 1002# ein, klingelt die Nebenstelle 1002#, die sich vielleicht in Kalifornien befindet, während der SIP-Server sich in Schweden befindet und der Anrufer auf Bali im Urlaub ist und dort auf seinem Smartphone ein Softphone verwendet mit einem Account vn AntiSip. Weiß der Anrufer nicht, was er eintippen soll, klingelt nach einer Weile die 1001, die das Gespräch nach 1002 von Hand weiterleiten könnte.

Gespräche an eine andere Telefonnummer übergeben: Angenommen 1001 und 1002 unterhalten sich. Einer der beiden weiß nicht mehr weiter und verweist auf den Spezialisten mit der 1003. Er oder sie tippt dann während des Gesprächs die #1003 und es klingelt die 1003. Dafür ist in features.conf folgender Eintrag notwendig:

Die gesamte features.conf:

[general]

[featuremap]
blindxfer => #    ; Blind transfer  (default is #)
                  ; Make sure to set the T and/or t option in the Dial() or Queue() app call!

Das ist schon alles. Allerdings darf in den Wahlregeln der extensions.conf nicht das t und T fehlen:

exten => _1XXX,1,Dial(SIP/${EXTEN},60,rtT)

Am Ende steht deshalb tT. Die Argumente 60,rtT bedeuten folgendes: Es klingelt 60 Sekunden, r veranlasst das Klingeln, ist aber nicht notwendig. rT bedeutet sowohl der Anrufer als der Angerufene dürfen Gespräche abgeben.

Portforwarding in der rtp.conf: Entsprechend muss im Router eine Portweiterleitung für UDP von 10205 bis 10500 erfolgen, damit man nach draußen über das Internet telefonieren kann. Die gesamte rtp.conf sieht so aus:

; Eintrag in der rtp.conf fuer 
; UDP-Portweiterleitung des Routers
; von 10205 bis 10230

[general]
rtpstart=10205
rtpend=10500

Dieser Bereich reicht für den kleinen SIP-Server, um mehrere Audio-Streams, also Telefonate, gleichzeitig zu bewältigen ( https://de.wikipedia.org/wiki/Real-Time_Transport_Protocol ).

Im Router sind also folgende Portweiterleitungen einzutragen:

UDP 5063 – 50566 (wahrscheinlich würde 5064 reichen)
UDP 10205 – 10500

Im Router sollte nach Möglichkeit SIP ALG abgeschaltet sein ( https://www.voip-info.org/routers-sip-alg/ ).

Die logger.conf: Für das Logging sollte man sich die logger.conf sichern. Sie wird zum Beispiel für den Betrieb von Fail2Ban benötigt:

[general]
dateformat=%F %T       ; ISO 8601 date format

[logfiles]

console => notice,warning,error,debug
messages => security,notice,warning,error

Mehr muss man für den Einstieg eigentlich nicht wissen, um für private Zwecke einen kleinen Asterisk-Server einzurichten, damit die Familie oder Freunde über das eigene Netz telefonieren können. Leider findet meine Frau die Bedienung meiner Telefonanlage zu kompliziert und sie verwendet nur noch ihr Handy.

Anrufbeanworter (AB) hinzufügen: Früher erledigte das für relativ viel Geld ein kleines Tonbandgerät. In Asterisk ist das eine Kleinigkeit un mit ein paar Programmzeilen erledigt, wenn man auf die E-Mail-Benachrichtigung verzichtet, denn dazu müsste man Postfix installieren. Ausprobiert habe ich den AB unter Asterisk 16.2.1. Geholfen hat mir dabei das Beispiel unter

http://das-asterisk-buch.de/1.6/minimale-telefonanlage.html.

Bei meinem Beispiel soll zum Ausprobieren nur die Nummer 1001 einen Anrufbeantworter erhalten. Dazu müssen wir eine voicemail.conf anlegen, in der nur wenig steht:

; vollständige voicemail.conf
; für einen Anrufbeantworter des Anschlusses 1001

[general]
format = wav

[default]
1001 => 12345,Anton Mustermann,anton.mustermann@xxxx.de
;
; da bei dieser einfachen Installation weder ein Passwort noch eine E-Mail-Benachrichtigung
; mit Postfix eingerichtet ist, dürfen da sPasswort 12345 und der weitere Rest
; eine reine Erfindung sein.

Es fehlen noch ergänzende Einträge in der extensions.conf:

exten => 1001,1,Dial(SIP/1001,30) ; 30 beudetet nach 30 Sekunden meldet sich der AB
exten => 1001,2,VoiceMail(1001,u) ; Der Anrufbeantworter meldet sich zur Spracheingabe

exten => 2000,1,VoiceMailMain(${CALLERID(num)},s)
; sorgt dafür, dass durch das Wählen der Nummer 2000 vom Anschluss 1001 der
; Anrufbeantworter für den Anschluss 1001 abgehört werden kann.

Das ist alles. Zeile 2 fügt einen Anrufbeantworter hinzu. Zeile 4 sorgt dafür, dass durch das Wählen der Nummer 2000 vom Anschluss 1001 der Anrufbeantworter  für den Anschluss 1001 abgehört werden kann. Eine us-amerikanische Stimme erklärt dabei welche Tasten zu drücken sind.

Eleganter funktioniert der nachfolgende Eintrag in die extensions.conf für die Nummern 1000 bis 1999. Der Nutzer setzt vor die Zielnummer (von 1000 bis 1999) eine 22 und kommt dann direkt auf den Anrufbeantworter der Zielnummer. Abhören kann man den AB mit der Nummer 2222 von seiner eigenen Telefonnummer.

; Voicemail durch die Vorwahl 22 für die Nummern 1000 bis 1999
exten => _221XXX,1,Voicemail(u${EXTEN:2}) ; * wird entfernt
exten => _221XXX,2,Hangup
exten => 2222,1,VoicemailMain(s${CALLERID(num)})
exten => 2222,2,Hangup

Dies funktioniert nur, wenn wie bereits beschrieben der entsprechende Eintrag in der voicemail.conf vorhanden ist. Schließlich will nicht jeder Teilnehmer einen AB haben. Ich verwende den AB nur, um die Sprachqualität der Telefone zu testen.

Luxus-Sprachhinweise: Es folgen Sprachmeldungen bei Besetzt, Abwesend, kein Anschluss unter dieser Nummer und so weiter. Dies gibt der Telefonanlage eine besondere Note. Oder es ist als nette Spielerei anzusehen:

; in der extensions.conf, angepasst für Asterisk 16.2.1
; _1XXX gilt fuer alle Zahlen von 1000 bis 1999
exten => _1XXX,1,Dial(SIP/${EXTEN},60,rtT)
exten => _1XXX,2,GotoIf($[${DIALSTATUS} = NOANSWER]?22)    ; geht nicht ans Telefon
exten => _1XXX,3,GotoIf($[${DIALSTATUS} = CHANUNAVAIL]?17) ; Channel nicht erreichbar
exten => _1XXX,4,GotoIf($[${DIALSTATUS} = CONGESTION]?13)  ; Leitung überlastet, Fehler
exten => _1XXX,5,GotoIf($[${DIALSTATUS} = BUSY]?7)         ; Besetzt
exten => _1XXX,6,Hangup
exten => _1XXX,7,Playback(im-sorry)
exten => _1XXX,8,Playback(telephone-number)
exten => _1XXX,9,SayNumber(${EXTEN})     
exten => _1XXX,10,Playback(is-in-use)     
exten => _1XXX,11,Playback(please-try-call-later)                  
exten => _1XXX,12,Hangup             
exten => _1XXX,13,Playback(beep) ; Ueberlastung des Systems
exten => _1XXX,14,Playback(beep)
exten => _1XXX,15,Playback(tt-somethingwrong)
exten => _1XXX,16,Hangup
exten => _1XXX,17,Playback(beep)
exten => _1XXX,18,Playback(ss-noservice) ; Nummer nicht erreichbar
exten => _1XXX,19,Playback(please-try-call-later)
exten => _1XXX,20,Playback(beep)
exten => _1XXX,21,Hangup
exten => _1XXX,22,Playback(im-sorry)
exten => _1XXX,23,Playback(telephone-number) ; niemand geht ran
exten => _1XXX,24,SayNumber(${EXTEN}) ; niemand geht ran
exten => _1XXX,25,Playback(number-not-answering) ; niemand geht ran
exten => _1XXX,26,Playback(number-not-answering) ; niemand geht ran
exten => _1XXX,27,Wait(1)
exten => _1XXX,28,Playback(you-entered) ; niemand geht ran
exten => _1XXX,29,Playback(telephone-number) ; niemand geht ran
exten => _1XXX,30,SayDigits(${EXTEN}) ; niemand geht ran
exten => _1XXX,31,Playback(im-sorry)
exten => _1XXX,32,Playback(goodbye)
exten => _1XXX,33,Hangup

Anpassung für die schwedische Wählscheibe:  Die schwedische Wählscheibe hat die Ziffernfolge 0123456789 aufgedruckt, während die deutschen und die meisten anderen Wählscheiben die Ziffernfolge 1234567890 als Aufdruck verwenden. Die Mechanik des Nummernschalters ist gleich. Damit man nicht umrechnen muss, kann man folgenden Trick in der extensions.conf für bestimmte Nummern verwenden, die man häufig verwendet.

exten => 2110,1,Dial(SIP/1009,60,tT)
exten => 1234567890,1,Dial(SIP/0123456789,60,tT)

Orientiert sich jemand am Aufdruck einer schwedischen Wählscheibe und wählt die 2110, dann wählt er in Wirklichkeit die 1009. Mir ist selbstverständlich klar, dass es kaum jemanden auf der Welt geben wird, der unbedingt schwedische Wählscheibentelefone an einer Asterisk-Telefonanlage betreiben will.

Rufumleitung als Sonderbehandlung für wichtige Anrufer: Wenn der wichtige Anrufer 1005 die 1002 wählt, springt das Programm mit dem Befehl GotoIf direkt zu 100, was die 1088, die 1007 und die 1008 klingeln lässt.

Alle anderen Anrufer, die die 1002 wählen, lässt das Programm auf die 200 springen und sie werden normal auf 1002 weitergeleitet.

; Wir sind in der extensions.conf

exten => 1002,1,GotoIf($[${CALLERID(num)} = 1005]?100:200)
exten => 1002,100,Dial(SIP/1088&SIP/1007&SIP/1008,45,tT)
exten => 1002,200,Dial(SIP/${EXTEN},45,tT)

; Wenn der wichtige Anrufer 1005 die 1002 wählt, 
; springt das Programm mit dem Befehl GotoIf direkt zu 100,
; was die 1088, die 1007 und die 1008 klingeln lässt.
; Alle anderen Anrufer, die die 1002 wählen, 
; lässt das Programm auf die 200 springen 
; und sie werden normal auf 1002 weitergeleitet.

Zeit- und Datumsansage: Beim Wählen der Nummer 2424 wird die Uhrzeit und das Datum aufgesagt. Als es noch kein Internet gab, waren solche Telefonauskünfte gefragt. Heute ist es eine nette Spielerei.

; in der extensions.conf unterzubringen
;ZEIT- UND DATUMSANSAGE
;beim Wählen der Nummer 2424
exten => 2424,1,Ringing()
exten => 2424,n,Wait(1)
exten => 2424,n,SayUnixTime(,Europe/Berlin,AdBY)
exten => 2424,n,Wait(1)
exten => 2424,n,SayUnixTime(,Europe/Berlin,H)
exten => 2424,n,Playback(hours)
exten => 2424,n,SayUnixTime(,Europe/Berlin,M)
exten => 2424,n,Playback(minutes)
exten => 2424,n,SayUnixTime(,Europe/Berlin,S)
exten => 2424,n,Playback(seconds)
exten => 2424,n,Wait(1)
exten => 2424,n,Playback(vm-goodbye)
exten => 2424,n,Wait(1)
exten => 2424,n,Hangup()

Zusammenfassung der Konfiguration in der sip.conf für die wichtigsten SIP-Provider: Nachfolgend eine unvollständige Auflistung für die sip.conf, die um die eigenen Zugangsdaten zu ergänzen ist.

Sipgate: Kostenlose öffentliche Telefonnummern, kostenlose Telefonate innerhalb des Sipgate-Netzes. Guthaben kann aufgeladen werden.

Ippi: Kostenlose Telefonate innerhalb des eigenen Netzes. Öffentliche Telefonnummern gegen Aufpreis, Gateway nach Skype noch nicht getestet.

Iptel, Sip2Sip, AntiSip, OpenSips: Geschlossene Netze für die Telefonie über SIP.

EinfachVoip: Bietet kostengünstige Telefonate in die in- und ausländischen öffentlichen Festnetz- und Mobilfunknetze. Guthaben aufladbar. Paypal möglich. Der Kunde erhält ein Nummer, die nicht angerufen werden kann. Er kann nur über eine verfizierte Nummer zurückgerufen werden. Persönliche Angaben müssen verfiziert werden.

; 21.10.2020
; Auszug aus der sip.conf
; Die nachfolgenden Konfigurationen funktionieren bei mir.
; Andere Router und andere Asterisk-Versionen können Anpasungen erfordern.

; Sipgate 
; https://www.sipgatebasic.de/
; kostenlose öffentliche Telefonnummer, Verifizierung der persönlichen
; Angaben notwendig. Wohnsitz muss in Deutschland sein.
;
; Testnummern:
; Willkommen bei Sipgate: 10000
; Echotest:             : 10005
;
register => 1234567e0:passwort@sipgate.de/1234567e0
;
[sipgate1]
context=sipgate-in
host=sipgate.de
username=1234567e0
secret=passwort
fromuser=1234567e0
fromdomain=sipgate.de
canreinvite=no
qualify=yes 
nat=force_rport
registertimeout=600
type=friend

; Iptel 
; https://www.iptel.org/ 
; für den Alias nur Ziffern verwenden.
;
; Testnummern: 
; Musik: music
; Echo : echo
;
81234567:passwort@iptel.org/81234567
;
[iptel]
context=iptel-in
host=iptel.org
username=81234567
secret=passwort
fromuser=81234567
fromdomain=iptel.org
canreinvite=no
qualify=yes
nat=force_rport
type=friend

; Antisip
; https://www.antisip.com/service/register.html
; Username darf nur aus Ziffern bestehen
;
812345:passwort@antisip.com/812345
;
[antisip] 
context=antisip-in
host=sip.antisip.com
username=812345
secret=passwort
fromuser=812345
fromdomain=sip.antisip.com
canreinvite=no
qualify=yes
nat=force_rport
type=friend

; Sip2sip
; https://mdns.sipthor.net/register_sip_account.phtml
; Als username nur Ziffern eingeben
;
; Testnummern:
; Musik: 3333
; Echo : 4444
;
register => 812345:passwort@sip2sip.info/812345
;
[sip2sip]
context=sip2sip-in
host=sip2sip.info
username=812345
secret=passwort
fromuser=812345
fromdomain=sip2sip.info
domain=sip2sip.info
outboundproxy=proxy.sipthor.net
canreinvite=no
qualify=yes
nat=force_rport
type=peer

; Opensips
; http://voip.opensips.org/account/reg/
; Anweisungen durchlesen! Als Alias nur eine Zahl verwenden, die mit 9 beginnt.
;
a912345:passwort@opensips.org:5060/a912345
;
[opensips]
context=opensips-in
host=opensips.org
username=a912345
secret=passwort
fromuser=a912345
fromdomain=opensips.org
canreinvite=no
qualify=yes
nat=force_rport
dtmfmode=rfc2833
type=friend
port=5060

; Ippi
; https://www.ippi.com/
; Kostenlos innerhalb des eigenen Ippi-Netzes
;
register => abcde:passwort@sip.ippi.com:5060/abcde
;
[ippi]
context=ippi-in
host=sip.ippi.com
username=abcde
secret=passwort
fromuser=abcde
fromdomain=sip.ippi.com
canreinvite=no
qualify=yes
nat=force_rport
dtmfmode=rfc2833
type=friend
port=5060

; Nexxtmobile, EinfachVoip
; https://www.einfachvoip.de/
;
49xxx:passwort@voip.nexxtmobile.de:5060/49xxx
;
; Testnummern:
; Begrüßungstext: 1000
; Echo          : 1001
;
[voipnexxtmobile]
context=voipnexxtmobile-in
host=voip.nexxtmobile.de
username=49xxx
secret=passwort
fromuser=49xxx
fromdomain=voip.nexxtmobile.de
canreinvite=no
qualify=yes
nat=force_rport
dtmfmode=rfc2833
type=peer
port=5060

 

Anmerkungen zu Asterisk:  Asterisk ist ein Gemeinschaftsprojekt von vielen Entwicklern und bietet viele Funktionen. Nicht alles ist durchgängig dokumentiert und manchmal treten Effekte auf, für die es keine Erklärung gibt. Dann bleibt nichts anderes übrig als zu experimentieren. Mansche Router verhalten sich auch störrisch beim Zugang ins Internet. Wichtig ist eine stabile Netzwerkanbindung, weshalb der Raspberry Pi über ein LAN-Kabel mit dem Netzwerk verbunden sein sollte.

Legt Euch bitte Sicherheitskopien an, bevor größere Änderungen vorgenommen werden, damit ihr schnell das gesamte System auf dem Raspberry wiederherstellen könnt.

Anmerkungen zu meinem Asterisk-Server: Wer gerne mit Asterisk arbeitet, möge mich unter sm5zbs ätt janson bindestrich soft punkt de gerne kontaktieren. Nur noch wenige haben Interesse an diesem außergewöhlichen Hobby.  Weiterhin suche ich technisch interessierte Teilnemer für meinen Telefon-Server, die sich gerne über alter und neuer Telefontechnik unterhalten möchten. Oft sind darunter Funkamateure, die eine weitere Alternative zur drahtlosen Kommunikation suchen und gegenüber technischen Experimenten aufgeschlossen sind.

Sinn und Zweck meines Telefonservers ist es Menschen mit gemeinsamen Interessen respektvoll zusammenzubringen, die sonst nie in Kontakt treten würden. Während Foren nur auf der reinen Sachebene funktionieren, können sich erst durch das persönliche Gespräch freundschaftliche Beziehungen entwickeln.

Wer bereits zu wenigen gehört, welche einen Account bei Sipgatge, Linphone, Sip2Sip, ippi, Opensips, Iptel oder AntiSip besitzen, hat dadurch einen kostenlosen Zugang zu meinem  Telefonserver. Also nur zu!

Viel  Freude und angenehme Gespräche wünscht Euch

Volker SM5ZBS