# Daten der App

## Variablen

Eine Variable ist ein benannter Wert, den sich die App über eine Person merkt: der Name aus einem Eingabefeld, das gewählte Produkt, die Antwort eines externen Dienstes. Jeder Nutzer der App hat seine eigenen Variablen: Was eine Person eingegeben hat, sieht eine andere nicht.

Variablen müssen Sie nicht vorab anlegen. Es genügt, den Namen dort anzugeben, wohin der Wert geschrieben wird — im Feld „Variable“ eines Elements oder Blocks. Der Editor merkt sich die Namen aus dem Schema und schlägt sie bei der Eingabe vor.

![Vorschläge für Variablennamen im Feld „Variable“](https://support.watbot.org/_media/de/02-mini-apps/_images/variable-hint.webp?v=1791781229)

Woher die Werte kommen:

| Quelle | Was sie schreibt |
|---|---|
| Eingabefelder | Was die Person eingegeben oder gewählt hat — in die Variable aus dem Feld „Variable“ |
| „Listeneinträge“ und andere Elemente, in denen eine Zeile gewählt wird | Die id der gewählten Zeile — in die Variable aus den Einstellungen des Elements |
| „HTTP-Anfrage“ | Die ganze Antwort, den Antwortcode und einzelne Werte aus der Antwort |
| „Eintrag finden“ | Die Spalten des gefundenen Eintrags |
| „Eintrag hinzufügen“, „Eintragsformular“ | Die id des neuen Eintrags |
| „JavaScript“, App-Code, „HTML-Code“ | Variablen, die der Code schreiben darf — siehe [Code in der App](https://support.watbot.org/de/mini-apps/code) |

Einige weitere Variablen füllt die App beim Start selbst. Eigene Werte können Sie dort nicht hineinschreiben:

| Variable | Was sie enthält |
|---|---|
| `launchSource` | Woher die App geöffnet wurde: `telegram`, `max`, `webchat`, `pwa` oder `browser` |
| `startParam` | Der Parameter des Startlinks — das, was nach `startapp` steht. Wie Sie ihn übergeben, steht auf der Seite [Versionen und Veröffentlichung](https://support.watbot.org/de/mini-apps/publish) |
| `contactTags` | Die Tags des Bot-Kontakts, durch Kommas getrennt |
| `appTags` | Die Tags des App-Nutzers, durch Kommas getrennt |

Die Variablen einer Person sehen Sie in ihrer Karte im Bereich „Nutzer“, dort können Sie sie auch korrigieren. Wie sich die Variablen in der Vorschau ändern, zeigt das Panel „Debugging“.

**Einschränkungen.** Der Name einer Variable hat bis zu 64 Zeichen, der Wert bis zu 4096. Ein Nutzer hat bis zu 500 Variablen: Neue darüber hinaus werden nicht geschrieben.

## Platzhalter

Der Wert einer Variable wird mit doppelten geschweiften Klammern in den Text eingesetzt: `{{ name }}`. Platzhalter funktionieren in Texten und Überschriften von Bildschirmen, in Beschriftungen, in Standardwerten von Feldern, in Adresse und Text der HTTP-Anfrage, in Spaltenwerten und Auswahlbedingungen für Einträge, in Nachrichten des Bots.

Beispiel: Ein Eingabefeld schreibt den Namen in die Variable `name`, und auf dem nächsten Bildschirm wird aus der Überschrift „Danke, `{{ name }}`!“ dann „Danke, Anna!“.

Gibt es die Variable nicht, bleibt die Stelle leer. Eingesetzt wird nur der Wert der Variable: Ausdrücke und Funktionen, die in den Platzhaltern des Chatbots funktionieren, werden hier nicht unterstützt.

> [!TIP]
> Beginnen Sie in Feldern des Editors, in die ein Wert eingetragen wird, den Namen zu tippen — der Vorschlag fügt den ganzen Platzhalter ein. In Feldern, in die ein Ergebnis geschrieben wird, fügt der Vorschlag nur den Namen der Variable ein.

### Daten des Bot-Kontakts

Wurde die App aus dem Bot geöffnet und hat die Person diesem Bot geschrieben, sind die Felder ihres Kontakts verfügbar:

| Platzhalter | Was er enthält |
|---|---|
| `{{ contact.id }}` | Nummer des Kontakts |
| `{{ contact.name }}`, `{{ contact.first_name }}`, `{{ contact.last_name }}` | Vollständiger Name, Vorname, Nachname |
| `{{ contact.username }}` | Benutzername im Messenger |
| `{{ contact.phone }}`, `{{ contact.email }}`, `{{ contact.address }}` | Telefon, E-Mail, Adresse |
| `{{ contact.source }}` | Kanal des Kontakts |
| `{{ contact.created_at }}` | Wann der Kontakt im Bot erschienen ist |
| `{{ contact.start_message }}` | Erste Nachricht an den Bot |
| `{{ contact.telegram_id }}`, `{{ contact.max_id }}` | Kennung in Telegram und MAX |

Eigene Variablen des Kontakts lesen Sie ebenfalls mit dem Präfix: `{{ contact.city }}` — die Variable `city` aus der Kontaktkarte.

Variablen der App und Variablen des Bot-Kontakts sind verschieden. Ein Wert aus einem Feld der App landet nicht im Kontakt, und eine Variable des Kontakts ist in der App ohne das Präfix `contact.` nicht sichtbar. Eine Variable in den Kontakt schreiben kann nur der Code des Blocks „JavaScript“. Ein Gast aus dem Browser hat keinen Kontakt — die Felder `contact.` sind leer.

## Listen

Die App speichert Daten in den Listen des Projekts — denselben, mit denen die Chatbots arbeiten: [Listen](https://support.watbot.org/de/lists). Eine in der App gefüllte Liste ist im Bereich „Listen“ im Menü des Projekts sichtbar und umgekehrt. Eine fremde Liste — aus einem anderen Projekt — öffnet die App nicht.

Die App kann Felder der Typen „Text“, „Zahl“, „Geldbetrag“, „Logisch“, „Datum“ und „Datum und Uhrzeit“ füllen. Die Felder „Datei“, „Bild“, „Kontakt-ID“ und „Bot-ID“ lassen sich aus der App nicht füllen.

| Aufgabe | Womit |
|---|---|
| Katalog, Zeitplan, Bewertungen zeigen | Element „Listeneinträge“ |
| Einen Eintrag auf einem eigenen Bildschirm öffnen | Das Tippen auf einen Eintrag legt seine id in eine Variable (standardmäßig `recordId`), der nächste Bildschirm zeigt ihn mit dem Element „Eintragskarte“ oder verteilt ihn mit dem Block „Eintrag finden“ auf Variablen |
| Eine Anfrage oder einen Fragebogen annehmen | Element „Eintragsformular“ oder Eingabefelder plus Block „Eintrag hinzufügen“ |
| Eine Person ihren eigenen Eintrag korrigieren lassen | „Eintragsformular“ im Modus „Ändert einen Eintrag“ oder Block „Eintrag ändern“ |
| Einen Eintrag löschen | Block „Eintrag löschen“ |

### Auswahl und Sortierung

„Listeneinträge“ und die Eintrags-Blöcke haben „Bedingungen“: „Spalte“, „Bedingung“ und „Wert“. Bedingungen: „Gleich“, „Enthält“, „Beginnt mit“, „Endet auf“, „Größer als“, „Kleiner als“, „Leer“, „Gefüllt“. Bis zu 20 Bedingungen.

In den Wert können Sie eine Variable einsetzen — dann hängt die Auswahl davon ab, was die Person gewählt hat. Zum Beispiel schreibt ein Suchfeld in `query`, und die Bedingung „Name“ „Enthält“ `{{ query }}` zeigt die passenden Einträge.

„Sortierung“ — eine Spalte und die Richtung „Absteigend“ oder „Aufsteigend“. Leer — zuerst die neuen Einträge.

„Wie viele anzeigen“ — so viele Einträge werden auf einmal geladen; mit der Option „Beim Scrollen nachladen“ werden die nächsten geladen, wenn die Person bis zum Ende gescrollt hat. Auf einmal liefert die App höchstens 50 Einträge.

![Element „Listeneinträge“: Anzeige, Filter und Sortierung](https://support.watbot.org/_media/de/02-mini-apps/_images/records-element.webp?v=1791781229)

### Eigene Einträge

Einen Eintrag können Sie der Person zuordnen, die ihn angelegt hat: mit der Option „Der Eintrag gehört dem Nutzer“ beim „Eintragsformular“ oder „Eintrag dem aktuellen Nutzer zuordnen“ beim Block „Eintrag hinzufügen“. Das funktioniert auch bei einem Gast aus dem Browser.

Mit der Option „Nur Einträge des aktuellen Nutzers“ sieht ein Element oder Block nur die Einträge dieser Person — so entstehen „meine Anfragen“, „meine Bestellungen“, Favoriten. Bei den Blöcken „Eintrag ändern“ und „Eintrag löschen“ ist diese Option standardmäßig aktiviert: Ohne sie könnte eine Person eine fremde id einsetzen und einen fremden Eintrag ändern.

## Formulare

Das Element „Eintragsformular“ ist der kurze Weg vom Bildschirm zum Eintrag: Jedes Feld des Formulars ist eine Spalte der Liste, und das Absenden legt den Eintrag sofort an oder ändert ihn. Einen eigenen Block brauchen Sie nicht; der Ausgang des Formulars löst nach erfolgreichem Absenden aus.

1. Fügen Sie dem Bildschirm ein „Eintragsformular“ hinzu und wählen Sie die „Liste“.
2. Lassen Sie unter „Was das Formular tut“ die Option „Legt einen Eintrag an“ oder wählen Sie „Ändert einen Eintrag“. Zum Ändern geben Sie „Welchen Eintrag ändern“ an — meist die Variable, die das Tippen auf einen Listeneintrag setzt. Die Option „Werte des Eintrags in den Feldern zeigen“ füllt die Felder mit den aktuellen Werten.
3. Fügen Sie „Formularfelder“ hinzu — einzeln oder mit dem Button „Felder für alle Spalten“. Ein Feld erhält die Beschriftung nach dem Namen der Spalte.
4. Legen Sie Prüfungen fest: „Pflichtfeld“, die Länge und „Muster (regulärer Ausdruck)“ bei Text, „Wertgrenzen“ bei Zahlen, „Datumsgrenzen“ bei Datumsangaben. Der „Fehlertext“ wird anstelle des Standardtextes gezeigt.
5. Unter „Absende-Schaltfläche“ legen Sie Beschriftung, Farbe und Aussehen des Buttons fest. Unter „Nach dem Absenden“ — die Variable für die id des neuen Eintrags.
6. Ziehen Sie eine Verbindung vom Ausgang des Formulars zum Bildschirm „Danke“.

![Element „Eintragsformular“: Liste und Formularfelder](https://support.watbot.org/_media/de/02-mini-apps/_images/record-form.webp?v=1791781229)

Die Werte werden auf dem Server noch einmal geprüft. Solange es Fehler gibt, bleibt das Formular auf dem Bildschirm und hebt die Felder hervor. Standard-Fehlertexte: „Bitte dieses Feld ausfüllen“, „Bitte eine Zahl eingeben“, „Bitte ein Datum eingeben“, „Der Wert ist mindestens …“, „Der Wert ist höchstens …“, „Mindestens … Zeichen“, „Höchstens … Zeichen“, „Der Wert passt nicht zum Format“.

**Einschränkungen des Formulars:**

- bis zu 50 Felder;
- aus einem Feld werden bis zu 5000 Zeichen gespeichert;
- ein Besucher legt über Formulare bis zu 60 neue Einträge pro Stunde an. Darüber hinaus erscheint die Meldung „Zu viele Formularübermittlungen hintereinander, bitte versuchen Sie es später.“

## Tags

In der App gibt es zwei Arten von Tags.

| | Nutzer-Tags | Kontakt-Tags |
|---|---|---|
| Wem sie gehören | Der App selbst — jeder, der sie geöffnet hat, hat sie, auch ohne Bot | Dem Kontakt im Chatbot — dieselben wie in der Kontaktkarte |
| Womit sie geändert werden | Block „Nutzer-Tags“, von Hand in der Nutzerkarte | Block „Kontakt-Tags“. Ein Bot-Kontakt ist nötig |
| Wo sie sichtbar sind | Nutzerkarte im Bereich „Nutzer“ | Kontaktkarte des Bots |
| Variable | `appTags` | `contactTags` |

![Block „Benutzer-Tags“](https://support.watbot.org/_media/de/02-mini-apps/_images/tags-block.webp?v=1791781229)

Nach Tags arbeiten Bedingungen: „Nutzer-Tag“ und „Kontakt-Tag“ mit den Vergleichen „enthält Tags“ und „enthält Tags nicht“. Sie können mehrere Tags aufzählen — einer davon genügt. Groß- und Kleinschreibung spielt beim Vergleich keine Rolle.

Eine Person hat bis zu 500 Tags: Neue darüber hinaus werden nicht hinzugefügt.

## Bedingungen

Bedingungen werden im Block „Bedingung“ und in der „Anzeigebedingung“ eines Elements, eines Bereichs oder eines Buttons der Kopfzeile gleich festgelegt.

- „Wie verknüpfen“: „Alle Bedingungen“ oder „Eine der Bedingungen“.
- Jeder Vergleich hat „Was wird geprüft“, „Vergleich“ und „Wert“. Bis zu 20 Vergleiche.

![Einstellungen des Blocks „Bedingung“: Variable und Benutzer-Tag](https://support.watbot.org/_media/de/02-mini-apps/_images/condition.webp?v=1791781229)

| „Was wird geprüft“ | Worauf geschaut wird |
|---|---|
| „Eine Variable“ | Eine beliebige Variable — ihr Name wird im Feld „Variable“ angegeben |
| „Startquelle“ | Woher die App geöffnet wurde: „Browser“, „Startbildschirm (PWA)“, „Telegram“, „MAX“, „Web-Chat“. Vergleiche — `=` und `!=` |
| „Link-Parameter“ | Was im Link nach `startapp` stand: Daran unterscheiden Sie Herkunft der Besucher und Aktionen |
| „Kontakt-Tag“ | Tags des Kontakts im Chatbot |
| „Nutzer-Tag“ | Tags der App |

Vergleiche: `=`, `!=`, `>`, `<`, `>=`, `<=`, „contains“, „does not contain“, „is empty“, „is not empty“, „enthält Tags“, „enthält Tags nicht“. „Größer“ und „kleiner“ vergleichen Zahlen, „contains“ vergleicht Text ohne Rücksicht auf Groß- und Kleinschreibung. In den „Wert“ können Sie eine Variable einsetzen: `{{ name }}`.

Eine Anzeigebedingung, die sich auf ein Feld desselben Bildschirms bezieht, greift sofort, während die Person das Feld ausfüllt: Zum Beispiel erscheint das Feld „Kommentar“ nur, wenn der Schalter „Lieferung nötig“ eingeschaltet ist.
