TgWitness / เอกสาร

อ้างอิง / Collect

วิธีการเก็บรวบรวมข้อมูล

ขอบเขตการสังเกตการณ์, การอัปเดตแบบเรียลไทม์, การตรวจสอบซ้ำ, ไฟล์แนบ, การดำเนินการของผู้ใช้เอง และความหมายของช่องว่าง (gap) — บันทึกอย่างละเอียดทีละรายการ

TgWitness บันทึกสิ่งที่บัญชี Telegram ที่เชื่อมต่อไว้สังเกตเห็น บันทึกนี้เก็บรักษา การสังเกตเหล่านั้น ลำดับการเกิด และบริบทที่มาพร้อมกับมัน มัน ไม่สันนิษฐานการกระทำที่มองไม่เห็นจากข้อความที่หายไป หรือจากบัญชีที่กำลังเชื่อมต่ออยู่

ตั้งแต่การเข้าสู่ระบบจนถึงบันทึก#

แผนผังกระบวนการอนุมัติบัญชีผู้ใช้ → เลือกกลุ่มและช่องที่เข้าถึงได้; เลือกกลุ่มและช่องที่เข้าถึงได้ → บันทึกการตั้งค่าเหตุการณ์และไฟล์แนบ; บันทึกการตั้งค่าเหตุการณ์และไฟล์แนบ → เริ่มการสังเกต; เริ่มการสังเกต → รับข่าวสารล่าสุดจากลูกค้าที่ใช้งานอยู่; รับข่าวสารล่าสุดจากลูกค้าที่ใช้งานอยู่ → ปฏิบัติตามนโยบายเกี่ยวกับแหล่งข้อมูลและเหตุการณ์; ปฏิบัติตามนโยบายเกี่ยวกับแหล่งข้อมูลและเหตุการณ์ → เพิ่มบันทึกการสังเกตที่มีลายเซ็น; เพิ่มบันทึกการสังเกตที่มีลายเซ็น → ตรวจสอบหรือส่งออกบันทึก; เพิ่มบันทึกการสังเกตที่มีลายเซ็น → ประมวลผลไฟล์แนบที่อยู่ในคิว; ประมวลผลไฟล์แนบที่อยู่ในคิว → เพิ่มผลลัพธ์การดาวน์โหลดอนุมัติบัญชีผู้ใช้เลือกกลุ่มและช่องที่เข้าถึงได้บันทึกการตั้งค่าเหตุการณ์และไฟล์แนบเริ่มการสังเกตรับข่าวสารล่าสุดจากลูกค้าที่ใช้งานอยู่ปฏิบัติตามนโยบายเกี่ยวกับแหล่งข้อมูลและเหตุการณ์เพิ่มบันทึกการสังเกตที่มีลายเซ็นตรวจสอบหรือส่งออกบันทึกประมวลผลไฟล์แนบที่อยู่ในคิวเพิ่มผลลัพธ์การดาวน์โหลด
แผนภาพในรูปแบบข้อความ
  1. อนุมัติบัญชีผู้ใช้ → เลือกกลุ่มและช่องที่เข้าถึงได้
  2. เลือกกลุ่มและช่องที่เข้าถึงได้ → บันทึกการตั้งค่าเหตุการณ์และไฟล์แนบ
  3. บันทึกการตั้งค่าเหตุการณ์และไฟล์แนบ → เริ่มการสังเกต
  4. เริ่มการสังเกต → รับข่าวสารล่าสุดจากลูกค้าที่ใช้งานอยู่
  5. รับข่าวสารล่าสุดจากลูกค้าที่ใช้งานอยู่ → ปฏิบัติตามนโยบายเกี่ยวกับแหล่งข้อมูลและเหตุการณ์
  6. ปฏิบัติตามนโยบายเกี่ยวกับแหล่งข้อมูลและเหตุการณ์ → เพิ่มบันทึกการสังเกตที่มีลายเซ็น
  7. เพิ่มบันทึกการสังเกตที่มีลายเซ็น → ตรวจสอบหรือส่งออกบันทึก
  8. เพิ่มบันทึกการสังเกตที่มีลายเซ็น → ประมวลผลไฟล์แนบที่อยู่ในคิว
  9. ประมวลผลไฟล์แนบที่อยู่ในคิว → เพิ่มผลลัพธ์การดาวน์โหลด

การอนุญาต การเข้าถึงแหล่งข้อมูล ตัวเก็บข้อมูลที่กำลังทำงาน และการส่งข้อมูลที่สมบูรณ์ เป็น เรื่องที่ต่างกัน การเข้าสู่ระบบที่สำเร็จไม่ได้หมายความว่าจะได้รับสิทธิ์เข้าถึงทุกกลุ่ม การเชื่อมต่อระบบขนส่งไม่ได้หมายความว่าทุกการอัปเดตที่เกี่ยวข้องได้ส่งถึงแล้ว

ขอบเขตการสังเกต: การสนทนาที่เลือกไว้, โฟลเดอร์ หรือบัญชีทั้งหมด#

แหล่งข้อมูล → ขอบเขตการสังเกตกำหนดว่าพื้นที่ทำงานจะบันทึกการสนทนาใด

โหมด บันทึก การสนทนาใหม่
การสนทนาที่เลือก (ค่าเริ่มต้น) เฉพาะการสนทนาที่คุณเพิ่มด้วยมือเท่านั้น ไม่เคยถูกเพิ่มอัตโนมัติ
โฟลเดอร์ Telegram การสนทนาในหนึ่งในโฟลเดอร์ของบัญชี: การสนทนาที่รวมไว้ตามชื่อ พร้อมทั้งหมวดหมู่ของโฟลเดอร์ (ผู้ติดต่อ, ผู้ที่ไม่ใช่ผู้ติดต่อ, กลุ่ม, ช่อง, บอท), หักออกจากการสนทนาที่ถูกยกเว้น และหากโฟลเดอร์ระบุไว้ ก็รวมถึงการสนทนาที่ถูกเก็บถาวร การสนทนาที่ตรงกันจะถูกเพิ่มทันทีที่เริ่มใช้งาน; การสนทนาที่คุณเพิ่มเข้าไปในโฟลเดอร์ใน Telegram จะถูกบันทึกภายในหนึ่งชั่วโมง
บัญชีทั้งหมด ทุกการสนทนาที่บัญชีนี้เห็น ทุกการสนทนาใหม่ กลุ่มสนทนา การสนทนาส่วนตัว หรือบอท จะถูกเพิ่มเข้ามาทันทีที่มีการอัปเดตครั้งแรก
  • ประเภทแหล่งข้อมูล (ช่อง, กลุ่ม, การสนทนาส่วนตัว, บอท) ช่วยจำกัดโหมดโฟลเดอร์และ โหมดบัญชีทั้งหมด การสนทนาที่เลือกสามารถเป็นประเภทใดก็ได้ รวมถึงการสนทนาส่วนตัวและบอท
  • การสนทนาที่ถูกยกเว้นจะไม่ถูกบันทึกเลย ไม่ว่าในโหมดใดก็ตาม ในโหมดโฟลเดอร์และโหมดบัญชีทั้งหมด การคลิก "ยกเว้น" หรือ "ลบ" บนแหล่งข้อมูลจะทำให้แหล่งข้อมูลนั้นถูกเพิ่มเข้าสู่รายชื่อนี้ ดังนั้นระบบจะไม่เพิ่มมันเข้าไปอีกครั้ง การเลือกการสนทนาอีกครั้งด้วยมือ (ในส่วน "แหล่งข้อมูล" หรือจาก "การสนทนา") จะลบการสนทนานั้นออกจากรายชื่อ รายชื่อ สามารถเก็บได้สูงสุด 5,000 การสนทนา; หากเกินจำนวนนี้ การกด "ลบ" จะถูกปฏิเสธ และสามารถหยุดการบันทึกการสนทนานั้นแทนได้
  • การดำเนินการของบัญชีนี้ (เปิดโดยค่าเริ่มต้น): ข้อความที่บัญชีนี้ส่ง การแก้ไข และ การกดปุ่มบนคีย์บอร์ดเพื่อตอบกลับ หากปิดไว้ ข้อความที่ส่งออกไปและการแก้ไขจะไม่ถูกบันทึก
  • การเปลี่ยนไปยังโฟลเดอร์หรือบัญชีทั้งหมดจะขอการยืนยัน: โหมดเหล่านี้บันทึก การสนทนาส่วนตัวและข้อความของบุคคลที่สาม และควรใช้ในบัญชีเฉพาะเท่านั้น การยืนยันและการเปลี่ยนแปลงขอบเขตทุกครั้งจะถูกบันทึกเป็นบันทึกscope.changedที่ลงนามแล้ว
  • การสนทนาที่เพิ่มเข้ามาตามขอบเขตจะปรากฏเป็นแหล่งข้อมูลที่มีเครื่องหมาย "auto" และถูกบันทึกเป็น scope.applied (เมื่อเริ่มต้นและทุกชั่วโมง) หรือ source.discovered (การสนทนาใหม่ระหว่างการเฝ้าสังเกต) การกลับ ไปยังการสนทนาที่เลือกไว้จะทำให้แหล่งข้อมูลที่เพิ่มเข้ามาโดยอัตโนมัติทั้งหมดถูกหยุดชั่วคราว

สิ่งที่โหมดเหล่านี้ไม่สามารถทำได้:

  • การสนทนาแบบลับ (Secret chats) ได้รับการเข้ารหัสแบบ end-to-end ระหว่างอุปกรณ์สองเครื่อง และไม่เคยส่งถึง TgWitness ในรูปแบบใดก็ตาม
  • ไม่มีการบันทึกข้อมูลใดๆ เมื่อ TgWitness ไม่ทำงาน หลังจากรีสตาร์ท ระบบจะขอข้อมูลอัปเดตที่พลาดไปจาก Telegram และตรวจสอบการสนทนาใหม่ แต่ Telegram ไม่ส่งข้อมูลทั้งหมดกลับมาหลังจาก การหยุดให้บริการเป็นเวลานาน รายงานและverify.py แสดงช่วงเวลาดังกล่าวเป็นช่องว่าง (ดูการครอบคลุม)
  • ในตอนแรกจะแสดงเพียง 1,000 บทสนทนาแรกเท่านั้น (ขีดจำกัดนี้อยู่ในส่วน Parameters); บทสนทนา ที่เก่ากว่าจะถูกเพิ่มเข้ามาเมื่อมีการใช้งานอีกครั้ง ประวัติก่อนหน้านั้นของบทสนทนาที่เพิ่มเข้ามาจะไม่ถูกดึงมา — ให้ทำการ ถ่ายภาพประวัติ (snapshot) หรือส่งออกบทสนทนาทั้งหมดเมื่อจำเป็น
  • เงื่อนไขของโฟลเดอร์ที่เปลี่ยนแปลงตลอดเวลา (ปิดเสียง, อ่านแล้ว) จะไม่ถูกนำไปใช้: การสนทนาดังกล่าว ยังคงถูกติดตามต่อไป
  • ปุ่มบอตแบบอินไลน์ (callback) ที่ถูกกดในแอปอื่นจะไม่ปรากฏในเซสชัน ที่สอง; การตอบกลับหรือการแก้ไขของบอตจะถูกบันทึกไว้ การกดปุ่มบนคีย์บอร์ดเพื่อตอบกลับจะส่งออกไป ในฐานะข้อความขาออก และถูกติดป้ายว่า button_press
  • การสนทนาที่มากขึ้นหมายถึงคำขอที่มากขึ้น Telegram จะจำกัดบัญชีสำหรับปริมาณที่พิจารณาว่า เกินความจำเป็น ซึ่งเป็นเหตุผลอีกหนึ่งในการใช้บัญชีเฉพาะ

ขอบเขตและวิธีการเลือกเหตุการณ์#

แต่ละพื้นที่ทำงานมีแหล่งข้อมูลของตัวเอง TgWitness ไม่เข้าร่วมกลุ่ม ไม่รับ คำเชิญ หรือระบุสมาชิกทุกคนโดยอัตโนมัติ แหล่งข้อมูลต้องเป็น แหล่งที่บัญชีดังกล่าวสามารถเข้าถึงได้อยู่แล้ว เมื่อเริ่มต้นทำงาน ตัวเก็บข้อมูลจะตรวจสอบแหล่งข้อมูลที่เลือก เทียบกับบทสนทนาที่บัญชีสามารถมองเห็นได้; บทสนทนา 1,000 รายการแรกจะถูกตรวจสอบ เว้นแต่ในส่วน Parameters → Chats read from the account’s list จะกำหนดไว้เป็นอย่างอื่น แหล่งข้อมูลที่ขาดหายไปจะถูกทำเครื่องหมายว่า "การเข้าถึงยังไม่ได้รับการยืนยัน" และไม่ถือว่าแหล่งข้อมูลนั้นได้ลบคุณออกจากรายชื่อ

บริบท รวบรวม ผลเมื่อปิดใช้งาน
ข้อความใหม่ ข้อความที่ส่งไปทั่วไป การแก้ไขหรือการลบข้อความในภายหลังอาจไม่มีข้อความที่บันทึกไว้ก่อนหน้านี้เพื่อเปรียบเทียบ
การแก้ไข ส่งเวอร์ชันข้อความที่ได้รับการแก้ไข การเปลี่ยนแปลงระหว่างขั้นตอนจะไม่ถูกสร้างขึ้นใหม่ในภายหลัง
การลบ แจ้งการลบที่อยู่ในขอบเขตการตรวจสอบ และแจ้งการลบที่ไม่อยู่ในขอบเขตการตรวจสอบระดับบัญชี การแจ้งเตือนการลบข้อความจะไม่ถูกเพิ่มเข้าไปในบันทึกหลักฐาน
ปฏิกิริยา ส่งภาพถ่ายหน้าจอแสดงปฏิกิริยา ไม่มีการเพิ่มอัปเดตปฏิกิริยาแยกต่างหาก
การเป็นสมาชิก ส่งข้อความบริการสมาชิกและอัปเดตข้อมูลผู้เข้าร่วม ข้อสังเกตเกี่ยวกับสมาชิกดังกล่าวไม่ได้ถูกเพิ่มเข้าไป

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

บันทึกการดำเนินงานและเหตุการณ์บริการกลุ่มอื่น ๆ ยังคงแยกต่างหากจาก สวิตช์เหล่านี้ ข้อความบริการสมาชิกสามารถสร้างบันทึกข้อความได้เมื่อ การเป็นสมาชิกถูกเปิดใช้งาน แม้ว่าการบันทึกข้อความใหม่แบบปกติจะถูกปิดใช้งานก็ตาม วัตถุ Telegram ที่ถูกบันทึกจะรักษาข้อมูลเมตาดาต้าที่ฝังไว้; สวิตช์ไม่ใช่กฎการลบข้อมูล

การลบข้อความในแชทส่วนตัวและกลุ่มทั่วไปจะปรากฏเป็น ID ข้อความโดยไม่มีข้อมูลแชท แชทเหล่านี้ใช้ลำดับ ID ข้อความเดียวกันสำหรับทั้งบัญชี ดังนั้นเมื่อข้อความที่มี ID ดังกล่าว ถูกบันทึกไว้ก่อนหน้านี้ แชทที่เกี่ยวข้องก็จะถูกระบุ: การลบข้อความจะถูกบันทึกในแชทนั้นพร้อม chat_resolution ที่อธิบายวิธีการ ID ที่ไม่เคยถูกบันทึกจะยังคงเป็นการลบที่ไม่มีขอบเขต พร้อม แหล่งที่มาที่ไม่ทราบอย่างชัดเจน; ระบบเก็บข้อมูลไม่ทำการคาดเดา Telegram ไม่เคยระบุว่าใครเป็นผู้ลบ ข้อความ; เมื่อข้อความที่ถูกลบถูกส่งจากบัญชีนี้ บันทึกจะระบุเช่นนั้น (deleted_message_was_outgoing) โดยไม่ระบุชื่อผู้ลบ

การดำเนินการของตนเอง#

ข้อความที่ส่งจากบัญชีที่ถูกติดตามจะถูกติดป้ายว่า outgoing การแก้ไขข้อความที่ส่งออกไป จะระบุว่า ในแชทส่วนตัวและกลุ่ม มีเพียงผู้เขียนเท่านั้นที่สามารถแก้ไขได้ ส่วนโพสต์ในช่อง สามารถถูกแก้ไขได้โดยผู้ดูแลระบบอื่น ๆ เมื่อข้อความที่ส่งออกไปซ้ำกับข้อความของปุ่ม จากคีย์บอร์ดตอบกลับที่บันทึกไว้ล่าสุดในแชทนั้น ข้อความดังกล่าวจะมีรหัสbutton_press พร้อมลิงก์ไปยัง บันทึกของคีย์บอร์ดนั้น

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

โหมดการสืบสวน: การเข้าร่วมทีมและการสนทนากับบอท#

แหล่งข้อมูล → ขอบเขตการสังเกต → โหมดการสืบสวน จะเตรียมขอบเขตสำหรับบัญชีเฉพาะ ที่เข้าร่วมการสนทนาในกลุ่มทีม, เปิดใช้งานบอท และส่งข้อความไปยังบอทเหล่านั้น: บัญชีทั้งหมด, ทุก ประเภทแหล่งข้อมูล, การดำเนินการของตนเอง, และสำหรับทุกการสนทนาหรือบอทที่ปรากฏขึ้น จะแสดงโปรไฟล์และ ข้อความ 200 ข้อความล่าสุดที่มองเห็นได้ ตรวจสอบแบบฟอร์มและกด "บันทึกขอบเขต"; การเปลี่ยนไปใช้ บัญชีทั้งหมดจะขอการยืนยันตามปกติ

  • ปุ่มต่างๆ ปุ่มที่อยู่ใต้ข้อความจะถูกรักษาไว้พร้อมกับข้อความและแสดงในส่วน Chats: ลิงก์, เว็บ แอป, ลิงก์เข้าสู่ระบบ, ข้อความเพื่อคัดลอก, ข้อมูล callback, การค้นหาในข้อความ, การขอ หมายเลขโทรศัพท์หรือตำแหน่ง ลิงก์จะแสดงเป็นข้อความและไม่ถูกเปิดโดยแผงควบคุม เมื่อบอท เปลี่ยนแปลงเฉพาะปุ่ม (ลิงก์การชำระเงินใหม่) นั่นถือเป็นเวอร์ชันใหม่ของข้อความ ทั้ง จากการอัปเดตแบบเรียลไทม์และจากการตรวจสอบซ้ำ
  • การสนทนาและบอตใหม่ ในโหมดโฟลเดอร์และโหมดบัญชีทั้งหมด เมื่อการสนทนาหรือบอตใหม่ ปรากฏขึ้น จะถูกบันทึกทันทีหลังจากที่มันปรากฏ:

    • โปรไฟล์ในรูปแบบบันทึกsource.profile: คำอธิบายและคำสั่งของบอท, ข้อความ "เกี่ยวกับ" ของผู้ใช้ กลุ่ม หรือช่อง, สมาชิก, การสนทนาที่เชื่อมโยง และลิงก์เชิญเมื่อ Telegram ส่งคืน ลิงก์ดังกล่าว;
    • ข้อความล่าสุดที่มองเห็นได้ (สูงสุด 1,000 ข้อความ) ในรูปแบบภาพถ่ายประวัติที่มีเครื่องหมายnew_chat: ข้อความก่อนหน้าของห้องแชทกลุ่มที่เพิ่งเข้าร่วม หรือสิ่งที่บอทพูดก่อนที่ระบบสังเกตการณ์ จะตรวจพบห้องแชทนั้น ข้อความที่บันทึกไว้แบบเรียลไทม์แล้วจะไม่ถูกบันทึกซ้ำ

    การสนทนาที่อยู่ในรายชื่อแล้วเมื่อเปิดโหมดนี้จะถูกเพิ่มเข้าไปโดยไม่มีการถ่ายภาพหน้าจอ FloodWait จะหยุดการทำงานนี้ชั่วคราวและจะดำเนินการต่อหลังจากนั้น; ความล้มเหลวจะถูกบันทึกไว้และการบันทึก การสนทนาแบบเรียลไทม์จะดำเนินต่อไป - โปรไฟล์ตามคำขอ การเลือก Chats → Profile → Save profile จะบันทึกโปรไฟล์ปัจจุบัน ของแหล่งข้อมูลใดก็ตาม; โปรไฟล์ล่าสุดจะแสดงอยู่ด้านบนข้อความ - ไม่ปรากฏให้เห็น ปุ่มในไลน์ (callback) ที่ถูกกดในแอป Telegram อื่น หน้าต่างป๊อปอัพ หรือ ลิงก์ที่บอทตอบกลับเมื่อถูกกด รวมถึงลิงก์เชิญที่ใช้ในแอปอื่น จะไม่ส่งถึง TgWitness สิ่งที่บอทส่งหรือแก้ไขหลังจากนั้นจะถูกบันทึกไว้

การดำเนินการจากคณะผู้อภิปราย#

ส่วน "Chats" ตอนนี้ได้เพิ่มมินิ-ไคลเอนต์ที่ใช้บัญชี Telegram ของพื้นที่ทำงานที่เลือกไว้:

  • เขียนข้อความแบบข้อความธรรมดา หรือเลือก "Reply" (ตอบกลับ) ใต้ข้อความที่บันทึกไว้ ข้อความที่ส่งออกไป จะถูกบันทึกไว้ แม้เมื่อตั้งค่าให้ไม่บันทึกการอัปเดตข้อความที่ส่งออกไป
  • กดปุ่ม "Press" ใต้ปุ่ม callback หรือปุ่มข้อความปัจจุบัน เซิร์ฟเวอร์จะดึง ข้อความมาอีกครั้งและปฏิเสธการดำเนินการหากข้อความที่ป้อนไม่ตรงกับเวอร์ชันที่บันทึกไว้ ใบยืนยันการรับข้อความ callback จะเก็บข้อความป๊อปอัพ ธงแจ้งเตือน และ URL ของ Telegram ไว้; คำตอบจะแสดง อยู่ใต้บทสนทนาด้วย URL ยังคงเป็นข้อความที่เลือกได้และไม่เปิดอัตโนมัติ
  • คลิก "Open Telegram link" (เปิดลิงก์ Telegram), ป้อน @username, ลิงก์สาธารณะ https://t.me/name, https://t.me/+invite / joinchat/invite หรือลิงก์บอทที่มี ?start=parameter แล้วคลิก "Save preview" (บันทึกตัวอย่าง) ลิงก์ต้นฉบับและตัวอย่างของ Telegram จะถูกลงนามก่อนการเข้าร่วม การเข้าร่วม / เปิดและสังเกตการณ์จะนับเป็นการเข้าร่วมกลุ่ม/ช่อง หรือเปิดผู้ใช้/บอท เพิ่ม การสนทนาเป็นแหล่งข้อมูลที่เปิดใช้งาน และส่ง/start ไปยังบอท พร้อมทั้งพารามิเตอร์เริ่มต้น คำขอเข้าร่วมที่รอการอนุมัติจากผู้ดูแลระบบจะถูกบันทึกเป็น "รอการอนุมัติ" ไม่ใช่ "สมาชิก"

เปิด "Start observation" เพื่อบันทึกคำตอบที่เข้ามาแบบเรียลไทม์ การดำเนินการบนแผงควบคุมยังคงทำงานได้แม้ การสังเกตการณ์จะถูกหยุดชั่วคราว แต่ในขณะนั้นจะรับประกันได้เพียงคำตอบโดยตรงเท่านั้นที่จะถูกบันทึก แหล่งข้อมูลที่เพิ่มใหม่จะใช้การรับข้อมูลตามโปรไฟล์/ประวัติที่ตั้งค่าไว้เมื่อการสังเกตการณ์กำลังทำงาน เมื่อแหล่งข้อมูลถูกหยุดชั่วคราว ให้เปิดใช้งานมันในส่วน "Sources" ก่อนที่จะส่งข้อความหรือกดปุ่มของมัน

interaction.preview, interaction.requested และ interaction.result เป็นเหตุการณ์ในบันทึก ที่ลงนามแล้วซึ่งรวมอยู่ในการส่งออกหลักฐาน คำขอระบุบัญชี ข้อความ/ปุ่ม หรือบันทึกตัวอย่าง และระบุว่ากำลังดำเนินการสังเกตการณ์อยู่หรือไม่ ใบตอบรับแยกแยะระหว่างความสำเร็จ การปฏิเสธ การรอการอนุมัติ และผลลัพธ์ที่ไม่ทราบ คำขอที่ถูกขัดจังหวะอาจได้ส่งถึง Telegram แล้ว: ตรวจสอบแชทก่อนเริ่มดำเนินการใหม่ การใช้ ID คำขอซ้ำจะเรียกคืน ใบยืนยันที่บันทึกไว้โดยไม่ต้องทำซ้ำการดำเนินการ รวมถึงหลังการรีสตาร์ท แผงควบคุมจะเก็บรักษา ID ไว้หลังจากได้รับคำตอบที่ไม่ชัดเจนสำหรับการดำเนินการเดียวกันในเซสชันหน้าปัจจุบัน นอกจากนี้ยังเก็บรักษา ID นั้นไว้เมื่อการรีเฟรชหน้าล้มเหลวหลังการดำเนินการสำเร็จ: ใบยืนยัน จะยังคงแสดงอยู่ และการคลิกอีกครั้งจะเรียกคืนมัน RPC แบบ callback และ join มีโอกาส ลองเพียงครั้งเดียว; ส่วนการอ่านที่สามารถลองใหม่ได้จะรักษานโยบายการลองใหม่ที่ตั้งค่าไว้ การเปลี่ยนแชททันที จะลบร่างข้อความและเป้าหมายการตอบกลับ และปิดการส่งข้อความจนกว่าการสนทนาใหม่จะโหลดเสร็จ

มินิ-ไคลเอนต์นี้จัดการปุ่มข้อความและปุ่ม callback ได้ แอปเว็บ คำขอเข้าสู่ระบบ/หมายเลขโทรศัพท์/ตำแหน่ง การชำระเงิน การค้นหาในข้อความ และไฟล์แนบ ยังคงต้องใช้ไคลเอนต์ Telegram; ข้อมูลเมตาดาต้าของปุ่มที่บันทึกไว้ ยังคงแสดงอยู่ องค์ประกอบการควบคุมใหม่ใช้ข้อความภาษาอังกฤษ

ตรวจสอบระดับใหม่#

การตรวจสอบซ้ำจะขอข้อมูลจาก Telegram อีกครั้งสำหรับข้อความที่พลาดไป การแก้ไข และข้อความที่ Telegram ไม่ส่งกลับมาอีก แหล่งข้อมูลที่มีเครื่องหมายดาวเป็นแหล่งข้อมูลลำดับความสำคัญ ซึ่งจะถูกตรวจสอบซ้ำทุก 15 นาทีตามค่าเริ่มต้น; แหล่งข้อมูลอื่น ๆ ทั้งหมดจะถูกตรวจสอบซ้ำทุก 6 ชั่วโมง การสนทนาที่เลือกไว้จะเริ่มต้นเป็นแหล่งข้อมูลลำดับความสำคัญ ส่วนการสนทนาที่เพิ่มผ่าน โฟลเดอร์หรือบัญชีทั้งหมดจะเริ่มต้นเป็นแหล่งข้อมูลปกติ ตรวจสอบซ้ำได้สูงสุด 30 แหล่งต่อรอบ และ ส่วนที่เหลือจะรอจนถึงนาทีถัดไป; หลังจากเชื่อมต่อใหม่ แหล่งข้อมูลลำดับความสำคัญจะได้รับการตรวจสอบก่อน ทั้ง สองช่วงเวลาถูกตั้งค่าไว้ที่ แหล่งข้อมูล → การตั้งค่าการบันทึก → ตรวจสอบซ้ำ (0 จะปิดระดับนั้น) และถูก บันทึกเป็น recheck.changed

ข้อความที่พลาดจะถูกดึงขึ้นจากจุดที่รอบการตรวจสอบครั้งก่อนหยุดไว้ โดยจำนวนสูงสุดคือตามการตั้งค่าใน Parameters → new messages per recheck (ค่าเริ่มต้นคือ 1,000) ต่อรอบ หลังจากหยุดไปนาน การตรวจสอบซ้ำจึงจะเติมเต็มช่องว่างทั้งหมด แม้ข้อความสดที่ใหม่กว่าช่วงช่องว่างนั้นจะถูกบันทึก ไว้ก่อนก็ตาม การสนทนาที่ยังกำลังตามทันจะถูกตรวจสอบซ้ำอีกครั้งในนาทีถัดไป แทนที่จะ รอจนถึงช่วงเวลาที่กำหนด; recheck.completed จะแสดง continues_after จนกว่าจะเสร็จสิ้น

การเปรียบเทียบรวมถึงข้อความของข้อความ, เอนทิตี, แป้นพิมพ์ (รวมถึงการลบ), และ เนื้อหา/ข้อมูลระบุตัวตนของไฟล์แนบ การเปลี่ยนแปลงแฮชการเข้าถึงไฟล์หรือการอ้างอิงไฟล์เพียงอย่างเดียวไม่ถือเป็นการ แก้ไข เช่นเดียวกับข้อมูลที่ Telegram เติมเข้าไปเอง: การโหลดตัวอย่างลิงก์, การดูสตอรี, สื่อแบบชำระเงิน ที่บัญชีนี้ปลดล็อก, หรือใบเสร็จรับเงินใบแจ้งหนี้ แต่ละเวอร์ชันที่บันทึกไว้ใน Chats จะเชื่อมโยงไปยังบันทึกสมุดบันทึกฉบับเต็ม รวมถึงเมตาดาต้าของสื่อ

ประวัติข้อความและที่มา#

สมมติว่าผู้เก็บข้อมูลสังเกตเห็นข้อความ “ประชุมเวลา 10:00” ต่อมาเห็นข้อความ “ประชุมเวลา 11:00” และจากนั้นได้รับแจ้งการลบข้อความ ระบบจะบันทึกการสังเกตสามรายการที่แยกกัน โดย ข้อความต้นฉบับยังคงอยู่ การแก้ไขถือเป็นเวอร์ชันที่แยกต่างหาก และแจ้งเตือนบันทึกว่า มีการสังเกตเห็นการลบข้อความ

หากการเก็บข้อมูลเริ่มขึ้นหลังจากเวอร์ชันแรกหายไป ข้อความดังกล่าวจะไม่สามารถเข้าถึงได้ หากมีการแก้ไขหลายครั้งในขณะที่ระบบอยู่ในโหมดออฟไลน์ จะสามารถบันทึกได้เฉพาะ เวอร์ชันที่ตรวจพบในภายหลังเท่านั้น การแจ้งเตือนการลบไม่สามารถกู้คืนเนื้อหาที่ยังไม่เคยถูกบันทึกไว้ได้

ผู้ส่งข้อความไม่จำเป็นต้องเป็นผู้แก้ไขโดยอัตโนมัติ Telegram โดยทั่วไปไม่ ให้ข้อมูลเกี่ยวกับบุคคลที่ลบข้อความหรือเวลาที่ลบข้อความอย่างแม่นยำ ผู้กระทำที่ไม่ทราบตัวตน จะยังคงไม่ทราบตัวตน ภาพถ่ายหน้าจอของปฏิกิริยาและการอัปเดตของผู้เข้าร่วมมีเพียงจำนวน และข้อมูลประจำตัวที่ Telegram แสดงให้บัญชีนั้นเห็นเท่านั้น

หมายเลขลำดับแสดงลำดับการสังเกตการณ์ เวลา UTC ของผู้เก็บข้อมูลคือ เวลาท้องถิ่นของอุปกรณ์นั้น ส่วนเวลา UTC ของแหล่งข้อมูล Telegram จะถูกเก็บไว้แยกต่างหากหากมีข้อมูลดังกล่าว ทั้งสองอย่างนี้ไม่ใช่เวลาที่เชื่อถือได้อย่างอิสระ

ภาพถ่ายประวัติ#

การส่งคำขอแบบสแนปช็อตจะดึงข้อความล่าสุดที่มองเห็นได้จากแหล่งข้อมูลที่เปิดใช้งานอยู่ โดยแต่ละคำขอสามารถดึงได้สูงสุด 500 ข้อความ ผลลัพธ์จะถูกระบุว่าเป็น "การสังเกตประวัติ" ซึ่งอาจทับซ้อน กับการบันทึกแบบเรียลไทม์ และการสังเกตซ้ำจะถูกเก็บเป็นบันทึกแยกต่างหาก

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

การจัดการไฟล์แนบ#

การดาวน์โหลดไฟล์แนบถูกเปิดไว้โดยค่าเริ่มต้น และจะหยุดชั่วคราวเมื่อพื้นที่ดิสก์ว่างเหลือน้อยกว่า 1 GiB ผู้รวบรวมจะบันทึก การสังเกตข้อความและงานดาวน์โหลดพร้อมกัน งานนี้รักษาตัวระบุสื่อต้นฉบับ และนโยบายขนาดไว้ ดังนั้นไฟล์แนบที่ได้รับการแก้ไขในภายหลังจะไม่ถูกแทนที่โดยอัตโนมัติ

การดาวน์โหลดจะดำเนินการหลังจากจับข้อความได้ การดาวน์โหลดที่เสร็จสิ้นจะสร้างบันทึกmedia.saved พร้อมด้วย SHA-256 และจำนวนไบต์ งานที่ถูกข้ามไป ล้มเหลว ลองใหม่ และถูกขัดจังหวะ จะมีผลลัพธ์ที่แยกกัน งานที่อยู่ในคิวไม่ใช่หลักฐานว่าไฟล์นั้นได้รับการเก็บรักษาไว้ ไฟล์ที่เสร็จสมบูรณ์ต้องตรงกับจำนวนไบต์ในตัวระบุไฟล์แนบต้นฉบับที่สังเกตได้ การตอบกลับที่สั้นหรือยาวกว่าที่คาดไว้จะไม่ถูกบันทึกเป็นสื่อที่ได้รับการเก็บรักษา

มีการกำหนดขีดจำกัดตามประเภท: รูปภาพ, วิดีโอ, GIF และภาพเคลื่อนไหว, ข้อความวิดีโอแบบวงกลม, ข้อความเสียง, เพลงและเสียง, สติกเกอร์ และไฟล์ แต่ละประเภทสามารถปิดได้และมี ขีดจำกัดขนาดของตัวเองตั้งแต่ 1 ถึง 2,000 MiB; พื้นที่ทำงานใหม่เริ่มต้นด้วย 20 MiB สำหรับรูปภาพ, 100 MiB สำหรับวิดีโอ, 50 MiB สำหรับไฟล์, เสียง และวิดีโอแบบวงกลม, 20 MiB สำหรับข้อความเสียงและ GIFs และ 5 MiB สำหรับสติกเกอร์ การตั้งค่าขนาดไฟล์สูงสุดจะกำหนดทุกประเภทพร้อมกัน นโยบายที่บันทึกไว้ก่อน การกำหนดขีดจำกัดตามประเภทจะยังคงใช้ขีดจำกัดเดียวสำหรับทุกประเภท ประเภทที่ถูกปิดจะสร้าง บันทึก media.skipped; ไฟล์ที่มีขนาดไม่ทราบหรือเกินขนาดจะไม่ถูกดาวน์โหลด ไฟล์ขนาดใหญ่จะได้รับการ ความเร็วการดาวน์โหลดอย่างน้อย 256 KiB/s งานจะยังคงอยู่หลังการรีสตาร์ท แต่การอ้างอิงที่หมดอายุ การสูญเสีย สิทธิ์การเข้าถึง หรือไฟล์ที่ถูกลบ อาจยังคงทำให้ไม่สามารถกู้คืนได้ งานที่มีอยู่จะรักษานโยบายที่บันทึก ไว้พร้อมกับงานนั้น

หยุดชั่วคราว, ล็อก, ตัดการเชื่อมต่อ และเริ่มต้นใหม่#

การดำเนินการหรือเงื่อนไข ผลลัพธ์
เปลี่ยนพื้นที่ทำงาน เปลี่ยนมุมมองของแผง; เครื่องมือเก็บข้อมูลอื่น ๆ จะรักษาสถานะเดิมไว้
ล็อกแผงควบคุมหรือปิดแท็บ ทำให้เซิร์ฟเวอร์และระบบการสังเกตการณ์ยังคงทำงานต่อไป
หยุดการสังเกต หยุดการทำงานของตัวเก็บรวบรวมและรักษาไฟล์แนบที่อยู่ในคิว
ปิดใช้งานแหล่งข้อมูล หยุดการบันทึกข้อมูลในอนาคตตามขอบเขตที่กำหนด; งานสื่อที่อยู่ในคิวจะรอจนกว่าเครื่องมือนี้ถูกปิดใช้งาน
ลบแหล่งข้อมูล ระบบจะลืมแหล่งข้อมูลนี้และลบโปรไฟล์ผู้ใช้ที่เกี่ยวข้อง; ข้อมูลที่บันทึกไว้แล้วจะยังคงอยู่ในบันทึกแบบเพิ่มข้อมูลเท่านั้น (append-only journal) ส่วนไฟล์แนบที่ยังรอการบันทึกจะถูกลงบันทึกว่าล้มเหลว (source_removed) ในโหมดโฟลเดอร์และโหมดบัญชีทั้งหมด ข้อมูลเหล่านี้ก็จะถูกยกเว้นเช่นกัน
เปลี่ยนเส้นทางเชื่อมต่อ จำเป็นต้องหยุดชั่วคราว ปิดแอปพลิเคชันเก่า และยกเลิกการเข้าสู่ระบบที่ยังไม่เสร็จสิ้น
หยุดกระบวนการ Python หยุดการทำงานของทุกพื้นที่ทำงาน; ไม่มีการบันทึกข้อมูลใดๆ เมื่อระบบอยู่ในสถานะออฟไลน์
เริ่มต้นใหม่หลังการสังเกตการณ์อย่างจริงจัง ระบบจะพยายามต่อจากขอบเขตที่บันทึกไว้โดยใช้เซสชันที่บันทึกไว้ การหยุดชั่วคราวแบบแมนนวลจะยกเลิกความตั้งใจดังกล่าว

เครื่องมือเก็บข้อมูลจะบันทึกการตัดการเชื่อมต่อที่ตรวจพบ การลองใหม่ ข้อผิดพลาด การเริ่ม/หยุด และ สัญญาณชีพจร การตรวจสอบการเชื่อมต่อแบบเป็นช่วงอาจพลาดการหยุดชะงักสั้นๆ ได้ หลังการรีสตาร์ท ระบบจะขออัปเดตที่พลาดไปจากตำแหน่งอัปเดตที่บันทึกไว้ และ ตรวจสอบการสนทนาที่สังเกตเห็นอีกครั้งเป็นระยะ ๆ; ดูรูปแบบหลักฐาน สแนปช็อตให้บริบท; แต่มันไม่ได้พิสูจน์ว่าช่องว่างนั้นได้รับการแก้ไขแล้ว

การแยกบัญชีและการตรวจสอบ#

แต่ละพื้นที่ทำงานมีบันทึกการตรวจสอบ (journal) การอนุญาต (authorization) กุญแจการลงนาม (signing key) นโยบาย (policy) และคิว (queue) ของตัวเอง มีเพียงไคลเอนต์ที่ใช้งานอยู่เท่านั้นที่สามารถส่งข้อมูลการสังเกตแบบเรียลไทม์ได้ ไคลเอนต์ที่ถูกปฏิเสธ (rejected) อยู่ระหว่างการพิจารณา (pending) ถูกแทนที่ (superseded) และไคลเอนต์ที่ทดสอบการเชื่อมต่อ (connection-test) ไม่สามารถเขียนข้อมูลอัปเดตแบบเรียลไทม์ลงในบันทึกการตรวจสอบได้ บัญชีต่าง ๆ สามารถสังเกตกลุ่มเดียวกันได้ แต่บันทึกการตรวจสอบของแต่ละบัญชีจะยังคงแยกกัน

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

Verify journal ตรวจสอบลำดับเหตุการณ์และลายเซ็นผ่าน ขอบเขตที่แสดงไว้ ผลลัพธ์จะถูกล้างเมื่อพื้นที่ทำงานเปลี่ยนแปลง และแผงควบคุมจะระบุ บันทึกใหม่ที่เพิ่มเข้ามาหลังการตรวจสอบ การส่งออกเป็น ZIP ยังตรวจสอบสื่อที่เก็บรวบรวมไว้ด้วย

ลายเซ็นที่ถูกต้องจะยืนยันความสมบูรณ์ของข้อมูลเมื่อเทียบกับกุญแจที่เชื่อถือได้ ไม่ใช่ แหล่งที่มาของ Telegram หรือความถูกต้องของเนื้อหา เก็บรักษาลายนิ้วมือและจุดตรวจสอบอย่างอิสระ ดู แบบจำลองหลักฐาน การดำเนินงานประจำวัน และ ขั้นตอนการรับข้อมูลแบบเรียลไทม์ เพื่อทราบข้อกำหนดด้านความเชื่อถือและการส่งมอบ