LiveChatMessages

liveChatMessage 資源代表 YouTube 直播聊天室中的即時通訊訊息。資源可包含多種訊息的詳細資料,包括新發布的訊息或粉絲贊助活動。

直播功能預設為啟用,且在直播活動期間提供使用。活動結束後,該活動的聊天室功能將無法使用。

方法

API 支援下列 liveChatMessages 資源方法:

list
列出特定聊天室的即時通訊訊息。立即試用。
streamList
啟用伺服器串流連線,以低延遲接收特定聊天室的即時通訊訊息。 立即試用。
insert
在聊天室中新增訊息或意見調查。立即試用。
transition
轉換直播訊息的狀態。 立即試用。
刪除
刪除即時通訊訊息。API 要求必須由頻道擁有者或聊天室管理員授權。 立即試用。

資源表示法

下列 JSON 結構顯示 liveChatMessages 資源的格式:

{
  "kind": "youtube#liveChatMessage",
  "etag": etag,
  "id": string,
  "snippet": {
    "type": string,
    "liveChatId": string,
    "authorChannelId": string,
    "publishedAt": datetime,
    "hasDisplayContent": boolean,
    "displayMessage": string,
    "fanFundingEventDetails": {
      "amountMicros": unsigned long,
      "currency": string,
      "amountDisplayString": string,
      "userComment": string
    },
    "textMessageDetails": {
      "messageText": string
    },
    "userBannedDetails": {
      "bannedUserDetails": {
        "channelId": string,
        "channelUrl": string,
        "displayName": string,
        "profileImageUrl": string
      },
      "banType": string,
      "banDurationSeconds": unsigned long
    },
    "memberMilestoneChatDetails": {
      "userComment": string,
      "memberMonth": unsigned integer,
      "memberLevelName": string
    },
    "newSponsorDetails": {
      "memberLevelName": string,
      "isUpgrade": bool
    },
    "superChatDetails": {
      "amountMicros": unsigned long,
      "currency": string,
      "amountDisplayString": string,
      "userComment": string,
      "tier": unsigned integer
    },
    "superStickerDetails": {
      "superStickerMetadata": {
        "stickerId": string,
        "altText": string,
        "language": string
      },
      "amountMicros": unsigned long,
      "currency": string,
      "amountDisplayString": string,
      "tier": unsigned integer
    },
    "pollDetails": {
      "metadata": {
        "options": {
          "optionText": string,
          "tally": string,
        },
        "questionText": string,
        "status": enum
      },
    },
    "membershipGiftingDetails": {
      "giftMembershipsCount": integer,
      "giftMembershipsLevelName": string
    },
    "giftMembershipReceivedDetails": {
      "memberLevelName": string,
      "gifterChannelId": string,
      "associatedMembershipGiftingMessageId": string
    },
    "giftDetails": {
      "jewelsAmount": integer,
      "giftName": string,
      "giftUrl": string,
      "giftDuration": object,
      "seconds": integer,
      "nanos": integer,
      "hasVisualEffect": boolean,
      "comboCount": integer,
      "altText": string,
      "language": string
    },
  },
  "authorDetails": {
    "channelId": string,
    "channelUrl": string,
    "displayName": string,
    "profileImageUrl": string,
    "isVerified": boolean,
    "isChatOwner": boolean,
    "isChatSponsor": boolean,
    "isChatModerator": boolean
  },
}

屬性

下表定義這個資源中顯示的屬性:

屬性
kind string
識別 API 資源的類型。值為 youtube#liveChatMessage。
etag etag
這項資源的 Etag。
id string
YouTube 指派的 ID,用於識別訊息。
注意:如果是 giftEvents,可以重複使用相同 ID 來更新連擊次數。
snippet object
snippet 物件包含有關即時通訊訊息的核心詳細資料。
snippet.type string
訊息類型。這項屬性一律會顯示,其值會決定資源中顯示的欄位。

這項屬性的有效值如下:
  • chatEndedEvent - 即時通訊已結束,之後無法再插入訊息。直播結束後,系統會在一段時間後自動執行這項操作。如果是頻道預設的廣播,系統不會傳送這類訊息。
  • sponsorOnlyModeEndedEvent - 即時通訊不再處於贊助者專屬模式,因此非贊助者現在也能傳送訊息。這個活動沒有任何顯示內容。
  • sponsorOnlyModeStartedEvent - 聊天室已進入僅限贊助者模式,只有贊助者可以傳送訊息。這個事件沒有顯示內容。
  • newSponsorEvent:新使用者贊助了聊天室所屬的頻道。author 欄位包含新贊助商的詳細資料。
  • memberMilestoneChatEvent:使用者傳送了會員里程碑訊息。
  • superChatEvent:使用者購買了超級留言。
  • superStickerEvent:使用者購買了超級貼圖。
  • textMessageEvent:使用者傳送了簡訊。
  • tombstone:墓碑代表先前曾有訊息使用這個 ID 和發布時間,但現已刪除。系統不會在刪除訊息時傳送這則訊息,而是會顯示這則訊息,指出訊息刪除前的位置。這類訊息只會顯示 snippet.liveChatId、snippet.type 和 snippet.publishedAt 欄位。
  • userBannedEvent:管理員已封鎖使用者。author 欄位包含版主詳細資料。
  • membershipGiftingEvent:使用者為其他觀眾購買會籍。
  • giftMembershipReceivedEvent - 使用者收到贈送的會籍。
  • pollDetails:使用者已建立即時意見調查。
  • giftEvent:使用者已用寶石兌換禮物。
snippet.liveChatId string
與訊息相關聯的聊天室專屬 ID。與直播相關聯的聊天室 ID 會在 liveBroadcast 資源的 snippet.liveChatId 屬性中傳回。
snippet.authorChannelId string
訊息作者的使用者 ID。這個欄位只會填入下列訊息類型:
  • 如果訊息類型為 textMessageEvent,屬性值會識別撰寫訊息的使用者。
  • 如果訊息類型為 fanFundingEvent,屬性值會識別資助直播的使用者。
  • 如果訊息類型為 newSponsorEvent,屬性值會識別剛成為贊助者的使用者。
  • 如果訊息類型為 memberMilestoneChatEvent,屬性值會識別傳送訊息的成員。
  • 如果訊息類型為 userBannedEvent,屬性值會指出封鎖使用者的管理員。
  • 如果訊息類型為 membershipGiftingEvent,屬性值會識別購買會籍贈送的使用者。
  • 如果訊息類型為 giftMembershipReceivedEvent,屬性值會識別收到贈送的會籍的使用者。
  • 如果訊息類型為 pollEvent,屬性值會識別建立即時投票的使用者。
  • 如果訊息類型為 giftEvent,屬性值會識別送禮的使用者。
snippet.publishedAt datetime
訊息的原始發布日期和時間。值以 ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) 格式指定。
snippet.hasDisplayContent boolean
指出訊息是否含有應向使用者顯示的內容。
snippet.displayMessage string
包含向使用者顯示的字串。如果訊息類型為 chatEndedEvent 或 tombstone,則不會顯示這個欄位。
snippet.fanFundingEventDetails object
注意:這個物件及其子項屬性已淘汰。自 2017 年 2 月 28 日起,liveChatMessage 資源將不再傳回粉絲贊助活動的詳細資料。

這個物件包含贊助活動的詳細資料。只有在訊息類型為 fanFundingEvent 時,才會顯示這個欄位。
snippet.fanFundingEventDetails.amountMicros unsigned long
注意:這項屬性已淘汰。

基金金額。
snippet.fanFundingEventDetails.currency string
注意:這項屬性已淘汰。

基金的幣別。
snippet.fanFundingEventDetails.amountDisplayString string
注意:這個屬性已淘汰。

向使用者顯示基金金額和幣別的已算繪字串。
snippet.fanFundingEventDetails.userComment string
注意:這項屬性已淘汰。

使用者為這項粉絲贊助活動新增的留言。
snippet.textMessageDetails object
這個物件包含簡訊的詳細資料。只有在訊息類型為 textMessageEvent 時,才會顯示這項資訊。
snippet.textMessageDetails.messageText string
使用者的訊息。
snippet.userBannedDetails object
這個物件包含遭禁止參與聊天的使用者詳細資料。以及禁令本身的詳細資料。使用者可能會遭到永久或暫時禁止進入聊天室。
snippet.userBannedDetails.bannedUserDetails object
這個物件包含遭停權使用者的相關資訊。
snippet.userBannedDetails.bannedUserDetails.channelId string
遭封鎖使用者的 YouTube 頻道 ID。
snippet.userBannedDetails.bannedUserDetails.channelUrl string
遭封鎖使用者的 YouTube 頻道網址。
snippet.userBannedDetails.bannedUserDetails.displayName string
遭禁止使用者 YouTube 頻道的顯示名稱。
snippet.userBannedDetails.bannedUserDetails.profileImageUrl string
遭封鎖使用者的 YouTube 頻道顯示圖片。
snippet.userBannedDetails.banType string
禁止類型。這個屬性的有效值如下:
  • 無法變更
  • 暫時
snippet.userBannedDetails.banDurationSeconds unsigned long
停權時間長度。只有在 snippet.userBannedDetails.banType 屬性值為 temporary 時,才會顯示這個屬性。
snippet.memberMilestoneChatDetails object
這個物件包含會員里程碑事件的詳細資料。只有在訊息類型為 memberMilestoneChatEvent 時,才會顯示這個欄位。
snippet.memberMilestoneChatDetails.userComment string
會員在會員里程碑訊息中新增的留言。如果訊息不含成員的留言,這個欄位會留空。
snippet.memberMilestoneChatDetails.memberMonth unsigned integer
觀眾成為會員的總月數 (無條件進位),這項資訊會決定他們能否傳送會員里程碑訊息。這與 YouTube 使用者看到的月份數相同。
snippet.memberMilestoneChatDetails.memberLevelName string
觀眾的會員等級名稱。等級名稱由提供會員方案的 YouTube 頻道定義。在某些情況下,這個欄位不會填入任何內容。
snippet.newSponsorDetails object
這個物件包含新成員公告事件的詳細資料。只有在類型為 newSponsorEvent 時,才會設定這個值。「會員」一詞是指「贊助者」。
snippet.newSponsorDetails.memberLevelName string
觀眾所屬的會員等級名稱。等級名稱由提供會員方案的 YouTube 頻道定義。在某些情況下,這個欄位不會填入資料。
snippet.newSponsorDetails.isUpgrade bool
表示觀眾是否剛從較低等級升級。如果觀眾在購買時不是會員,則欄位值為 false。
snippet.superChatDetails object
這個物件包含超級留言事件的詳細資料。只有在訊息類型為 superChatEvent 時,才會顯示這項資訊。
snippet.superChatDetails.amountMicros unsigned long
購買金額,以購買幣別的百萬分之一為單位。舉例來說,如果購買金額為一美元,snippet.amountMicros 屬性值就是 1000000。
snippet.superChatDetails.currency string
購買時使用的幣別。值為 ISO 4217 貨幣代碼。
snippet.superChatDetails.amountDisplayString string
包含購買金額和幣別的字串,例如 $1.00。字串會向使用者顯示。
snippet.superChatDetails.userComment string
使用者為這項超級留言事件新增的留言。
snippet.superChatDetails.tier unsigned integer
付費訊息的等級。請注意,在 superChatEvent 資源中,snippet.messageType 屬性包含這個值。

等級取決於購買訊息時的消費金額。此外,這項資訊也會決定在聊天室使用者介面中醒目顯示訊息的顏色、訊息長度上限,以及訊息在跑馬燈中置頂的時間。

如要瞭解超級留言等級,請前往 YouTube 說明中心。(請參閱超級留言購買詳情的可展開部分)。在該清單中,購買金額最低的級別為第 1 級,次低金額為第 2 級,依此類推。
snippet.superStickerDetails object
這個物件包含超級貼圖事件的詳細資料。只有在訊息類型為 superStickerEvent 時,才會顯示這項資訊。
snippet.superStickerDetails.superStickerMetadata object
超級貼圖的詳細資料。
snippet.superStickerDetails.superStickerMetadata.stickerId string
用於識別貼圖圖片的專屬 ID。請注意,使用者在 YouTube 聊天視窗中只會看到超級貼圖訊息,不會看到圖片。不過,您無法透過 API 取得圖片網址。如要瞭解貼圖 ID 與超級貼圖的對應關係,請參閱這份 CSV 檔案。
snippet.superStickerDetails.superStickerMetadata.altText string
描述貼圖的文字字串。snippet.superStickerDetails.superStickerMetadata.language 欄位會識別文字的語言。呼叫 liveChatMessages.list 方法時,請將 hl 參數值設為所選文字語言。
snippet.superStickerDetails.superStickerMetadata.language string
snippet.superStickerDetails.superStickerMetadata.altText 屬性值的語言。
snippet.superStickerDetails.amountMicros unsigned long
購買金額,以購買幣別的百萬分之一為單位。舉例來說,如果購買金額為一美元,snippet.amountMicros 屬性值為 1000000。
snippet.superStickerDetails.currency string
購買時使用的幣別。值為 ISO 4217 貨幣代碼。
snippet.superStickerDetails.amountDisplayString string
字串,例如 $1.00,包含購買金額和幣別。這個字串會顯示給使用者。
snippet.superStickerDetails.tier unsigned integer
付費訊息的等級。請注意,在 superChatEvent 資源中,snippet.messageType 屬性包含這個值。

等級取決於購買訊息時的消費金額。此外,這項屬性也會決定聊天室使用者介面中醒目顯示訊息的顏色、訊息長度上限,以及訊息在跑馬燈中置頂的時間長度。

超級留言等級 (也涵蓋超級貼圖) 的相關說明,請參閱 YouTube 說明中心。(請參閱超級留言購買詳情的展開式部分)。在該清單中,購買金額最低的層級是第 1 級,次低的金額是第 2 級,依此類推。
snippet.pollDetails object
這個物件包含意見調查事件的詳細資料。只有在訊息類型為 pollEvent 時,才會顯示這個欄位。
snippet.pollDetails.metadata object
意見調查活動的詳細資料。
snippet.pollDetails.metadata.options object
即時意見調查中的選項。
snippet.pollDetails.metadata.options.optionText string
即時意見調查選項的文字。
snippet.pollDetails.metadata.options.tally string
即時意見調查選項的票數。只有在頻道擁有者授權 API 要求時,才會顯示票數。
snippet.pollDetails.metadata.questionText string
即時意見調查問題的文字。
snippet.pollDetails.metadata.status enum
即時投票活動的狀態。這項屬性的有效值如下:
  • unknown
  • active
  • closed
snippet.membershipGiftingDetails object
這個物件包含會籍贈送事件的詳細資料。只有在 message type 為 membershipGiftingEvent 時,才會顯示這個欄位。
snippet.membershipGiftingDetails.giftMembershipsCount integer
使用者購買的贈送的會籍數量。
snippet.membershipGiftingDetails.giftMembershipsLevelName string
使用者購買的贈送的會籍等級名稱。等級名稱由提供會員方案的 YouTube 頻道定義。在某些情況下,這個欄位不會填入任何內容。
snippet.giftMembershipReceivedDetails object
這個物件包含「收到贈送的會籍」事件的詳細資料。只有在 message type 為 giftMembershipReceivedEvent 時,才會顯示這個欄位。
snippet.giftMembershipReceivedDetails.memberLevelName string
觀眾所屬的會員等級名稱。這會與相關會籍贈送訊息的 snippet.membershipGiftingDetails.giftMembershipsLevelName 相符。等級名稱由提供會員方案的 YouTube 頻道定義。在某些情況下,這個欄位不會填入資料。
snippet.giftMembershipReceivedDetails.gifterChannelId string
購買會籍贈送的使用者 ID。這與相關會籍贈送訊息的 snippet.authorChannelId 相符。
snippet.giftMembershipReceivedDetails.associatedMembershipGiftingMessageId string
與這項贈送的會籍相關聯的會籍贈送訊息 ID。這個 ID 一律會參照 type 為 membershipGiftingEvent 的訊息。
snippet.giftDetails object
這個物件包含贈禮事件的詳細資料。只有在 message type 為 giftEvent 時才會顯示。
snippet.giftDetails.jewelsAmount integer
兌換禮物所需的寶石數量。
snippet.giftDetails.giftName string
禮物名稱。
snippet.giftDetails.giftUrl string
禮物素材資源的網址。
snippet.giftDetails.giftDuration object
顯示贈禮網址的時間長度。
snippet.giftDetails.giftDuration.seconds integer
顯示禮物網址的秒數。
snippet.giftDetails.giftDuration.nanos integer
顯示禮物網址的奈秒數。
snippet.giftDetails.hasVisualEffect boolean
禮物是否具有視覺效果。
snippet.giftDetails.comboCount integer
禮物的連續贈送次數;如果不是連續贈送,則為 0。
snippet.giftDetails.altText string
描述禮物的文字字串。
snippet.giftDetails.language string
altText 屬性值的語言。
authorDetails object
authorDetails 物件包含發布這則訊息的使用者詳細資料。
authorDetails.channelId string
作者的 YouTube 頻道 ID。
authorDetails.channelUrl string
作者的 YouTube 頻道網址。
authorDetails.displayName string
作者 YouTube 頻道的顯示名稱。
authorDetails.profileImageUrl string
作者 YouTube 頻道的顯示圖片網址。
authorDetails.isVerified boolean
這個值代表作者的身分是否已通過 YouTube 驗證。
authorDetails.isChatOwner boolean
這個值代表作者是否為聊天室擁有者。
authorDetails.isChatSponsor boolean
這個值表示作者是否為聊天室的贊助者。
authorDetails.isChatModerator boolean
這個值表示作者是否為聊天室的版主。