TaskMonkey Handbuch

Rezept: Support-Triage mit Knowledge Base

Eingehende Support-Mails: KB durchsuchen, antworten oder Ticket eskalieren.

Support-Mailbox ist voll mit Standardfragen, die in der FAQ oder Dokumentation längst beantwortet sind. Statt Mitarbeiter manuell sortieren zu lassen: Plattform liest, sucht, antwortet — und eskaliert nur, wenn die KB nicht reicht.

Ziel

  • Eingehende Support-Mail an support@kunde.de (forward auf Workspace-Adresse)
  • Plattform durchsucht FAQ-KB nach passender Antwort
  • Bei Treffer mit hoher Konfidenz: automatische Antwort an Kunden mit KB-Verweis
  • Bei niedriger Konfidenz: Ticket im Helpdesk anlegen, an passende Person zuweisen
  • In jedem Fall: Slack-Hinweis im Support-Channel mit Vorschlag

Voraussetzungen

  • Knowledge Base mit eurer FAQ/Doku befüllt (siehe KB-Konzept)
  • Helpdesk-API mit Ticket-Tool (Zendesk, Zammad, Freshdesk, eigenes)
  • Slack-Webhook für Support-Channel

1. KB einrichten

/manage/knowledge-bases → Neue KB „Support-FAQ", Sources hinzufügen:

  • https://kunde.de/faq
  • https://kunde.de/hilfe
  • https://docs.kunde.de

Auf Status completed warten, Entries durchsehen.

2. Such-Tool

tools/kb/searchSupportFaq.php:

<?php
return [
    'tools' => [
        'searchSupportFaq' => [
            'extends' => 'getKnowledge',
            'description' => 'Durchsucht die Support-FAQ. Nutze für Fragen zu Produkten, Versand, Rückgabe, Account, Zahlungen.',
            'options' => [
                'knowledge_base' => 'support-faq',
                'limit' => 3,
                'min_score' => 6.0,
            ],
        ],
    ],
];

min_score: 6.0 ist die Schwelle für „guter Treffer". Darunter gilt's als unsicher.

3. Antwort-Mail-Tool

tools/support/replyToCustomer.php:

<?php
return [
    'tools' => [
        'replyToCustomer' => [
            'description' => 'Antwortet dem Kunden auf seine Support-Mail.',
            'parameters' => [
                'type' => 'object',
                'properties' => [
                    'to' => ['type' => 'string'],
                    'subject' => ['type' => 'string'],
                    'body' => ['type' => 'string', 'description' => 'HTML, freundlicher Ton, mit Verweis auf KB-Source'],
                    'kbSource' => ['type' => 'string', 'description' => 'URL des Entries, das die Antwort gestützt hat'],
                ],
                'required' => ['to', 'subject', 'body'],
            ],
            'api' => 'mailgun',
            'method' => 'POST',
            'path' => 'messages',
            'body' => [
                'from' => 'Support Kunde <support@kunde.de>',
                'to' => '{to}',
                'subject' => 'Re: {subject}',
                'html' => '{body}',
            ],
        ],
    ],
];

4. Ticket-Tool

tools/support/createTicket.php:

<?php
return [
    'tools' => [
        'createTicket' => [
            'description' => 'Legt ein Ticket im Helpdesk an, wenn die KB keine Antwort liefert.',
            'parameters' => [
                'type' => 'object',
                'properties' => [
                    'customerEmail' => ['type' => 'string'],
                    'subject' => ['type' => 'string'],
                    'message' => ['type' => 'string'],
                    'category' => [
                        'type' => 'string',
                        'enum' => ['versand', 'retoure', 'account', 'zahlung', 'beschwerde', 'sonstiges'],
                    ],
                    'priority' => [
                        'type' => 'string',
                        'enum' => ['low', 'normal', 'high', 'urgent'],
                    ],
                ],
                'required' => ['customerEmail', 'subject', 'message', 'category'],
            ],
            'api' => 'helpdesk',
            'method' => 'POST',
            'path' => 'tickets',
            'body' => [
                'requester' => '{customerEmail}',
                'subject' => '{subject}',
                'description' => '{message}',
                'tags' => ['{category}'],
                'priority' => '{priority}',
            ],
            'mapping' => [
                'ticketId' => 'id',
                'url' => 'url',
            ],
        ],
    ],
];

5. Slack-Notification

tools/notify/notifySupportTeam.php:

<?php
return [
    'tools' => [
        'notifySupportTeam' => [
            'description' => 'Schreibt einen Hinweis in den Support-Slack-Channel.',
            'parameters' => [
                'type' => 'object',
                'properties' => [
                    'action' => ['type' => 'string', 'enum' => ['auto-replied', 'ticket-created']],
                    'customerEmail' => ['type' => 'string'],
                    'subject' => ['type' => 'string'],
                    'summary' => ['type' => 'string'],
                    'ticketUrl' => ['type' => 'string'],
                ],
                'required' => ['action', 'customerEmail', 'subject', 'summary'],
            ],
            'api' => 'slack',
            'method' => 'POST',
            'path' => 'TXXXX/BXXXX/cxxxxxxxx',
            'body' => [
                'text' => '*Support: {action}*\n_{subject}_ von {customerEmail}\n→ {summary}\n{ticketUrl}',
            ],
        ],
    ],
];

6. Email-Prompt

email.php:

<?php
return [
    'email.prompt' => <<<PROMPT
    Du bist der Support-Triage-Assistent.

    Bei jeder Mail:
    1. searchSupportFaq mit dem Kern der Frage
    2. Wenn du einen Treffer mit hoher Konfidenz hast (Score klar > 6,
       Inhalt passt direkt zur Frage):
       a. replyToCustomer mit einer freundlichen, hilfreichen Antwort
          basierend auf dem KB-Eintrag. Verweise am Ende auf den
          ausführlicheren KB-Artikel.
       b. notifySupportTeam mit action="auto-replied"
    3. Wenn KEIN guter Treffer:
       a. createTicket mit passender Kategorie und Priorität
          (urgent nur bei Reklamationen, Datenschutzanfragen,
          Geld-zurück-Forderungen)
       b. notifySupportTeam mit action="ticket-created" und Ticket-URL

    Tonfall der Antworten:
    - Du sprichst den Kunden mit "Sie" an
    - Maximal 3-4 Absätze
    - Wenn die Antwort komplex ist: Schritte aufzählen
    - Schließe mit "Beste Grüße, Ihr Support-Team von Kunde GmbH"

    Antworte NIE auf erkennbare Beschwerden, Erstattungsforderungen,
    rechtliche oder Datenschutz-Themen — die immer als Ticket eskalieren.
    PROMPT,
];

7. Tool-Allowlist

Ergänze in derselben email.php:

<?php
return [
    'email.tools' => [
        'searchSupportFaq',
        'replyToCustomer',
        'createTicket',
        'notifySupportTeam',
    ],
];

8. Testen

Eine Test-Mail mit einer Standardfrage senden („Wie lange dauert die Lieferung?"). Erwartung: searchSupportFaq findet was, replyToCustomer schickt Antwort, Slack-Hinweis kommt.

Eine Test-Mail mit Reklamation („Mein Paket ist beschädigt angekommen"). Erwartung: createTicket mit priority: urgent, kein Auto-Reply.

tm monitor   # während der Tests parallel laufen lassen

Erweiterungen

  • Sentiment-basierte Eskalation: Mail-Ton wütend → Priorität rauf, sofort Slack
  • Sprach-Erkennung: Englische Mails → englische KB durchsuchen, englische Antwort
  • Anhänge mit-bewerten: Foto eines beschädigten Produkts → automatisch in Retouren-Workflow
  • Stundenstatistik: zusätzliches Tool, das täglich zählt: wie viele auto-replied, wie viele eskaliert, durchschnittliche KB-Score → Dashboard
  • KB-Lücken finden: Wenn searchSupportFaq zu oft min_score nicht erreicht: Logging der Queries, regelmäßige Auswertung als „diese Themen fehlen in der FAQ"
Zuletzt aktualisiert: 2026-04-20