Dieser Leitfaden zeigt, wie Sie eine wiederverwendbare Fin-Prozedur erstellen, die über Ihre API einen Produktkatalog abruft, einen vom Kunden gewünschten Artikel findet, den Lagerbestand prüft und den Ablauf basierend auf der Verfügbarkeit steuert. Sie können diese Prozedur verwenden, um neue Bestellungen zu erstellen oder bestehende mit Ihren Backend-Bestell-APIs zu aktualisieren.
Behalten Sie Ihre eigenen API-Endpunkte und Parameternamen bei – ersetzen Sie die Beispiel-URLs, Anfragetexte und Feldnamen durch die, die Ihr Backend bereitstellt. Wenn Sie noch keine Prozedur erstellt haben, lesen Sie zuerst Building Fin Procedures.
Hinweis:
Data Connectors: Sie benötigen drei spezifische Connectoren:
Einen, um einen Produktkatalog zurückzugeben (GET).
Einen, um einen Bestellartikel zu erstellen (POST).
Einen, um eine bestehende Bestellung zu aktualisieren (PUT).
Kanonische Antwortstruktur: Ihre APIs müssen eine konsistente Datenstruktur zurückgeben.
Fehlerbehandlung: Für eine robuste Prozedur müssen Ihre Bedingungsschritte die
status_code- underror-Antwortattribute der Data Connectors verwenden. So kann Fin auf spezifische HTTP-Fehlercodes (z. B. 400, 500) reagieren, anstatt sich auf einen generischen Erfolgs-/Fehlerpfad zu verlassen.
Tipp: Vernetzen Sie sich mit Community-Experten und Intercom Solutions Architects bei unseren Procedures Meetup Office Hours. Diese alle zwei Wochen stattfindenden Sitzungen bieten praktische, Echtzeit-Unterstützung inklusive Live-Q&A, um Ihnen bei der Einrichtung und Optimierung Ihrer Fin-Prozeduren und Data Connectors zu helfen.
Einrichten von Data Connectors
Erstellen Sie drei Connectoren mit klaren Namen (z. B. Get Product Catalog, Create Order Item, Update Order Item), damit Fin die richtige Aktion erkennt.
Sammeln Sie alle Eingaben, die der Connector benötigt. Temporäre Attribute können jetzt direkt als Eingaben an einen Data Connector übergeben werden – wenn die Daten bereits in einer temporären Variablen vorhanden sind, ordnet Fin sie automatisch zu, ohne den Kunden zu fragen. Konfigurieren Sie eine Eingabe nur dann als vom Kunden gesammelt, wenn der Wert nicht bereits gespeichert ist. Ersetzen Sie https://api.example.com und Feldnamen durch Ihre eigenen Endpunkte und JSON-Schlüssel. Für häufige Fragen zur Connector-Einrichtung, Authentifizierung und Ausführung siehe Fin and Data connectors FAQs.
1. Get Product Catalog (GET)
Zweck: Gibt eine Liste von Produkten zurück, einschließlich ID, Name, Preis und Lagerbestand.
Methode: GET.
URL: https://api.example.com/items (oder Ihr Katalog-Endpunkt)
Header: Content-Type: application/json (+ Authentifizierung nach Bedarf)
Antwort: Ein Array von Produktobjekten.
Example response:
[
{ "id": "sku-100", "name": "Classic T-Shirt", "price": 19.99, "stock": 120 },
{ "id": "sku-101", "name": "Running Shoes", "price": 89.50, "stock": 45 },
{ "id": "sku-104", "name": "Nintendo Switch", "price": 119.00, "stock": 0 }
]
2. Create Order Item (POST)
Zweck: Erstellt eine neue Bestellung oder einen spezifischen Bestellartikel.
Methode: POST.
URL: https://api.example.com/orders (oder Ihr Create-Order-Endpunkt)
Header: Content-Type: application/json (+ Authentifizierung)
Anfragetext: Muss product_id und quantity enthalten.
{
"product_id": "<product id>",
"quantity": <integer>
}Konfigurieren Sie Connector-Eingaben, wenn Fin product_id und quantity sammeln soll.
3. Update Order Item (PUT)
Zweck: Fügt Artikel hinzu oder aktualisiert eine bestehende Bestellung.
Methode: PUT.
URL: https://api.example.com/orders/{{order_id}} (oder PUT /orders/{order_id}/items)
Header: Content-Type: application/json (+ Authentifizierung)
Anfragetext: Muss product_id und quantity enthalten.
{
"product_id": "<product id>",
"quantity": <integer>
}Erforderliche Eingaben: order_id, product_id, quantity
API-Verbindung mit Pfadvariable order_id und Anfragetext.
Sammeln von Dateneingaben mit order_id, product_id, quantity.
Aufbau des Prozedurablaufs
Verwenden Sie temporäre Variablen, um Zwischendaten während des Gesprächs zu speichern. Empfohlene Variablen sind Temporary.SelectedProductID, Temporary.StockLevel und Temporary.OrderAction.
Schritt 1: Produktanfrage und -suche
Fragen Sie den Kunden: Fragen Sie, „Welches Produkt möchten Sie?“
Rufen Sie den Data Connector auf: Verwenden Sie Get Product Catalog.
Logik: Durchsuchen Sie die zurückgegebene Liste nach einem Produkt, dessen Name (oder SKU) am besten zu Temporary.SelectedProductName passt.
Bei Übereinstimmung setzen Sie:
Temporary.SelectedProductID = Produkt-ID
Temporary.SelectedProductName = kanonischer Produktname aus dem Katalog
Temporary.StockLevel = Produktbestand (als Ganzzahl)
Validierung: Wenn keine Übereinstimmung gefunden wird, bitten Sie den Kunden um eine Klarstellung oder schlagen Sie die ähnlichsten Produkte aus dem Katalog vor und kehren Sie zu Schritt 1 zurück, wenn ein anderes Produkt gewählt wird.
Implementierungshinweise
Die Übereinstimmungslogik kann eine einfache Teilstring-Suche oder eine ausgefeiltere Fuzzy-Suche sein. Halten Sie die Übereinstimmung deterministisch, damit die Bedingungsschritte von Fin zuverlässig funktionieren.
Schritt 2: Lagerprüfung und Verzweigung
Verwenden Sie im Verfahrens-UI einen Standard-IF/ELSE-Logikblock, um Temporary.StockLevel zu prüfen. Dies ist ein einfacher Wertvergleich – hier ist keine Codebedingung erforderlich. Verwenden Sie den visuellen Bedingungs-Builder und wählen Sie Temporary.StockLevel als Attribut aus.
IF Temporary.StockLevel > 0: Weiter zu Schritt 3.
ELSE: Weiterleitung zum Abschnitt „Nicht auf Lager“ (Schritt 8).
Schritt 3: Neue oder bestehende Bestellung fragen
Aufforderung: „Möchten Sie eine neue Bestellung für diesen Artikel erstellen oder ihn zu einer bestehenden Bestellung hinzufügen?“
Akzeptierte Antworten:
Schritt 4 — Menge abfragen und validieren (kleine Aktualisierung)
Aufforderung: „Wie viele Einheiten möchten Sie?“ → Ganzzahl parsen → in Temporary.Quantity speichern.
Validierung:
Wenn Temporary.Quantity ≤ 0 → erneut fragen.
Wenn Temporary.Quantity > Temporary.StockLevel → den Kunden über den verfügbaren Bestand informieren und entweder:
Das maximal verfügbare Angebot machen und um Bestätigung einer kleineren Menge bitten (Schleife innerhalb von Schritt 4), oder
Optionen für Nachbestellung/Benachrichtigung anbieten (Schritt 8).
Nach Validierung der Menge zu Schritt 5 (Entscheidung zur Bestellaktion) fortfahren.
Mengenabfrage- und Validierungsaktionsblöcke.
Schritt 5: Entscheidung zur Bestellaktion (IF / ELSE IF)
Anstatt die Erstellung und Aktualisierung von Bestellungen inline zu behandeln, leiten Sie jeden Pfad an eine eigene Unterprozedur weiter. Dies hält den Hauptablauf sauber und macht jeden Pfad unabhängig testbar. Fügen Sie einen IF / ELSE IF-Bedingungsblock hinzu und verwenden Sie @Run sub-procedure in jedem Zweig: Für komplexe oder datumsbasierte Vergleiche siehe How to write code conditions for Fin Procedures.
Schritt 6: CREATE NEW ORDER (Unterprozedur)
Verschieben Sie diesen Schritt in eine eigene Unterprozedur (z. B. „Create New Order“), um den Hauptablauf lesbar zu halten. Rufen Sie innerhalb dieser Unterprozedur den Create Order Item Connector auf. Temporäre Attribute wie Temporary.SelectedProductID und Temporary.Quantity können direkt auf Connector-Eingaben abgebildet werden – keine manuelle Eingabe erforderlich:
product_id = Temporary.SelectedProductID
quantity = Temporary.Quantity
Erfassen Sie die Antwort in Temporary.NewOrderID (falls zurückgegeben) und speichern Sie den Status_code des Connectors in Temporary.CreateOrderStatus.
Bei Erfolg: Antwort:
„Neue Bestellung mit [Temporary.Quantity] × [Temporary.SelectedProductName] erstellt. Bestell-ID: [Temporary.NewOrderID]. Kann ich sonst noch etwas tun?“Bieten Sie Nachaktionsoptionen an (weitere Artikel hinzufügen, Menge ändern, zur Kasse gehen, beenden). Speichern Sie Temporary.NewOrderID, wenn die Sitzung fortgesetzt wird.
Fügen Sie unmittelbar nach dem Connector-Aufruf einen Bedingungsschritt hinzu und verzweigen Sie basierend auf Temporary.CreateOrderStatus. Der status_code und die Fehlerattribute können unten im Attributauswahlfenster erscheinen – scrollen Sie nach unten, wenn Sie sie nicht sehen. Verwenden Sie folgende Zweige: IF status_code == 200 oder 201: Weiter zur Erfolgsmeldung. ELSE IF status_code == 400: Informieren Sie den Kunden, dass seine Anfrage ungültig war (z. B. falsche Produkt-ID oder Menge), fordern Sie zur Korrektur auf und bieten Sie einen erneuten Versuch an. ELSE IF status_code >= 500: Entschuldigen Sie sich für einen Serverfehler, erfassen Sie das Fehlerattribut in einer internen Notiz zur Fehlerbehebung und eskalieren Sie an das E-Comm Support Team. ELSE (unerwarteter Status): Protokollieren Sie Temporary.CreateOrderStatus und eskalieren Sie an das E-Comm Support Team. Für eine ausführlichere Anleitung zur Fehlerbehebung bei Connector-Ausfällen und zur Interpretation von Statuscodes siehe Troubleshooting Fin Procedures and Data connectors.
Connector-Aufruf mit zugeordneten Eingaben und Antwortzuordnung (order_id → Temporary.NewOrderID).
Bestätigungsmeldung und Optionen nach der Aktion.
Schritt 7: UPDATE EXISTING ORDER (Unterprozedur)
Aufforderung: „Bitte geben Sie die bestehende Bestell-ID an, zu der Sie diesen Artikel hinzufügen möchten.“ → speichern in Temporary.ExistingOrderID.
Aufruf: Update Order Item Connector mit:
order_id = Temporary.ExistingOrderID
product_id = Temporary.SelectedProductID
quantity = Temporary.Quantity
Erfassen Sie den status_code des Connectors in Temporary.UpdateOrderStatus und das Fehlerfeld (falls vorhanden) in Temporary.UpdateOrderError.
Bei Erfolg: Antwort:
„[Temporary.Quantity] × [Temporary.SelectedProductName] zur Bestellung [Temporary.ExistingOrderID] hinzugefügt. Noch etwas?“
Bieten Sie Nachaktionsoptionen an (weitere Artikel hinzufügen, Menge ändern, zur Kasse gehen, beenden).Fügen Sie unmittelbar nach dem Connector-Aufruf einen Bedingungsschritt hinzu und verzweigen Sie basierend auf Temporary.UpdateOrderStatus. Wie bei Schritt 6 können status_code und Fehlerattribute unten im Attributauswahlfenster erscheinen. Verwenden Sie folgende Zweige: IF status_code == 200: Weiter zur Erfolgsmeldung. ELSE IF status_code == 400: Informieren Sie den Kunden, dass die Bestell-ID möglicherweise ungültig ist, bitten Sie um Überprüfung und erneute Eingabe und bieten Sie einen erneuten Versuch an. ELSE IF status_code >= 500: Entschuldigen Sie sich für einen Serverfehler, zeigen Sie Temporary.UpdateOrderError in einer internen Notiz an und eskalieren Sie an das E-Comm Support Team. ELSE (unerwarteter Status): Protokollieren Sie den Status und eskalieren Sie an das E-Comm Support Team. Siehe Troubleshooting Fin Procedures and Data connectors für vollständige Anleitungen zur Diagnose von Connector-Ausfällen in Live-Gesprächen.
Tipp: Die von einem Data Connector zurückgegebenen status_code- und Fehlerattribute können unten im Attributauswahlfenster erscheinen. Scrollen Sie nach unten, wenn Sie sie nicht sofort sehen – sie sind für robuste Fehlerbehandlungszweige unerlässlich.
Erfassung von ExistingOrderID und der Update-Connector-Aufruf, der diese verwendet.
Bestätigungsmeldung und Optionen nach der Aktion.
Schritt 8: NICHT AUF LAGER
Auslösen, wenn Temporary.StockLevel ≤ 0 oder wenn die angeforderte Menge > verfügbar ist und der Kunde eine reduzierte Menge ablehnt.
Aktionen:
Entschuldigen Sie sich und bieten Sie klare Optionen an:
Ähnliche Produkte anzeigen (Top-Treffer aus dem Katalog).
Backorder/Benachrichtigung bei Verfügbarkeit anbieten – Kontaktpräferenz erfassen.
Teilmenge anbieten, falls verfügbar.
Wenn der Kunde Benachrichtigung/Backorder wählt → Präferenz erfassen und bestätigen.
Wenn der Kunde eine Alternative wählt → Zurück zu Schritt 1 (Produktanfrage und -suche) mit der neuen Auswahl.
Ende oder Schleife je nach Kundenreaktion.
Nächste Schritte
Sobald Ihr Kernbestellablauf funktioniert, ziehen Sie diese erweiterten Muster in Betracht, um komplexere Ergebnisse zu bewältigen.
Nach der Auftragserstellung an einen Workflow übergeben
Nach einer erfolgreichen Neuauftragserstellung an einen Workflow (z. B. „Send Order Confirmation“) übergeben, um nachgelagerte Automatisierungen wie E-Mail-Belege oder CRM-Aktualisierungen zu steuern. Verwenden Sie am Ende Ihres Unterverfahrens „Create New Order“ einen Handoff to workflow-Schritt. Das Verfahren endet bei der Übergabe und wird nach Abschluss des Workflows nicht fortgesetzt, daher sollte dies der letzte Schritt sein.
Verfahren basierend auf Bestellergebnis wechseln
Wenn die Bestellung in einem bestimmten Zustand endet – z. B. Backorder oder fehlgeschlagene Zahlung – wechseln Sie zu einem speziellen Verfahren (z. B. „Backorder Management“ oder „Payment Failure Recovery“), anstatt alle Ergebnisse in einem Verfahren zu behandeln. So bleiben einzelne Verfahren fokussiert und leichter wartbar.
Bei wiederholten API-Fehlern mit Kontext eskalieren
Wenn derselbe Connector beim Wiederholungsversuch fehlschlägt (z. B. zwei aufeinanderfolgende 500-Fehler), eskalieren Sie an ein menschliches Team und fügen eine interne Notiz mit einer Zusammenfassung von Temporary.CreateOrderStatus oder Temporary.UpdateOrderError hinzu, damit der Kollege den vollen Kontext hat, ohne den Kunden erneut fragen zu müssen.
Unterverfahren für Warenkörbe mit mehreren Artikeln verketten
Um Kunden zu unterstützen, die mehrere Produkte in einer Sitzung bestellen, kehren Sie nach einer erfolgreichen Bestellaktion zum Unterverfahren Produktanfrage zurück und erhöhen einen Artikelzähler. Beenden Sie die Schleife, wenn der Kunde bestätigt, dass er fertig ist.



