Neu: Call-Back, Direct-Call-Back und Call-Through und das mit mehreren Handys
So,
nach einer langen Nacht ist´s vollbracht:
Ein Skript, welches flexibel ermöglicht, call-back von verschiedenen Quellen aus zu nutzen, abhängig von der Triggernummer direkt eine Verbindung zu einem anderen Teilnehmer herzustellen oder -wie hier schon gewünscht- ein callthrough für andere Nutzer wieder herzustellen.
Sinn und Zweck
Manche Menschen finden das bisherige call-back unkomfortabel. Daher ist es nun möglich - unter Opferung von fon2 - sich beim call-back gleich mit einem voreingestellten Teilnehmer verbinden zu lassen. Wenn man 10MSN hat, kann man so 9 davon nutzen, um direkten Verbindungsaufbau zu triggern, eine nutzt man für den klassischen call-back, bei dem man PIN und Zielnummer nachwählen muß.
Andere haben neben einem Genion noch ein e+Handy, bei dem das call-through für preiswerte Gespräche in fremde Mobilnetze benötigt wird. Die bisherige Call-Back-Lösung vertrug sich nicht damit. Nun ist das anders!
Ruft man die Call-Through-Nummer an, werden die Einstellungen der FBF so geändert, daß normales call-through wieder funktioniert. Man kann diese Lösung sogar verwenden, um call-through für mehrere Telefone zu nutzen.
Ggf. muß man zweimal die FBF anrufen - beim ersten Mal schaltet sie in den gewünschten call-through-Modus, beim zweiten Mal funktioniert dieser dann für das Handy. Ist die FBF schon im richtigen Modus (weil man der letzte war, der die Funktion genutzt hatte), so steht call-through natürlich gleich zur Verfügung.
Funktion
Wie im vorigen Skript wird die Konfiguration der FBF bei Anruf verändert. Dabei werden dem Skript nun aber Parameter übergeben, was bei der Anrufer-AngerufeneMSN-Kombination passieren soll. Die neue Syntax im listener sieht wie folgt aus:
Code:
^xxx ^yyy /var/flash/callback.sh directcallback zzz <anzurufende nummer>
^xxx ^yyy /var/flash/callback.sh callback zzz <verbinden ueber MSN|SIPx> <pin>
^xxx ^yyy /var/flash/callback.sh callthrough xxx yyy <verbinden ueber MSN|SIPx> <pin>
Wobei xxx wieder die vom Handy übermittelte Rufnummer ist, yyy die Trigger-bzw. DurchwahlMSN und zzz die Nummer, auf die zurückgerufen werden soll (bei call-back).
"MSN|SIPx" ist die Nummer, mit der die Weiterverbindung erfolgt (bei directcallback ist es die erste Nummer von fon2, das werde ich aber noch flexibler gestalten) sofern nicht Wahlregeln etwas anderes festlegen. SIPx steht für den x.ten Eintrag der Internetrufnummern. Also entweder eine MSN z.B. "111111" oder eine Internetnummer, z.B. "SIP1".
PIN ist natürlich die bei Durchwahl einzugebende PIN, diese kann also für verschiedene Nutzer unterschiedlich sein (ist aber im listener im Klartext enthalten!)
Hier das Skript:
callback.sh
Code:
#!/bin/sh
#Parameter:
#==========
#directcallback <rueckrufnummer> <anzurufende nummer>
#callback <rueckrufnummer> <verbinden ueber MSN|SIPx> <pin>
#callthrough <uebermittelte Rufnummer> <Anschluss (MSN|SIPx)> <verbinden ueber MSN|SIPx> <pin>
#Weboberflaeche Freischalten
export REQUEST_METHOD="POST"
export REMOTE_ADDR="127.0.0.1"
export CONTENT_TYPE="application/x-www-form-urlencoded"
POST_DATA="login:command/password=test"
export CONTENT_LENGTH=${#POST_DATA}
echo -n "$POST_DATA" | /usr/www/html/cgi-bin/webcm > /dev/null
#direkten call-back ausloesen
#directcallback <rueckrufnummer> <anzurufende nummer>
if [ "$1" = "directcallback" ]
then export REQUEST_METHOD="POST";
export REMOTE_ADDR="127.0.0.1";
export CONTENT_TYPE="application/x-www-form-urlencoded";
POST_DATA="telcfg:settings/CallThrough/Active=0&telcfg:settings/MSN/Port1/Diversion=1&telcfg:settings/MSN/Port1/DiversionNumber=$3";
export CONTENT_LENGTH=${#POST_DATA};
echo -n "$POST_DATA" | /usr/www/html/cgi-bin/webcm > /dev/null;
sleep 3;
echo "ATD$2" | nc 127.0.0.1 1011
fi
#callback ausloesen
#callback <rueckrufnummer> <verbinden ueber MSN|SIPx> <pin>
if [ "$1" = "callback" ]
then export REQUEST_METHOD="POST";
export REMOTE_ADDR="127.0.0.1";
export CONTENT_TYPE="application/x-www-form-urlencoded";
POST_DATA="telcfg:settings/MSN/Port1/Diversion=0&telcfg:settings/CallThrough/Active=1&&telcfg:settings/CallThrough/MSN=POTS&telcfg:settings/CallThrough/PIN=$4& telcfg:settings/CallThrough/CallerID=$2&telcfg:settings/CallThrough/OutgoingMSN=$3";
export CONTENT_LENGTH=${#POST_DATA};
echo -n "$POST_DATA" | /usr/www/html/cgi-bin/webcm > /dev/null;
sleep 3;
echo "ATD$2" | nc 127.0.0.1 1011
fi
#normalen call-through aktivieren
#callthrough <uebermittelte Rufnummer> <Anschluss (MSN|SIPx)> <verbinden ueber MSN|SIPx> <pin>
if [ "$1" = "callthrough" ]
then export REQUEST_METHOD="POST";
export REMOTE_ADDR="127.0.0.1";
export CONTENT_TYPE="application/x-www-form-urlencoded";
POST_DATA="telcfg:settings/MSN/Port1/Diversion=0&telcfg:settings/CallThrough/Active=1&&telcfg:settings/CallThrough/MSN=$3&telcfg:settings/CallThrough/PIN=$5&te lcfg:settings/CallThrough/CallerID=$2&telcfg:settings/CallThrough/OutgoingMSN=$4
";
export CONTENT_LENGTH=${#POST_DATA};
echo -n "$POST_DATA" | /usr/www/html/cgi-bin/webcm > /dev/null
fi
2do
- Zur Zeit muß man das Skript noch per Hand anpassen, wenn es fon2 in Ruhe lassen soll ("telcfg:settings/MSN/Port1/Diversion=0&" löschen). Das werde ich wohl auch noch über Parameter steuern.
- Für directcallback sehe ich zur Zeit fon2 fest vor - auch da kommt noch eine Wahl über Parameter rein.
- Wahlregeln für den Rückruf - Festnetz oder ein VoIP-Anbieter - sollen noch - ebenfalls Parameterabhängig - rein. Man kann dann über 2 verscheidene Triggernummern arbeiten (z.B. grundsätzlich Rückruf per Festnetz, wegen der besseren DTMF-Erkennung, aber wenn man vor hat, ins Mobilnetz per call-by-call weiterzutelefonieren geht der Rückruf über VoIP - da man ja dann eh eine Festnetzverbindung aufbaut.
P.S.: Da ich mich damit abgefunden habe, daß eine Verbindung eh über Festnetz muß, damit die Qualität stimmt, habe ich mir den preselection von qualitel geholt, rund um die Uhr für 1,4 Cent/Min. Call-by-Call via LCR kann ich ja für den Rückruf nur schwer nutzen, da dann die am Analoganschluß übermittelte Rufnummer sich entsprechend ändert und beim call-through nicht mehr erkannt würde... Für ausgehende Anrufe ins Mobilnetz nutze ich natürlich weiterhin einen preiswerten call-by-call-Anbieter.
P.S.2: Ich habe bisher nur Simmulationen gefahren, d.h. ich weis, daß das Umkonfigurieren klappt, was die Funkion von Call-Through und Call-Back sicherstellt. Direkt-Call-Back habe ich noch nicht getestet, ich sehe aber nicht, woran das scheitern sollte. Ich werde vor Ende der Woche für einen Test auch wohl keine Zeit haben (außerdem bekomme ich erst dann qualitel, und man muß ja etwas sparen). [edit: eben getestet - funktioniert)
P.S.3: Wer nur Call-Through für mehrere Anrufnummern braucht, kann natürlich aufs Loopback-Kabel verzichten und hat weiterhin alle analogen Anschlüsse zur Verfügung
P.S.4: Die Nebenstelleneinstellungen und die Wahlregeln müssen zu den möglichen Konfigurationen passen - ich arbeite noch daran, das Skript zu erweitern.