Pravidla workflow
Automatizujte vaše Helpdesk procesy pomocí přizpůsobitelných pravidel workflow. Pravidla workflow vám umožňují automaticky aktualizovat atributy tiketů, odesílat oznámení a spouštět specifické akce na základě definovaných událostí nebo podmínek. Tato funkce pomáhá snížit manuální práci, udržovat konzistenci a urychlit dobu odezvy.
Po instalaci Helpdesk MX automaticky vytvoří výchozí pravidlo workflow "Auto-change status to Waiting for Customer on agent reply".
Obecné informace

- Rule Name: definujte popisný název pravidla. Jasné pojmenování pomáhá vašemu týmu snadno identifikovat, co každé pravidlo dělá.
- Active: povolte nebo zakažte pravidlo. Pouze aktivní pravidla jsou vykonávána, když jsou splněny jejich události a podmínky.
- Event: vyberte událost, která spouští pravidlo.
- Priority / Sort Order: určete pořadí zpracování pravidla. Nižší čísla jsou vykonávána první. To pomáhá kontrolovat, která pravidla mají přednost, když se více pravidel vztahuje na stejnou událost.
- Stop Further Rules Processing: zastavit vykonávání pravidel s nižší prioritou, jakmile bylo toto pravidlo aplikováno. Užitečné, když chcete, aby specifické pravidlo mělo plnou kontrolu nad událostí.
Události
Události definují, kdy je pravidlo workflow vyhodnocováno. Dostupné události zahrnují:
- New Ticket — spuštěno, když je vytvořen nový tiket.
- New Customer Reply — spuštěno, když zákazník odešle novou odpověď.
- New Staff Reply — spuštěno, když agent odešle odpověď.
- New Third Party Reply — spuštěno, když třetí strana odešle zprávu.
- Ticket Assigned — spuštěno, když je tiket přiřazen uživateli.
- Ticket Updated — spuštěno, když jsou pole tiketu aktualizována.
- Cron Every Hour — spuštěno systémem každou hodinu, umožňující časově založené akce.
Podmínky
Podmínky definují, kdy by mělo být pravidlo workflow vykonáno. Můžete použít jednu nebo více podmínek, kombinovat je s logikou ALL/ANY a dokonce vytvářet vnořené skupiny pro pokročilé filtrování. Nechte tuto sekci prázdnou, aby se pravidlo vykonávalo při každém výskytu události.

Dostupná pole
Můžete vytvářet podmínky pomocí následujících polí:
- Subject — kontroluje slova nebo fráze v předmětu tiketu.
- Customer Email — odpovídá emailové adrese zákazníka.
- Customer Name — porovnává jméno zákazníka.
- Channel — filtruje tikety vytvořené z konkrétních zdrojů (např. email, kontaktní formulář, API).
- Department — odpovídá aktuálnímu oddělení přiřazenému tiketu.
- Department (Before Change) — umožňuje porovnání s oddělením před aktualizační událostí.
- Folder — kontroluje, do které složky tiket aktuálně patří.
- Folder (Before Change) — kontroluje složku před poslední změnou.
- Owner — odpovídá přiřazenému agentovi.
- Owner (Before Change) — porovnává vlastníka před aktualizací.
- Priority — kontroluje aktuální prioritu tiketu.
- Priority (Before Change) — porovnává prioritu před aktualizací.
- Status — kontroluje aktuální stav tiketu.
- Status (Before Change) — porovnává předchozí stav.
- Last Message — umožňuje kontrolovat obsah v poslední zprávě.
- Last Reply By — definuje, kdo odpověděl naposledy (zákazník, zaměstnanec nebo třetí strana).
- Hours Since Created — uplynulý čas od vytvoření tiketu.
- Hours Since Last Reply — čas od poslední odpovědi.
- Hours Since Updated — čas od poslední úpravy tiketu.
Operátory podmínek
Každá podmínka může použít jeden z následujících operátorů pro definici způsobu porovnání hodnot:
- Equals — spustí, když hodnota pole přesně odpovídá zadané hodnotě.
- Not Equals — spustí, když se hodnota pole liší od zadané hodnoty.
- Greater Than — spustí, když je hodnota větší než zadaná (především pro numerická nebo časová pole).
- Greater Than or Equals — spustí, když je hodnota větší nebo rovna zadané.
- Less Than — spustí, když je hodnota menší než zadaná.
- Less Than or Equals — spustí, když je hodnota menší nebo rovna zadané.
- Between — spustí, když hodnota spadá mezi dvě zadaná čísla (užitečné pro časově založené podmínky).
- Matches Regex — porovnává hodnoty polí pomocí regulárních výrazů pro pokročilé porovnávání vzorů.
- Starts With — spustí, pokud pole začíná zadaným textem.
- Ends With — spustí, pokud pole končí zadaným textem.
- Is Empty — spustí, když pole nemá hodnotu.
- Is Not Empty — spustí, když pole obsahuje jakoukoli hodnotu.
- Contains — spustí, když pole zahrnuje zadaný text.
- Does Not Contain — spustí, když pole nezahrnuje zadaný text.
Akce
Akce definují, co se stane, jakmile jsou všechny podmínky splněny. Více akcí může být kombinováno v rámci jediného pravidla.

Dostupné akce zahrnují:
- Set Status — aktualizovat stav tiketu.
- Set Priority — změnit úroveň priority.
- Set Department — přeřadit tiket jinému oddělení.
- Set Owner — přiřadit konkrétnímu agentovi.
- Change Folder — přesunout tiket do konkrétní složky.
- Add Tags — přidat tagy pro kategorizaci.
- Remove Tags — smazat existující tagy z tiketu.
- Send Email — odeslat emailová oznámení zadaným příjemcům.
- Run Script — vykonat vlastní JavaScript kód pro pokročilou automatizaci.
Akce Send Email
Akce Send Email umožňuje odesílat automatická emailová oznámení, když je pravidlo spuštěno. To je užitečné pro upozornění členů týmu, informování zákazníků nebo komunikaci s externími stranami.
Dostupné možnosti:
- Send to ticket owner — upozornit přiřazeného agenta.
- Send to all department users — upozornit všechny členy oddělení tiketu.
- Send to customer — informovat zákazníka o aktualizacích.
- Send to other addresses — zadat vlastní emailové adresy.
- Email Subject — definovat předmět emailu (podporuje proměnné šablony Liquid).
- Email Body — sestavit obsah emailu (podporuje proměnné šablony Liquid).
- Include attachments — připojit soubory z poslední zprávy.
Proměnné šablon
Můžete použít proměnné šablon Liquid v polích Email Subject a Email Body pro dynamické vložení informací o tiketu, zákazníkovi a zprávě.
Proměnné tiketu:
| Proměnná | Popis |
|---|---|
{{ ticket.code }} | Kód tiketu (např. T-001) |
{{ ticket.subject }} | Předmět tiketu |
{{ ticket.created_at }} | Časové razítko vytvoření tiketu |
{{ ticket.updated_at }} | Časové razítko poslední aktualizace |
{{ ticket.customer_name }} | Celé jméno zákazníka |
{{ ticket.customer_email }} | Emailová adresa zákazníka |
{{ ticket.admin_url }} | Přímý odkaz na tiket v administrátorském panelu |
{{ ticket.admin_last_message_text }} | Tělo poslední odpovědi agenta (prostý text) |
{{ ticket.admin_last_message_html }} | Tělo poslední odpovědi agenta (HTML) |
{{ ticket.customer_last_message_text }} | Tělo poslední odpovědi zákazníka (prostý text) |
{{ ticket.customer_last_message_html }} | Tělo poslední odpovědi zákazníka (HTML) |
Proměnné vlastníka/přiřazeného:
| Proměnná | Popis |
|---|---|
{{ owner.firstname }} | Křestní jméno přiřazeného agenta |
{{ owner.lastname }} | Příjmení přiřazeného agenta |
{{ owner.email }} | Email přiřazeného agenta |
{{ owner.fullname }} | Celé jméno přiřazeného agenta |
{{ owner.is_admin }} | Zda je vlastník administrátor |
Proměnné oddělení:
| Proměnná | Popis |
|---|---|
{{ department.name }} | Název oddělení |
{{ department.sender_name }} | Jméno odesílatele oddělení |
Proměnné zprávy (při spuštění událostmi zprávy):
| Proměnná | Popis |
|---|---|
{{ message.body_text }} | Obsah zprávy (prostý text) |
{{ message.body_html }} | Obsah zprávy (HTML) |
{{ message.type }} | Typ zprávy |
{{ message.created_at }} | Časové razítko vytvoření zprávy |
Proměnné data/času:
| Proměnná | Popis |
|---|---|
{{ now }} | Aktuální časové razítko (RFC3339) |
{{ date }} | Aktuální datum (YYYY-MM-DD) |
{{ time }} | Aktuální čas (HH:MM:SS) |
{{ year }} | Aktuální rok |
Příklad šablony emailu:
Subject: Nová odpověď na tiket #{{ ticket.code }}
Ahoj {{ owner.firstname }},
Zákazník odpověděl na tiket "{{ ticket.subject }}".
Zákazník: {{ ticket.customer_name }} ({{ ticket.customer_email }})
Poslední zpráva:
{{ ticket.customer_last_message_text }}
Zobrazit tiket: {{ ticket.admin_url }}
Akce Run Script
Akce Run Script umožňuje vykonávat vlastní JavaScript kód pro implementaci komplexní logiky automatizace, která přesahuje jednoduché přiřazování polí. Skripty mohou číst data tiketu, provádět podmíněná rozhodnutí a aktualizovat více polí najednou.
Dostupné vlastnosti tiketu (čtení):
| Vlastnost | Popis |
|---|---|
ticket.id | Jedinečný identifikátor tiketu |
ticket.subject | Předmět tiketu |
ticket.folder | Aktuální složka (INBOX, ASSIGNED, SPAM atd.) |
ticket.tags | Pole tagů |
ticket.status | Objekt s id, code a name |
ticket.priority | Objekt s id a name |
ticket.department | Objekt s id a name |
ticket.owner | Objekt s id, email, firstname, lastname |
ticket.customer | Objekt s id, email, firstname, lastname, name |
ticket.<custom_field_code> | Hodnota vlastního pole podle jeho kódu |
Dostupné vlastnosti tiketu (zápis):
| Vlastnost | Očekávaná hodnota |
|---|---|
ticket.status | Kód stavu (řetězec) nebo ID stavu |
ticket.priority | Název priority (řetězec) nebo ID priority |
ticket.department | Název oddělení (řetězec) nebo ID oddělení |
ticket.owner | Email uživatele (řetězec) nebo ID uživatele |
ticket.folder | Název složky: "INBOX", "ASSIGNED", "SPAM", "ARCHIVE" |
ticket.tags | Pole řetězců tagů |
ticket.<custom_field_code> | Hodnota odpovídající typu vlastního pole |
Pomocné funkce:
| Funkce | Vrací |
|---|---|
getStatuses() | Pole všech dostupných stavů |
getPriorities() | Pole všech dostupných priorit |
getDepartments() | Pole všech dostupných oddělení |
getUsers() | Pole všech dostupných uživatelů |
fetch(url, options) | Provádění HTTP požadavků na externí API |
Kontext zprávy (dostupný při spuštění pravidla událostí zprávy):
| Vlastnost | Popis |
|---|---|
message.id | Jedinečný identifikátor zprávy |
message.body_text | Obsah zprávy (prostý text) |
message.body_html | Obsah zprávy (HTML) |
message.createdAt | Časové razítko vytvoření zprávy |
Příklady skriptů:
// Nastavit prioritu podle klíčových slov předmětu
if (ticket.subject.toLowerCase().includes("urgent")) {
ticket.priority = "High";
}
// Směrovat tikety do oddělení podle obsahu
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";
}
// Zpracování VIP zákazníků
if (ticket.customer && ticket.customer.email.endsWith("@enterprise.com")) {
ticket.priority = "High";
ticket.tags = ["vip", "enterprise"];
}
// Nastavit hodnotu vlastního pole
ticket.order_id = "12345";
ticket.vip_customer = true;
ticket.order_amount = 99.99;
// Získat data zákazníka z externího API a aktualizovat tiket
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";
}
}
Důležité poznámky:
- Skripty mají časový limit 10 sekund pro zabránění nekonečným cyklům.
- Neplatné hodnoty polí (neexistující stav, priorita atd.) jsou tiše ignorovány.
- Chyby skriptů neovlivňují další pravidla ani nespůsobují pád systému.
- Vlastní pole jsou odkazována podle jejich kódu, nikoli názvu.
Oznámení
Můžete odesílat automatická emailová oznámení, když se pravidlo vykoná, aby byly všechny strany informovány.

Možnosti oznámení zahrnují:
- Send email to ticket owner — upozornit přiřazeného agenta.
- Send email to all department users — upozornit všechny členy oddělení.
- Send email to customer — informovat zákazníka o změnách.
- Send email to other addresses — odeslat externím příjemcům.
- Email Subject — zadat předmět.
- Email Body — sestavit obsah emailu.
- Attach files previously attached to the last message — zahrnout předchozí přílohy pro kontext.
Příklady pravidel workflow
Změna stavu při odpovědi zákazníka
Když zákazník odpoví, systém automaticky změní stav tiketu na Waiting for Agent.
Typ: Workflow Rule
Is Active: Ano
Event: New Customer Reply
Conditions: Status Not Equals Closed
Actions: Set Status → Waiting for Agent
Nová odpověď od třetí strany
Když třetí strana odešle zprávu, systém nastaví stav na Waiting for Agent a přidá tag `third_party`.
Typ: Workflow Rule
Is Active: Ano
Event: New Third Party Reply
Conditions: Žádné
Actions:
Set Status → Waiting for Agent
Add Tags → third_party
Tiket přiřazen zaměstnanci
Když je tiket přiřazen členu zaměstnanců, automaticky se přesune do složky Assigned a odešle se emailové oznámení.
Typ: Workflow Rule
Is Active: Ano
Event: Ticket Assigned
Conditions: Žádné
Actions:
Change Folder → Assigned
Send email to ticket owner
Zavřít tiket po 72 hodinách bez odpovědi
Pokud není obdržena odpověď do 72 hodin, tiket se automaticky zavře.
Typ: Workflow Rule
Is Active: Ano
Event: Cron Every Hour
Conditions:
Status Equals Waiting for Customer
Hours Since Last Reply Greater Than 72
Actions: Set Status → Closed
Skript: Směrovat a prioritizovat podle domény emailu zákazníka
Směrovat podnikové zákazníky na dedikovanou podporu a nastavit vysokou prioritu.
Typ: Workflow Rule
Is Active: Ano
Event: New Ticket
Conditions: Žádné
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"];
}
}
```
Skript: Automatická kategorizace tiketů podle klíčových slov předmětu
Automaticky kategorizovat tikety a nastavit vlastní pole podle obsahu předmětu.
Typ: Workflow Rule
Is Active: Ano
Event: New Ticket
Conditions: Žádné
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";
}
```
Skript: Eskalace na základě analýzy obsahu zprávy
Detekce urgentních klíčových slov ve zprávách a automatická eskalace tiketů.
Typ: Workflow Rule
Is Active: Ano
Event: New Customer Reply
Conditions: Žádné
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;
}
}
}
```