LiveChatMessages: streamList

Este método establece una conexión de transmisión desde el servidor que te permite recibir mensajes del chat en vivo de un chat específico con latencia baja. Esta es la forma más eficiente de consumir mensajes de chat en vivo, ya que envía los mensajes nuevos a tu cliente en cuanto están disponibles, en lugar de requerir que sondeos para obtener actualizaciones.

Cuando te conectas por primera vez, la API envía una serie de mensajes que contienen el historial de chat reciente. A medida que se publiquen mensajes nuevos, el servidor seguirá enviándolos a través de la conexión abierta.

Los mensajes de cada respuesta del servidor se ordenan del más antiguo al más reciente. Cada respuesta también incluye un nextPageToken. Si el cliente se desconecta, puedes usar este token para reanudar la transmisión. Para ello, proporciona el último nextPageToken que recibiste como el valor del parámetro pageToken en tu nueva solicitud de conexión. Luego, la API reanudará el envío de mensajes desde el punto en que lo dejaste.

Demostración

Para ver una demostración en Python de este endpoint, consulta la guía de chat en vivo de transmisión.

Solicitud

Parámetros

En la siguiente tabla, se enumeran los parámetros que admite esta búsqueda. Todos los parámetros mencionados son parámetros de consulta.

Parámetros
Parámetros obligatorios
liveChatId string
El parámetro liveChatId especifica el ID del chat cuyos mensajes se devolverán. El ID del chat en vivo asociado a una transmisión se devuelve en la propiedad snippet.liveChatId del recurso liveBroadcast.
part string
El parámetro part especifica las partes del recurso liveChatMessage que incluirá la respuesta de la API. Los valores admitidos son id, snippet y authorDetails.
Parámetros opcionales
hl string
El parámetro hl indica a la API que recupere una cadena de visualización de moneda localizada para un idioma de la aplicación específico que admite el sitio web de YouTube. Por ejemplo, en inglés, la moneda se mostraría como $1.50, pero en francés, se mostraría como 1,50$.

El valor del parámetro debe ser un código de idioma incluido en la lista que devuelve el método i18nLanguages.list.
maxResults unsigned integer
El parámetro maxResults especifica la cantidad máxima de mensajes que se deben devolver en el conjunto de resultados. Los valores aceptables son del 200 al 2000, inclusive. El valor predeterminado es 500.
pageToken string
El parámetro pageToken identifica una página específica en el conjunto de resultados que se debe devolver. En una respuesta de la API, la propiedad nextPageToken identifica otras páginas que se podrían recuperar.
profileImageSize unsigned integer
El parámetro profileImageSize especifica el tamaño de las fotos de perfil de los usuarios que se deben mostrar en el conjunto de resultados. Las imágenes son cuadradas. El valor predeterminado es 88, lo que significa que las imágenes tendrán un tamaño de 88 px por 88 px. Los valores aceptables se encuentran en el rango de 16 a 720, inclusive.

Cuerpo de la solicitud

No proporciones un cuerpo de solicitud cuando llames a este método.

Respuesta

Si se aplica correctamente, este método muestra un cuerpo de respuesta con la siguiente estructura:

{
  "kind": "youtube#liveChatMessageListResponse",
  "etag": etag,
  "nextPageToken": string,
  "pollingIntervalMillis": unsigned integer,
  "offlineAt": datetime,
  "pageInfo": {
    "totalResults": integer,
    "resultsPerPage": integer
  },
  "items": [
    liveChatMessage Resource
  ],
  "activePollItem": liveChatMessage Resource
}

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#liveChatMessageListResponse.
etag etag
Es el ETag de este recurso.
nextPageToken string
Es el token que se puede usar como valor del parámetro pageToken para recuperar la siguiente página del conjunto de resultados.
offlineAt datetime
Fecha y hora en que la transmisión en vivo subyacente dejó de estar disponible. Esta propiedad solo está presente si la transmisión ya está sin conexión. El valor se especifica en formato ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ).
pageInfo object
El objeto pageInfo encapsula la información de paginación del conjunto de resultados.
pageInfo.totalResults integer
Es la cantidad total de resultados en el conjunto de resultados.
pageInfo.resultsPerPage integer
Es la cantidad de resultados incluidos en la respuesta de la API.
items[] list
Es una lista de mensajes. Cada elemento de la lista es un recurso liveChatMessage.
activePollItem object
Son los datos de la encuesta en el mensaje. Cada encuesta es un recurso liveChatMessage con el tipo pollEvent, que representa una encuesta activa. Solo puede haber una encuesta por chat.

Errores

En la siguiente tabla, se identifican los mensajes de error que la API podría devolver en respuesta a una llamada a este método. Para obtener más detalles, consulta la documentación del mensaje de error.

Cuando uses gRPC para conectarte, haz lo siguiente:

Código de error de gRPC Detalle del error Descripción
PERMISSION_DENIED (7) The caller does not have permission No tienes los permisos necesarios para recuperar los mensajes del chat en vivo especificado.
INVALID_ARGUMENT (3) Request contains an invalid argument No se pudieron analizar los parámetros proporcionados. Asegúrate de que el liveChatId y otros parámetros tengan el formato correcto.
FAILED_PRECONDITION (9)* Precondition check failed LIVE_CHAT_DISABLED. El chat en vivo especificado está inhabilitado.
FAILED_PRECONDITION (9)* Precondition check failed LIVE_CHAT_ENDED. No puedes recuperar los mensajes del chat en vivo finalizado.
NOT_FOUND (5) Requested entity was not found No se puede encontrar el chat en vivo que intentas recuperar. Comprueba el valor del parámetro liveChatId de la solicitud para asegurarte de que sea correcto.
RESOURCE_EXHAUSTED (8) Resource has been exhausted (e.g. check quota) La solicitud se envió demasiado rápido después de la anterior. Este error ocurre cuando las solicitudes a la API para recuperar mensajes se envían con mayor frecuencia que las tasas de actualización de YouTube, lo que desperdicia ancho de banda de forma innecesaria.

* Debido a una limitación de gRPC, no es posible distinguir, según el código de error, entre un caso de LIVE_CHAT_DISABLED y un caso de LIVE_CHAT_ENDED. YouTube está trabajando activamente en una solución para abordar este problema.

Cuando uses el tráfico web para conectarte, haz lo siguiente:

Tipo de error Detalle del error Descripción
HttpStatus.FORBIDDEN (403) forbidden No tienes los permisos necesarios para recuperar los mensajes del chat en vivo especificado.
HttpStatus.BAD_REQUEST (400) Reason for invalid request, e.g. pageTokenInvalid No se pudieron analizar los parámetros proporcionados. Asegúrate de que el liveChatId y otros parámetros tengan el formato correcto.
HttpStatus.FORBIDDEN (403) liveChatDisabled LIVE_CHAT_DISABLED. El chat en vivo especificado está inhabilitado.
HttpStatus.FORBIDDEN (403) liveChatEnded LIVE_CHAT_ENDED. No puedes recuperar los mensajes del chat en vivo finalizado.
HttpStatus.NOT_FOUND (404) liveChatNotFound No se puede encontrar el chat en vivo que intentas recuperar. Comprueba el valor del parámetro liveChatId de la solicitud para asegurarte de que sea correcto.
HttpStatus.FORBIDDEN (403) rateLimitExceeded La solicitud se envió demasiado rápido después de la anterior. Este error ocurre cuando las solicitudes a la API para recuperar mensajes se envían con mayor frecuencia que las tasas de actualización de YouTube, lo que desperdicia ancho de banda de forma innecesaria.