直播事件參考
本頁記載 Social Stream Ninja 為主要平台發出的標準事件承載資料。在接入新來源、排查整合問題或統一介面標籤時,請將其作為共用的權威依據。如需更簡短、面向使用端的矩陣,請參閱 事件和提醒相容性.
本頁內容
跳至共用欄位規則、平台實作,或接近結尾的相容性說明。
重要: 事件是否可用取決於來源、權限和擷取設定。要在停駐面板或精選疊加畫面中隱藏帶事件標記的列,請加入 &hideevents 或 &hideallevents。要隱藏所選事件,請使用 &filterevents=subscription_gift,new_follower,gifted。這些篩選器也可以隱藏帶有以下標記的付費列: event;沒有事件標記的一般贊助列不會被事件篩選器比對到。其他訊息篩選器仍然適用。
選擇擷取方式: 對於 YouTube、Twitch 和 Kick, WebSocket 模式 通常提供更廣泛的事件涵蓋範圍。標準 DOM 擷取讀取頁面上實際繪製的列和卡片。YouTube Super Chats、Super Stickers 和 Jewel 禮物在兩種模式中都有擷取路徑;其他禮物、贊助和會員事件因來源而異。支援的路徑和必要設定請參閱平台表格。
承載資料結構: 贊助樣式的聊天列應使用 hasDonation 和可選的 donoValue。不要設定 event: "donation" 僅僅因為一般聊天/贊助列有金額;僅對真實平台動作或付費商品類型使用具體事件名稱,例如 superchat, supersticker, gift,或 jeweldonation。使用 meta 僅用於使用端確實需要、且現有欄位尚未涵蓋的額外結構化資料。
功能可用性速覽
使用此表查看每種擷取方式目前提供哪些提醒類型。詳細承載資料說明見下文。
專用的 Multi-Stream Alert Box 將直播事件分為六個核心提醒類別: Follow, Subscription/Member, Donation, Bits/Cheers, Raid/Host,以及 Purchase,以及兩個需主動啟用的類別(Auction 和 Hype Train)透過 URL 參數啟用。這些類別根據現有的 event, membership, subtitle, hasDonation,以及 meta 此處記載的欄位;無需單獨的承載資料格式。
| 來源 |
新訂閱者 / 會員 |
新追蹤者 |
贊助 |
計數和其他資料 |
| YouTube(Data API 橋接) |
會員加入、續訂、贈送 |
個別訂閱者提醒*及總數 |
Super Chats & Super Stickers |
觀眾、訂閱者和觀看總數(輪詢) |
| Twitch — DOM 擷取 |
送禮包列和獲贈通知 |
- |
Bits 透過以下欄位標記: hasDonation |
觀眾數量、獎勵卡片和社群醒目提示卡片 |
| Twitch — EventSub/Websocket |
即時訂閱、續訂和贈送 |
即時追蹤及追蹤者總數 |
Cheers、Power-ups 和頻道點數兌換 |
觀眾/訂閱者/追蹤者總數、直播狀態、廣告通知 |
| TikTok Live |
- |
追蹤卡片(TikTok 顯示時) |
禮物轉換為金幣總數 |
觀眾數量、加入提醒和按讚風暴 |
| YouNow |
- |
粉絲和觀眾活動 |
- |
來自直播觀眾面板的觀眾數量 |
| Favorited Studio |
- |
- |
- |
來自直播觀眾分頁的觀眾數量 |
| Whatnot |
- |
- |
- |
觀眾數量、加入提醒、直播拍賣中繼資料、商品和贈品抽獎快照 |
| eBay Live |
- |
- |
- |
觀眾數量、追蹤者數量、直播事件卡片快照、拍賣頁尾中繼資料(提供時)、愛心回應和即將舉行活動的中繼資料 |
| Streamlabs 提醒框 |
訂閱、禮物、贊助、追蹤 |
Cheer/bits、贊助(帶貨幣) |
Cheer/bits、贊助(hasDonation) |
提醒框開啟時;也可透過以下方式使用: sources/websocket/streamlabs.html socket 權杖 |
| OBS Flow Actions |
- |
- |
- |
用於 Event Flow 的 OBS 輸出、場景、重播緩衝區和媒體結束事件,在以下情況下: actions.html 已連接至 OBS WebSocket |
| Kick — DOM |
- |
- |
- |
觀眾數量及基本獎勵/禮物系統通知;如需更豐富的提醒,請使用 Kick 橋接 |
| Kick — Websocket/橋接 |
新訂閱、續訂和贈送 |
追蹤提醒 + 追蹤者總數 |
支持/贊助事件(金額 + 貨幣) |
直播狀態、獎勵兌換和個人資料中繼資料 |
| Facebook Live |
- |
- |
DOM 中可見時的 Stars |
聊天列、Stars 和觀眾數輪詢 |
| Rumble — DOM 擷取 |
- |
- |
可見的 Rant 價格 |
聊天、傳入 raid 和觀眾數輪詢 |
| Rumble — Websocket/API URL |
新訂閱和贈送訂閱 |
追蹤提醒 + 追蹤者總數 |
Rant/贊助(金額 + 貨幣) |
觀眾總數、訂閱者總數、直播狀態和聊天動態 |
| Streamplace |
- |
- |
- |
觀眾數量及聊天姓名、色彩、徽章、回覆和連結 |
| WorldsWave |
- |
- |
存在時的贊助標籤 |
繪製的直播聊天及可選啟用的觀眾數量更新 |
| CHZZK |
- |
- |
可見的起司贊助列 |
聊天列、徽章圖片、表情和觀眾數輪詢 |
| BEAM |
- |
- |
- |
聊天列;僅聊天頁面提供觀眾計數器時,還包括觀眾數輪詢 |
| Seal Team Sloth |
- |
- |
- |
繪製的彈出聊天列及 viewer_update 啟用觀眾數量時進行輪詢 |
| Castyr |
- |
- |
- |
繪製的彈出聊天列及可選啟用的觀眾數量更新 |
| RPLAY |
- |
- |
- |
已登入 /live/chat/box/ 彈出視窗: type: "rplay" 聊天、頭像、等級徽章影像和表情。金幣贊助在以下欄位中保留金額/單位: hasDonation 用於共用美元換算,不帶贊助事件。可選啟用的 viewer_update 輪詢使用整數 meta 來自 RPLAY 的公開直播端點。排除轉送的 Twitch 列。 |
| FLEX TV |
- |
- |
- |
繪製的聊天列,包含姓名、作者色彩、徽章影像和會員中繼資料 |
*YouTube 訂閱者提醒透過輪詢取得,可能延遲或不完整。API 參考並未承諾固定的四小時交付時段。請參閱 官方訂閱 API 限制.
欄位總覽
data 此處指訊息物件,不是需要加入的額外包裝層。聊天列和僅中繼資料事件具有不同結構:計數器和狀態快照可能省略 chatname/chatmessage。在平台表格中, 訊息 描述一般聊天列,而非字面上的 event: "message".
| 欄位 |
結構 |
用法 |
data.type |
字串 |
疊加畫面、篩選器和 Event Flow 使用的來源識別碼。Instagram 將直播聊天保留為 instagramlive 以及將非直播留言表示為 instagram。請參閱 來源類型指南 用於變體、通用來源和傳出路由。 |
data.chatname |
字串 |
由來源提供、供訊息處理和非疊加畫面輸出使用的顯示名稱。設定的使用者顯示名稱別名只能在複製的停駐面板和疊加畫面傳輸承載資料中取代此值。 |
data.username |
字串 |
可用時的來源使用者名稱。套用別名的停駐面板或疊加畫面承載資料可能加入此欄位以保留原始的 chatname 用於使用者動作;標準訊息保持不變。 |
data.userid |
字串 |
平台專屬的使用者識別碼。使用者操作優先使用此值,而非 username 和 chatname. |
data.platform | 字串(可選) | 部分整合會將此欄位與以下內容一併包含: type。很多來源介接器會省略它;請使用 type 用於來源路由。 |
data.id | 字串 | 數值(可選) | 訊息或事件識別碼。其意義取決於來源和傳輸方式;不要假定它始終是平台原生的管理 ID。使用 meta.messageId 當介接器為刪除同步提供它時。 |
data.donoValue | 數值(可選) | 來源提供的數值型等值美元金額,包括估算值。有效值(包括零)會覆寫 currency.js 換算。沒有此值時,使用端根據 hasDonation 和來源脈絡估算美元金額。原始金額和單位保留在 hasDonation 及現有的提供者中繼資料中。 |
data.chatbadges | 陣列 | 字串(可選) | 徽章圖片 URL 或徽章物件(type: "img" 帶有 src, type: "svg" 帶有 html,或 type: "text" 帶有 text)。轉送會將文字徽章的原始標籤保留在選用的 rawText 並產生經過逸出的 text 用於舊版疊加畫面。後續轉送時,重新產生 text 來自 rawText;不要跳脫 text 再次。目前繪製器顯示 rawText 存在時按字面處理,否則保留舊版編碼文字處理。這是表示形式欄位,不是繪製 HTML 的許可。舊版來源可以傳送單一 HTML 字串而非陣列。繪製徽章的疊加畫面接受兩種格式,並在本機淨化徽章 HTML 和 URL,包括傳送端為舊版擴充功能時。無效徽章不得阻止聊天或會員訊息顯示。 |
data.event |
字串 | 布林值 |
系統活動識別碼(例如 viewer_update, subscription_gift, giftpurchase)。一般聊天應將其留空或設為 false,以便疊加畫面區分系統通知與對話文字。 |
data.chatmessage |
字串 |
訊息本文。僅在以下條件滿足時可包含經過淨化/可繪製的 HTML: data.textonly 為 false。 |
data.textonly |
布林值 |
僅適用於 data.chatmessage. true 表示繪製 chatmessage 作為純文字,保留字面標籤和看似實體的文字;不要解碼、進行 HTML 淨化或向該本文加入格式標籤。將事件樣式套用至顯示元素。 false 表示 chatmessage 可以包含經過淨化/可繪製的 HTML;不含該旗標的舊訊息保留此 HTML 行為。其他一般欄位為純文字,以下媒體欄位除外: chatimg 和 contentimg。使用以下方式顯示純文字欄位: textContent,或在建立 HTML 範本時跳脫一次;不要刪除或反覆解碼其內容。 |
data.contentimg |
字串(可選) |
內容圖片或支援的媒體 URL。在擴充功能和桌面應用程式中,需主動啟用的 allowExternalGifs 設定會使用訊息文字或 HTML 連結中的第一個直接 HTTP(S) GIF 連結填入空白欄位。URL 路徑必須以下列內容結尾: .gif (不區分大小寫);保留查詢參數和片段。不需要 API 金鑰,並保留 chatmessage 和現有附件,並遵循 removeContentImage。選用的 hideExternalGifUrl 設定加入 meta.hideExternalGifUrl: true;停駐面板和精選疊加畫面僅在圖片載入後隱藏對應的 GIF 連結,同時保留周圍文字和原始承載資料。圖片失敗或逾時會收合其附件容器,並保留連結可見。僅 GIF 的疊加畫面在取得圖片位元組失敗時嘗試直接顯示圖片,並在無法取得動畫時長時使用已設定的顯示時間;失敗或停滯的載入會推進佇列。它不會新增 event 或變更來源 type。外部圖片不經過內容過濾;如果託管方阻止嵌入,可能無法載入。 |
data.membership |
字串 |
可讀的會員狀態,例如 MEMBERSHIP, new_sponsor, gift_recipient。各介面將其用於徽章、篩選器和公告。 |
data.subtitle |
字串 |
補充描述(會員期間、等級升級、贈送者等)。保持簡短並使用純文字,方便疊加畫面將其放在顯示名稱下方。 |
data.hasDonation |
字串 |
貨幣或虛擬禮物金額($5.00, 500 bits, 300 coins)。即使在以下情況下也要填寫: data.event 為空,以便贊助疊加畫面可以偵測到它。 |
data.meta |
數值 | 物件 | 字串(舊版) |
單一計數器(觀眾、追蹤者、訂閱者)使用純整數,更豐富的脈絡使用物件。部分較舊的事件,例如 Twitch DOM community_highlight,攜帶字串。在讀取物件屬性前檢查特定事件的資料結構;新增的結構化詳情應放在物件中。 |
data.firsttime |
布林值 |
設為 true 當首次聊天者偵測和本機資料庫都已啟用,且這是該使用者/來源的第一則已儲存聊天訊息時。停駐面板用它進行首次聊天醒目提示和首次聊天提示音篩選;可選的首次聊天徽章設定會在以下欄位前加入葉子徽章: chatbadges. |
data.lastactivity |
數值 |
啟用首次聊天者偵測和本機資料庫時,該使用者上一次已儲存聊天活動的 Unix 時間戳記(秒)。全新使用者省略此欄位。 |
SOOP — 播放器 DOM 擷取
實作: sources/sooplive.js。支援統一的 play.sooplive.com 播放器和舊版 play.sooplive.co.kr URL。提供舊版全域聊天版面配置時,仍會辨識它。
公開聊天發出 type/platform: "sooplive",純文字的 chatname/userid, nameColor,以及經過清理的 chatmessage。排除現有列、重複訊息 ID、翻譯副本和私人悄悄話。表情會轉換為安全圖片,或在純文字模式下轉換為替代文字。
帶有 showviewercount 或 hypemode 啟用時, viewer_update 帶有整數 meta 來自播放器的 #nAllViewer。僅聊天的彈出視窗可能不提供此計數。SSApp 開啟獨立彈出視窗時會使用完整播放器,因為目前 SOOP 彈出視窗依賴其開啟者。
Gosh - 頻道聊天擷取
實作: sources/gosh.js。開啟 https://gosh.com/USERNAME 並讓聊天可見,或將該 URL 貼到 SSApp 的 Add other source(新增其他來源)。無需彈出聊天視窗。
新的聊天列發出 type/platform: "gosh",純文字的 chatname, nameColor,以及經過清理的 chatmessage。行內圖片和 GIF 保留安全的 HTTP(S) URL。使用 textonlymode,圖片轉換為替代文字或 [image] 當沒有替代文字時。頭像、徽章、贊助和會員在擷取列中缺失時保持空白。
讓虛擬化聊天清單保持捲動到最新訊息。排除現有歷史記錄、重新繪製的列和無作者的系統通知。繪製索引僅供內部使用,不會作為原生訊息 ID 發出。不會推斷追蹤、贊助、觀眾數量或管理事件。
Livacha — 聊天室擷取
實作: sources/livacha.js。開啟 https://livacha.com/chat/ROOM 並讓聊天可見,或將聊天室 URL 貼到 SSApp 的 Add other source(新增其他來源)。
新的聊天列發出 type/platform: "livacha",純文字的 chatname, chatimg, nameColor,以及經過清理的 chatmessage。相對頭像和行內圖片 URL 會轉換為絕對 HTTP(S) URL。段落、換行和清單會攤平成一則聊天訊息。使用 textonlymode,圖片轉換為替代文字或 [image].
訊息 ID 在內部用於避免重複擷取編輯內容和重新掛載的列。會略過初始歷史記錄和前置載入的舊訊息;時間戳記和回應選單不屬於擷取本文。不會推斷贊助、會員、管理或觀眾數量事件。
Stream.space — 實驗性 DOM 擷取
實作: sources/streamspace.js。僅比對 https://beta.stream.space/chat-popup.php?channel=USERNAME 和等效的 https://stream.space 彈出視窗。
新繪製的聊天列發出 type: "streamspace", platform: "streamspace",純文字的 chatname/userid, chatmessage,頭像 chatimg,以圖片呈現的等級 chatbadges,以及 nameColor。行內表情會重建為安全圖片,或在以下情況下使用其替代文字: textonlymode 已啟用。排除現有歷史記錄、歡迎通知、回覆預覽和置頂重複項目。
viewer_update 帶有整數 meta 讀取自 #popupViewersNum 當 showviewercount 或 hypemode 已啟用。不會推斷贊助、會員或管理事件。
實驗性:檢查期間 beta 彈出視窗一直停留在 Loading。SSApp 載入了彈出視窗並擷取到觀眾更新,但即時聊天傳遞和正式版彈出視窗仍未驗證。SSN 無法擷取網站未呈現的訊息。
w.tv 和 Prime — DOM 擷取
實作: sources/wtv.js 在 https://w.tv/USERNAME/chat 和 sources/prime.js 在 https://prime.gs/USERNAME?chat_popout=1.
新的聊天列使用 type/platform 的 wtv 或 prime,純文字的 chatname, nameColor,以及經過清理的 chatmessage。行內表情會轉換為安全圖片,或在純文字模式下轉換為替代文字。Prime 還包括該列的 userid 並支援已登入的個人資料連結及未登入的使用者名稱標籤。當已驗證的列結構中不存在頭像和徽章時,這些欄位保持空白。
不包含初始歷史記錄、置頂卡片和回覆預覽。w.tv 使用虛擬化聊天清單:請保持捲動到最新訊息,以便擷取。其 DOM 測試 ID 是繪製索引,並非原生訊息 ID。Prime 會略過在初始訊息上方載入的舊歷史記錄和遭忽略使用者的預留內容。
這兩種彈出視窗都不提供經過驗證的直播觀眾數量,因此這些介接器不會發出觀眾更新,也不會推斷贊助、訂閱或管理事件。
涵蓋範圍和相容性限制
本參考描述已實作的承載資料,並不保證每個平台都會提供每種事件。空的 hasDonation 在來源中的賦值並不能證明支援贊助。DOM 可見性、帳號權限、擷取開關和 API 可用性仍決定收到哪些內容。刪除轉送因來源而異;不要假定所有來源都支援管理同步。
已追蹤的不一致和空缺
| 配對/區域 |
已觀察到的不一致 / 空缺 |
影響 |
| Twitch:標準模式與 Websocket |
共用: reward, subscription_gift, viewer_update, hype_train,以及需主動啟用的 watch_streak。僅 Standard: giftpurchase, knock, community_highlight。僅 WebSocket: new_subscriber, resub, cheer, powerup, raid, new_follower, follower_update, subscriber_update. |
channel_points 現在是 Twitch 獎勵兌換的已棄用舊版別名;新整合應依據 reward. |
| Kick:標準模式與 Websocket |
標準模式發出輕量標記(gift, reward,布林值 true, viewer_update)。WebSocket 增加官方追蹤、訂閱、禮物、獎勵兌換、KICKs、管理和直播狀態事件。它保留對舊版 raid 承載資料,但 Kick 目前不提供官方 raid/host 訂閱。 |
Websocket 模式更豐富;切換時,應檢查圍繞僅標準模式事件名稱建立的自動化。不要要求 Kick 突襲事件。 |
| YouTube:標準模式與 Websocket |
共用: superchat, supersticker, jeweldonation, sponsorship, resub, giftpurchase, giftredemption, viewer_update。僅 Standard: thankyou, redirect。僅 WebSocket: membermilestone, new_follower, subscriber_update, view_update, likes_update (需主動啟用)。 |
兩者的核心會員/事件名稱保持一致;Super Chat、Super Sticker 和 Jewels 使用 hasDonation,而會員禮物的購買/兌換不使用。 |
| 所有介面 |
許多來源會填入 hasDonation 不設定 data.event. |
這是正確的;贊助繪製應依據 hasDonation,帶有 data.event 保留給系統/事件語意。 |
來源專屬別名和舊版名稱
這些對應專用於列出的來源/脈絡,不是全域取代。使用端對別名的支援因頁面而異。目前 TikTok DOM 和 TikFinity 來源仍然發出 followed;Velora 使用 subscription 和 channel_points,Streamlabs 則使用 subscription。接受目前來源約定及其相關舊版別名,而不是重新命名每個相符的事件。
| 別名 / 舊版名稱 |
標準替代項 |
脈絡 |
subscription | new_subscriber | Twitch/Kick 新訂閱 |
subgift | subscription_gift | Twitch 贈送訂閱 |
membership | sponsorship | YouTube 新會員(通用) |
new_member | sponsorship | YouTube 新會員 |
new_membership | sponsorship | YouTube 新會員 |
newmember | sponsorship | YouTube 新會員 |
new-membership | sponsorship | YouTube DOM 擷取程式(連字號變體) |
upgraded_membership | resub | YouTube 等級升級 |
upgraded-membership | resub | YouTube DOM 擷取程式(連字號變體) |
membership_upgrade | resub | YouTube 等級升級 |
membership_milestone | membermilestone | YouTube 里程碑聊天 |
member_milestone | membermilestone | YouTube 里程碑聊天(底線變體) |
gift_membership | giftpurchase | YouTube 禮物套組 |
membership_gift | giftpurchase | YouTube 禮物套組 |
giftmemberships | giftpurchase | YouTube 禮物套組(複數變體) |
gifted_membership | giftredemption | 收到 YouTube 禮物 |
gifted_memberships | giftpurchase | YouTube 禮物套組(複數變體) |
community_gift | giftpurchase | 社群送禮包 |
channel_points | reward | Twitch websocket 獎勵兌換(舊版別名) |
followed | new_follower | 目前 TikTok DOM/TikFinity 輸出;組合 TikTok 擷取模式時應接受這兩個名稱。 |
使用本參考
- 新增事件時,重用現有詞彙(
subscription_gift, viewer_update等)。如確實無法避免差異,請在此記錄並說明原因。
- 保持
data.meta 保持可預測:優先使用扁平鍵,絕不將混合資料塞入字串,並始終包含單位(currency, bits, duration).
- 變更承載資料時同步更新本頁;僅在共用開發規則變化時更新代理說明。
- 驗證承載資料變更時,同時檢查發出承載資料的來源和使用承載資料的疊加畫面或 Event Flow 觸發條件。
- 是否擷取取決於來源支援和設定。要在停駐面板或精選疊加畫面中隱藏帶事件標記的列,請加入
&hideevents 或 &hideallevents。要隱藏所選事件,請使用 &filterevents=subscription_gift,new_follower,gifted.
- 對於 YouTube、Twitch 和 Kick,啟用 WebSocket 模式 以取得最廣泛的平台專屬事件支援。YouTube 的禮物/贊助擷取(包括禮物和 Super Chat)在標準和 WebSocket 模式下均可用;WebSocket 還增加了額外的事件類型。具體支援仍因平台、帳號角色和已授予的權限範圍而異。
回到頂端
營利疊加畫面
NinjaBacker 贊助使用 platform: "ninjabacker", type: "ninjabacker", chatname,純文字的 chatmessage, textonly: true、帶有來源前綴的 id,格式化後的 hasDonation,以及數字形式的 donoValue。它們是一般贊助樣式列,沒有 event 覆寫值。 meta.ninjabacker 包含 ISO currency 和主貨幣單位的 amount。匿名贊助使用顯示名稱 Anonymous。來源使用即時 SSE(不重播),或 SSN API 上需主動啟用的已簽章 webhook 接收器(佇列傳遞最長七天)。可靠傳遞使用穩定的 ninjabacker:delivery:DELIVERY_ID ID。兩種模式都不會接收退款/爭議沖銷。接收端憑證和簽章密鑰絕不會進入事件承載資料。由呼叫端控制的 callbackId 值不是付款身分,也不會轉送。儀表板測試贊助排除在贊助列之外。它們發出 event: "monetization_test" 帶有 meta.ninjabackerTest 包含 id 和 at(Unix 毫秒),僅用於專用預覽提醒。
event: "monetization_update" 是來自以下位置的僅中繼資料快照: type/platform: "socialstream". meta.monetization.wishlist 包含 enabled、qr、position、rank、total、公開的 url,以及目前項目(name、amount、currency、image、公開的 url)或 null。 meta.monetization.ninja 包含 enabled、qr、position、username 和公開的贊助 url。絕不包含私有 Tip ID。 meta.monetization.ebay 包含 enabled、qr、position、display(cycle/cheapest/first)、seconds、可選啟用的公告設定和公開項目。每個項目有 id、name、amount、currency、image、url、auction、startingBid、endsAt、available、bought 和 updatedAt。時間為 Unix 毫秒。不包含賣家憑證或買家身分。
主播確認的願望清單購買還包括 meta.wishlistPurchase 帶有 id、name、可選的 supporter 和 at(Unix 毫秒)。這是主持人確認,並非 Amazon 付款通知,也不計為貨幣贊助。疊加畫面應對其 id 去重,並忽略舊的購買通知。
Shopify 已付款訂單
可選的帶簽章 Shopify 接收端發出 platform/type: "shopify" 和 event: "purchase" 僅用於 orders/paid 帶有 financial_status: "paid"、正數總額, test: false、未取消,且帶有目前的已簽章要求本文更新時間戳。測試、未付款、過期、取消和退款通知不會發出購買動作。不會推斷送禮意圖。
chatname 為 Anonymous;排除客戶欄位、私有備註和訂單 URL。 chatmessage 是純文字,帶有 textonly: true; subtitle 儲存最多三個公開商品標題。 meta.commerce 包含 orderTotal 和 currency 以商店貨幣計,另加 quantity 當已知完整有效的數量時。接收者和實體/數位用途保持未設定。沒有 hasDonation 或 donoValue 已設定。 id 是具有 Shopify 前綴、以商店/訂單為範圍的穩定不透明雜湊;它不是原始訂單識別碼。
購買使用現有的活動、multi-alerts Purchase 類別和 Event Flow 路徑。商品推廣使用現有的 meta.monetization.commerce 目錄。匯入商品或將其推廣標籤設為 Gift 不會產生購買或禮物事件。 Shopify 設定和傳遞限制.
禮物和商業交易
使用 event: "gift" 用於禮物, giftcontribution 用於為禮物提供付費支持, giftfunded 用於募款完成,以及 purchase 用於商品銷售。這些名稱獨立於提供者,也不取決於商品是實體還是數位商品。將舊版的 giftpurchase 用於贈送會員的事件;Throne 以前錯誤地使用該名稱,現在發出 gift。現有的會員事件產生端保持不變。自訂 Throne 事件名稱篩選器應改用 gift;贊助篩選器無需變更。
hasDonation 仍為付費支持的相容訊號,帶有 donoValue 儲存所提供或估算的美元值。禮物和貢獻保留這些欄位。募款完成會省略兩者,避免重複計算貢獻。一般商品銷售預設省略它們,保持 eBay 的資料約定。不要根據商店、願望清單 URL 或實體商品推斷贈禮意圖:為買家或其他收件人購買仍然屬於銷售,除非來源明確標示為向創作者贈禮。
可選的共用 meta.commerce 欄位為 recipient (creator、buyer、other), itemType (physical、digital、service), quantity (正數商品數量), currency (ISO 貨幣), goalAmount (以主要貨幣單位表示的募款目標,絕不是新增收入),以及 orderTotal (已知的主要貨幣單位已付款訂單總額;屬於商業交易,而非贊助收入)。省略未知詳情。商品名稱保留在 subtitle,圖片位於 contentimg,以及位於以下欄位中的支持者文字: chatmessage。現有提供者中繼資料仍然可用。Throne 提供接收者和貨幣,並在完成時提供 goalAmount;eBay 提供數量。兩者都不會猜測商品類型,也不會公開接收者的私人資訊。
即使沒有支持者文字,活動動態也會顯示這些事件。Multi-alerts 對禮物和貢獻使用贊助展示方式,包括一個不含貨幣價值的獨立 Gift Fully Funded 通知。購買有單獨的 Purchase 類別,預設啟用,帶有 purchasestyle, purchasesound, purchaseaccent,以及 disablepurchases URL 控制項。購買提醒不會改變贊助總額。
Event Flow 在 Event Type 和 Other Event 觸發條件中提供這些事件名稱。贊助觸發條件仍檢查 hasDonation;Gift Sub 觸發條件保留會員語意。Compare Property 接受巢狀路徑,例如 meta.commerce.recipient。動作範本接受 {meta.commerce.quantity} 和 {meta.commerce.currency},以及現有的 {donation}, {subtitle},以及 {meta}。巢狀路徑區分大小寫,缺失值顯示為空,並禁止遍歷原型。
創作者商業 webhook 和促銷疊加畫面
Ko-fi 公開 Donation 付款保留 hasDonation 並獲得美元 donoValue。訂閱付款使用 new_subscriber 或 resub,等級位於 membership。Shop Order 和 Commission 使用 purchase 不帶贊助值。私人 Ko-fi 事件仍遭排除。表單編碼的 JSON 只解碼一次;姓名和訊息為純文字。
Buy Me a Coffee donation.created 保留貨幣支持; extra_purchase.created 和 commission_order.created 變為 purchase. wishlist_payment.created 變為 giftcontribution 僅使用該付款金額; meta.commerce.completed 記錄提供者的完成旗標,不會再發出一條貨幣金額列。 membership.started 變為 new_subscriber 等級位於 membership,不再誤用 hasDonation 用於等級名稱。訂閱開始金額不會單獨被視為一次付費扣款。測試、已退款、失敗和不支援的更新/生命週期事件不會產生付費提醒。隱藏的支持者備註會省略。
Fourthwall 支援 ORDER_PLACED(purchase)、GIFT_PURCHASE(gift,接收者為其他人)、DONATION(一般贊助列)和 SUBSCRIPTION_PURCHASED(new_subscriber)。現有訂單總額保留 hasDonation 以保持回溯相容,標記為 meta.commerce.legacyDonationValue: true;這是對新商品銷售預設規則的明確例外。使用禮品卡的訂單會發出沒有贊助值的購買提醒:無法可靠地從訂單總額推斷新的扣款,且禮品卡購買已計入。帳單姓名和電子郵件地址不用於公開身分。儀表板測試事件和訂單更新不會產生付費提醒。
這些介接器保留現有的轉送、機器人動作、Event Flow 和目的地路由,並帶有 meta.webhookId 去重。它們提供公開姓名、純文字訊息,以及以下欄位中的已知商品名稱: subtitle,以及 ISO meta.commerce.currency 在適用時與數值型贊助值一併提供。它們不會新增退款記帳或新的接收端驗證;請使用提供者現有設定的 webhook 路由。
meta.monetization.commerce 在 monetization_update 包含 enabled、qr、position、display(first/cycle)、seconds 和公開的 items 陣列。每個項目有 name、url、image、可選的 amount(未知時為 null)、currency 和 purpose(shop/gift/support/membership)。這些是主持人輸入的推廣詳細資訊,並非付款憑證。新增或編輯項目不會發出贊助或購買事件。通用疊加畫面使用 mode=commerce; view=both|showcase|card|alerts 將推廣與活動分開。可選的 style、scale、cardevery、cardfor 和 onlytype URL 參數控制展示方式。現有提供者模式還接受 view 和排程控制項。請參閱 設定指南.
Throne 禮物事件
可選啟用的營利整合轉送帶簽章的 Throne 事件,帶有 platform 和 type 設為 throne。三者都使用穩定的傳遞 id,純文字的 chatname, chatmessage 帶有 textonly: true,商品名稱位於 subtitle,以及位於以下欄位中的選用 HTTPS 縮圖: contentimg.
| 事件 | 含義 | 贊助金額 / 排名 |
|---|
gift | 一件已購買的禮物 | hasDonation 以及美元 donoValue;+1 禮物排名 |
giftcontribution | 對禮物的出資 | 僅貢獻金額;不增加排名 |
giftfunded | 一件群募禮物已完成 | 否 hasDonation 或 donoValue,避免重複計算先前的貢獻;+1 禮物排名 |
meta.throne 包含 itemName, creator (公開使用者名稱), completed, currency 和主貨幣單位的 amount。對於 giftfunded,金額描述的是目標,而非新增收入。匿名送禮者仍保持為 Anonymous;已完成的社群送禮使用 Community。私人付款和配送欄位絕不會被轉送。
monetization_update 快照還包含 meta.monetization.throne: enabled, username, url, qr, position, rank,以及 gifts。這些快照不包含 webhook URL 或監聽憑證。
主播語音命令(桌面預覽)
Event Flow 的 當我說…… 觸發條件接收來自 SSApp 的可信本機麥克風命令。其內部動作脈絡使用 chatname: "Host", type: "hostvoice",辨識到的詞句位於 chatmessage,以及 textonly: true。這不是平台傳入事件,也不是新的聊天傳輸。透過聊天傳送這些欄位無法啟動語音觸發條件。
需要更新後的桌面版本、明確啟動麥克風,並在測試模式後啟用動作。請參閱 預覽設定和驗證狀態.
商品展示控制項
現有的 monetization_update 快照可能包含 meta.monetization.commerce.live:null 表示已儲存的排程,或 {mode: "show" | "hide", url?: "https://...", until: 0 | epochMilliseconds}。Show 比對已儲存的精確商品 URL;找不到商品則不顯示卡片。正數 until 到期後恢復已儲存的排程;零表示持續到狀態變更或 SSN 重新啟動。Hide 抑制促銷展示,不抑制付費活動提醒。
commerce.viewerURL 是已發布的唯讀商店 URL,或空字串。存在時,推廣 QR code 會連結至該位址。它絕不包含 SSN 工作階段或發布金鑰。商品保留在 commerce.items。顯示控制、匯入或發佈不會發出贊助/購買事件。請參閱 商品控制項 用於 Event Flow 和遠端 API。
Event Flow 的 commerceControl 動作等待直接/Chrome 回覆(最多八秒)。對於一般事件承載資料,它保留事件並加入 meta.commerceControlResult: {success: true, commerce: controlState} 或 {success: false, error: "..."}。對於已有的數字、陣列或其他非物件 meta,中繼資料保持不變,診斷資訊傳回為 commerceControlResult 改為用於動作結果。失敗的控制會停止該鏈中的後續動作,但不會抑制原始付款事件。逾時並不能證明控制未套用;重試 Next 等相對命令之前,請檢查狀態。成功確認的是本機選取/隱藏/排程狀態,絕不表示 OBS 可見或公開頁面已同步。
具名的 Stream Deck / API 工作流程
此 具名工作流程觸發條件 建立內部 Event Flow 訊息,帶有 type: "api", event: "workflow_trigger", chatname: "Stream Deck / API",空的 chatmessage,以及 textonly: true。其 meta.workflow 物件包含觸發條件名稱和呼叫端提供的 JSON data 物件。透過如下範本讀取值: {meta.workflow.data.minutes}。只會評估明確符合該觸發條件的已儲存且已啟用流程。這不是來自觀眾/聊天的傳入事件,也不會作為聊天廣播;將這些欄位複製到聊天中不會啟動具名觸發條件。
NinjaChatter 觀眾試行
實驗性的配對擴充功能連接器傳送僅供顯示的列,帶有 type: socialstreamchat, platform: ninjachatter,以及 textonly: true. meta.ninjachatter 帶有 origin: audience,描述性的 provider,以及公開的 room ID。這些列會略過平台回覆、機器人、Event Flow 觸發條件和點數處理。顯示某個提供者並不代表取得授權。舊版 NinjaChatter 來源擷取包括 meta.ninjachatter.room 用於聊天室專屬的重複抑制。
Cheer 使用獨立且經過驗證的領取與結果路徑,絕不使用特殊聊天命令。固定預設發出現有的 Actions 疊加畫面 show_text 訊息,持續三秒。收到它表示傳輸已接受,並不表示已驗證 OBS 顯示。任何觀眾承載資料都不能選擇任意動作。NinjaChatter 預設停用此試行;在新的私有配對邊界通過驗證之前,Electron 保留現有轉送方式。
商業名額看板和最近銷售
現有的 monetization_update 事件(type/platform: socialstream)還包括 meta.monetization.boards。其 board 包含 title, style (名額/隊伍), columns (1–20), visible,以及最多 120 個 spots。每個名額都有一個字串 id,純文字的 label, status (available/claimed/revealed)以及 result (純文字,揭曉前為空)。領取和揭曉是由主播輸入的顯示狀態,並非購買證據或隨機分配。
boards.sales 儲存最多 100 筆最近記錄: id, title,選用的 amount (未知時為 null), currency, quantity, source,以及 at (記錄時的 Unix 毫秒時間戳)。 automatic 啟用收集, salesVisible 控制顯示和 revision 在變化時遞增。自動收集僅接受 purchase 來自 Shopify、eBay 賣家、Fourthwall、Ko-fi 和 Buy Me a Coffee 的事件;排除私有/測試事件。它不會將拍賣中繼資料、贊助、禮物或名額認領視為購買。自動記錄不會用訂單總額、商品刊登價格或贊助金額代替商品單價。手動記錄使用 source: "Host confirmed".
狀態會持續儲存在此安裝實例的私有營利儲存空間中;公開快照不包含傳遞去重 ID、買家身分和機密資料。明確顯示的銷售記錄保留其事件 ID,以供移除。退款需要主持人手動移除。重複購買 ID 會單獨記憶(最多 2,000 個),包括清除可見歷史記錄之後。現有的 getCommerceState 回應包含 commerce.boards; commerceControl 接受以下文件中記載的面板/銷售命令: 面板指南。手動編輯會廣播更新後的狀態,但絕不會建立購買事件、贊助總額或付費獎勵。主播快照缺失 35 秒後,疊加畫面會隱藏。
賣家工作流程新增內容: commerce.boards.board.id 識別某一代面板。手動 saleAdd 可能提供 boardId 和 spotId 以不可分割的方式記錄銷售並認領該名額;仍在最近歷史記錄中的重複關聯銷售會遭拒絕。 saleRemove 帶有 reopenSpot: true 僅當面板代次仍相符時釋放該名額。公開銷售項目省略這些操作員關聯欄位。可選的 platform 在手動銷售記錄上保留其來源以供篩選,而 source: "Host confirmed" 識別確認方式。 amount 是該項目的總數,包括其 quantity。eBay 已付款訂單介接器的 meta.ebayPurchase.quantity 會保留。
salesSettings.auctionSource 啟用 Whatnot 或 eBay Live 商品助手。控制回應中的 commerce.auction 僅包含最近擷取內容中的 source、title、priceText、status 和 at: auction_update,或 null。五分鐘後過期,並在來源變更、閒置快照或重新啟動時清除。此輔助工具僅供操作員使用:既不持久儲存,也不納入面向觀眾的廣播;出價者/得標者身分會被捨棄。來源指令碼和拍賣事件承載資料保持不變。複製草稿不會確認付款,也不會建立銷售。