Daheim ist's am schönsten – zumindest was die Telefongebühren angeht. Quasselstrippen, die beruflich oder privat viel im Ausland unterwegs sind, kommen finanziell trotzdem nicht unter die Räder – wenn sie ihrem heimischen Asterisk-Server ein paar Tricks beibringen.
Seit dem 30. August gilt für das Auslandsroaming in der EU die zweite Stufe einer Verordnung, die die Gebühren für Anrufe aus dem Ausland in jedes Fest- und Handynetz auf maximal 54,74 Cent pro Minute begrenzt. Eingehende Telefonate dürfen höchstens 26,18 Cent kosten. Das ist zwar viel weniger als früher, für reisende Vieltelefonierer aber noch immer heftig. Ein Asterisk-Server zu Hause kann helfen die Reisekasse zu schonen.
Eine Möglichkeit ist Callback: Der Auslandsreisende wählt eine Telefonnummer an, die sein Asterisk bedient. Der Autor dieses Artikels benutzt dazu eine seiner zehn Rufnummern (MSNs), die ihm die Deutsche Telekom mit dem ISDN-Anschluss zugeteilt hatte. Bekommt Asterisk von einer privilegierten Nummer, beispielsweise dem eigenen Handy, einen Anruf, dann lehnt es ihn initial ab, um innerhalb weniger Sekunden zurückzurufen. Anrufe von nicht privilegierten Nummern lösen kein Callback aus. Da Asterisk den eingehenden Anruf zwar wahrnimmt, aber nicht beantwortet, entstehen keine Gebühren.
Zimmer mit Durchwahl
Der automatische Rückruf erfolgt entweder zum Handy zurück oder zu einem anderen Ziel, beispielsweise zum Hotelzimmer, wenn es per Durchwahl erreichbar ist. Ein solcher Festnetzanruf entwickelt einen besonderen Charme, wenn die VoIP-Flatrate zu Hause ausländische Festnetze einschließt. Dann ist ein Rückruf dorthin kostenlos und Weihnachtsgrüße aus dem Skiurlaub bleiben nicht auf die Erbtante beschränkt. Zumindest nicht aus Gebührengründen.
Erfolgt der Rückruf hingegen zum Handy, dann entstehen Kosten für den im Ausland ankommenden Anruf von etwa 26 Cent pro Minute. Hinzu kommen Gebühren für den Anruf ins Handynetz, das sind mit Call-by-Call-Provider über eine Telekom-ISDN-Leitung 9 bis 10 Cent je Minute. Die Summe von rund 35 Cent spart rund ein Drittel gegenüber einem direkten Handyanruf aus einem EU-Land, der den Autor pro Minute 54 Cent kosten würde. Für USA-Reisende lohnt sich Callback zum Handy allemal, denn die Gesamtkosten betragen rund 80 Cent pro Minute statt 1,49 Euro. Ein Hotelzimmer-Callback per Asterisk mit dem VoIP-Provider des Autors ist gar für konkurrenzlose 2,3 Cent zu haben.
Das Verfahren ist übrigens nicht nur geeignet direkt nach Hause anzurufen: Sobald nach dem automatischen Rückruf die PIN korrekt eingegeben wurde, die zur auslösenden Handynummer gehört, fragt Asterisk nach der Zielnummer und wählt anschließend wieder heraus (Dialout). Das Ziel darf eine deutsche Nummer sein oder ein Anschluss im britischen oder belgischen Festnetz, für die die VoIP-Flatrate ebenfalls gilt.
Rückruf per Callfile
Der Asterisk-Callback ist so implementiert, dass er auf der Call-in-Leitung den ankommenden Anruf registriert und ablehnt. Anschließend prüft er in seiner Ast-Datenbank, ob der Anrufer privilegiert war den Service zu benutzen. Im Positivfall startet er ein Perl-AGI-Skript, das ein Callfile wie in Listing 1 zum Auslösen des Rückrufs erzeugt.
|
Listing 1: |
|---|
01 # Dial parameters, including destination number and channel type 02 Channel: SIP/004419999999@sipgate0 03 04 # Call parameters 05 WaitTime: 60 06 RetryTime: 8 07 MaxRetries: 2 08 Account: Eitel_VoIP 09 10 # Where to go in the dialplan, once the connection is established 11 Context: callback 12 Extension: callback1 13 Priority: 1 14 15 # variables to be set for the dialplan 16 Set: initiator_cid=491719765432 |
Bei der vorgestellten Implementierung gehört zu jeder anrufenden Nummer eine eigene PIN. Darum muss der Rückruf prüfen, ob die vorgezeigte PIN zur Absendernummer des Anrufers passt, die den Callback ausgelöst hat. Doch Vorsicht: Diese Nummer ist nicht zwingend identisch mit dem Rückrufziel (siehe Abschnitt “ISDN statt VoIP zum Handy”). Die Lösung besteht darin, im Callfile mit
Set: initiator_cid=491719765432
beim Rückruf eine Variable zu setzen, die der Dialplan verarbeitet, sobald der Rückgerufene den Hörer abnimmt und seine PIN eingibt. Der Variablenname »initiator_cid« ist willkürlich, muss aber im Callfile auf den gleichen Wert gesetzt sein, den die Variable »CALLERID(num)« beim Call-in hatte.
Sobald das »mv«-Kommando das Callfile, das den Rückruf auslöst, in das Spoolverzeichnis »/var/spool/asterisk/outgoing« befördert hat, wählt Asterisk innerhalb von Sekundenbruchteilen das Rückrufziel an. Das Tempo ist hier aber nicht erwünscht, denn der Rückruf kommt bereits, wenn der Anrufer noch nicht aufgelegt hat – und scheitert am Besetzt.
Eine Zeitreise bringt die Lösung: Ein »touch«-Kommando setzt vor dessen Transport in das Spoolverzeichnis die Mtime des Callfile (Zeit des letzten Schreibzugriffs) 10 bis 20 Sekunden in die Zukunft. Dies erledigt das AGI-Skript oder auch der Dialplan, wie Listing 2 zeigt. Wichtig ist die korrekte Angabe der unterschiedlichen Anführungszeichen.
|
Listing 2: |
|---|
01 ; Copy template 02 exten => callback_in,n,System(cd /var/lib/asterisk/agi-bin ; cp callback1.call.org callback1.call) 03 ; Put file a couple of seconds into the future 04 exten => callback_in,n,System(cd /var/lib/asterisk/agi-bin ; touch -t `date --date='+10 seconds' '+%Y%m%d%H%M.%S'` callback1.call) 05 ; Move callfile into spool directory 06 exten => callback_in,n,System(cd /var/lib/asterisk/agi-bin ; mv callback1.call /var/spool/asterisk/outgoing) |
Listing 2 zeigt außerdem, wie man ohne AGI-Skript einen Rückruf auslöst, indem es ein vorbereitetes Callfile, hier »callback1.call.org«, einfach nur kopiert. Ein solches Callfile ließe sich nach dem Muster in Listing 1 erstellen.
Im Inland: Call-through
Anders als beim Callback-Verfahren nimmt Asterisk unter der Call-through-Nummer Anrufe vom Handy sofort an, authentifiziert den Anrufer per Absendernummer und zugehöriger PIN und lässt ihn dann wieder rauswählen. Da beide Router über Festnetznummern erreichbar sind, kostet den Autor der Anruf vom Handy dorthin nichts, zumindest solange er sich im Inland aufhält.
Von Asterisk in fremde Handynetze geht es dann per ISDN und Call-by-Call für 9 bis 10 Cent pro Minute weiter, in die erwähnten 14 europäischen Festnetze per VoIP-Flatrate sogar kostenlos. Damit tickt der Zähler beim Anruf vom Handy in ein fremdes Mobilfunk-Netz statt mit 25 maximal mit 10 Cent und bei ausländischen Festnetzen gar nicht. Zur Implementierung: Die Dialplan-Zeile
exten => dest_entry,n,GotoIf($[${phone_to_call}=~"^01[5-7]"]?callback_dialout_isdn,1:callback_dialout_sip,1)
erkennt Handys und benutzt einen regulären Ausdruck, der zu unterschiedlichen Zielen im Dialplan verzweigt.
ISDN statt VoIP zum Handy
Das Ziel »callback_dialout_isdn« wählt Mobilnummern kostensparend per Call-by-Call über ISDN an, das Ziel »callback_dialout_sip« dagegen alle Festnetz-Nummern per VoIP. »^01[5-7]« identifiziert nur deutsche Mobilnummern. Eine intelligentere Implementierung erfordert allerdings die Kenntnis ausländischer Rufnummernpläne.
Dass der Autor den Callback-Router im Ausland bald nicht mehr missen mochte, verwundert kaum. Ein Manko musste er aber beheben: Ein neues Rückrufziel konnte er anfangs nur per Notebook und SSH-Verbindung zum Asterisk-Server ändern, wozu er jedes Mal einen Hotspot ausfindig machen musste. Es lag nahe, die Umstellung des Rückrufziels per Telefon zu implementieren.
Dass der Callback-Router nie abnimmt, sondern stets zurückruft, macht die Call-in-Nummer für eine Fernkonfiguration ungeeignet. Um keine weitere MSN zu verbrauchen, bestand die Lösung darin, sowohl beim Callback-Verfahren als auch beim Call-through-Verfahren nach der PIN-Überprüfung eine Touchtone-Eingabe zuzulassen, bei der Asterisk den Anrufer zur Neukonfiguration der Rückrufnummer führt. Unterlässt er die Eingabe, dann geht es nach 2 Sekunden wie beschrieben weiter.
Aus Sicherheitsgründen lässt sich die Nummer des Handys, das den Callback auslöst, nicht per Telefon ändern. Denn andernfalls dürften nach einer Fehleingabe wildfremde Leute auf Kosten des Asterisk-Betreibers telefonieren. Wer sich jedoch bei der Konfiguration für das Callback-Verfahren versehentlich mit einer untauglichen Rückrufnummer ausgesperrt hat, der ruft eben nochmals unter der Call-through-Nummer an und macht einen zweiten Konfigurations-Anlauf für das Callback-Verfahren.
Cent-Fuchser, Vieltelefonierer oder echte Asterisk-Fans, die die vorgestellten Tricks umsetzen, sollten künftig bei der Auswahl eines Hotels ein weiteres Kriterium beachten: Ihr Zimmer muss per Durchwahl erreichbar sein. (jk)
|
Der Autor |
|---|
|
|






