Asterisk-Testnummer zum Prüfen der Sprach- und Verbindungsqualität

7.12.2021

Mit dieser Testnummer für Asterisk lässt sich die eigene Stimme abhören, um die Tonqualität seines Telefons beurteilen zu können. Sie funktioniert selbst mit alten Wählscheibentelefonen. Ein Muss für jeden, der alte und neue Telefone restauriert und repariert. Bis die Nummer zu meiner Zufriedenheit lief, hat es eine Weile gedauert.

Nach dem Anwählen der Testnummer erfolgt eine kurze Ansage, die den Anrufenden auffordert ein paar Sätze nach dem Pfeifton zu sprechen, die er durch Drücken der Raute-Taste abhören kann. Nach dieser Ansage wird demnach eine Audiodatei angelegt, die sich durch Drücken der Rautetaste (#) abhören lässt. Die Dateien werden automatisch gelöscht. In der Version 1 geschieht dies unmittelbar nach dem Abhören, in der Version 2 mit einer Zeitverzögerung von 3 Minuten. Die Funktion dieser Testnummer entspricht der Testnummer 10005 bei Sipgate. Getestet wurde der Code auf Asterisk 16.2.1 und ursprünglich auch auf Asterisk 1.6. Er lässt sich also für viele Asterisk-Versionen anpassen.

Zu beachten ist, dass je nach Linux-Version die erzeugten Audiodateien in anderen Ordnern abgelegt werden.

Damit es funktioniert, müssen alle Zugriffsrechte für den entsprechenden Ordner freigegeben sein, auf dem die Dateien der Sprachaufzeichnung erzeugt, abgehört und gelöscht werden.

Um die Berechtigungen des Ordners sounds in Raspbian zu ändern, mit der rechten Maustaste auf die betreffenden Ordner klicken, dann “Dateieigenschaften” auswählen und diese wie im Bild zu sehen konfigurieren. Asterisk 16.2.1 legt die Sound-Dateien wie im Bild zu sehen ab.

Wer Wählscheibentelefone oder alte Tastentelefone nach dem Impulswahlverfahren testen möchte, hat keine Möglichkeit den DTMF-Ton der Rautetaste (#) auszulösen. Macht nichts. Nach 30 Sekunden schaltet sich die Aufzeichnung ab und danach ist  sie automatisch zu hören.

Die Testnummer funktioniert auch mit alten Wählscheibentelefonen. Einfach 30 Sekunden bis zum automatischen Ende der Aufzeichnung warten und dann seine eigene Stimme abhören. Es handelt sich auf dem Bild um ein schwedisches Wählscheibentelefon. Wegen der abweichenden Beschriftung der Ziffern müsste man für die Anwahl der 1000 die 0999 wählen, wenn man sich an die aufgedruckten Ziffern orientiert.

Version 1: Der nachfolgende Code gehört in die extensions.conf und besitzt die Telefonnummer 1000.

; EIGENE SPRACHAUFZEICHNUNG ANHOEREN UEBER DIE NUMMER 1000 - Version 1
;
; Ansage anhoeren und nach dem Piepton ein paar
; Sätze sprechen. Dann die Raute-Taste klicken
; und die eigene Stimme abhören.
; https://www.voip-info.org/asterisk-cmd-record/
; https://www.asteriskguru.com/tutorials/record.html
; Syntax Record(filename:format|silence[|maxduration][|option])
; The sound file will be saved in /var/lib/asterisk/sounds in older Versions
; with the name asterisk-recording0, asterisk-recording1, etc.
;
; Hier gehts los.
exten => 1000,1,System(rm /usr/share/asterisk/sounds/*asterisk-recording*)
; Obige Zeile nicht notwendig.
; Obige Zeile löscht eventuell vorhandene Audio-Aufzeichnungen, die durch vorzeitiges
; Auflegen des Hörers verblieben sind. Kann zu Problemen führen, wenn mehrere Teilnehmer
; gleichzeitig diese Testnummer benutzen, was aber kaum vorkommt. Auf großen Servern sollten ; die Dateien nach einer bestimmten Verweildauer automatisch gelöscht werden, oder nachts 
; zu einer bestimmten Uhrzeit.
exten => 1000,n,Set(TIMEOUT(absoulute)=120) ; trennt zur Sicherheit die Verbindung auf jeden Fall nach 120 Sekunden
exten => 1000,n,Ringing()
exten => 1000,n,Wait(3)
exten => 1000,n,Playback(/usr/share/asterisk/sounds/eigene/SprechenSie)
exten => 1000,n,Answer()
exten => 1000,n,Wait(1)
exten => 1000,n,Record(asterisk-recording%d:alaw,10,30,n)
; Anmerkungen zum obigen Record-Befehl: 
; wird in Asterisk 16.1 auf /usr/share/asterisk/sounds gespeichert.
; alle Zugriffsrechte für diesen Ordner vergeben, damit Abspielen u. Auzeichnung funktioniert.
; siehe https://das-asterisk-buch.de/1.6/applications-record.html
; %d sorgt im Beispiel für eine fortlaufende Nummerierung des Dateinamens
; alaw bedeutet im Beispiel Aufzeichnung im Format alaw
; 10 bedeutet im Beispiel Abschaltung nach 10 Sekunden Stille
; 30 bedeutet im Beispiel die maximale Dauer der Aufzeichnung
; n sorgt im Beispiel dafür, dass nach Ablauf des maximalen Zeit
; die Aufnahme gespeichert wird. Sie wird deshalb automatisch abgespielt.
; Dadurch können auch Telefone nach dem Impulswahlverfahren getestet werden,
; was bei Telefonen mit Wählscheiben und manchen alten Tastentelefonen der Fall ist.
exten => 1000,n,Wait(2)
exten => 1000,n,Playback(${RECORDED_FILE}) 
exten => 1000,n,Playback(beep) 
exten => 1000,n,System(sleep 1) ; 1 Sekunde Pause zur Sicherheit
exten => 1000,n,System(rm /usr/share/asterisk/sounds/*asterisk-recording*)
; obige Zeile sorgt durch den Linux-Befehl rm, dass im Ordner
; laut Pfadangabe alle Dateien gelöscht werden, die asterisk-recording in
; ihrem Namen enthalten.
exten => 1000,n,System(sleep 1) ; 1 Sekunde Pause zur Sicherheit
exten => 1000,n,Playback(/usr/share/asterisk/sounds/eigene/VielenDank)
exten => 1000,n,Hangup()
; Ende des Echo-Tests
; https://www.voip-info.org/asterisk-tips-testing-number/
; https://www.voip-info.org/asterisk-tips-and-tricks

Die Soundfiles für die Anweisungen: Sie wurden mit https://ttsmp3.com/ mit der Sprecherin “Vickie” als MP3-Files erzeugt und dann auf https://g711.org/  nach der Standardeinstellung  umgewandelt. Die MP3-Files müssen konvertiert werden, da sich die Zeitverzögerung beim Abspielen von MP3-Files störend bemerkbar machen kann.

Die beiden Soundfiles für die Ansage in deutscher Sprache, die zur Anwendung kommen: Sie sind im Ordner “/usr/share/asterisk/sounds/eigene” untergebracht, der anzulegen ist.

Download: Sprachdateien-Verbindungstest.zip

Audio-Datei “SprechenSie”:

Audio-Datei: “Vielen Dank”:

Audio-Dateien der eigenen Sprachaufzeichnungen: Sie werden fortlaufend mit den Datei-Namen asterisk-recording0, asterisk-recording1, asterisk-recording3 und so weiter angelegt. Diese Dateien werden automatisch gelöscht, wie es im  Script-Kommentar erklärt ist. Nach dem Fernmelde-Geheimnis darf niemand die Dateien abhören. Abgesehen davon verhindert dies, dass die SD-Karte des Raspberry Pi eines Tages überläuft.

Wenn die 1088 die 1000 anruft, ist im Asterisk-CLI folgendes zu sehen:

Das ist im Asterisk-CLI zu sehen, wenn die 1088 die Testnummer 1000 anruft (für eine Großdarstellung auf das Bild klicken). Es ist ein etwas älteres Script mit einer anderen Reihenfolge der Dateilöschung.

Verbesserte Version 2 vom 8. Dezember 2021: Es muss ein Ordner /usr/share/asterisk/sounds/tausend angelegt werden und dieser muss alle Freigaben erhalten. Der Linux-Befehl

System(find /usr/share/asterisk/sounds/tausend -name "*.alaw" -type f -mmin +3 -delete)

wird gleich nach der Anwahl ausgeführt und sorgt dafür, dass alle Dateien im Ordner “tausend” mit der Datei-Endung “alaw” gelöscht werden, wenn sie älter als 3 Minuten sind. Diese werden also gelöscht, sobald jemand die 1000 wählt. Das hat den Vorteil, dass diese Dateien mindestens 3 Minuten erhalten bleiben und sie nicht durch einen anderen Anrufer zufällig gleich nach der Aufnahme gelöscht werden können. Selbst bei hohem Verkehrsaufkommen hält sich die Anzahl der nicht gelöschten Dateien in Grenzen.

; EIGENE SPRACHAUFZEICHNUNG ANHOEREN UEBER DIE NUMMER 1000
;
; Version 2 vom 8.Dez.2021
; auf Asterisk 16.2.1 und Raspbian für Raspberry Pi getestet
; Es muss ein Ordner /usr/share/asterisk/sounds/tausend angelegt werden
; und dieser muss alle Dateifreigaben erhalten.
; Der Befehl System(find /usr/share/asterisk/sounds/tausend -name "*.alaw" -type f -mmin +3 -delete)
; sorgt dafür, dass Dateien mit der Endung alaw gelöscht werden, wenn sie 
; älter als 3 Minuten sind. Diese werden gelöscht, sobald jemand die 1000 wählt.
;
; Funktion: 
; Ansage anhoeren und nach dem Piepton ein paar
; Sätze sprechen. Dann die Raute-Taste klicken
; und die eigene Stimme abhören.
; https://www.voip-info.org/asterisk-cmd-record/
; https://www.asteriskguru.com/tutorials/record.html
; Syntax Record(filename:format|silence[|maxduration][|option])
; The sound file will be saved in /var/lib/asterisk/sounds in some older Versions
; with the name asterisk-recording0, asterisk-recording1, etc.
; 
exten => 1000,1,System(find /usr/share/asterisk/sounds/tausend -name "*.alaw" -type f -mmin +3 -delete)
; es muss ein neuer Unterordner "tausend" angelegt werden, der mit allen Freigaben versehen ist.
; alle Dateien mit der Endung alaw werden gelöscht, wenn sie älter als 3 Minuten sind.
; siehe  https://www.baeldung.com/linux/delete-files-older-than
exten => 1000,n,Set(TIMEOUT(absoulute)=120) ; trennt zur Sicherheit die Verbindung auf jeden Fall nach 120 Sekunden
exten => 1000,n,Ringing()
exten => 1000,n,Wait(3)
exten => 1000,n,Playback(/usr/share/asterisk/sounds/eigene/SprechenSie)
exten => 1000,n,Answer()
exten => 1000,n,Wait(1)
exten => 1000,n,Record(/usr/share/asterisk/sounds/tausend/asterisk-recording%d:alaw,10,30,n)
; Anmerkungen zum obigen Record-Befehl: 
; wird auf /usr/share/asterisk/sounds/tausend gespeichert.
; alle Zugriffsrechte für diesen Ordner vergeben, damit Abspielen u. Auzeichnung funktioniert.
; siehe https://das-asterisk-buch.de/1.6/applications-record.html
; %d sorgt im Beispiel für eine fortlaufende Nummerierung des Dateinamens
; alaw bedeutet im Beispiel Aufzeichnung im Format alaw
; 10 bedeutet im Beispiel Abschaltung nach 10 Sekunden Stille
; 30 bedeutet im Beispiel die maximale Dauer der Aufzeichnung
; n sorgt im Beispiel dafür, dass nach Ablauf des maximalen Zeit
; die Aufnahme gespeichert wird. Sie wird deshalb automatisch abgespielt.
; Dadurch können auch Telefone nach dem Impulswahlverfahren getestet werden,
; was bei Telefonen mit Wählscheiben und manchen alten Tastentelefonen der Fall ist.
exten => 1000,n,Wait(2)
exten => 1000,n,Playback(${RECORDED_FILE}) 
exten => 1000,n,Playback(beep)                   
exten => 1000,n,Playback(/usr/share/asterisk/sounds/eigene/VielenDank)
exten => 1000,n,Hangup()
; Ende des Echo-Tests
; https://www.voip-info.org/asterisk-tips-testing-number/
; https://www.voip-info.org/asterisk-tips-and-tricks
Asterisk-CLI nach dem Ausführen des obigen Skripts, wenn die 1009 die 1000 angerufen hat.

Auf einem Raspberry Pi lässt sich ein kompletter Telefonserver betreiben, der seinen Teilnehmern über Landesgrenzen hinweg kostenloses Telefonieren von unterwegs oder daheim ermöglicht.
Asterisk-Telefonserver auf einem Raspberry Pi – Installation, Konfiguration, Programmierung, SIP, IAX2, AGI-Skripte, Sicherheit und Tipps zum praktischen Betrieb – 2.11.2022: Diese Seite richtet sich an jene, welche einen Asterisk-Telefon-Server auf einem Raspberry Pi betreiben möchten und später ein kleines Netzwerk aus Asterisk-Servern planen, um ein eigenständiges Telefonnetz aufzubauen. Los geht es mit der Installation von Raspbian und Asterisk auf einem Raspberry Pi und dann nach Lust und Laune immer tiefer in die Programmierung von Asterisk. Die Themen werden laufend erweitert.

Selbstverständlich muss es nicht unbedingt ein Raspberry Pi sein. Andere Linux-Rechner gehen auch. – weiter