LiveChatMessages

Un recurso liveChatMessage representa un mensaje de chat en un chat en vivo de YouTube. El recurso puede contener detalles sobre varios tipos de mensajes, como un mensaje de texto publicado recientemente o un evento de financiación de fans.

La función de chat en vivo está habilitada de forma predeterminada para las transmisiones en vivo y está disponible mientras el evento en vivo está activo. (Después de que finalice el evento, el chat en vivo ya no estará disponible).

Métodos

La API admite los siguientes métodos para los recursos liveChatMessages:

list
Enumera los mensajes del chat en vivo de un chat específico. Pruébala ahora.
streamList
Habilita una conexión de transmisión por servidor para recibir mensajes de chat en vivo de un chat específico con latencia baja. Pruébala ahora.
insertar
Agrega un mensaje o una encuesta a un chat en vivo. Pruébala ahora.
transition
Realiza la transición del estado de un mensaje en vivo. Pruébala ahora.
borrar
Borra un mensaje de chat. El propietario del canal o un moderador del chat en vivo deben autorizar la solicitud a la API. Pruébala ahora.

Representación de recursos

En la siguiente estructura JSON, se muestra el formato de un recurso 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
    },
    "messageDeletedDetails": {
      "deletedMessageId": 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
    },
  },
  "authorDetails": {
    "channelId": string,
    "channelUrl": string,
    "displayName": string,
    "profileImageUrl": string,
    "isVerified": boolean,
    "isChatOwner": boolean,
    "isChatSponsor": boolean,
    "isChatModerator": boolean
  },
}

Propiedades

La siguiente tabla define las propiedades que aparecen en este recurso:

Propiedades
kind string
Identifica el tipo de recurso de la API. El valor será youtube#liveChatMessage.
etag etag
Es el ETag de este recurso.
id string
Es el ID que YouTube asigna para identificar el mensaje de forma única.
snippet object
El objeto snippet contiene detalles principales sobre el mensaje de chat.
snippet.type string
Es el tipo del mensaje. Esta propiedad siempre está presente y su valor determina qué campos están presentes en el recurso.

Los valores válidos para esta propiedad son los siguientes:
  • chatEndedEvent: El chat finalizó y no se pueden insertar más mensajes después de este. Esto ocurrirá de forma natural un tiempo después de que finalice la transmisión. Este tipo de mensaje no se envía para los chats en vivo en la transmisión predeterminada de un canal.
  • messageDeletedEvent: Un moderador borró un mensaje. El campo author contiene los detalles del moderador. Este evento no tiene contenido para mostrar.
  • sponsorOnlyModeEndedEvent: El chat ya no está en modo exclusivo para patrocinadores, lo que significa que los usuarios que no son patrocinadores ahora pueden enviar mensajes. Este evento no tiene contenido para mostrar.
  • sponsorOnlyModeStartedEvent: El chat entró en el modo exclusivo para patrocinadores, lo que significa que solo los patrocinadores pueden enviar mensajes. Este evento no tiene contenido para mostrar.
  • newSponsorEvent: Un usuario nuevo patrocinó el canal propietario del chat en vivo. Los campos author contienen los detalles del nuevo patrocinador.
  • memberMilestoneChatEvent: Un usuario envió un mensaje de recompensa para miembros.
  • superChatEvent: Un usuario compró un Súper chat.
  • superStickerEvent: Un usuario compró una Súper calcomanía.
  • textMessageEvent: Un usuario envió un mensaje de texto.
  • tombstone: Una lápida indica que existía un mensaje con este ID y hora de publicación, pero que se borró. No se envía cuando se borra un mensaje, sino que se muestra para indicar dónde estaba el mensaje antes de que se borrara. Solo los campos snippet.liveChatId, snippet.type y snippet.publishedAt están presentes en este tipo de mensaje.
  • userBannedEvent: Un moderador prohibió a un usuario. El campo author contiene los detalles del moderador.
  • membershipGiftingEvent: Un usuario compró membresías para otros usuarios.
  • giftMembershipReceivedEvent: Un usuario recibió una membresía de regalo.
  • pollDetails: Un usuario creó una encuesta en vivo.
snippet.liveChatId string
Es el ID que identifica de forma única el chat en vivo con el que se asocia el mensaje. El ID del chat en vivo asociado a una transmisión se devuelve en la propiedad snippet.liveChatId del recurso liveBroadcast.
snippet.authorChannelId string
Es el ID del usuario que escribió el mensaje. Este campo solo se completa para los siguientes tipos de mensajes:
  • Si el tipo de mensaje es textMessageEvent, el valor de la propiedad identifica al usuario que escribió el mensaje.
  • Si el tipo de mensaje es fanFundingEvent, el valor de la propiedad identifica al usuario que financió la transmisión.
  • Si el tipo de mensaje es messageDeletedEvent, el valor de la propiedad identifica al moderador que borró el mensaje.
  • Si el tipo de mensaje es newSponsorEvent, el valor de la propiedad identifica al usuario que acaba de convertirse en patrocinador.
  • Si el tipo de mensaje es memberMilestoneChatEvent, el valor de la propiedad identifica al miembro que envió el mensaje.
  • Si el tipo de mensaje es userBannedEvent, el valor de la propiedad identifica al moderador que prohibió al usuario.
  • Si el tipo de mensaje es membershipGiftingEvent, el valor de la propiedad identifica al usuario que realizó la compra de regalo de la membresía.
  • Si el tipo de mensaje es giftMembershipReceivedEvent, el valor de la propiedad identifica al usuario que recibió la membresía de regalo.
  • Si el tipo de mensaje es pollEvent, el valor de la propiedad identifica al usuario que creó una encuesta en vivo.
snippet.publishedAt datetime
Fecha y hora en que se publicó originalmente el mensaje. El valor se especifica en formato ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ).
snippet.hasDisplayContent boolean
Indica si el mensaje tiene contenido que se debe mostrar a los usuarios.
snippet.displayMessage string
Contiene una cadena que se muestra a los usuarios. Este campo no está presente si el tipo de mensaje es chatEndedEvent o tombstone.
snippet.fanFundingEventDetails object
Nota: Este objeto y sus propiedades secundarias dejaron de estar disponibles. A partir del 28 de febrero de 2017, los recursos de liveChatMessage ya no devolverán detalles sobre los eventos de Financiación de fans.

Este objeto contiene detalles sobre el evento de financiación. Solo está presente si el tipo de mensaje es fanFundingEvent.
snippet.fanFundingEventDetails.amountMicros unsigned long
Nota: Esta propiedad dejó de estar disponible.

Es el importe del fondo.
snippet.fanFundingEventDetails.currency string
Nota: Esta propiedad dejó de estar disponible.

Es la moneda en la que se realizó el fondo.
snippet.fanFundingEventDetails.amountDisplayString string
Nota: Esta propiedad dejó de estar disponible.

Es una cadena renderizada que muestra al usuario el importe y la moneda del fondo.
snippet.fanFundingEventDetails.userComment string
Nota: Esta propiedad dejó de estar disponible.

Es el comentario que el usuario agregó a este evento de financiación de fans.
snippet.textMessageDetails object
Este objeto contiene detalles sobre el mensaje de texto. Solo está presente si el tipo de mensaje es textMessageEvent.
snippet.textMessageDetails.messageText string
Es el mensaje del usuario.
snippet.messageDeletedDetails object
Este objeto contiene detalles sobre un mensaje borrado por un moderador del chat o por el propietario del canal de la transmisión en vivo. Solo está presente si el tipo de mensaje es messageDeletedEvent.
snippet.messageDeletedDetails.deletedMessageId string
Es el ID que identifica de forma única el mensaje borrado. El valor es el mismo que el valor de la propiedad id del mensaje de texto original. Por ejemplo, si un textMessageEvent tiene un valor de propiedad id de 123 y, luego, se borra ese mensaje, el valor de snippet.messageDeletedDetails.deletedMessageId será 123 para ese mensaje.

Si almacenas en caché los mensajes de chat después de recuperarlos, usa el valor de esta propiedad para identificar el mensaje que ya no se debe mostrar.
snippet.userBannedDetails object
Este objeto contiene detalles sobre un usuario que fue expulsado del chat. También contiene detalles sobre la prohibición en sí. Se puede prohibir el acceso de los usuarios a un chat de forma permanente o temporal.
snippet.userBannedDetails.bannedUserDetails object
Este objeto contiene información sobre el usuario vetado.
snippet.userBannedDetails.bannedUserDetails.channelId string
Es el ID del canal de YouTube del usuario bloqueado.
snippet.userBannedDetails.bannedUserDetails.channelUrl string
Es la URL del canal de YouTube del usuario bloqueado.
snippet.userBannedDetails.bannedUserDetails.displayName string
Es el nombre visible del canal de YouTube del usuario vetado.
snippet.userBannedDetails.bannedUserDetails.profileImageUrl string
Avatar del canal de YouTube del usuario vetado.
snippet.userBannedDetails.banType string
Es el tipo de bloqueo. Los valores válidos para esta propiedad son:
  • permanente
  • temporal
snippet.userBannedDetails.banDurationSeconds unsigned long
Es la duración de la prohibición. Esta propiedad solo está presente si el valor de la propiedad snippet.userBannedDetails.banType es temporary.
snippet.memberMilestoneChatDetails object
Este objeto contiene detalles sobre un evento de hito de miembro. Solo está presente si el tipo de mensaje es memberMilestoneChatEvent.
snippet.memberMilestoneChatDetails.userComment string
Es el comentario que agregó el miembro a este mensaje de recompensa para miembros. Este campo está vacío para los mensajes sin comentarios del miembro.
snippet.memberMilestoneChatDetails.memberMonth unsigned integer
Es la cantidad total de meses (redondeada hacia arriba) en los que el usuario fue miembro y que le otorgaron este mensaje de recompensa para miembros. Es la misma cantidad de meses que se muestra a los usuarios de YouTube.
snippet.memberMilestoneChatDetails.memberLevelName string
Es el nombre del nivel en el que el usuario es miembro. Los nombres de los niveles los define el canal de YouTube que ofrece la membresía. En algunas situaciones, este campo no se completa.
snippet.newSponsorDetails object
Este objeto contiene detalles sobre el evento de anuncio de miembro nuevo. Solo se establece si el tipo es newSponsorEvent. "Miembro" es el término que se usa para "patrocinador".
snippet.newSponsorDetails.memberLevelName string
Es el nombre del nivel en el que el usuario es miembro. Los nombres de los niveles los define el canal de YouTube que ofrece la membresía. En algunas situaciones, este campo no se completa.
snippet.newSponsorDetails.isUpgrade bool
Indica si el usuario acaba de actualizar su nivel. Para los usuarios que no eran miembros en el momento de la compra, el valor del campo es false.
snippet.superChatDetails object
Este objeto contiene detalles sobre un evento de Súper chat. Solo está presente si el tipo de mensaje es superChatEvent.
snippet.superChatDetails.amountMicros unsigned long
Es el importe de la compra, en micros de la moneda de compra. Por ejemplo, si el importe de la compra es de un dólar, el valor de la propiedad snippet.amountMicros es 1000000.
snippet.superChatDetails.currency string
Moneda en la que se realizó la compra. El valor es un código de moneda ISO 4217.
snippet.superChatDetails.amountDisplayString string
Es una cadena, como $1.00, que contiene el importe de la compra y la moneda. La cadena está diseñada para mostrarse al usuario.
snippet.superChatDetails.userComment string
Es el comentario que el usuario agregó a este evento de Súper chat.
snippet.superChatDetails.tier unsigned integer
Es el nivel del mensaje pagado. Ten en cuenta que, en un recurso superChatEvent, la propiedad snippet.messageType contiene este valor.

El nivel se basa en la cantidad de dinero que se gastó para comprar el mensaje. También determina el color que se usa para destacar el mensaje en la IU del chat en vivo, la longitud máxima del mensaje y el tiempo que el mensaje se fija en el ticker.

Los niveles de Súper chat se documentan en el Centro de ayuda de YouTube. (Consulta la sección desplegable sobre los detalles de compra de Super Chats). En esa lista, el nivel con el importe de compra más bajo es el nivel 1, el siguiente importe más bajo es el nivel 2, y así sucesivamente.
snippet.superStickerDetails object
Este objeto contiene detalles sobre un evento de Súper calcomanía. Solo está presente si el tipo de mensaje es superStickerEvent.
snippet.superStickerDetails.superStickerMetadata object
Son los detalles de la Súper calcomanía.
snippet.superStickerDetails.superStickerMetadata.stickerId string
Es un ID único que identifica la imagen de la calcomanía. Ten en cuenta que la imagen solo se muestra como parte del mensaje de Súper calcomanía cuando los usuarios ven la ventana de chat en YouTube. Sin embargo, la URL de la imagen no está disponible a través de la API. Solo como referencia, puedes encontrar qué IDs de calcomanías se relacionan con qué Súper calcomanías en este archivo CSV.
snippet.superStickerDetails.superStickerMetadata.altText string
Es una cadena de texto que describe la calcomanía. El campo snippet.superStickerDetails.superStickerMetadata.language identifica el idioma del texto. Cuando llames al método liveChatMessages.list, establece el valor del parámetro hl en el idioma elegido para el texto.
snippet.superStickerDetails.superStickerMetadata.language string
Es el idioma del valor de la propiedad snippet.superStickerDetails.superStickerMetadata.altText.
snippet.superStickerDetails.amountMicros unsigned long
Es el importe de la compra, en micros de la moneda de compra. Por ejemplo, si el importe de la compra es de un dólar, el valor de la propiedad snippet.amountMicros es 1000000.
snippet.superStickerDetails.currency string
Moneda en la que se realizó la compra. El valor es un código de moneda ISO 4217.
snippet.superStickerDetails.amountDisplayString string
Es una cadena, como $1.00, que contiene el importe de la compra y la moneda. La cadena está diseñada para mostrarse al usuario.
snippet.superStickerDetails.tier unsigned integer
Es el nivel del mensaje pagado. Ten en cuenta que, en un recurso superChatEvent, la propiedad snippet.messageType contiene este valor.

El nivel se basa en la cantidad de dinero que se gastó para comprar el mensaje. También determina el color que se usa para destacar el mensaje en la IU del chat en vivo, la longitud máxima del mensaje y el tiempo que el mensaje permanece fijado en el ticker.

Los niveles de Súper chat, que también abarcan las Súper calcomanías, se documentan en el Centro de ayuda de YouTube. (Consulta la sección desplegable sobre los detalles de compra de Super Chats). En esa lista, el nivel con el importe de compra más bajo es el nivel 1, el siguiente importe más bajo es el nivel 2, y así sucesivamente.
snippet.pollDetails object
Este objeto contiene detalles sobre un evento de encuesta. Solo está presente si el tipo de mensaje es pollEvent.
snippet.pollDetails.metadata object
Son los detalles sobre el evento de la encuesta.
snippet.pollDetails.metadata.options object
Son las opciones de la encuesta en vivo.
snippet.pollDetails.metadata.options.optionText string
Es el texto de la opción de la encuesta en vivo.
snippet.pollDetails.metadata.options.tally string
Es el recuento de la opción de la encuesta en vivo. El recuento solo está presente si el propietario del canal autoriza la solicitud a la API.
snippet.pollDetails.metadata.questionText string
Es el texto de la pregunta de la encuesta en vivo.
snippet.pollDetails.metadata.status enum
Es el estado del evento de encuesta en vivo. Los valores válidos para esta propiedad son los siguientes:
  • unknown
  • active
  • closed
snippet.membershipGiftingDetails object
Este objeto contiene detalles sobre un evento de regalo de membresía. Solo está presente si message type es membershipGiftingEvent.
snippet.membershipGiftingDetails.giftMembershipsCount integer
Es la cantidad de membresías de regalo que compró el usuario.
snippet.membershipGiftingDetails.giftMembershipsLevelName string
Es el nombre del nivel de las membresías de regalo que compró el usuario. Los nombres de los niveles los define el canal de YouTube que ofrece la membresía. En algunas situaciones, este campo no se completa.
snippet.giftMembershipReceivedDetails object
Este objeto contiene detalles sobre un evento de membresía de regalo recibida. Solo está presente si message type es giftMembershipReceivedEvent.
snippet.giftMembershipReceivedDetails.memberLevelName string
Es el nombre del nivel en el que el usuario es miembro. Coincide con el snippet.membershipGiftingDetails.giftMembershipsLevelName del mensaje asociado de regalo de membresía. Los nombres de los niveles los define el canal de YouTube que ofrece la membresía. En algunas situaciones, este campo no se completa.
snippet.giftMembershipReceivedDetails.gifterChannelId string
ID del usuario que realizó la compra de la membresía de regalo. Coincide con el snippet.authorChannelId del mensaje asociado de regalo de membresía.
snippet.giftMembershipReceivedDetails.associatedMembershipGiftingMessageId string
ID del mensaje de regalo de membresía relacionado con esta membresía de regalo. Este ID siempre hará referencia a un mensaje cuyo type sea membershipGiftingEvent.
authorDetails object
El objeto authorDetails contiene detalles adicionales sobre el usuario que publicó este mensaje.
authorDetails.channelId string
ID del canal de YouTube del autor.
authorDetails.channelUrl string
URL del canal de YouTube del autor.
authorDetails.displayName string
Es el nombre visible del canal de YouTube del autor.
authorDetails.profileImageUrl string
Es la URL del avatar del canal de YouTube del autor.
authorDetails.isVerified boolean
Este valor indica si YouTube verificó la identidad del autor.
authorDetails.isChatOwner boolean
Este valor indica si el autor es el propietario del chat en vivo.
authorDetails.isChatSponsor boolean
Este valor indica si el autor es patrocinador del chat en vivo.
authorDetails.isChatModerator boolean
Este valor indica si el autor es moderador del chat en vivo.