ในหน้านี้
อะไรคือ 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 หรือ คู่มือตั้งค่า 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 และชื่อไฟล์สคริปต์ไม่จำเป็นต้องตรงกับประเภทเพย์โหลด ตัวอย่าง
youtubeshortstarget โหลดsources/youtube.jsซึ่งส่งค่าyoutubeหรือyoutubeshortsจากบริบทหน้าเว็บ - target ของ Bilibili ก็จับคู่กับสคริปต์ร่วม/ภูมิภาคขณะส่งค่า
bilibili. sources/inject/*.jsเป็นไฟล์ตัวช่วยในบริบทหน้าเว็บสำหรับซ็อกเก็ตหรือตัวแปรหน้า ตัวครอบแหล่งข้อมูลยังรับผิดชอบเพย์โหลดมาตรฐาน- เมื่อแทรกหลายสคริปต์ อย่าให้ตัวช่วยทุกตัวอ้างสิทธิ์ปลายทางขาออกเดียวกัน ตัวตนการเก็บข้อมูลและความสามารถตอบกลับเป็นคนละเรื่อง
- การเปลี่ยนการเก็บข้อมูลต้นทางควรอยู่ในไฟล์ของที่เก็บโค้ดนี้
sources/แอปเดสก์ท็อปนำไฟล์เหล่านั้นไปใช้ สำเนาสำรองที่แพ็กมาด้วยไม่ใช่แหล่งข้อมูลหลัก
ผู้ดูแลไล่ดูการตั้งค่าได้ในส่วนของแอปเดสก์ท็อป index.html การสร้างหน้าต่างแหล่งข้อมูล แล้ว main.js และ preload.js สำหรับการแทรกสคริปต์และทำบริดจ์
ตอบกลับและส่งต่อไปยังแหล่งข้อมูล
ตัวตนขาเข้าและความสามารถขาออกเกี่ยวข้องกัน แต่ไม่ใช่ข้อกำหนดเดียวกัน
| การดำเนินการ | วิธีเลือก | ปัญหาที่พบบ่อย |
|---|---|---|
| ตอบกลับต้นทาง | ใช้ tid เพื่อระบุแท็บ/หน้าต่างต้นทางให้ตรง |
ไม่มี tid หรือโหมดเก็บข้อมูลนั้นส่งแชตไม่ได้ |
| ส่งต่อไปแพลตฟอร์ม | ถามแหล่งข้อมูลที่เปิดอยู่ว่ารองรับปลายทางขาออกนั้นหรือไม่ | ไม่มีหน้าต่างแหล่งข้อมูลที่เปิดและตรงกับแบบที่เลือก หรือแหล่งข้อมูลส่งแชตไม่ได้ |
| ส่งต่อไปทั้งหมด ยกเว้นต้นทาง | ส่งไปยังแหล่งข้อมูลที่กำหนดเส้นทางได้ โดยยกเว้นต้นทาง tid. |
แหล่งข้อมูลไม่รับการป้อนอัตโนมัติ หรือข้อความสะท้อนถูกเก็บกลับมา |
- ค่าของสคริปต์แหล่งข้อมูล
getSourceเป็นคำตอบที่ส่งสัญญาณว่ากำหนดเส้นทางขาออกได้ ตัวควบคุม YouTube ร่วมอาจรวมทั้งสองแบบ ส่วน Relay Chat เพิ่มบริบท URL Shorts ที่ตรงสำหรับจับคู่ปลายทาง - การเก็บข้อมูลทั่วไปค้นหาและโฟกัสช่องป้อนที่น่าจะใช่ได้ แต่ไม่รับประกันว่าเว็บไซต์จะยอมรับการส่งอัตโนมัติ
- โหมด API/WebSocket อาจส่งผ่าน API ของแพลตฟอร์มแทนการพิมพ์ลงหน้าที่มองเห็น
- ในแอปเดสก์ท็อป บอตตอบอย่างเดียว (ไม่เก็บข้อมูล) คงแหล่งข้อมูลไว้สำหรับตอบกลับ/สถานะ ขณะที่ไม่ส่งข้อความที่เก็บปกติ
- ทดสอบการตอบกลับกับหน้าต่างแหล่งข้อมูลเดียว ก่อนสร้างการส่งต่อหลายแพลตฟอร์ม
หาข้อมูลที่แน่นอนได้ที่ใด
- เอกสารอ้างอิงอีเวนต์: ฟิลด์มาตรฐานและชื่อเหตุการณ์ของแพลตฟอร์ม
- คู่มือ Event Flow: ทริกเกอร์ แอ็กชัน เทมเพลต การจัดการข้อความสะท้อน และการทดสอบ
- โหมดแอปแยก: พฤติกรรมหน้าต่างแหล่งข้อมูลและโหมดเชื่อมต่อ
- เว็บไซต์ที่รองรับ: ชื่อแพลตฟอร์มและข้อกำหนดการตั้งค่า
- แหล่งข้อมูลทั่วไปและกำหนดเอง: การเก็บข้อมูลสำรองและภายนอก
- หน้าต่างแหล่งข้อมูลแอปเดสก์ท็อป: รายละเอียดภายในของ target สคริปต์ บริดจ์ และโหมดตอบอย่างเดียว
- เพิ่มแหล่งข้อมูล: รูปแบบแหล่งข้อมูล ตัวช่วยแทรกสคริปต์ manifest และเอกสาร
เมื่อแก้ปัญหา ให้ตรวจเพย์โหลดดิบหนึ่งอันและจดค่า type, event, sourceName, และ tid โดยทั่วไปวิธีนี้จะแยกปัญหาการจับคู่ขาเข้า เส้นทางขาออก และการเก็บข้อมูลซ้ำได้