# webhooks ส่งออก

Canonical page: https://phishdestroy.github.io/TgWitness/th/docs/reference/webhooks/

ส่งเหตุการณ์ที่ระบุขอบเขตไปยังผู้รับ HTTPS พร้อมลายเซ็น HMAC การลองส่งซ้ำ และสถานะการส่ง

**เนื้อหาหลักปัจจุบัน:** ใช้การเช็คเอาต์จากแหล่งที่มา; เวอร์ชัน 0.7.0 portable preview ยังไม่มีคุณสมบัตินี้

[คู่มือขั้นตอนการทำงาน](https://phishdestroy.github.io/TgWitness/docs/archive/) · [Wiki](https://github.com/phishdestroy/TgWitness/blob/main/docs/wiki/Archive-and-Integrations.md)

เปิด **Integrations → Outgoing webhooks** ในพื้นที่ทำงานที่เลือกไว้ เพิ่มผู้รับ HTTPS เลือกเหตุการณ์ collector/media/export และสามารถเลือกแชทได้ สำหรับข้อมูลสังเกตการณ์ใหม่และการเปลี่ยนแปลง ข้อความข้อความถูกปิดไว้ตามค่าเริ่มต้น การเปิดใช้งานส่วนสรุป จะเพิ่มสูงสุด 1,000 ตัวอักษรไปยังเหตุการณ์การเปลี่ยนแปลงข้อความ; สนาม Telegram แบบดิบและ ข้อมูลรับรองจะไม่ถูกส่งไปเลย

คัดลอก HMAC secret ลงในส่วนการตั้งค่าที่ได้รับการปกป้องของผู้รับเพียงครั้งเดียวเท่านั้น มัน ถูกเข้ารหัสใน vault ของ TgWitness และไม่สามารถเรียกคืนจากแผงควบคุมได้ ลบ และสร้างปลายทางใหม่เพื่อหมุนเวียนมัน **ส่งการทดสอบจำลอง** จะเพิ่มการทดสอบที่ไม่มีเนื้อหาแชทลงในคิว รีเฟรชสถานะการส่งเพื่อดูผลลัพธ์

ระบบส่งข้อมูลนี้ขยายวงจรการแจ้งเตือนที่มีอยู่ร่วมกับ Apprise โดยใช้ เส้นทางภายนอกของพื้นที่ทำงาน (workspace) และข้อจำกัดปลายทางส่วนตัวที่มีอยู่ ไม่มีระบบสำรองหรือการเปลี่ยนเส้นทางโดยตรงตามมา URL ต้องไม่รวมข้อมูลรับรอง สตริงการค้นหา หรือส่วนย่อย; ที่อยู่ส่วนตัวต้องได้รับการอนุญาตจากระดับเซิร์ฟเวอร์ ไม่ใช่การตั้งค่าที่ผู้ใช้แผงควบคุมสามารถข้ามได้

## ข้อมูลที่ส่งและลายเซ็น

Schema: [`tgwitness.webhook/1`](https://github.com/phishdestroy/TgWitness/blob/main/integrations/webhook.schema.json). ทุก payload ประกอบด้วย `event_id`, `timestamp`, `workspace`, `type`, `synthetic` และตัวนับ เหตุการณ์ที่บันทึกในสมุดบันทึกจะรวมถึงลำดับและค่าแฮช การส่งออกข้อมูลแบบเต็มรูปแบบและ การทดสอบสังเคราะห์ถือเป็นเหตุการณ์การส่งมอบ โดยไม่มีการอ้างอิงสมุดบันทึกที่ลงนามและสร้างขึ้น การแจ้งเตือนการลบข้อความใน Telegram และ `missing_on_recheck` ยังคงเป็นประเภทที่แยกต่างหาก

ส่วนหัว`X-TgWitness-Signature` คือ`t=UNIX_SECONDS,v1=HEX_HMAC_SHA256` คำนวณ HMAC จากไบต์ที่ระบุไว้อย่างแม่นยำ`timestamp + "." + raw_request_body` โดยใช้ คีย์ลับที่แสดงไว้เป็นไบต์ UTF-8 เปรียบเทียบลายเซ็นในเวลาคงที่ก่อน ที่จะวิเคราะห์หรือดำเนินการกับเนื้อหา ปฏิเสธเวลาประทับที่ห่างจาก นาฬิกาของคุณเกินห้านาที เวลาประทับจะได้รับการอัปเดตทุกครั้งที่มีการพยายามส่งข้อความ

ใช้ `event_id` เป็นกุญแจความคงที่ (idempotency key) ในพื้นที่จัดเก็บข้อมูลที่ทนทาน (durable storage) พร้อมด้วยข้อจำกัดความเป็นเอกลักษณ์แบบอะตอมิก (atomic unique constraint) ก่อนที่จะเกิดผลข้างเคียง (side effects) ลายเซ็นที่ถูกต้องเพียงอย่างเดียวไม่สามารถป้องกันการ เล่นซ้ำ (replay) ของคำขอที่เพิ่งส่งไปได้ เก็บ ID ที่ได้รับการประมวลผลไว้อย่างน้อยตลอด ช่วงเวลาการลองใหม่ (retry window); เก็บไว้นานกว่านั้นหากผู้รับสามารถประมวลผลเหตุการณ์ที่จัดเก็บไว้ได้ใหม่

## ลองใหม่

การส่งข้อมูลจะถูกจัดเข้าคิวอย่างคงทนก่อนการส่งคำขอ HTTP โดยใช้หลักการ "at-least-once": การสูญเสียการยืนยันหรือการเริ่มต้นใหม่ อาจส่งผลให้เหตุการณ์ถูกส่งซ้ำด้วย ID เดียวกัน มีทั้งหมดแปดครั้งในการลองส่ง โดยใช้การลดความถี่แบบเอ็กซ์โพเนนเชียล (exponential backoff) เริ่มต้นที่ 15 วินาที และจำกัดสูงสุดที่หนึ่งชั่วโมง การส่งสำเร็จต้องได้รับคำตอบ 2xx งานที่หมดเวลา จะแสดงข้อผิดพลาดที่มองเห็นได้; การส่งข้อมูลไม่ได้รับการรับประกันหลังจากสิ้นสุดการลองใหม่

คิวสามารถเก็บการส่งได้ 1,000 ครั้ง เมื่อเต็ม การสแกนเหตุการณ์ในบันทึกจะหยุดชั่วคราวและ จะเริ่มใหม่เมื่อมีพื้นที่ว่าง การส่งออกข้อมูลแบบเต็มที่ไม่สามารถจัดเข้าคิวได้ จะแสดงข้อผิดพลาดในคิวที่มองเห็นได้ ระบบจะพยายามส่งข้อมูลสูงสุด 5 ครั้งต่อรอบการแจ้งเตือน และบันทึกการพยายามส่ง 100 ครั้งล่าสุดไว้ การลบปลายทาง จะลบการส่งข้อมูลที่รออยู่ด้วย

## ตัวอย่าง n8n

นำเข้า[ตัวอย่างเวิร์กโฟลว์](https://github.com/phishdestroy/TgWitness/blob/main/integrations/n8n-tgwitness.json) ซึ่งยังไม่ถูกเปิดใช้งาน และไม่มีการเก็บข้อมูลลับหรือการดำเนินการต่อเนื่องใดๆ ตั้งค่า `TGWITNESS_WEBHOOK_SECRET` ใน สภาพแวดล้อม n8n worker, อนุญาตการเข้าถึงสภาพแวดล้อมนั้น และอนุญาต `crypto` builtin สำหรับโหนด Code ตัวอย่างนี้ใช้ตัวเลือก raw-body ของโหนด Webhook, ตรวจสอบลายเซ็น/ความสดใหม่ และยืนยันเหตุการณ์ที่ได้รับการตรวจสอบแล้ว สิ่งนี้สอดคล้องกับ [การดำเนินการที่](https://github.com/n8n-io/n8n/blob/master/packages/nodes-base/nodes/Webhook/Webhook.node.ts)บันทึกไว้ในเอกสารของโหนด

ก่อนที่จะเพิ่มการเขียนหรือการแจ้งเตือน SIEM ให้เพิ่มระบบจัดเก็บข้อมูลที่มีความคงทนและคุณสมบัติ idempotency โดยใช้คีย์`event_id` จำกัดการแก้ไขเวิร์กโฟลว์ n8n และการเก็บรักษาบันทึกการดำเนินการ ตามข้อมูลที่คุณเลือกส่ง TgWitness ไม่เพิ่มคำสั่งขาเข้าใดๆ
