
# Benutzerdefinierte Funktionen

Mit benutzerdefinierten Funktionen kann Ihr KI-Bot während Live-Gesprächen eine Verbindung zu anderen Systemen herstellen. Anstatt zu sagen: „Ich prüfe das und melde mich bei Ihnen“, kann der Bot einen Bestellstatus abrufen, den Lagerbestand prüfen oder einen Datensatz in Ihrem CRM (Customer Relationship Management-System – die Software, die Sie zur Nachverfolgung von Leads und Kunden verwenden, wie HubSpot oder Salesforce) erstellen – alles in Echtzeit, während der Kunde wartet.


---

## Benutzerdefinierte Funktionen vs. Webhooks

Dies ist der häufigste Punkt für Verwirrung, daher lohnt es sich, dies zu klären, bevor Sie etwas entwickeln.

| | Webhooks | Benutzerdefinierte Funktionen |
|---|----------|------------------|
| **Richtung** | Einseitig (Fire-and-Forget) | Zweiseitig (Aufruf und Warten) |
| **Was der Bot tut** | Sendet eine Benachrichtigung, wenn etwas passiert, und macht dann weiter. | Ruft auf, **pausiert, wartet auf die Antwort** und verwendet das Ergebnis, um die Unterhaltung fortzusetzen. |
| **Sichtbarkeit für die Unterhaltung** | Das nachgelagerte Ergebnis ist für den Bot unsichtbar – er erfährt nie, was passiert ist. | Die Antwort wird direkt in die KI zurückgespeist, sodass der Bot sie zitieren, analysieren und dem Kunden damit antworten kann. |
| **Am besten geeignet für** | Protokollierung von Ereignissen, Synchronisierung von Daten mit einem CRM, Auslösen externer Automatisierungen (Zapier, Make, n8n). | Alles, wofür der Bot eine **Antwort** benötigt, bevor er antworten kann – Live-Abfragen, Echtzeit-Preise, spontane Inhaltserstellung. |

**Wann Sie was wählen sollten:** Wenn Sie einem anderen System lediglich *mitteilen* müssen, dass etwas passiert ist, verwenden Sie einen Webhook – eine automatisierte Einwegnachricht, die an ein anderes System gesendet wird (siehe **Einstellungen → Integrationen → Webhooks**). Wenn der Bot etwas von einem anderen System *lernen* muss, bevor er das Gespräch fortsetzen kann, verwenden Sie eine benutzerdefinierte Funktion.

---

## Beispiele dafür, was benutzerdefinierte Funktionen ermöglichen

Da die Antwort in die Unterhaltung zurückfließt, eröffnen benutzerdefinierte Funktionen Möglichkeiten, die Webhooks einfach nicht bieten können:

- **Live-Lagerbestandsabfrage für Shopify oder WooCommerce** – Bevor der Bot dem Kunden ein Angebot macht, prüft er den Bestand in Echtzeit und antwortet: „Ja, wir haben 12 Stück in Größe M“, anstatt „Ich prüfe das und melde mich bei Ihnen“.
- **Dynamische Preisgestaltung aus einem Google Sheet** – Ihr Vertriebsteam aktualisiert die Preise in einer Tabelle; der Bot liest die aktuelle Zeile mitten im Gespräch und nennt den aktuellen Preis, ohne dass jemand die KI-Konfiguration anfassen muss.
- **Voice-KI-Rückruf-Agent** – Wenn der Bot einen Lead qualifiziert, löst er einen Voice-Agenten aus (z. B. einen auf ElevenLabs basierenden Anrufer), der den Lead innerhalb von Minuten zurückruft, und bestätigt dem Kunden: „Großartig, erwarten Sie in den nächsten 5 Minuten einen Anruf“.
- **Individuelles Angebots-PDF, generiert und versendet während des Chats** – Der Bot sammelt die Anforderungen, ruft Ihren Angebots-Generator auf, erhält eine PDF-URL und sagt dem Kunden: „Ich habe Ihnen gerade Ihr Angebot per E-Mail gesendet – prüfen Sie Ihren Posteingang“.

---

## Was können benutzerdefinierte Funktionen tun?

Betrachten Sie benutzerdefinierte Funktionen als Superkräfte für Ihren Bot, die über das bloße Chatten hinausgehen. Hier sind Beispiele aus der Praxis:

- **Bestellverfolgung** – Ein Kunde fragt: „Wo ist meine Bestellung?“, der Bot prüft Ihr E-Commerce-System und antwortet mit dem Versandstatus und dem Tracking-Link.
- **Lagerbestandsprüfung** – „Haben Sie das in Größe 10?“ Der Bot prüft Ihr Lagersystem und gibt eine Antwort in Echtzeit.
- **CRM-Updates** – Wenn der Bot einen Lead qualifiziert, erstellt oder aktualisiert er automatisch einen Datensatz in HubSpot, Salesforce oder einem anderen CRM.
- **Angebotserstellung** – Der Bot sammelt die Anforderungen des Kunden und generiert ein personalisiertes Angebot aus Ihrem Preissystem.
- **Buchung** – Der Bot erstellt einen Termin in Ihrem externen Buchungssystem.
- **Rabattüberprüfung** – „Ist dieser Gutscheincode gültig?“ Der Bot prüft dies und gibt eine Bestätigung.
- **Kontoabfrage** – Ein wiederkehrender Kunde wird automatisch erkannt und seine Kontodaten werden abgerufen.

**Der Kunde sieht nie, was hinter den Kulissen passiert.** Er erlebt einfach einen Bot, der seine Fragen mit echten, aktuellen Informationen beantworten kann.

---

## Wie benutzerdefinierte Funktionen funktionieren (die einfache Version)

Hier ist, was passiert, wenn eine benutzerdefinierte Funktion während einer Unterhaltung ausgelöst wird:

1. **Der Kunde fragt etwas**, das Echtzeitdaten erfordert (z. B. „Wo ist meine Bestellung?“)
2. **Der Bot erkennt**, dass er eine benutzerdefinierte Funktion verwenden muss, um zu antworten
3. **Der Bot sammelt** alle fehlenden Informationen vom Kunden (z. B. „Wie lautet Ihre Bestellnummer?“)
4. **Die Plattform sendet eine Anfrage** an Ihr System (Ihre Website, Ihr CRM oder ein anderes Tool) mit den relevanten Details
5. **Ihr System antwortet** mit den Daten (z. B. Bestellstatus, Sendungsverfolgungsnummer, Lieferdatum)
6. **Der Bot liest die Antwort** und formuliert eine natürliche Antwort: „Ihre Bestellung ORD-4582 wurde versandt und sollte bis Freitag eintreffen!“

### Was ein benutzerdefinierter Funktionsaufruf kostet

Jeder benutzerdefinierte Funktionsaufruf wird gemäß der KI-Qualitätsstufe Ihres Agenten abgerechnet:

| KI-Qualitätsstufe | Credits pro benutzerdefiniertem Funktionsaufruf | Mit verbundenem eigenen Anthropic-Schlüssel (BYOK) |
|---|---|---|
| Pro | 1 Credit | 0 Credits – läuft über Ihren Schlüssel |
| Economy (veraltet) | 0,5 Credits | 0 Credits – läuft über Ihren Schlüssel |
| Max | 0,25 Credits | weiterhin 0,25 Credits, wird auch bei verbundenem eigenen Schlüssel berechnet, da Max auf unserem eigenen Modell läuft |
| Mini | 0,15 Credits | weiterhin 0,15 Credits, wird auch bei verbundenem eigenen Schlüssel berechnet, da Mini auf unserem eigenen Modell läuft |

---

## Einrichten einer benutzerdefinierten Funktion (Schritt für Schritt)

1. Klicken Sie in der Hauptseitenleiste unter **AI Studio** auf **Custom Functions**.


2. Klicken Sie oben rechts auf die grüne Schaltfläche **+ Add Function** (oder **New function**).


Die Liste der benutzerdefinierten Funktionen zeigt eine Tabelle mit den folgenden Spalten:

| Spalte | Was sie anzeigt |
|--------|--------------|
| **Name** | Der Name der Funktion (z. B. `check_order_status`) |
| **Beschreibung** | Eine kurze Zusammenfassung der Funktion (in der Tabelle auf 50 Zeichen gekürzt) |
| **Methode** | Die verwendete HTTP-Methode, dargestellt als farbiger Badge: GET (blau), POST (grün), PUT (orange), DELETE (rot) |
| **Erstellt** | Das Datum, an dem die Funktion erstellt wurde |

Dies erleichtert es, Ihre Funktionen auf einen Blick zu erfassen und die benötigte zu finden.

### Schritt 1: Vergeben Sie einen Namen und eine Beschreibung


| Feld | Was einzugeben ist | Beispiel |
|-------|--------------|---------|
| **Name** | Ein kurzer Name mit Buchstaben, Zahlen und Unterstrichen | `check_order_status` |
| **Beschreibung** | Erklären Sie, was diese Funktion tut (die KI liest dies, um zu entscheiden, wann sie verwendet werden soll) | „Sucht den aktuellen Status einer Kundenbestellung anhand der Bestellnummer“ |
| **Zweck (KI-Aktion)** | Sagen Sie der KI genau, wann und wie sie diese Funktion verwenden soll | „Verwenden Sie dies, wenn ein Kunde nach seinem Bestellstatus, Versand oder der Lieferung fragt. Fragen Sie zuerst nach der Bestellnummer.“ |

**Tipp:** Seien Sie in der Beschreibung und dem Zweck sehr präzise. Je klarer Sie definieren, wann die Funktion verwendet werden soll, desto zuverlässiger wird der Bot sie zum richtigen Zeitpunkt einsetzen.

### Schritt 2: Einrichten der Verbindung

Sie müssen der App mitteilen, wohin die Anfrage gesendet werden soll:

| Feld | Was einzugeben ist | Beispiel |
|-------|--------------|---------|
| **URL** | Die Webadresse des Endpunkts Ihres Systems (die spezifische Adresse in Ihrem System, die die Anfrage empfängt und Daten zurücksendet) | `https://api.yourstore.com/v1/orders/status` |
| **Methode** | Die Art der zu sendenden Anfrage | Siehe Optionen unten |

**Welche Methode soll gewählt werden:**

| Methode | Wann zu verwenden |
|--------|---------------|
| **GET** | Informationen abrufen (Bestellstatus, Inventar, Kontodetails) |
| **POST** | Neue Datensätze erstellen (Support-Tickets, Leads, Buchungen) oder komplexe Abfragen |
| **PUT** | Einen bestehenden Datensatz vollständig aktualisieren |
| **PATCH** | Einen Teil eines bestehenden Datensatzes aktualisieren |
| **DELETE** | Einen Datensatz entfernen |

Wenn Sie sich nicht sicher sind, welche Methode Sie verwenden sollen, fragen Sie Ihren Entwickler oder prüfen Sie die Dokumentation des Systems, mit dem Sie eine Verbindung herstellen. **GET** (für Abfragen) und **POST** (zum Erstellen von Datensätzen) sind am gebräuchlichsten.

### Schritt 3: Authentifizierungs-Header hinzufügen

Die meisten Systeme erfordern eine Authentifizierung, um Anfragen zu akzeptieren. Fügen Sie alle erforderlichen Header hinzu:

| Header | Beispielwert |
|--------|--------------|
| `Authorization` | `Bearer your-api-key-here` |
| `Content-Type` | `application/json` |

**Sicherheitshinweis:** Verwenden Sie einen dedizierten API-Schlüssel mit eingeschränkten Berechtigungen. Verwenden Sie keine Anmeldedaten auf Administratorebene.

**Wo Sie API-Schlüssel finden:** Überprüfen Sie die Einstellungen oder den Entwicklerbereich des Systems, mit dem Sie eine Verbindung herstellen (z. B. Ihr CRM, Ihre E-Commerce-Plattform oder Ihr Buchungstool).

### Schritt 4: Eingabe definieren (Was der Bot sendet)

Eingabeparameter sind die Informationen, die der Bot aus dem Gespräch sammelt und an Ihr System sendet.

Für jeden Parameter geben Sie Folgendes an:

| Eigenschaft | Bedeutung |
|----------|--------------|
| **Name** | Der Parametername (muss mit dem übereinstimmen, was Ihr System erwartet) |
| **Typ** | Die Art der Daten (Text, Zahl, wahr/falsch usw.) |
| **Beschreibung** | Sagen Sie der KI, was diese Information ist und wo sie im Gespräch zu finden ist |
| **Erforderlich** | Wenn auf „Ja“ gesetzt, fragt der Bot den Kunden nach dieser Information, bevor er fortfährt |

**Verfügbare Parametertypen:**

| Typ | Bedeutung |
|------|--------------|
| **string** | Text (Namen, Bestellnummern, Adressen) |
| **number** | Ein numerischer Wert (Menge, Preis) |
| **boolean** | Wahr oder falsch (Ja/Nein-Werte) |
| **array** | Eine Liste von Elementen. Wird als echte JSON-Liste gesendet – unter **Run Test** können Sie sie als `[8624]`, `["a", "b"]` oder einfach durch Kommas getrennt (`8624, 8625`) eingeben, und sie wird für Sie konvertiert. Wenn Ihre API strikt ist, was die Liste enthält – z. B. nur Zahlen –, legen Sie den optionalen **Elementtyp** neben dem Typ fest, und jeder Wert in der Liste wird in diesen konvertiert. |
| **query_param** | Text, der als URL-Parameter anstelle des Request-Bodys gesendet wird. Verwenden Sie dies, wenn Ihre API Daten in der URL erwartet (z. B. `?order_id=123`). |

Jeder Parameter verfügt außerdem über ein optionales Feld **Request body path**. Normalerweise wird ein Parameter als Feld auf oberster Ebene im Request-Body (oder als Query-String-Wert für den Typ `query_param`) gesendet. Wenn Ihr Endpunkt stattdessen eine Verschachtelung erwartet – z. B. `{"order": {"id": "ORD-123"}}` –, setzen Sie den Pfad auf `order.id`, und die Plattform verschachtelt den Wert dort für Sie.


**Beispiel: Für eine Abfrage des Bestellstatus könnten Sie Folgendes definieren:**

- **order_number** (string, erforderlich): „Die Bestellnummer des Kunden. Beginnt normalerweise mit ORD- gefolgt von Ziffern. Fragen Sie den Kunden danach, falls er sie noch nicht genannt hat.“
- **email** (string, optional): „Die E-Mail-Adresse des Kunden zur zusätzlichen Verifizierung. Nur erforderlich, wenn die Bestellnummer allein keinen Treffer ergibt.“

### Was Ihr System automatisch empfängt

Zusätzlich zu den von Ihnen definierten Eingabeparametern fügt die Plattform bei jeder Anfrage automatisch Systemdaten hinzu. Ihr Endpunkt empfängt diese in einem `system`-Feld:

| Systemfeld | Was es enthält |
|-------------|----------------|
| `system.contactId` | Die Plattform-ID des Kontakts im Gespräch |
| `system.campaignId` | Die Kampagnen-ID, zu der das Gespräch gehört |
| `system.userId` | Ihre Benutzer-ID |
| `system.channel` | Der Messaging-Kanal (z. B. `"whatsapp"`, `"instagram"`) |
| `system.contact` | Der vollständige Kontaktdatensatz (Name, Telefonnummer, E-Mail, Tags usw.) |
| `system.campaign` | Die Kampagnenkonfiguration |
| `system.test` | `true`, wenn dies ein „Ausprobieren“-Test ist, `false` für Live-Gespräche |

Dies ist nützlich, wenn Ihr System den Kontakt identifizieren, prüfen muss, welche Kampagne die Funktion ausgelöst hat, oder sich während des Testens anders verhalten soll.

> **Benötigen Sie die Systemdaten nicht?** Aktivieren Sie den Schalter **Systemdaten überspringen** im Funktions-Builder. Der Bot sendet dann nur die von Ihnen definierten Eingabeparameter – ohne Kontakt- oder Kampagnendaten. Verwenden Sie dies, wenn Ihr Endpunkt unerwartete Felder ablehnt oder Sie einfach eine schlankere Nutzlast wünschen.

### Schritt 5: Testen Sie die Funktion und lassen Sie den Bot die Antwort lesen

Normalerweise müssen Sie Antwortfelder überhaupt nicht zuordnen. Sobald Ihr Endpunkt antwortet, liest der Bot die gesamte JSON-Antwort und verwendet die **Beschreibung** und den **Zweck (KI-Aktion)** Ihrer Funktion – sowie die Beschreibung jedes Parameters –, um zu ermitteln, was wichtig ist, und dies natürlich darzustellen. Eine klare Beschreibung der Funktion selbst („Ruft den aktuellen Status einer Kundenbestellung einschließlich Versandinformationen und Sendungsverfolgung ab“) leistet hier mehr Arbeit als eine Feld-für-Feld-Zuordnung.

Wenn Ihr Endpunkt eine große Antwort zurückgibt und der Bot nur einige wenige spezifische Werte sehen soll, öffnen Sie den Bereich **Response mapping** (standardmäßig eingeklappt, direkt über „Test“). Jede Zeile wählt ein Feld auf oberster Ebene aus der Antwort aus: **Response field** ist der Feldname in der JSON-Antwort Ihrer API, und **Output field** ist der Name, unter dem der Bot ihn empfängt. Wenn mindestens eine Zeile ausgefüllt ist, erhält der Bot nur Ihre zugeordneten Werte anstelle des vollständigen Antwort-Bodys. Lassen Sie den Bereich leer, um das Standardverhalten mit vollständiger Antwort beizubehalten.


Bevor Sie speichern, verwenden Sie den Bereich **Test** unten im Builder, um die Anfrage genau wie konfiguriert auszuführen und die tatsächliche Antwort zu sehen, ohne die App zu verlassen:


Die Antwort, die Sie hier sehen, ist die unverarbeitete Antwort des Endpunkts. Wenn Sie oben ein **Antwort-Mapping** eingerichtet haben, erhält der Bot in einem echten Chat nur diese zugeordneten Felder – der Test zeigt jedoch immer die vollständige, unverarbeitete Antwort an, damit Sie sehen können, was für das Mapping verfügbar ist. Wenn etwas nicht korrekt aussieht (unerwartete Feldnamen, zusätzliche Verschachtelung), korrigieren Sie dies an Ihrem Endpunkt oder passen Sie Ihr Mapping an.

---

## Zuweisen von Funktionen zu einem Agenten

Nachdem Sie eine benutzerdefinierte Funktion erstellt haben, müssen Sie jedem Agenten mitteilen, welche Funktionen er verwenden darf:

1. Öffnen Sie den [Agenten](../ai-agents/ai-agents.md) unter **AI Studio → KI-Agenten**.
2. Gehen Sie zum Tab **KI-Fähigkeiten**. (Für eine Kampagne, die ihre eigenen KI-Einstellungen direkt und nicht über einen separaten Agenten verwaltet, erscheint dieselbe Liste stattdessen im Schritt **KI-Fähigkeiten** der Kampagne selbst.)
3. Sie sehen eine Liste aller von Ihnen erstellten benutzerdefinierten Funktionen. Aktivieren Sie jede Funktion, die der Bot dieses Agenten aufrufen können soll.
4. Klicken Sie unten auf **Änderungen speichern**. Die Auswahl wird erst nach dem Speichern wirksam.


Nur zugewiesene Funktionen stehen dem Bot für diesen Agenten zur Verfügung. Dies verhindert, dass der Bot versehentlich Funktionen verwendet, die nicht relevant sind.

---

## Testen Ihrer benutzerdefinierten Funktionen

Bevor Sie live gehen, testen Sie gründlich:

1. **Führen Sie den integrierten Test aus** - Verwenden Sie den Bereich **Test** innerhalb des Funktions-Builders (siehe oben) für eine schnelle Überprüfung, ohne die App zu verlassen – geben Sie realistische Werte ein und klicken Sie auf Test ausführen.
2. **Testen Sie den Endpunkt Ihres Systems direkt** - Für die vollständige Checkliste unten geht ein dediziertes Tool wie Postman (oder Ihr Entwickler) tiefer als ein einzelner Testlauf.
3. **Testen Sie im Bereich „Ausprobieren“** - Simulieren Sie ein Gespräch, in dem der Kunde etwas fragt, das die Funktion auslösen sollte.
4. **Überprüfen Sie die Antwort** - Stellen Sie sicher, dass der Bot die Daten korrekt liest und präsentiert.
5. **Testen Sie Fehlerszenarien** - Was passiert, wenn der Kunde eine ungültige Bestellnummer angibt? Was ist, wenn Ihr System vorübergehend nicht verfügbar ist?

### Wenn der Test 401 oder 403 zurückgibt

Ein 401 oder 403 bedeutet, dass Ihr Endpunkt die Anfrage erhalten und abgelehnt hat. Der Hinweis darauf ist, dass **nichts in Ihren eigenen Protokollen erscheint** — die meisten Tools lehnen einen nicht autorisierten Aufruf ab, bevor sie den Workflow überhaupt starten. Daher gibt es auf Ihrer Seite nichts zu sehen und es sieht so aus, als wäre die Anfrage nie angekommen.

Fast immer handelt es sich um eine Diskrepanz bei der Authentifizierung: Ihr Endpunkt erwartet eine bestimmte Art von Anmeldeinformationen und die Funktion sendet eine andere. Überprüfen Sie, ob der Header, den Sie in [Schritt 3](#step-3-add-authentication-headers) hinzugefügt haben, genau der ist, den Ihr System erwartet.

Die häufigste Variante hierfür ist ein Webhook, der mit **Basic Auth** geschützt ist (n8n, Make und die meisten selbst gehosteten Tools bieten dies als Kontrollkästchen direkt am Webhook an), während die Funktion einen benutzerdefinierten geheimen Header wie `X-My-Secret` sendet. Basic Auth akzeptiert nur einen `Authorization`-Header, daher wird ein benutzerdefinierter Header ignoriert und der Aufruf abgelehnt. Sie haben zwei Möglichkeiten:

- **Deaktivieren Sie Basic Auth** am Webhook und überprüfen Sie stattdessen Ihren benutzerdefinierten Header innerhalb des Workflows.
- **Behalten Sie Basic Auth bei** und fügen Sie der Funktion einen `Authorization`-Header hinzu, dessen Wert das Wort `Basic` gefolgt von Ihrem base64-kodierten `username:password` ist.

Beide Varianten funktionieren – stellen Sie nur sicher, dass beide Seiten übereinstimmen.

### Wenn der Test 404 zurückgibt

Die Endpunkt-URL ist falsch oder der Workflow ist nicht veröffentlicht. Speziell in n8n hat jeder Webhook eine separate **Test**-URL und **Produktions**-URL, und die Test-URL empfängt nur Daten, während der Editor geöffnet ist. Kopieren Sie die Produktions-URL und stellen Sie sicher, dass der Workflow aktiv ist.

### Fehler in „Ausprobieren“ und „Chats“ anzeigen

Wenn die KI während eines Gesprächs eine benutzerdefinierte Funktion aufruft und der Aufruf fehlschlägt – falsche Anmeldedaten, Endpunkt nicht erreichbar, Zeitüberschreitung –, wird dies nun im Gespräch angezeigt: Eine rote Markierung **„(Funktionsname) fehlgeschlagen“** erscheint im Thread, sowohl im **Ausprobieren**-Tab des Agenten als auch in echten Gesprächen unter **Chats**. Klicken Sie auf die Markierung, um die Details zu erweitern: den Statuscode, den Ihr Endpunkt zurückgegeben hat, sowie dessen Antworttext. Dies reicht normalerweise aus, um genau zu erkennen, was korrigiert werden muss (ein `401` mit einer „unauthorized“-Meldung bedeutet, dass der Authentifizierungs-Header falsch ist; eine Zeitüberschreitung bedeutet, dass Ihr Endpunkt länger als 30 Sekunden benötigt hat).

Erfolgreiche Aufrufe zeigen ebenfalls eine Markierung an – klicken Sie darauf, um zu sehen, was Ihr Endpunkt tatsächlich zurückgesendet hat. Dies ist der schnellste Weg, um eine Integration durchgängig zu debuggen: Führen Sie das Testgespräch unter „Ausprobieren“ durch und klicken Sie dann auf die Funktionsmarkierung, um das tatsächliche Ergebnis der Anfrage zu sehen, ohne die Seite verlassen zu müssen.

---

## Vollständiges Beispiel: Abfrage des Bestellstatus

Hier ist ein vollständig konfiguriertes Beispiel, das Sie als Vorlage verwenden können:

**Grundlegende Informationen:**
- **Name:** `check_order_status`
- **Beschreibung:** "Ruft den aktuellen Status einer Kundenbestellung ab, einschließlich Versandinformationen und Sendungsverfolgung"
- **KI-Aktion:** "Rufen Sie diese Funktion auf, wenn ein Kunde nach seinem Bestellstatus fragt, wo sich sein Paket befindet oder wann es ankommen wird. Fragen Sie immer zuerst nach der Bestellnummer."

**Verbindung:**
- **URL:** `https://api.mystore.com/orders/lookup`
- **Methode:** POST

**Header:**
- `Authorization`: `Bearer sk_live_abc123`
- `Content-Type`: `application/json`

**Eingabeparameter:**
- `order_number` (Text, erforderlich): "Die vom Kunden angegebene Bestellnummer"
- `customer_email` (Text, optional): "E-Mail-Adresse des Kunden zur zusätzlichen Verifizierung"

**Keine Antwortzuordnung erforderlich** – mit einer klaren Beschreibung und einer oben festgelegten KI-Aktion liest der Bot jedes JSON, das Ihr Endpunkt zurückgibt (Status, Tracking-Nummer, Lieferdatum, Artikel), und findet selbst heraus, wie er darüber sprechen soll.

**So sieht das Gespräch aus:**

> **Kunde:** Hey, wo ist meine Bestellung?
>
> **Bot:** Hallo! Ich helfe Ihnen gerne dabei, Ihre Bestellung zu überprüfen. Könnten Sie mir bitte Ihre Bestellnummer nennen?
>
> **Kunde:** Sie lautet ORD-78234
>
> **Bot:** Ich schaue kurz für Sie nach...
>
> Ihre Bestellung ORD-78234 wurde versandt und ist auf dem Weg! Das voraussichtliche Lieferdatum ist der 10. März. Sie können Ihr Paket hier verfolgen: https://tracking.example.com/1Z999AA1
>
> Kann ich Ihnen sonst noch bei etwas behilflich sein?

---

## Vollständiges Beispiel: Shopify-Bestellstatus

Wenn der Shop auf Shopify läuft, benötigen Sie keinen Entwickler, um einen Lookup-Endpunkt zu erstellen – das eigene System von Shopify kann Bestellfragen direkt beantworten. (Für Produkt- und Lagerbestandsfragen in einem Shopify-Shop benötigen Sie überhaupt keine benutzerdefinierte Funktion: Verbinden Sie stattdessen den integrierten Server des Shops – siehe [Verbinden eines Shopify-Shops](mcp-servers.md#ready-made-example-connect-a-shopify-store).)

**Erstellen Sie zuerst ein Zugriffstoken in Shopify.** Shopify hat dies im Jahr 2026 geändert: Apps können nicht mehr innerhalb des Shopify-Adminbereichs erstellt werden, und der neue App-Bildschirm liefert Ihnen eine **Client-ID** und ein **Client-Secret** anstelle eines fertigen Tokens. Die folgenden Schritte wandeln diese in ein dauerhaftes Token um. Planen Sie etwa zehn Minuten ein, einmal pro Shop. (Wenn der Shop bereits eine ältere App hat, die auf die alte Weise erstellt wurde, funktioniert deren vorhandenes Token weiterhin – überspringen Sie diesen Teil und gehen Sie direkt zur benutzerdefinierten Funktion unten.)

1. Gehen Sie zum Shopify Dev Dashboard unter [dev.shopify.com](https://dev.shopify.com), öffnen Sie Ihre Organisation und klicken Sie auf **Apps → App erstellen**. Geben Sie ihr einen Namen wie `Order lookup`.
2. Geben Sie der App die Berechtigung **read_orders**, veröffentlichen Sie eine Version und installieren Sie die App im Shop.
3. Öffnen Sie die **Einstellungen** der App und fügen Sie die Webadresse des Shops (zum Beispiel `https://www.yourstore.com/`) zu den erlaubten Weiterleitungs-URLs hinzu. Speichern.
4. Kopieren Sie weiterhin in den **Einstellungen** die **Client-ID** und das **Client-Geheimnis**.
5. Öffnen Sie in einem Browser, in dem Sie im Shopify-Adminbereich dieses Shops angemeldet sind, die unten stehende Adresse und ersetzen Sie den Shop-Namen, die Client-ID und die Weiterleitungsadresse durch Ihre eigenen:
   `https://YOUR-STORE.myshopify.com/admin/oauth/authorize?client_id=YOUR-CLIENT-ID&scope=read_orders&redirect_uri=https://www.yourstore.com/&state=12345`
   Bestätigen Sie den erscheinenden Bildschirm. Der Browser landet auf Ihrer Weiterleitungsadresse und die Adressleiste enthält nun `code=` gefolgt von einem langen Wert — kopieren Sie diesen Wert. Er ist nur für wenige Minuten gültig, gehen Sie also direkt zum nächsten Schritt.
6. Tauschen Sie diesen Code gegen das Token aus, was Sie innerhalb von <span data-t="appName">Your AI Connector</span> tun können. Setzen Sie im Builder für benutzerdefinierte Funktionen die **Methode** auf POST und die **URL** auf `https://YOUR-STORE.myshopify.com/admin/oauth/access_token`, fügen Sie drei Texteingabeparameter namens `client_id`, `client_secret` und `code` hinzu, klicken Sie dann auf **Test**, geben Sie die drei Werte ein und führen Sie ihn aus. Die Antwort enthält `access_token` — das ist Ihr permanentes Token. Kopieren Sie es an einen sicheren Ort, leeren Sie dann den Builder und richten Sie die eigentliche Funktion unten ein.

**Richten Sie dann die benutzerdefinierte Funktion ein:**

**Grundlegende Informationen:**
- **Name:** `check_shopify_order`
- **Beschreibung:** "Sucht eine Bestellung im Shopify-System des Shops und gibt deren Status, Sendungsverfolgung und Artikel zurück"
- **KI-Aktion:** "Rufen Sie dies auf, wenn ein Kunde nach seinem Bestellstatus oder der Lieferung fragt. Fragen Sie immer zuerst nach der Bestellnummer."

**Verbindung:**
- **URL:** `https://YOUR-STORE.myshopify.com/admin/api/2026-01/orders.json?status=any` – ersetzen Sie `YOUR-STORE` durch den `.myshopify.com`-Namen des Shops (diese Adresse verwendet die technische Shopify-Domain, nicht die benutzerdefinierte Domain des Shops)
- **Methode:** GET

**Header:**
- `X-Shopify-Access-Token`: `shpat_...` (das Token von oben)

**Eingabeparameter:**
- `name` (query_param, erforderlich): "Die Bestellnummer des Kunden genau so, wie sie in der Bestellbestätigung erscheint, einschließlich des #-Zeichens – zum Beispiel #1001. Fragen Sie den Kunden danach, falls er sie noch nicht genannt hat."

**Keine Antwortzuordnung erforderlich** – der Bot liest die zurückgegebene Bestellung (Zahlungsstatus, Erfüllungsstatus, Sendungsverfolgung, Artikel) und antwortet natürlich.

**Gut zu wissen:** Ein auf diese Weise erstelltes Token kann Bestellungen der **letzten 60 Tage** einsehen – ausreichend für tägliche Support-Fragen, aber nicht für eine vollständige Bestellhistorie.

---

## Vollständiges Beispiel: Termin buchen

**Grundlegende Informationen:**
- **Name:** `create_booking`
- **Beschreibung:** "Erstellt einen neuen Termin in unserem Buchungssystem"
- **KI-Aktion:** "Verwenden Sie dies, nachdem Datum, Uhrzeit und Kontaktdaten mit dem Kunden bestätigt wurden. Führen Sie den Aufruf erst aus, wenn der Kunde die Buchung ausdrücklich bestätigt hat."

**Verbindung:**
- **URL:** `https://booking.mycompany.com/api/appointments`
- **Methode:** POST

**Eingabeparameter:**
- `date` (Text, erforderlich): "Termindatum im Format YYYY-MM-DD"
- `time` (Text, erforderlich): "Terminuhrzeit im Format HH:MM"
- `name` (Text, erforderlich): "Vollständiger Name des Kunden"
- `phone` (Text, erforderlich): "Telefonnummer des Kunden"
- `service_type` (Text, erforderlich): "Art der zu buchenden Dienstleistung"

---

## Vollständiges Beispiel: Newsletter-Abonnenten zum CRM hinzufügen

Ein sehr häufiges Muster: Der Bot beendet die Antwort, bietet Ihren Newsletter an, der Kontakt antwortet mit seiner E-Mail-Adresse und diese Adresse soll direkt in Ihrem E-Mail-Tool landen. Die meisten CRMs (FluentCRM, ActiveCampaign, MailerLite, Brevo und andere) akzeptieren für genau diesen Zweck einen einfachen POST-Request, sodass keine Automatisierungsplattform dazwischen erforderlich ist.

Dieses Beispiel verwendet **FluentCRM** auf WordPress. Der Aufbau ist derselbe für jedes andere Tool, das Ihnen einen „eingehenden Webhook“ oder einen Endpunkt zum „Erstellen eines Abonnenten“ bietet.

**Holen Sie sich zuerst die URL aus Ihrem CRM.** Öffnen Sie in WordPress **FluentCRM → Einstellungen → Eingehende Webhooks** und erstellen Sie einen Webhook. Wählen Sie die Liste, die Tags und den Abonnementstatus aus, die neue Kontakte erhalten sollen, und kopieren Sie dann die generierte Webhook-URL. Alles, was Sie hier festlegen, wird automatisch angewendet, sodass der Bot nur die E-Mail-Adresse senden muss.

**Richten Sie dann die benutzerdefinierte Funktion ein:**

**Grundlegende Informationen:**
- **Name:** `add_newsletter_subscriber`
- **Beschreibung:** „Fügt jemanden unserer Newsletter-Liste unter Verwendung der im Chat angegebenen E-Mail-Adresse hinzu“
- **KI-Aktion:** „Verwenden Sie dies in dem Moment, in dem der Kontakt dem Newsletter-Abonnement zustimmt und seine E-Mail-Adresse angibt. Rufen Sie es nicht auf, bevor die Adresse tatsächlich angegeben wurde, und rufen Sie es nicht zweimal für dieselbe Person auf.“

**Verbindung:**
- **URL:** die Webhook-URL, die Sie aus Ihrem CRM kopiert haben
- **Methode:** POST

**Eingabeparameter:**
- `email` (Zeichenfolge, erforderlich): „Die E-Mail-Adresse, die der Kontakt im Gespräch angegeben hat“
- `first_name` (Zeichenfolge, optional): „Der Vorname des Kontakts, falls dieser genannt wurde“

**Systemdaten überspringen:** Schalten Sie dies **ein**. Ihr CRM benötigt nur die oben genannten Felder, und eine schlankere Payload vermeidet Fehler bei Tools, die unerwartete Felder ablehnen.

**Antwort-Mapping:** hier nicht erforderlich. Es muss nichts zurückkommen, damit der Bot fortfahren kann.

**Vergessen Sie nicht, die Funktion für den Agenten zu aktivieren, der die Konversation führt** (siehe [Funktionen einem Agenten zuweisen](#assigning-functions-to-an-agent)). Dies ist der häufigste Grund, warum eine korrekt erstellte Funktion nie ausgelöst wird.

::: tip
**Tipp:** Der Bot verfügt auch über ein integriertes Tool zum **Aktualisieren der Kontakt-E-Mail**, das die Adresse im Kontaktdatensatz innerhalb der Plattform speichert. Dies ist unabhängig von dieser Funktion und nützlich in Kombination damit – das integrierte Tool hält Ihren eigenen Kontaktdatensatz vollständig, die benutzerdefinierte Funktion überträgt die Adresse an Ihr CRM.
:::


---

## Tipps für zuverlässige benutzerdefinierte Funktionen

1. **Stellen Sie sicher, dass wiederholte Anfragen sicher sind.** Wenn dieselbe Anfrage versehentlich zweimal gesendet wird, sollten keine doppelten Datensätze erstellt werden. Netzwerkprobleme können dies gelegentlich verursachen.

2. **Geben Sie klare Fehlermeldungen zurück.** Wenn auf der Seite Ihres Systems etwas schiefgeht, geben Sie eine für Menschen lesbare Fehlermeldung zurück. Der Bot wird diese elegant an den Kunden weiterleiten.

3. **Halten Sie Antwortzeiten unter 10 Sekunden.** Wenn Ihr System länger benötigt, ziehen Sie in Betracht, zuerst eine kurze Bestätigung zurückzugeben.

4. **Gehen Sie mit abgelaufenen oder ungültigen Anmeldedaten um.** Wenn Ihr API-Schlüssel abläuft, stellen Sie sicher, dass die Fehlermeldung klar ist, damit der Bot weiß, dass er einen Menschen benachrichtigen muss, anstatt es erneut zu versuchen.

5. **Schreiben Sie detaillierte Beschreibungen.** Die KI verwendet Ihre Beschreibungen, um herauszufinden, wann die Funktion aufgerufen werden soll und wie die richtigen Informationen aus dem Gespräch extrahiert werden können. Vage Beschreibungen führen zu Fehlern.

6. **Testen Sie mit echten Gesprächen.** Der „Ausprobieren“-Modus ist großartig für erste Tests, aber überwachen Sie Ihre ersten Live-Gespräche, um sicherzustellen, dass alles mit echten Kundenanfragen funktioniert.

7. **Führen Sie Protokolle auf Ihrer Seite.** Bitten Sie Ihren Entwickler, die Anfragen der App zu protokollieren, damit Sie Probleme schnell beheben können.

8. **Verwenden Sie eine öffentliche finale URL.** Ihre Funktions-URL muss eine öffentliche Webadresse (HTTP/HTTPS) sein. Interne Adressen, localhost-Adressen und Adressen in privaten Netzwerken werden aus Sicherheitsgründen abgelehnt, und die Plattform folgt keinen Weiterleitungen – verweisen Sie die Funktion direkt auf die finale URL, nicht auf eine, die zu ihr weiterleitet.

---

## Ausführungslimits

Jede benutzerdefinierte Funktion verfügt am unteren Rand des Editors über einen optionalen Bereich **Ausführungslimits**. Er steuert, wie oft die KI die Funktion ausführen darf und ob ein früheres Ergebnis wiederverwendet werden kann. Alle Einstellungen hier sind optional – lassen Sie alles leer, und die Funktion verhält sich genau wie zuvor.


**Schreibgeschützte Funktion.** Aktivieren Sie dies, wenn Ihre Funktion nur Daten *liest* – etwa eine Aktienabfrage, eine Preisprüfung, eine Suche nach dem Bestellstatus – und niemals etwas erstellt oder ändert. Wenn ein vorübergehendes Netzwerkproblem die KI mitten in der Antwort unterbricht, kann die Plattform den Konversationsschritt sicher wiederholen, anstatt den Kunden ohne Antwort zu lassen. Aktivieren Sie dies nur, wenn die Funktion wirklich niemals etwas schreibt: Eine Funktion, die Datensätze erstellt, muss deaktiviert bleiben, damit ein erneuter Versuch sie nicht versehentlich zweimal ausführt.

**Zwischengespeichertes Ergebnis bei wiederholten Aufrufen bereitstellen.** Wenn die KI die Funktion erneut mit denselben Eingaben aufruft (zum Beispiel, wenn der Kunde dieselbe Frage zweimal stellt), wird das vorherige Ergebnis wiederverwendet, anstatt Ihren Endpunkt erneut aufzurufen. Zwischengespeicherte Ergebnisse werden bis zu 24 Stunden lang aufbewahrt, und ein Aufruf mit *anderen* Eingaben geht immer frisch an Ihren Endpunkt.

**Maximale Ausführungen pro Konversation.** Eine feste Obergrenze dafür, wie oft die Funktion innerhalb einer Konversation ausgeführt werden kann. Setzen Sie dies auf 1 für Funktionen, die pro Chat nur einmal ausgelöst werden sollten – etwa das Erstellen eines Angebots, das Auslösen eines Rückrufs oder das Starten einer Automatisierung. Wenn das Limit erreicht ist, wird der KI mitgeteilt, dass die Funktion bereits ausgeführt wurde, und sie erhält das aktuellste Ergebnis, sodass sie dem Kunden weiterhin antworten kann, anstatt zu verstummen.

**Maximale Ausführungen pro Zeitfenster.** Ein Ratenlimit über die Zeit: zum Beispiel maximal 5 Ausführungen innerhalb von 60 Minuten. Nützlich für Funktionen, die kostenpflichtige Dienste von Drittanbietern aufrufen oder aufwendigere Automatisierungen auslösen. Beide Felder müssen zusammen ausgefüllt werden (eine Anzahl von Ausführungen und ein Zeitfenster in Minuten, bis zu 7 Tage).

Ein paar Dinge, die Sie wissen sollten:

- Limits zählen nur **erfolgreiche** Ausführungen. Ein Aufruf, der auf der Seite Ihres Endpunkts fehlgeschlagen ist, verbraucht das Budget nicht.
- Wenn eine Ausführung durch ein Limit blockiert wird, wird der Kunde nie im Unklaren gelassen – der KI wird der Grund mitgeteilt und sie arbeitet mit den Informationen, die sie bereits hat.
- Limits gelten überall dort, wo die Funktion ausgeführt wird: reguläre Chats auf jedem Kanal und Funktionen, die von einer Automatisierung verwaltet werden. Testkonversationen unter 'Ausprobieren' werden nicht gezählt und nicht limitiert.

---

## Integrierte Bot-Tools

Zusätzlich zu den benutzerdefinierten Funktionen, die Sie selbst erstellen, bietet die Plattform eine Bibliothek mit vorgefertigten Tools, die der KI-Bot während eines Gesprächs verwenden kann. Diese decken die häufigsten Aufgaben ab, die ein Bot erledigen muss – einen Teamkollegen benachrichtigen, einen Termin buchen, einen Kontakt markieren, Ihre Website durchsuchen, eine Nachverfolgung planen und mehr –, sodass Sie diese nicht von Grund auf neu einrichten müssen.

**Der Bot entscheidet, wann er welches Werkzeug verwendet**, basierend darauf, was im Gespräch passiert und wie Ihr Agent (und die damit verknüpfte Kampagne) konfiguriert ist. Die meisten dieser Werkzeuge werden automatisch aktiviert, wenn die zugehörige Funktion aktiviert wird (zum Beispiel werden die Buchungswerkzeuge erst verfügbar, wenn Sie einen Kalender verbinden und Buchungen aktivieren).

**Credit-Kosten:** Jeder Tool-Aufruf wird gemäß der KI-Qualitätsstufe Ihres Agenten abgerechnet, und selbst erstellte benutzerdefinierte Funktionen werden auf die gleiche Weise berechnet:

| KI-Qualitätsstufe | Credits pro Tool-Aufruf | Mit verbundenem eigenen Anthropic-Schlüssel (BYOK) |
|---|---|---|
| Pro | 1 Credit | 0 Credits – läuft über Ihren Schlüssel |
| Economy (veraltet) | 0,5 Credits | 0 Credits – läuft über Ihren Schlüssel |
| Max | 0,25 Credits | weiterhin 0,25 Credits, wird auch bei verbundenem eigenen Schlüssel berechnet, da Max auf unserem eigenen Modell läuft |
| Mini | 0,15 Credits | weiterhin 0,15 Credits, wird auch bei verbundenem eigenen Schlüssel berechnet, da Mini auf unserem eigenen Modell läuft |

### Team- & Aufgaben-Tools

| Werkzeug | Was es tut | Wann der Bot es verwendet |
|------|--------------|----------------------|
| **Teammitglied benachrichtigen** | Pausiert den Bot für diesen Kontakt und sendet eine E-Mail an Ihr Team, dass ein Mensch benötigt wird. Der Chat wird markiert, damit ein Teamkollege ihn übernehmen kann. | Wenn der Kunde nach einem Menschen fragt, frustriert ist oder etwas fragt, das der Bot nicht beantworten darf oder kann. |
| **Aufgabe erstellen** | Erstellt eine neue Aufgabe auf Ihrem Aufgabenboard, optional verknüpft mit dem Kontakt und dem Gespräch. Der Bot antwortet weiterhin wie gewohnt – die Aufgabe ist lediglich eine Notiz für Ihr Team zur Nachverfolgung. | Für nicht dringende Angelegenheiten wie eine Funktionsanfrage, eine Upselling-Gelegenheit oder einen Rückruf, den das Team später bearbeiten sollte. |
| **FAQ-Update vorschlagen** | Wenn der Bot auf eine Frage stößt, die er nicht gut beantworten kann, erstellt er eine Aufgabe mit der Bitte an Ihr Team, eine Antwort zur Wissensdatenbank hinzuzufügen. | Wenn ein Kontakt etwas fragt, das nicht durch Ihre bestehenden FAQs abgedeckt ist – damit die Lücke für das nächste Mal geschlossen wird. |
| **Kontext zu einem FAQ-Vorschlag hinzufügen** | Wenn ein anderer Kontakt später eine ähnliche Frage aus einem anderen Blickwinkel stellt, fügt der Bot diesen Kontext dem bestehenden FAQ-Vorschlag hinzu, anstatt eine doppelte Aufgabe zu erstellen. | Automatisch – hält Ihre Aufgabenliste sauber, wenn mehrere Personen dieselbe Wissenslücke aufzeigen. |

### Kontakt-Tools

| Tool | Was es tut | Wann der Bot es verwendet |
|------|--------------|----------------------|
| **Tagging** | Läuft automatisch nach jeder Bot-Antwort – es ist kein Tool, das der kundenorientierte Bot selbst aufruft. Das System überprüft das aktuelle Gespräch und wendet relevante Tags an, wobei Ihre bestehenden Tags nach Möglichkeit wiederverwendet werden (und nur bei Bedarf ein neues erstellt wird). | Automatisch – wann immer das Gespräch etwas aufdeckt, das eine Segmentierung wert ist, wie z. B. Interesse, Absicht, Lead-Qualität oder Sprache. |
| **Kontaktname aktualisieren** | Speichert den Vor- und/oder Nachnamen des Kontakts, wenn dieser ihn mitteilt. | Wenn der Kunde sich vorstellt oder einen Namen korrigiert. |
| **Kontakt-E-Mail aktualisieren** | Speichert die E-Mail-Adresse des Kontakts, wenn dieser sie mitteilt. | Wenn der Kunde eine E-Mail-Adresse angibt – für Newsletter, Quittungen, Kontosuchen usw. |

### Termin- & Buchungstools

Diese Werkzeuge sind nur verfügbar, wenn Buchungen für die mit Ihrem Agenten verknüpfte Kampagne aktiviert sind und ein Kalenderereignistyp konfiguriert wurde.

| Tool | Funktion | Wann der Bot es verwendet |
|------|--------------|----------------------|
| **Verfügbare Zeitfenster prüfen** | Sucht nach freien Zeiten in Ihrem verknüpften Kalender für ein bestimmtes Datum oder einen Zeitraum. | Wenn der Kunde buchen möchte und der Bot echte Verfügbarkeiten anbieten muss. |
| **Termin buchen** | Erstellt den Termin in Ihrem Kalender und bestätigt die Buchung gegenüber dem Kunden. | Nachdem der Kunde ein bestimmtes Datum und eine Uhrzeit bestätigt hat. |
| **Termin verschieben** | Verschiebt einen bestehenden Termin auf ein neues Datum und eine neue Uhrzeit. | Wenn der Kunde um eine Terminverschiebung bittet. |
| **Termin stornieren** | Storniert einen bestehenden Termin. | Wenn der Kunde um eine Stornierung bittet. |
| **Termine nachschlagen** | Ruft die bestehenden Termine eines Kontakts ab, damit der Bot weiß, was bereits gebucht ist. | Wenn der Kunde fragt „Wann ist mein Termin?“ oder bevor der Bot eine Verschiebung anbietet. |

### Wissens- & Web-Tools

| Tool | Funktion | Wann der Bot es verwendet |
|------|--------------|----------------------|
| **Website durchsuchen** | Scannt die URLs, die Sie der Liste der dynamischen URLs der Kampagne hinzugefügt haben, um Produktseiten, Artikel oder andere Inhalte zu finden, die die Frage des Kunden beantworten. Nur verfügbar, wenn **KI-Websuche** aktiviert ist und Sie mindestens eine dynamische URL hinzugefügt haben. Wenn die KI-Websuche deaktiviert ist, kann der Bot keine Seiten oder Links lesen – auch nicht solche, die der Kunde in den Chat einfügt. | Wenn der Kunde nach etwas fragt, das wahrscheinlich auf Ihrer Website zu finden ist – Produkte, Preise, Standorte, Richtlinien. |
| **Link überprüfen** | Liest den Inhalt einer bestimmten URL, damit der Bot Fragen zu dieser Seite beantworten kann. Nur verfügbar, wenn **KI-Websuche** aktiviert ist und Sie mindestens eine dynamische URL hinzugefügt haben. Wenn die KI-Websuche deaktiviert ist, kann der Bot keine Seiten oder Links lesen – auch nicht solche, die der Kunde in den Chat einfügt. | Wenn der Kunde einen Link teilt oder nach einer bestimmten Seite auf Ihrer Website fragt. |
| **Websuche** | Führt eine öffentliche Google-Suche durch und gibt die besten Ergebnisse zurück, damit der Bot Fragen außerhalb Ihrer eigenen Inhalte beantworten kann. | Wenn der Kunde nach etwas Allgemeinem fragt (z. B. Wegbeschreibungen, öffentliche Informationen), das nicht in Ihrer Wissensdatenbank enthalten ist. Wird nur verwendet, wenn die Websuche aktiviert ist. |

### Follow-up-Tools

Diese Tools erfordern, dass Follow-ups für die mit Ihrem Agenten verknüpfte Kampagne aktiviert sind.

| Tool | Funktion | Wann der Bot es verwendet |
|------|--------------|----------------------|
| **Intelligentes Follow-up planen** | Plant eine intelligente Follow-up-Nachricht unter Verwendung Ihrer Follow-up-Sequenz – wählt die richtige Vorlage und das richtige Timing basierend auf dem Gespräch aus. | Wenn der Kunde nicht mehr antwortet oder den Bot bittet, „später noch einmal nachzufragen“. |
| **Follow-up planen** | Plant ein einfaches Follow-up zu einem bestimmten Zeitpunkt. | Wenn der Bot das Gespräch zu einem definierten Zeitpunkt voranbringen muss. |

### Ausführung benutzerdefinierter Funktionen

| Tool | Funktion | Wann der Bot es verwendet |
|------|--------------|----------------------|
| **Benutzerdefinierte Funktion ausführen** | Führt eine der benutzerdefinierten Funktionen aus, die Sie erstellt und dem Agenten zugewiesen haben (siehe den Rest dieser Seite). | Wenn die Anfrage des Kunden dem Zweck einer Ihrer benutzerdefinierten Funktionen entspricht. |

### Restaurant-Buchungstools (Zenchef und Formitable)

Diese Tools sind nur verfügbar, wenn eine Zenchef- oder Formitable-Integration verbunden ist. Sie ermöglichen es dem Bot, Restaurantreservierungen von Anfang bis Ende zu verwalten.

| Tool | Funktion | Wann der Bot es verwendet |
|------|--------------|----------------------|
| **Restaurant-Verfügbarkeit prüfen** | Sucht nach freien Reservierungsplätzen für ein bestimmtes Datum, eine Gruppengröße und (optional) einen Sitzbereich. | Wenn ein Gast einen Tisch buchen möchte. |
| **Restaurant-Buchung erstellen** | Erstellt eine neue Reservierung. | Nachdem der Gast einen bestimmten Platz bestätigt hat. |
| **Restaurant-Buchung aktualisieren** | Ändert Datum, Uhrzeit, Gruppengröße oder Notizen einer bestehenden Reservierung. | Wenn der Gast seine Buchung ändern möchte. |
| **Buchungsstatus stornieren oder ändern** | Storniert eine Reservierung oder aktualisiert deren Status (z. B. bestätigt, Nichterscheinen). | Wenn der Gast storniert oder der Bot eine Statusänderung markieren muss. |
| **Buchungen suchen** | Findet bestehende Reservierungen, die Kriterien wie Name, E-Mail oder Datum entsprechen. | Wenn ein wiederkehrender Gast nach einer bestehenden Reservierung fragt. |
| **Gastprofil aktualisieren** | Aktualisiert das Profil des Gastes im Restaurantsystem (Präferenzen, Notizen, Kontaktinformationen). | Wenn der Gast diätetische Vorlieben, eine neue Telefonnummer oder andere profilbezogene Informationen mitteilt. |
| **Restaurant-Produkte auflisten** | Ruft die Liste der Menüs, Menüfolgen oder Zusatzoptionen ab, die für die Buchung verfügbar sind. | Wenn der Gast fragt „Welche Menüs bieten Sie an?“ oder der Bot ein Menü an eine Reservierung anhängen muss. |

### Tools ein- und ausschalten

Die meisten Tools werden auf der Registerkarte **KI-Fähigkeiten** des Agenten gesteuert (oder im Schritt **KI-Fähigkeiten** der Kampagne, falls Sie noch mit einer klassischen Kampagne arbeiten):

- **Buchungstools** werden aktiviert, wenn Sie Buchungen aktivieren und einen Kalender verbinden – dies bleibt vorerst eine kampagnenspezifische Einstellung, mit einem direkten Link zum entsprechenden Kampagnenschritt von der Registerkarte „KI-Fähigkeiten“ des Agenten aus
- **Follow-up-Tools** werden aktiviert, wenn Sie Follow-ups aktivieren
- **Restaurant-Tools** werden aktiviert, wenn Sie ein Zenchef- oder Formitable-Konto verbinden
- **Websuche** hat einen eigenen Schalter auf der Registerkarte **FAQs & Wissen**
- **Aufgaben-Tools** können pro Agent mit dem Schalter **KI das Erstellen von Aufgaben erlauben** deaktiviert werden (sie sind standardmäßig aktiviert; der kontoweite Aufgaben-Schalter unter **Einstellungen → Profil → Funktionen** deaktiviert das gesamte Aufgabensystem überall)
- **Kontakt-Update-Tools** werden auf derselben Registerkarte **KI-Fähigkeiten** gesteuert – ob die KI Kontakte umbenennen oder zusätzlich gesammelte Informationen speichern darf
- **Alarm-Tools** sind immer verfügbar; **Tagging** erfolgt automatisch nach jeder Bot-Antwort (es ist kein Tool, das der Bot aktiv auswählt)

Wenn der Bot ein bestimmtes integriertes Tool nicht mehr verwenden soll, ist der sauberste Weg die Deaktivierung der zugrunde liegenden Funktion (deaktivieren Sie beispielsweise Buchungen, um alle Buchungstools zu deaktivieren).

---

## Von einer Automatisierung verwaltete Funktionen

Einige Einträge auf Ihrer Seite für benutzerdefinierte Funktionen können mit dem Badge **Von Automatisierung verwaltet** versehen sein. Diese wurden nicht hier erstellt, sondern stammen von einer Automatisierung mit einem **KI-Agenten-Funktions**-Trigger. Dies verleiht Ihrem Agenten eine Fähigkeit, deren Schritte Sie visuell auf der Automatisierungs-Arbeitsfläche erstellen, anstatt auf eine externe Webadresse zu verweisen.

Eine verwaltete Funktion wird für Sie betreut: Ihr Name, ihre Beschreibung und ihre Felder richten sich immer nach den Einstellungen des Automatisierungsauslösers. Daher kann sie auf dieser Seite weder bearbeitet noch gelöscht werden – verwenden Sie stattdessen den Link **Automatisierung öffnen**, um die Automatisierung selbst zu ändern. Sie können jedoch wie gewohnt auswählen, welche Agenten über diese Funktion verfügen: Auf der Registerkarte **KI-Fähigkeiten** eines Agenten erscheint sie neben den anderen Fähigkeiten des Agenten mit einem regulären Ein-/Ausschalter (wenn die zugehörige Automatisierung pausiert ist, wird dies in der Zeile angezeigt – die Fähigkeit wird aktiv, sobald die Automatisierung eingeschaltet wird). Alles andere verhält sich wie bei jeder anderen benutzerdefinierten Funktion: Die KI entscheidet, wann sie aufgerufen wird, erfasst die von Ihnen definierten Details und kann die Antwort der Automatisierung im selben Gespräch verwenden.

Wenn Sie zwischen den beiden wählen müssen: Verwenden Sie eine reguläre benutzerdefinierte Funktion für ein System, das bereits über eine aufrufbare Adresse verfügt; erstellen Sie eine Automatisierung mit einem „AI Agent Function“-Trigger, wenn Sie die Arbeit lieber aus einzelnen Schritten zusammenstellen möchten – etwa das Nachschlagen in einer Tabelle oder Datenbank, das Verzweigen nach einer Bedingung oder das Erstellen von Datensätzen –, ohne einen eigenen Server betreiben zu müssen. Siehe [Automatisierungen](../automations/automations.md#letting-your-ai-agent-call-an-automation).

---

## Plan-Anforderungen

Benutzerdefinierte Funktionen sind in Plänen verfügbar, die die Funktion für benutzerdefinierte Funktionen enthalten. Überprüfen Sie Ihr Abonnement, um die Verfügbarkeit zu bestätigen.

---

## Nächste Schritte

- [MCP-Server mit Ihrem Bot verbinden](mcp-servers.md) – ein fertiges Paket von Tools anstelle von jeweils einer Funktion.
- [KI-Agenten](../ai-agents/ai-agents.md) – die Hauptseite der AI Studio-Gruppe, in der sich benutzerdefinierte Funktionen befinden und wo benutzerdefinierte Funktionen einem Bot zugewiesen werden.
