0. Định hướng Nhanh
Trình chỉnh sửa này là gì?
Trình chỉnh sửa Luồng Sự kiện là lớp "tự động hóa nâng cao" cho Chat All In One. Nó nằm trên các công tắc popup đơn giản và cho phép bạn viết kịch bản logic định tuyến riêng. Sử dụng nó khi bạn cần:
- Chuyển tiếp (Relay) chat giữa các dịch vụ có bộ lọc (ví dụ: phản chiếu Twitch sang Discord nhưng chặn các lệnh).
- Xây dựng các lệnh dựa trên lòng trung thành, trò chơi từ khóa, hoặc cổng quay số trúng thưởng với logic AND/OR/NOT.
- Kích hoạt overlay tùy chỉnh, âm thanh, cảnh OBS, hoặc webhook dựa trên dữ liệu bạn bổ sung trong luồng.
- Kết hợp nhiều nền tảng trong một quy trình tự động hóa duy nhất (Kick + Twitch + YouTube được định tuyến qua một luồng).
Hãy nghĩ về popup như là "cài đặt trước nhanh" và Luồng Sự kiện như là bộ công cụ cho các quy trình làm việc tùy chỉnh.
Khởi chạy + Cơ bản
- Mở trình chỉnh sửa Luồng Sự kiện từ menu của bảng điều khiển chính (máy tính để bàn hoặc tiện ích mở rộng).
- Mọi dự án được lưu cục bộ cho đến khi xuất ra. Sử dụng
Exportđể sao lưu hoặc chia sẻ. - Làm việc bên trong các khung vẽ gọi là flows (luồng). Mỗi luồng có thể đăng ký nhiều nền tảng cùng lúc.
Sơ lược về các Nút
- Đầu vào (Inputs) (cổng bên trái) nhận ngữ cảnh tin nhắn.
- Đầu ra (Outputs) (cổng bên phải) phát ra cùng ngữ cảnh đó cộng với bất kỳ chỉnh sửa nào.
- Các nút logic có thể phát ra cả kênh
truevà một kênhfalsetùy chọn.
Cấu trúc Tải trọng (Payload)
Mỗi tin nhắn mang một đối tượng JSON. Các khóa bắt buộc tuân theo docs/event-reference.html (nền tảng, loại, tên chat, nội dung chat, v.v.). Đính kèm dữ liệu tùy chỉnh dưới meta.
Overlay Hành động Luồng (Đầu ra Hành động)
Các nút như Phát Đoạn Âm thanh, Hiển thị Overlay Phương tiện, và các điều khiển OBS cần một bề mặt hiển thị. Bề mặt đó là trang overlay Hành động Luồng được phục vụ từ actions.html. Hãy giữ nó chạy trong phần mềm phát sóng của bạn (OBS/Streamer.bot browser docks/v.v.) để các hành động Luồng Sự kiện có nơi để xuất hiện.
- Mở popup chính của Chat All In One (cửa sổ tải từ popup.html hoặc biểu tượng tiện ích).
- Cuộn đến thẻ "Hành động Luồng" (Flow Actions). Sử dụng nút [sao chép liên kết] hoặc nhấp vào URL bên trong thẻ.
- Liên kết trông giống như
https://chat.khanhhy.vn/actions.html?session=YOURSESSION. Dán nó vào OBS Browser Source (gợi ý 1920×1080) hoặc mở trong bất kỳ trình duyệt overlay nào.
Sau khi tải, overlay đó có thể:
- Hiển thị phương tiện Tenor/GIPHY, văn bản, và pháo giấy được kích hoạt bởi các luồng của bạn.
- Phát âm thanh (TTS, đoạn âm thanh) cục bộ để người xem nghe thấy.
- Giao tiếp với OBS qua các cài đặt WebSocket nằm trong phần Hành động Luồng trong popup (chuyển cảnh, bật tắt nguồn, replay buffer, v.v.).
1. Cái gì Di chuyển Qua một Nút?
Thời gian chạy Luồng Sự kiện chuyển hai thứ qua mỗi dây:
- Tải trọng (Payload) – đối tượng dữ liệu sự kiện hoặc tin nhắn.
- Tín hiệu cổng (Gate signal) – một bit true/false báo cho nút tiếp theo biết có chạy hay không.
false trên một nút Điều kiện). Điều đó giúp dễ dàng xây dựng logic dự phòng mà không cần nhân đôi toàn bộ luồng.
Kỳ vọng Đầu vào
- Nguồn Sự kiện (Tin nhắn Twitch, Bộ đếm thời gian, Kích hoạt Thủ công, v.v.) bỏ qua đầu vào ngược dòng—chúng tạo ra tải trọng riêng và luôn phát
truetrừ khi chính nút đó bị lỗi. - Nút Biến đổi & Logic đọc tải trọng và có thể viết lại các trường, đặt trạng thái, hoặc lật tín hiệu cổng sang
false. - Nút Hành động chỉ kích hoạt khi cổng vẫn là
true. Chúng vẫn có thể xuất ra một tải trọng đã cập nhật nếu bạn muốn tiếp tục chuỗi hành động.
Mô hình Đầu ra
Đầu ra Đơn
Hầu hết các nút lộ ra một đầu ra. Bất cứ thứ gì đi vào (tải trọng + cổng) sẽ đi ra không đổi trừ khi nút chỉnh sửa nó.
Đầu ra True/False
Các nút Điều kiện, So sánh, Regex, và Logic phát ra hai cổng. True tiếp tục qua cổng xanh lá; false có sẵn trên cổng xám/đỏ.
Thông qua (Pass-Through) vs. Ghi đè (Override)
Một số nút (Đặt Biến, Toán học, Thay thế Văn bản) làm biến đổi tải trọng nhưng vẫn chuyển tiếp trạng thái true/false từ đầu vào của chúng. Các nút khác (NOT, AND, OR) tự tính toán lại giá trị boolean.
2. Bảng Tra cứu Nút Logic
Các khối này trả lời các câu hỏi phổ biến nhất về "True/false nghĩa là gì?".
NOT
- Đầu vào: 1 boolean (true/false) lấy từ nút trước đó.
- Đầu ra: boolean đảo ngược cộng với tải trọng nguyên vẹn.
- Hành vi mặc định: Nếu không có gì kết nối đến đầu vào NOT, nó đánh giá là
false, nên đầu ra làtrue.
AND
- Đầu vào: hai hoặc nhiều tín hiệu boolean (A, B, ...). Bạn có thể để trống các cổng thừa.
- Đầu ra:
truechỉ khi tất cả đầu vào được kết nối đều bằngtrue. - Sử dụng AND khi nhiều điều kiện phải được thỏa mãn đồng thời ("là người đăng ký" và "tin nhắn chat chứa !raffle").
OR
- Xuất ra
truenếu bất kỳ đầu vào được kết nối nào là true. - Tuyệt vời cho các trình kích hoạt đa nền tảng: đưa các nút tin nhắn Twitch + YouTube vào một OR duy nhất, sau đó thống nhất hành động phía sau.
Không. Nhiều nút đã cung cấp sẵn các bộ lọc tất cả trong một (ví dụ "Lọc Cấp độ Người dùng" + "Chứa Văn bản"). Sử dụng AND chỉ khi các tùy chọn tích hợp không bao gồm sự kết hợp của bạn, hoặc khi bạn muốn một điểm nối logic tái sử dụng mà các nhánh khác có thể chia sẻ.
true. Hãy nối nó với thứ gì đó có ý nghĩa hoặc vô hiệu hóa nút để nó không vô tình mở chặn một luồng.
3. Ví dụ Luồng Vi mô (Micro-Flows)
A. Tự động trả lời Trừ khi Tin nhắn là một Lệnh
Ở đây nút Regex phát ra true khi dòng tin là một lệnh. Chúng ta định tuyến ổ cắm false đến câu trả lời của mình, vì vậy người chat thường nhận được sự ghi nhận trong khi các lệnh chỉ đơn giản đi qua.
B. Yêu cầu Nhiều Kiểm tra với AND
Nút AND đảm bảo chỉ các thành viên sử dụng đúng từ khóa mới chuyển tiếp đến Discord. Cả hai nhánh gửi kết quả boolean của chúng đến nút AND; tải trọng từ nhánh đầu tiên tiếp tục đi xuống.
C. Nút NOT để Chặn Cảnh báo Lặp lại
Kiểm tra Trạng thái xuất ra true khi cảnh báo bị tắt tiếng. Bằng cách đảo ngược kết quả đó, nút NOT đảm bảo chúng ta chỉ phát ăn mừng khi cờ là false.
4. Ngăn chặn Tiếng Vọng, Vòng lặp và Phản hồi Chuyển tiếp
Chuyển tiếp (Relay) chat giữa các bề mặt rất mạnh mẽ nhưng có thể tạo tiếng vọng vô tận nếu bạn nghe đầu ra của chính mình. Hãy tuân thủ các biện pháp bảo vệ sau:
Khi bạn sử dụng nút hành động Chuyển tiếp Chat, hãy bật bộ lọc Không Phản chiếu (đôi khi được dán nhãn là Không Tiếng Vọng). Cờ đó đánh dấu các tin nhắn gửi đi để bộ chuyển tiếp bỏ qua bất cứ thứ gì nó đã tiêm vào trước đó. Nếu không có nó, mỗi dòng được chuyển tiếp sẽ nhập lại vào luồng và kích hoạt các chuyển tiếp mới.
- Gắn thẻ tin nhắn chuyển tiếp. Đặt
meta.source = "relay"trước khi gửi, sau đó thêm một cổng "Bỏ qua nếu meta.source = relay" gần các nút nhập của bạn. - Sử dụng nút Debounce hoặc Cooldown cho các cảnh báo chỉ nên kích hoạt một lần mỗi X giây.
- Cố ý phá vỡ vòng lặp. Nếu hai nhánh nuôi nhau, hãy thêm một nút logic kiểm tra biến trạng thái ("currentlyRelaying") để luồng thoát sớm khi cờ được đặt.
5. Đầu vào, Đầu ra, và Câu hỏi Thực tế
Cái gì đi vào một nút?
- Toàn bộ tải trọng tin nhắn.
- Bit cổng (
true/false). - Ngữ cảnh tùy chọn (biến trạng thái, bộ đếm thời gian) mà nút yêu cầu cụ thể.
Cái gì rời khỏi một nút?
- Tải trọng tương tự trừ khi nút chỉnh sửa nó.
- Một bit cổng được tính toán lại (nút logic) hoặc bit thông qua (hành động).
- Các tác dụng phụ (gửi chat, tặng điểm) xảy ra đồng thời nhưng không thay đổi tải trọng.
Khi nào nên rẽ nhánh?
Bất cứ khi nào bạn muốn phản ứng khác nhau với true so với false. Kéo một dây từ đầu ra có màu bạn cần (xanh lá = true, xám/đỏ = false) đến nút tiếp theo.
false, luồng đơn giản kết thúc ở đó. Điều đó hoàn hảo cho các bộ lọc ("chặn mọi thứ không qua kiểm tra") nhưng đừng quên kết nối đường dẫn false nếu bạn cần dự phòng.
Hỏi & Đáp Thường gặp
- Tôi có phải dùng AND cho mỗi cặp bộ lọc không? Không. Nhiều nút bao gồm nhiều kiểm tra (ví dụ, bộ lọc Tin nhắn cơ bản hỗ trợ từ khóa + vai trò). Sử dụng AND chỉ cho các kết hợp nâng cao hoặc khi hợp nhất tín hiệu từ các nút khác nhau.
- Làm thế nào giá trị true/false đến được nút NOT? Bất kỳ nút nào có đầu ra xanh lá phát ra
truetheo mặc định. Khi một điều kiện thất bại, nó phát rafalse. Kết nối dây đó vào NOT để đảo ngược kết quả. - Một nút có thể phát ra tải trọng ngay cả khi nó trả về false không? Có. Tải trọng vẫn di chuyển qua đầu ra false; tùy thuộc vào bạn quyết định nhánh đó sẽ đi đâu.
6. Danh sách kiểm tra Thực hành Tốt nhất
- Đặt tên & tô màu các nút của bạn để bạn trong tương lai biết nhánh nào là nhánh nào.
- Kiểm tra với trình mô phỏng tích hợp (Gửi Sự kiện Thử nghiệm) trước khi đẩy luồng trực tiếp.
- Nhóm logic gần nguồn. Lọc càng sớm càng tốt để tránh xử lý thừa ở phía sau.
- Lưu trữ các lần lặp lại trong nút Trạng thái. Sử dụng bộ đếm, công tắc bật tắt, và dấu thời gian để tránh cảnh báo kép.
- Tài liệu hóa các trường meta. Khi bạn thêm các khóa
metatùy chỉnh, hãy ghi chú lại để overlay và máy khách từ xa giữ được tính nhất quán.
7. Khám phá Thêm
Sẵn sàng cho chiều sâu hơn?
- Sử dụng Nút Trạng thái (bộ đếm, bật tắt, bộ đếm thời gian) để theo dõi ngữ cảnh giữa các sự kiện.
- Kết hợp Biến + Logic để xây dựng hệ thống hàng đợi, xổ số, hoặc công cụ chấm điểm.
- Móc nối vào hệ thống Điểm & Phần thưởng để người xem có thể cố ý kích hoạt luồng.
Hướng dẫn này được thiết kế độc lập—sao chép nó cục bộ, điều chỉnh cho nhóm của bạn, và tiếp tục thử nghiệm bên trong trình chỉnh sửa.