{
  "schema": "ldwf",
  "version": 1,
  "name": "FAQ-basierte Antwortvorschläge",
  "meta": {
    "exportedAt": "2025-11-16T16:46:03.480Z",
    "exporter": "client"
  },
  "graph": {
    "nodes": [
      {
        "type": "trigger",
        "data": {
          "comment": "📥 WEBHOOK TRIGGER - Startet den Workflow automatisch\n\n🎯 ZWECK:\nEmpfängt neue Support-Tickets von deinem Ticketsystem (z.B. Zendesk, Freshdesk, oder custom system)\n\n⚙️ SETUP:\n1. Kopiere die Webhook-URL aus diesem Node\n2. Konfiguriere in deinem Support-System einen Webhook für \"Neues Ticket erstellt\"\n3. Optional: Setze ein Secret-Token für zusätzliche Sicherheit\n4. Der Webhook sollte folgende Daten senden:\n   - ticket_id (Ticket-ID)\n   - subject (Betreff)\n   - description (Ticket-Beschreibung)\n   - requester (Kundeninformationen)\n\n🔧 PERSONALISIERUNG:\n- Secret-Feld ausfüllen für authentifizierte Requests\n- Webhook-Payload-Struktur an dein System anpassen\n- Bei Bedarf Webhook-Filter einrichten (z.B. nur bestimmte Ticket-Typen)",
          "executionId": null,
          "errorHandling": {
            "strategy": "stop"
          },
          "slug": "newTicketWebhook",
          "name": "New Support Ticket",
          "kind": "webhook"
        },
        "id": "074cbdb7-fd4a-42bd-8092-8a039b9b7385",
        "position": {
          "x": 20,
          "y": 1160
        }
      },
      {
        "type": "file_search",
        "data": {
          "comment": "🔍 FAQ-DATENBANK DURCHSUCHEN - Findet relevante Hilfeartikel\n\n🎯 ZWECK:\nDurchsucht deine FAQ/Knowledge Base nach relevanten Artikeln basierend auf:\n- Ticket-Betreff und Beschreibung\n- Kundenanfrage und Schlüsselwörtern\n- Semantischer Ähnlichkeit (nicht nur Keyword-Matching)\n\nLiefert die 10 relevantesten FAQ-Einträge mit Text-Chunks zurück.\n\n⚙️ SETUP:\n1. Wähle deinen Knowledge Folder aus (dort müssen deine FAQ-Dokumente hochgeladen sein)\n2. Die Suchanfrage wird automatisch aus dem Ticket-Inhalt generiert\n3. Stelle sicher, dass alle FAQ-Dokumente im Knowledge Folder indexiert sind\n\n🔧 PERSONALISIERUNG:\n- maxResults anpassen (1-50): Mehr Ergebnisse = mehr Kontext, aber längere Verarbeitung\n- Query-Modus auf \"prompt\" ändern für spezifischere Suchanweisungen\n- Mehrere Knowledge Folders verwenden für verschiedene Produktbereiche\n- FAQ-Dokumente regelmäßig aktualisieren für beste Ergebnisse",
          "executionId": null,
          "errorHandling": {
            "strategy": "stop"
          },
          "name": "Search FAQ Database",
          "slug": "searchFaq",
          "modelId": "c968689a-c0d9-49de-aa76-b10ed15ebb0e",
          "knowledgeFolderId": null,
          "query": {
            "mode": "auto",
            "value": null,
            "prompt": null
          },
          "maxResults": 10
        },
        "id": "db404162-7c93-48bb-ad8c-9ccfa738a852",
        "position": {
          "x": 1120,
          "y": 1160
        }
      },
      {
        "type": "action",
        "data": {
          "comment": "📝 TICKET-DETAILS ABRUFEN - Holt vollständige Ticket-Informationen\n\n🎯 ZWECK:\nRuft alle Details zum Support-Ticket ab inkl.:\n- Betreff und Beschreibung\n- Kundeninformationen (Name, E-Mail, etc.)\n- Kompletter Konversationsverlauf\n- Ticket-Status, Priorität, Tags\n- Anhänge und Metadaten\n\n⚙️ SETUP:\n1. Wähle deine Zendesk-Verbindung aus\n2. Die Ticket-ID wird automatisch aus dem Webhook extrahiert\n3. Stelle sicher, dass die API-Berechtigung \"Tickets lesen\" aktiviert ist\n\n🔧 PERSONALISIERUNG:\n- Falls die Ticket-ID anders heißt im Webhook, passe das Feld \"Ticket ID\" manuell an\n- Bei anderen Support-Systemen: Ersetze diese Action durch die entsprechende Integration\n- Für zusätzliche Ticket-Felder: Custom Fields in Zendesk konfigurieren",
          "executionId": null,
          "errorHandling": {
            "strategy": "stop"
          },
          "slug": "getTicketDetails",
          "actionId": "552862c2-52b2-4443-84ef-df1f06f05bb3",
          "config": {
            "connectionId": null,
            "requiresConfirmation": false,
            "modelId": "64776bd9-4c58-42d0-8301-2c8a4566e68c",
            "fields": {
              "ticketId": {
                "mode": "auto",
                "value": null,
                "prompt": null
              }
            }
          }
        },
        "id": "708b7e7d-f351-4575-bc26-59becf029f89",
        "position": {
          "x": 560,
          "y": 1160
        }
      },
      {
        "type": "action",
        "data": {
          "comment": "🔔 AGENT BENACHRICHTIGEN - Sendet Slack-Nachricht an Support-Team\n\n🎯 ZWECK:\nInformiert den zuständigen Support-Agent über:\n- Neues Ticket mit generiertem Antwort-Draft\n- Ticket-Details und Link\n- Confidence-Level der KI-Antwort\n- Aufforderung zur Überprüfung\n\nSo weiß der Agent sofort, dass ein Draft bereit ist!\n\n⚙️ SETUP:\n1. Wähle deine Slack-Verbindung aus\n2. Channel-ID wird automatisch aus deinem Support-Team-Channel ermittelt\n3. Die Nachricht enthält alle relevanten Infos\n\n🔧 PERSONALISIERUNG:\n- Channel-ID manuell setzen für spezifischen Channel (z.B. #support)\n- Nachrichtentext anpassen (Emojis, Format, Infos)\n- @mentions hinzufügen für spezifische Agents\n- Link zum Ticket einfügen (z.B. https://yourcompany.zendesk.com/agent/tickets/{{ticketId}})\n- Andere Messaging-Plattformen: Teams, E-Mail, SMS\n- Conditional: Nur bei Low Confidence benachrichtigen\n- Prioritäts-basierte Benachrichtigungen (dringende Tickets = andere Channels)",
          "executionId": null,
          "errorHandling": {
            "strategy": "stop"
          },
          "slug": "notifyAgent",
          "actionId": "26a39d11-d5fe-4f46-b776-973dd20b8147",
          "config": {
            "connectionId": null,
            "requiresConfirmation": false,
            "modelId": "64776bd9-4c58-42d0-8301-2c8a4566e68c",
            "fields": {
              "text": {
                "mode": "manual",
                "value": "🎫 New Support Ticket Response Draft Ready!\n\nTicket: {{getTicketDetails.output}}\n\nA personalized response draft has been generated and saved as an internal note in Zendesk.\n\nConfidence Level: {{responseGenerator.output.structured.confidence}}\n\nPlease review and send the response to the customer.",
                "prompt": null
              },
              "channelId": {
                "mode": "prompt",
                "value": null,
                "prompt": "Use the support team channel"
              }
            }
          }
        },
        "id": "05836d12-6173-46c6-af82-d2ff957f2423",
        "position": {
          "x": 2784,
          "y": 1160
        }
      },
      {
        "type": "agent",
        "data": {
          "comment": "🤖 KI-AGENT - Generiert personalisierte Antwort-Drafts\n\n🎯 ZWECK:\nAnalysiert Ticket + FAQ-Artikel und erstellt einen maßgeschneiderten Antwort-Draft:\n- Versteht die spezifische Kundenanfrage\n- Kombiniert relevante FAQ-Informationen\n- Passt den Ton an den Kunden an\n- Strukturiert die Antwort professionell\n- Gibt Confidence-Level zur Qualitätseinschätzung\n\n⚙️ SETUP:\n1. Der Agent ist bereits konfiguriert und einsatzbereit\n2. KI-Modell ist vorausgewählt (kann geändert werden)\n3. Ausgabefelder: response_draft, success, confidence\n\n🔧 PERSONALISIERUNG:\n- Prompt anpassen für deinen Support-Stil (formell/informell, kurz/ausführlich)\n- Ton-Vorgaben hinzufügen (z.B. \"immer empathisch\", \"technisch präzise\")\n- Zusätzliche Anweisungen: Sprache, Format, Struktur\n- Output-Schema erweitern (z.B. \"suggested_priority\", \"category\")\n- MaxSteps erhöhen falls komplexere Analysen nötig sind\n- Tools hinzufügen: Web Search für aktuelle Infos, Python für Berechnungen",
          "executionId": null,
          "errorHandling": {
            "strategy": "stop"
          },
          "slug": "responseGenerator",
          "assistantId": null,
          "mode": "create",
          "name": "Response Generator",
          "prompt": {
            "mode": "manual",
            "value": "You are a support agent assistant. Analyze the support ticket and the FAQ articles found, then generate a personalized, professional response draft.\n\nTicket Details:\n{{getTicketDetails.output}}\n\nRelevant FAQ Articles:\n{{searchFaq.output}}\n\nYour task:\n1. Carefully read the ticket content including subject, message, and customer information\n2. Review the FAQ articles that were found\n3. Create a personalized response that:\n   - Addresses the customer's specific question or issue\n   - Incorporates relevant information from the FAQ articles\n   - Adapts the FAQ content to the customer's specific situation\n   - Uses a friendly, professional tone\n   - Is clear and concise\n   - Includes next steps if applicable\n\nGenerate a complete response draft that the support agent can review and send to the customer."
          },
          "attachmentIds": [],
          "output": "structured",
          "connectionOverrides": {},
          "outputSchema": [
            {
              "id": "d48d3b8d-88ef-4b70-aa46-ff57f875f34b",
              "name": "response_draft",
              "description": "The personalized response draft for the support agent",
              "type": "string",
              "required": true
            },
            {
              "id": "e6445594-a9b5-4a91-bc6a-6fa2acc723a0",
              "name": "success",
              "description": "Whether the response was successfully generated",
              "type": "boolean",
              "required": true
            },
            {
              "id": "490b6169-87d9-4915-8208-c33ac0765270",
              "name": "confidence",
              "description": "Confidence level in the response",
              "type": "select",
              "required": true,
              "options": [
                "High",
                "Medium",
                "Low"
              ]
            }
          ],
          "modelId": "c968689a-c0d9-49de-aa76-b10ed15ebb0e",
          "tools": [],
          "maxSteps": 25
        },
        "id": "351b774a-ec0c-4873-b30d-180f69498b55",
        "position": {
          "x": 1680,
          "y": 1160
        }
      },
      {
        "type": "action",
        "data": {
          "comment": "💾 DRAFT SPEICHERN - Speichert Antwort als interne Notiz\n\n🎯 ZWECK:\nSpeichert den generierten Antwort-Draft als INTERNE NOTIZ im Zendesk-Ticket:\n- Nur für Support-Agents sichtbar (nicht für Kunden)\n- Agent kann Draft prüfen, bearbeiten und dann senden\n- Vollständige Nachverfolgbarkeit der KI-Vorschläge\n- Kein versehentliches Versenden an Kunden\n\n⚙️ SETUP:\n1. Wähle deine Zendesk-Verbindung aus\n2. isPublic ist auf \"false\" gesetzt = interne Notiz\n3. Die Ticket-ID und der Draft werden automatisch übergeben\n\n🔧 PERSONALISIERUNG:\n- isPublic auf \"true\" setzen um direkt an Kunden zu senden (VORSICHT!)\n- Prefix/Suffix zum Draft hinzufügen (z.B. \"[KI-GENERIERT]\")\n- Zusätzliche Metadaten speichern (Confidence-Level, Timestamp)\n- Bei anderen Support-Systemen: Entsprechende \"Add Comment\" Action verwenden\n- Conditional Logic: Nur bei High Confidence automatisch speichern",
          "executionId": null,
          "errorHandling": {
            "strategy": "stop"
          },
          "slug": "saveDraftNote",
          "actionId": "b4456c4e-cae1-4b75-a53c-a36c6d6dd367",
          "config": {
            "connectionId": null,
            "requiresConfirmation": false,
            "modelId": "64776bd9-4c58-42d0-8301-2c8a4566e68c",
            "fields": {
              "comment": {
                "mode": "manual",
                "value": "{{responseGenerator.output.structured.response_draft}}",
                "prompt": null
              },
              "isPublic": {
                "mode": "manual",
                "value": "false",
                "prompt": null
              },
              "ticketId": {
                "mode": "auto",
                "value": null,
                "prompt": null
              }
            }
          }
        },
        "id": "91eb9c92-03f3-4aa8-a0b8-cd99a6ed32d2",
        "position": {
          "x": 2240,
          "y": 1160
        }
      }
    ],
    "edges": [
      {
        "id": "57e7bbf6-5931-43ff-b464-b0733e6b7d84",
        "source": "074cbdb7-fd4a-42bd-8092-8a039b9b7385",
        "target": "708b7e7d-f351-4575-bc26-59becf029f89",
        "animated": false,
        "sourceHandle": "output-success",
        "targetHandle": "input-default",
        "conditionId": null
      },
      {
        "id": "ec3ac861-96f5-4513-b173-dc9d26542a43",
        "source": "708b7e7d-f351-4575-bc26-59becf029f89",
        "target": "db404162-7c93-48bb-ad8c-9ccfa738a852",
        "animated": false,
        "sourceHandle": "output-success",
        "targetHandle": "input-default",
        "conditionId": null
      },
      {
        "id": "f4e413e6-6ee1-4fd0-9081-88db01477443",
        "source": "91eb9c92-03f3-4aa8-a0b8-cd99a6ed32d2",
        "target": "05836d12-6173-46c6-af82-d2ff957f2423",
        "animated": false,
        "sourceHandle": "output-success",
        "targetHandle": "input-default",
        "conditionId": null
      },
      {
        "id": "55f26a93-c448-488c-b79d-8a916940fa31",
        "source": "db404162-7c93-48bb-ad8c-9ccfa738a852",
        "target": "351b774a-ec0c-4873-b30d-180f69498b55",
        "animated": false,
        "sourceHandle": "output-success",
        "targetHandle": "input-default",
        "conditionId": null
      },
      {
        "id": "4d187efb-e591-4dee-afcd-e37f3dd32de5",
        "source": "351b774a-ec0c-4873-b30d-180f69498b55",
        "target": "91eb9c92-03f3-4aa8-a0b8-cd99a6ed32d2",
        "animated": false,
        "sourceHandle": "output-success",
        "targetHandle": "input-default",
        "conditionId": null
      }
    ]
  }
}