Anwender
HilfeChangelogAdministratoren
Einrichtung BundIDWidget erstellenCSV-Mitarbeiter-ImportAnbindung Active DirectoryAnbindung d.velop documentsAnbindung Exchange ServerEinrichtung BesucherverwaltungAnbindung FormularserverDienstleister
Webseiten-WidgetSuch- und GraphQL-APIEinbindung TerminvereinbarungPartner
Anbindung DMSAnbindung FormularserverOAuth2.0Integration in eine Webseite
Die optiGov-Bürgerserviceplattform wird für den Bürger über ein JavaScript-Widget angebunden. Da über JavaScript dargestellter Inhalt aber nicht optimal von Suchmaschinen erfasst wird, stellt jede optiGov-Instanz einen Widget-Endpunkt zur Verfügung, welcher einen Hydration-Ansatz umsetzt. Darüber wird statisches HTML zusammen mit dem JavaScript-Widget ausgeliefert.
Des Weiteren erleichtert dies die Integration in der Hinsicht, dass durch Sie als Webseiten-Dienstleister keine Konfiguration mehr vorgenommen werden muss. Die einzelnen Inhaltsseiten werden über ein Query-Parameter unterschieden und von einer einzelnen Seite auf der Webseite dargestellt.
Vorbereitungen
Kommunizieren Sie als Dienstleister mit Ihrer Kommune die URL unter der die Startseite des Bürgerservices später verfügbar sein wird.
In diesem Beispiel nehmen wir folgende URL: https://optistadt.de/de/buergerservice.php
Diese muss im Backend von optiGov durch die Kommune oder uns hinterlegt werden.
/de/index.php
als ein anderer Pfad interpretiert als nur /de/
.Integration
Sobald dies geschehen ist erhalten Sie von Ihrer Kommune oder uns eine “Widget-URL”. Auf der Seite auf der Sie die Integration vornehmen muss der Inhalt hinter dieser durch einen HTTP-Aufruf mit der GET-Methode und den folgenden Parametern ausgegeben werden.
url
gibt die URL an, von welcher die Integration aufgerufen wird bzw. auf der sich der Bürger momentan befindet. Der Pfad inklusive der Query-Parameter ist dabei ausreichend.user-agent
gibt den User-Agent des Nutzers an. Anhand diesem wird untersucht, ob der Aufruf durch einen Crawler initiiert wurde. Der User-Agent wird nicht gespeichert.
Beispiele
Im Folgenden finden Sie Beispiele für verschiedene Server-Side-Sprachen.
PHP (z.B. für CMS-Systeme wie Typo3, Weblication, etc.)
// init variables
$widgetUrl = "Die URL, welche Ihnen mitgeteilt worden ist.";
$url = urlencode($_SERVER["REQUEST_URI"]);
$agent = urlencode($_SERVER["HTTP_USER_AGENT"]);
// make request
$ch = curl_init("$widgetUrl?url=$url&agent=$agent");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
// send response
echo $response;
JavaScript (z.B. für CMS-Systeme basierend auf Node.JS)
// require libs
const querystring = require('querystring');
const axios = require('axios');
// init variables
const widgetUrl = "Die URL, welche Ihnen mitgeteilt worden ist."
const url = querystring.escape(req.url)
const agent = querystring.escape(req.headers["user-agent"])
// make request
const response = await axios.get(`${widgetUrl}?url=${url}&agent=${agent}`);
// send response
res.send(response.data);
Java (z.B. für CMS-Systeme wie ionas, OpenCMS, etc.)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
public class WidgetRequest {
public static void main(String[] args) {
try {
// Initialize variables
String widgetUrl = "Die URL, welche Ihnen mitgeteilt worden ist.";
String url = URLEncoder.encode(System.getProperty("sun.net.http.allowRestrictedHeaders", "true"), "UTF-8");
String agent = URLEncoder.encode(System.getProperty("http.agent"), "UTF-8");
// Make request
URL requestUrl = new URL(widgetUrl + "?url=" + url + "&agent=" + agent);
HttpURLConnection connection = (HttpURLConnection) requestUrl.openConnection();
connection.setRequestMethod("GET");
// Get response
int responseCode = connection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String inputLine;
StringBuilder response = new StringBuilder();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
// Send response
System.out.println(response.toString());
} else {
System.out.println("HTTP Request Failed with error code: " + responseCode);
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}