Dokumentation
WebHook Control
Benötigt: IP-Symcon >= 4.0
Beschreibung
Das WebHook Control Modul bietet die Möglichkeit Skripte über einen Browser aufzurufen. Über den Symcon Connect Dienst sind auch Aufrufe außerhalb des lokalen Netzwerks möglich.
Es bietet weitergehend die Möglichkeit dem Skript Daten mitzuliefern.
Skripte, die durch den Webhook ausgeführt werden, beinhalten diese Systemvariablen
WebSocket Support
Ab der IP-Symcon Version 5.2 nutzt das WebHook Control WebSockets und ermöglicht somit Echtzeitübermittlung.
Empfangene Daten können wie folgt erfasst und ausgegeben werden:
// Beim Empfangen landen die Daten im php://input Stream. IPS_LogMessage("WebSocket", file_get_contents("php://input"));
Einbindung in IP-Symcon
Das WebHook Control gehört zu den Kern Instanzen und ist somit sofort konfigurierbar.
Innerhalb eines Browsers kann das jeweilig verknüpfte Skript mit "IP:PORT/hook/HOOKNAME" aufgerufen werden.
Um einen Hook einzurichten muss in der "WebHook Control" Instanz auf "Hinzufügen" geklickt werden. Folgend muss zuerst der Aufrufname des Hooks eingegeben werden und anschließend das Skript gewählt werden, welches durch den Hook ausgeführt werden soll.
Auch Aufrufe via Connect Control sind möglich.
Beispiel
Skript Aufruf
Das Beispielskript, welches aufgerufen werden soll, ist "WebHook TestSkript" mit der ObjektID "35909".
IPS_LogMessage("WebHook GET", print_r($_GET, true)); IPS_LogMessage("WebHook POST", print_r($_POST, true)); IPS_LogMessage("WebHook IPS", print_r($_IPS, true)); IPS_LogMessage("WebHook RAW", file_get_contents("php://input")); echo "Meldung: " . $_GET['Meldung'];
Der Aufruf und das Ergebnis wären wiefolgt:
An IP-Symcon werden die Daten in Arrays dem Skript übergeben.
Authentifizierung
Ein Beispiel wie eine automatische Authentifizierung über das Modul Control verwirklicht wurde.
Als Nutzername wurde "Symcon" und als Passwort wurde "passwort" gewählt.
Eine Authentifizierung wird immer empfohlen, damit ein unerlaubter Zugriff von Außen auf IP-Symcon verhindert wird.
Quellcode
if(!isset($_SERVER['PHP_AUTH_USER'])) $_SERVER['PHP_AUTH_USER'] = ""; if(!isset($_SERVER['PHP_AUTH_PW'])) $_SERVER['PHP_AUTH_PW'] = ""; if(($_SERVER['PHP_AUTH_USER'] != "Symcon") || ($_SERVER['PHP_AUTH_PW'] != "passwort")) { header('WWW-Authenticate: Basic Realm="Geofency WebHook"'); header('HTTP/1.0 401 Unauthorized'); echo "Authorization required"; return; } echo "Willkommen im geschützten Bereich";
Wird der Hook aufgerufen, erscheint die Abfrage nach Nutzername und Passwort. Und die Daten werden via $Post-Array an das Skript verschickt.
Einbindung via PHP-Modul
Neben dem Aufruf via Skript, ist es auch möglich über die Funktion "ProcessHookData()" innerhalb eines PHP-Moduls auf Hookaufrufe zu reagieren.
Dazu wird ein Hook auf die eigene InstanceID registriert. Anschließend wird die Funktion "ProcessHookData()" automatisch durch das Hook Control aufgerufen.
Beispiel
Dem Beispiel HookServe kann der Quellcode zur gesamten Handhabe eines WebHooks via PHP-Modul entnommen werden.