# Datentypen

Im Robot spielen Variablen eine zentrale Rolle. Sie dienen dazu, Informationen während der Ausführung eines Workflows zu speichern, zu übertragen und zu verarbeiten. Jede Variable besitzt dabei einen **Datentyp**, der bestimmt, welche Art von Daten die Variable speichern kann und wie diese verarbeitet werden.

## Was sind Datentypen?

Ein **Datentyp** legt fest, welche Werte eine Variable annehmen kann und welche Operationen darauf möglich sind. Die Wahl des richtigen Datentyps ist wichtig, um die Funktionalität und Effizienz eines Workflows sicherzustellen.

Zum Beispiel:

* Der Typ **text** speichert Texte wie Namen oder Nachrichten.
* Der Typ **integer** speichert ganze Zahlen, die für Zählungen oder Berechnungen nützlich sind.
* Der Typ **boolean** speichert Wahrheitswerte wie `true` oder `false`.

Robot bietet mehrere Datentypen, die im Folgenden näher erklärt werden.

## Simple Datentypen

### **text, email, phone, url und json (Zeichenketten)**

* **Beschreibung:** Dieser Typ speichert Zeichenfolgen, also Text.
* **Beispiel:** `"Hallo, Welt!"` , `https://www.aiaibot.com`, `support@mycompany.com`
* **Verwendung:**
  * Speichern von Namen, IDs oder Nachrichten.
  * Ausgabe von Textinformationen in Benachrichtigungen.
  * Zusammensetzen von Texten mithilfe von Operationen wie Verkettung.
* **Standardwert:** `""`

### **integer (Ganzzahl)**

* **Beschreibung:** Ein Integer speichert ganze Zahlen ohne Dezimalstellen.
* **Beispiel:** `42`
* **Verwendung:**
  * Zählen von Schleifen oder Aufgaben.
  * Speichern von Mengen oder numerischen Werten (z.B. Bestellnummern).
  * Berechnungen wie Addition oder Subtraktion.
* **Standardwert:** 0

### **decimal (Kommazahl)**

* **Beschreibung:** Ein Decimal speichert Zahlen mit Dezimalstellen.
* **Beispiel:** `3.14`
* **Verwendung:**
  * Speichern von genauen Messwerten oder Währungsbeträgen.
  * Berechnungen, die Genauigkeit erfordern (z.B. Durchschnittswerte).
* **Standardwert:** 0.0

### **boolean (Wahrheitswert)**

* **Beschreibung:** Ein Boolean speichert nur zwei mögliche Werte: `true` (wahr) oder `false` (falsch).
* **Beispiel:** `true`
* **Verwendung:**
  * Entscheidungen und Bedingungen in Workflows.
  * Prüfen, ob eine Aktion erfolgreich war.
  * Steuern von Prozessverzweigungen (z.B. "Wenn Bedingung erfüllt, dann...").
* **Standardwert:** *null* **(Diese Variable hat keinen Wert, solange ihr nicht true oder false zugewiesen werden!)**

### **date (Datum)**

* **Beschreibung:** Der Date-Datentyp speichert Datumswerte.
* **Beispiel:** `2024-06-17`
* **Verwendung:**
  * Terminplanung und Fristen in Workflows.
  * Berechnungen von Zeitdifferenzen.
  * Festlegen von Erinnerungen oder Gültigkeitszeiträumen.
* **Standardwert**: *null*

### **datetime (Datum und Uhrzeit)**

* **Beschreibung:** Der Datentyp speichert sowohl das Datum als auch die Uhrzeit als Zeitstempel.
* **Beispiel:** `2024-06-17T14:30:00+02:00`
* **Verwendung:**
  * Speichern von genauen Zeitpunkten für Aktionen oder Ereignisse.
  * Berechnungen von Zeitabständen.
  * Nachverfolgen von Bearbeitungszeiten oder Logeinträgen.
* **Standardwert**: *null*

### **collection (Liste)**

* **Beschreibung:** Eine Collection speichert eine Sammlung von Werten desselben oder unterschiedlichen Datentyps.
* **Beispiel:** `[1, 2, 3]` oder `["Apfel", "Banane", "Orange"]`
* **Verwendung:**
  * Speichern von Listen oder Aufzählungen.
  * Iteration über mehrere Werte (z.B. in Schleifen).
  * Gruppierung von ähnlichen Daten.
* **Standardwert**: `[]` (= leer)

### files und file (Dateien)

* **Beschreibung:** Diese Datentypen beinhalten ein Datei (Type `file` ) oder mehrere Dateien (Typ `files`). Der Typ `files` kann ähnlich wie eine Collection betrachtet werden. Die einzelnen Einträge sind vom Typ `file`.
* **Verwendung**:
  * Anhänge einer E-Mail
  * Hochgeladenen Dateien aus dem Chatbot
* **Standardwert**: *null* für den Typ `file` und `[]` (= leer) für den Typ `files`.
