[HowTo] Fehlende Funktionen der FBF mittels minimalem Asterisk nachrüsten

Also, ich habe mal nachgeschaut. Es müsste mit meiner Callbacklösung relativ einfach gehen, wenn man in den Incomingkontext etwas in der Art:
Code:
exten => _040123456XXX.,1,
exten => _040123456XXX.,1,set(Anrufer=${EXTEN})
; Die Rufnummer muss ins internationale Format gewandelt werden
exten => _040123456XXX.,2,GotoIf($[${Anrufer:0:2}=00]?20:3)
exten => _040123456XXX.,3,GotoIf($[${Anrufer:0:1}=0]?4:10)
exten => _040123456XXX.,4,set(Anrufer=0049${Anrufer:1})
exten => _040123456XXX.,5,goto(20)
exten => _040123456XXX.,10,set(Anrufer=00${Anrufer})
exten => _040123456XXX.,11,goto(20)
; Jetzt merkt sich der Asterisk die (internationalisierte) Zielnummer für den Nutzer 1
exten => _040123456XXX.,20,Set(DB(callback/nummer1)=${Anrufer})
exten => _040123456XXX.,21,wait(1)
einbaut (mit 040123456 als Grundnummer von Sipgate Trunking) und im Übrigen mein Callthough-Beispiel nutzt.

Da dies natürlich zu einem Anruf auf 004940123456xxx führen würde, gehört die Übersetzung zum eigentlichen Ziel in den zugehörigen ausgehend1-Kontext:

Code:
exten => _004940123456001.,1, Dial(SIP/0049eigentlichesziel1@eingerichteterausgehenderdellmont,,T)
exten => _004940123456002.,1, Dial(SIP/0049eigentlichesziel2@eingerichteterausgehenderdellmont,,T)
...

Praktischerweise pakt man das in eine eigene Datei ("zieluebersetzungausgehend1.conf"), die man in ausgehend1 via #include zieluebersetzungausgehend1.conf in ausgehend1 einbindet.

Im eigentlichen Callbackteil meiner Beispielskripte müsste man die Variablen, in denen die Rückrufnummern und -wege hinterlegt sind, natürlich durch feste Werte ersetzen.

Damit wäre die Triggerlösung, die allerdings nur auf Nummern funktioniert, die man auch in der Datei hinterlegt hat, dafür aber sehr bequem ist, quick-and-dirty machbar.


Für ein traditionales Callback nimmt man zusätzlich die Standardlösung, wie man sie allehauf im Netz findet - z.B. mit der Triggernummer ...000.

Eine Alternative wäre natürlich auch, statt der zieluebersetzungausgehend1.conf die astdb zu verwenden:
Code:
exten => _004940123456XXX.,1, Dial(SIP/${DB(kurzwahl/${EXTEN})}@eingerichteterausgehenderdellmont,,T)
wobei man DB(kurzwahl/${EXTEN}) natürlich erstmal mit den Zielen befüllen müsste. Das könnte man per Skript lösen.

Vorteil dabei wäre, dass man die so erweitern könnte, dass man bei Anruf auf eine noch nicht belegte Kurzwahl in eine Art Programmiermodus käme: Es würde ein klassisches Callback ausgelöst, bei dem man per dtmf das Ziel programmiert. Legt man danach auf, wird die Kurzwahl gespeichert.


Achtung: Ich habe das ganze nicht getestet, sondern nur logisch aus dem bereits Vorhandenen entwickelt. Das soll also eher als Experimentiermaterial dienen.
Ich empfehle auch, erst das ganze wie vorgesehen mit BoxToGo nach den Howto einzurichten und zu testen und sich erst dann an die Erweiterung auf DirectTriggerCallback zu erweitern.
 
Zuletzt bearbeitet:
Callback ("Lockruf") mit Whitelist:

extensions.conf
Code:
[ankommend]
exten => 0815,1,Set(CALLERID(num)=${IF($[$["${CALLERID(num):0:1}"="0"] & ["${CALLERID(num):1:1}"!="0"]]?0049${CALLERID(num):1}:${CALLERID(num)})})  ; Callerid ins internationale Format umwandeln
 same => n,ExecIf($["${CALLERID(num)}"=""]?HangUp())  ; legt auf, wenn die Callerid leer ist (zur Sicherheit, damit grep keinen Blödsinn machen kann)
 same => n,Set(permission=${SHELL(cat /etc/asterisk/callback_permissions | grep ${CALLERID(num)})})  ; sucht in /etc/asterisk/callback_permissions nach der Callerid
 same => n,ExecIf($["${permission}"=""]?HangUp())  ; legt auf, wenn die Callerid nicht in der Liste steht
 same => n,Ringing()
 same => n,TrySystem(/var/spool/asterisk/callback.sh ${CALLERID(num)} &)  ; Skript im Hintergrund ausführen, das das Callfile erzeugt
 same => n,HangUp()

[callback]
exten => s,1,Ringing()
 same => n,Answer()
 same => n,Playback(beep)
 same => n,WaitExten(10)
exten => _X.,1,Goto(ContextFürAbgehendeAnrufe,${EXTEN},1)  ; hier geht es mit der gewählten Nummer in den normalen Context für abgehende Anrufe

callback.sh (chmod +x nicht vergessen)
Code:
#!/bin/sh
sleep (5)
echo "Channel: SIP/NameDesAusgehendenPeerFürCallback/$1">/var/spool/asterisk/callback_$1.call   # mehr dazu unter "Asterisk Autodial"
echo "Context: callback">>/var/spool/asterisk/callback_$1.call
echo "Extension: s">>/var/spool/asterisk/callback_$1.call
echo "Priority: 1">>/var/spool/asterisk/callback_$1.call
echo "MaxRetries: 0">>/var/spool/asterisk/callback_$1.call
echo "WaitTime: 20">>/var/spool/asterisk/callback_$1.call
chmod 0777 /var/spool/asterisk/callback_$1.call
mv /var/spool/asterisk/callback_$1.call /var/spool/asterisk/outgoing/callback_$1.call

Wer bei Andres Kurzwahl-Callthrough nicht mit Datenbanken (AstDB, ODBC) arbeiten möchte, auch dafür kann man ein normales Textfile auslesen. In den normalen Dialplan includen würde ich das nicht, das kann komische Effekte geben.
Code:
exten => _0815XXX,n,Set(ziel=${SHELL(cat /etc/asterisk/kurzwahlen | grep ${EXTEN:-3}:)})
 same => n,ExecIf($["${ziel}"=""]?HangUp())
 same => n,Set(ziel=${CUT(ziel,:,2):1})  ; liest aus "111: 01234" die Zielnummer "01234"
 same => n,Goto(ContextFürAbgehendeAnrufe,${ziel},1)

Das kann man natürlich auch ins Callback einbauen, wenn man nach dem Rückruf nicht die ganze Zielnummer per DTMF füttern will (was durchaus lästig ist).

Gepaart (Lockruf Callback mit Durchwahl) wäre der Skriptaufruf mit Callerid und Ziel als Parameter dann
Code:
exten => _0815XXX,n,TrySystem(/var/spool/asterisk/callback.sh ${CALLERID(num)} ${ziel} &)
und
Code:
echo "Context: ContextFürAbgehendeAnrufe">>/var/spool/asterisk/callback_$1.call
echo "Extension: $2">>/var/spool/asterisk/callback_$1.call
AstDB oder so Sachen zum "Merken" sind hier imho nicht notwendig bzw. stören bei Mehrfachnutzung.

@Andre, die Umformatierung einer Zielnummer im abgehenden Context kann man universeller gestalten.
Code:
[abgehend]
exten => _ZX.,1,Goto(0049EigeneOrtsvorwahl${EXTEN},1)  ; setzt bei 123 die eigene Ortvorwahl vorne dran
exten => _0ZX.,1,Goto(0049${EXTEN:1},1)  ; setzt bei 0123 die Landesvorwahl vor
exten => _+ZX.,1,Goto(00${EXTEN:1},1)  ; wandelt + in 00 um
exten => _00X.,1,JetztGehtsLos...  ; das ist der eigentliche Dialplan, hier ist immer einheitlich eine internationale Nummer

Dann ist es egal mit welcher Formatierung der Context angesprungen wird, und es entfallen die GotoIf Verschachtelungen.
 
Ist schon klar, dass es einfacher geht - ist halt nach und nach entstanden - und weils funktioniert schlicht geblieben...

Bei direktem Trigger habe ich eine Anruferidentifizierung weg gelassen, da das Missbrauchspotential gering ist - man wird ja immer auf das eigene Handy zurück gerufen und kann nur definierte Ziele erreichen.
Anders siehts aus, wenn man universeller werden will, also von verschiedenen Geräten Callback auslösen und beliebige Ziele erreichen. So etwas brauche ich aber nicht; entweder geht der Rückruf auf mein Handy oder auf ein normales Telefon (Büro, Hotel). In letzterem Fall hat man aber quasi immer Internet, um die bequeme BoxToGo Lösung zu nutzen...
 
Thema Parallelfunktion:

Für die Anrufweiterleitung beim Mobilprovider ist es besser **004*nummer# zu nehmen statt wie oben von mir erwähnt **62*nummer#.
Der Nachteil bei letzterem ist, dass man nicht mehr vom Handy daheim anrufen kann. Mit ersterem klappt's einwandfrei.

Übrigens:
Die SIP-URI Anrufe bleiben mittlerweile dauerhaft aus. :)
Vermutlich deshalb, weil ich nach der Änderung von do not register auf yes mit dem FBEditor auf Empfehlung von erik die Fritz nochmal aus/eingeschaltet habe.
Versteh ich zwar nicht, denn bei der FBEditoränderung läuft ja auch ein vollständiger Ladevorgang ab. Sei's drum, so geht's. :)
 
Lebensdauer der SD-Karte verlängern

In Foren ist mittlerweile häufiger von Problemen mit der SD-Karte zu lesen, wenn diese über längere Zeit im Raspberry Pi zum Einsatz kam. Um das Risiko eines fehlerhaften Dateisystems oder defekten SD-Karte erheblich zu reduzieren, können verschiedene Maßnahmen ergriffen werden.
Weiter hier:
http://www.datenreise.de/raspberry-pi-stabiler-24-7-dauerbetrieb/

SD-Karten sollen ja nur begrenzt oft beschreibbar sein.
Seit dem Befolgen der Empfehlungen sind die /var/log/messages stark reduziert.
Lediglich 2 7170 machen alle halbe Stunde Einträge. Gar keine Einträge machen die 7390 und die 7360. Das war aber nicht immer so. Erst seit der letzten Firmware meine ich sind die 7390- und 7360-Einträge verschwunden.

[Feb 16 06:05:07] NOTICE[2254] chan_sip.c: Received SIP subscribe for peer without mailbox: 20
[Feb 16 06:05:07] NOTICE[2254] chan_sip.c: Received SIP subscribe for peer without mailbox: 21
[Feb 16 06:31:47] NOTICE[2254] chan_sip.c: Received SIP subscribe for peer without mailbox: 50
[Feb 16 06:32:07] NOTICE[2254] chan_sip.c: Received SIP subscribe for peer without mailbox: 20
[Feb 16 06:32:07] NOTICE[2254] chan_sip.c: Received SIP subscribe for peer without mailbox: 21
[Feb 16 06:58:47] NOTICE[2254] chan_sip.c: Received SIP subscribe for peer without mailbox: 50
20, 21 und 50 sind die Nebenstellen-Nummern des Asterisk/Telefonnummern der 2 Fritzen.

Die messages werden zwar in den Arbeitsspeicher umgeleitet, können also keinen Schaden mehr auf der SD-Karte anrichten, und einmal pro Woche durch einen Cronjob gelöscht.
Trotzdem, weiß jemand ob, besser wie man den 7170-Fritzen diese Meldungen abgewöhnen kann?
 
Zuletzt bearbeitet:
Die Meldungen besagen, dass die Fritzbox versucht MWI zu abonnieren, dem Client in Asterisk aber keine Mailbox zugewiesen ist. Damit das aufhört, musst Du in der voicemail.conf eine Mailbox anlegen und diese in der sip.conf den Clients mit mailbox= zuordnen. Dabei können alle Clients dieselbe Mailbox haben.

Man kann in der logger.conf anpassen, ob und wie viel Logging man möchte. Nach dem ändern asterisk -rx 'logger reload' ausführen.
 
Alternativ kann man auch per FBEditor MWI der Accounts, die sich am Asterisk anmelden, abschalten.
 
Hallo rentier-s und Andre,

super, die Meldungen sind weg :)
Vielen Dank!
Habe erst mal den schnellen Weg der account-Änderung genommen.
Interessehalber werde ich mir auch mal eine Mailbox einrichten und die logger.conf mir zur Brust nehmen.
Ein Klasseforum das ippf!
 
Mailbox einrichten habe ich bei meinem Asterisk bewusst sein gelassen - die Funktionen der FBF sind da aus meiner Sicht völlig ausreichend.
Im Callbackteil habe ich ja auch drin, direkt zurück gerufen und mit der FBF-Mailbox verbunden zu werden.
Entsprechend verwende ich beim Asterisk auch kein logging - die Anrufliste der FBF reicht für meine Zwecke völlig.

Wie schon öfter erwähnt, ist meine Lieblingsapp BoxToGo pro - seitdem ich Android habe. Damit hat man alle Funktionen der FBF absolut übersichtlich im Griff. Daher ist mir der Threadtitel auch Programm: Minimalismus beim Asterisk, Maximalismus bei der Nutzung der FBFeigenen Funktionen.
Daher bin ich auch so froh, Callback mit der Wahlhilfe triggern zu können. Es ist nichts dagegen einzuwenden, auch die Version mit Triggeranruf/SipgateTrunking aufzunehmen, auch generell Accounts im Asterisk zu registrieren und die FBF nur an den Asterisk anzumelden ist O.K. im Sinne dieses Threads.

Sobald aber die Themen Voicebox, Mailversand oder Fax ins Spiel kommen, ist das mit einem Asterisk zwar interessant, aber besser in einem anderen Thread aufgehoben. Sonst wirds hier schnell unübersichtlich.
 
Für ein traditionales Callback nimmt man zusätzlich die Standardlösung, wie man sie allehauf im Netz findet - z.B. mit der Triggernummer ...000.

Hast Du da mal einen Link?

Ansonsten: Uff, da wühle ich mich bei Gelegenheit mal durch, wird aber etwas dauern... Vielen Dank dafür!
 
Im letzten Monat bei 1&1 die Tabletflat (e+, bei mir besser als d2) mit 3GB/Mon für 5,37€/Mon erstanden. Da sind natürlich keine Freiminuten drin, aber Internet satt.
Hallo Andre,
ich suche so etwas auch. Welcher Vertrag war das genau? Kann es sein, dass es dieses Angebot nicht mehr gibt? Ich sehe momentan nur 1, 2 oder 5 GB zu ganz anderen Preisen.
 
Jipp, das Angebot gabs bei 1&1 nur im Januar.
Muss man halt beobachten, wann wieder etwas vergleichbares kommt.
Generell sind reine Notebook-/Tabletflats m.E. am günstigsten, denn man bekommt deutlich mehr Datenvolumen fürs Geld. Auch im Ausland kann man meist günstige Prepaidkarten bekommen.
Dank Parallelruf und Callback ist die abweichende Handynummer ja kein Problem, nach außen hat man ja immer Festnetz.
 
Hallo Andre,
erstmal danke für deine Bemühungen und deine ausführlichen Beiträge.
Pbxes.org hat mich verabschiedet und mit dem normalen Callthrough der FBF bin ich nicht voll zufrieden,
da es mit der Übertragung der DTMF-Töne nicht immer korrekt klappt.
Ich überlege deshalb auch deine hier vorgestellte Lösung z.B. für Callthrough einzusetzen.
Meine Frage hierzu:
Funktioniert die Übertragung der Rufnummer mittels Callthrough hier problemlos?
 
Für Callthrough nutze ich z.Zt. noch die Originalfunktion der FBF. Die eigene Rufnummer lässt sich dabei übermitteln.
Für Direct-Callthrough (mit Sipgate Trunking) kann man natürlich auch die Absendenummer setzen.
Bei Callback (mit Wahlhilfe/BoxToGoPro) nehme ich ausgehend die normalen Wahlregeln meines Asterisk, auch mit Eufnummernübermittlung.
In allen Fällen kann ich im Asterisk einstellen, ob meine Handy- oder Festnetznummer übermittelt werden soll.

Ich übermittle immer meine Festnetznummer. Eingehende Anrufe werden über Parallruf Überfall signalisiert, mit Übermittlung der original Anrufernummer (nur bei Sonderrufnummern geht die Übermittlung nicht)
 
Danke für deine Ausführungen, war mir zum Grossteil auch klar, dass dies so funktioniert.
Ich habe mich aber nicht klar genug ausgedrückt - sorry.
Eigentlich wollte ich wissen, ob die Übermittlung der DTMF-Sequenzen (insbesondere die des anzurufenden Teilnehmers)
mit deiner Lösung besser als über die FBF funktioniert.
 
Im ersten Post steht, dass man die Interneteinwahl und SIP-Anmeldung usw alles der FBF überlassen soll und den Asterisk nur als Nebenstelle an der FBF betreiben sollte.

Kann man damit aber z.B. die Rufnummernauswertung der Sipgate Basic-Accounts überhaupt machen oder geht das nur, wenn der Asterisk am Netz hängt und die FBF nur als Nebenstelle angelegt wird? Wieviele Verbindungen sind denn eigentlich gleichzeitig möglich, wenn der Asterisk als Nebenstelle an der FBF hängt? Gibts da Beschränkungen?
 
Nummernauswertung geht dann nicht, außerdem hat man dann nur zwei / drei Leitungen. Ich würde nie meinen Asterisk als Nebenstelle einer Fritzbox betreiben - immer umgekehrt.
 
Die Lösung funktioniert auf beiden Wegen.

Für den Parallelruf hängt der Asterisk an der FBF, damit diese mitbekommt, wenn der Anruf woanders entgegen genommen wird (ist dann kein verpasster Anruf).
Bei Callback mittels Wahlhilfe macht die FBF eh nur einen fehlschlagenden Wahlversuch als Nebenstelle am Asterisk, das eigentliche Callback macht der Asterisk direkt.
Für DirectCallthrough muss eh Sipgate Trunking im Asterisk angemeldet sein.

Für beide Anwendungszenarien spielt die Beschränkung auf max 5 VoIP-Verbindungen (wenn die FBF "zwischen" VoIP-Provider und Asterisk hängt also zwei Gespräche) keine Rolle. Eswird allerdings das Risiko einer eingeschränkten Sprachverbindung reduziert.

Was ansonsten als Voipanbieter genutzt wird, ist nicht Gegenstand dieses Threads. Natürlich kann man auch da und für die Wahlregeln einen Asterisk einsetzen. Das kann auch der gleiche sein, den man für diese Funktionen nutzt.

Will man nur die beiden bisher fehlenden Funktionen (Weiterleitung/Parallelruf mit Nummernübermittlung, Callback mit BoxToGoPro) nachrüsten, braucht man sich mit Asterisk nicht vertieft befassen.


Zum DirectCallthrough: Damit hatte ich mich vor Jahren in einem anderen Thread beschäftigt, eben wegen häufiger DTMF-Fehlerkennung. Der Trick besteht darin, einen Sipgate Trunking 2 Account zu verwenden, den es kostenlos gibt. Aus einer Rufnummer 04012345678 wird dann der "Block" 04012345678000-04012345678999. "Block" in Anführungsstrichen, weils es in engerem Sinne kein Block ist; auch 04012345678, 040123456789, 0401234567812 ... sind zulässig.
Im Prinzip macht man im Asterisk nichts anderes, als Anrufe, die auf diese Nummern gehen, über einen Billiganbieter an ein anderes Ziel umzuleiten; allerdings nur, wenn sie von einer eigenen Handynummer kommen.
Trägt man z.B. ein:
Code:
exten => 00494012345678001,1,Dial(Local/0049175987654321@ausgehend,50)
werden eingehende Anrufe auf der eigenen Rufnummer 04012345678001 an die Handynummer 0175987654321 umgeleitet; verwendet wird hier der Kontext "ausgehend", bei dem ich beispielsweise meine Festnetznummer übermittle und je nach Ziel (Festnetz/Mobil/Ausland/SIP-Uri) die Wahlregeln drin habe.
Man hat quasi ein "Kurzwahlbuch" als config, die man mit include in die extensions.conf einbindet.

Was ich seinerzeit auch getestet habe:
Alle Anrufe der Handys, die auf das Muster 00494012345678XX passen, über die Fritzbox an **7XX weiterleiten.
Dadurch kann man das Telefonbuch der Fritzbox bequem über Webinterface benutzen, statt immer das "Telefonbuch" in einer Textdatei anzulegen. Seitdem ich aber nicht mehr das FBF-Telefonbuch mit den Kurzwahlen, sonder google nutze, hat sich das erstmal erledigt.

Auf dem Handy hinterlegt man dann als "Mobilnummer" der Freundin z.B. 04012345678001 und landet, weil es aus Sicht des Mobilanbieter ein Anruf ins Festnetz ist, kostenlos am Asterisk, der einen sofort über z.B. CheapVoIP mit dem Handy der Freundin für 0,6Cent/Min verbindet. Ohne DTMF-Nachwahl, ohne Fehlerkennungen und ohne signifikant längeren Verbindungsaufbau.
 
Zuletzt bearbeitet:
Hallo, ich muß mich nochmal dranhängen weil anscheinend nur hier Leute sind die mein Problem überhaupt nachvollziehen können: Bis letzte Woche hatte ich den Raspberry für den Parallelruf via Cheapvoip im Einsatz und war sehr zufrieden. Dann habe ich meinen Anschluß auf Hybrid umgestellt, was ja den Einsatz des Speedport Hybrid erfordert. Die vorhandene Fritzbox managt weiter alle Telefonie im Client-Betrieb, was inzwischen auch sehr gut klappt (der Speedport ist dafür wirklich nicht zu gebrauchen).

Beim Asterisk habe ich die IP-Adressen angepaßt, die Rufe kommen dort auch an, aber der SIP-URI Anruf via Cheapvoip schlägt fehl. Geänderte Ports und Portweiterleitungen haben nicht geholfen, ein ganzer Tag wildes Testen, umkonfigurieren und neu starten hat nichts gebracht.

Weiß hier jemand was man im Asterisk einstellen muß damit dieser Speedport VoIP-Calls nach draußen zuläßt? Übrigens, ein Test mit Phoner lite zeigte, daß es grundsätzlich funktionieren muß.
 
Ohne Logs kann man bestenfalls Vermutungen anstellen. Öffne das CLI mit asterisk -rvvvvv und poste das, was bei einem Anruf dort passiert.
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.