DokumentationIntegrationen
Verfügbar ab dem Builder-Tarif

Backend-Funktionen

Was die Funktionen sind, die auf dem Server laufen, wann Ihre App eine braucht und was zu tun ist, wenn Ihr Tarif diese Funktion nicht enthält.

Kosten in Credits: die Schritte, in denen die KI baut, verbrauchen Credits.

Die App, die Fabapp erzeugt, läuft im Browser der Menschen, die sie nutzen. Fast alles passt dort hinein: Bildschirme, Daten, Anmeldung, KI, die Integrationen aus dem Katalog. Manche Aufgaben können jedoch nicht im Browser laufen, und für sie gibt es die Backend-Funktion.

Was das ist

Eine Backend-Funktion ist ein Stück Code, das auf dem Server läuft, außerhalb der App, die auf dem Bildschirm erscheint. Geschrieben wird sie von der KI, wenn die Bitte es verlangt: Sie legt die Datei functions/<name>.ts an und registriert die Funktion in fab.functions.json. Die Bildschirme der App rufen die Funktion beim Namen auf, warten auf die Antwort und zeigen das Ergebnis.

Sie müssen nichts schreiben. Die Dateien sind im Tab Code sichtbar, im Ordner functions.

Wann Sie eine brauchen

Drei Situationen, und in allen ist die Antwort eine Backend-Funktion:

  • eine externe API oder ein Feed, der im Browser blockiert ist. Viele Websites erlauben dem Browser nicht, ihre Daten direkt von einer anderen Adresse aus zu lesen (die Sperre heißt CORS). Das ist der typische Fall bei RSS-Feeds von Nachrichtenportalen. Der Server hat diese Sperre nicht: Die Funktion holt den Inhalt und liefert ihn an die App;
  • ein geheimer Schlüssel. Alles, was in der App steht, kann jeder lesen, der die App öffnet. Der API-Schlüssel eines kostenpflichtigen Dienstes darf dort nie landen. In der Funktion bleibt er auf dem Server. Um den Schlüssel zu speichern, nutzen Sie den Unter-Tab Externe APIs im Tab Integrationen: Er trägt die API und die Zugangsdaten ein, und die Funktion nutzt sie beim Namen;
  • eine Berechnung oder Regel, auf die sich die App verlassen muss. Läuft die Regel im Browser, kann die Person sie verändern. Beispiele: einen Rabatt anwenden, einen Platz „nur, wenn er noch frei ist“ reservieren, etwas vor dem Speichern prüfen.

Um die eigenen Daten der App zu lesen und zu schreiben, die KI oder die Integrationen aus dem Katalog zu nutzen, ist keine Funktion nötig: Das kann die App schon ohne sie.

Tarif

Backend-Funktionen sind eine Funktion des Tarifs Builder. In den Tarifen Free und Starter:

  • sagt der Assistent, dass die Bitte Code auf dem Server braucht und dass das vom Tarif abhängt, und bietet eine Alternative oder das Upgrade an;
  • wird trotzdem eine neue Funktion geschrieben, entfernt die Plattform sie beim Build aus der App, weil sie bei jedem Aufruf abgelehnt würde.

Was der Assistent nie versprechen darf, ist eine „Route“ der App selbst, etwa /api/rss: Die App hat keinen eigenen Server, und diese Adresse existiert nicht.

Wer die Funktion aufrufen darf

Jede Funktion legt fest, wer sie nutzen darf:

  • jeder Besucher, ohne Anmeldung (zum Beispiel ein Kontaktformular auf einer offenen Seite);
  • nur angemeldete Personen (der Standard, wenn nichts festgelegt ist);
  • nur Personen mit einer Rolle, etwa Administrator.

Sagen Sie in Ihrer Bitte, wer die Funktion nutzen darf. Innerhalb der Funktion hat der Code Zugriff auf alle Daten der App, ohne die Zugriffsregeln: Deshalb ist die Prüfung, wer aufruft, so wichtig.

Kosten

  • die Funktion zu schreiben ist Arbeit der KI und verbraucht KI-Credits, wie jedes Bauen;
  • jeder Aufruf zählt als eine Anfrage der App;
  • nutzt die Funktion KI, verschickt sie Benachrichtigungen oder ruft sie eine Integration auf, verbraucht diese Nutzung Integrations-Credits, genau wie außerhalb der Funktion.

Ohne Builder: die Alternativen

Wenn Sie den Tarif jetzt nicht wechseln möchten, lassen sich dieselben Probleme mit einem eigenen Zwischendienst außerhalb von Fabapp lösen.

Ein eigener Flow in n8n, Make oder Pipedream

Das ist die empfohlene Alternative. In diesen Diensten bauen Sie einen Flow, der mit einem Webhook beginnt (einer Adresse, die den Aufruf empfängt), die Arbeit des Servers erledigt und das Ergebnis zurückgibt.

  1. legen Sie im Dienst einen Flow mit Webhook-Auslöser an;
  2. holen Sie im Flow den Feed oder rufen Sie die API auf. Gibt es einen geheimen Schlüssel, bleibt er im Dienst gespeichert, nie in der App;
  3. lassen Sie den Flow mit den Daten als JSON antworten;
  4. stellen Sie die Antwort so ein, dass sie Aufrufe von der Adresse Ihrer App annimmt (die CORS-Option oder die erlaubten Ursprünge des Dienstes). Ohne das blockiert der Browser die Antwort, genau wie er den Feed blockiert hat;
  5. kopieren Sie die Webhook-URL und fügen Sie sie in den Chat ein, mit der Bitte: „hole die Daten von dieser URL und zeige sie auf dem Nachrichtenbildschirm“.

Worauf Sie achten sollten:

  • die URL des Flows ist in der App sichtbar, und jeder kann sie aufrufen. Lassen Sie den Flow ungeschützt nichts ausführen, was Geld kostet oder Daten verändert;
  • der Flow läuft in Ihrem Konto bei dem Dienst, mit den Grenzen und dem Preis des dortigen Tarifs.

Ein öffentlicher RSS-Umwandlungsdienst

Es gibt Dienste im Internet, die einen RSS-Feed lesen und den Inhalt browserfertig zurückgeben. Das funktioniert, ist aber nicht ideal:

  • es ist ein Dritter: Fällt er aus, fällt der Bildschirm Ihrer App mit aus;
  • er hat meist ein Nutzungslimit, und die App kann stehen bleiben, wenn es erreicht ist;
  • er sieht alles, was Ihre App über ihn liest.

Für einen Prototyp reicht das. Für eine App im Einsatz ist der eigene Flow oder die Backend-Funktion vorzuziehen.

Was Sie nicht tun sollten

Legen Sie nie einen geheimen Schlüssel in die App, weder über eine Bitte an die KI noch durch Einfügen in den Code. Alles, was in der App steht, erreicht den Browser der Menschen, die sie nutzen, und jeder kann es lesen. Braucht die Aufgabe einen Schlüssel, braucht sie einen Server: die Backend-Funktion oder einen eigenen Zwischendienst.

Woran Sie erkennen, dass es funktioniert

  • der Tab Code zeigt die Datei in functions/ und den Eintrag der Funktion in fab.functions.json;
  • der Bildschirm, der die Funktion nutzt, zeigt das Ergebnis (die Einträge des Feeds, den berechneten Wert);
  • zeigt der Bildschirm einen Fehler, sagen Sie dem Assistenten, was erscheint. Die häufigsten Fehler sind, dass die Funktion eine Anmeldung von jemandem verlangt, der nicht angemeldet ist, und dass der Tarif des Kontos keine Funktionen enthält.

Häufige Probleme

  • Der Assistent sagt, es sei ein anderer Tarif nötig. Das Konto ist im Free oder Starter. Wechseln Sie zum Builder oder nutzen Sie eine der Alternativen oben;
  • Der Bildschirm verlangt beim Aufruf der Funktion eine Anmeldung. Die Funktion steht auf dem Standard (nur angemeldete Personen). Soll sie für Besucher offen sein, bitten Sie im Chat darum;
  • Das Konto hat den Builder verlassen und der Bildschirm funktioniert nicht mehr. Außerhalb des Builders laufen die Funktionen nicht mehr. Bauen Sie den Bildschirm mit einer der Alternativen neu oder kehren Sie zum Builder zurück;
  • Der Flow in n8n, Make oder Pipedream antwortet, aber die App zeigt nichts. Fast immer ist es CORS: Der Flow muss Aufrufe von der Adresse der App erlauben.
Fabapp öffnen
Verwandt
Integrationen aktivierenWebhooks und Benachrichtigungen: Webhook (ausgehend), Slack, Discord und TelegramÄnderungen verlangen, ohne Funktionierendes zu zerstören