ประเภทแหล่งข้อมูล

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

อะไรคือ type?

type คือตัวระบุแหล่งข้อมูลมาตรฐานในเพย์โหลด Social Stream ขาเข้า โอเวอร์เลย์ ตัวกรอง URL, API และ Event Flow ใช้แยกแพลตฟอร์มและรูปแบบแหล่งข้อมูล

{
  "type": "youtubeshorts",
  "chatname": "Ava",
  "chatmessage": "Hello from Shorts"
}
ชื่อ ความหมาย อย่าสับสนกับ
type แหล่งของเพย์โหลดขาเข้า เช่น youtube หรือ instagramlive. ป้ายที่แสดง โหมดการเชื่อมต่อ หรือชื่อเหตุการณ์
event สิ่งที่เกิดขึ้น เช่น superchat, gift, หรือ viewer_update. แพลตฟอร์มที่สร้างเหตุการณ์
sourceName ชื่อช่อง ห้อง หรือชื่อแหล่งข้อมูลที่แสดงแบบไม่บังคับ ค่าคงที่ที่ทริกเกอร์ From Source ใช้
tid รหัสแท็บต้นทางหรือหน้าต่างแหล่งข้อมูลเดสก์ท็อป ใช้สำหรับตอบกลับและยกเว้นต้นทาง ประเภทแพลตฟอร์ม
แอปเดสก์ท็อป target หมวดหมู่ที่บันทึกไว้เพื่อเลือก URL โหมด และสคริปต์เก็บข้อมูล การรับประกันว่าเพย์โหลดทุกอันที่ส่งมีข้อความค่าเดียวกัน

สำคัญ: โหนดของ Event Flow จากแหล่งข้อมูล (From Source) เปรียบเทียบค่าที่ตั้งไว้โดยตรงกับ message.type ใช้ค่าเพย์โหลดตัวพิมพ์เล็กให้ตรงทุกตัว

ประเภทที่พบบ่อยและชวนสับสน

ชื่อในการเก็บข้อมูลหรือ UI ประเภทเพย์โหลด เหตุใดจึงอาจชวนแปลกใจ
แชตสด YouTube youtube DOM, การดึง API เป็นระยะ และ WebSocket/สตรีมมิงอธิบายวิธีรับส่ง ไม่ใช่คนละประเภท
แชตสด YouTube Shorts youtubeshorts เป็นคนละค่าในตัวกรองขาเข้าและปลายทางส่งต่อ Event Flow ส่วนตัวควบคุม YouTube ร่วมยังมองทั้งสองแบบเป็นกลุ่มเดียวกันเมื่อจำเป็น
Instagram Live / InstaFeed live instagramlive ความคิดเห็นโพสต์และฟีด Instagram ใช้ instagram.
TikFinity tiktok TikFinity เป็นตัวเชื่อมต่อ ส่วนแพลตฟอร์มที่ปรับเป็นมาตรฐานยังเป็น TikTok
X x หรือแบบเก่า twitter พร้อมตัวเลือกแสดงแบรนด์ Twitter ตัวกรองเดิมอาจตั้งใจเก็บชื่อเก่าไว้
ตัวเลือกภูมิภาคของ Bilibili bilibili target และสคริปต์เดสก์ท็อปอาจใช้ชื่อ bilibilicom หรือ bilibilitv ขณะที่เพย์โหลดถูกปรับเป็นรูปแบบมาตรฐาน
เหตุการณ์ระบบ OBS obs ไม่ใช่แหล่งแชต แต่เข้า Event Flow ด้วยเหตุการณ์ เช่น scene_changed.

ใช้ เอกสารอ้างอิงอีเวนต์ สำหรับข้อกำหนดฟิลด์ และ เว็บไซต์ที่รองรับ สำหรับชื่อการตั้งค่าแพลตฟอร์มที่ผู้ใช้เห็น

YouTube Shorts และ Event Flow

การจับคู่ขาเข้าต้องตรงทุกตัว: ใช้ youtubeshorts ในทริกเกอร์ From Source สำหรับข้อความ Shorts และ youtube สำหรับแชตสด YouTube ปกติ

การจับคู่ขาออกต้องตรงทุกตัวเช่นกัน: Relay Chat ถือเป็นคนละปลายทาง

  • ปลายทาง youtube ส่งเฉพาะหน้าต่างแชตสด YouTube ปกติ
  • ปลายทาง youtubeshorts ส่งเฉพาะหน้าต่างแชตสด YouTube Shorts
  • หากต้องการส่งถึงทั้งสอง ให้เพิ่มหนึ่งแอ็กชันต่อปลายทาง หรือส่งต่อทุกแพลตฟอร์มยกเว้นต้นทาง

ตัวควบคุม YouTube แบบรวมอื่นอาจตั้งใจจัดทั้งสองประเภทเป็นแพลตฟอร์มกลุ่มเดียวกัน โดยไม่เปลี่ยนการจับคู่ Event Flow แบบตรงทุกตัวด้านบน

แก้ปัญหารุ่นเก่า

รุ่นเก่ารวมปลายทางส่งต่อทั้งสองแบบ แอ็กชันสองรายการจึงอาจส่งซ้ำสองครั้งไปทุกหน้าต่าง YouTube หากเกิดเช่นนี้ให้อัปเดต Social Stream Ninja Reflection Filter ป้องกันการส่งต่อวนกลับ แต่ไม่แก้การจับคู่ปลายทางทับซ้อนในรุ่นเก่าเหล่านั้น

ตัวแก้ไข Event Flow ของ Social Stream Ninja ที่มีโหนดทริกเกอร์ ตัวกรอง และแอ็กชันเชื่อมกัน
From Source อ่านประเภทเพย์โหลดขาเข้า ส่วน Relay Chat เลือกหน้าต่างแหล่งข้อมูลขาออก

ทำต่อด้วย คู่มือ Event Flow หรือ คู่มือตั้งค่า YouTube.

Instagram Live เทียบกับความคิดเห็น Instagram

ใช้ instagramlive สำหรับแชตห้องสดที่เก็บด้วยแหล่ง Instagram Live หรือ InstaFeed live ใช้ instagram สำหรับความคิดเห็นฟีด โพสต์ หรือความคิดเห็นคงที่ที่ไม่ใช่ไลฟ์

  • โฟลว์แชตสด: From Source = instagramlive.
  • โฟลว์โพสต์/ความคิดเห็น: From Source = instagram.
  • ทั้งสองแบบ: ใช้ทริกเกอร์สองตัวป้อนเข้าแอ็กชันร่วมเดียว หรือใช้ Any Source แล้วตามด้วยตัวกรองที่ดูประเภท

แบรนด์ Instagram ที่มองเห็นไม่เพียงพอที่จะเลือกประเภท ต้องใช้บริบทเนื้อหาแยกสองแบบ

แหล่งข้อมูลทั่วไป กำหนดเอง และไม่มีชื่อ

sources/generic.js เป็นตัวสำรองเก็บ DOM ทั่วไป โดยหาแถวแชต ชื่อ ข้อความ อวาตาร์ และช่องป้อนที่พบบ่อย เริ่มด้วย generic แล้วโดยปกติจะสร้างประเภทตัวพิมพ์เล็กจากแพลตฟอร์มที่รู้จักหรือชื่อโฮสต์ของหน้า

  • ใช้เพื่อพิสูจน์ว่าเก็บแชต DOM ปกติได้ ก่อนเขียนแหล่งข้อมูลเฉพาะ
  • อย่าคาดหวังการรองรับเหตุการณ์ การดูแลแชต การลบ รายการเสมือน หรือ shadow DOM แบบปิดอย่างเชื่อถือได้
  • ประเภทที่สร้างจากชื่อโฮสต์สะดวก แต่ไม่ใช่ข้อกำหนดสาธารณะถาวร ยืนยันเพย์โหลดที่ส่งจริงก่อนสร้างตัวกรองตามค่านั้น
  • หากแหล่งข้อมูลไม่มีชื่อแพลตฟอร์มที่กำหนดไว้ ให้เลือกค่าตัวพิมพ์เล็กคงที่หนึ่งค่าเป็น type ใช้ sourceName สำหรับป้ายชื่อห้องหรือช่องที่ผู้ใช้เห็น
  • หากยังไม่มีตัวตนคงที่ generic ปลอดภัยกว่าการเปลี่ยนประเภททุกข้อความ การเชื่อมต่อภายนอกมักใช้ค่าที่เลือกไว้อย่างตั้งใจ เช่น external.

เมื่อผู้ใช้ โอเวอร์เลย์ หรือโฟลว์พึ่งพาประเภทใหม่แล้ว ให้บันทึกไว้ใน เอกสารอ้างอิงอีเวนต์ แทนการเปลี่ยนชื่อเงียบ ๆ

การแทรกสคริปต์ของแอปเดสก์ท็อป

แอปเดสก์ท็อปบันทึกค่าของแหล่งข้อมูล target เลือกหนึ่งหรือหลาย sourceFile/sourceFiles เปิดหน้าต่างแหล่งข้อมูล และแทรกสคริปต์เก็บข้อมูลร่วมจากโปรเจ็กต์นี้ บริดจ์ความเข้ากันได้กับ Chrome runtime ส่งข้อความที่เก็บและคำสั่งตอบกลับระหว่างหน้ากับแอป

  • target และชื่อไฟล์สคริปต์ไม่จำเป็นต้องตรงกับประเภทเพย์โหลด ตัวอย่าง youtubeshorts target โหลด sources/youtube.js ซึ่งส่งค่า youtube หรือ youtubeshorts จากบริบทหน้าเว็บ
  • target ของ Bilibili ก็จับคู่กับสคริปต์ร่วม/ภูมิภาคขณะส่งค่า bilibili.
  • sources/inject/*.js เป็นไฟล์ตัวช่วยในบริบทหน้าเว็บสำหรับซ็อกเก็ตหรือตัวแปรหน้า ตัวครอบแหล่งข้อมูลยังรับผิดชอบเพย์โหลดมาตรฐาน
  • เมื่อแทรกหลายสคริปต์ อย่าให้ตัวช่วยทุกตัวอ้างสิทธิ์ปลายทางขาออกเดียวกัน ตัวตนการเก็บข้อมูลและความสามารถตอบกลับเป็นคนละเรื่อง
  • การเปลี่ยนการเก็บข้อมูลต้นทางควรอยู่ในไฟล์ของที่เก็บโค้ดนี้ sources/ แอปเดสก์ท็อปนำไฟล์เหล่านั้นไปใช้ สำเนาสำรองที่แพ็กมาด้วยไม่ใช่แหล่งข้อมูลหลัก
รายการแหล่งข้อมูลในแอป Social Stream Ninja เดสก์ท็อปที่แสดงโหมดเชื่อมต่อ
แต่ละแหล่งข้อมูลเดสก์ท็อปเก็บ target, URL, โหมดเชื่อมต่อ และสคริปต์เก็บข้อมูลของตัวเอง

ผู้ดูแลไล่ดูการตั้งค่าได้ในส่วนของแอปเดสก์ท็อป index.html การสร้างหน้าต่างแหล่งข้อมูล แล้ว main.js และ preload.js สำหรับการแทรกสคริปต์และทำบริดจ์

ตอบกลับและส่งต่อไปยังแหล่งข้อมูล

ตัวตนขาเข้าและความสามารถขาออกเกี่ยวข้องกัน แต่ไม่ใช่ข้อกำหนดเดียวกัน

การดำเนินการ วิธีเลือก ปัญหาที่พบบ่อย
ตอบกลับต้นทาง ใช้ tid เพื่อระบุแท็บ/หน้าต่างต้นทางให้ตรง ไม่มี tid หรือโหมดเก็บข้อมูลนั้นส่งแชตไม่ได้
ส่งต่อไปแพลตฟอร์ม ถามแหล่งข้อมูลที่เปิดอยู่ว่ารองรับปลายทางขาออกนั้นหรือไม่ ไม่มีหน้าต่างแหล่งข้อมูลที่เปิดและตรงกับแบบที่เลือก หรือแหล่งข้อมูลส่งแชตไม่ได้
ส่งต่อไปทั้งหมด ยกเว้นต้นทาง ส่งไปยังแหล่งข้อมูลที่กำหนดเส้นทางได้ โดยยกเว้นต้นทาง tid. แหล่งข้อมูลไม่รับการป้อนอัตโนมัติ หรือข้อความสะท้อนถูกเก็บกลับมา
  • ค่าของสคริปต์แหล่งข้อมูล getSource เป็นคำตอบที่ส่งสัญญาณว่ากำหนดเส้นทางขาออกได้ ตัวควบคุม YouTube ร่วมอาจรวมทั้งสองแบบ ส่วน Relay Chat เพิ่มบริบท URL Shorts ที่ตรงสำหรับจับคู่ปลายทาง
  • การเก็บข้อมูลทั่วไปค้นหาและโฟกัสช่องป้อนที่น่าจะใช่ได้ แต่ไม่รับประกันว่าเว็บไซต์จะยอมรับการส่งอัตโนมัติ
  • โหมด API/WebSocket อาจส่งผ่าน API ของแพลตฟอร์มแทนการพิมพ์ลงหน้าที่มองเห็น
  • ในแอปเดสก์ท็อป บอตตอบอย่างเดียว (ไม่เก็บข้อมูล) คงแหล่งข้อมูลไว้สำหรับตอบกลับ/สถานะ ขณะที่ไม่ส่งข้อความที่เก็บปกติ
  • ทดสอบการตอบกลับกับหน้าต่างแหล่งข้อมูลเดียว ก่อนสร้างการส่งต่อหลายแพลตฟอร์ม

หาข้อมูลที่แน่นอนได้ที่ใด

เมื่อแก้ปัญหา ให้ตรวจเพย์โหลดดิบหนึ่งอันและจดค่า type, event, sourceName, และ tid โดยทั่วไปวิธีนี้จะแยกปัญหาการจับคู่ขาเข้า เส้นทางขาออก และการเก็บข้อมูลซ้ำได้