Wahlregel - Verbindung via Callmonitor Listener und shell Befehl änderbar?

mortimar

Neuer User
Mitglied seit
26 Jan 2006
Beiträge
65
Punkte für Reaktionen
1
Punkte
8
Hallo Zusammen,

frohes neues noch nachgereicht.

Ist es möglich via Listener des Callmonitors ein shell-script zu starten, das per Befehl die Verbindung der Wahlregel für Mobilfunk ändert?

Hintergrund
Ich möchte Inklusivminuten eines Tarifes nutzen und nach aufbrauchen dieser auf einen günstigen Anbieter umschalten. Da LCR-Updater die Inklusivminuten nicht berücksichtigt und ich auch kein CbC nutzen kann, hatte ich diese Idee.

Überlegungen
Callmonitor Listener:
out:disconnect ^Nr-Tarif-w/Inklusivminuten ^ echo "verbraucht: ${DURATION} Sek" >> log

shell-script Pseudo Code:
einlesen der Log-Datei
WENN ErsterImMonat und NICHT Default-Verbindung(Inklusivminutentarif)
DANN Wahlregel auf Default-Verbindung setzen (ggf. als separaten Cron-Job jeden 1. im Monat)
WENN Differenz Inklusivminuten - verbrauchte Minuten = 0 (ggf. Puffer berücksichtigen)
DANN Verbindung für Wahlregel "Mobilfunk" von X nach Y ändern


Was meint ihr dazu?
Kann mir jemand die entsprechenden Variablen für das ändern der Wahlregel via shell-script nennen?

Danke Euch

Ciao morT
 
Hallo mortimar.

Ist es möglich via Listener des Callmonitors ein shell-script zu starten
Ja.
das per Befehl die Verbindung der Wahlregel für Mobilfunk ändert?
Prinzipiell ja; etwas fertiges gibt es dafür noch nicht. Ich habe im Callmonitor die nötigen Werkzeuge, um die Weboberfläche der Fritzbox sozusagen fernzubedienen. Wenn du also herausfindest, welche HTTP-POST-Requests du an die Fritzbox absetzen musst, um die Wahlregeln zu ändern, kann ich dir helfen, das als Skript umzusetzen.

Gruß

Andreas
 
Hallo mortimar.


Wenn du also herausfindest, welche HTTP-POST-Requests du an die Fritzbox absetzen musst, um die Wahlregeln zu ändern, kann ich dir helfen, das als Skript umzusetzen.

Gruß

Andreas

Hallo Andreas,

ich hab hier mal etwas aufgefangen. Hilft Dir das?
Code:
+++GET 1+++ [U][B][I]// Klick linke Navigation auf Wahlregeln[/I][/B][/U]
GET /cgi-bin/webcm?sid=51dca59ecccf9a0b&getpage=..%2Fhtml%2Fde%2Fmenus%2Fmenu2.html&errorpage=..%2Fhtml%2Fde%2Fmenus%2Fmenu2.html&var%3Apagename=routing&var%3Aerrorpagename=routing&var%3Amenu=fon&var%3Apagemaster=&time%3Asettings%2Ftime=1263474372%2C-60&var%3Asipnr=&var%3Atelnr=&var%3Aisnew=0&sip%3Asettings%2Fsip0%2Factivated=1&sip%3Asettings%2Fsip1%2Factivated=1&sip%3Asettings%2Fsip2%2Factivated=1&sip%3Asettings%2Fsip3%2Factivated=1&sip%3Asettings%2Fsip4%2Factivated=1 HTTP/1.0
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, application/x-shockwave-flash, */*
Referer: http://192.168.100.1/cgi-bin/webcm?sid=51dca59ecccf9a0b&getpage=..%2Fhtml%2Fde%2Fmenus%2Fmenu2.html&errorpage=..%2Fhtml%2Fde%2Fmenus%2Fmenu2.html&var%3Apagename=routing&var%3Aerrorpagename=routing&var%3Amenu=fon&var%3Apagemaster=&time%3Asettings%2Ftime=1263474372%2C-60&var%3Asipnr=&var%3Atelnr=&var%3Aisnew=0&sip%3Asettings%2Fsip0%2Factivated=1&sip%3Asettings%2Fsip1%2Factivated=1&sip%3Asettings%2Fsip2%2Factivated=1&sip%3Asettings%2Fsip3%2Factivated=1&sip%3Asettings%2Fsip4%2Factivated=1
Accept-Language: de
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; FDM; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
Host: 192.168.100.1
Cookie: page=enhsettings; menu=enhsettings
Connection: keep-alive

+++RESP 1+++
HTTP/1.0 200 OK
Content-type: text/html; charset=utf-8
<schnipp>...<schnapp>
+++CLOSE 1+++

+++GET 2+++ [B][I][U]// Klick Editbutton Wahlregel "0800"[/U][/I][/B]
POST /cgi-bin/webcm HTTP/1.0
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, application/x-shockwave-flash, */*
Referer: http://192.168.100.1/cgi-bin/webcm
Accept-Language: de
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; FDM; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
Host: 192.168.100.1
Content-Length: 265
Pragma: no-cache
Cookie: page=enhsettings; menu=enhsettings
Connection: keep-alive
Browser reload detected...
Posting 265 bytes...
sid=51dca59ecccf9a0b
getpage=..%2Fhtml%2Fde%2Fmenus%2Fmenu2.html
errorpage=..%2Fhtml%2Fde%2Fmenus%2Fmenu2.html
var%3Apagename=route
var%3Aerrorpagename=routing
var%3Amenu=fon
var%3Apagemaster=
time%3Asettings%2Ftime=1263474392%2C-60
var%3Aroute=Group6
var%3Aisnew=0

+++RESP 2+++
HTTP/1.0 200 OK
Content-type: text/html; charset=utf-8
<schnipp>...<schnapp>
+++CLOSE 2+++

+++GET 3+++ [U][I][B]// Klick OK-Button nach Providerauswahl im Dropdownmenü der 0800er Wahlregel[/B][/I][/U]
POST /cgi-bin/webcm HTTP/1.0
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, application/x-shockwave-flash, */*
Referer: http://192.168.100.1/cgi-bin/webcm
Accept-Language: de
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; FDM; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
Host: 192.168.100.1
Content-Length: 413
Pragma: no-cache
Cookie: page=enhsettings; menu=enhsettings
Connection: keep-alive
Browser reload detected...
Posting 413 bytes...
sid=51dca59ecccf9a0b
getpage=..%2Fhtml%2Fde%2Fmenus%2Fmenu2.html
errorpage=..%2Fhtml%2Fde%2Fmenus%2Fmenu2.html
var%3Apagename=routing
var%3Aerrorpagename=route
var%3Amenu=fon
var%3Apagemaster=
time%3Asettings%2Ftime=1263474399%2C-60
var%3Aroute=Group6
var%3Aisnew=0
telcfg%3Asettings%2FRouting%2FGroup6%2FNumber=0800
telcfg%3Asettings%2FRouting%2FGroup6%2FRoute=v
telcfg%3Asettings%2FRouting%2FGroup6%2FProvider=0

+++RESP 3+++
HTTP/1.0 200 OK
Content-type: text/html; charset=utf-8
<schnipp>...<schnapp>
+++CLOSE 3+++

Ciao morT
 
Callmonitor erkennt Verbindung an GSM-Gateway(Amt), obwohl keine Verbindung erfolgte

Hallo Andreas,

vorab noch die Info, dass mein Amt ein GSM-Gateway (Sagem RL302) ist.

Hab mich dem Thema "Inklusivminutenberechnung" erstmal so genähert:
Code:
o:can ^ ^ echo "${SOURCE} an ${DEST}: cancel" >> /tmp/testlog
o:dis ^ ^ echo "${SOURCE} an ${DEST}: dis - dur: ${DURATION} Sek" >> /tmp/testlog

Ausgabe im log sieht so aus:
Code:
[U]auflegen nach dem ersten Klingeln am Ziel-Handy:[/U]
<GSM-GW-Nr> an 0123456789: dis - dur: 7 Sek

[U]auflegen nach aufschalten des GSM-GW aber vor Ende des Wählvorganges des GSM-GW:[/U]
<GSM-GW-Nr> an 0123456789: cancel --> [I]meine Erwartung bei jeder Art von nicht zustandekommender Verbindung[/I]

auch wegdrücken am Ziel-Handy bringt ersten Log-Eintrag

Damit wäre natürlich eine verlässliche Berechnung nicht mehr drin.
Bei den SIP-Accounts funktioniert es wie erwartet.

Kannst Du sagen, ob das ein Fehler im CM ist oder ob es am Zusammenspiel mit dem GSM-GW und der FB liegt?
Wie ist das Verhalten mit Analog oder ISDN?

Leider habe ich anscheinend auch keine Möglichkeit per Anruf/SMS/INet die Restminuten abzufragen (O2 Inklusivpaket).

Danke Dir

Ciao morT
 
ich hab hier mal etwas aufgefangen. Hilft Dir das?
Ja, wenn du das untenstehende in /tmp/flash/callmonitor/mort.sh speicherst, müsstest du mit "routing" diese Funktionalität ansprechen können (ungetestet und nicht besonders benutzerfreundlich beim Aufruf):
Code:
require webui
routing() {
  local group=$1 number=$2 route=$3 provider=$4
  local key="telcfg:settings/Routing/Group${group}"
  webui_login
  webui_post_form "$key/Number=$number&$key/Route=$route&$key/Provider=$provider"
}
# Aufruf für deine Beispieleinstellung (vgl. Ende deines letzten Logs, dort tauchen die Werte auf):
# routing 6 0800 v 0

Bei deiner zweiten Frage zum disconnect-Event bzw. der DURATION-Variable bin ich mir nicht sicher, ob ich verstanden habe, worauf du hinaus willst.

Das Ereignis out:disconnect kann (sollte) nur auftreten, wenn vorher schon out:request und out:connect aufgetreten sind, also die Verbindung schon erfolgreich aufgebaut wurde (ich würde dir empfehlen, auch diese Ereignisse einmal mitzuloggen, evtl. über eine Regel out:*). Vielleicht erscheint aus Sicht der Fritzbox der Anruf durch das GSM-Gateway schon angenommen, obwohl dieses noch dabei ist, über GSM weiterzuverbinden. Ist das Gateway analog an die Fritzbox angeschlossen?

Gruß

Andreas
 
...

Bei deiner zweiten Frage zum disconnect-Event bzw. der DURATION-Variable bin ich mir nicht sicher, ob ich verstanden habe, worauf du hinaus willst.

Das Ereignis out:disconnect kann (sollte) nur auftreten, wenn vorher schon out:request und out:connect aufgetreten sind, also die Verbindung schon erfolgreich aufgebaut wurde (ich würde dir empfehlen, auch diese Ereignisse einmal mitzuloggen, evtl. über eine Regel out:*). Vielleicht erscheint aus Sicht der Fritzbox der Anruf durch das GSM-Gateway schon angenommen, obwohl dieses noch dabei ist, über GSM weiterzuverbinden. Ist das Gateway analog an die Fritzbox angeschlossen?

Genau das hatte ich so auch verstanden, o:dis nur nach o:req && o:con.
Und mit folgendem Listener ist der Ablauf wie zu sehen.
Code:
[U]o:* ^ ^ echo "${TIMESTAMP} - ${SOURCE} an ${DEST}: ${EVENT}" >> /tmp/testlog
[/U]15.01.10 16:30:13 - 0123456789 an 01678902345: out:request
15.01.10 16:30:18 - 0123456789 an 01678902345: out:connect
15.01.10 16:30:22 - 0123456789 an 01678902345: out:disconnect

D.h. dann wahrscheinlich genau das, was Du vermutest, dass die FB den Anruf als angenommen ansieht, bevor das GSM-GW überhaupt eine Verbindung aufgebaut hat.

Ja, das Gateway ist am Analog-Amt der Fb. Hab auch keinen Analog/ISDN Betrieb, d.h. Komplettanschluß mit GSM-GW als analoges Amt.

Danke auch für deine Zeilen zum Wahlregelwechsel. Werde das später testen und berichten.

Ciao morT
 
Ja, wenn du das untenstehende in /tmp/flash/callmonitor/mort.sh speicherst, müsstest du mit "routing" diese Funktionalität ansprechen können (ungetestet und nicht besonders benutzerfreundlich beim Aufruf):
Code:
require webui
routing() {
  local group=$1 number=$2 route=$3 provider=$4
  local key="telcfg:settings/Routing/Group${group}"
  webui_login
  webui_post_form "$key/Number=$number&$key/Route=$route&$key/Provider=$provider"
}

Hi Andreas,

hab ich gemacht und danach den CM restarted.
Mit dem Testanruf passiert folgendes:
Code:
/usr/sbin/callmonitor-test: eval: line 1: routing: not found
[0:3] listener failed with an exit status of 127

Ich hab gesehen, dass die anderen Actions in /usr/lib/callmonitor/actions.d/ liegen. Hab auch versucht mort.sh dorthin zu kopieren, ist aber read only.

Ist das Verzeichnis das Richtige?

Danke Dir

Ciao morT
 
Nein, hab mich verschrieben. Das richtige Verzeichnis für eigene Ergänzungen heißt /tmp/flash/callmonitor/actions.local.d/ (ggf. erstellen, falls nicht vorhanden)

(Und "modsave flash" nicht vergessen, wenn du deine Änderungen dort dauerhaft speichern willst.)

Andreas
 
Das Problem bei Duration ist der innere technische Aufbau des analogen Gateways. Sobald die gewünschte Rufnummer an das Mobilfunkmodul übertragen wurde und der Wahlvorgang des Mobilfunkmoduls abgeschlossen ist, schaltet das Gateway die Audio In/Out-Anschlüsse auf die Telefonbuchse. Dadurch beginnt für jedes an das Gateway angeschlossene Gerät die Verbindung schon, während die Mobilverbindung eigentlich noch aufgebaut wird. Wenn man direkt ein Telefon am Gateway hat, merkt man, dass die Töne während des Klingelns beim Angerufen etwas anders (verzerrter) klingen, als bei einem normalen analogen Telefonanschluss.
Für die FBF ist also der Sprachkanal am "Amt" mit Abschluss des Wählvorgangs bereits aufgebaut. Dass diese "Sprachdaten" das Klingeln beim Gesprächspartner sind, kann gar nicht erkannt werden. Entsprechend zählt natürlich auch die Gesprächsdauer.
 
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.