參考資料 / 存檔與整合功能
外發 Webhook
將特定範圍的事件傳送至 HTTPS 接收端,並附帶 HMAC 簽名、重試機制及傳送狀態。
當前主要版本:請使用原始碼檢出;0.7.0 便攜版預覽版尚未包含此功能。
在所選工作區中,開啟「整合」→「外發 webhook」。 新增一個 HTTPS 接收器,選擇「收集器/媒體/匯出」事件,並可選擇針對 新訊息及變更的聊天室。預設情況下不包含訊息內容。啟用摘要功能 將在訊息變更事件中最多新增 1,000 個字元;Telegram 的原始欄位及 憑證絕不會被傳送。
將 HMAC 密鑰複製一次至接收端的受保護設定中。該密鑰 已加密儲存於 TgWitness 的金庫中,且無法透過控制面板檢索。移除 並重新建立目標位置以進行輪替。向合成測試佇列發送一則 不含聊天內容的測試訊息;刷新傳送狀態以查看結果。
此傳送機制在 Apprise 的基礎上擴展現有的通知迴路。它採用 工作區的外部路由及現有的私有目的地限制。此機制 不提供直接的備用方案或後續重定向。URL 不得包含憑證、 查詢字串或片段;私有地址需啟用伺服器層級的網路 選入機制,而非面板使用者可繞過的設定。
有效載荷與簽名#
結構:tgwitness.webhook/1。每個有效載荷
均包含 event_id、timestamp、workspace、type、synthetic 以及計數器。
基於日誌的事件包含其序列號與雜湊值。完整匯出完成及
合成測試屬於傳輸事件,不包含虛構的簽名日誌參考。
Telegram 刪除通知與 missing_on_recheck 仍屬不同類型。
X-TgWitness-Signature 標頭應為 t=UNIX_SECONDS,v1=HEX_HMAC_SHA256。
針對精確的位元組序列 timestamp + "." + raw_request_body 計算 HMAC,
並將顯示的密鑰視為 UTF-8 位元組。在解析或處理
訊息正文之前,以恆定時間比對簽名。若時間戳記與
您的系統時間相差超過五分鐘,則予以拒絕。每次傳送嘗試時,
時間戳記都會重新更新。
請將 event_id 作為幺半抗變換鍵儲存於持久性儲存裝置中,並在產生副作用前設定原子性唯一
約束。僅憑有效的簽名並不能防止
最近的請求被重播。請至少保留已處理的 ID 至整個
重試時段結束為止;若接收端可重新處理儲存的事件,則應保留更長時間。
重試#
傳送作業會在 HTTP 請求前被持久化排入佇列。其採用「至少一次」 的語義:若確認回執遺失或系統重啟,可能會再次傳送具有 相同 ID 的事件。系統會進行八次嘗試,並採用指數退避機制,起始間隔為 15 秒,上限為一小時。成功傳送需獲得 2xx 狀態碼回應。 已耗盡的任務 會留下可見的錯誤訊息;重試結束後,無法保證能成功傳送。
佇列可容納 1,000 筆傳送任務。當佇列已滿時,日誌事件的掃描作業將暫停,並 在釋放出空間後恢復。 無法排入佇列的完整匯出任務 會觸發可見的佇列錯誤。每次通知傳送 最多嘗試五次,並保留最近 100 筆嘗試記錄。移除目的地 也會一併移除其待處理的傳送任務。
n8n 範例#
匯入範例工作流程。該工作流程目前處於非活躍狀態,
且不包含任何機密資訊或下游動作。 請在
n8n 工作環境中設定 TGWITNESS_WEBHOOK_SECRET,允許該環境存取,並為 Code 節點啟用 crypto
內建功能。此範例使用 Webhook 節點的 raw-body 選項,
檢查簽名與新鮮度,並確認已驗證的事件。這與
該節點的文件中所述實作方式相符。
在新增 SIEM 寫入或通知之前,請先建立以 event_id 作為鍵值的持久性冪等儲存空間。
請根據您選擇傳送的資料,限制 n8n 工作流程的編輯及執行日誌的保留期限。
TgWitness 不會新增任何傳入指令。