LiveChatMessages: streamList

このメソッドは、特定のチャットのチャット メッセージを低レイテンシで受信できるようにするサーバー ストリーミング接続を確立します。これは、チャット メッセージを消費する最も効率的な方法です。更新をポーリングする必要がなく、新しいメッセージが利用可能になるとすぐにクライアントに push されるためです。

最初に接続すると、API は最近のチャット履歴を含む一連のメッセージを送信します。新しいメッセージが投稿されると、サーバーは開いている接続を介してメッセージを送信し続けます。

各サーバー レスポンス内のメッセージは、古い順に並べ替えられます。各レスポンスには nextPageToken も含まれます。クライアントが切断された場合は、このトークンを使用してストリームを再開できます。これを行うには、新しい接続リクエストの pageToken パラメータの値として、最後に受信した nextPageToken を指定します。API は、中断したところからメッセージの送信を再開します。

割り当てへの影響: このメソッドを呼び出すと、5 ユニットの割り当て費用が発生します。

デモ

このエンドポイントの Python デモについては、チャットのストリーミング ガイドをご覧ください。

リクエスト

パラメータ

次の表に、このクエリがサポートするパラメータを示します。このリストのパラメータはすべてクエリ パラメータです。

パラメータ
必須パラメータ
liveChatId string
liveChatId パラメータは、メッセージが返されるチャットの ID を指定します。ブロードキャストに関連付けられたチャット ID は、liveBroadcast リソースの snippet.liveChatId プロパティで返されます。
part string
part パラメータは、API レスポンスに含める liveChatMessage リソース部分を指定します。サポートされている値は id、snippet、authorDetails です。
オプション パラメータ
hl string
hl パラメータは、YouTube ウェブサイトがサポートする特定のアプリケーション言語のローカライズされた通貨表示文字列を取得するよう API に指示します。たとえば、英語では通貨は $1.50 と表示されますが、フランス語では 1,50$ と表示されます。

パラメータ値は、i18nLanguages.list メソッドによって返されるリストに含まれる言語コードにする必要があります。
maxResults unsigned integer

maxResults パラメータは、結果セットで返されるメッセージの最大数を指定します。有効な値は 200 から 2000 です。デフォルト値は 500 です。

継続トークンなしで行われた最初のリクエストには、最新のイベントのみが含まれます。が指定されている場合、この値は maxResults より小さくなることがあります。

この API は、継続トークンなしで行われた最初のリクエストで返されたイベントよりも古いイベントは取得しません。

pageToken string
pageToken パラメータは、返される結果セット内の特定のページを識別します。API レスポンスでは、nextPageToken プロパティによって、取得可能な他のページが識別されます。
profileImageSize unsigned integer
profileImageSize パラメータは、結果セットで返されるユーザー プロフィール写真のサイズを指定します。画像は正方形です。デフォルト値は 88 です。つまり、画像は 88 ピクセル x 88 ピクセルになります。有効な値は 16~720 の範囲です。

リクエストの本文

このメソッドを呼び出すときにリクエスト本文を指定しないでください。

レスポンス

成功すると、このメソッドは次の構造を含むレスポンスの本文を返します。

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

プロパティ

次の表は、このリソースで使用されているプロパティの定義を示したものです。

プロパティ
kind string
API リソースのタイプを識別します。値は youtube#liveChatMessageListResponse になります。
etag etag
このリソースの Etag。
nextPageToken string
結果セットの次のページを取得するために pageToken パラメータの値として使用できるトークン。
offlineAt datetime
基盤となるライブ配信がオフラインになった日時。このプロパティは、ストリームがすでにオフラインになっている場合にのみ存在します。値は ISO 8601(YYYY-MM-DDThh:mm:ss.sZ)形式で指定します。
pageInfo object
pageInfo オブジェクトは、結果セットのページング情報をカプセル化します。
pageInfo.totalResults integer
結果セット内の結果の総数。
pageInfo.resultsPerPage integer
API レスポンスに含まれる結果の数。
items[] list
メッセージのリスト。リストの各項目は liveChatMessage リソースです。
activePollItem object
メッセージ内のアンケート データ。各アンケートは、アクティブなアンケートを表すタイプ pollEvent の liveChatMessage リソースです。1 つのチャットに設定できるアンケートは 1 つのみです。

エラー

次の表に、このメソッドの呼び出しに対して API から返されるエラー メッセージを示します。詳細については、エラー メッセージのドキュメントをご覧ください。

gRPC を使用して接続する場合:

gRPC エラーコード エラーの詳細 説明
PERMISSION_DENIED (7) The caller does not have permission 指定されたチャットのメッセージを取得するために必要な権限がありません。
INVALID_ARGUMENT (3) Request contains an invalid argument 指定されたパラメータを解析できません。liveChatId などのパラメータが正しい形式であることを確認します。
FAILED_PRECONDITION (9)* Precondition check failed LIVE_CHAT_DISABLED。指定されたチャットは無効になっています。
FAILED_PRECONDITION (9)* Precondition check failed LIVE_CHAT_ENDED. 終了したチャットのメッセージを取得することはできません。
NOT_FOUND (5) Requested entity was not found 取得しようとしているチャットが見つかりません。リクエストの liveChatId パラメータの値が正しいことを確認します。
RESOURCE_EXHAUSTED (8) Resource has been exhausted (e.g. check quota) 前のリクエストの直後にリクエストが送信されました。このエラーは、メッセージを取得する API リクエストが YouTube の更新頻度よりも頻繁に送信され、帯域幅が無駄になっている場合に発生します。

* gRPC の制限により、エラーコードに基づいて LIVE_CHAT_DISABLED のケースと LIVE_CHAT_ENDED のケースを区別することはできません。YouTube では現在、この問題の解決に取り組んでいます。

ウェブ トラフィックを使用して接続する場合:

エラータイプ エラーの詳細 説明
HttpStatus.FORBIDDEN (403) forbidden 指定されたチャットのメッセージを取得するために必要な権限がありません。
HttpStatus.BAD_REQUEST (400) Reason for invalid request, e.g. pageTokenInvalid 指定されたパラメータを解析できません。liveChatId などのパラメータが正しい形式であることを確認します。
HttpStatus.FORBIDDEN (403) liveChatDisabled LIVE_CHAT_DISABLED。指定されたチャットは無効になっています。
HttpStatus.FORBIDDEN (403) liveChatEnded LIVE_CHAT_ENDED. 終了したチャットのメッセージを取得することはできません。
HttpStatus.NOT_FOUND (404) liveChatNotFound 取得しようとしているチャットが見つかりません。リクエストの liveChatId パラメータの値が正しいことを確認します。
HttpStatus.FORBIDDEN (403) rateLimitExceeded 前のリクエストの直後にリクエストが送信されました。このエラーは、メッセージを取得する API リクエストが YouTube の更新頻度よりも頻繁に送信され、帯域幅が無駄になっている場合に発生します。