跳至主要内容

工作流程規則

使用可自訂的工作流程規則自動化您的 Helpdesk 流程。工作流程規則允許您根據定義的事件或條件自動更新工單屬性、發送通知和觸發特定操作。此功能有助於減少手動工作、維護一致性並加快回應時間。

安裝後,Helpdesk MX 會自動建立預設工作流程規則 "Auto-change status to Waiting for Customer on agent reply"。


一般資訊​

一般資訊一般資訊
  • 規則名稱:為規則定義描述性名稱。清晰的命名幫助您的團隊輕鬆識別每個規則的作用。
  • 啟用:啟用或停用規則。僅當事件和條件滿足時才執行活躍規則。
  • 事件:選擇觸發規則的事件。
  • 優先順序 / 排序順序:指定規則的處理順序。較小的數字先執行。這有助於控制當多個規則適用於同一事件時哪些規則優先。
  • 停止進一步的規則處理:應用此規則後停止執行優先順序較低的規則。當您希望特定規則完全控制事件時很有用。

事件​

事件定義何時評估工作流程規則。可用事件包括:

  • 新工單 — 建立新工單時觸發。
  • 新客戶回覆 — 客戶發送新回覆時觸發。
  • 新員工回覆 — 客服人員發布回覆時觸發。
  • 新第三方回覆 — 第三方發送訊息時觸發。
  • 工單已分配 — 工單分配給使用者時觸發。
  • 工單已更新 — 工單欄位更新時觸發。
  • 每小時 Cron — 系統每小時觸發一次,允許基於時間的操作。

條件​

條件定義何時應執行工作流程規則。您可以使用一個或多個條件,使用 ALL/ANY 邏輯組合它們,甚至建立嵌套組以進行進階篩選。 將此部分留空以使規則在每次事件發生時執行。

條件條件

可用欄位​

您可以使用以下欄位建立條件:

  • 主旨 — 檢查工單主旨中的單詞或短語。
  • 客戶電子郵件 — 匹配客戶的電子郵件地址。
  • 客戶姓名 — 比較客戶的姓名。
  • 管道 — 篩選從特定來源建立的工單(例如,電子郵件、聯絡表單、API)。
  • 部門 — 匹配分配給工單的當前部門。
  • 部門(變更前) — 允許與更新事件之前的部門進行比較。
  • 資料夾 — 檢查工單當前屬於哪個資料夾。
  • 資料夾(變更前) — 檢查最後一次變更之前的資料夾。
  • 擁有者 — 匹配分配的客服人員。
  • 擁有者(變更前) — 比較更新前的擁有者。
  • 優先順序 — 檢查工單的當前優先順序。
  • 優先順序(變更前) — 比較更新前的優先順序。
  • 狀態 — 檢查當前工單狀態。
  • 狀態(變更前) — 比較先前的狀態。
  • 最後訊息 — 允許您檢查最新訊息中的內容。
  • 最後回覆者 — 定義誰最後回覆(客戶、員工或第三方)。
  • 建立後的小時數 — 自工單建立以來經過的時間。
  • 最後回覆後的小時數 — 自最後回覆以來的時間。
  • 更新後的小時數 — 自工單最後修改以來的時間。

條件運算子​

每個條件可以使用以下運算子之一來定義如何比較值:

  • 等於 — 當欄位值完全匹配指定值時觸發。
  • 不等於 — 當欄位值與指定值不同時觸發。
  • 大於 — 當值大於指定值時觸發(主要用於數字或時間欄位)。
  • 大於或等於 — 當值大於或等於指定值時觸發。
  • 小於 — 當值小於指定值時觸發。
  • 小於或等於 — 當值小於或等於指定值時觸發。
  • 介於 — 當值在兩個指定數字之間時觸發(對基於時間的條件很有用)。
  • 匹配正則表達式 — 使用正則表達式比較欄位值以進行進階模式匹配。
  • 開頭為 — 如果欄位以指定文字開頭則觸發。
  • 結尾為 — 如果欄位以指定文字結尾則觸發。
  • 為空 — 當欄位沒有值時觸發。
  • 不為空 — 當欄位包含任何值時觸發。
  • 包含 — 當欄位包含指定文字時觸發。
  • 不包含 — 當欄位不包含指定文字時觸發。

操作​

操作定義滿足所有條件後會發生什麼。可以在單個規則中組合多個操作。

操作操作

可用操作包括:

  • 設定狀態 — 更新工單的狀態。
  • 設定優先順序 — 變更優先順序等級。
  • 設定部門 — 將工單重新分配給另一個部門。
  • 設定擁有者 — 分配給特定客服人員。
  • 變更資料夾 — 將工單移至特定資料夾。
  • 新增標籤 — 新增標籤以進行分類。
  • 移除標籤 — 從工單中刪除現有標籤。
  • 發送電子郵件 — 向指定收件人發送電子郵件通知。
  • 執行腳本 — 執行自訂 JavaScript 代碼以進行進階自動化。

發送電子郵件操作​

發送電子郵件操作允許您在觸發規則時發送自動電子郵件通知。這對於警告團隊成員、通知客戶或與外部方溝通很有用。

可用選項:

  • 發送給工單擁有者 — 通知分配的客服人員。
  • 發送給所有部門使用者 — 警告工單部門的所有成員。
  • 發送給客戶 — 告知客戶更新。
  • 發送給其他地址 — 指定自訂電子郵件地址。
  • 電子郵件主旨 — 定義電子郵件主旨行(支援 Liquid 範本變數)。
  • 電子郵件正文 — 撰寫電子郵件內容(支援 Liquid 範本變數)。
  • 包含附件 — 附加來自最後訊息的檔案。

範本變數​

您可以在電子郵件主旨和電子郵件正文欄位中使用 Liquid 範本變數來動態插入工單、客戶和訊息資訊。

工單變數:

變數描述
{{ ticket.code }}工單代碼(例如,T-001)
{{ ticket.subject }}工單主旨行
{{ ticket.created_at }}工單建立時間戳記
{{ ticket.updated_at }}最後更新時間戳記
{{ ticket.customer_name }}客戶全名
{{ ticket.customer_email }}客戶電子郵件地址
{{ ticket.admin_url }}管理面板中工單的直接連結
{{ ticket.admin_last_message_text }}客服人員最後回覆的正文(純文字)
{{ ticket.admin_last_message_html }}客服人員最後回覆的正文(HTML)
{{ ticket.customer_last_message_text }}客戶最後回覆的正文(純文字)
{{ ticket.customer_last_message_html }}客戶最後回覆的正文(HTML)

擁有者/受託人變數:

變數描述
{{ owner.firstname }}分配客服人員的名字
{{ owner.lastname }}分配客服人員的姓氏
{{ owner.email }}分配客服人員的電子郵件
{{ owner.fullname }}分配客服人員的全名
{{ owner.is_admin }}擁有者是否為管理員

部門變數:

變數描述
{{ department.name }}部門名稱
{{ department.sender_name }}部門發送者名稱

訊息變數(當由訊息事件觸發時):

變數描述
{{ message.body_text }}訊息內容(純文字)
{{ message.body_html }}訊息內容(HTML)
{{ message.type }}訊息類型
{{ message.created_at }}訊息建立時間戳記

日期/時間變數:

變數描述
{{ now }}當前時間戳記(RFC3339)
{{ date }}當前日期(YYYY-MM-DD)
{{ time }}當前時間(HH:MM:SS)
{{ year }}當前年份

電子郵件範本範例:

主旨:工單 #{{ ticket.code }} 的新回覆

嗨 {{ owner.firstname }},

客戶已回覆工單 "{{ ticket.subject }}"。

客戶:{{ ticket.customer_name }} ({{ ticket.customer_email }})

最後訊息:
{{ ticket.customer_last_message_text }}

檢視工單:{{ ticket.admin_url }}

執行腳本操作​

執行腳本操作允許您執行自訂 JavaScript 代碼以實現超越簡單欄位分配的複雜自動化邏輯。腳本可以讀取工單資料、做出條件決策並一次更新多個欄位。

可用工單屬性(讀取):

屬性描述
ticket.id工單唯一識別碼
ticket.subject工單主旨行
ticket.folder當前資料夾(INBOX、ASSIGNED、SPAM 等)
ticket.tags標籤陣列
ticket.status具有 id、code 和 name 的物件
ticket.priority具有 id 和 name 的物件
ticket.department具有 id 和 name 的物件
ticket.owner具有 id、email、firstname、lastname 的物件
ticket.customer具有 id、email、firstname、lastname、name 的物件
ticket.<custom_field_code>按代碼的自訂欄位值

可用工單屬性(寫入):

屬性預期值
ticket.status狀態代碼(字串)或狀態 ID
ticket.priority優先順序名稱(字串)或優先順序 ID
ticket.department部門名稱(字串)或部門 ID
ticket.owner使用者電子郵件(字串)或使用者 ID
ticket.folder資料夾名稱:"INBOX"、"ASSIGNED"、"SPAM"、"ARCHIVE"
ticket.tags標籤字串陣列
ticket.<custom_field_code>匹配自訂欄位類型的值

輔助函數:

函數返回
getStatuses()所有可用狀態的陣列
getPriorities()所有可用優先順序的陣列
getDepartments()所有可用部門的陣列
getUsers()所有可用使用者的陣列
fetch(url, options)向外部 API 發出 HTTP 請求

訊息上下文(當規則由訊息事件觸發時可用):

屬性描述
message.id訊息唯一識別碼
message.body_text訊息內容(純文字)
message.body_html訊息內容(HTML)
message.createdAt訊息建立時間戳記

腳本範例:

// 根據主旨關鍵字設定優先順序
if (ticket.subject.toLowerCase().includes("urgent")) {
ticket.priority = "High";
}
// 根據內容將工單路由到部門
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 客戶處理
if (ticket.customer && ticket.customer.email.endsWith("@enterprise.com")) {
ticket.priority = "High";
ticket.tags = ["vip", "enterprise"];
}
// 設定自訂欄位值
ticket.order_id = "12345";
ticket.vip_customer = true;
ticket.order_amount = 99.99;
// 從外部 API 獲取客戶資料並更新工單
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";
}
}

重要注意事項:

  • 腳本有 10 秒超時以防止無限循環。
  • 無效的欄位值(不存在的狀態、優先順序等)會被優雅地忽略。
  • 腳本錯誤不會影響其他規則或使系統崩潰。
  • 自訂欄位通過其代碼而非名稱引用。

通知​

您可以在規則執行時發送自動電子郵件通知以讓所有相關方知情。

通知通知

通知選項包括:

  • 發送電子郵件給工單擁有者 — 通知分配的客服人員。
  • 發送電子郵件給所有部門使用者 — 警告所有部門成員。
  • 發送電子郵件給客戶 — 告知客戶變更。
  • 發送電子郵件給其他地址 — 發送給外部收件人。
  • 電子郵件主旨 — 指定主旨行。
  • 電子郵件正文 — 撰寫電子郵件內容。
  • 附加先前附加到最後訊息的檔案 — 包含先前的附件以提供上下文。

工作流程規則範例​

客戶回覆時變更狀態
當客戶回覆時,系統自動將工單狀態變更為等待客服人員。

類型:工作流程規則
啟用:是
事件:新客戶回覆
條件:狀態不等於已關閉
操作:設定狀態 → 等待客服人員
來自第三方的新回覆
當第三方發送訊息時,系統將狀態設定為等待客服人員並新增標籤 `third_party`。

類型:工作流程規則
啟用:是
事件:新第三方回覆
條件:無
操作:
設定狀態 → 等待客服人員
新增標籤 → third_party
工單已分配給員工
當工單分配給員工時,它會自動移至已分配資料夾並發送電子郵件通知。

類型:工作流程規則
啟用:是
事件:工單已分配
條件:無
操作:
變更資料夾 → 已分配
發送電子郵件給工單擁有者
72 小時無回覆後關閉工單
如果 72 小時內未收到回覆,工單自動關閉。

類型:工作流程規則
啟用:是
事件:每小時 Cron
條件:
狀態等於等待客戶
最後回覆後的小時數大於 72
操作:設定狀態 → 已關閉
腳本:根據客戶電子郵件域名路由和優先處理
將企業客戶路由到專用支援並設定高優先順序。

類型:工作流程規則
啟用:是
事件:新工單
條件:無
操作:執行腳本

```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"];
}
}
```
腳本:根據主旨關鍵字自動分類工單
根據主旨內容自動分類工單並設定自訂欄位。

類型:工作流程規則
啟用:是
事件:新工單
條件:無
操作:執行腳本

```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";
}
```
腳本:根據訊息內容分析升級
檢測訊息中的緊急關鍵字並自動升級工單。

類型:工作流程規則
啟用:是
事件:新客戶回覆
條件:無
操作:執行腳本

```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;
}
}
}
```