Inhalt

Erklärung aller Eigenschaften von Events, Formularen und Scripts.

Events

Events bestehen immer aus dem auslösenden Datensatz und der Art des Ereignis getrennt durch einen Doppelpunkt. Ein Beispiel wäre alarm:create wobei alarm sich auf die Alarmierung bezieht und create auf die Erstellung.

Einem Script werden Informationen über das Auslösende Event in der Variable event bereit gestellt. Das Event Objekt hat immer folgende Eigenschaften:

  • type: der Komplette Typ des Events, im obigen Beispiel wäre dies "alarm:create"
  • model: Der Typ des auslösende Datensatzes, im Beispiel "alarm"
  • action: Die auslösende Aktion des Events, im Beispiel "create"
  • payload: Die Daten des auslösenden Datensatzes, im Beispiel wären dies die Informationen der Alarmierung.

Formulare

Ein Formular ist ein JSON-Array aus Felddefinitionen. Die folgenden Eigeschaften hat eine Felddefinition:

  1. type: Der Typ des Feldes, aktuell mögliche Werte checkbox, text & select.
  2. key: Der Bezeichner unter welchem der Wert des Feldes dem Script übergeben wird. Beispiel der Wert der Definition "key": "test" würde dem Script als configuration.test beim Aufruf übergeben werden.
  3. label: Eine Bezeichnung für das Feld, wird im UI beim erstellen einer Insatnz angezeigt.
  4. description: Eine optionale Beschreibung für Felder die mehr Kontext benötigen.
  5. defaultValue: Ein optionaler Standardwert, welcher genutzt wird, wenn bei der Erstellung der Instanz kein Wet angegeben wird.
  6. options(nur bei Typ select): Ein JSON array aus objekten mit den Eigenschaften label und value.

Werte können auch bei gesetztem Standard Wert ein Leerer String ("") oder nil sein. Ungültige Werte werden aktuell ignoriert.

Beispiel einer kompletten Formular Definition

Beispiel-Formular
[
  {
    "type": "text",
    "key": "url",
    "label": "URL",
    "description": "URL des Servers an den Sie Einsätze übertragen möchten."
  },
  {
    "type": "checkbox",
    "key": "onlyTitle",
    "label": "Nur das Stichwort übertragen",
    "defaultValue": true
  },
  {
    "type":"select",
    "key": "format",
    "label": "Format",
    "description": "Datenformat in dem die Daten übertragen werden sollen",
    "options": [
      {
        "label": "JSON",
        "value": "json"
      },
      {
        "label": "XML",
        "value": "xml"
      }
    ]
  }
]

Scripts

Scripts haben die Möglichkeit, die im Event erhaltenen Daten zu verarbeiten und als http(s)-request weiter an externe Dienste zu übergeben.

Einschränkungen

Sie haben Einschränkungen in Laufzeit, Anzahl & Dauer der Requests und der maximalen Speichernutzung.

Während eines http(s) Requests wird die Ausführung des Scripts pausiert. Die Zeit, die das Script auf den Request wartet, zählt nicht zum Laufzeitlimit.

Die Funktionen der bereitgestellten Bibliotheken finden Sie unter User-Scripts - bereitgestellte Script-Bibliotheken.

Beispiel zum obigen Formular

Hier ein Beispielscript welches mit dem Formular aus dem letzten Abschnitt genutzt werden könnte.

local fetch = require("fetch")

-- Limitierung des Payloads
if configuration.onlyTitle then
  local payload = event.payload.title
else
  local payload = event.payload
end

-- Datentyp setzen
if configuration.format == "json" then
  local json = require("json")
  local data = json.encode(event.payload)
  local contentType = "application/json" 
elseif configuration.format == "xml" then
else
  print("Ungültiges Datenformat, breche ab.")
  return -- bricht die Ausführung eines Skripts ab
end

-- Anfrage senden
print(`Sende folgendes {contentType} an {configuration.url}: {data}`)
local response = fetch.post(configuration.url, {
  data = data,
  contentType = contentType
})
print(`Aufruf von "{configuration.url}" endete mit Status-Code {response.status_code}`)

Verwandte Artikel