Przejdź do głównej zawartości

Reguły workflow

Zautomatyzuj procesy swojego Helpdesku dzięki konfigurowalnym regułom workflow. Reguły workflow pozwalają na automatyczną aktualizację atrybutów zgłoszenia, wysyłanie powiadomień i wyzwalanie określonych akcji w oparciu o zdefiniowane zdarzenia lub warunki. Ta funkcja pomaga zmniejszyć pracę ręczną, zachować spójność i przyspieszyć czas reakcji.

Po instalacji Helpdesk MX automatycznie tworzy domyślną regułę workflow "Auto-change status to Waiting for Customer on agent reply".


Informacje ogólne​

Informacje ogólneInformacje ogólne
  • Nazwa reguły: określ opisową nazwę reguły. Czytelne nazewnictwo pomaga zespołowi łatwo zidentyfikować, co robi każda reguła.
  • Aktywna: włącz lub wyłącz regułę. Tylko aktywne reguły są wykonywane, gdy ich zdarzenie i warunki są spełnione.
  • Zdarzenie: wybierz zdarzenie, które wyzwala regułę.
  • Priorytet / Kolejność sortowania: określ kolejność przetwarzania reguły. Niższe liczby są wykonywane jako pierwsze. Pomaga to kontrolować, które reguły mają pierwszeństwo, gdy wiele reguł dotyczy tego samego zdarzenia.
  • Zatrzymaj przetwarzanie kolejnych reguł: przestań wykonywać reguły o niższym priorytecie po zastosowaniu tej reguły. Przydatne, gdy chcesz, aby określona reguła miała pełną kontrolę nad zdarzeniem.

Zdarzenia​

Zdarzenia definiują, kiedy reguła workflow jest oceniana. Dostępne zdarzenia obejmują:

  • New Ticket — wyzwalane, gdy zostanie utworzone nowe zgłoszenie.
  • New Customer Reply — wyzwalane, gdy klient wysyła nową odpowiedź.
  • New Staff Reply — wyzwalane, gdy agent publikuje odpowiedź.
  • New Third Party Reply — wyzwalane, gdy osoba trzecia wysyła wiadomość.
  • Ticket Assigned — wyzwalane, gdy zgłoszenie jest przypisane do użytkownika.
  • Ticket Updated — wyzwalane, gdy pola zgłoszenia są aktualizowane.
  • Cron Every Hour — wyzwalane przez system co godzinę, umożliwiając akcje oparte na czasie.

Warunki​

Warunki definiują, kiedy reguła workflow powinna być wykonana. Możesz użyć jednego lub wielu warunków, połączyć je logiką ALL/ANY i nawet tworzyć zagnieżdżone grupy dla zaawansowanego filtrowania. Pozostaw tę sekcję pustą, aby reguła była wykonywana przy każdym wystąpieniu zdarzenia.

WarunkiWarunki

Dostępne pola​

Możesz budować warunki, używając następujących pól:

  • Subject — sprawdza słowa lub frazy w temacie zgłoszenia.
  • Customer Email — dopasowuje adres email klienta.
  • Customer Name — porównuje imię i nazwisko klienta.
  • Channel — filtruje zgłoszenia utworzone z określonych źródeł (np. email, formularz kontaktowy, API).
  • Department — dopasowuje aktualnie przypisany dział do zgłoszenia.
  • Department (Before Change) — umożliwia porównanie z działem przed zdarzeniem aktualizacji.
  • Folder — sprawdza, do którego folderu aktualnie należy zgłoszenie.
  • Folder (Before Change) — sprawdza folder przed ostatnią zmianą.
  • Owner — dopasowuje przypisanego agenta.
  • Owner (Before Change) — porównuje właściciela przed aktualizacją.
  • Priority — sprawdza aktualny priorytet zgłoszenia.
  • Priority (Before Change) — porównuje priorytet przed jego aktualizacją.
  • Status — sprawdza aktualny status zgłoszenia.
  • Status (Before Change) — porównuje poprzedni status.
  • Last Message — pozwala sprawdzić treść ostatniej wiadomości.
  • Last Reply By — określa, kto odpowiedział ostatnio (klient, pracownik lub osoba trzecia).
  • Hours Since Created — czas, który upłynął od utworzenia zgłoszenia.
  • Hours Since Last Reply — czas od ostatniej odpowiedzi.
  • Hours Since Updated — czas od ostatniej modyfikacji zgłoszenia.

Operatory warunków​

Każdy warunek może używać jednego z następujących operatorów do określenia, jak wartości są porównywane:

  • Equals — wyzwala, gdy wartość pola dokładnie odpowiada określonej wartości.
  • Not Equals — wyzwala, gdy wartość pola różni się od określonej wartości.
  • Greater Than — wyzwala, gdy wartość jest większa niż określona (głównie używane z polami liczbowymi lub czasowymi).
  • Greater Than or Equals — wyzwala, gdy wartość jest większa lub równa określonej.
  • Less Than — wyzwala, gdy wartość jest mniejsza niż określona.
  • Less Than or Equals — wyzwala, gdy wartość jest mniejsza lub równa określonej.
  • Between — wyzwala, gdy wartość mieści się między dwoma określonymi liczbami (przydatne dla warunków czasowych).
  • Matches Regex — porównuje wartości pól przy użyciu wyrażeń regularnych dla zaawansowanego dopasowywania wzorców.
  • Starts With — wyzwala, jeśli pole zaczyna się od określonego tekstu.
  • Ends With — wyzwala, jeśli pole kończy się określonym tekstem.
  • Is Empty — wyzwala, gdy pole nie ma wartości.
  • Is Not Empty — wyzwala, gdy pole zawiera jakąkolwiek wartość.
  • Contains — wyzwala, gdy pole zawiera określony tekst.
  • Does Not Contain — wyzwala, gdy pole nie zawiera określonego tekstu.

Akcje​

Akcje definiują, co się dzieje, gdy wszystkie warunki są spełnione. Wiele akcji może być połączonych w ramach jednej reguły.

AkcjeAkcje

Dostępne akcje obejmują:

  • Set Status — zaktualizuj status zgłoszenia.
  • Set Priority — zmień poziom priorytetu.
  • Set Department — przypisz zgłoszenie do innego działu.
  • Set Owner — przypisz do konkretnego agenta.
  • Change Folder — przenieś zgłoszenie do określonego folderu.
  • Add Tags — dodaj tagi do kategoryzacji.
  • Remove Tags — usuń istniejące tagi ze zgłoszenia.
  • Send Email — wysyłaj powiadomienia email do określonych odbiorców.
  • Run Script — wykonaj niestandardowy kod JavaScript dla zaawansowanej automatyzacji.

Akcja Wyślij email​

Akcja Wyślij email pozwala na wysyłanie automatycznych powiadomień email, gdy reguła jest wyzwalana. Jest to przydatne do powiadamiania członków zespołu, informowania klientów lub komunikowania się z podmiotami zewnętrznymi.

Dostępne opcje:

  • Send to ticket owner — powiadom przypisanego agenta.
  • Send to all department users — powiadom wszystkich członków działu zgłoszenia.
  • Send to customer — poinformuj klienta o aktualizacjach.
  • Send to other addresses — określ niestandardowe adresy email.
  • Email Subject — określ temat emaila (obsługuje zmienne szablonów Liquid).
  • Email Body — stwórz treść emaila (obsługuje zmienne szablonów Liquid).
  • Include attachments — załącz pliki z ostatniej wiadomości.

Zmienne szablonów​

Możesz używać zmiennych szablonów Liquid w polach Email Subject i Email Body, aby dynamicznie wstawiać informacje o zgłoszeniu, kliencie i wiadomości.

Zmienne zgłoszenia:

ZmiennaOpis
{{ ticket.code }}Kod zgłoszenia (np. T-001)
{{ ticket.subject }}Temat zgłoszenia
{{ ticket.created_at }}Znacznik czasu utworzenia zgłoszenia
{{ ticket.updated_at }}Znacznik czasu ostatniej aktualizacji
{{ ticket.customer_name }}Pełne imię i nazwisko klienta
{{ ticket.customer_email }}Adres email klienta
{{ ticket.admin_url }}Bezpośredni link do zgłoszenia w panelu administracyjnym
{{ ticket.admin_last_message_text }}Treść ostatniej odpowiedzi agenta (zwykły tekst)
{{ ticket.admin_last_message_html }}Treść ostatniej odpowiedzi agenta (HTML)
{{ ticket.customer_last_message_text }}Treść ostatniej odpowiedzi klienta (zwykły tekst)
{{ ticket.customer_last_message_html }}Treść ostatniej odpowiedzi klienta (HTML)

Zmienne właściciela/osoby przypisanej:

ZmiennaOpis
{{ owner.firstname }}Imię przypisanego agenta
{{ owner.lastname }}Nazwisko przypisanego agenta
{{ owner.email }}Email przypisanego agenta
{{ owner.fullname }}Pełne imię i nazwisko przypisanego agenta
{{ owner.is_admin }}Czy właściciel jest administratorem

Zmienne działu:

ZmiennaOpis
{{ department.name }}Nazwa działu
{{ department.sender_name }}Nazwa nadawcy działu

Zmienne wiadomości (gdy wyzwalane przez zdarzenia wiadomości):

ZmiennaOpis
{{ message.body_text }}Treść wiadomości (zwykły tekst)
{{ message.body_html }}Treść wiadomości (HTML)
{{ message.type }}Typ wiadomości
{{ message.created_at }}Znacznik czasu utworzenia wiadomości

Zmienne daty/czasu:

ZmiennaOpis
{{ now }}Aktualny znacznik czasu (RFC3339)
{{ date }}Aktualna data (YYYY-MM-DD)
{{ time }}Aktualny czas (HH:MM:SS)
{{ year }}Aktualny rok

Przykładowy szablon emaila:

Subject: Nowa odpowiedź w zgłoszeniu #{{ ticket.code }}

Cześć {{ owner.firstname }},

Klient odpowiedział na zgłoszenie "{{ ticket.subject }}".

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

Ostatnia wiadomość:
{{ ticket.customer_last_message_text }}

Zobacz zgłoszenie: {{ ticket.admin_url }}

Akcja Uruchom skrypt​

Akcja Uruchom skrypt pozwala na wykonanie niestandardowego kodu JavaScript w celu implementacji złożonej logiki automatyzacji, która wykracza poza proste przypisania pól. Skrypty mogą odczytywać dane zgłoszenia, podejmować decyzje warunkowe i aktualizować wiele pól jednocześnie.

Dostępne właściwości zgłoszenia (odczyt):

WłaściwośćOpis
ticket.idUnikalny identyfikator zgłoszenia
ticket.subjectTemat zgłoszenia
ticket.folderAktualny folder (INBOX, ASSIGNED, SPAM itp.)
ticket.tagsTablica tagów
ticket.statusObiekt z id, code i name
ticket.priorityObiekt z id i name
ticket.departmentObiekt z id i name
ticket.ownerObiekt z id, email, firstname, lastname
ticket.customerObiekt z id, email, firstname, lastname, name
ticket.<custom_field_code>Wartość pola niestandardowego według jego kodu

Dostępne właściwości zgłoszenia (zapis):

WłaściwośćOczekiwana wartość
ticket.statusKod statusu (ciąg) lub ID statusu
ticket.priorityNazwa priorytetu (ciąg) lub ID priorytetu
ticket.departmentNazwa działu (ciąg) lub ID działu
ticket.ownerEmail użytkownika (ciąg) lub ID użytkownika
ticket.folderNazwa folderu: "INBOX", "ASSIGNED", "SPAM", "ARCHIVE"
ticket.tagsTablica ciągów tagów
ticket.<custom_field_code>Wartość odpowiadająca typowi pola niestandardowego

Funkcje pomocnicze:

FunkcjaZwraca
getStatuses()Tablica wszystkich dostępnych statusów
getPriorities()Tablica wszystkich dostępnych priorytetów
getDepartments()Tablica wszystkich dostępnych działów
getUsers()Tablica wszystkich dostępnych użytkowników
fetch(url, options)Wykonuje zapytania HTTP do zewnętrznych API

Kontekst wiadomości (dostępny, gdy reguła jest wyzwalana przez zdarzenie wiadomości):

WłaściwośćOpis
message.idUnikalny identyfikator wiadomości
message.body_textTreść wiadomości (zwykły tekst)
message.body_htmlTreść wiadomości (HTML)
message.createdAtZnacznik czasu utworzenia wiadomości

Przykłady skryptów:

// Ustaw priorytet na podstawie słów kluczowych w temacie
if (ticket.subject.toLowerCase().includes("urgent")) {
ticket.priority = "High";
}
// Kieruj zgłoszenia do działów na podstawie treści
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";
}
// Obsługa klientów VIP
if (ticket.customer && ticket.customer.email.endsWith("@enterprise.com")) {
ticket.priority = "High";
ticket.tags = ["vip", "enterprise"];
}
// Ustaw wartość pola niestandardowego
ticket.order_id = "12345";
ticket.vip_customer = true;
ticket.order_amount = 99.99;
// Pobierz dane klienta z zewnętrznego API i zaktualizuj zgłoszenie
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";
}
}

Ważne uwagi:

  • Skrypty mają 10-sekundowy limit czasu, aby zapobiec nieskończonym pętlom.
  • Nieprawidłowe wartości pól (nieistniejący status, priorytet itp.) są ignorowane w sposób elegancki.
  • Błędy skryptów nie wpływają na inne reguły ani nie powodują awarii systemu.
  • Pola niestandardowe są odwoływane przez ich kod, a nie nazwę.

Powiadomienia​

Możesz wysyłać automatyczne powiadomienia email po wykonaniu reguły, aby informować wszystkie zainteresowane strony.

PowiadomieniaPowiadomienia

Opcje powiadomień obejmują:

  • Send email to ticket owner — powiadom przypisanego agenta.
  • Send email to all department users — powiadom wszystkich członków działu.
  • Send email to customer — poinformuj klienta o zmianach.
  • Send email to other addresses — wyślij do odbiorców zewnętrznych.
  • Email Subject — określ temat emaila.
  • Email Body — stwórz treść emaila.
  • Attach files previously attached to the last message — dołącz poprzednie załączniki dla kontekstu.

Przykładowe reguły workflow​

Zmiana statusu przy odpowiedzi klienta
Gdy klient odpowiada, system automatycznie zmienia status zgłoszenia na Waiting for Agent.

Typ: Reguła workflow
Aktywna: Tak
Zdarzenie: New Customer Reply
Warunki: Status Not Equals Closed
Akcje: Set Status → Waiting for Agent
Nowa odpowiedź od osoby trzeciej
Gdy osoba trzecia wysyła wiadomość, system ustawia status na Waiting for Agent i dodaje tag `third_party`.

Typ: Reguła workflow
Aktywna: Tak
Zdarzenie: New Third Party Reply
Warunki: Brak
Akcje:
Set Status → Waiting for Agent
Add Tags → third_party
Zgłoszenie przypisane do pracownika
Gdy zgłoszenie jest przypisane do członka personelu, automatycznie przenosi się do folderu Assigned i wysyła powiadomienie email.

Typ: Reguła workflow
Aktywna: Tak
Zdarzenie: Ticket Assigned
Warunki: Brak
Akcje:
Change Folder → Assigned
Send email to ticket owner
Zamknij zgłoszenie po 72 godzinach bez odpowiedzi
Jeśli nie otrzymano odpowiedzi w ciągu 72 godzin, zgłoszenie zostaje automatycznie zamknięte.

Typ: Reguła workflow
Aktywna: Tak
Zdarzenie: Cron Every Hour
Warunki:
Status Equals Waiting for Customer
Hours Since Last Reply Greater Than 72
Akcje: Set Status → Closed
Skrypt: Routing i priorytetyzacja na podstawie domeny email klienta
Kieruj klientów korporacyjnych do dedykowanego wsparcia i ustaw wysoki priorytet.

Typ: Reguła workflow
Aktywna: Tak
Zdarzenie: New Ticket
Warunki: Brak
Akcje: 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"];
}
}
```
Skrypt: Automatyczna kategoryzacja zgłoszeń według słów kluczowych w temacie
Automatycznie kategoryzuj zgłoszenia i ustawiaj pola niestandardowe na podstawie treści tematu.

Typ: Reguła workflow
Aktywna: Tak
Zdarzenie: New Ticket
Warunki: Brak
Akcje: 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";
}
```
Skrypt: Eskalacja na podstawie analizy treści wiadomości
Wykryj pilne słowa kluczowe w wiadomościach i automatycznie eskaluj zgłoszenia.

Typ: Reguła workflow
Aktywna: Tak
Zdarzenie: New Customer Reply
Warunki: Brak
Akcje: 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;
}
}
}
```