Files
sim/apps/docs/content/docs/de/blocks/function.mdx
2025-09-23 18:56:42 -07:00

157 lines
6.0 KiB
Plaintext

---
title: Funktion
---
import { Callout } from 'fumadocs-ui/components/callout'
import { Step, Steps } from 'fumadocs-ui/components/steps'
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
import { Image } from '@/components/ui/image'
Der Funktionsblock ermöglicht die Ausführung von benutzerdefiniertem JavaScript- oder TypeScript-Code in Ihren Workflows. Verwenden Sie ihn, um Daten zu transformieren, Berechnungen durchzuführen oder benutzerdefinierte Logik zu implementieren, die in anderen Blöcken nicht verfügbar ist.
<div className="flex justify-center">
<Image
src="/static/blocks/function.png"
alt="Funktionsblock mit Code-Editor"
width={500}
height={350}
className="my-6"
/>
</div>
## Überblick
Der Funktionsblock ermöglicht Ihnen:
<Steps>
<Step>
<strong>Daten transformieren</strong>: Formate konvertieren, Text analysieren, Arrays und Objekte manipulieren
</Step>
<Step>
<strong>Berechnungen durchführen</strong>: Mathematische Operationen, Statistiken, Finanzberechnungen
</Step>
<Step>
<strong>Benutzerdefinierte Logik implementieren</strong>: Komplexe Bedingungen, Schleifen und Algorithmen
</Step>
<Step>
<strong>Externe Daten verarbeiten</strong>: Antworten parsen, Anfragen formatieren, Authentifizierung verwalten
</Step>
</Steps>
## Funktionsweise
Der Funktionsblock führt Ihren Code in einer sicheren, isolierten Umgebung aus:
1. **Eingabe empfangen**: Zugriff auf Daten aus vorherigen Blöcken über das `input` Objekt
2. **Code ausführen**: Führen Sie Ihren JavaScript/Python-Code aus
3. **Ergebnisse zurückgeben**: Verwenden Sie `return`, um Daten an den nächsten Block zu übergeben
4. **Fehler behandeln**: Integrierte Fehlerbehandlung und Protokollierung
## Remote-Ausführung (E2B)
- **Sprachen**: JavaScript und Python in einer isolierten E2B-Sandbox ausführen.
- **Aktivierung**: Schalten Sie “Remote Code Execution” im Funktionsblock ein.
- **Einsatzbereich**: Schwerere Logik, externe Bibliotheken oder Python-spezifischer Code.
- **Leistung**: Langsamer als lokales JS aufgrund von Sandbox-Start und Netzwerk-Overhead.
- **Hinweise**: Erfordert `E2B_API_KEY` bei lokaler Ausführung. Für niedrigste Latenz verwenden Sie nativ lokales JS (Fast Mode).
## Eingaben und Ausgaben
<Tabs items={['Configuration', 'Variables']}>
<Tab>
<ul className="list-disc space-y-2 pl-6">
<li>
<strong>Code</strong>: Ihr JavaScript/Python-Code zur Ausführung
</li>
<li>
<strong>Timeout</strong>: Maximale Ausführungszeit (standardmäßig 30 Sekunden)
</li>
<li>
<strong>Eingabedaten</strong>: Alle verbundenen Block-Ausgaben sind über Variablen verfügbar
</li>
</ul>
</Tab>
<Tab>
<ul className="list-disc space-y-2 pl-6">
<li>
<strong>function.result</strong>: Der von Ihrer Funktion zurückgegebene Wert
</li>
<li>
<strong>function.stdout</strong>: Console.log()-Ausgabe aus Ihrem Code
</li>
</ul>
</Tab>
</Tabs>
## Beispielanwendungsfälle
### Datenverarbeitungspipeline
<div className="mb-4 rounded-md border p-4">
<h4 className="font-medium">Szenario: API-Antwort in strukturierte Daten umwandeln</h4>
<ol className="list-decimal pl-5 text-sm">
<li>API-Block ruft Rohdaten der Kunden ab</li>
<li>Funktionsblock verarbeitet und validiert Daten</li>
<li>Funktionsblock berechnet abgeleitete Metriken</li>
<li>Antwortblock gibt formatierte Ergebnisse zurück</li>
</ol>
</div>
### Implementierung von Geschäftslogik
<div className="mb-4 rounded-md border p-4">
<h4 className="font-medium">Szenario: Berechnung von Treuepunkten und Stufen</h4>
<ol className="list-decimal pl-5 text-sm">
<li>Agent ruft Kaufhistorie des Kunden ab</li>
<li>Funktionsblock berechnet Treuemetriken</li>
<li>Funktionsblock bestimmt Kundenstufe</li>
<li>Bedingungsblock leitet basierend auf der Stufenhöhe weiter</li>
</ol>
</div>
### Datenvalidierung und -bereinigung
<div className="mb-4 rounded-md border p-4">
<h4 className="font-medium">Szenario: Benutzereingaben validieren und bereinigen</h4>
<ol className="list-decimal pl-5 text-sm">
<li>Benutzereingabe aus Formularübermittlung erhalten</li>
<li>Funktionsblock validiert E-Mail-Format und Telefonnummern</li>
<li>Funktionsblock bereinigt und normalisiert Daten</li>
<li>API-Block speichert validierte Daten in der Datenbank</li>
</ol>
</div>
### Beispiel: Treuepunkte-Rechner
```javascript title="loyalty-calculator.js"
// Process customer data and calculate loyalty score
const { purchaseHistory, accountAge, supportTickets } = <agent>;
// Calculate metrics
const totalSpent = purchaseHistory.reduce((sum, purchase) => sum + purchase.amount, 0);
const purchaseFrequency = purchaseHistory.length / (accountAge / 365);
const ticketRatio = supportTickets.resolved / supportTickets.total;
// Calculate loyalty score (0-100)
const spendScore = Math.min(totalSpent / 1000 * 30, 30);
const frequencyScore = Math.min(purchaseFrequency * 20, 40);
const supportScore = ticketRatio * 30;
const loyaltyScore = Math.round(spendScore + frequencyScore + supportScore);
return {
customer: <agent.name>,
loyaltyScore,
loyaltyTier: loyaltyScore >= 80 ? "Platinum" : loyaltyScore >= 60 ? "Gold" : "Silver",
metrics: { spendScore, frequencyScore, supportScore }
};
```
## Best Practices
- **Funktionen fokussiert halten**: Schreiben Sie Funktionen, die eine Sache gut erledigen, um die Wartbarkeit und Fehlersuche zu verbessern
- **Fehler elegant behandeln**: Verwenden Sie try/catch-Blöcke, um potenzielle Fehler zu behandeln und aussagekräftige Fehlermeldungen bereitzustellen
- **Grenzfälle testen**: Stellen Sie sicher, dass Ihr Code ungewöhnliche Eingaben, Null-Werte und Grenzbedingungen korrekt behandelt
- **Auf Leistung optimieren**: Achten Sie bei großen Datensätzen auf die Berechnungskomplexität und den Speicherverbrauch
- **console.log() zum Debuggen verwenden**: Nutzen Sie die Stdout-Ausgabe zum Debuggen und Überwachen der Funktionsausführung