# WebHook Control > Symcon Dokumentation · Deutsch · erzeugt am 2026-09-26 > Index: https://www.symcon.de/de/llms.txt Quelle: https://www.symcon.de/de/service/dokumentation/modulreferenz/kern-instanzen/webhook-control/ _Benötigt 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. > **Hinweis:** Skripte, die durch den WebHook ausgeführt werden, beinhalten diese [Systemvariablen](../concepts/automations.md) ![Konfigurationsseite](https://www.symcon.de/media/pages/service/dokumentation/modulreferenz/kern-instanzen/webhook-control/fff8a7af1a-1790424938/webhookcontrol-config.png) #### Ermitteln des besten WebHooks Der aufgerufene Hook muss nicht exakt übereinstimmen. Es wird immer der **Beste Treffer** verwendet, der die längste Übereinstimmung hat. Dies bedeutet, das der Hook-Pfad kürzer sein kann, als der z.B. im Browser aufgerufene Hook. Konfiguration im Beispiel: - Hook: /hook/ocpp, Ziel: 12345 - Hook: /hook/ocpp/extra, Ziel: 55555 Aufrufe im Beispiel: - Aufruf: /hook/ocpp, Bester Treffer: 12345 - Aufruf: /hook/ocpppui, Bester Treffer: 12345 - Aufruf: /hook/ocpp/wallbox1, Bester Treffer: 12345 - Aufruf: /hook/ocpp/extra, Bester Treffer: 55555 - Aufruf: /hook/tester, Keine Übereinstimmung #### WebSocket Support Ab der 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: ```php // Beim Empfangen landen die Daten im php://input Stream. IPS_LogMessage("WebSocket", file_get_contents("php://input")); ``` ### Einbindung in 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 bei der oberen Liste 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. > **Hinweis:** Auch Aufrufe via [Connect Control](connect-control.md) sind möglich. ### Beispiel #### Skript Aufruf Das Beispielskript, welches aufgerufen werden soll, ist "WebHook TestSkript" mit der ObjektID "35909". ```php 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: ![Browser](https://www.symcon.de/media/pages/service/dokumentation/modulreferenz/kern-instanzen/webhook-control/6f712f54ad-1790424938/webhookcontrol-browser.png) An Symcon werden die Daten in Arrays dem Skript übergeben. ![Meldung](https://www.symcon.de/media/pages/service/dokumentation/modulreferenz/kern-instanzen/webhook-control/8284385988-1790424938/webhookcontrol-meldung.png) #### Authentifizierung Ein Beispiel wie eine automatische Authentifizierung über das Modul Control verwirklicht wurde. Als Nutzername wurde "Symcon" und als Passwort wurde "passwort" gewählt. > **Achtung:** Eine Authentifizierung wird immer empfohlen, damit ein unerlaubter Zugriff von Außen auf Symcon verhindert wird. ___Quellcode___ ```php 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. ![Authentification](https://www.symcon.de/media/pages/service/dokumentation/modulreferenz/kern-instanzen/webhook-control/b09b6c6bb3-1790424938/webhookcontrol-auth.png) ### Einbindung via PHP-Modul Neben dem Aufruf via Skript, ist es auch möglich über die Funktion [ProcessHookData](../developer/sdk-tools/sdk-php/module.md) innerhalb eines PHP-Moduls auf Hookaufrufe zu reagieren. Dazu wird ein Hook per [RegisterHook](../developer/sdk-tools/sdk-php/module.md) auf die eigene InstanceID registriert. Anschließend wird die Funktion "ProcessHookData()" automatisch durch das Hook Control aufgerufen. ### Beispiel Dem Beispiel [HookServe](https://github.com/symcon/SymconTest/blob/master/HookServeSimpleStrict/module.php) kann der Quellcode zur gesamten Handhabe eines WebHooks via PHP-Modul mit dem modernen IPSModuleStrict entnommen werden. Die Nutzung mit dem alten IPSModule ist hier aufgeführt: [HookServe (Legacy)](https://github.com/symcon/SymconTest/blob/master/HookServeSimple/module.php) ## WC_PushMessage Quelle: https://www.symcon.de/de/service/dokumentation/modulreferenz/kern-instanzen/webhook-control/wc-pushmessage/ `bool WC_PushMessage(int $InstanzID, string $Hookpfad, string $Nachricht)` _Benötigt Symcon >= 5.2_ sendet eine WebSocket-Nachricht an alle verbundenen Clients **Parameter** - `$InstanzID` (int): ID des WebHook Control - `$Hookpfad` (string): Pfad des Hooks - `$Nachricht` (string): Zu sendene Nachricht **Rückgabewert** (bool): Konnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis __TRUE__, andernfalls __FALSE__. Zu sendene Nachricht **Beispiel** ```php // Sendet "Hallo Welt" auf den hook "test" des WebHook Controls mit der ID 12345 WC_PushMessage(12345, "/hook/test", "Hallo Welt"); ``` ## WC_PushMessageEx Quelle: https://www.symcon.de/de/service/dokumentation/modulreferenz/kern-instanzen/webhook-control/wc-pushmessageex/ `bool WC_PushMessageEx(int $InstanzID, string $Hookpfad, string $Text, string $Zieladresse, int $Zielport)` _Benötigt Symcon >= 5.3_ sendet eine WebSocket-Nachricht an einen bestimmten Client **Parameter** - `$InstanzID` (int): ID des WebHook Control - `$Hookpfad` (string): Pfad des Hooks - `$Text` (string): Zu sendene Nachricht - `$Zieladresse` (string): Adresse an die gesendet werden soll - `$Zielport` (int): Port auf den gesendet werden soll **Rückgabewert** (bool): Konnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis __TRUE__, andernfalls __FALSE__. Port auf den gesendet werden soll **Beispiel** ```php // Sendet "Hallo Welt zurück" auf den hook "test" des WebHook Controls mit der ID 12345. Zusätzlich wird der Client mit der Adresse $_SERVER["REMOTE_ADDR"] und Port $_SERVER["REMOTE_PORT"] als Empfänger bestimmt. WC_PushMessageEx(12345, "/hook/test", "Hallo Welt zurück", $_SERVER["REMOTE_ADDR"], $_SERVER["REMOTE_PORT"]); ```