[Frage] Steuercodes über IP Telefon (SIP)?

@mr. vince

Der Registrar muss es auch nicht unterstützen, denn per DTMF-Signalisierung funktionierts. Das unterstützt jedes gescheite IP-Telefon.
 
Ich bleibe weiter dran. Da aber noch nicht einmal Kurzwahlen mit Steuercodes gehen (zB WLAN an), gehe ich immer noch davon aus, dass die FB da ein anderes Handling hat.

Vielleicht hat aber auch jemand konkrete Tipps für die Config eines Cisco 79xx an einer FB 7390 bzw 7490...
 
Da aber noch nicht einmal Kurzwahlen mit Steuercodes gehen (zB WLAN an)

Das sind halt Sonderfunktionen die nur per analog/ISDN funzen - irgendwie logisch, da das mit der eigentlichen Telefon-Funktion Nichts zu tun hat !

Wäre auch ein ganz schönes Chaos, wenn man das Wlan auch ausm Inet ein/ausschalten könnte :cool:
 
Ach wieso? Nur werden halt Mechanismen nötig, damits eben nicht jeder kann/darf.
Mir schwebt da so eine Asterisk PBX Fritz!Box vor. In der nächsten Labor...
:rolleyes:
Da gibts bestimmt eine Menge Leute die sich dafür interessieren würden.
 
Zuletzt bearbeitet:
Was aber Unsinn ist, weil: aus dem Internet geht es. Kurzwahl mit der Wahlhilfe gewählt. Klar, muss ein ISDN Telefon vorhanden sein. Wir aber nur zur Ausgabe des Status (WLAN AN/AUS) genutzt.

Ja, mir ist inzwischen klar, dass ich Astrrisk brauche; allerdings muss ich da wieder die DECT Geräte aus der FB angemeldet bekommen. Und dann soll Mailbox aus Asterisk auf DECT unterstützt werden etc.

Egal wie man es dreht... ;)
 
Allerdings, für Leute mit einer Affinität zum Rätsellösen, gebe es ja noch telnet*.
Da käme es am End aber auch darauf an, was das IP-Telefon so kann.
So ein snom z.B. kann Webserver aufrufen (ActionURL).
Dadurch liessen sich dann mit XML, CGIs und/oder PHP letzendlich auch Shellskripte,
und damit Funktionen der Fritz!Box ausführen lassen.
...wie...
Code:
# WLAN an:

echo "ATD#96*1*" | nc 127.0.0.1 1011;echo "ATH0" | nc 127.0.0.1 1011;


# WLAN aus:

echo "ATD#96*0*" | nc 127.0.0.1 1011;echo "ATH0" | nc 127.0.0.1 1011;
Ereignislog...
Code:
26.11.13	14:41:49	WLAN wurde über das Telefon aktiviert.
26.11.13	14:41:04	WLAN wurde über das Telefon deaktiviert.
Als ActionURL Aufruf auf irgendeine Taste/Ereignis gelegt und ab dafür.

Ist bestimmt nicht das was euch so vorschwebt,
tut aber ganz gewiss den Horizont (m)eines IP-Telefons erweitern.
:mrgreen:


* Damit einen Webserver von USB (busybox httpd) auf der Fritz!Box starten, der mindesten Shellscript CGI unterstützt, und damit auch php-cgi.
 
Zuletzt bearbeitet:
Ich wußte, daß du das mit einem snom schaffst. :p
Ich brauche da noch 'ne Hilfe. Wie muß das Skript genau aussehen und welche Endung haben?
 
...so gehts...

Moin

XML Variante (am einfachsten) ...

Voraussetzung:
Ein Webserver auf der Fritz!Box mit Shellskript-CGI aufsetzen: busybox httpd
Der httpd muss über seine httpd.conf Mimetype XML kennen.
Code:
# mime-types
.xhtml:application/xhtml+xml	# xhtml ;-)
.xml:application/xml	# extended markup language (XML)
.xsl:application/xml+xsl	# extended markup language (XML-Transformation)
.dtd:application/xml+dtd	# extended markup language (XML-DocTypeDefinition)

fb_codes.xml snom_funktiontasten_fb_codes_02.png <--<< MENU bietet sich dafür an.
Code:
<?xml version="1.0" encoding="UTF-8"?>
<SnomIPPhoneMenu>
<Title>FB Codes</Title>
<MenuItem>
<Name>WLAN an</Name>
<URL>http://deepbase.fritz.box:4200/cgi-bin/wlan_an</URL>
</MenuItem>
<MenuItem>
<Name>WLAN aus</Name>
<URL>http://deepbase.fritz.box:4200/cgi-bin/wlan_aus</URL>
</MenuItem>
</SnomIPPhoneMenu>

Webservers cgi-bin...
Code:
# l ../cgi-bin/wl*
-rwxrwxrwx    1 root     root            82 Nov 27 08:02 ../cgi-bin/wlan_an*
-rwxrwxrwx    1 root     root            83 Nov 27 08:02 ../cgi-bin/wlan_aus*
# cat ../cgi-bin/wlan_an
#!/bin/sh

echo "ATD#96*1*" | nc 127.0.0.1 1011;echo "ATH0" | nc 127.0.0.1 1011;

# cat ../cgi-bin/wlan_aus
#!/bin/sh

echo "ATD#96*0*" | nc 127.0.0.1 1011;echo "ATH0" | nc 127.0.0.1 1011;


#
snom_mb_fb_codes_01.png
Die XML ist dann ein erweiterbares Menü für die Fritz!Box Tastencodes.
Für jeden neuen Code brauchts dann natürlich auch ein Kommandoskript in /cgi-bin (wlan_an, wlan_aus u.s.w.).
Natürlich sollte dann der Webserver aus Sicherheitsgründen am Besten nur Lokal erreichbar sein.

Bonus Schmankerl: Wer die URL direkt aufruft braucht kein Telefon und kein AVM Webinterface mehr zum WLAN an/aus machen.
Nur noch im Webbrowser den (Favoriten-)Link anklicken, fertig. Sollte also auch mit Benutzer/Passwort geschützt werden. ;)
...so...
Code:
http://deepbase.fritz.box:4200/cgi-bin/wlan_an
# oder...
http://deepbase.fritz.box:4200/cgi-bin/wlan_aus
 
Zuletzt bearbeitet:
Danke, werde es dann gleich mal probieren, und dann auch begreifen.

EDIT:

So habe es nach reichlich Schwierigkeiten geschafft, aber auch begriffen!
Die 1. Shell die ich per http ausführe!

Da ich die Softtasten benutzen und die LED mit einschalten wollte,
habe ich die XML geändert. Brauche allerdings 3, IMO geht es mit einer nicht.
Ein bisschen Sicherheit habe ich auch gleich noch eingebaut:

httpd.conf
Code:
...
/cgi-bin:[COLOR="#FF0000"]BENUTZER:PASSWORT[/COLOR]
...


fb_wlan.xml
Code:
<?xml version="1.0" encoding="UTF-8"?>

<SnomIPPhoneText>

<Text>FB WLAN an/aus</Text>

<SoftKeyItem>
<Name>F1</Name>
<Label>AN</Label>
<URL>http://192.168.0.1:4200/fb_wlan_an.xml</URL>
</SoftKeyItem>

<SoftKeyItem>
<Name>F4</Name>
<Label>AUS</Label>
<URL>http://192.168.0.1:4200/fb_wlan_aus.xml</URL>
</SoftKeyItem>

<Fetch mil="10000">snom://mb_exit</Fetch>

</SnomIPPhoneText>

fb_wlan_an.xml
Code:
<?xml version="1.0" encoding="UTF-8"?>

<SnomIPPhoneText>

<Title>WLAN AN</Title>
<Led number="4">On</Led>
<Fetch mil="1000">http://[COLOR="#FF0000"]BENUTZER:PASSWORT[/COLOR]@192.168.0.1:4200/cgi-bin/wlan_an</Fetch>

</SnomIPPhoneText>


fb_wlan_aus.xml
Code:
<?xml version="1.0" encoding="UTF-8"?>

<SnomIPPhoneText>

<Title>WLAN AUS</Title>
<Led number="4">Off</Led>
<Fetch mil="1000">http://[COLOR="#FF0000"]BENUTZER:PASSWORT[/COLOR]@192.168.0.1:4200/cgi-bin/wlan_aus</Fetch>

</SnomIPPhoneText>

In die Skripte mußte ich noch eine Pause einbauen, sonst klappte das auflegen nicht sofort.

wlan_an
Code:
#!/bin/sh

echo "ATD#96*1*" | nc 127.0.0.1 1011
sleep 1
echo "ATH0" | nc 127.0.0.1 1011

wlan_aus
Code:
#!/bin/sh

echo "ATD#96*0*" | nc 127.0.0.1 1011
sleep 1
echo "ATH0" | nc 127.0.0.1 1011
 
Zuletzt bearbeitet:
Moin

Aha, OK.
Bei meiner Variante gibt es ja eine Fehlermeldung im snom Display, weil die XML Antwort aus dem CGI eben keine liefert.
Mal testen ob deine Variante besser ist. Sieht aber gut aus.
Und anschliessend alle FB-Codes eintragen...
:rolleyes:

Vielleicht mach ich auch mal eine PHP Variante. Da kann dann alles in ein Skript, oder mal locker was includiert/nachgeladen werden.
Aber vorallem ist es mit PHP einfacher einen Querystring auszuwerten und den richtigen Doctype auszuliefern.
Allerdings muss php-cgi (gibt es bei fritzmod.net) auf die Box, da brauchts einen flotten Prozessor und viel RAM.
Zum Glück kann das eine 7360SL mit ihrem SMP Prozessor.
 
Zuletzt bearbeitet:
gibt es ja eine Fehlermeldung im snom Display
Die habe ich auch. Manchmal klappt das umschalten auch nicht.
100% geht es per telnet (nachdem ich "sleep 1" eingefügt habe).
Per WEB-Browser geht es auch nicht immer. Ich bekomme dann nur ein OK (normal sind 2) oder sogar Zeitüberschreitung.

Nun würde ich gerne die LED an einem 2. snom mit einschalten,
damit ich auf allen snom sehe, daß das WLAN an ist.
Soweit ich gelesen habe, ist das so einfach nicht möglich (nur mit SIPSAK).
Oder kennst du da inzwischen eine einfachere Lösung?
Ideal wäre, wenn genau so einfach ginge wie die Remote-Tasten:
(h ttp://BENUTZER:P[email protected]/command.htm?key=DOWN)

EDIT:
php-cgi habe ich schon drauf und Snomweather läuft auch.
 
Zuletzt bearbeitet:
OK, dann fange ich gaaaanz langsam mal an eine eierlegenden Wollmilchsau in Form einer Parametrisierbaren sich selbsaufrufenden PHP zu skripten.

Was dich auch interessieen könnte:
Den Status eines snom 320 auf einen anderen mittels LED und Display Nachrichten zu signalisieren...
snom1.fritz.box
snom1_subscribe_snom2_01.png
snom1_subscribe_snom2_02.png

snom2.fritz.box
snom2_subscribe_snom1_01.png
snom2_subscribe_snom1_02.png
...je nach Status: LED aus = bereit, LED an = Hörer offhook, klingelt oder im Gespräch (beschäftigt) und im Display stehen Infos! :mrgreen:
Ist mir bei meiner Recherche zu deinem LED Problem unter die Fitiche gekommen.

In Aktion...
snom2_telefoniert_snom1_zeigt_an_01.png
...und wieder mal muss ich per CSS eine Hintergrundfarbe für Dialog zuweisen.
:rolleyes:
 
Zuletzt bearbeitet:
Also wegen mir brauchst du das nicht machen. Soooo wichtig ist das nicht.
Ich wollte nur wissen, ob du eine einfache Variante kennst.
Kann ja sein, daß ich was überlesen oder nicht gefunden habe.
 
Das Problem ist halt, dass das eine snom erstmal nichts vom anderen weiss.
Das snom Monitor Skript weiss allerdings wieviele snoms im System sind
und kann so, wenn über dieses Skript WLAN geschaltet wird, dem anderen das auch mitteilen.
Beziehungsweise allen snoms die dem Skript bekannt sind.
Allein mit XML und/oder den snom Funktionen wäre das schwierig, deswegen hab ich mal nach dem "subscription" geschaut.
Aber da macht die Fritz!Box nicht mit. Der AB wird gerade mal MWI mässig signalisiert, und kann angewählt werden, mehr aber auch nicht.
Subscriptionen von snom zu snom, von wegen Telefonstatus, wäre nicht schlecht, aber da seh ich noch keinen Weg, ausser den schon gefundenen.
Das beinhaltet aber leider noch nicht das "Klonen" der LED Zustände.
 
Ich hatte gedacht die remote LED Befehle mit in dem Shell-Skript zu machen:
Code:
#!/bin/sh

# LED's an allen snom einschalten
wget http://BENUTZER:[email protected]/command.htm?LED4=On   #LED an snom1 einschalten, Befehl frei von mir erfunden!
wget http://BENUTZER:[email protected]/command.htm?LED4=On   #LED an snom2 einschalten, Befehl frei von mir erfunden!
wget http://BENUTZER:[email protected]/command.htm?LED4=On   #LED an snom3 einschalten, Befehl frei von mir erfunden!

# WLAN einschalten
echo "ATD#96*1*" | nc 127.0.0.1 1011
sleep 1
echo "ATH0" | nc 127.0.0.1 1011
Dann käme ich auch mit einer XML aus ;)
Wenn ich zwei Tasten opfern würde, dann ginge es.
1. Taste nur für LED an, 2. Taste nur für LED aus
Und die Tasten kann ich ja dann im Shell-Skript per Remote drücken.
Siehst du da noch eine andere Möglichkeit?

Wenn ich die LED's remote steuern könnte:

Dann könnte man sogar ständig ein Skript auf der FB laufen lassen,
das den WLAN Zustand kontrolliert und dann die LED's an oder aus schaltet.
Dann würde die LED Anzeige auch richtig anzeigen,
wenn WLAN per GUI, Taster oder Telefon umgeschaltet würde.

Dann könnte man sich am snom auf Wunsch per Taste (oder auch immer) alle LED's der FB anzeigen lassen oder auch noch andere Zustände signalisieren lassen.

Einzig es hängt alles an einer Möglichkeit die LED's remote steuern zu können.
24 virtuelle Tasten würden auch schon reichen (je 2 pro LED, s.o.).
Oder kann man remote eine XML auf dem snom starten, ohne das ich remote eine Taste drücke?
Vielleicht in einer der nächsten FW des snom?
 
Zuletzt bearbeitet:
Mich erstaunt gerade wie ähnlich die Snom XMLs den Cisco XMLs sind, anbei mal meine Variante der FritzBox Steuerung.
Vlt. könnt Ihr das ja auch für eure Snoms gebrauchen.
Screenshot.jpg Screenshot3.jpg Screenshot4.jpg

Code:
<?php
header("Content-type: text/xml");
$output = "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
		
if(isset($_GET["status"])) {
	$downstream =  (int)shell_exec("ctlmgr_ctl r sar status/dsl_ds_rate");
	$upstream =  (int)shell_exec("ctlmgr_ctl r sar status/dsl_us_rate");
	$synctime =  (int)shell_exec("ctlmgr_ctl r sar status/modem_ShowtimeSecs");
	$synctime = round($synctime/3600,1);
	$fwversion =  shell_exec("/etc/version");
	$temp =  (int)shell_exec("ctlmgr_ctl r power status/act_temperature");
	$wanip =  shell_exec("ctlmgr_ctl r dslstatistic status/ifacestat0/ipaddr");
	$dslstatus = shell_exec("ctlmgr_ctl r dslstatistic status/ifacestat0/connection_status");
	$uphours = (int)shell_exec("ctlmgr_ctl r logic status/uptime_hours");
	$upmin = (int)shell_exec("ctlmgr_ctl r logic status/uptime_minutes");
	$mbinheute = (int)shell_exec("ctlmgr_ctl r inetstat status/Today/BytesReceivedLow");
	$mbinheute = round($mbinheute/1000000,0);
	$mboutheute = (int)shell_exec("ctlmgr_ctl r inetstat status/Today/BytesSentLow");
	$mboutheute = round($mboutheute/1000000,0);

	$output .= "<CiscoIPPhoneText>\n";
	$output .= "\t<Title>FritzBox</Title>\n";
	$output .= "\t<Prompt>Status</Prompt>\n";
	$output .= "\t<Text>";
	$output .= "DSL Status:     "  . $dslstatus;
	$output .= "WAN IP:          "  . $wanip;
	$output .= "Downstream:   " . $downstream . " kbit/s\n";
	$output .= "Upstream:       "  . $upstream ." kbit/s \n";
	$output .= "Gesynct vor:    "  . $synctime ." Stunden\n";
	$output .= "Traffic heute:   in "  . $mbinheute ." MB  out ".$mboutheute." MB\n\n";
	$output .= "Firmware:        "  . $fwversion ;
	$output .= "CPU-Temp:     "  . $temp ." Grad Celsius\n";
	$output .= "Uptime:           "  . $uphours.":".$upmin."\n";
	$output .= "</Text>\n";
	$output .= "\t<SoftKeyItem>\n";
	$output .= "\t<Name>Schließen</Name>\n";
	$output .= "\t<URL>Init:Services</URL>\n";
	$output .= "\t<Position>1</Position>\n";
	$output .= "\t</SoftKeyItem>\n";	
	$output .= "\t<SoftKeyItem>\n";
	$output .= "\t<Name>Aktual.</Name>\n";
	$output .= "\t<URL>SoftKey:Update</URL>\n";
	$output .= "\t<Position>2</Position>\n";
	$output .= "\t</SoftKeyItem>\n";
	$output .= "</CiscoIPPhoneText>\n";

} elseif(isset($_GET["dect"])) {
	$dectstatus =  shell_exec("ctlmgr_ctl r dect settings/enabled");	
	if ($dectstatus==0)	{
	$dectstatusmenu="Aktivieren";
	$dectstatusantwort="deaktivert";
	} else {
	$dectstatusmenu="Deaktivieren";
	$dectstatusantwort="aktiviert";
	}
	$output .= "<CiscoIPPhoneText>\n";
	$output .= "\t<Title>FritzBox</Title>\n";
	$output .= "\t<Prompt>DECT Basis</Prompt>\n";
	$output .= "\t<Text>";
	$output .= "Status:            "  . $dectstatusantwort."\n";
	$output .= "</Text>\n";

	$output .= "\t<SoftKeyItem>\n";
	$output .= "\t<Name>Schließen</Name>\n";
	$output .= "\t<URL>Init:Services</URL>\n";
	$output .= "\t<Position>1</Position>\n";
	$output .= "\t</SoftKeyItem>\n";

	$output .= "\t<SoftKeyItem>\n";
	$output .= "\t<Name>Aktual.</Name>\n";
	$output .= "\t<URL>SoftKey:Update</URL>\n";
	$output .= "\t<Position>2</Position>\n";
	$output .= "\t</SoftKeyItem>\n";

	$output .= "\t<SoftKeyItem>\n";
	$output .= "\t<Name>".$dectstatusmenu."</Name>\n";
	$output .= "\t<URL>http://192.168.1.1:90/fritzbox.php?dect".$dectstatusmenu."</URL>\n";
	$output .= "\t<Position>3</Position>\n";
	$output .= "\t</SoftKeyItem>\n";
	
	$output .= "</CiscoIPPhoneText>\n";
} elseif(isset($_GET["dectAktivieren"])) {	
	$abstatus =  shell_exec("ctlmgr_ctl w dect settings/enabled 1");
	header("Location: http://192.168.1.1:90/fritzbox.php?dect");
} elseif(isset($_GET["dectDeaktivieren"])) {	
	$abstatus =  shell_exec("ctlmgr_ctl w dect settings/enabled 0");
	header("Location: http://192.168.1.1:90/fritzbox.php?dect");
} elseif(isset($_GET["wlan"])) {
	$key =  shell_exec("ctlmgr_ctl r wlan settings/pskvalue");
	$gastkey =  shell_exec("ctlmgr_ctl r wlan settings/guest_pskvalue");
	$ssid =  shell_exec("ctlmgr_ctl r wlan settings/ssid");
	$gastssid =  shell_exec("ctlmgr_ctl r wlan settings/guest_ssid");	
	$gasttimeoutremain =  (int)shell_exec("ctlmgr_ctl r wlan settings/guest_time_remain");
	$wlanclients = shell_exec("ctlmgr_ctl r wlan settings/active_stations");
	
	$wlanstatus = shell_exec("ctlmgr_ctl r wlan status/ap_enabled");
	if ($wlanstatus==1)	{
		$wlanmenu="aus";
		$wlanantwort="aktivert";
	} else {
		$wlanmenu="an";
		$wlanantwort="deaktiviert";
	}
	$gastwlanstatus = shell_exec("ctlmgr_ctl r wlan status/guest_ap_enabled");
	if ($gastwlanstatus==1)	{
		$gastwlanmenu="aus";
		$gastwlanantwort="aktivert";
	} else {
		$gastwlanmenu="an";
		$gastwlanantwort="deaktiviert";
	}
	$output .= "<CiscoIPPhoneText>\n";
	$output .= "\t<Title>FritzBox</Title>\n";
	$output .= "\t<Prompt>WLAN</Prompt>\n";
	$output .= "\t<Text>";
	$output .= "Status:            "  . $wlanantwort."\n";
	$output .= "Aktive Geräte: ". $wlanclients;
	$output .= "SSID:              "  . $ssid;
	$output .= "Key:                "  . $key."\n";
	$output .= "Gast WLAN\n";
	$output .= "Status:            "  . $gastwlanantwort."\n";
	$output .= "SSID:              "  . $gastssid;
	$output .= "Key:                "  . $gastkey;
	$output .= "Restlaufzeit:    "  . $gasttimeoutremain." min";
	$output .= "</Text>\n";

	$output .= "\t<SoftKeyItem>\n";
	$output .= "\t<Name>Schließen</Name>\n";
	$output .= "\t<URL>Init:Services</URL>\n";
	$output .= "\t<Position>1</Position>\n";
	$output .= "\t</SoftKeyItem>\n";

	$output .= "\t<SoftKeyItem>\n";
	$output .= "\t<Name>Aktual.</Name>\n";
	$output .= "\t<URL>SoftKey:Update</URL>\n";
	$output .= "\t<Position>2</Position>\n";
	$output .= "\t</SoftKeyItem>\n";

	$output .= "\t<SoftKeyItem>\n";
	$output .= "\t<Name>WLAN ".$wlanmenu."</Name>\n";
	$output .= "\t<URL>http://192.168.1.1:90/fritzbox.php?wlan-".$wlanmenu."</URL>\n";
	$output .= "\t<Position>3</Position>\n";
	$output .= "\t</SoftKeyItem>\n";
	
	$output .= "\t<SoftKeyItem>\n";
	$output .= "\t<Name>Gast WLAN ".$gastwlanmenu."</Name>\n";
	$output .= "\t<URL>http://192.168.1.1:90/fritzbox.php?gastwlan-".$gastwlanmenu."</URL>\n";
	$output .= "\t<Position>4</Position>\n";
	$output .= "\t</SoftKeyItem>\n";
	
	$output .= "</CiscoIPPhoneText>\n";
	
} elseif(isset($_GET["wlan-an"])) {	
	$abstatus =  shell_exec("ctlmgr_ctl w wlan settings/ap_enabled 1");
	header("Location: http://192.168.1.1:90/fritzbox.php?wlan");
} elseif(isset($_GET["wlan-aus"])) {	
	$abstatus =  shell_exec("ctlmgr_ctl w wlan settings/ap_enabled 0");
	header("Location: http://192.168.1.1:90/fritzbox.php?wlan");
} elseif(isset($_GET["gastwlan-an"])) {	
	$abstatus =  shell_exec("ctlmgr_ctl w wlan settings/guest_ap_enabled 1");
	header("Location: http://192.168.1.1:90/fritzbox.php?wlan");
} elseif(isset($_GET["gastwlan-aus"])) {	
	$abstatus =  shell_exec("ctlmgr_ctl w wlan settings/guest_ap_enabled 0");
	header("Location: http://192.168.1.1:90/fritzbox.php?wlan");		
	
	
} elseif(isset($_GET["ab"])) {
	$abstatus =  shell_exec("ctlmgr_ctl r tam settings/TAM0/Active");
	if ($abstatus==0)	{
	$abstatusmenu="Aktivieren";
	$abstatusantwort="deaktivert";
	} else {
	$abstatusmenu="Deaktivieren";
	$abstatusantwort="aktiviert";
	}
	$abmode =  shell_exec("ctlmgr_ctl r tam settings/TAM0/Mode");
	if ($abmode==1)	{
	$abmodemenu="Ansage";
	$abmodeantwort="Mitteilung aufnehmen";
	} else {
	$abmodemenu="Aufnahme";
	$abmodeantwort="Abwesenheits Ansage";
	}
	$newmessages =  shell_exec("ctlmgr_ctl r tam settings/TAM0/NumNewMessages");
	$oldmessages =  shell_exec("ctlmgr_ctl r tam settings/TAM0/NumOldMessages");	

	$output .= "<CiscoIPPhoneText>\n";
	$output .= "\t<Title>FritzBox</Title>\n";
	$output .= "\t<Prompt>Anrufbeantworter</Prompt>\n";
	$output .= "\t<Text>";
	$output .= "Status:          "  . $abstatusantwort."\n";
	$output .= "Modus:         "  . $abmodeantwort."\n\n";
	$output .= "Neue Nachrichten: ". $newmessages;
	$output .= "Alte Nachrichten:   "  . $oldmessages;
	$output .= "</Text>\n";
	$output .= "\t<SoftKeyItem>\n";
	$output .= "\t<Name>Schließen</Name>\n";
	$output .= "\t<URL>Init:Services</URL>\n";
	$output .= "\t<Position>1</Position>\n";
	$output .= "\t</SoftKeyItem>\n";

	$output .= "\t<SoftKeyItem>\n";
	$output .= "\t<Name>Aktual.</Name>\n";
	$output .= "\t<URL>SoftKey:Update</URL>\n";
	$output .= "\t<Position>2</Position>\n";
	$output .= "\t</SoftKeyItem>\n";

	$output .= "\t<SoftKeyItem>\n";
	$output .= "\t<Name>".$abstatusmenu."</Name>\n";
	$output .= "\t<URL>http://192.168.1.1:90/fritzbox.php?ab".$abstatusmenu."</URL>\n";
	$output .= "\t<Position>3</Position>\n";
	$output .= "\t</SoftKeyItem>\n";
	
	$output .= "\t<SoftKeyItem>\n";
	$output .= "\t<Name>".$abmodemenu." Modus</Name>\n";
	$output .= "\t<URL>http://192.168.1.1:90/fritzbox.php?ab".$abmodemenu."</URL>\n";
	$output .= "\t<Position>4</Position>\n";
	$output .= "\t</SoftKeyItem>\n";
	
	$output .= "</CiscoIPPhoneText>\n";
} elseif(isset($_GET["abAktivieren"])) {	
	$abstatus =  shell_exec("ctlmgr_ctl w tam settings/TAM0/Active 1");
	header("Location: http://192.168.1.1:90/fritzbox.php?ab");
} elseif(isset($_GET["abDeaktivieren"])) {	
	$abstatus =  shell_exec("ctlmgr_ctl w tam settings/TAM0/Active 0");
	header("Location: http://192.168.1.1:90/fritzbox.php?ab");
} elseif(isset($_GET["abAufnahme"])) {	
	$abstatus =  shell_exec("ctlmgr_ctl w tam settings/TAM0/Mode 1");
	header("Location: http://192.168.1.1:90/fritzbox.php?ab");
} elseif(isset($_GET["abAnsage"])) {	
	$abstatus =  shell_exec("ctlmgr_ctl w tam settings/TAM0/Mode 0");
	header("Location: http://192.168.1.1:90/fritzbox.php?ab");		
} else {
	$output .= "<CiscoIPPhoneMenu>\n";
	$output .= "\t<Title>FritzBox</Title>\n";
	$output .= "\t<Prompt>Einstellungen</Prompt>\n";
	
	$output .= "\t<MenuItem>\n";
	$output .= "\t<Name>Anrufbeantworter</Name>\n";
	$output .= "\t<URL>http://192.168.1.1:90/fritzbox.php?ab</URL>\n";
	$output .= "\t</MenuItem>\n";

	$output .= "\t<MenuItem>\n";
	$output .= "\t<Name>DECT</Name>\n";
	$output .= "\t<URL>http://192.168.1.1:90/fritzbox.php?dect</URL>\n";
	$output .= "\t</MenuItem>\n";
	
	$output .= "\t<MenuItem>\n";
	$output .= "\t<Name>WLAN</Name>\n";
	$output .= "\t<URL>http://192.168.1.1:90/fritzbox.php?wlan</URL>\n";
	$output .= "\t</MenuItem>\n";
	
	$output .= "\t<MenuItem>\n";
	$output .= "\t<Name>Status</Name>\n";
	$output .= "\t<URL>http://192.168.1.1:90/fritzbox.php?status</URL>\n";
	$output .= "\t</MenuItem>\n";
	
	$output .= "\t<SoftKeyItem>\n";
	$output .= "\t<Name>Schließen</Name>\n";
	$output .= "\t<URL>Init:Services</URL>\n";
	$output .= "\t<Position>1</Position>\n";
	$output .= "\t</SoftKeyItem>\n";
	$output .= "\t<SoftKeyItem>\n";
	$output .= "\t<Name>Aktual.</Name>\n";
	$output .= "\t<URL>SoftKey:Update</URL>\n";
	$output .= "\t<Position>2</Position>\n";
	$output .= "\t</SoftKeyItem>\n";
	$output .= "\t</CiscoIPPhoneMenu>\n";
}

print $output;

?>

Um aber mal zum Ursprungsthema zurück zukommen:
Kann man irgendwie die R-Taste simulieren bzw. durch andere Tastenkombis ersetzen?

Viele Probleme mit den Tastencodes kommen wohl auch daher, dass die Raute bei Cisco eine besondere Bedeutung hat,
nämlich "Sofort wählen". Evtl. kann man da was mit den Dialplan machen.
 
Hallo

Das ist ja witzig!

Erstmal dankeschön, und dein Cisco-Skript sieht super aus.

Witzig deshalb, mit der Lösung...
Code:
echo "ATD${CODE}" | nc 127.0.0.1 1011
...natürlich abgewandelt, kannste dir die R-Taste selber basteln.
Mit "ATP1 ATD**620" kann Quelle/Ziel für den Anruf bestimmt werden.
Musste mal testen wie das genau geht. Dann mit den Codes zum Vermitteln komplettieren.
Und natürlich: Auflegen nicht vergessen

Mit deiner...
Code:
ctlmgr_ctl w wlan settings/ap_enabled 1
..und..
Code:
ctlmgr_ctl w wlan settings/ap_enabled 0
...Lösung, können wir unser CGI stabiler machen.

Schöne Ergänzung.

PS: Der XML Entwickler hat wohl bei Cisco und snom "entwickelt". :lol:
 
Zuletzt bearbeitet:
Achso, die ctlmgr_ctl Befehle kanntest du nicht? Damit kannst du alles in der FB lesen und schreiben, macht die GUI ja auch so.

Das war ja meine Idee, mit "ctlmgr_ctl r wlan status/ap_enabled" den WLAN Status abfragen (alle 10s reicht) und danach dann die LED schalten. Bloß wie???
 
Hallo

Witzig deshalb, mit der Lösung...
Code:
echo "ATD${CODE}" | nc 127.0.0.1 1011
...natürlich abgewandelt, kannste dir die R-Taste selber basteln.
Mit "ATP1 ATD**620" kann Quelle/Ziel für den Anruf bestimmt werden.
Musste mal testen wie das genau geht. Dann mit den Codes zum Vermitteln komplettieren.
Und natürlich: Auflegen nicht vergessen

Gute Idee, das müsste grundsätzlich klappen.
Muss man sich nur eine XML bauen wo man den gewünschten Tastencode eingeben kann
und die dann den entsprechenden "Anruf" direkt auf der FB ausführt.


Muss ich irgendwann mal rumprobieren.


Vlt. gibts es ja einen geheimen IP Phone XML Standard, denn "CiscoIPPhoneText" und "SnomIPPhoneText" ist sich schon sehr ähnlich :)
 
@Eisbär: Beispiel...
Shellskript wlan_ctl.sh
Code:
#!/bin/sh
if [ `ctlmgr_ctl r wlan status/ap_enabled` == 0 ]
 then  echo "Der WLAN AP funkt nicht!!!"
 else
  echo "Der WLAN AP funkt!!!"
fi
...beachte die nach links geneigten Hochkommata. ;)

Mit 10 sekündiger Abfrage in Endloschleife...
Code:
#!/bin/sh
I=10

while [ $I -eq 10 ]
do
if [ `ctlmgr_ctl r wlan status/ap_enabled` == 0 ]
 then
  echo "Der WLAN AP funkt nicht!!!"
  sleep $I
 else
  echo "Der WLAN AP funkt!!!"
  sleep $I
fi
done
...gestartet kann es so werden: . wlan_ctl.sh

Problem: Das blockiert die Konsole und wenn die Session endet wird das Skript auch beendet.

Abhilfe: screen oder tmux, einfach in einer Konsole laufen lassen und detachen vorm ausloggen.

Deswegen geht sowas nicht als CGI. Die HTML würde "hängenbleiben".
Um den snom was zu schicken, benötigst du statt echo am Besten sipsak.
Hat das einer für die MIPS/MIPSEL Fritz!Box? Wäre was für die Binaries Sammlung.
 
Zuletzt bearbeitet:
Kostenlos!

Statistik des Forums

Themen
248,927
Beiträge
2,305,419
Mitglieder
378,653
Neuestes Mitglied
ReddyBookClubsPoint