工作流程最多可執行多長時間

描述問題/錯誤/問題

我想建立一個自動化流程,可以等待客戶回覆電子郵件,如果他們在 X 天內沒有回覆,我們就會跟進。我的問題是工作流程是否會超時,以及是否有更有效的方式來進行此操作,使工作流程不會堆積並導致伺服器當機?

@Isaac_Cheang 它不會逾時或堆積,那正是 Wait 節點的用途。任何超過約 65 秒的等待都會卸載到資料庫,所以 X 天的等待在暫停期間基本上不佔用資源,它只是以一行的形式存在,並在時間到時恢復,沒有任何東西在記憶體中持續運行。對於你的後續動作,將 Wait 設定為在 webhook 上恢復,最多等待 X 天,這樣回覆會提早恢復它,否則 X 天的限制會觸發後續動作。只有在真正很高的流量情況下,我才會改用狀態表加上每日排程檢查,但對於正常流量,Wait 節點處理得很乾淨。

你好,@Isaac_Cheang。
n8n 雲端的舊限制(5 分鐘)已不再生效,目前沒有嚴格的限制。不過,對於自行託管的應用程式,你可以使用以下程式碼設定逾時時間為 3600:EXECUTIONS_TIMEOUT=3600。
Configure workflow timeout settings | n8n Docs Configure workflow timeout settings | n8n Docs
此外,等待節點不被視為並行處理,因為它只是在等待,並沒有執行任何操作。此外,等待節點不被視為並行處理,因為它只是在等待,並沒有執行任何操作。

嗨 @Isaac_Cheang

以下是推薦的 3 個工作流程架構:

工作流程 1:初始接觸

  • 觸發條件: 任何開始您的流程的事件(例如,新的潛在客戶)。
  • 操作: 發送第一封電郵。
  • 操作: 在您的資料庫中建立一筆記錄,包含:
    • 客戶電郵。
    • 狀態:待回覆。
    • 跟進日期:今天 + X 天。

工作流程 2:回覆監聽器

  • 觸發條件: 電郵觸發器(Gmail/Outlook)— 在新電郵到達時觸發。
  • 操作: 在您的資料庫中搜尋寄件者的電郵。
  • 操作: 如果找到,將記錄狀態更新為 已回覆。
  • 結果: 這會「停止」跟進序列,因為狀態不再是 待回覆。

工作流程 3:每日跟進檢查器(「Cron」任務)

  • 觸發條件: 排程觸發器(每 24 小時執行一次)。
  • 操作: 查詢您的資料庫以找出滿足以下條件的記錄:
    • 狀態 等於 待回覆 且
    • 跟進日期 小於或等於 今天。
  • 操作: 對於找到的每筆記錄:
    1. 發送跟進電郵。
    2. 將 跟進日期 更新為 今天 + X 天(如需要,以循環跟進)。

感謝 @achamm 的幫助!我只是想知道,wait 節點要正常運作,應該考慮什麼樣的流量?而且 webhook 會在電子郵件節點之後立即回應嗎?再次感謝!

正常數量主要取決於恢復突發,而不是停滯等待。數百或幾千個停滯等待通常是沒問題的,因為它們是資料庫記錄;風險情況是許多記錄在同一分鐘內喚醒並同時觸發 Gmail/SMTP/API 限制。如果可能發生這種情況,請分散到期時間或在 pending_reply 表上執行排程批次。

對於 webhook 路徑,將其保持為回覆信號:將潛在客戶標記為已回覆並快速返回。後續電子郵件應放在超時/到期分支上,而不是在回覆 webhook 之後,這樣回覆的人就不會等待電子郵件節點。

嗨 @kjooleng,感謝你提供這個,我也設定了類似的東西,但我把工作流程 2 和 3 合併在一起,這樣它就只需要每 24 小時檢查一次電子郵件,如果他們還沒有回覆,且距離現在已經超過 2 天,就會發送後續追蹤。我們需要資料庫有什麼特別的原因嗎?

如果您的 n8n 實例當機或伺服器重新啟動,根據您的設定,待執行的「等待」執行可能無法正確繼續。

此外,與其讓工作流程等待,不如讓工作流程檢查。這是 CRM 自動化的業界標準。您可以將「等待」邏輯從工作流程移出,並放入資料庫(Airtable、Google Sheets、PostgreSQL 或 MongoDB)。這樣同時也能節省伺服器資源