Workflow-regler
Automatiser dine Helpdesk-processer med tilpasselige workflow-regler. Workflow-regler giver dig mulighed for automatisk at opdatere ticketattributter, sende notifikationer og udløse specifikke handlinger baseret på definerede begivenheder eller betingelser. Denne funktion hjælper med at reducere manuelt arbejde, opretholde konsistens og fremskynde svartider.
Efter installation opretter Helpdesk MX automatisk standard workflow-reglen "Auto-change status to Waiting for Customer on agent reply".
Generel information

- Rule Name: definer et beskrivende navn for reglen. Klar navngivning hjælper dit team med nemt at identificere, hvad hver regel gør.
- Active: aktiver eller deaktiver reglen. Kun aktive regler udføres, når deres begivenhed og betingelser er opfyldt.
- Event: vælg den begivenhed, der udløser reglen.
- Priority / Sort Order: angiv reglens behandlingsrækkefølge. Lavere numre udføres først. Dette hjælper med at kontrollere, hvilke regler der har forrang, når flere regler gælder for samme begivenhed.
- Stop Further Rules Processing: stop udførelsen af regler med lavere prioritet, når denne regel er anvendt. Nyttigt når du ønsker, at en specifik regel skal have fuld kontrol over en begivenhed.
Begivenheder
Begivenheder definerer, hvornår workflow-reglen evalueres. Tilgængelige begivenheder inkluderer:
- New Ticket — udløst når en ny ticket oprettes.
- New Customer Reply — udløst når en kunde sender et nyt svar.
- New Staff Reply — udløst når en agent skriver et svar.
- New Third Party Reply — udløst når en tredjepart sender en besked.
- Ticket Assigned — udløst når en ticket tildeles en bruger.
- Ticket Updated — udløst når ticketfelter opdateres.
- Cron Every Hour — udløst af systemet hver time, hvilket tillader tidsbaserede handlinger.
Betingelser
Betingelser definerer, hvornår en workflow-regel skal udføres. Du kan bruge en eller flere betingelser, kombinere dem med ALL/ANY-logik, og endda oprette indlejrede grupper til avanceret filtrering. Lad dette afsnit være tomt for at få reglen til at udføre ved hver begivenhed.

Tilgængelige felter
Du kan opbygge betingelser ved hjælp af følgende felter:
- Subject — tjekker ord eller sætninger i ticketens emne.
- Customer Email — matcher kundens e-mailadresse.
- Customer Name — sammenligner kundens navn.
- Channel — filtrerer tickets oprettet fra specifikke kilder (f.eks. e-mail, kontaktformular, API).
- Department — matcher den aktuelle afdeling tildelt ticketen.
- Department (Before Change) — tillader sammenligning med afdelingen før en opdateringsbegivenhed.
- Folder — tjekker hvilken mappe ticketen aktuelt tilhører.
- Folder (Before Change) — tjekker mappen før sidste ændring.
- Owner — matcher den tildelte agent.
- Owner (Before Change) — sammenligner ejeren før en opdatering.
- Priority — tjekker ticketens aktuelle prioritet.
- Priority (Before Change) — sammenligner prioriteten før den blev opdateret.
- Status — tjekker den aktuelle ticketstatus.
- Status (Before Change) — sammenligner den tidligere status.
- Last Message — giver dig mulighed for at tjekke indhold i den seneste besked.
- Last Reply By — definerer hvem der svarede sidst (kunde, personale eller tredjepart).
- Hours Since Created — tid forløbet siden ticketen blev oprettet.
- Hours Since Last Reply — tid siden sidste svar blev givet.
- Hours Since Updated — tid siden ticketen sidst blev ændret.
Betingelsesoperatorer
Hver betingelse kan bruge en af følgende operatorer til at definere, hvordan værdier sammenlignes:
- Equals — udløses når feltværdien præcist matcher den angivne værdi.
- Not Equals — udløses når feltværdien er forskellig fra den angivne værdi.
- Greater Than — udløses når værdien er større end den angivne (hovedsageligt brugt med numeriske eller tidsfelter).
- Greater Than or Equals — udløses når værdien er større end eller lig med den angivne.
- Less Than — udløses når værdien er mindre end den angivne.
- Less Than or Equals — udløses når værdien er mindre end eller lig med den angivne.
- Between — udløses når værdien falder mellem to angivne numre (nyttigt til tidsbaserede betingelser).
- Matches Regex — sammenligner feltværdier ved hjælp af regulære udtryk til avanceret mønstermatchning.
- Starts With — udløses hvis feltet begynder med den angivne tekst.
- Ends With — udløses hvis feltet slutter med den angivne tekst.
- Is Empty — udløses når feltet ikke har nogen værdi.
- Is Not Empty — udløses når feltet indeholder en hvilken som helst værdi.
- Contains — udløses når feltet inkluderer den angivne tekst.
- Does Not Contain — udløses når feltet ikke inkluderer den angivne tekst.
Handlinger
Handlinger definerer, hvad der sker, når alle betingelser er opfyldt. Flere handlinger kan kombineres inden for en enkelt regel.

Tilgængelige handlinger inkluderer:
- Set Status — opdater ticketens status.
- Set Priority — skift prioritetsniveau.
- Set Department — omtildel ticketen til en anden afdeling.
- Set Owner — tildel til en specifik agent.
- Change Folder — flyt ticketen til en specifik mappe.
- Add Tags — tilføj tags til kategorisering.
- Remove Tags — slet eksisterende tags fra ticketen.
- Send Email — send e-mailnotifikationer til specificerede modtagere.
- Run Script — udfør tilpasset JavaScript-kode til avanceret automatisering.
Send Email-handling
Handlingen Send Email giver dig mulighed for at sende automatiske e-mailnotifikationer, når en regel udløses. Dette er nyttigt til at advare teammedlemmer, underrette kunder eller kommunikere med eksterne parter.
Tilgængelige muligheder:
- Send to ticket owner — underret den tildelte agent.
- Send to all department users — advar alle medlemmer af ticketens afdeling.
- Send to customer — informer kunden om opdateringer.
- Send to other addresses — angiv tilpassede e-mailadresser.
- Email Subject — definer e-mailens emnelinje (understøtter Liquid-skabelonvariabler).
- Email Body — udform e-mailindholdet (understøtter Liquid-skabelonvariabler).
- Include attachments — vedhæft filer fra den seneste besked.
Skabelonvariabler
Du kan bruge Liquid-skabelonvariabler i felterne Email Subject og Email Body til dynamisk at indsætte ticket-, kunde- og beskedinformation.
Ticketvariabler:
| Variabel | Beskrivelse |
|---|---|
{{ ticket.code }} | Ticketkode (f.eks. T-001) |
{{ ticket.subject }} | Ticketens emnelinje |
{{ ticket.created_at }} | Ticket-oprettelsestidsstempel |
{{ ticket.updated_at }} | Sidste opdateringstidsstempel |
{{ ticket.customer_name }} | Kundens fulde navn |
{{ ticket.customer_email }} | Kundens e-mailadresse |
{{ ticket.admin_url }} | Direkte link til ticket i admin-panel |
{{ ticket.admin_last_message_text }} | Indhold af sidste agentsvar (ren tekst) |
{{ ticket.admin_last_message_html }} | Indhold af sidste agentsvar (HTML) |
{{ ticket.customer_last_message_text }} | Indhold af sidste kundesvar (ren tekst) |
{{ ticket.customer_last_message_html }} | Indhold af sidste kundesvar (HTML) |
Ejer/tildelte variabler:
| Variabel | Beskrivelse |
|---|---|
{{ owner.firstname }} | Tildelt agents fornavn |
{{ owner.lastname }} | Tildelt agents efternavn |
{{ owner.email }} | Tildelt agents e-mail |
{{ owner.fullname }} | Tildelt agents fulde navn |
{{ owner.is_admin }} | Om ejeren er en admin |
Afdelingsvariabler:
| Variabel | Beskrivelse |
|---|---|
{{ department.name }} | Afdelingsnavn |
{{ department.sender_name }} | Afdelingens afsendernavn |
Beskedvariabler (når udløst af beskedbegivenheder):
| Variabel | Beskrivelse |
|---|---|
{{ message.body_text }} | Beskedindhold (ren tekst) |
{{ message.body_html }} | Beskedindhold (HTML) |
{{ message.type }} | Beskedtype |
{{ message.created_at }} | Besked-oprettelsestidsstempel |
Dato/tidsvariabler:
| Variabel | Beskrivelse |
|---|---|
{{ now }} | Nuværende tidsstempel (RFC3339) |
{{ date }} | Nuværende dato (YYYY-MM-DD) |
{{ time }} | Nuværende tid (HH:MM:SS) |
{{ year }} | Nuværende år |
Eksempel på e-mailskabelon:
Subject: Nyt svar på ticket #{{ ticket.code }}
Hej {{ owner.firstname }},
En kunde har svaret på ticket "{{ ticket.subject }}".
Kunde: {{ ticket.customer_name }} ({{ ticket.customer_email }})
Seneste besked:
{{ ticket.customer_last_message_text }}
Se ticket: {{ ticket.admin_url }}
Run Script-handling
Handlingen Run Script giver dig mulighed for at udføre tilpasset JavaScript-kode for at implementere kompleks automatiseringslogik, der går ud over simple felttildelinger. Scripts kan læse ticketdata, træffe betingede beslutninger og opdatere flere felter på én gang.
Tilgængelige ticketegenskaber (læs):
| Egenskab | Beskrivelse |
|---|---|
ticket.id | Ticket unikt identifikator |
ticket.subject | Ticketens emnelinje |
ticket.folder | Nuværende mappe (INBOX, ASSIGNED, SPAM osv.) |
ticket.tags | Array af tags |
ticket.status | Objekt med id, code og name |
ticket.priority | Objekt med id og name |
ticket.department | Objekt med id og name |
ticket.owner | Objekt med id, email, firstname, lastname |
ticket.customer | Objekt med id, email, firstname, lastname, name |
ticket.<custom_field_code> | Brugerdefineret feltværdi efter dens kode |
Tilgængelige ticketegenskaber (skriv):
| Egenskab | Forventet værdi |
|---|---|
ticket.status | Statuskode (streng) eller status-ID |
ticket.priority | Prioritetsnavn (streng) eller prioritets-ID |
ticket.department | Afdelingsnavn (streng) eller afdelings-ID |
ticket.owner | Bruger-e-mail (streng) eller bruger-ID |
ticket.folder | Mappenavn: "INBOX", "ASSIGNED", "SPAM", "ARCHIVE" |
ticket.tags | Array af tag-strenge |
ticket.<custom_field_code> | Værdi, der matcher den brugerdefinerede felttype |
Hjælpefunktioner:
| Funktion | Returnerer |
|---|---|
getStatuses() | Array af alle tilgængelige statusser |
getPriorities() | Array af alle tilgængelige prioriteter |
getDepartments() | Array af alle tilgængelige afdelinger |
getUsers() | Array af alle tilgængelige brugere |
fetch(url, options) | Foretag HTTP-anmodninger til eksterne API'er |
Beskedkontekst (tilgængelig når reglen udløses af en beskedbegivenhed):
| Egenskab | Beskrivelse |
|---|---|
message.id | Besked unikt identifikator |
message.body_text | Beskedindhold (ren tekst) |
message.body_html | Beskedindhold (HTML) |
message.createdAt | Besked-oprettelsestidsstempel |
Script-eksempler:
// Indstil prioritet baseret på emnenøgleord
if (ticket.subject.toLowerCase().includes("urgent")) {
ticket.priority = "High";
}
// Ruter tickets til afdelinger baseret på indhold
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-kundehåndtering
if (ticket.customer && ticket.customer.email.endsWith("@enterprise.com")) {
ticket.priority = "High";
ticket.tags = ["vip", "enterprise"];
}
// Indstil brugerdefineret feltværdi
ticket.order_id = "12345";
ticket.vip_customer = true;
ticket.order_amount = 99.99;
// Hent kundedata fra eksternt API og opdater ticket
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";
}
}
Vigtige bemærkninger:
- Scripts har en 10-sekunders timeout for at forhindre uendelige loops.
- Ugyldige feltværdier (ikke-eksisterende status, prioritet osv.) ignoreres elegant.
- Scriptfejl påvirker ikke andre regler eller crasher systemet.
- Brugerdefinerede felter refereres til ved deres kode, ikke navn.
Notifikationer
Du kan sende automatiske e-mailnotifikationer, når reglen udføres for at holde alle parter informeret.

Notifikationsmuligheder inkluderer:
- Send email to ticket owner — underret den tildelte agent.
- Send email to all department users — advar alle afdelingsmedlemmer.
- Send email to customer — informer kunden om ændringer.
- Send email to other addresses — send til eksterne modtagere.
- Email Subject — angiv emnelinjen.
- Email Body — udform e-mailindholdet.
- Attach files previously attached to the last message — inkluder tidligere vedhæftninger for kontekst.
Eksempler på workflow-regler
Skift status ved kundesvar
Når en kunde svarer, ændrer systemet automatisk ticketstatussen til Waiting for Agent.
Type: Workflow Rule
Is Active: Ja
Event: New Customer Reply
Conditions: Status Not Equals Closed
Actions: Set Status → Waiting for Agent
Nyt svar fra tredjepart
Når en tredjepart sender en besked, sætter systemet status til Waiting for Agent og tilføjer et tag `third_party`.
Type: Workflow Rule
Is Active: Ja
Event: New Third Party Reply
Conditions: Ingen
Actions:
Set Status → Waiting for Agent
Add Tags → third_party
Ticket tildelt til personale
Når en ticket tildeles et personalemedlem, flyttes den automatisk til Assigned-mappen og sender en e-mailnotifikation.
Type: Workflow Rule
Is Active: Ja
Event: Ticket Assigned
Conditions: Ingen
Actions:
Change Folder → Assigned
Send email to ticket owner
Luk ticket efter 72 timer uden svar
Hvis intet svar modtages inden for 72 timer, lukkes ticketen automatisk.
Type: Workflow Rule
Is Active: Ja
Event: Cron Every Hour
Conditions:
Status Equals Waiting for Customer
Hours Since Last Reply Greater Than 72
Actions: Set Status → Closed
Script: Ruter og prioriter baseret på kunde-e-maildomæne
Ruter enterprise-kunder til dedikeret support og sætter høj prioritet.
Type: Workflow Rule
Is Active: Ja
Event: New Ticket
Conditions: Ingen
Actions: 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"];
}
}
```
Script: Auto-kategoriser tickets efter emnenøgleord
Kategoriser automatisk tickets og indstil brugerdefinerede felter baseret på emneindhold.
Type: Workflow Rule
Is Active: Ja
Event: New Ticket
Conditions: Ingen
Actions: 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";
}
```
Script: Eskalér baseret på beskedindholdsanalyse
Detekter hastende nøgleord i beskeder og auto-eskalér tickets.
Type: Workflow Rule
Is Active: Ja
Event: New Customer Reply
Conditions: Ingen
Actions: 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;
}
}
}
```