工作流介紹
Dialpad to Syncro 整合工作流程分析
這個名為「Dialpad to Syncro」的 N8n 工作流程範本,旨在自動化**Dialpad(一個基於雲端的商務電話系統)與Syncro(一個為 MSP 設計的 IT 服務管理平台)**之間的整合。它讓企業能夠在透過 Dialpad 接到來電時,根據來電者識別資訊,自動在 Syncro 中建立或更新支援工單。該工作流程會智慧地使用電話號碼匹配客戶或聯絡人,並將相關資料記錄到 Google Sheets 以供追蹤和報告。
工作流程功能
此工作流程的主要功能是:
- 監聽來自 Dialpad 的傳入網頁鉤子事件(由來電觸發)
- 透過使用來電者的電話號碼在 Syncro 的資料庫中搜尋,來識別來電者
- 判斷來電者是已知的聯絡人還是客戶
- 檢查是否已有與該聯絡人相關聯的未關閉工單
- 建立新工單或向現有工單添加評論
- 將通話和對應的工單資訊記錄到 Google Sheets 以供稽核和分析
此自動化確保每通來電都能啟動一個可追蹤的服務記錄,從而簡化客戶服務營運,減少手動輸入並改善回應時間。
主要功能與能力
-
網頁鉤子觸發執行
- 監聽來自 Dialpad 的即時
POST請求,使其成為事件驅動且響應迅速。
- 監聽來自 Dialpad 的即時
-
動態客戶/聯絡人匹配
- 使用來電者的電話號碼(清除格式,如
+、前導1或0)來搜尋 Syncro 的 API。 - 同時處理個人聯絡人和公司層級的客戶。
- 使用來電者的電話號碼(清除格式,如
-
條件邏輯分支
- 使用多個
IF節點根據以下條件做出決策:- 通話方向(
inbound) - 搜尋結果長度(是否存在 1 個匹配項)
- 是否存在未關閉的工單
- 通話方向(
- 使用多個
-
工單管理自動化
- 如果不存在未關閉的工單,則建立新工單
- 更新現有未關閉的工單並添加通話詳細資訊,而非建立重複工單
-
資料豐富與轉換
- 使用 Function 節點從原始 API 回應中提取結構化資料
- 使用全名、電話號碼和公司名稱格式化動態訊息
-
透過 Google Sheets 進行外部記錄
- 在 Google Sheets 中記錄每項操作(工單建立/更新),包含:
- 通話 ID
- 工單 ID
- 對於稽核、計費或績效追蹤非常有用
- 在 Google Sheets 中記錄每項操作(工單建立/更新),包含:
-
環境配置
- 使用
EnvVariablesSet 節點集中配置(如基礎 URL 和使用者 ID),以便於維護。
- 使用
-
錯誤彈性和備用路徑
- 包含
NoOp(無操作)節點作為備用路徑,以防止因遺失資料而導致執行中斷。
- 包含
主要節點及其用途
| 節點名稱 | 類型 | 用途 |
|---|---|---|
| Webhook | Webhook Trigger | 在發生來電時接收來自 Dialpad 的 POST 負載 |
| IF (Direction Check) | IF Condition | 確保僅處理 inbound 通話;忽略外撥/內部通話 |
| EnvVariables | Set Node | 儲存環境常數,如 Syncro 基礎 URL 和預設使用者 ID |
| GetCustomer | HTTP Request | 使用已清除格式的來電號碼查詢 Syncro 的搜尋 API |
| Contacts | Function Node | 解析 API 回應以提取聯絡人記錄 |
| Customers | Function Node | 解析 API 回應以提取客戶(公司)記錄 |
| IFContacts / IFCustomers | IF Conditions | 檢查是否找到剛好一個聯絡人或客戶 |
| GetTicket | HTTP Request | 搜尋與已識別聯絡人關聯的未關閉工單 |
| IFMoreThanOne | IF Condition | 判斷是否存在未關閉的工單(長度 > 0),然後決定更新或建立 |
| UpdateTicket | HTTP Request | 向現有工單添加一個隱藏的評論,記錄通話 |
| CreateTicket / CreateTicketForCustomer | HTTP Request | 在聯絡人或客戶下建立新工單 |
| Set Nodes (ForGoogle)* | Set Node | 為記錄準備結構化資料(通話 ID + 工單 ID) |
| **Google Sheets * ** | Google Sheets Node | 將記錄條目附加到試算表中以供追蹤 |
| **NoOp * ** | No Operation Node | 作為虛擬輸出,處理未採取任何行動的情況 |
使用案例與效益
✅ 使用案例
- 託管服務提供者 (MSPs):自動追蹤客戶互動,無需代理在每次通話後手動建立工單。
- 客服中心:在代理接聽電話前,提供關於來電者的背景資訊,提高首次回應效率。
- 銷售與支援團隊:維護所有來電通訊的詳細記錄,並直接連結到 Syncro 中的 CRM 式記錄。
- 合規與稽核:在 Google Sheets 中保留不可變的記錄,將通話連結到服務活動。
✅ 效益
- 減少手動工作:無需手動查找客戶和開啟工單。
- 防止重複工單:智慧邏輯避免系統混亂。
- 提高責任制:每次通話都會留下數位足跡。
- 增強情境意識:代理可以在接聽或回撥電話前查看近期活動。
- 可擴展且可配置:可擴展至包含 SMS、語音郵件或電子郵件整合。
逐步工作流程邏輯
-
觸發:偵測到來電
- Dialpad 向
/moezdialpad網頁鉤子端點發送POST請求。 - 負載包含來電號碼(
external_number)、通話 ID 和方向。
- Dialpad 向
-
篩選:僅處理來電
- 第一個
IF節點檢查direction === 'inbound'。 - 如果為 false,則路由到
NoOp2(不做任何事)。 - 如果為 true,則繼續下一步。
- 第一個
-
載入環境變數
EnvVariables節點注入:syncro_baseurl:Syncro API 的基礎 URL- 其他稍後使用的靜態值(例如,使用者 ID)
-
在 Syncro 中搜尋來電者
GetCustomer向以下網址發送 HTTP GET 請求:{{syncro_baseurl}}/api/v1/search?query={cleaned_phone}- 電話號碼使用
.replace()進行清理,以移除+、前導1或0。
-
將結果解析為聯絡人和客戶
- 兩個並行的
Function節點(Contacts和Customers)解析搜尋結果 JSON:- 過濾
_index === 'contacts'或'customers'的條目 - 提取關鍵欄位:姓名、ID、customer_id、電話
- 過濾
- 輸出匹配的聯絡人/客戶陣列
- 兩個並行的
-
檢查是否剛好有一個匹配項
IFContacts:如果找到剛好一個聯絡人 → 繼續檢查工單IFCustomers:如果找到剛好一個客戶 → 繼續建立客戶層級工單- 否則,路由到
NoOp/NoOp1(不採取任何行動)
-
檢查未關閉的工單(按聯絡人)
- 如果找到聯絡人,
GetTicket會查詢:/api/v1/tickets?contact_id=X&status=Not%20Closed - 返回該聯絡人的未關閉工單列表
- 如果找到聯絡人,
-
決定:更新還是建立工單?
IFMoreThanOne評估:- 是否至少有一個未關閉的工單?
- 如果是 → 前往
UpdateTicket - 如果否 → 前往
CreateTicket
-
更新現有工單
UpdateTicket向第一個未關閉的工單發布評論:- 主旨:「來自 John Doe (+1234567890) 的電話」
-內文:「John Doe 打了電話。」 - 隱藏:true(內部備註)
- 分配給預設使用者
- 主旨:「來自 John Doe (+1234567890) 的電話」
- 然後透過
ForGoogle→Google Sheets準備並記錄資料
-
建立新工單
- 如果沒有未關閉的工單:
CreateTicket建立一個新工單,包含:- 來自匹配聯絡人的客戶 ID 和聯絡人 ID
- 動態主旨行
- 狀態:「進行中」
- 分配給預設使用者
- 然後透過
ForGoogle1→Google Sheets1記錄
- 如果沒有未關閉的工單:
-
處理客戶層級備用方案
- 如果沒有找到聯絡人但找到了客戶:
CreateTicketForCustomer在組織層級建立工單- 在主旨中包含公司名稱
- 透過
ForGoogle2→Google Sheets2記錄
- 如果沒有找到聯絡人但找到了客戶:
-
記錄到 Google Sheets
- 所有成功的操作(更新/建立)都會導致附加一行:
- A 欄:通話 ID
- B 欄:工單 ID
- 三個獨立的分支確保所有路徑都得到適當記錄
- 所有成功的操作(更新/建立)都會導致附加一行:
摘要
這個「Dialpad to Syncro」工作流程例證了 n8n 如何透過智慧自動化連接通訊平台與服務管理系統。透過結合網頁鉤子、條件邏輯、API 整合和外部記錄,它提供了一個強大的解決方案來增強客戶服務工作流程——確保沒有通話被遺漏,並且每次互動都能為改善支援成果做出貢獻。
使用方法:下載 JSON 檔案,然後在 n8n 中選擇「從檔案匯入」。