Zum Hauptinhalt springen

Workflow-Regeln

Automatisieren Sie Ihre Helpdesk-Prozesse mit anpassbaren Workflow-Regeln. Workflow-Regeln ermöglichen es Ihnen, Ticket-Attribute automatisch zu aktualisieren, Benachrichtigungen zu senden und bestimmte Aktionen basierend auf definierten Ereignissen oder Bedingungen auszulösen. Diese Funktion hilft, manuelle Arbeit zu reduzieren, Konsistenz zu wahren und Reaktionszeiten zu beschleunigen.

Nach der Installation erstellt Helpdesk MX automatisch die Standard-Workflow-Regel "Auto-change status to Waiting for Customer on agent reply".


Allgemeine Informationen​

Allgemeine InformationenAllgemeine Informationen
  • Rule Name: Definieren Sie einen beschreibenden Namen für die Regel. Klare Benennung hilft Ihrem Team, leicht zu erkennen, was jede Regel tut.
  • Active: Aktivieren oder deaktivieren Sie die Regel. Nur aktive Regeln werden ausgeführt, wenn ihr Ereignis und ihre Bedingungen erfüllt sind.
  • Event: Wählen Sie das Ereignis aus, das die Regel auslöst.
  • Priority / Sort Order: Geben Sie die Verarbeitungsreihenfolge der Regel an. Niedrigere Zahlen werden zuerst ausgeführt. Dies hilft zu kontrollieren, welche Regeln Vorrang haben, wenn mehrere Regeln auf dasselbe Ereignis zutreffen.
  • Stop Further Rules Processing: Beenden Sie die Ausführung von Regeln mit niedrigerer Priorität, sobald diese Regel angewendet wurde. Nützlich, wenn Sie möchten, dass eine bestimmte Regel die volle Kontrolle über ein Ereignis übernimmt.

Ereignisse​

Ereignisse definieren, wann die Workflow-Regel ausgewertet wird. Verfügbare Ereignisse umfassen:

  • New Ticket — ausgelöst, wenn ein neues Ticket erstellt wird.
  • New Customer Reply — ausgelöst, wenn ein Kunde eine neue Antwort sendet.
  • New Staff Reply — ausgelöst, wenn ein Agent eine Antwort veröffentlicht.
  • New Third Party Reply — ausgelöst, wenn ein Dritter eine Nachricht sendet.
  • Ticket Assigned — ausgelöst, wenn ein Ticket einem Benutzer zugewiesen wird.
  • Ticket Updated — ausgelöst, wenn Ticket-Felder aktualisiert werden.
  • Cron Every Hour — vom System stündlich ausgelöst, ermöglicht zeitbasierte Aktionen.

Bedingungen​

Bedingungen definieren, wann eine Workflow-Regel ausgeführt werden soll. Sie können eine oder mehrere Bedingungen verwenden, sie mit ALL/ANY-Logik kombinieren und sogar verschachtelte Gruppen für erweiterte Filterung erstellen. Lassen Sie diesen Bereich leer, damit die Regel bei jedem Ereignis ausgeführt wird.

BedingungenBedingungen

Verfügbare Felder​

Sie können Bedingungen mit den folgenden Feldern erstellen:

  • Subject — prüft Wörter oder Phrasen im Ticket-Betreff.
  • Customer Email — entspricht der E-Mail-Adresse des Kunden.
  • Customer Name — vergleicht den Namen des Kunden.
  • Channel — filtert Tickets, die aus bestimmten Quellen erstellt wurden (z.B. E-Mail, Kontaktformular, API).
  • Department — entspricht der aktuell dem Ticket zugewiesenen Abteilung.
  • Department (Before Change) — ermöglicht Vergleich mit der Abteilung vor einem Update-Ereignis.
  • Folder — prüft, zu welchem Ordner das Ticket derzeit gehört.
  • Folder (Before Change) — prüft den Ordner vor der letzten Änderung.
  • Owner — entspricht dem zugewiesenen Agenten.
  • Owner (Before Change) — vergleicht den Besitzer vor einem Update.
  • Priority — prüft die aktuelle Priorität des Tickets.
  • Priority (Before Change) — vergleicht die Priorität, bevor sie aktualisiert wurde.
  • Status — prüft den aktuellen Ticket-Status.
  • Status (Before Change) — vergleicht den vorherigen Status.
  • Last Message — ermöglicht es Ihnen, Inhalte in der letzten Nachricht zu prüfen.
  • Last Reply By — definiert, wer zuletzt geantwortet hat (Kunde, Mitarbeiter oder Dritter).
  • Hours Since Created — verstrichene Zeit seit der Ticket-Erstellung.
  • Hours Since Last Reply — Zeit seit der letzten Antwort.
  • Hours Since Updated — Zeit seit der letzten Änderung des Tickets.

Bedingungsoperatoren​

Jede Bedingung kann einen der folgenden Operatoren verwenden, um zu definieren, wie Werte verglichen werden:

  • Equals — wird ausgelöst, wenn der Feldwert genau mit dem angegebenen Wert übereinstimmt.
  • Not Equals — wird ausgelöst, wenn der Feldwert vom angegebenen Wert abweicht.
  • Greater Than — wird ausgelöst, wenn der Wert größer als der angegebene ist (hauptsächlich bei numerischen oder Zeitfeldern verwendet).
  • Greater Than or Equals — wird ausgelöst, wenn der Wert größer oder gleich dem angegebenen ist.
  • Less Than — wird ausgelöst, wenn der Wert kleiner als der angegebene ist.
  • Less Than or Equals — wird ausgelöst, wenn der Wert kleiner oder gleich dem angegebenen ist.
  • Between — wird ausgelöst, wenn der Wert zwischen zwei angegebenen Zahlen liegt (nützlich für zeitbasierte Bedingungen).
  • Matches Regex — vergleicht Feldwerte mit regulären Ausdrücken für erweiterte Mustererkennung.
  • Starts With — wird ausgelöst, wenn das Feld mit dem angegebenen Text beginnt.
  • Ends With — wird ausgelöst, wenn das Feld mit dem angegebenen Text endet.
  • Is Empty — wird ausgelöst, wenn das Feld keinen Wert hat.
  • Is Not Empty — wird ausgelöst, wenn das Feld einen beliebigen Wert enthält.
  • Contains — wird ausgelöst, wenn das Feld den angegebenen Text enthält.
  • Does Not Contain — wird ausgelöst, wenn das Feld den angegebenen Text nicht enthält.

Aktionen​

Aktionen definieren, was passiert, sobald alle Bedingungen erfüllt sind. Mehrere Aktionen können innerhalb einer einzigen Regel kombiniert werden.

AktionenAktionen

Verfügbare Aktionen umfassen:

  • Set Status — Status des Tickets aktualisieren.
  • Set Priority — Prioritätsstufe ändern.
  • Set Department — Ticket einer anderen Abteilung neu zuweisen.
  • Set Owner — Einem bestimmten Agenten zuweisen.
  • Change Folder — Ticket in einen bestimmten Ordner verschieben.
  • Add Tags — Tags zur Kategorisierung hinzufügen.
  • Remove Tags — Vorhandene Tags vom Ticket löschen.
  • Send Email — E-Mail-Benachrichtigungen an angegebene Empfänger senden.
  • Run Script — Benutzerdefinierten JavaScript-Code für erweiterte Automatisierung ausführen.

E-Mail senden-Aktion​

Die Aktion Send Email ermöglicht es Ihnen, automatische E-Mail-Benachrichtigungen zu senden, wenn eine Regel ausgelöst wird. Dies ist nützlich, um Teammitglieder zu benachrichtigen, Kunden zu informieren oder mit externen Parteien zu kommunizieren.

Verfügbare Optionen:

  • Send to ticket owner — Den zugewiesenen Agenten benachrichtigen.
  • Send to all department users — Alle Mitglieder der Ticket-Abteilung benachrichtigen.
  • Send to customer — Kunden über Updates informieren.
  • Send to other addresses — Benutzerdefinierte E-Mail-Adressen angeben.
  • Email Subject — Betreffzeile der E-Mail definieren (unterstützt Liquid-Template-Variablen).
  • Email Body — E-Mail-Inhalt verfassen (unterstützt Liquid-Template-Variablen).
  • Include attachments — Dateien aus der letzten Nachricht anhängen.

Template-Variablen​

Sie können Liquid-Template-Variablen in den Feldern Email Subject und Email Body verwenden, um dynamisch Ticket-, Kunden- und Nachrichteninformationen einzufügen.

Ticket-Variablen:

VariableBeschreibung
{{ ticket.code }}Ticket-Code (z.B. T-001)
{{ ticket.subject }}Ticket-Betreffzeile
{{ ticket.created_at }}Ticket-Erstellungszeitstempel
{{ ticket.updated_at }}Letzter Update-Zeitstempel
{{ ticket.customer_name }}Vollständiger Name des Kunden
{{ ticket.customer_email }}E-Mail-Adresse des Kunden
{{ ticket.admin_url }}Direkter Link zum Ticket im Admin-Panel
{{ ticket.admin_last_message_text }}Inhalt der letzten Agenten-Antwort (Klartext)
{{ ticket.admin_last_message_html }}Inhalt der letzten Agenten-Antwort (HTML)
{{ ticket.customer_last_message_text }}Inhalt der letzten Kunden-Antwort (Klartext)
{{ ticket.customer_last_message_html }}Inhalt der letzten Kunden-Antwort (HTML)

Besitzer/Zuweisungs-Variablen:

VariableBeschreibung
{{ owner.firstname }}Vorname des zugewiesenen Agenten
{{ owner.lastname }}Nachname des zugewiesenen Agenten
{{ owner.email }}E-Mail des zugewiesenen Agenten
{{ owner.fullname }}Vollständiger Name des zugewiesenen Agenten
{{ owner.is_admin }}Ob der Besitzer ein Admin ist

Abteilungs-Variablen:

VariableBeschreibung
{{ department.name }}Abteilungsname
{{ department.sender_name }}Absendername der Abteilung

Nachrichten-Variablen (wenn durch Nachrichtenereignisse ausgelöst):

VariableBeschreibung
{{ message.body_text }}Nachrichteninhalt (Klartext)
{{ message.body_html }}Nachrichteninhalt (HTML)
{{ message.type }}Nachrichtentyp
{{ message.created_at }}Nachrichten-Erstellungszeitstempel

Datums-/Zeitvariablen:

VariableBeschreibung
{{ now }}Aktueller Zeitstempel (RFC3339)
{{ date }}Aktuelles Datum (YYYY-MM-DD)
{{ time }}Aktuelle Zeit (HH:MM:SS)
{{ year }}Aktuelles Jahr

Beispiel-E-Mail-Vorlage:

Subject: Neue Antwort auf Ticket #{{ ticket.code }}

Hallo {{ owner.firstname }},

Ein Kunde hat auf das Ticket "{{ ticket.subject }}" geantwortet.

Kunde: {{ ticket.customer_name }} ({{ ticket.customer_email }})

Letzte Nachricht:
{{ ticket.customer_last_message_text }}

Ticket anzeigen: {{ ticket.admin_url }}

Skript ausführen-Aktion​

Die Aktion Run Script ermöglicht es Ihnen, benutzerdefinierten JavaScript-Code auszuführen, um komplexe Automatisierungslogik zu implementieren, die über einfache Feldzuweisungen hinausgeht. Skripte können Ticket-Daten lesen, bedingte Entscheidungen treffen und mehrere Felder gleichzeitig aktualisieren.

Verfügbare Ticket-Eigenschaften (Lesen):

EigenschaftBeschreibung
ticket.idEindeutige Ticket-Kennung
ticket.subjectTicket-Betreffzeile
ticket.folderAktueller Ordner (INBOX, ASSIGNED, SPAM usw.)
ticket.tagsArray von Tags
ticket.statusObjekt mit id, code und name
ticket.priorityObjekt mit id und name
ticket.departmentObjekt mit id und name
ticket.ownerObjekt mit id, email, firstname, lastname
ticket.customerObjekt mit id, email, firstname, lastname, name
ticket.<custom_field_code>Benutzerdefinierter Feldwert nach seinem Code

Verfügbare Ticket-Eigenschaften (Schreiben):

EigenschaftErwarteter Wert
ticket.statusStatuscode (String) oder Status-ID
ticket.priorityPrioritätsname (String) oder Prioritäts-ID
ticket.departmentAbteilungsname (String) oder Abteilungs-ID
ticket.ownerBenutzer-E-Mail (String) oder Benutzer-ID
ticket.folderOrdnername: "INBOX", "ASSIGNED", "SPAM", "ARCHIVE"
ticket.tagsArray von Tag-Strings
ticket.<custom_field_code>Wert entsprechend dem benutzerdefinierten Feldtyp

Hilfsfunktionen:

FunktionGibt zurück
getStatuses()Array aller verfügbaren Status
getPriorities()Array aller verfügbaren Prioritäten
getDepartments()Array aller verfügbaren Abteilungen
getUsers()Array aller verfügbaren Benutzer
fetch(url, options)HTTP-Anfragen an externe APIs durchführen

Nachrichtenkontext (verfügbar, wenn die Regel durch ein Nachrichtenereignis ausgelöst wird):

EigenschaftBeschreibung
message.idEindeutige Nachrichten-Kennung
message.body_textNachrichteninhalt (Klartext)
message.body_htmlNachrichteninhalt (HTML)
message.createdAtNachrichten-Erstellungszeitstempel

Skript-Beispiele:

// Priorität basierend auf Betreff-Stichwörtern setzen
if (ticket.subject.toLowerCase().includes("urgent")) {
ticket.priority = "High";
}
// Tickets basierend auf Inhalt an Abteilungen weiterleiten
if (ticket.subject.includes("billing") || ticket.subject.includes("invoice")) {
ticket.department = "Billing";
} else if (ticket.subject.includes("technical") || ticket.subject.includes("error")) {
ticket.department = "Technical Support";
}
// VIP-Kundenbehandlung
if (ticket.customer && ticket.customer.email.endsWith("@enterprise.com")) {
ticket.priority = "High";
ticket.tags = ["vip", "enterprise"];
}
// Benutzerdefinierten Feldwert setzen
ticket.order_id = "12345";
ticket.vip_customer = true;
ticket.order_amount = 99.99;
// Kundendaten von externer API abrufen und Ticket aktualisieren
var response = fetch("https://api.example.com/customers/" + ticket.customer.email, {
headers: { "Authorization": "Bearer YOUR_API_KEY" }
});

if (response.ok && response.json) {
ticket.customer_tier = response.json.tier;
if (response.json.tier === "enterprise") {
ticket.priority = "High";
ticket.department = "Enterprise Support";
}
}

Wichtige Hinweise:

  • Skripte haben ein 10-Sekunden-Timeout, um Endlosschleifen zu verhindern.
  • Ungültige Feldwerte (nicht existierender Status, Priorität usw.) werden elegant ignoriert.
  • Skriptfehler beeinflussen keine anderen Regeln oder stürzen das System ab.
  • Benutzerdefinierte Felder werden durch ihren Code referenziert, nicht durch ihren Namen.

Benachrichtigungen​

Sie können automatische E-Mail-Benachrichtigungen senden, wenn die Regel ausgeführt wird, um alle Beteiligten auf dem Laufenden zu halten.

BenachrichtigungenBenachrichtigungen

Benachrichtigungsoptionen umfassen:

  • Send email to ticket owner — Den zugewiesenen Agenten benachrichtigen.
  • Send email to all department users — Alle Abteilungsmitglieder benachrichtigen.
  • Send email to customer — Kunden über Änderungen informieren.
  • Send email to other addresses — An externe Empfänger senden.
  • Email Subject — Betreffzeile angeben.
  • Email Body — E-Mail-Inhalt verfassen.
  • Attach files previously attached to the last message — Vorherige Anhänge für Kontext einschließen.

Beispiel-Workflow-Regeln​

Status bei Kundenantwort ändern
Wenn ein Kunde antwortet, ändert das System automatisch den Ticket-Status auf "Waiting for Agent".

Typ: Workflow-Regel
Ist aktiv: Ja
Ereignis: New Customer Reply
Bedingungen: Status Not Equals Closed
Aktionen: Set Status → Waiting for Agent
Neue Antwort von Drittem
Wenn ein Dritter eine Nachricht sendet, setzt das System den Status auf "Waiting for Agent" und fügt ein Tag `third_party` hinzu.

Typ: Workflow-Regel
Ist aktiv: Ja
Ereignis: New Third Party Reply
Bedingungen: Keine
Aktionen:
Set Status → Waiting for Agent
Add Tags → third_party
Ticket einem Mitarbeiter zugewiesen
Wenn ein Ticket einem Mitarbeiter zugewiesen wird, wird es automatisch in den Assigned-Ordner verschoben und eine E-Mail-Benachrichtigung gesendet.

Typ: Workflow-Regel
Ist aktiv: Ja
Ereignis: Ticket Assigned
Bedingungen: Keine
Aktionen:
Change Folder → Assigned
Send email to ticket owner
Ticket nach 72 Stunden ohne Antwort schließen
Wenn keine Antwort innerhalb von 72 Stunden eingeht, wird das Ticket automatisch geschlossen.

Typ: Workflow-Regel
Ist aktiv: Ja
Ereignis: Cron Every Hour
Bedingungen:
Status Equals Waiting for Customer
Hours Since Last Reply Greater Than 72
Aktionen: Set Status → Closed
Skript: Weiterleiten und priorisieren basierend auf Kunden-E-Mail-Domain
Unternehmenskunden an dedizierten Support weiterleiten und hohe Priorität setzen.

Typ: Workflow-Regel
Ist aktiv: Ja
Ereignis: New Ticket
Bedingungen: Keine
Aktionen: Run Script

```javascript
if (ticket.customer && ticket.customer.email) {
var domain = ticket.customer.email.split("@")[1];

if (domain === "enterprise.com" || domain === "bigcorp.com") {
ticket.priority = "High";
ticket.department = "Enterprise Support";
ticket.tags = ["enterprise", "priority"];
}
}
```
Skript: Tickets automatisch nach Betreff-Stichwörtern kategorisieren
Tickets automatisch kategorisieren und benutzerdefinierte Felder basierend auf Betreffinhalt setzen.

Typ: Workflow-Regel
Ist aktiv: Ja
Ereignis: New Ticket
Bedingungen: Keine
Aktionen: Run Script

```javascript
var subject = ticket.subject.toLowerCase();

if (subject.includes("refund") || subject.includes("return")) {
ticket.department = "Billing";
ticket.category = "refund_request";
} else if (subject.includes("password") || subject.includes("login")) {
ticket.department = "Technical Support";
ticket.category = "account_access";
} else if (subject.includes("order") || subject.includes("shipping")) {
ticket.department = "Orders";
ticket.category = "order_inquiry";
}
```
Skript: Eskalieren basierend auf Nachrichteninhaltsanalyse
Dringende Stichwörter in Nachrichten erkennen und Tickets automatisch eskalieren.

Typ: Workflow-Regel
Ist aktiv: Ja
Ereignis: New Customer Reply
Bedingungen: Keine
Aktionen: Run Script

```javascript
if (message && message.body_text) {
var body = message.body_text.toLowerCase();
var urgentKeywords = ["asap", "urgent", "critical", "down", "outage", "emergency"];

for (var i = 0; i < urgentKeywords.length; i++) {
if (body.includes(urgentKeywords[i])) {
ticket.priority = "High";
ticket.tags = ticket.tags.concat(["escalated"]);
break;
}
}
}
```