Openstage XML Applikation über FPK-Taste starten
25. März 2008 Kategorien:Im letzten Artikel hatte ich ja bereits über XML Applikationen für die Siemens Openstage Serie geschrieben. Eine Funktion, die bedauerlicherweise von den Entwicklern vergessen wurde, ist das Starten von Applikationen über die sogenannten Functional Programming Keys, zu deutsch FPK-Tasten. Durch geschickte Kombination verschiedener Funktionen konnte ich in unserem VoIP-Labor die Funktion allerdings nachstellen. Nur leider kann man aus einem Ackergaul kein Rennpferd machen, das hier beschriebene Konstrukt hat leider zwei Nachteile. Es funktioniert nur, wenn gleichzeitig kein Anruf geführt wird, und zweitens gibt es ein großes Geflacker auf dem Display für etwas mehr als eine Sekunde.
Warum Siemens nicht das Anlegen von Applikations Shortcuts auf FPK-Tasten ermöglicht ist schwer nachvollziehbar. Es scheint, dass sich die Entwicklung und das Produktmanagement des Openstage nicht entscheiden konnte, ob XML Applikationen wichtig für das Produkt sind oder nicht.
Aber wie lösen wir das Problem? Folgende Zutaten nutzen für unser kleines Rezept eine XML Applikation mit nur einem Tastendruck zu starten: (1) FPK-Taste mit einer Zielwahl belegen, (2) ein Scripts auf einem Telefonie Server ausführen, (3) Remote Starten einer XML Appliation. Das folgende Bild illustriert die drei Schritte, die wir im folgenden noch im Detail beschreiben.
Zunächst brauchen wir eine freie Rufnummer oder einen freien Featurecode auf unserem Telefonie Server, wir wählen hierzu die *21. Diesen Featurecode legen wir als Zielwahl auf eine FPK Taste am Openstage.
Als Telefonie-Server nutzen wir ein Asterisk System. Dort registrieren wir für die Extension *21 im Dialplan einen Scriptaufruf. Der eigentliche Scriptaufruf muss allerdings sehr spät erfolgen, da ansonsten die interne Telefon Applikation auf dem Openstage den Fokus der zuvor gestarteten XML Applikation wieder wegnimmt. Folgende Zeilen schreiben wir in den Dialplan, sodass wir relativ modular verschiedene Applikationen starten können, die Asterisk-interne Bedeutung der Aufrufe ignorieren wir an dieser Stelle.
exten => *21, 1, Answer
exten => *21, 2, Set(script=serverpush.sh)
exten => *21, 3, Set(scriptarg1=${SIPCHANINFO(peerip)})
exten => *21, 4, Set(scriptarg2=helloworld)
exten => *21, 5, Set(scriptarg3=xmlopenstage/helloworld.php)
exten => *21, 6, Hangup
exten => h, 1, DeadAGI(${script}|${scriptarg1}|
${scriptarg2}|${scriptarg3})
Laut Siemens Developers Guide für Openstage XML Applications kann ein PUSH Request auf dem Openstage gestartet werden, indem der Webserver des Telefons auf Port 8085 mit einem HTTP POST Anfrage angesprochen wird. PUSH bedeuetet, dass das Telefon veranlasst wird eine zuvor konfigurierte XML Applikation zu starten, also genau das, was wir auch über eine FPK-Taste machen würden.
Im folgenden ist das Shell-Script aufgeführt, dass wir zum Aufruf des Telefon Webservers verwenden. Das Script erwartet die drei Parameter, die oben im Dialplan angegeben wurden. Unser Webserver hatte die IP 192.168.5.33, den Port 80 und sprach HTTP, diese Parameter können im Script aber auch leicht angepasst werden. Das Script sollte als serverpush.sh in /var/lib/asterisk/agi-bin/ installiert werden.
#!/bin/sh
sleep 1
url="http://$1:8085/server_push.html/ServerPush"
data="ServerAddr=192.168.5.33&ServerPort=80&ProgramName=$3&
RequestType=force&MidletName=$2&ServerProtocol=http"
wget -q -O /dev/null --post-data $data $url
Mit den drei Konfigurationen sollte dann bereits der Aufruf einer XML Applikation über eine PFK-Taste funktionieren und etwas besser von der Hand gehen.
/sf
