LiveChatMessages: streamList

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

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

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

デモ

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

リクエスト

パラメータ

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

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

パラメータ値は、i18nLanguages.list メソッドから返されるリストに含まれる言語コードである必要があります。
maxResults unsigned integer
maxResults パラメータは、結果セットで返されるメッセージの最大数を指定します。設定可能な値は 2002000 です。デフォルト値は 500 です。
pageToken string
pageToken パラメータは、返される結果セット内の特定のページを識別します。API レスポンスでは、nextPageToken プロパティは取得可能な他のページを識別します。
profileImageSize unsigned integer
profileImageSize パラメータは、結果セットで返されるユーザー プロフィール写真のサイズを指定します。画像は正方形です。デフォルト値は 88 です。つまり、画像は 88 ピクセル × 88 ピクセルになります。有効な値は 16720 です。

リクエストの本文

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

レスポンス

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

{
  "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 8601YYYY-MM-DDThh:mm:ss.sZ)形式で指定します。
pageInfo object
pageInfo オブジェクトは、結果セットのページング情報をカプセル化します。
pageInfo.totalResults integer
結果セット内の結果の総数。
pageInfo.resultsPerPage integer
API レスポンスに含まれる結果の数。
items[] list
メッセージのリスト。リスト内の各項目は liveChatMessage リソースです。
activePollItem object
メッセージ内のアンケート データ。各アンケートは、アクティブなアンケートを表すタイプ pollEventliveChatMessage リソースです。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 の更新頻度よりも頻繁に送信され、帯域幅が無駄になっている場合に発生します。