すべてのコマンドは同じ方法で実行されます
screenrig [--json | --human] [--api-url URL] [--config PATH] [--request-id ID]
[--project-id ID] [--idempotency-key KEY] [--timeout MS] [--beta-key KEY] <command> [args]グローバルフラグ
| フラグ | タイプ | デフォルト | メモ |
|---|---|---|---|
--json | boolean | 操作用JSON | 明示的なJSON出力。互換性のため保持。構造化ヘルプも選択します。--human と併用不可。 |
--human | boolean | オフ | 人間が読める運用出力を選択してください。--json と併用できません。 |
--project-id ID | string | 最終使用プロジェクト | 選択を変更せずにキャッシュされたプロジェクトへの呼び出しを修正します。各コマンドは実行中、対象と回復状態を保持します。 |
--api-url URL | string | https://api.screenrig.ai | コントロールプレーンの起点。SCREENRIG_API_URL は同じことを設定します。 |
--config PATH | パス | ユーザー設定ファイル | 特定の設定ファイルを使用してください。SCREENRIG_CONFIG は同じことを設定します。 |
--request-id ID | string | 実行ごとに生成 | 独自のリクエストID。request_idとして返されます。レポートに保持してください。 |
--idempotency-key KEY | string | 書き込みごとに派生 | あいまいな書き込みを再試行するには同じキーを再利用します。サーバーは24時間元の結果を返します。同じキーで異なる本文はidempotency_mismatchです。 |
--timeout MS | integer | 1リクエストあたり30,000 | 各HTTPリクエストに制限を設けます。操作待ちのコマンドでは待機期限となり、デフォルトは120000です。 |
--beta-key KEY | string | 未設定 | コントロールプレーンが要求した場合のみ送信されます。SCREENRIG_BETA_KEY は同じことを設定します。 |
--help, -h | boolean | オフ | コマンドまたはグループのヘルプを印刷して終了します。構造化ヘルプには--jsonを追加してください。 |
--version, -V | boolean | オフ | バンドルされたCLIのバージョンを印刷して終了します。versionコマンドと同じです。 |
環境
| 変数 | エフェクト |
|---|---|
SCREENRIG_API_URL | 保存された構成を上書きするコントロールプレーンの起点。 |
SCREENRIG_CONFIG | 設定ファイルへのパス。 |
XDG_CONFIG_HOME | 設定ディレクトリのベース。Windowsでは%APPDATA%\screenrig、または~/.config/screenrig。 |
SCREENRIG_BETA_KEY | コントロールプレーンが要求する場合のベータキー。 |
SCREENRIG_FFMPEG | media uploadから取得すべきでない場合の、ffmpegへの絶対パスです。PATHは含みません。 |
SCREENRIG_FFPROBE | ffprobeへの絶対パスです。 |
SCREENRIG_CWEBP | cwebp への絶対パス、フォールバックのエンコーダーです。 |
SCREENRIG_CLIENT_ID | この サービスクライアント (scl_…) として実行し、次の2つのうち正確に1つを指定してください。 |
SCREENRIG_CLIENT_KEY_FILE | サービスクライアントの秘密鍵ファイル。JWK または PEM で、private_key_jwt アサーションに署名されています。 |
SCREENRIG_CLIENT_SECRET | サービスクライアントのシークレット。HTTP Basic で送信されます。 |
トークンフラグもトークン環境変数もありません。CLIはプラグインがこのインストール用に保存したセッションをユーザープライベートファイルから読み、プラグインアップグレード後も保持し、自動で更新します。SCREENRIG_CLIENT_ID が設定されている場合はそのサービスクライアントとしてサインインし、トークンをメモリに保持し、保存された設定を読み書きしません。
出力
操作コマンドはデフォルトでJSONをstdoutに書き込みます。エラーも含みます。単一の結果は封筒を持ちます:ok、次に成功時はdata、request_id、operation_id、warnings[]、失敗時はerror。進行状況、安全なURL、人間のメモはstderrに送られます。events followはNDJSONを出力します:イベントごとに1行のJSON封筒。stdoutのリダイレクトはフォーマットを変えません。
手動検査には --human を使用してください。イベントコマンドはイベントごとに 1 行の logfmt を出力します。ヘルプとベアコマンドグループはデフォルトで読みやすいテキストのままです。構造化された発見には screenrig --json playlist --help を使用してください。--json と --human は併用できません。
古いプラグインバンドルは操作結果に明示的な--jsonを必要とする場合があります。古いバンドルを扱う際はインストール済みCLIのヘルプを確認してください。プレイリストの作成ファイルはJSONドキュメントのままで、コマンド結果のエンベロープは編集可能なプレイリストドキュメントではありません。
エラーエンベロープは error.status、安定した error.code、および次に実行すべきものを正確に示すことが多い error.next.command を含みます。文章ではなくこれらで分岐してください。
人物のレビューを待つ変更はエラーではなく成功です:ok: true、終了 0、data.status: pending_review は review とともに、レビュー URL を示す pending_review 警告、data.next は reviews show ID を指します。承認されたメディアの再タグ付けは ok、終了 0、代わりに警告 media_review_pending:レビューは数秒以内に reviews list に表示されます。レビューを参照してください。
終了コード一覧
| コード | 意味 |
|---|---|
0 | 成功。 |
1 | 予期しない失敗。 |
2 | 使用エラー。何も送信されませんでした。 |
3 | 認証情報の問題。このインストールは認証できません。 |
4 | 見つかりません。 |
5 | 競合。 |
6 | 前提条件失敗、revision_conflictを含む:--expect-revのリビジョンが古いです。 |
7 | レート制限されています。Retry-After を順守し、retry_after_seconds として表示されます。 |
8 | その他のクライアント側拒否。 |
9 | サーバーエラー。 |
10 | ネットワーク障害。 |
11 | タイムアウトしました。 |
12 | 設定エラー。 |
13 | 操作自体が失敗しました。 |
エンベロープ内の共通問題コード:
| コード | 意味 | 次のステップ |
|---|---|---|
not_enrolled | このインストールにはまだプロジェクト資格情報がありません。 | screenrig agent enroll --email ADDRESS --organization NAMEでプロジェクトを作成、またはscreenrig loginで所属するプロジェクトにこのインストールをサインイン。 |
session_ended | サインインは取り消し、期限切れ、または終了しました。 | screenrig login、ダッシュボードの人によって承認されました。 |
insufficient_access | セッションのアクセスレベルではこれができません。読み取り専用は何も変更せず、提案は削除、スクリーン制御、支出ができません。 | screenrig agent status は effective_access を表示します。access_limited_by が project または person を指定した場合、プロジェクトオーナーがレビュー設定を変更します。それ以外の場合は screenrig login --access manage で、人によって承認されます。 |
approver_required | これを行えるのはプロジェクトオーナーか承認可能なメンバーのみで、例えばエージェントにManageを付与する場合などです。 | プロジェクトオーナーに承認可能をオンにするか、読み取り専用または提案を選択するよう依頼 |
playlist_not_approved | プレイリストにはまだ承認済みのバージョンがないため、どのスクリーンも表示できません。 | そのレビュー(screenrig reviews show ID)を待つか、承認済みのplaylistを選択してください。 |
review_not_pending | レビューは既に決定、撤回、または置換されています。 | 状態確認用 screenrig reviews show ID |
login_denied, login_expired | その人はサインインを拒否したか、24時間コードが期限切れです。 | screenrig login を再実行 |
client_auth_failed | サービスクライアントのキー、シークレット、またはIDが拒否されました。 | 設定がサインインに使う鍵またはシークレットのファイル(login --client-id ID --client-key-file FILE または --client-secret-file FILE)を screenrig service-client show ID と照合してください。 |
capability_required | プロジェクトはこのコマンドに必要な機能(例:screensやadvertiser)を持っていません。 | screenrig project capabilities、次に新しいプロジェクトのために一致する--intentを選択するか、プロジェクトの目的を変更します。 |
rate_limited | 現在のウィンドウでリクエストが多すぎます。 | retry_after_secondsを待ってから、再試行してください。 |
free_organization_limit | その人はすでに無料のStandard組織を持っているため、project createは新たに開始できません。 | 詳細に記載された組織にプロジェクトを追加してください:screenrig project create NAME --organization-id ID。別の組織にはPlus、PremiumまたはEnterpriseが必要です。https://screenrig.ai/contact#message のお問い合わせフォームをご利用ください。 |
organization_plan_required | 組織はプランが支払われるまで新しいスクリーンを許可しません。 | 所有者がscreenrig project movesとscreenrig project move --organization-id IDでプロジェクトを移動するか、組織が https://screenrig.ai/contact#message のお問い合わせフォームからPlus、PremiumまたはEnterpriseを契約します。 |
リビジョンと再試行
リビジョンガードは任意です。--expect-revを省略すると、事前のリビジョン読み取りなしで現在のリソースを書き込みます。既知のrevisionを指定すると古い書き込みを拒否します。revision_conflictではリソースを再取得し、変更を再適用し、返されたリビジョンで再試行します。あいまいな通信障害では同じ--idempotency-keyで再試行します。コントロールプレーンは2回書き込みせず元の結果を返します。
クレジット
コントロールプレーンは、課金対象の認証済みコマンドごとに1クレジット、課金対象のプロジェクトストリームイベントごとに1クレジットを計測します。次のコントロールプレーンコマンドはクレジットを消費せず、残高がゼロでも動作し続けます:project show、agent status、notes list、notes show、screen reload、screen toast、screen screenshot。events follow を開くとサブスクライブとして1クレジットかかり、再接続後のリプレイは無料です。複数のスクリーンIDまたは --tag を指定した screen assign、screen reload、screen toast、screen tag のフリートコマンドは、すべての継続を含めて1つの課金アクションであり、スクリーン数の上限はありません。そのため、単体では無料のリロードやトーストも、フリートで行うと課金されます。screen screenshot --tag は、タグ付きスクリーンを解決するためにすべてのリストページをたどり、各ページが課金されます。キャプチャ自体は無料です。通知メールとスクリーン通知メッセージは無料です。プロジェクトイベントの各 Webhook 配信試行は、課金対象のリッスンストリームイベントと同様に計測されます。playback plays または playback list の各JSONページは1つの課金リクエストで、再生CSVエクスポートは全範囲で1つの課金リクエストです。
バンドルされた CLI インターフェース
コマンドはCLIのグループ分けに従っています。インストールと初回使用は開始で、アップロード、生成、カード、セレクターの選び方は作成で説明しています。
コマンド名と検出
リソースの検査には show、コレクションには list、値には kv get / kv set を使用してください。表示名には --name、リソースセレクターには --screen-id、--app-id、--playlist-id、--release-id、改訂ガードには --expect-rev、イベントカーソルには --after を使用します。グループは app で、「application」がリソース名です。コメントは comment ACTION screen|playlist ID を保持します。
完全なインベントリには screenrig help --all を、特定のヘルプには screenrig playlist init
--help を使用してください。引数のメタデータ、選択肢、デフォルト、例、別名、オプションの関係には --json を追加してください。exactlyOne、atLeastOne、および together グループは設定やネットワークアクセスの前にチェックされます。requires は最初のオプションが残りすべてのオプションを必要とすることを意味します。- を明示的にサポートするコマンドヘルプでのみ stdin を読み取ります。
新しいプロジェクトを作成
screenrig agent enroll --email ADDRESS --organization "Screens"
agent enroll はアイデンティティ、組織、Screens プロジェクトとメンバーシップを作成し、アイデンティティとプロジェクトの認証情報をプライベートに保存します。すでに提供された組織名を再利用するか、選択プロンプトなしで Screens を使用できます。--organization は必須です。--name はエージェント名を個別に指定します。実際の連絡用メールアドレスを使用してください。登録時にはプロジェクトメンバーの招待がメール送信されますが、そのアドレスがすでにログインを持っているかどうかは開示されません。ユーザーは招待を開き、パスキーでログインを作成するか、既存のログインにプロジェクトを追加します。承認されると、そのプロジェクトはユーザーの認証済みメールドメインを持つ組織に移動します。該当しない場合は、すでに保持している無料の Standard 組織に移動し、名前が重複した場合はリネームされます。
広告を購入するプロジェクトに--intent advertisingを追加します。--forceは意図的に別のプロジェクトを作成する際にこのインストールの登録または保留中の接続状態を置き換えます。
agent enroll --email ADDRESS --organization NAME [--name NAME]
[--intent signage|advertising] [--force]
AgentIDでサインイン
AgentIDを持つエージェントはhttps://api.screenrig.ai/agentid/start,にサインインし、クレームコードを受け取り、公式プラグインをインストールし、screenrig agent enroll --agentid-claim CODE --organization NAMEを実行します。オーナーの確認済みメールにダッシュボードの招待が届きます。
既存アカウントにサインインする
screenrig loginlogin はこのインストールを既存のアカウントにサインインします。ダッシュボードのアドレスとコードを表示し、最大 24 時間待機します。ユーザーがそのアドレスを開き、コードを確認し、プロジェクトの権限(閲覧のみ、提案、管理)や機能領域を調整し、Connect を一度押します。直近 1 時間以内のダッシュボードサインインが証明となるため、パスキーの再入力はありません。CLI はセッションを保存し、承認済みプロジェクトを選択し、プロジェクト・組織・access を含む status: signed_in を返します。
login [--project ID] [--access read|propose|manage] [--name NAME] [--no-wait] [--resume ID]
logout--access はレベルを求めます。デフォルトは manage で、ユーザーが決定します。--project はプロジェクトを提案します。--no-wait は status: pending、verification_uri_complete、user_code、秘密を含まない login_ ハンドルを返します。login --resume ID は後で承認を待ちます。サインイン済みのインストールで login を再実行すると、別のプロジェクトの追加や、Read only または Propose project から Manage への昇格ができます。
各セッションには機能領域が含まれます:screens、content、playlists、advertising、reports、project。セッションは自分の領域内のコマンドのみ実行します。reportsはすべての領域を閲覧できます。領域外のコマンドは403 forbiddenを返し、詳細はThis agent credential lacks the <name> capability.です。閲覧専用セッションは一覧と閲覧のみ可能です。提案セッションはメディアのアップロード、メモの作成、メディア・プレイリスト・スクリーンの変更提案ができ、これらはユーザーの確認待ちとなります。セッション権限を超える変更は403 insufficient_accessを返します。
logout はサーバー上のサインインを無効化し、保存されたトークンを削除します。サーバーに到達しなかった場合はトークンが残るため、logout を再実行しても安全です。doctor にはセッション終了時が表示されます:最終利用から 90 日後、またはサインインから最長 1 年後です。Authentication を参照してください。
プロジェクトと組織のライフサイクル
現在のプロジェクトは最後に使用されたものです。すべてのJSONエンベロープには組織とプロジェクトのコンテキストが含まれ、人間向け出力は両方を名前付けします。ID資格情報は選択されたプロジェクトのメンバーシップで制限されます。再試行状態はプロジェクトごとに別々に保持されます。
project list
project use ID
project create NAME [--organization-id ID | --organization NAME]
project moves
project move --organization-id ID
project transfer-owner --user-id ID
project deletion-preview
project delete --name NAME --revision N --yes
organization list
organization rename ID NAME
agent revoke-identity --yesproject list はアクセス可能なメンバーシップを検証します。project use で 1 つ選択します。作成には組織内で一意の名前が必要で、現在のプロジェクトの組織がデフォルト、次に管理者の組織が選ばれます。指定がない場合、オーナーの認証済みメールドメインを持つ組織が優先されます。責任者がオーナーとなります。組織が保持できるプロジェクト数はプランごとに上限があり、各ユーザーは 1 つの無料 Standard 組織を持ち、2 つ目には Plus、Premium または Enterprise が必要です。現在のプロジェクトがなく組織も指定されていない場合、サーバーは同様にプロジェクトを配置します。--organization NAME は無料組織を持たないユーザーのみ新規組織を作成します。それ以外は free_organization_limit で作成が拒否され、詳細に使用すべき組織名が記載されます。登録はレート制限に従います。
オーナーはproject movesで返された宛先に移動するか、既存の検証済みメンバーに所有権を移転できます。移動はスクリーンを含みます。移動先の組織がすでにプランが許可する数のプロジェクトを持っている場合、project_limit_reached で拒否されます。削除は正確な現在の名前とプレビューからの正のリビジョンを使用します。非アーカイブスクリーンがゼロ、独自プランなし、ウォレット義務なし、ライブ広告なしが必要です。メンバーにメールを送り、墓標を保持します。
組織名は繰り返し可能です。管理している組織を名前変更する場合は明示的なIDを使用してください。組織には指定された管理者と、その組織をホーム組織とするメンバーがおり、管理者はダッシュボードからメールで他の管理者とメンバーを招待します。organization listはfreeとplan_requiredの組織を示し、new_organization_allowedを報告します。プロジェクトリストはプロジェクトコンテンツへのアクセスを付与しません。組織は支払います:資金と手当はプロジェクト間で共有されます。使用量はプロジェクトに帰属し、履歴の請求は元の支払者を保持します。
login --project ID は同じアイデンティティでそのプロジェクトを要求します。このリクエストの明示的な承認のみがメンバーシップを付与します。agent disconnect --yes は1つのメンバーシップを取り消します。agent revoke-identity --yes はアイデンティティとすべてのメンバーシップを個別に取り消します。曖昧な応答の場合、ローカルの認証情報と再試行状態が保持され、後で調整されます。
広告レポートはイベント保持期間を超えて決済情報を保持します。カバレッジメタデータを確認してください:過去の再生が欠落しているか承認済みの期間が不明な場合は不明であり、ゼロではありません。レポートは完全な財務合計と不完全な結果履歴を持つことがあります。
プロジェクト、招待、診断
プロジェクトコマンドはメンバーシップの一覧表示、プロジェクトの選択、プロジェクトの作成、名前・所有者・移動・削除の管理を行います。招待は人をプロジェクトや広告ネットワークに招き入れます。
project show#
プロジェクト記録と残りのクレジットを読み取ります。
project show
パラメーターなし。
screenrig project show
data.credit_remaining は整数のクレジット残高です。1000未満の場合、credits_low 警告が表示されることがあります。2027年1月1日までは常識的な範囲で利用が無料のため、残りクレジットはエージェントが読み取れる整数メーターであり、停止指示ではありません。
project rename#
ダッシュボードのプロジェクト切り替えで表示される名前を設定
project rename NAME
project capabilities#
プロジェクトのプラン、独立したscreensおよびadvertiserの機能フラグ、および有効な機能セットを読み取ります。ルート拒否は古い機能読み取りより優先されます。
project capabilities
project uptime#
UTC日ごとのプロジェクトのスクリーン利用可能性を読み取ります。
project uptime [--day-from YYYY-MM-DD] [--day-to YYYY-MM-DD]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
--day-from YYYY-MM-DD | string | いいえ | --day-toの29日前 | 最初の UTC 日(含む)。 |
--day-to YYYY-MM-DD | string | いいえ | 今日 | 最終UTC日(含む)。--day-fromの最大366日後。 |
screenrig project uptime
screenrig project uptime --day-from 2026-09-01 --day-to 2026-09-30範囲とデフォルトは screen uptime のものです。data.items は UTC 日ごとに 1 行ずつ(古い順)表示します:online_s と offline_s はその日の状態が記録されたスクリーンで合計され、availability、coverage(そのスクリーンの 1 日のうち状態が記録された割合)、screens(状態が記録されたスクリーン数)です。本日の行はこれまでに終了した区間をカバーします。screen list は現在オンラインのユーザーを示します。
project health-trend#
UTC時間ごとのフリートの状態を読み取ります:報告中のスクリーン、ホット、ディスプレイ切断、クラッシュ。
project health-trend [--from TIME] [--to TIME]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
--from TIME | string | いいえ | --toの24時間前 | 時間の包括的開始:秒とオフセットを含むRFC 3339の瞬間(UTCに正規化)、now、または 7d、12h、30m のような経過時間。 |
--to TIME | string | いいえ | 今 | 同じ形式での排他的な終了。--from の最大93日後。 |
screenrig project health-trend
screenrig project health-trend --from 7ddata.items は UTC 時間ごとのフリートのヘルスを一覧表示します:hour, screens_reporting, hot(80 ℃以上のピーク温度), display_disconnected, crashing(24 時間以内に 3 回以上のクラッシュ)。CLI は next_cursor まで追跡し、毎時 next_cursor null で応答します。各時間はレポートから最大約 5 分遅れます。
invitations#
プロジェクトメンバーおよび広告購入者の招待を作成、一覧表示、または取り消します。
invitations create --email ADDRESS[,ADDRESS] [--kind member|ad-buyer]
invitations create --link
[--screen-id ID] [--slot-id ID] [--policy trusted|review_required]
invitations list [--kind member|ad-buyer] [--status STATUS]
invitations revoke ID
--kind はデフォルトで member です。メール配信が初期設定で、7日後に有効期限が切れます。--email ではカンマ区切りで最大50件まで受信者を指定できます。--link はメンバー限定で、受信者は1名のみ指定でき、24時間有効な招待 URL を1回だけ返します。必ずその URL をログ、メモ、共有記録に記載しないでください。リストでは返しません。
広告購入者はメールのみ使用し、所有するスクリーンまたはスロットのスコープ(または両方)が必要です。--screen-idと--slot-idはカンマ区切りのIDを受け入れます。--policyはtrustedまたはreview_requiredを選択します。ステータスフィルターはqueued、sent、issued、accepted、revoked、expired、failedです。
screenrig invitations create --email teammate@example.com
screenrig invitations create --kind ad-buyer --email buyer@example.com --screen-id scr_LOBBY --policy review_required
エージェントは招待を受け入れません。招待された人はメールを開き、サインインまたはパスキーを作成し、ダッシュボードで承認します。リンクサインアップは最初にメールを確認します。承認済み招待の取り消しはメンバーシップを元に戻しません。広告アクセスを取り消すにはバイヤーメンバーシップコントロールを使用してください。
agent status#
このインストールに使用可能な認証情報があるか報告します。
agent status
パラメーターなし。
screenrig agent status
読み取り専用。ローカルまたはサーバー状態を変更せず、費用もかかりません。結果にはセッションのaccess、そのeffective_access、およびプロジェクトのレビュー設定や承認できないメンバーが低く保持している場合はaccess_limited_by(projectまたはperson)が含まれます。
login#
このインストールを既存アカウントにサインインさせ、ダッシュボードで本人の承認を得ます。
login [--project ID] [--access read|propose|manage] [--name NAME] [--no-wait] [--resume ID]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
--project ID | string | いいえ | なし | ユーザーが承認したプロジェクトを提案してください。 |
--access LEVEL | string | いいえ | 管理 | read、propose、またはmanage。最終的な選択は人が行います。 |
--name NAME | string | いいえ | なし | このインストールの名前を最大80文字で指定してください。 |
--no-wait | boolean | いいえ | オフ | 住所、コード、login_ハンドルをstatus: pendingで返します。 |
--resume ID | string | いいえ | なし | --no-waitが開始した保留中のサインインを待ちます。 |
screenrig login --access readダッシュボードのアドレスと8文字のコードを標準エラーに印刷し、最大24時間待機します。ユーザーはコードが一致することを確認し、接続を1回押します。最後の1時間のダッシュボードサインイン後は2回目のパスキープロンプトはありません。エンベロープはstatus: signed_in、プロジェクト、組織およびaccessを報告します。サインイン済みのインストールで再度実行するとプロジェクトを追加するか、読み取り専用または提案プロジェクトを管理に昇格します。拒否はlogin_deniedで、有効期限はlogin_expiredです。
logout#
このインストールのサインインを終了し、トークンを削除する。
logoutパラメーターなし。
screenrig logoutサーバー上のサインインを取り消し、保存されたトークンを削除して status: signed_out を報告します。サーバーに到達しなかった可能性のある失敗はトークンを保持するため、再実行は安全です。再度サインインするには screenrig login を実行してください。
dashboard#
通常のダッシュボードURLを開きます。このコマンドはサインインリンクを発行せず、セッションを作成せず、エージェント認証も不要です。
dashboard [open]
screenrig dashboard
ダッシュボードはサインイン後にその人のプロジェクトを表示します。ブラウザのプロジェクト選択はエージェントにバインドされたプロジェクトを変更しません。
dashboard reset-sign-in#
エージェント資格情報なしでサインインリセットメールを依頼
dashboard reset-sign-in --email ADDRESS
承認はメールにログインがあるかどうかを明かしません。メールで送信されたリセットは 1 時間で期限切れになります。本人は新しいパスキーを作成します。完了するとサインイン資格情報が置き換えられ、他のセッションは無効になります。
doctor#
このインストールをチェックし、名前ごとにすべてのチェックを報告します。
doctor [--repair-config]
| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
--repair-config |
boolean | いいえ | オフ | グループまたはその他のユーザーが読み取り可能な既存の設定ファイルの権限を厳しくします。 |
screenrig doctor
data.checks は各チェック項目とそのステータスを示します。Node ランタイム、解決された設定パスとその権限、コントロールプレーンのオリジンとサービスルート、公開されている feedback 機能、オプションのメディアツールチェーン(ffmpeg, ffprobe, encoder_libx264, encoder_libx265, encoder_libwebp, cwebp, filter_hdr_tonemap)です。
チェックに失敗するとdoctorが非ゼロで終了するため、インストールを不健康と判断する前に個別の名前を読み取ってください。メディアツールチェーンの欠落はmedia uploadのみに影響します。
version#
バンドルされたCLIのバージョンとそのプロトコルアダプターを印刷します。
version
パラメーターなし。
screenrig version
セッションで最初にこれを実行します。成功したエンベロープはランチャーがバンドルされた CLI を解決したことを証明します。--version と -V はコマンドラインのどこからでも同じことを行います。
サービスクライアント
サービスクライアントは、プロジェクトが所有するサーバー、スクリプト、または CI ジョブです。人の承認の代わりに、独自の鍵またはシークレットでサインインします。クライアントを作成または変更するには、エージェントには、identity スコープを持つアイデンティティの管理アクセス、対象プロジェクトで project 機能を含むエージェント自身の管理権限の付与、およびそのプロジェクトの組織を管理する本人確認済みの責任者が必要です。サービスクライアントは他のクライアントを管理できません。クライアントとしてコマンドを実行するには、SCREENRIG_CLIENT_ID と、SCREENRIG_CLIENT_KEY_FILE または SCREENRIG_CLIENT_SECRET を設定します。サービスクライアントを参照してください。
service-client list#
このプロジェクトのサービスクライアント一覧(有効・無効含む)、キー・シークレットID・使用状況付き
service-client listパラメーターなし。
screenrig service-client list秘密を返しません。
service-client show#
1つのサービスクライアントを表示します。
service-client show ID| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
ID | string | はい | なし | クライアントID、scl_…。 |
screenrig service-client show scl_ID各キーのkidと各シークレットのcss_IDをローテーション用に一覧表示
service-client create#
このプロジェクト所有のサービスクライアントを作成。
service-client create --name NAME [--capability NAME]... [--access read|propose|manage] [--key-file PATH] [--secret-file PATH]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
--name NAME | string | はい | なし | 最大80文字。 |
--capability NAME | string | いいえ | 6つすべて | 繰り返し可能:screens、content、playlists、advertising、reports、project、それぞれあなたの範囲内。 |
--access LEVEL | string | いいえ | 読み取り | read、propose、またはmanage。proposeはプレイリストとスクリーンの変更を人のレビューに送信します。 |
--key-file PATH | パス | これらのうちの1つ | なし | JWK または PEM 形式の Ed25519、EC P-256、または 2048 ビット以上の RSA 公開鍵です。送信されるのは公開部分のみです。 |
--secret-file PATH | パス | これらのうちの1つ | なし | シークレットを生成し、この新しい0600ファイルに書き込みます。一度だけ表示されます。 |
screenrig service-client create --name "Nightly report" --access read --capability reports --key-file screenrig-client.pem上記のアイデンティティ、プロジェクト、組織管理者の権限が必要です。組織ごとに有効なクライアントは、すべてのプロジェクトを合わせて最大 50 個です。独自の kid がない鍵は RFC 7638 のサムプリントで識別されます。
service-client add-key#
ダウンタイムなしのローテーションのために2つ目の公開鍵を登録します。
service-client add-key ID --key-file PATH| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
ID | string | はい | なし | クライアントID。 |
--key-file PATH | パス | はい | なし | 新しい公開鍵、JWKまたはPEM。 |
screenrig service-client add-key scl_ID --key-file new.pemクライアントは最大で2つのキーを保持します。
service-client add-secret#
ダウンタイムなしのローテーション用に2つ目のシークレットを生成します。
service-client add-secret ID --secret-file PATH| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
ID | string | はい | なし | クライアントID。 |
--secret-file PATH | パス | はい | なし | シークレットを受け取る新しい0600ファイルです。 |
screenrig service-client add-secret scl_ID --secret-file new-secretクライアントは最大で2つのシークレットを保持します。現在のものは削除するまで有効です。
service-client remove-key#
キーを削除します。これにより発行されたトークンは数秒で無効になります。
service-client remove-key ID --kid KID| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
ID | string | はい | なし | クライアントID。 |
--kid KID | string | はい | なし | service-client showからのキーID。 |
screenrig service-client remove-key scl_ID --kid KIDクライアントは少なくとも1つのキーまたはシークレットを保持します。
service-client remove-secret#
シークレットを削除します。これにより発行されたトークンは数秒で無効になります。
service-client remove-secret ID --secret-id css_ID| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
ID | string | はい | なし | クライアントID。 |
--secret-id ID | string | はい | なし | service-client showからのcss_シークレットID |
screenrig service-client remove-secret scl_ID --secret-id css_IDservice-client revoke#
サービスクライアントを永久に取り消します。
service-client revoke ID --yes| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
ID | string | はい | なし | クライアントID。 |
--yes | boolean | はい | オフ | 恒久的な取り消しを確認。 |
screenrig service-client revoke scl_ID --yesキーとシークレットを削除します。トークンは数秒以内に無効になります。レコードは監査のために保持されます。
メディア
メディアオブジェクトは1つの静止画、1つのクリップ、または1つのMP3オーディオトラックで、正確に1つのレンディションとして保存されます。デバイスごとのフォールバックはなく、media uploadまたはmedia generateに保存されたものをすべてのスクリーンがデコードします。
メディアフォルダーはライブラリを整理します。フォルダーIDはmfd_で始まり、ファイルIDはmed_で始まります。アップロードはフォルダー名--folderがない限りライブラリのルートに配置され、media moveとmedia folder updateでツリーを再構成し、プレイリストのby:folderセレクターはサブフォルダーではなく1つのフォルダー内のファイルを直接再生します。組織は、すべてのプロジェクトを合わせて最大1000フォルダーを10階層までネストでき、名前は1~100文字です。
メディアはファイルが変わってもIDを保持します。media replaceはファイルをその場で置き換えるので、それを使用するすべてのプレイリストとスケジュールが新しいファイルを再生し、media versionsはそのアイテムがこれまでに持っていたすべてのファイルを一覧表示します。
media generate#
プロジェクトのメディアストアに提示可能な全画面静止画を生成します。
media generate --prompt TEXT [--aspect-ratio RATIO] [--quality low|medium|high] [--tag TAG]
[--no-progress]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
--prompt TEXT | string | はい | なし | 1~4000文字。すべての事実とコピーをプロンプトに入れて画像モデルが組版します。 |
--aspect-ratio RATIO | string | いいえ | 16:9 | 1:1、16:9、9:16、4:3、3:4、3:2、または2:3。 |
--quality | string | いいえ | medium | low、medium、または high。静止画の詳細度を変更します。 |
--tag TAG | string | いいえ | なし | アップロードと同じ1~32文字の英数字タグ。 |
--no-progress | boolean | いいえ | オフ | stderrの開始行を抑制 |
screenrig media generate --prompt "A 16:9 restaurant menu poster for North Lobby Cafe. Dark walnut, gold type. Title NORTH LOBBY CAFE. Items: Espresso $4, Cortado $4.50, House Blend $3. Footer Open 7am to 7pm. Typeset every line of copy in the image." --aspect-ratio 16:9 --quality high --tag LobbyMenuコマンドはプロジェクトメディアストアにロスィーWebPを保存し、data.media_id (med_…) を返します。バイトを再アップロードしないでください。ピクセルやプロンプトを印刷しないでください。オーサリングツリーとプロンプト契約は Compose にあります。
media upload#
ローカルファイルを配信バイトに変換し、アップロードしてオブジェクトの準備完了を待ちます。
media upload <file> [--content-type TYPE] [--tag TAG] [--folder ID] [--no-wait] [--poll-ms MS]
[--timeout MS] [--no-transcode] [--codec h264|hevc] [--max-fps N]
[--max-edge PIXELS] [--webp-quality 1-100] [--no-progress]
[--preset signage-1080p30|signage-4k30] [--no-audio]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<file> | パス | はい | なし | 元の静止画、クリップ、またはオーディオトラック。ファイル名はリスト、プレイリスト、再生レポートで人間が識別する名前になるため、表示内容に合わせて命名してください。 |
--content-type TYPE | string | いいえ | アップロードされたバイトから検出 | CLIに検出させるのではなく、自分でメディアタイプを宣言してください。 |
--tag TAG | string | いいえ | なし | 1〜32文字の英数字、^[A-Za-z0-9]{1,32}$ に一致。ハイフンは不可。タグは media list --tag TAG を信頼できるファイル名からIDへのマップにします。 |
--folder ID | string | いいえ | ライブラリのルート | 既存のmfd_メディアフォルダーで、作業開始前にチェックされます。準備完了したアップロードはそこに移動し、data.folder_idが報告します。メディアIDがまだ存在しないため、--no-wait(usage_error、終了コード2)で拒否されます。オブジェクトが準備できたらmedia moveを一度実行してください。 |
--no-wait | boolean | いいえ | オフ | コミットが受理され次第返します。オブジェクトはまだ準備できていません。operations waitで終了してください。 |
--poll-ms MS | integer | いいえ | 1000 | 待機中の操作ポーリングの間隔。 |
--timeout MS | integer | いいえ | 120000 | 待機の期限です。各基底リクエストの制限にもなります。 |
--no-transcode | boolean | いいえ | オフ | ソースのバイトを変更せずにアップロードします。ffmpeg、ffprobe、および cwebp は実行されません。ロスレス WebP は依然として拒否されます。 |
--codec | string | いいえ | h264 | h264 または hevc;avc と h265 もエイリアスとして認められます。すべての再生スクリーンがネイティブプレーヤーの場合のみ hevc を使用してください。 |
--max-fps N | number | いいえ | 30 | 一定の出力フレームレート。すべてのビデオはソースレートに関係なく正確にこのレートでエンコードされるため、連続するクリップでレートが変わりません。0 より大きく最大 240 まで。 |
--max-edge PIXELS | integer | いいえ | 3840 | 各エッジに適用される境界は16から3840までです。アスペクト比は保持され、小さいソースは拡大されません。 |
--webp-quality | integer | いいえ | 90 | WebP エンコードの静止画品質、1から100まで。 |
--preset | string | いいえ | 未設定 | signage-1080p30 または signage-4k30。画面の向きに対応した動画サイズと一定の 30 fps。--max-edge と --max-fps はプリセットを縮小できますが、拡大はできません。動画のみ対応、--no-transcode との併用はできません。 |
--no-audio | boolean | いいえ | オフ | ビデオ配信から音声トラックを省略します。ビデオのみで、--no-transcodeとの併用はできません。 |
--no-progress | boolean | いいえ | オフ | 進行状況を出力しません。進行状況は常に標準エラー出力に送られ、標準出力は唯一の結果エンベロープ専用です。 |
screenrig media upload ./lobby-welcome-loop.mp4 --tag LobbyLoopビデオはMP4になります:デフォルトはH.264ハイプロファイルレベル4.2、または--codec hevc付きH.265、yuv420pタグ付きRec. 709。HDRソースはRec. 709にトーンマップされます。ソースに音声がある場合はAAC 192 kbit/s、48 kHz、ステレオです。
静止画は品質90でロスのある WebP になり、元にアルファがあれば保持します。アニメーション元は無限ループします。サイズ制限内の WebP は再エンコードされずそのまま通過します。
オーディオはプレイリストのサウンドトラック用に MP3 になります。MP3 ソースは変換せずアップロード。WAV、AAC、M4A、OGG、FLAC は 128 kb/s MP3 に変換(libmp3lame を含む ffmpeg ビルドが必要)。トラックは1秒から3時間。playlist init はオーディオ入力をページではなくサウンドトラックトラックに変換。ready オブジェクトは audio メディアオブジェクトで、再生時間を含みます。ページに配置できず、プレイリストの audio サウンドトラックで名前を付けてください。
準備済みオブジェクトIDは data.media_id です。同じ値が data.id と data.operation.result.media_id です。そのIDがプレイリストセレクターで使用されます。
video.mp4のような情報量の少ないファイル名は、封筒にgeneric_filenameの警告を追加します。アップロードは成功し、CLIはファイル名を変更しません。コマンド実行前に名前を選んでください。
変換は ffmpeg と ffprobe を PATH から、または SCREENRIG_FFMPEG と SCREENRIG_FFPROBE の絶対パスから実行します。静止画は ffmpeg の libwebp エンコーダーを優先し、PATH または SCREENRIG_CWEBP で cwebp にフォールバックします。セッションの最初のアップロード前に doctor を実行してください。
--preset signage-1080p30 は長辺を1920、短辺を1080、フレームレートを一定の30fpsに制限します。signage-4k30 は長辺を3840、短辺を2160、フレームレートを一定の30fpsに制限します。どちらも横向き、縦向き、正方形のコンテンツに対応します。--no-audio は無音クリップの場合、音声エンコードを省略します。これらのオプションは動画にのみ適用されます。
screenrig media upload ./lobby.mov --preset signage-1080p30 --no-audioscreenrig media upload ./menu.png --folder mfd_01EXAMPLEFOLDER000000000アップロードはライブラリのルートに置かれ、準備ができるとフォルダーに移動します。media upload-batch --folder はすべてのアップロード済みアイテムを同様に移動します。
Proposeアクセス時、またはプロジェクトがエージェント変更のレビューを要求する場合、新しいアップロードはタグ、フォルダー、またはallセレクターが再生される前に人のレビューを待ちます。詳細はレビューを参照してください。
media upload-batch#
マニフェストから多数のローカルファイルをアップロードし、必要な状態ファイルから再開します。
media upload-batch <manifest.json> [--state FILE] [--concurrency N] [--tag TAG] [--folder ID]
[--poll-ms MS] [--timeout MS] [--no-transcode] [--codec h264|hevc]
[--max-fps N] [--max-edge PIXELS] [--webp-quality 1-100] [--no-progress]
[--preset signage-1080p30|signage-4k30] [--no-audio]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<manifest.json> | パス | はい | なし | { "items": [ { "path": "./a.png", "tag"?: "Lobby", "content_type"?: "image/png" } ] } は 1〜1000 件のアイテムを扱います。パスはマニフェストファイルからの相対パスです。 |
--state FILE | パス | いいえ | 設定ファイル横のプライベートファイル | 各ソースファイルのローカルバイトの SHA-256 をキーとした 0600 の JSON ファイルです。すでに media_id で存在する項目は resumed として報告されます。状態ファイルはプロジェクトごとに分けてください。 |
--concurrency N | integer | いいえ | CLI のデフォルト | 並列アップロード。 |
--no-transcode | boolean | いいえ | オフ | media upload と同様に、ソースのバイトを変更せずにアップロードします。 |
--poll-ms MS | integer | いいえ | 1000 | 待機中の操作ポーリングの間隔。 |
--timeout MS | integer | いいえ | 120000 | 待機の期限です。各基底リクエストの制限にもなります。 |
--codec | string | いいえ | h264 | h264 または hevc;avc と h265 もエイリアスとして認められます。すべての再生スクリーンがネイティブプレーヤーの場合のみ hevc を使用してください。 |
--max-fps N | number | いいえ | 30 | 一定の出力フレームレート。すべてのビデオはソースレートに関係なく正確にこのレートでエンコードされるため、連続するクリップでレートが変わりません。0 より大きく最大 240 まで。 |
--max-edge PIXELS | integer | いいえ | 3840 | 各エッジに適用される境界は16から3840までです。アスペクト比は保持され、小さいソースは拡大されません。 |
--webp-quality | integer | いいえ | 90 | WebP エンコードの静止画品質、1から100まで。 |
--preset | string | いいえ | 未設定 | signage-1080p30 または signage-4k30。画面の向きに対応した動画サイズと一定の 30 fps。--max-edge と --max-fps はプリセットを縮小できますが、拡大はできません。動画のみ対応、--no-transcode との併用はできません。 |
--no-audio | boolean | いいえ | オフ | ビデオ配信から音声トラックを省略します。ビデオのみで、--no-transcodeとの併用はできません。 |
--tag TAG | string | いいえ | なし | アイテムが自身のタグを省略した場合に適用されます。 |
--folder ID | string | いいえ | ライブラリのルート | 既存のmfd_メディアフォルダーです。アップロードされたすべてのアイテムはアップロード後にそこに移動し、data.folder_idが報告します。 |
--no-progress | boolean | いいえ | オフ | 進行状況を出力しません。 |
screenrig media upload-batch ./images.json --state ./upload-state.jsonエンベロープはマニフェスト順にdata.items[]を運び、それぞれにpath、source_filename、sha256、outcome(acceptedまたはresumed)、media_idがあります。data.failed[]は着地しなかったアイテムを運びます。
media replace#
メディアのファイルをその場で置き換えます。ID、プレイリスト、スケジュールはそのまま使えます。
media replace <id> <file> [--expect-rev REVISION] [--note TEXT] [--content-type TYPE] [--no-wait]
[--poll-ms MS] [--timeout MS] [--no-transcode] [--codec h264|hevc] [--max-fps N]
[--max-edge PIXELS] [--webp-quality 1-100] [--no-progress]
[--preset signage-1080p30|signage-4k30] [--no-audio]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | med_オブジェクトID |
<file> | パス | はい | なし | 新しい静止画、クリップ、または音声トラック。メディアと同じ種類(画像は画像、動画は動画、音声は音声)である必要があります。作業を始める前に確認されます(usage_error、終了コード2)。 |
--expect-rev REVISION | string | いいえ | なし | 任意のリビジョン前提条件。提供された古い値はrevision_conflictとなり、宣言済みのアップロードはキャンセルされます。media show IDを読み取ってからコマンドを再実行してください。 |
--note TEXT | string | いいえ | なし | 新しいバージョンとともに保存され、レビューする人に表示されます。最大280文字。 |
--content-type TYPE | string | いいえ | アップロードされたバイトから検出 | CLIに検出させるのではなく、自分でメディアタイプを宣言してください。 |
--no-wait | boolean | いいえ | オフ | 置換が受理され次第返します。新しいファイルはまだ使用中ではありません。operations waitで終了してください。 |
--poll-ms MS | integer | いいえ | 1000 | 待機中の操作ポーリングの間隔。 |
--timeout MS | integer | いいえ | 120000 | 待機の期限です。各基底リクエストの制限にもなります。 |
--no-transcode | boolean | いいえ | オフ | ソースのバイトを変更せずにアップロードします。ffmpeg、ffprobe、および cwebp は実行されません。ロスレス WebP は依然として拒否されます。 |
--codec | string | いいえ | h264 | h264 または hevc;avc と h265 もエイリアスとして認められます。すべての再生スクリーンがネイティブプレーヤーの場合のみ hevc を使用してください。 |
--max-fps N | number | いいえ | 30 | 一定の出力フレームレート。すべてのビデオはソースレートに関係なく正確にこのレートでエンコードされるため、連続するクリップでレートが変わりません。0 より大きく最大 240 まで。 |
--max-edge PIXELS | integer | いいえ | 3840 | 各エッジに適用される境界は16から3840までです。アスペクト比は保持され、小さいソースは拡大されません。 |
--webp-quality | integer | いいえ | 90 | WebP エンコードの静止画品質、1から100まで。 |
--preset | string | いいえ | 未設定 | signage-1080p30 または signage-4k30。画面の向きに対応した動画サイズと一定の 30 fps。--max-edge と --max-fps はプリセットを縮小できますが、拡大はできません。動画のみ対応、--no-transcode との併用はできません。 |
--no-audio | boolean | いいえ | オフ | ビデオ配信から音声トラックを省略します。ビデオのみで、--no-transcodeとの併用はできません。 |
--no-progress | boolean | いいえ | オフ | 進行状況を出力しません。進行状況は常に標準エラー出力に送られ、標準出力は唯一の結果エンベロープ専用です。 |
screenrig media replace med_01EXAMPLEIMAGE0000000000 ./menu-v2.png
screenrig media replace med_01EXAMPLEVIDEO0000000000 ./intro.mp4 --expect-rev 3 --note "Spring cut"メディアはID、タグ、フォルダーを保持するため、それを指定しているすべてのプレイリストとスケジュールは次のマニフェストで新しいファイルを再生し、タグ、フォルダー、allのセレクターもそれを反映します。再スケジュールは不要です。このコマンドはmedia uploadと同じ手順(変換、プランの動画バイト数上限、サイズ上限、ストレージ容量、署名付き転送)を実行し、新しいメディアを追加する代わりに置き換えます。--tagと--folderは指定できません。
デフォルトでは、コマンドは処理の完了を待ちます。data.media_idとdata.idはメディアID、data.versionはmedia versionsにおける新しいファイルの番号、data.revisionはメディアの新しいリビジョンです。data.warnings、data.operation、data.upload、data.transcodeとタイミングはmedia uploadと同様に報告され、操作IDはエンベロープに含まれます。--no-waitを指定すると、data.operationは受理された操作となり、data.versionとdata.warningsは含まれません。
アスペクト比の変更は許可されます。エンベロープにはaspect_ratio_changed警告が含まれ、data.warnings[].playlistsはそのメディアを使用するプレイリストを示すので、表示を確認してください。現在のファイルとバイトが同じファイルはresource_conflict(終了コード13)で拒否されます。
以前のファイルはすべてメディアの履歴に残り、そのバージョンを削除するまで保存済みバイトに含まれます。media versionsを参照してください。
Propose アクセスの場合、またはプロジェクトがエージェントの変更にレビューを要求する場合、置換は人を待ち、コマンドは成功します(終了コード0)。data.statusはpending_reviewで、data.review_idがレビューを示し、警告pending_reviewがそのURLを示し、data.nextはscreenrig reviews show IDです。人が承認するまでメディアは現在のファイルを再生し続けるので、待機中であることを伝え、書き込みを繰り返さないでください。同じメディアのより新しい置換は、待機中のものを置き換えます。レビューを参照してください。
media versions#
メディアがこれまでに持っていたファイルを、使用中のファイルを先頭にして一覧表示します。
media versions <id> [--limit N] [--cursor CURSOR]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | med_オブジェクトID |
--limit N | integer | いいえ | すべてのページ | この数のバージョンを1ページ分読み取ります(1〜100)。 |
--cursor CURSOR | string | いいえ | なし | 前のページのdata.next_cursorに続くページを読み取ります。 |
screenrig media versions med_01EXAMPLEIMAGE0000000000data.itemsには、メディアがこれまでに持っていたファイルごとに1件のエントリーがあります:number、current、filename、content_type、sha256、bytes、width、height、duration_ms、codecs、source(upload、replace、sync、またはrestore)、note、by(種類はperson、agent、client、またはsyncで、IDと名前を含みます)、およびrestored_from。使用中のファイルが最初(current: true)で、その後は新しい順です。バージョン1は最初のアップロードで、置換、復元、メディア同期の変更のたびに次の番号が加わります。
--limitも--cursorも指定しない場合はすべてのページを読み取り、data.next_cursorはnullになります。どちらかを指定すると1ページだけ読み取ります。data.next_cursorが文字列である間は、--cursorをその値にしてコマンドを再実行してください。読み取り専用アクセスで足ります。過去のバージョンのバイトは、media version deleteが削除するまで保存され、プロジェクトの保存済みバイトに含まれます。保持するバージョン数に上限はなく、プランの無料ストレージを超えて保存されたバイトは、ほかのストレージと同じく課金されます。
media restore#
過去のバージョンを新しいバージョンとして使用中に戻します。
media restore <id> --number N [--expect-rev REVISION] [--note TEXT]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | med_オブジェクトID |
--number N | integer | はい | なし | 元に戻すバージョン番号で、media versionsが一覧表示するものです。 |
--expect-rev REVISION | string | いいえ | なし | 任意のリビジョン前提条件。提供された古い値はrevision_conflictとなります。media show IDを読み取ってからコマンドを再実行してください。 |
--note TEXT | string | いいえ | なし | 新しいバージョンとともに保存され、レビューする人に表示されます。最大280文字。 |
screenrig media restore med_01EXAMPLEIMAGE0000000000 --number 2
screenrig media restore med_01EXAMPLEIMAGE0000000000 --number 2 --expect-rev 5 --note "Back to the winter menu"メディアはIDを保持して新しいリビジョンに移り、それを指定しているすべてのプレイリストとスケジュールがそのファイルを再び再生します。コピー元のバージョンは履歴に残ってバイトを共有し、新しいバージョンは他と同様に保存済みバイトに含まれます。data.mediaはメディアで、data.warningsは、復元したファイルのアスペクト比が異なる場合に、そのメディアを使用するプレイリストを示すaspect_ratio_changedを含みます。
使用中のバージョンは復元できず(resource_conflict、終了コード5)、不明なバージョンはnot_found(終了コード4)です。Propose アクセスの場合、またはプロジェクトがエージェントの変更にレビューを要求する場合、復元は人を待ち、コマンドは成功します(終了コード0)。data.statusはpending_reviewでdata.reviewを伴い、警告pending_reviewがそのURLを示し、data.nextはscreenrig reviews show IDです。人が承認するまでメディアは現在のファイルを再生し続けるので、書き込みを繰り返さないでください。
media version delete#
過去のバージョンとその保存済みバイトを削除します。
media version delete <id> --number N| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | med_オブジェクトID |
--number N | integer | はい | なし | 削除するバージョン番号で、media versionsが一覧表示するものです。 |
screenrig media version delete med_01EXAMPLEIMAGE0000000000 --number 2バージョンのレコードは削除され、そのバイトは直ちにプロジェクトの保存済みバイトから外れます。保存されているオブジェクトは、他のバージョンまたは使用中のファイルが同じファイルを保持していない限り、24時間後に削除されます。削除したバージョンは復元できません。使用中のバージョンは削除できず、メディアの置換がレビュー待ちの間はどのバージョンも削除できません。どちらもresource_conflict(終了コード5)で、どのバージョンが使用中かはmedia versions IDで確認できます。不明なバージョンはnot_found(終了コード4)です。削除には Manage アクセスが必要で、Propose の認証情報はinsufficient_accessで拒否され、削除がレビュー用に提案されることはありません。
media show#
1件のメディアオブジェクトとその現在のリビジョンを読み込みます。
media show <id>| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | med_オブジェクトID |
screenrig media show med_01EXAMPLEIMAGE0000000000media download#
検査用に保存済みのレンディションをディスクに書き込みます。バイトは絶対に印刷しません。
media download <id> [--output FILE]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | med_オブジェクトID |
--output FILE | パス | いいえ | 現在のディレクトリ内 ./<id>.<ext> | ファイルパスでありディレクトリではありません。既存のファイルは上書きされます。拡張子はコンテンツタイプに従います。 |
screenrig media download med_01EXAMPLEIMAGE0000000000 --output ./lobby.webpエンベロープはmedia_id、path、bytes、sha256、content_type、primitive、filename、オプションのsource_filename、width / heightを報告します。ピクセルは含みません。生成された静止画をガラスに表示する前の検証に使用してください。
media list#
タグやプリミティブで絞り込み可能なメディアオブジェクト一覧
media list [--tag TAG] [--primitive image|video|audio] [--folder ID|root] [--library]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
--tag TAG | string | いいえ | なし | ^[A-Za-z0-9]{1,32}$に一致します。このフィルターがある場合、タグなしのオブジェクトは省略されます。 |
--primitive | string | いいえ | すべて | image、video、またはaudio。静止画、クリップ、またはサウンドトラックのトラックにリストを制限します。 |
--folder ID|root | string | いいえ | すべてのフォルダー | この mfd_ フォルダー直下のファイルのみ、サブフォルダー内は含みません。root はライブラリルートのファイルのみです。APIがフィルターを適用します。 |
--library | boolean | いいえ | オフ | 代わりに組織のライブラリのメディアを読み取り専用で一覧します。各行には library: true が付きます。その ID はプレイリストのページで使い、変更はライブラリプロジェクトでのみ行ってください。 |
screenrig media list --tag LobbyLoop --primitive video
screenrig media list --folder mfd_01EXAMPLEFOLDER000000000
screenrig media list --library各行には folder_id が含まれますが、ライブラリのルートにはありません。
media update#
1つのオブジェクトのタグを変更またはクリアします。利用可能期間のルールはmedia availabilityで設定します。
media update <id> (--tag TAG | --tags TAG1,TAG2 | --clear-tag) [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | med_オブジェクトID |
--tag TAG | string | 2つのうちの1つ | なし | 置換タグ、1~32文字の英数字。 |
--clear-tag | boolean | 2つのうちの1つ | オフ | null を送信し、オブジェクトにタグを付けずに残します。 |
--expect-rev REVISION | string | いいえ | なし | オプションのリビジョン前提条件。現在のリソースを書き込む場合は省略します。提供された古い値はrevision_conflictです:再取得、再適用、再試行。 |
screenrig media update med_01EXAMPLEIMAGE0000000000 --tag LobbyLoopProposeアクセス時、またはプロジェクトがエージェント変更のレビューを要求する場合、承認済みメディアの再タグ付けはokに警告media_review_pendingを返します:スクリーンは承認済みタグで再生を続け、人が変更を承認するまで拒否はタグを元に戻します。レビューは数秒以内にreviews listに表示されます。承認済みプレイリストやレビュー待ちプレイリストを変更しない再タグ付けは自動で適用されます。詳細はレビューを参照してください。
media availability#
動的セレクターが 1 つのファイルを選べる時期を設定またはクリアします。
media availability <id> (--file FILE | --clear) [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | med_オブジェクトID |
--file FILE | string | 2つのうちの1つ | なし | JSON 形式の利用可能期間ルール。 |
--clear | boolean | 2つのうちの1つ | オフ | ルールを削除します。ファイルは常に利用可能になります。 |
--expect-rev REVISION | string | いいえ | なし | オプションのリビジョン前提条件。現在のリソースを書き込む場合は省略します。提供された古い値はrevision_conflictです:再取得、再適用、再試行。 |
screenrig media availability med_01EXAMPLEIMAGE0000000000 --file rule.jsonルールの要素と動作はメディアの利用可能期間を参照してください。
media delete#
メディアオブジェクトを1つ削除します。
media delete <id> [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | med_オブジェクトID |
--expect-rev REVISION | string | いいえ | なし | オプションのリビジョン前提条件。現在のリソースを書き込む場合は省略します。提供された古い値はrevision_conflictです:再取得、再適用、再試行。 |
screenrig media delete med_01EXAMPLEIMAGE0000000000media move#
メディアファイルとフォルダーをフォルダーに移動、またはライブラリのルートに戻します。
media move <id>... (--folder ID | --root)| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id>... | string | はい | なし | 1つ以上のmed_ファイルIDとmfd_フォルダーID、合計最大1000。 |
--folder ID | string | 2つのうちの1つ | なし | 宛先の mfd_ フォルダーです。 |
--root | boolean | 2つのうちの1つ | オフ | ライブラリのルートに移動。 |
screenrig media move med_01EXAMPLEIMAGE0000000000 med_01EXAMPLEVIDEO0000000000 --folder mfd_01EXAMPLEFOLDER000000000
screenrig media move mfd_01EXAMPLEFOLDER000000000 --root移動はすべてか無かのリクエストです。フォルダーは自身またはその中のフォルダーに移動できず、フォルダーは最大10階層まで入れ子になります。すでに目的地にあるアイテムはそのままです。data.mediaとdata.foldersは移動した数をカウントします。
ファイルの移動は、古いフォルダーと新しいフォルダーの by:folder セレクターが各スクリーンの次のセレクター解決から再生する内容を変えます。フォルダーの移動はフォルダー自身のファイルを変えません。Propose access 下またはプロジェクトがエージェント変更にレビューを要求する場合、移動したファイルは人のレビュー(reviews list)を待ち、承認されたプレイリストは承認時のフォルダーで再生を続けます。レビューを参照してください。
media folder list#
プロジェクトのメディアフォルダー一覧
media folder list [--library]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
--library | boolean | いいえ | オフ | 代わりに組織のライブラリのフォルダーを読み取り専用で一覧します。各行には library: true が付き、by:folder セレクターでフォルダーを指定するとそのファイルを再生できます。 |
screenrig media folder list
screenrig media folder list --libraryプロジェクトのすべてのフォルダーを最大1000件、名前順で返します:data.items、id、name、parent_id(ライブラリのルートはnull)、およびrevision。parent_idからツリーを構築します。ファイルのフォルダーはfolder_idでmedia listとmedia showにあります。ライブラリのルートにはありません。
media folder show#
1件のメディアフォルダーを読み込みます。
media folder show <id>| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | mfd_フォルダーID |
screenrig media folder show mfd_01EXAMPLEFOLDER000000000エンベロープはフォルダーのname、parent_id、revisionを運びます。
media folder create#
ライブラリのルートまたは他のフォルダー内にメディアフォルダーを作成。
media folder create --name NAME [--parent ID]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
--name NAME | string | はい | なし | 1~100文字、トリム済み。名前は繰り返し可。 |
--parent ID | string | いいえ | ライブラリのルート | 作成先のmfd_フォルダー |
screenrig media folder create --name Menus
screenrig media folder create --name Lunch --parent mfd_01EXAMPLEFOLDER000000000組織は、すべてのプロジェクトを合わせて最大1000個のフォルダーを最大10階層まで保持します。プレイリストは by:folder セレクターでフォルダー内のファイルを再生します。
media folder update#
メディアフォルダーの名前を変更するか、中身すべてを別のフォルダーに移動します。
media folder update <id> [--name NAME] [--parent ID | --root] [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | mfd_フォルダーID |
--name NAME | string | --name、--parent、--root のいずれか少なくとも1つ | 変更なし | 新しい名前、1~100文字。 |
--parent ID | string | --name、--parent、--root のいずれか少なくとも1つ | 変更なし | フォルダーとその中身すべてをこの mfd_ フォルダーに移動します。--root ではできません。 |
--root | boolean | --name、--parent、--root のいずれか少なくとも1つ | オフ | フォルダーをライブラリのルートに移動します。--parent ではできません。 |
--expect-rev REVISION | string | いいえ | なし | オプションのリビジョン前提条件。現在のリソースを書き込む場合は省略します。提供された古い値はrevision_conflictです:再取得、再適用、再試行。 |
screenrig media folder update mfd_01EXAMPLEFOLDER000000000 --name Archive
screenrig media folder update mfd_01EXAMPLEFOLDER000000000 --rootフォルダーは自身またはその内部のフォルダーに移動できず、移動はすべてのフォルダーが10階層以内に収まる必要があります。現在の値を送信するのは無操作です。
media folder delete#
メディアフォルダーを削除します。中のファイルとフォルダーは1階層上に移動します。
media folder delete <id> [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | mfd_フォルダーID |
--expect-rev REVISION | string | いいえ | なし | オプションのリビジョン前提条件。現在のリソースを書き込む場合は省略します。提供された古い値はrevision_conflictです:再取得、再適用、再試行。 |
screenrig media folder delete mfd_01EXAMPLEFOLDER000000000フォルダーのみを削除します。中のファイルとフォルダーは親に移動し、親がなければライブラリのルートに移動します。by:folderセレクターで指定すると何も一致しなくなるため、先にプレイリストの指定先を変更してください。
メディア同期
メディア同期は、メディアフォルダーを SharePoint、OneDrive for work、Dropbox、Google Drive のフォルダーと同じ状態に保ちます。実行のたびに、ソースフォルダー直下の画像(png、jpeg、webp、gif)、動画(mp4、webm)、音声(mp3)をインポートします;サブフォルダーは無視されます。変更されたファイルは同じメディア ID のままバイトが置き換えられるため、それを再生するすべてのプレイリストが更新されます。ソースで削除または移動されたファイルは再生から外れ、そのメディアは削除されるか、スクリーンがまだ表示している間は Removed サブフォルダーに移動され、何も保持しなくなった時点で削除されます。その他のファイルは、理由とともにスキップとして一覧表示されます: Office ファイルや PDF はプレイリストでドキュメントリンクとして表示し、MOV などは MP4 H.264 としてエクスポートしてください。プレイリストは by:folder セレクターでフォルダーを再生します。
すべての同期は、プロジェクトのアカウントを通じて読み取ります。アカウント ID は msa_ で、同期 ID は msy_ で始まります。media sync account add microsoft365 はご自身の Microsoft Entra アプリを保存するか、プロジェクトの Microsoft 接続を指定します;media sync account add dropbox は Dropbox アカウントの所有者向けの 1 回限りのリンクを表示します;media sync account add google-drive は、screenRIG またはご自身のサービスアカウントのアドレスと共有されたフォルダーを読み取ります。アカウントをテストしてから、フォルダーのアドレスで同期を作成すると、すぐに実行対象になります。
クライアントシークレットは --secret-file FILE、Google Drive のキーは --key-file FILE で渡し(標準入力には -)、引数としては決して渡しません。シークレットはサーバー上で封印され、data.secret {set, hint} としてのみ表示されます。読み取りには読み取りアクセスが必要で、変更にはすべて Manage アクセスが必要です。
media sync account add microsoft365#
同期が SharePoint または OneDrive for work のフォルダーを読み取れるように、ご自身の Microsoft Entra アプリ、またはプロジェクトの Microsoft 接続を追加します。
media sync account add microsoft365 --name NAME
(--tenant-id TENANT --client-id ID --secret-file FILE | --connection-id ID)| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
--name NAME | string | はい | なし | 1~80文字。 |
--tenant-id TENANT | string | --connection-id なし | なし | ご自身の組織のディレクトリ(テナント)ID、または contoso.onmicrosoft.com のようなそのプライマリドメイン;common、organizations、consumers は決して指定できません。--client-id と --secret-file とともに指定します。 |
--client-id ID | string | --connection-id なし | なし | アプリ登録の Application (client) ID(GUID)。 |
--secret-file FILE | string | --connection-id なし | なし | クライアントシークレットの値をこのファイルから、または標準入力を表す - から読み取ります(引数では渡しません);ファイルには値だけを入れます。 |
--connection-id ID | string | --tenant-id なし | なし | --tenant-id、--client-id、--secret-file の代わりに、プロジェクトの Microsoft 接続(pcn_…)を通じて、どちらのモードでもサインインします。これらとは併用できません。 |
screenrig media sync account add microsoft365 --name Contoso --tenant-id contoso.onmicrosoft.com --client-id 0b1d2f3a-4c5e-4f60-8a7b-9c0d1e2f3a4b --secret-file secret.txt
screenrig media sync account add microsoft365 --name Contoso --connection-id pcn_01EXAMPLECONNECTION0000Microsoft Entra 管理センターで、リダイレクト URI のないシングルテナントのアプリを登録し、クライアントシークレットを追加し(シークレット ID ではなく値をコピー)、Microsoft Graph のアプリケーションのアクセス許可 Sites.Selected(その後、各サイトへの読み取りアクセスをアプリに付与)または Files.Read.All を追加して、管理者の同意を付与します。アプリはこのプロジェクトに属します。次に media sync account test を実行します。
media sync account add dropbox#
Dropbox アカウントを追加し、所有者が Dropbox にサインインした状態で開いて接続するための 1 回限りのリンクを表示します。
media sync account add dropbox --name NAME [--app-key KEY]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
--name NAME | string | はい | なし | 1~80文字。 |
--app-key KEY | string | いいえ | screenRIG の Dropbox アプリ | ご自身の Dropbox アプリのアプリキー: 1〜64 文字の英数字で、アプリシークレットは決して指定しません。 |
screenrig media sync account add dropbox --name "Marketing Dropbox"
screenrig media sync account add dropbox --name "Marketing Dropbox" --app-key YOURAPPKEYdata.authorize_url がリンク、data.authorize_expires_at がその有効期限です。CLI がブラウザーを開くことはありません。リンクは Dropbox アカウントの所有者に送ってください。所有者は読み取り専用のアクセス(files.metadata.read、files.content.read、account_info.read)を許可します。data.state が ready(最初は pending_consent)になるまで media sync account show を実行し、その後 media sync create dropbox を実行します。ご自身の Dropbox アプリでは、これらの権限を有効にし、出力に表示されるリダイレクト URI を登録する必要があります。
media sync account add google-drive#
Google Drive アカウントを追加してすぐに使える状態にし、フォルダーの共有先となるサービスアカウントのアドレスを表示します。
media sync account add google-drive --name NAME [--key-file FILE]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
--name NAME | string | はい | なし | 1~80文字。 |
--key-file FILE | string | いいえ | screenRIG のサービスアカウント | ご自身の Google Cloud サービスアカウントの JSON キーをこのファイルから、または標準入力を表す - から読み取ります(引数では渡しません)。 |
screenrig media sync account add google-drive --name "Marketing Drive"
screenrig media sync account add google-drive --name "Marketing Drive" --key-file key.jsondata.config.service_account_email は各フォルダーを共有するアドレスで、閲覧者で十分です。screenRIG のサービスアカウントを通じる場合、フォルダーが同期されるのは、検証済みメールアドレスを持つこのプロジェクトのメンバーがそれを共有したか、所有している場合だけです(そうでない場合は media_sync_sharer_not_member)。ご自身のキーを使う場合は、サービスアカウントと共有されたフォルダーはすべて同期されます。
media sync account list#
このプロジェクトのメディア同期アカウントを、種類、状態、直近のテストとともに一覧表示します;シークレットは返されません。
media sync account listパラメーターなし。
screenrig media sync account listmedia sync account show#
アカウントを確認します。テナントとクライアント ID、状態、マスクされたシークレット、直近のテストを表示します。
media sync account show <id>| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | アカウント(msa_…)。 |
screenrig media sync account show msa_01EXAMPLEACCOUNT0000000Dropbox アカウントには、接続した人と app_key も表示され、Google Drive アカウントには service_account_email が表示されます。
media sync account update#
アカウントの名前を変更するか、Microsoft アプリのテナント、アプリケーション ID、クライアントシークレットを変更するか、Google Drive アカウント独自のキーを置き換えます。
media sync account update <id> [--name NAME] [--tenant-id TENANT] [--client-id ID]
[--secret-file FILE | --key-file FILE] [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | アカウント(msa_…)。 |
--name NAME | string | いいえ | 変更なし | アカウントの名前を変更します。 |
--tenant-id TENANT | string | いいえ | 変更なし | テナントのディレクトリ ID またはプライマリドメイン。 |
--client-id ID | string | いいえ | 変更なし | アプリ登録の Application (client) ID。 |
--secret-file FILE | string | いいえ | 変更なし | 新しいクライアントシークレットの値をこのファイルから、または標準入力を表す - から読み取ります;保存済みのシークレットが置き換えられます。省略したシークレットは保持されます。 |
--key-file FILE | string | いいえ | 変更なし | Google Drive アカウント独自の JSON キーをこのファイルから、または標準入力を表す - から読み取ります;同じサービスアカウントのキーである必要があります。--secret-file とは併用できません。 |
--expect-rev REVISION | integer | いいえ | なし | アカウントがこのリビジョンでない限り変更を拒否します(revision_conflict、終了コード 6)。 |
screenrig media sync account update msa_01EXAMPLEACCOUNT0000000 --secret-file new-secret.txt
screenrig media sync account update msa_01EXAMPLEACCOUNT0000000 --name "Contoso tenant" --expect-rev 2少なくとも 1 つの変更が必要です。認証情報を変更すると last_test が消去されるので、アカウントをもう一度テストしてください。Entra のクライアントシークレットには有効期限があるため、期限が切れる前にここで置き換えてください。
media sync account connect#
Dropbox アカウントを接続または再接続するための、新しい 1 回限りのリンクを作成します。
media sync account connect <id>| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | アカウント(msa_…)。 |
screenrig media sync account connect msa_01EXAMPLEACCOUNT0000000data.authorize_url と data.authorize_expires_at にリンクが含まれ、前のリンクは置き換えられます。Dropbox アカウントの所有者に送ってください。その人が完了しなかった場合や、アカウントが reconnect_required(Dropbox が接続を認めなくなった状態)の場合に使います。接続済みのアカウントは、新しい同意が完了するまで接続されたままで、別の Dropbox アカウントがサインインすると、その接続を引き継ぎます。
media sync account test#
アカウントを確認します: Microsoft アプリのサインインと Graph のアクセス許可、または Dropbox や Google Drive アカウントの接続かキー。
media sync account test <id>| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | アカウント(msa_…)。 |
screenrig media sync account test msa_01EXAMPLEACCOUNT0000000応答は last_test として保存されます。Microsoft アプリでは、credentials(Microsoft がトークンを発行したこと。拒否された場合は、値ではなく ID を指定したシークレットの AADSTS7000215 など、AADSTS コードが含まれます)と permissions(トークンが持つ Graph のアプリケーションのアクセス許可)を報告します。Sites.Selected だけの場合は警告になります: 各サイトには引き続き付与が必要で、共有リンクには Files.Read.All が必要です。このテストは、サイトへの付与やフォルダーは判定しません: 指定したフォルダーを読み取るのは media sync create です。失敗したチェックは、終了コード 0 で data.ok が false になります。
media sync account delete#
どの同期も使っていないアカウントを削除します。
media sync account delete <id> [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | アカウント(msa_…)。 |
--expect-rev REVISION | integer | いいえ | なし | アカウントがこのリビジョンでない限り削除を拒否します(revision_conflict、終了コード 6)。 |
screenrig media sync account delete msa_01EXAMPLEACCOUNT0000000同期がアカウントを使っている間は、それらを示して resource_conflict(終了コード 5)が返ります;先にそれらを削除してください。
media sync create dropbox#
Dropbox のフォルダーをメディアフォルダーに同期します。
media sync create dropbox --account-id ID --url URL|PATH [--folder-id ID] [--every DURATION] [--name NAME]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
--account-id ID | string | はい | なし | 読み取りに使う接続済みの Dropbox アカウント(msa_…)。 |
--url URL | string | はい | なし | フォルダーの Dropbox アドレス(https://www.dropbox.com/home/...)、アカウントが自分の Dropbox に追加した共有フォルダーのリンク、または / で始まるパス。チームスペースのフォルダーは、チームのルートから読み取られます。 |
--folder-id ID | string | いいえ | ソースフォルダーの名前を付けた新しいメディアフォルダー | ファイルの置き場となるメディアフォルダー(mfd_…)。 |
--every DURATION | string | いいえ | 15m | 変更を確認する頻度、5 分〜24 時間: 15m、1h、6h、または秒数のみ(300〜86400)。 |
--name NAME | string | いいえ | ソースフォルダーの名前 | 1~80文字。 |
screenrig media sync create dropbox --account-id msa_01EXAMPLEACCOUNT0000000 --url https://www.dropbox.com/home/Marketing/Lobby%20Signs
screenrig media sync create dropbox --account-id msa_01EXAMPLEACCOUNT0000000 --url /Marketing/Lobby --folder-id mfd_01EXAMPLEFOLDER000000000 --every 1h --name "Lobby signs"実行のたびに、Dropbox が保存したフォルダー内の位置から続けて、変更された分だけを読み取ります。アカウントが開けないフォルダーは media_sync_source_refused、Dropbox が認めなくなった接続は dropbox_reconnect_required(media sync account connect)になり、どちらも終了コード 5 で、何も保存されません。
media sync create google-drive#
アカウントのサービスアカウントと共有された Google Drive のフォルダーをメディアフォルダーに同期します。
media sync create google-drive --account-id ID --url URL|ID [--folder-id ID] [--every DURATION] [--name NAME]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
--account-id ID | string | はい | なし | 読み取りに使う Google Drive アカウント(msa_…)。 |
--url URL | string | はい | なし | フォルダーのアドレス(https://drive.google.com/drive/folders/ID)またはその ID。先にフォルダーをアカウントの service_account_email と共有してください;閲覧者で十分です。 |
--folder-id ID | string | いいえ | ソースフォルダーの名前を付けた新しいメディアフォルダー | ファイルの置き場となるメディアフォルダー(mfd_…)。 |
--every DURATION | string | いいえ | 15m | 変更を確認する頻度、5 分〜24 時間: 15m、1h、6h、または秒数のみ(300〜86400)。 |
--name NAME | string | いいえ | ソースフォルダーの名前 | 1~80文字。 |
screenrig media sync create google-drive --account-id msa_01EXAMPLEACCOUNT0000000 --url https://drive.google.com/drive/folders/1AbCdEfGhIjKlMnOpQrStUvWxYz --folder-id mfd_01EXAMPLEFOLDER000000000 --every 1h
screenrig media sync create google-drive --account-id msa_01EXAMPLEACCOUNT0000000 --url 1AbCdEfGhIjKlMnOpQrStUvWxYzscreenRIG のサービスアカウントを通じる場合、フォルダーが同期されるのは、検証済みメールアドレスを持つこのプロジェクトのメンバーがそれを共有したか、所有している場合だけです(media_sync_sharer_not_member、終了コード 3、何も保存されません)。実行のたびにこれが再確認され、そのような共有者を失ったフォルダーは、メディアを保持したまま同期を状態 error で停止させます;メンバーの Google アカウントからもう一度共有してから、media sync update ID --resume を実行してください。Google ドキュメント、スプレッドシート、スライドのファイルは unsupported_type としてスキップされます。アドレスが開けないフォルダーは media_sync_source_refused(終了コード 5)になります;サービスアカウントと共有してください。
media sync list#
このプロジェクトのメディア同期を、メディアフォルダー、頻度、状態、直近の実行のステータスとともに一覧表示します。
media sync listパラメーターなし。
screenrig media sync listmedia sync show#
同期とその直近の実行の概要を確認します。
media sync show <id>| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | 同期(msy_…)。 |
screenrig media sync show msy_01EXAMPLESYNC000000000data.last_run には、status(ok、partial、error のいずれか)、added、updated、removed、pending_delete(スクリーンがまだ保持している削除済みファイルで、Removed フォルダーで待機中)、そして各ファイルの理由(unsupported_type、too_large、storage、subfolder、download_failed、unreadable、in_use)を伴う skipped が含まれます。失敗した実行には、修正方法を示す code と detail を伴う error が含まれます。data.source には、Dropbox では path、Google Drive では shared_by が加わります。
状態が error の同期は修復が必要です。メディアフォルダーが削除された場合は、media sync update --folder-id で別のフォルダーを指定します。ソースフォルダーが削除または移動された場合は、同期を削除して新しく作成します。screenRIG のサービスアカウント経由の Google Drive では、フォルダーが検証済みの共有者を失った場合(sharer_not_member)、プロジェクトメンバーの Google アカウントからもう一度共有してから、media sync update ID --resume を実行します。Dropbox が接続を認めなくなると(media sync account connect)、Dropbox の実行は reconnect_required で失敗します。
media sync update#
同期の名前、頻度、メディアフォルダーを変更するか、一時停止と再開を行います。
media sync update <id> [--name NAME] [--every DURATION] [--folder-id ID]
[--pause | --resume] [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | 同期(msy_…)。 |
--name NAME | string | いいえ | 変更なし | 同期の名前を変更します。 |
--every DURATION | string | いいえ | 変更なし | 変更を確認する頻度、5 分〜24 時間。 |
--folder-id ID | string | いいえ | 変更なし | 代わりにこのメディアフォルダー(mfd_…)に入れます。次の実行ではソース全体をもう一度読み取り、同期されたすべてのファイルをそこに配置します。 |
--pause | boolean | いいえ | オフ | 再開するまで実行を停止します。--resume とは併用できません。 |
--resume | boolean | いいえ | オフ | 再び実行します;エラーで停止した同期も再開します。--pause とは併用できません。 |
--expect-rev REVISION | integer | いいえ | なし | 同期がこのリビジョンでない限り変更を拒否します(revision_conflict、終了コード 6)。 |
screenrig media sync update msy_01EXAMPLESYNC000000000 --every 1h
screenrig media sync update msy_01EXAMPLESYNC000000000 --pause
screenrig media sync update msy_01EXAMPLESYNC000000000 --folder-id mfd_01EXAMPLEFOLDER000000000 --expect-rev 3変更を少なくとも 1 つ指定してください。
media sync run#
次の予定時刻を待たず、同期を今すぐ実行します。
media sync run <id>| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | 同期(msy_…)。 |
screenrig media sync run msy_01EXAMPLESYNC000000000同期は約 30 秒以内に実行され、その後 media sync show に直近の実行が表示されます。一時停止中の同期は、先に再開する必要があります。
media sync delete#
同期を停止します;メディアとフォルダーは残ります。
media sync delete <id> [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | 同期(msy_…)。 |
--expect-rev REVISION | integer | いいえ | なし | 同期がこのリビジョンでない限り削除を拒否します(revision_conflict、終了コード 6)。 |
screenrig media sync delete msy_01EXAMPLESYNC000000000同期は、どのソースファイルがどのメディアになったかを忘れます。インポート済みのメディアとメディアフォルダーは残り、何も削除されません。
アプリケーション
アプリケーションはすでに構築済みの静的ディレクトリで、ルートは index.html です。パッカーはブラウザ SDK を _screenrig/runtime.js に注入し、スクリプトタグを追加するため、ビルドステップなしで window.screenrig に到達し、依存関係に何も追加しません。ディレクトリ内のファイルはパッキング中にビルドや実行されません。
app pack#
静的ディレクトリをアップロードせずに決定論的アーカイブにパックします。
app pack <directory> [--output FILE]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<directory> | パス | はい | なし | ビルド済み静的ディレクトリ。ルート index.html が必要です。 |
--output FILE | パス | いいえ | 何も書かれていません | アーカイブをこのパスに書き出します。指定しない場合、コマンドはアーカイブを報告しメモリに保持します。 |
screenrig app pack ./lobby-board --output ./lobby-board.tgzエンベロープはsha256、compressed_bytes、expanded_bytes、file_count、エントリーリスト、SDKランタイムが注入されたかを報告します。app uploadはディレクトリ自体をパックするため、アーカイブを先に調べたい場合にこのコマンドを使用してください。
アプリケーションはインラインコードをブロックするコンテンツセキュリティポリシーの下で実行されます。パッキングはインラインスタイルとスクリプトブロックを _screenrig/inline/ 以下のファイルに移動しリンクします。onclick= や javascript: のようなインラインイベントハンドラーや URL は移動できず、パッキングは拒否しファイル名と行を示します。
app upload#
ディレクトリをパックし、新しいアプリケーションリリースとして公開し、公開の成功を待ちます。
app upload <directory> [--name NAME] [--no-wait] [--poll-ms MS] [--timeout MS]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<directory> | パス | はい | なし | ビルド済み静的ディレクトリ。 |
--name NAME | string | いいえ | なし | アプリケーション名、最大120文字。 |
--no-wait | boolean | いいえ | オフ | 公開操作が完了する前に返します。リリースをplaylistにピン留めする前にoperations waitを実行してください。 |
--poll-ms MS | integer | いいえ | 1000 | 待機中の操作ポーリングの間隔。 |
--timeout MS | integer | いいえ | 120000 | 待機の期限です。各基底リクエストの制限にもなります。 |
screenrig app upload ./lobby-board --name "Lobby board"3つのフィールドを読み取ります:data.operation.stateはsucceeded、data.application.release_idはrel_のIDでapplicationのプリミティブピン、data.application.idはapp_のIDでkvコマンドが使用します。成功した操作はリリースが使用可能であることを意味し、リリースID単独ではありません。
すべてのapp uploadは新しいアプリケーションと最初の不変リリースを作成します。同じアプリの後続リリースを公開するにはapp updateを使います。プレイリストは編集するまで既にピン留めされたリリースを提供し続けます。
app update#
既存アプリケーションの新リリースを公開し、ID、名前、アプリケーションK/Vを保持します。
app update <id> <directory> [--expect-rev REVISION] [--no-wait] [--poll-ms MS]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | app_アプリケーションID |
<directory> | パス | はい | なし | ビルド済み静的ディレクトリ。 |
--expect-rev REVISION | string | いいえ | なし | オプションのリビジョン前提条件。現在のリソースを書き込む場合は省略します。提供された古い値はrevision_conflictです:再取得、再適用、再試行。 |
--no-wait | boolean | いいえ | オフ | 公開操作が完了する前に返します。リリースをplaylistにピン留めする前にoperations waitを実行してください。 |
--poll-ms MS | integer | いいえ | 1000 | 待機中の操作ポーリングの間隔。 |
screenrig app update app_01EXAMPLEAPP00000000000 ./lobby-boarddata.operation.state: "succeeded"を待ってから、playlist replace-releaseを使って正確なページ、プリミティブ、新しいリリース、および影響を受けるスクリーンを確認してください。返されたインパクトトークンと、playlist workflowで説明されているオプションのリビジョンガードを使って適用します。既存のplaylistピンは適用まで変更されません。リビジョンの競合があった場合は、再試行するかどうかを決める前にアプリを再度読み込み、競合を回避するためだけに置き換えアプリケーションを作成しないでください。
app list#
プロジェクトのアプリケーション一覧
app listパラメーターなし。
screenrig app listapp show#
1件のアプリケーションを読み込みます。
app show <id>| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | app_アプリケーションID |
screenrig app show app_01EXAMPLEAPP00000000000latest_ready_release は初回公開が ready に到達するまで存在しません。公開状態はオペレーションとリリースに紐づき、アプリケーションにはありません。
app delete#
アプリケーションとそのすべてのリリースを削除します。
app delete <id> [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | app_アプリケーションID |
--expect-rev REVISION | string | いいえ | なし | オプションのリビジョン前提条件。現在のリソースを書き込む場合は省略します。提供された古い値はrevision_conflictです:再取得、再適用、再試行。 |
screenrig app delete app_01EXAMPLEAPP00000000000リリースごとの削除はありません。スクリーンがアプリケーションのリリースを表示している間、削除はapplication_in_useで応答します:先にそれらのスクリーンに別のコンテンツを与えてください。削除はリリースをピン留めして表示しないプレイリストはチェックしないため、それらのプレイリストも更新または削除してください。
アプリケーション キー/バリュー
キー/バリューのストレージは1つのアプリケーションに属し、バイナリセーフです。すべてのコマンドは--app-idをapp uploadからのapp_IDで受け取り、リリースIDは使用しません。書き込みごとに正確に1つの値モードを使用します。
kv list#
アプリケーションに保存されたキー一覧
kv list --app-id ID| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
--app-id ID | string | はい | なし | app_アプリケーションID |
screenrig kv list --app-id app_01EXAMPLEAPP00000000000kv get#
1件のキーを読み込みます。
kv get --app-id ID <key>| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
--app-id ID | string | はい | なし | app_アプリケーションID |
<key> | string | はい | なし | 読み取るキー。 |
screenrig kv get --app-id app_01EXAMPLEAPP00000000000 menukv set#
JSON、ファイル、またはbase64バイトから1つのキーを書く。
kv set --app-id ID <key> --json-value JSON [--expect-rev REVISION]
kv set --app-id ID <key> --file FILE [--content-type TYPE] [--expect-rev REVISION]
kv set --app-id ID <key> --value-base64 BASE64 [--content-type TYPE] [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
--app-id ID | string | はい | なし | app_アプリケーションID |
<key> | string | はい | なし | 書き込むキー。 |
--json-value JSON | string | ワンモード | なし | JSON 値は送信前に正規化され、常に application/json として保存されます。明示的な application/json コンテンツタイプも受け付けます。 |
--file FILE | パス | ワンモード | なし | ファイルまたは標準入力(-)から値のバイトを読み取ります。デフォルトはapplication/octet-streamです。 |
--value-base64 BASE64 | string | ワンモード | なし | 空白なしの正規化パディング付き標準 base64、最大 1,398,104 文字。デフォルトは application/octet-stream。 |
--content-type TYPE | string | いいえ | バイト用 application/octet-stream | 1〜127文字。 |
--expect-rev REVISION | string | いいえ | なし | 保存済みエントリがまだこのリビジョンの場合のみ書き込みます。 |
screenrig kv set --app-id app_01EXAMPLEAPP00000000000 menu --json-value '{"soup":"lentil"}'kv delete#
キーを1つ削除します。
kv delete --app-id ID <key> [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
--app-id ID | string | はい | なし | app_アプリケーションID |
<key> | string | はい | なし | 削除するキー。 |
--expect-rev REVISION | string | いいえ | なし | オプションのリビジョン前提条件。現在のリソースを書き込む場合は省略します。提供された古い値はrevision_conflictです:再取得、再適用、再試行。 |
screenrig kv delete --app-id app_01EXAMPLEAPP00000000000 menuキー/バリューwebhook
キー/バリューWebhookは1つのアプリケーションの1つのキーを書き込むURLです。POS、スプレッドシートスクリプト、cronジョブなどの外部システムがHTTP POSTでデータをスクリーンに送信します。kv.onChangeで購読するアプリは、実行中のすべてのスクリーンで数秒以内に更新されます。アプリは最大20のWebhookを持てます。
送信者は webhook のシークレット srkw_… を使い、Authorization: Bearer <secret> として認証するか、HTTP Basic で webhook ID をユーザー名、シークレットをパスワードとして認証します。URL やクエリ文字列のシークレットは受け付けません。生の本文(最大 1 MiB)はキーの値となり、Content-Type はコンテンツタイプです。各投稿は課金対象の API リクエストで、kv set のように計測・カウントされ、リビジョンを上げ、キーの新しいメタデータを返しますが値は返しません。任意の Idempotency-Key ヘッダーは送信者のリトライを 24 時間重複排除します。1 つの webhook は最大 1 分間に 120 投稿までで、シークレットがない、間違っている、未知の webhook は 401 で応答します。他システムからのプッシュデータ に curl の例があります。
シークレットは kv webhook create と kv webhook rotate-secret のみで表示されます。URL はシークレットではありません。Webhook の作成、ローテーション、削除はそれぞれプロジェクトイベントログに kv_webhook.created、kv_webhook.secret_rotated、kv_webhook.deleted を追加し、各投稿は書き込みと同様に kv.updated を追加します。
| 問題コード | 終了 | 意味 |
|---|---|---|
kv_webhook_limit_reached | 5 | アプリケーションはすでに20の webhook を持っています。何も作成されませんでした。まず1つ削除してください。 |
not_found | 4 | アプリケーションはこのプロジェクトに属していないか、その ID の webhook がありません。 |
kv webhook create#
1つのキーを書き込むWebhookを作成し、そのURLとシークレットを一度だけ受け取る。
kv webhook create <key> --app-id ID [--description TEXT]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<key> | string | はい | なし | すべての投稿が書き込むキーは1~256文字:最初は文字か数字、その後は文字、数字、.、_、:、/または-。キーはまだ存在しなくてもかまいません。 |
--app-id ID | string | はい | なし | app_アプリケーションID |
--description TEXT | string | いいえ | なし | 送信されるもの、最大200文字。認証情報を含んではいけません。 |
screenrig kv webhook create menu --app-id app_01EXAMPLEAPP00000000000 --description "Point of sale menu feed"エンベロープはWebhookです:data.id(kvw_…)、data.key、data.url(https://api.screenrig.ai/api/applications/<app_id>/kv-webhooks/<id>/write)、data.secret(srkw_…)。URLとシークレットを送信システムに今すぐ入力してください。このシークレットは以降のコマンドで表示されません。
kv webhook list#
アプリケーションの Webhook を古い順に一覧表示
kv webhook list --app-id ID| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
--app-id ID | string | はい | なし | app_アプリケーションID |
screenrig kv webhook list --app-id app_01EXAMPLEAPP00000000000各項目には id、key、description、url、created_at があり、書き込み後は last_used_at もあります。リストに秘密情報は含まれません。
kv webhook delete#
Webhookを削除します。URLは即座に無効になり、キーは値を保持します。
kv webhook delete <webhook_id> --app-id ID| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<webhook_id> | string | はい | なし | kvw_Webhook ID |
--app-id ID | string | はい | なし | app_アプリケーションID |
screenrig kv webhook delete kvw_01EXAMPLEWEBHOOK00000 --app-id app_01EXAMPLEAPP00000000000kv webhook rotate-secret#
Webhookのシークレットを置き換え、一度だけ新しいものを受け取ります。
kv webhook rotate-secret <webhook_id> --app-id ID| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<webhook_id> | string | はい | なし | kvw_Webhook ID |
--app-id ID | string | はい | なし | app_アプリケーションID |
screenrig kv webhook rotate-secret kvw_01EXAMPLEWEBHOOK00000 --app-id app_01EXAMPLEAPP00000000000エンベロープは新しいシークレットをdata.secretに運びます。古いシークレットは即座に無効になるため、送信システムに新しいものを入力してください。
カードWebhook
カードWebhookは、1枚のカードのデータドキュメントを書き込むURLです。CMS、POS、スクリプトなどの外部システムが、HTTP POST 1回でカードにデータを送れます。kv webhook create、list、rotate-secret、delete は --app-id の代わりに --card CARD_ID を受け付けます。以下の update と deliveries はカード専用です。カードは最大20のWebhookを持てます。
kv webhook create --card CARD_ID [--description TEXT] [--map FILE|-] [--signing]
kv webhook list --card CARD_ID
kv webhook rotate-secret <webhook_id> --card CARD_ID [--signing]
kv webhook delete <webhook_id> --card CARD_IDカードWebhookの作成にキーは不要です。--map FILE(stdin の場合は -)がマッピングで、--signing で署名を有効にします。レスポンスには data.secret と、署名する場合は data.signing_secret が含まれ、それぞれ一度だけ表示されます。
送信側の認証はアプリケーションWebhookと同じです。srkw_… シークレットを使った Authorization: Bearer <secret>、またはWebhook IDをユーザー名にしたHTTP Basicで認証するため、URLしか受け付けない送信側には https://kvw_ID:srkw_…@api.screenrig.ai/… が使えます。ボディは最大1 MiBのJSONまたは application/x-www-form-urlencoded で、繰り返されたフォーム名は配列になります。マッピングがない場合、送信されたオブジェクトがカードのデータドキュメントになります。
マッピングは、リクエストボディからドキュメントを組み立てるJSONテンプレートです。{{body.alert.title}} や {{body.items[0].name}} のようなプレースホルダーを含む文字列はテキストになり、プレースホルダー1つだけの文字列は値の型を保ちます。パスは body または query(URLのクエリパラメーター)で始まり、何も保持しないパスはテキスト内では空になり、単独の値は省略されます。$each は item と index を使える状態で配列をマッピングし、$group は $by で最初に現れた順にグループ化し、$number は 1,234.50、$3.50、3,50 €、12% を読み取り(小数点がカンマの場合は "$decimal": "," を追加)、$bool は true、yes、y、1、x を読み取り、$text は $max と併用してテキストを切り詰めます。テンプレートは保存時に検証され、invalid_request が失敗した箇所を示します。
{
"title": "{{body.alert.title}}",
"body": "{{body.alert.message}}",
"items": { "$each": "{{body.items}}", "$limit": 20, "$template": { "text": "{{item.name}}" } }
}curl https://api.screenrig.ai/api/cards/crd_01EXAMPLEBOARD0000000000/kv-webhooks/kvw_01EXAMPLEWEBHOOK00000/write \
-H "Authorization: Bearer $CARD_WEBHOOK_SECRET" \
-H "Content-Type: application/json" \
--data '{"alert":{"title":"Fire drill","message":"Leave by the east door"},"items":[{"name":"Floor 2"}]}'すべての送信は、カード自身のデータとして検証されます。card_data_invalid がパスを示し、何も書き込まれません。カードの現在のドキュメントと同じドキュメントには unchanged が返り、何も書き込まれないため、画面は起こされません。受理された送信は課金対象のAPIリクエスト1回で、Webhookは1分あたり最大120件の送信を受け付け、Idempotency-Key ヘッダーは送信元の再試行を24時間重複排除します。
誤ったアドレス、誤ったまたは欠けたシークレット、無効化されたWebhook、欠けたまたは誤った署名、そしてすべての GET には同じ 404 が返るため、リンクのプレビューや当てずっぽうでは何もわかりません。理由は kv webhook deliveries でわかります。
--signing を指定すると、すべての送信に ScreenRig-Signature: t=<unix seconds>,v1=<hex> も必要です。v1 は、署名シークレット whsec_… による t、ドット、生のボディの HMAC-SHA256 で、t はサーバーの時計から5分以内でなければなりません。これは screenRIG 自身のWebhook署名と同じ形式です。
ベンダーの署名とハンドシェイク
ベンダーは独自の方法で送信に署名し、中にはシークレットをそもそも送れないものもあります。カード Webhook は、シークレットの代わりにベンダーの署名を検証し、ベンダーのセットアップのハンドシェイクに応答できるため、GitHub、Stripe、Shopify、Slack、Linear、Vercel、Asana、Microsoft Graph、monday.com、Trello、Azure Event Grid は、中継なしで直接送信できます。HMAC で署名するその他の送信元も使えます。Webhook を作成または変更するときに、API で verify と handshake を設定します (POST /api/cards/{id}/kv-webhooks、続いて PATCH /api/cards/{id}/kv-webhooks/{webhook_id})。
verifyは{vendor, secret}で、generic_hmacの場合はheader、encoding(hexまたはbase64)、timestamp_header、tolerance_seconds(デフォルトは 300) が加わります。ベンダーの有効な署名を持つ送信は、Webhook 自身のsrkw_シークレットなしで受け付けられ、そのシークレットも並行して使えます。ベンダーのシークレットは封印して保存され、setとその末尾 4 文字だけが表示されます。verifyをsecretなしで送る変更は、ベンダーが同じである限り保存済みのものを保ち、verify: nullは検証を削除します。verifyと--signingは同時に使えません。handshakeはmicrosoft_graph、monday、trello、azure_event_gridのいずれかで、nullで削除されます。Slack と Asana は、verify.vendorを通じて自分たちのハンドシェイクに応答します。
verify.vendor | ヘッダー | 署名の対象 | タイムスタンプ |
|---|---|---|---|
github | X-Hub-Signature-256 | 本文の HMAC-SHA256 | なし |
stripe | Stripe-Signature | タイムスタンプ、ドット、本文の HMAC-SHA256。v1 のいずれかが一致すれば有効です | 5 分 |
shopify | X-Shopify-Hmac-Sha256 | 本文の HMAC-SHA256 (base64) | なし |
slack | X-Slack-Signature | v0:、タイムスタンプ、コロン、本文の HMAC-SHA256 | X-Slack-Request-Timestamp、5 分 |
linear | Linear-Signature | 本文の HMAC-SHA256 | 本文内の webhookTimestamp、1 分 |
vercel | x-vercel-signature | 本文の HMAC-SHA1 | なし |
asana | X-Hook-Signature | ハンドシェイクの X-Hook-Secret をキーとする、本文の HMAC-SHA256 | なし |
generic_hmac | 指定した header | 本文の HMAC-SHA256。timestamp_header がある場合は、タイムスタンプ、ドット、本文の HMAC-SHA256 | tolerance_seconds |
すべての HMAC のキーは、ベンダーが表示するとおりのシークレットのテキストです (Stripe のものには whsec_ が含まれます)。署名は、受信したままの本文に対して、一定時間で、送信が書き込み予算を消費する前に検証され、タイムスタンプより先に判定されます。そのため timestamp_stale は常にシークレットが正しかったことを意味します。本文は JSON、フォーム、multipart/form-data のいずれかで、テキストフィールドは body.FIELD になり、ファイルは数えるだけで読み取りません。
| ベンダー | screenRIG の応答 | その後の送信 |
|---|---|---|
Slack (verify.vendor slack) | 署名済みの url_verification とその challenge。curl でテストする人は、代わりに Webhook のシークレットを送れます | 署名シークレットで署名 |
Asana (asana) | ハンドシェイクの X-Hook-Secret。これを封印して保持し、すべての X-Hook-Signature のキーとして使います。同じシークレットをもう一度送ると再試行として扱われ、別のものは handshake_invalid として拒否されます | X-Hook-Signature |
Microsoft Graph (microsoft_graph) | デコードした ?validationToken= を text/plain として | Webhook のシークレットを付けて送ります |
monday.com (monday) | 送られてくる challenge を JSON としてそのまま返します | Webhook のシークレットを付けて送ります |
Trello (trello) | HEAD のチェックには、この Webhook に限り、本文なしで 200 を返します | Webhook のシークレットを付けて送ります |
Azure Event Grid (azure_event_grid) | {"validationResponse": "CODE"} | Webhook のシークレットを付けて送ります |
ハンドシェイクに応答するのは、そのベンダー用に設定された Webhook だけで、認証情報が求められる前に、そのハンドシェイクであるリクエストに対してのみ行い、無効な Webhook は応答しません。何も書き込まず、課金されず、レート予算も消費しません。Microsoft Graph、monday.com、Trello、Azure Event Grid は screenRIG が検証するヘッダーを送らないため、その配信は Webhook のシークレットがある場合にのみ受け付けられます。Azure Event Grid は、シークレットとして指定した静的な配信ヘッダー Authorization: Bearer srkw_… でそれを渡し、イベントは配列で届くため、マッピングは body[0] を読み取ります。
| ベンダー | ベンダーの設定画面 |
|---|---|
| GitHub | Settings、Webhooks、Add webhook: Payload URL には Webhook の url、コンテンツタイプには application/json、そして同じシークレットを指定します。GitHub の ping は署名され、受け付けられます |
| Stripe | Workbench、Webhooks: url を追加し、その署名シークレットを表示します。Stripe がシークレットをローテーションしている間は、それぞれに対して v1 を送り、どちらも受け付けられます。その後、保存済みのシークレットを PATCH で置き換えます |
| Shopify | url を JSON 形式で登録します。シークレットはアプリのクライアントシークレットです |
| Slack | Events API の Request URL は url で、シークレットはアプリの署名シークレットです。スラッシュコマンドはフォームを送信します: {{body.text}}、{{body.user_name}} |
| Linear | API の設定で url を指定して Webhook を作成し、その署名シークレットをコピーします。本文の webhookTimestamp は、サーバーの時計から 1 分以内でなければなりません |
| Vercel | Team settings、Webhooks: url を指定して作成します。Vercel はシークレットを 1 回だけ表示します |
| Asana | {"verify": {"vendor": "asana"}} で Webhook を作成します。まだシークレットがなく、イベントは secret_pending として拒否されます。次に、target を url にして Asana の Webhook を作成すると、ハンドシェイクがシークレットを設定します。新しいシークレットにするには、verify を null にして PATCH し、もう一度ベンダーを指定します |
| Microsoft Graph | notificationUrl を url にしてサブスクリプションを作成します |
| monday.com | url を指定して create_webhook を実行します |
| Trello | callbackURL を url にして POST /1/webhooks |
| Azure Event Grid | Webhook エンドポイントとして url を指定してイベントサブスクリプションを作成し、上記の配信ヘッダーを追加します |
curl https://api.screenrig.ai/api/cards/crd_01EXAMPLEBOARD0000000000/kv-webhooks \
-H "Authorization: Bearer $SCREENRIG_TOKEN" -H "Content-Type: application/json" \
--data '{"description":"Pushes","verify":{"vendor":"github","secret":"YOUR_SECRET"},
"mapping":{"title":"{{body.repository.full_name}}","body":"{{body.head_commit.message}}"}}'
独自の HMAC で署名する送信元は、ヘッダー、エンコード、そしてタイムスタンプに署名する場合はタイムスタンプのヘッダーを指定します:
curl https://api.screenrig.ai/api/cards/crd_01EXAMPLEBOARD0000000000/kv-webhooks \
-H "Authorization: Bearer $SCREENRIG_TOKEN" -H "Content-Type: application/json" \
--data '{"verify":{"vendor":"generic_hmac","secret":"YOUR_SECRET","header":"X-Acme-Signature",
"encoding":"base64","timestamp_header":"X-Acme-Time","tolerance_seconds":120},
"mapping":{"title":"{{body.sensor}}","body":"{{body.state}}"}}'
ts=$(date +%s); body='{"sensor":"door","state":"open"}'
sig=$(printf '%s.%s' "$ts" "$body" | openssl dgst -sha256 -hmac "$SECRET" -binary | openssl base64 -A)
curl "$URL" -H "Content-Type: application/json" -H "X-Acme-Time: $ts" -H "X-Acme-Signature: $sig" -d "$body"
失敗はすべて、他の拒否と同じ 404 になります。kv webhook deliveries で理由を確認でき、ハンドシェイクは結果 handshake として表示されます:
| 理由 | 意味 |
|---|---|
signature_missing | verify が設定されていて、送信にシークレットもベンダーのヘッダーも含まれていませんでした |
signature_invalid | ヘッダーの形式が正しくないか、本文と一致しません |
timestamp_missing | 署名にはタイムスタンプが必要ですが、送信に含まれていませんでした |
timestamp_stale | 署名は有効ですが、タイムスタンプが許容範囲外です |
secret_pending | Asana の検証が、まだハンドシェイクを待っています |
handshake_invalid | リクエストはベンダーのハンドシェイクですが、応答できません |
kv webhook update#
カードWebhookを変更します。説明、マッピング、有効状態、署名を変更できます。
kv webhook update <webhook_id> --card CARD_ID [--description TEXT] [--map FILE|-] [--clear-map]
[--enable|--disable] [--signing|--no-signing]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<webhook_id> | string | はい | なし | kvw_Webhook ID |
--card CARD_ID | string | はい | なし | crd_ のカードID。 |
--description TEXT | string | いいえ | なし | 送信されるもの、最大200文字。認証情報を含んではいけません。 |
--map FILE | パス | いいえ | なし | ファイルから読み取ったJSONオブジェクトでマッピングを置き換えます。stdin の場合は -。 |
--clear-map | boolean | いいえ | オフ | マッピングを削除します。送信されたオブジェクトがそのままドキュメントになります。 |
--enable / --disable | boolean | いいえ | オフ | --enable を指定するまで、--disable はすべての送信に誤ったシークレットと同じ応答を返します。 |
--signing / --no-signing | boolean | いいえ | オフ | --signing は署名ヘッダーを必須にし、署名シークレットを一度だけ表示します。--no-signing は署名ヘッダーの要求をやめます。 |
screenrig kv webhook update kvw_01EXAMPLEWEBHOOK00000 --card crd_01EXAMPLEBOARD0000000000 --map alert-map.jsonエンベロープはWebhookそのものです。data.signing_secret は、署名を有効にしたレスポンスにのみ一度だけ現れます。
kv webhook deliveries#
カードWebhookの配信ログを、過去7日分、新しい順に読み取ります。
kv webhook deliveries <webhook_id> --card CARD_ID [--limit N]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<webhook_id> | string | はい | なし | kvw_Webhook ID |
--card CARD_ID | string | はい | なし | crd_ のカードID。 |
--limit N | number | いいえ | 100 | 返す配信の件数。1〜100。 |
screenrig kv webhook deliveries kvw_01EXAMPLEWEBHOOK00000 --card crd_01EXAMPLEBOARD0000000000各項目には at、outcome (written、unchanged、refused、invalid、handshake)、reason (たとえば credentials、signature、disabled、body、mapping、card_data_invalid、rate_limited)、detail、status、bytes、revision、request_id があります。本文、ヘッダー、認証情報は保存されず、誤ったアドレスへの送信は行を残しません。
プレイリスト
プレイリストはページの JSON ドキュメントです。playlist init は順序付き入力からフルスクリーンドキュメントを準備します。playlist create と playlist update はファイルからそのドキュメントを読み込みます。形状はコマンドの下に要約されます。
playlist init#
ローカルメディアファイル、準備済みメディアID、アプリリリースID、またはHTTPまたはHTTPS URLから編集可能な全画面プレイリストを準備します。
playlist init <inputs...> --name NAME --output FILE [--overwrite] [--screen-id ID]
[--target-width PX --target-height PX] [--duration-ms MS] [--fit contain|cover|fill]
[--no-transcode] [--no-progress] [--poll-ms MS]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<inputs...> | ファイル、med_ ID、rel_ ID、または HTTPまたはHTTPS URL | はい | なし | 再生順。ローカル画像/動画ファイルは--no-transcodeがなければアップロード後準備完了まで待機。既存メディアはすでに準備済みである必要があります。HTTPおよびHTTPS URLにはLANホストや認証情報を含めることができ、ページが取得されることはありません。PlayerのWebアプリには、ユーザー名やパスワードを含まないHTTPS URLが必要です。 |
--name NAME | string | はい | なし | プレイリストの表示名。 |
--output FILE | パス | はい | なし | 編集可能な{name, pages}ドキュメントを書く。親ディレクトリは作成されます。デフォルトは排他。 |
--overwrite | boolean | いいえ | オフ | 既存の出力ファイルをアトミックに置き換えます。 |
--screen-id ID | string | いいえ | なし | 対象スクリーンの寸法とリビジョンを読み取ります。 |
--target-width PX / --target-height PX | integer | 一緒に | 未設定 | キャンバスサイズを上書きします。両方またはどちらもなし。スクリーンが提供されないか、スクリーンが不明または複数のサーフェスを報告する場合に必須です。 |
--duration-ms MS | integer | いいえ | 8000 | 非動画ページの継続時間。 |
--fit | string | いいえ | contain | 画像およびビデオページにはcontain、cover、またはfillを使用します。アプリケーションとiframeはfillを使用します。 |
--no-transcode | boolean | いいえ | オフ | アップロードされたファイルのバイトは変更されていません。 |
--no-progress | boolean | いいえ | オフ | stderrのアップロード進行を抑制 |
--poll-ms MS | integer | いいえ | 1000 | ポーリング間隔をアップロード |
screenrig playlist init med_POSTER med_VIDEO --name "Lobby loop" --screen-id scr_LOBBY --output lobby.json準備はローカルドキュメントを書き込み、メディアをアップロードすることがあります。リモートプレイリストの作成やスクリーンの割り当ては行いません。ドキュメントを検査した後、screen publishしてください。プレイリストの準備、公開、編集を参照。
playlist validate#
作成または更新前にプレイリストドキュメントをローカルで検証します。ネットワーク不要。
playlist validate <file>| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<file> | パス | はい | なし | プレイリストドキュメントです。 |
screenrig playlist validate ./lobby-loop.jsonエラーは正確なJSONパスを示します。パスが通ればローカルの形状とフィールド間意味は有効ですが、認可、メディア準備、動的セレクター数、期間、リモート可用性はサーバーチェックが必要です。作成と更新は書き込み前にこのチェックを実行します。結果には、チェックを失敗させないジオメトリの lint 検出結果も含まれます:motion_overuse、collision、safe_margin、adjacent_repeat。ページの見え方を確認するには、公開して screen screenshot を実行します。
playlist create#
JSON ドキュメント、テンプレート、または組み込みの「緊急のお知らせ」テンプレートからプレイリストを作成します。
playlist create [file] [--from-template ID --name NAME [--set NAME=VALUE...] [--dry-run]] [--starter KEY [--name NAME]] [--format-region REGION --format-orientation ORIENTATION] [--note TEXT]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
[file] | パス | いいえ | なし | プレイリストのドキュメント。これか、--from-template か、--starter のいずれかを指定します。 |
--from-template ID | string | いいえ | なし | このテンプレート(pl_ の ID)からプレイリストを作成します。現在のページに --set の値を入力し、通常のプレイリストと同様に検証します。 |
--name NAME | string | --from-template と併用 | なし | 新しいプレイリストの名前。 |
--set NAME=VALUE | string | いいえ | なし | --from-template と併用:フィールドの値。メディアフィールドには準備完了の画像または動画の ID を指定します。繰り返し指定できます。 |
--dry-run | boolean | いいえ | オフ | --from-template と併用:何も作成せずに、値を確認してページ数を報告します。 |
--starter KEY | string | いいえ | なし | 組み込みテンプレートを追加します:urgent-notice。素早いお知らせのための見出しとメッセージです。 |
--format-region REGION | string | いいえ | なし | header、footer、または side:プレイリストをその端に沿ってページの上に描画するストリップにし、ファイル内の format を置き換えます。--format-orientation と一緒に指定してください。ストリップを参照してください。 |
--format-orientation ORIENTATION | string | --format-region とともに | なし | landscape または portrait:ストリップの対象となるディスプレイの向き(視聴者から見た向き)。 |
--note TEXT | string | いいえ | なし | 変更を確認する人へのメモ:プレーンテキストで最大280文字。変更が即時適用される場合は無視されます。 |
screenrig playlist create ./lobby-loop.jsonscreenrig playlist create --from-template pl_01EXAMPLETEMPLATE00000 --name "Monday notice" --set headline="Open late"エンベロープの data.id は、screen assign が受け取る pl_ ID です。変更が確認待ちのときは data が {status: pending_review, review, playlist} となり、プレイリストは approved_revision: 0 で存在し、承認されるまでどの画面にも表示できません(playlist_not_approved)。テンプレートは fields を宣言したプレイリストで、画面には表示されません(playlist_is_template)。テンプレートから作成したプレイリストは通常のプレイリストとして割り当て、スケジュールし、改訂できます。
playlist update#
プレイリストドキュメントを置き換えます。
playlist update <id> <file> [--format-region REGION --format-orientation ORIENTATION] [--expect-rev REVISION] [--note TEXT]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | pl_プレイリストID |
<file> | パス | はい | なし | 置換ドキュメント。 |
--format-region REGION | string | いいえ | なし | header、footer、または side:プレイリストをその端に沿ってページの上に描画するストリップにし、ファイル内の format を置き換えます。--format-orientation と一緒に指定してください。ストリップを参照してください。 |
--format-orientation ORIENTATION | string | --format-region とともに | なし | landscape または portrait:ストリップの対象となるディスプレイの向き(視聴者から見た向き)。 |
--expect-rev REVISION | string | いいえ | なし | オプションのリビジョン前提条件。現在のリソースを書き込む場合は省略します。提供された古い値はrevision_conflictです:再取得、再適用、再試行。 |
--note TEXT | string | いいえ | なし | 変更を確認する人へのメモ:プレーンテキストで最大280文字。変更が即時適用される場合は無視されます。 |
screenrig playlist update pl_01EXAMPLEPLAYLIST000000 ./lobby-loop.json変更がレビュー待ちの場合、ライブプレイリストは人が提案を承認するまで変更されずに再生され続けます。
playlist show#
1件のプレイリストとその現在のリビジョンを読み込みます。
playlist show <id>| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | pl_プレイリストID |
screenrig playlist show pl_01EXAMPLEPLAYLIST000000ライブバージョンを返します。approved_revisionはまだ誰も承認していないプレイリストの0であり、変更待ちの間はapprovalがオープンレビュー名を示し、reviews show IDは提案を返します。
playlist list#
プロジェクトのプレイリスト一覧
playlist list [--templates] [--library]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
--templates | boolean | いいえ | オフ | テンプレートのみ:フィールドを宣言したプレイリスト。 |
--library | boolean | いいえ | オフ | 代わりに組織のライブラリのプレイリストを読み取り専用で一覧します。スクリーン、スケジュール、スタックに割り当てるか、playlist create --from-template でコピーしてください。変更はライブラリプロジェクトでのみ行います。 |
screenrig playlist list --templates
screenrig playlist list --libraryplaylist fields#
テンプレートのフィールドまたはコピーの値を表示するか、値を変更してコピーを最新の状態にします。
playlist fields <id> [--set NAME=VALUE...] [--clear NAME...] [--refresh] [--expect-rev REVISION] [--note TEXT]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | テンプレート、またはテンプレートから作成したプレイリストの pl_ ID。 |
--set NAME=VALUE | string | いいえ | なし | フィールドの値を設定します。繰り返し指定できます。 |
--clear NAME | string | いいえ | なし | オプションのフィールドの値を消去します。繰り返し指定できます。 |
--refresh | boolean | いいえ | オフ | 値に関係なく、テンプレートの現在のリビジョンからページを作り直します。 |
--expect-rev REVISION | string | いいえ | なし | このリソースのリビジョンを任意で要求します。 |
--note TEXT | string | いいえ | なし | 変更を確認する担当者へのメモ。 |
screenrig playlist fields pl_01EXAMPLECOPY00000000 --set headline="Closed today"オプションなしでは、テンプレートのフィールドとそこから作成されたプレイリストの数、またはコピーの値、作成元のテンプレートのリビジョン、テンプレートに新しいリビジョンがあるかどうかを表示します。すべての変更、および --refresh だけでも、テンプレートの現在のリビジョンからコピーのページを作り直します。これがテンプレートへのブランド変更が既存のコピーに反映される方法で、自動では反映されません。値は作成時と同様に検証されます。Propose アクセスでは変更は確認依頼になります。
playlist instances#
テンプレートから作成したプレイリストと、それぞれの作成元のテンプレートのリビジョンを一覧表示します。
playlist instances <id>| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | テンプレートの pl_ ID。 |
screenrig playlist instances pl_01EXAMPLETEMPLATE00000outdated は、テンプレートの古いリビジョンから作成されたプレイリストを示します。playlist fields ID --refresh で最新の状態になります。
playlist revisions#
プレイリストのリビジョンを新しい順に一覧表示します。
playlist revisions <id> [--after CURSOR]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | pl_プレイリストID |
--after CURSOR | string | いいえ | なし | 前のページのnext_cursor |
screenrig playlist revisions pl_01EXAMPLEPLAYLIST000000各リビジョンには、それを作成したもの(created、edited、コピー元のリビジョン付きのpromoted、または履歴開始時にプレイリストが持っていたリビジョンであるbaseline)、作成者、日時、ページ数、現在のリビジョンかどうかが示されます。1ページに50件のリビジョンが含まれ、next_cursorで次のページを読み込みます。
playlist revision show#
1件のリビジョンと、その時点のプレイリストを読み込みます。
playlist revision show <id> --revision N| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | pl_プレイリストID |
--revision N | integer | はい | なし | 読み込むリビジョン。 |
screenrig playlist revision show pl_01EXAMPLEPLAYLIST000000 --revision 3playlist promote#
以前のリビジョンを新しいリビジョンとしてコピーし、再び現在のものにします。
playlist promote <id> --revision N --expect-rev CURRENT| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | pl_プレイリストID |
--revision N | integer | はい | なし | コピーするリビジョン。 |
--expect-rev CURRENT | string | はい | なし | プレイリストの現在のリビジョン(playlist show)。古い値はrevision_conflictです:プレイリストを読み直して再試行します。 |
screenrig playlist promote pl_01EXAMPLEPLAYLIST000000 --revision 3 --expect-rev 9そのリビジョンのページ、サウンドトラック、形式が次のリビジョンになります。名前はそのまま、以前のリビジョンも一覧に残り、プレイリストを表示しているすべての画面が更新されます。昇格にはライブで公開できる認証情報が必要です。変更がレビュー待ちになる認証情報にはforbiddenが返ります。内容がすでに現在のものと同じリビジョンでは何も変わりません。
playlist delete#
プレイリストを1つ削除します。
playlist delete <id> [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | pl_プレイリストID |
--expect-rev REVISION | string | いいえ | なし | オプションのリビジョン前提条件。現在のリソースを書き込む場合は省略します。提供された古い値はrevision_conflictです:再取得、再適用、再試行。 |
screenrig playlist delete pl_01EXAMPLEPLAYLIST000000playlist export#
画像と動画のファイル、サウンドトラックの音声、iframe URL をポータブルなプレイリストバンドルとしてエクスポートします。
playlist export <id> --output DIRECTORY [--skip-applications]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | pl_プレイリストID |
--output DIRECTORY | パス | はい | なし | 保存先ディレクトリ。既存であってはなりません。バンドルは一時的な隣接ファイルを経由して書き込まれ、リネームされます。 |
--skip-applications | フラグ | いいえ | オフ | アプリケーションプリミティブと、空のページまたはアプリケーションが制御するページを削除します。少なくとも 1 ページを残す必要があります。結果には、スキップしたプリミティブとページの ID が一覧表示されます。 |
screenrig playlist export pl_01EXAMPLEPLAYLIST000000 --output ./lobby-bundleバンドルには、マニフェスト、プレイリストドキュメント、内容に基づいてアドレス指定された画像、動画、サウンドトラック音声のファイルが含まれます。動的セレクター all、tag、folder は正確な ID に固定され、iframe URL は保持され、コメントは除外されます。
カード、ストリーム、adslot ページがあると、メディアのダウンロード前にエクスポートが停止します。アプリケーションも既定ではエクスポートを停止させます。--skip-applications はアプリケーションプリミティブと、空のページまたはアプリケーションが制御するページを削除し、スキップしたプリミティブとページの ID を報告します。少なくとも 1 ページを残す必要があります。このフラグを指定しても、カード、ストリーム、adslot ページがあるとエクスポートは停止します。
カードとアプリケーションへの参照を保持した編集可能なドキュメントには、screenrig playlist show pl_01EXAMPLEPLAYLIST000000 --output playlist.json を使います。ドキュメントは同じプロジェクトの既存リソースを使います。
playlist import#
バンドルディレクトリからプレイリストを作成、または既存のものを更新。
playlist import <directory> [--name NAME] [--update ID [--expect-rev REVISION] [--note TEXT]]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<directory> | パス | はい | なし | playlist export によって書き込まれたバンドルディレクトリです。 |
--name NAME | string | いいえ | バンドルの playlist 名 | 1~120文字。この名前でバンドルを新しいプレイリストとしてインポート。 |
--update ID | string | いいえ | 新しいプレイリストが作成されました | 新規作成ではなくこのpl_プレイリストを更新します。オプションの--expect-revを受け入れます。 |
--expect-rev REVISION | string | いいえ | なし | 宛先プレイリストの現在のリビジョンです。 |
--note TEXT | string | いいえ | なし | --update付き:変更をレビューする人へのメモ、最大280文字。 |
screenrig playlist import ./lobby-bundle
screenrig playlist import ./lobby-bundle --name "Lobby loop (copy)"プレイリストの表示名は繰り返される場合があります。インポートは名前が一致しても別のプレイリストを作成します。既存のプレイリストを置き換えるには ID を指定して --update を使用してください。
インポートはプロジェクトに触れる前にバンドル全体をローカルで検証します:マニフェスト、ドキュメント、パス、メディア種別、長さ、ハッシュ。既存のメディアは正確なファイル名、メディアタイプ、バイト長、ハッシュ、タグが一致した場合に再利用され、残りは変換なしでアップロードされ、すべてのオブジェクトが準備済みになった後にプレイリストが書き込まれます。
インポートはリモートメディアを削除または剪定しません。アップロード開始後に後続のステップが失敗した場合、エラーは準備済みと確認されたオブジェクトをリストし、プレイリスト書き込みが開始されたかどうかを示します。同じバンドルを再試行すると、それらのオブジェクトが再利用されます。
プレイリストドキュメント
プレイリストは name と pages、オプションの audio サウンドトラックで構成されます。各ページは id、canvas、transition、advance、オプションの visibility、オプションの audio_cue、および primitives を持ちます。
テンプレートはドキュメントに fields を追加し、[{name, label, type, required, max_length?}] の type は text、media、url のいずれかで、任意のプリミティブを locked: true としてマークできます。ページはフィールドを、カードの params では {field.NAME}(テキストとアドレスのフィールド)、画像または動画の selector.media_id(メディアフィールド)、iframe の src 全体(アドレスフィールド)として読み取ります。すべてのトークンは正しい型の宣言済みフィールドを指し、すべてのフィールドが読み取られる必要があり、ロックされたプリミティブは何も読み取りません。playlist validate がこれをオフラインで確認します。ロックされたプリミティブを変更できるのは、オーナーまたは承認できるメンバーだけです(primitive_locked)。
6 つのプリミティブは image、アップロード済み video、ライブ stream、Web iframe と application、および card です。コピーとクロームはワイヤータイプではありません。ライブテキストには card を配置するか、完成した静止画をアップロード(media generate で作成できます)して画像として配置してください。
ストリームには、一意のプロトコルを持つ1つまたは2つの順序付きソースと、同じプロジェクトの準備済み画像を fallback_media_id として指定します。1ページにつきストリームは最大1つで、期間ベースの進行を使用します。HLSは公開HTTPS URLを使い、AndroidとQtのPlayerはログイン情報も含めてRTSPカメラ映像に直接接続します。各Playerが開くURLの形式はカメラの通信方式の詳細を参照してください。AndroidとQtではオプションで直接UDP/MPEG-TSマルチキャストを使え、239/8のIPv4グループとポートを指定します。ソースは url だけを指定し、スキームでプロトコルを決めることもできます。他のPlayerはHLS代替を選ぶか、フォールバックを表示します。ストリームのバイトは再生用にキャッシュされません。音声はデフォルトでミュートです。プレイリストバンドルのインポートとエクスポートはストリームをサポートしません。
{
"id": "live",
"primitive": "stream",
"sources": [
{
"protocol": "udp-mpegts",
"group": "239.10.0.1",
"port": 5000
},
{
"protocol": "hls",
"url": "https://example.com/live.m3u8"
}
],
"fallback_media_id": "med_fallback",
"muted": true,
"rect": {
"x": 0,
"y": 0,
"width": 1920,
"height": 1080
},
"layer": 0,
"content_fit": "contain"
}このプリミティブはadvance: {"mode":"duration","after_ms":30000}を含むページで使用してください。例のフィードとフォールバックIDを置き換えてください。プレーヤーの要件とトランスポート設定。
すべてのプリミティブはフラットです:id、primitive、そのプリミティブ自身のフィールド、次にrect、layer、content_fit、オプションのenter。ネストされたcontentオブジェクトはありません。
画像およびビデオのプリミティブには selector が必要です。selector.by は、準備完了の media_id が1つで one_at_a_time が false の id、1〜1,024個の一意の準備完了 media_ids を持つ ids、そのプリミティブの準備完了オブジェクトすべてを表す all、^[A-Za-z0-9]{1,32}$ に一致する tag、または既存の mfd_ メディアフォルダーの folder_id を持つ folder のいずれかです。この場合はフォルダー直下の準備完了ファイルをそのまま再生し、サブフォルダーのファイルは再生しません。プリミティブ自体に media_id を付けたり、サーバーが解決したアイテムを送ったりしないでください。application プリミティブは1つの release_id を固定し、iframe プリミティブは src とタイトルを受け取るため、どちらもセレクターは使えません。src は、スクリーンから到達できる任意の http または https ページで、LAN 上のページやログインが必要なページも含まれます。YouTube のリンクは自動再生の埋め込みとして保存されます。src、および iframe の任意の fallback_src には、{screen.field.kiosk_id} のようなスクリーントークンを含めることができ、application プリミティブも同じトークンを使った params を持てるため、1つのプレイリストで各スクリーンに専用のページを表示できます。Android、Amazon Signage Stick、Linux、Raspberry Pi、Windows の Player はページそのものを開きます。Player ウェブアプリと macOS、Samsung Tizen、LG webOS、BrightSign の Player はページをフレームに表示するため、X-Frame-Options(DENY、SAMEORIGIN、または廃止された ALLOW-FROM)を送るページ、または Player のオリジンを含まない Content-Security-Policy frame-ancestors リストを持つページでは、これらの Player でブロックされたフレームが表示され、Player ウェブアプリはアドレスにログインを含まない https ページのみを表示します。公開 HTTPS ページがフレーム表示を拒否していることを公開時に検出しても、書き込みは成功し、CLI はサーバーの warnings エントリを表示します。コード iframe_framing_refused、page_id、primitive_id、src、拒否したヘッダー、次の手順(Player のオリジンからのフレーム表示を許可するページを使うか、そのオリジンの許可をページの所有者に依頼してください)が含まれます。サーバーはまた、拒否したページごとに playlist.iframe_framing_refused 警告をイベントログに追加し、events list は primitive_id を付けるとそれを表示します。LAN 上のページ、http ページ、数秒以内にサーバーが到達できないページは検査されません。Player はマニフェストが画面に表示された時点でプレイリストを再生中と報告するため、検証済みの公開が iframe ページの描画を保証するわけではありません。警告に対処するか、スクリーンを確認してください。どちらのウェブプリミティブにも固有のサイズがないため、いずれも content_fit に fill を指定する必要があります。
advance.mode は duration であり、after_ms を伴います。YouTube 動画がちょうど 1 つあるページ(プレイリストやライブは除く)では、until を video_end に設定すると、動画が終わるまでページが表示され、after_ms は画面が動画の長さを読み取れないときの表示時間になります。1つだけ画像または動画プリミティブがあるページでは media_end、audio_cue がサウンドトラックトラックを指定するページでは audio_end、アプリが window.screenrig.nextPage() を呼び出して自身のターンを終了する場合は application と max_ms です。application ページには controller でマークされたプリミティブが1つだけ必要です。他のすべてのモードでは禁止されます。
transition.type は crossfade、swipe-left、swipe-right、swipe-up、swipe-down、dip、wipe-left、wipe-right、wipe-up、wipe-down、slide-left、slide-right、slide-up、slide-down、stinger のいずれかです。duration_ms は必須で、0〜60000 です。デフォルトページは 200ms のクロスフェードです。スワイプは両ページをカルーセルのように同時に動かします。スライドは新しいページが既存ページの上を移動し、既存ページは4分の1だけ動きます。ワイプは動くエッジで新しいページを後ろから表示します。ディップは既存ページを単色にフェードアウトし、新しいページにフェードインします。color はオプションの #RRGGBB で、デフォルトは #000000、dip でのみ有効です。方向名は動く方向を示します。wipe-left はエッジが左へ動きます。ease はオプションで、linear、in、out、in-out のいずれかです。デフォルトは crossfade と swipe-* では linear、dip、wipe-*、slide-* では in-out です。stinger では指定できません。新しいページが遷移を所有します。プレイリストの最初のページには遷移がありません。
スティンガーは、画面を覆うテーマ付き全画面グラフィックで、アウトゴーイングページを覆い、画面が覆われている間にインカミングページを切り替え、その後覆いを外します。プレイリストのセクション名として使用します:セクションの最初のページに置いてください。stinger オブジェクトは type: "stinger" に必須で、他のタイプでは許可されません。すべてのメンバーは任意です。theme は neomustard(デフォルト)、cyanotype、propaganda、signal、avant-garde、bloom または primetime のいずれかで、カードテーマに対応します。title は最大40文字、subtitle は最大60文字でテーマの表示タイプで設定します。logo は media: とプロジェクト内の準備済み画像のID(例:media:med_01EXAMPLE)の組み合わせです。accent はテーマのアクセントを置き換える任意の #RRGGBB です。スティンガーの duration_ms は2000から6000でバンパー全体を覆い、典型的な長さは2700から4000です。タイトルは hang_ms(0から6000、デフォルト1000ミリ秒=1秒)間完全表示され、hang_ms は duration_ms の最大60%です。長い表示には長い duration_ms が必要です。スティンガーを描画できないプレーヤーは同じ長さのクロスフェードを再生します。ライブのスティンガーカードページでトランジションを確認できます。
以下の例はスティンガーページのトランジションを示します。
{ "type": "stinger", "duration_ms": 3500, "stinger": { "theme": "primetime", "title": "BREAKFAST", "subtitle": "Served until 11", "logo": "media:med_01EXAMPLE", "hang_ms": 1000 } }プリミティブのオプションenterオブジェクトは1つのオブジェクトアニメーションを追加します:fade-up、fade-down、fade-left、fade-right、fade-in、zoom-in、またはzoom-out。
オプションのページvisibilityオブジェクトはページの再生時間を制限します:必須のenabledブール値、オプションの市民時間fromとuntilの範囲、最大16件の繰り返しwindows(曜日と市民時間)。すべてのプレイリストは少なくとも1つのページを持ち、visibilityフィールドが全くないものもあります。スケジュールされたプレイリストを実行するスクリーンはタイムゾーンが必要です。まずそのタイムゾーンを設定してください。screen assignとplaylist updateはどちらもタイムゾーンなしではローカルで拒否し、修正コマンド名を示します。
ページのvisibility.data条件{key, path?, equals?}は、カードデータのドキュメントが一致している間だけページを表示します。keyはカードデータのキーまたはカードID、pathはドキュメント内のRFC 6901ポインター、equalsは文字列、数値、ブール値、またはnullです(省略すると値が存在するかどうかを判定します)。キー{screen.weather}は各スクリーン自身の場所の天気を読み取ります。場所はscreen update ID --location LAT,LONで設定します。{"enabled":true,"data":{"key":"{screen.weather}","path":"/condition","equals":"rain"}}は、そのスクリーンがある場所で雨が降っている間だけページを表示します。天気ドキュメントにはcondition(clear、cloud、fog、rain、snow、storm、wind)、band(freezingは0 °C未満、coldは0〜9、mildは10〜17、warmは18〜24、hotは25以上)、整数度のtemperatureC、isDayがあります。これはスクリーンの0.25度セルの現在の天気で、約1時間ごとに更新され、予報ではありません。場所のないスクリーンはこのページを表示せず、公開時にはドキュメントに含まれないpathやequals(cloudの代わりのcloudyなど)は拒否されます。visibilityのない通常のページを予備として残してください。
オプションのトップレベルaudioオブジェクトはページが変わる間連続再生されるサウンドトラックを追加します。tracksは再生順に1から128件のエントリをリストし、それぞれにユニークなid(ページIDパターン)と準備完了のaudioメディアオブジェクトのmedia_idを持ちます。loopはtrueがデフォルトで、最後のトラック後に最初に戻ります。volumeは1がデフォルトで0から1の範囲で、Playerの音量に乗算されます。cuedはfalseがデフォルトで、trueは各トラック後にサウンドトラックを停止し、トラックはページaudio_cueが開始した時のみ再生されます。通常のページはaudio_cueを持ち、そのリストのtrackIDとオプションのrestartブール値(デフォルトfalse)を持ちます:ページが表示されるとPlayerはそのトラックを開始から切り替え、すでに再生中でrestartがtrueの場合のみ再起動します。キューはヒントであり、広告スロットページはキューを持てず、サウンドトラックなしのキューは拒否されます。advance{"mode":"audio_end"}を持つページは、そのaudio_cueが示すトラックの終了時に終了し、キューとサウンドトラックが必要で、after_msは取りません。画像と動画プリミティブのdurationルールに従います。streamプリミティブはまだdurationページが必要で、ページ上のアプリは決してそのコントローラーではありません。max_msはサーバーが上書きするオプションのヒントです。playlist updateは文書全体を置き換え、audioを省略するとサウンドトラックが削除されます。サウンドトラック作成。
カード
カードの種類を調べ、インスタンスを作成し、そのライブデータを更新します。プレイリストには返されたカードIDを配置します。
screenrig cards list
screenrig cards show gauge
screenrig card create --type gauge --file gauge-params.json
screenrig card list
screenrig card show crd_EXAMPLE
screenrig card params crd_EXAMPLE --file gauge-params.json
screenrig card data get crd_EXAMPLE
screenrig card data put crd_EXAMPLE --file gauge-data.json --expect-rev 1
screenrig card preview crd_EXAMPLE --output gauge.pngスクリーン
スクリーンは1つのPlayerです。これらのコマンドはそれを読み、プレイリストを指定し、管理します。リビジョンの前提条件は書き込み時に任意です。
タグはスクリーンを艦隊にグループ化します。各スクリーンは1~32文字の英数字のユニークタグを0~16個持ち、screen tagで設定します。screen assign、screen reload、screen toast、screen tag、screen screenshotは1つまたは複数のスクリーンID、または--tag TAGを受け取り、艦隊の回答はすべてのスクリーンを報告します:艦隊結果を参照。
スクリーンフォルダーはスクリーンを場所ごとにまとめ、1つのスクリーンは1つのフォルダーに入ります。フリートコマンドは--folder IDも受け付けます。スクリーンフォルダーを参照してください。
screen pair#
画面に表示されたコードでPlayerをペアリングします。
screenrig screen pair "$PAIRING_CODE" --name "Lobby"screen list#
スクリーン一覧。アーカイブ済みは指定がなければ除外
screen list [--state archived] [--tag TAG] [--folder ID|root]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
--state | string | いいえ | アクティブなスクリーン | 許可される値はarchivedのみで、アーカイブされたスクリーンのみをリストします。 |
--tag TAG | string | いいえ | すべてのスクリーン | このタグを正確に持つスクリーンのみ一覧表示 |
--folder ID|root | string | いいえ | すべてのスクリーン | この sfd_ スクリーンフォルダー直下のスクリーンのみ、サブフォルダー内は含みません。root はどのフォルダーにも属さないスクリーンのみです。 |
screenrig screen list --tag Lobby
screenrig screen list --folder sfd_01EXAMPLEFOLDER000000000各行にはスクリーンのtagsが含まれます。--humanがある場合、一覧内のいずれかのスクリーンにタグが付いていれば、表にTAGS列が追加されます。
screen show#
1件のスクリーン(リビジョン、割り当て、稼働状況を含む)を読み込みます。
screen show <id>| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | scr_スクリーンID |
screenrig screen show scr_01EXAMPLESCREEN00000000tags はスクリーンのフリートタグを一覧表示します。effective_playlist, takeover, playlist_schedule はスクリーンが何を再生しているかとその理由を報告します。詳細は スケジュールとテイクオーバー を参照してください。health とプレーヤーのホスト機能は デバイスのヘルスと電源 にあります。online はプレーヤーが接続中(短時間の再接続ウィンドウも含む)の間 true です。オプションの last_online_at と last_ip は初回接続後に表示されます。オプションの observation はプレーヤーが描画したサーフェスを報告します:id, width, height, pixel_ratio, presentation。これらはすべて読み取り専用です。screen update は送信できず、アーカイブされたスクリーンも行を返します。
commands は、スクリーンの直近10件の再起動、再読み込み、キャッシュのクリア、アプリの再起動、更新を古い順に一覧します。各項目には、type、state(queued、sent、done、failed、expired、cancelled、superseded)、source(再起動スケジュールが発行した再起動には schedule、人が依頼したものでは存在しません)、expires_at、送信または完了した時刻が含まれます。reboot_schedule と next_reboot_at は、スクリーンの再起動スケジュールと次の再起動ウィンドウの開始を報告します。Player が終了させたキャッシュのクリア、アプリの再起動、更新には、cause と短い detail も含まれ、--human はこれを CAUSE 列と表の下の行として表示します。suspension には、一時停止中のスクリーンの message と since が含まれます。screen replace でアーカイブされたスクリーンは、デバイスの移動先のスクリーンである replaced_by を報告します。--human を付けると、screen show がそれぞれを表示します。
last_outage は、画面の直近の停止を報告します:offline_since、back_at、duration_s。ヘルスレポートで判定されると、device_restart、app_crash、app_restart、network、platform のいずれかを値とする likely_cause も含まれます。screenRIG が判断できない場合は含まれません。再起動は画面の復帰時に判定されますが、ネットワークまたは screenRIG が原因の場合は Player の次のヘルスレポートを待つため、最大 15 分かかることがあります。glass には、画面の再生レポートとスクリーンショットから screenRIG が導いた判定が入ります。--human を付けると、screen show は Last outage と Likely cause を表示し、問題が見つかった判定では Playlist stalled、Blank screen、または Frozen picture を表示します。判定が対象外とするものについては 通知 を参照してください。
screen update#
スクリーンの名前、プレイリスト割り当て、タイムゾーンを一度の呼び出しでパッチします。
screen update <id> [--name NAME] [--playlist-id ID] [--timezone ZONE] [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | scr_スクリーンID |
--name NAME | string | いいえ | 変更なし | スクリーンの表示名。 |
--playlist-id ID | string | いいえ | 変更なし | このスクリーンで再生するpl_プレイリスト |
--timezone ZONE | string | いいえ | 変更なし | America/Los_Angeles のような IANA ゾーン識別子。サーバーのゾーンデータベースで検証されます。パッチはゾーンをクリアしません。 |
--expect-rev REVISION | string | いいえ | なし | オプションのリビジョン前提条件。現在のリソースを書き込む場合は省略します。提供された古い値はrevision_conflictです:再取得、再適用、再試行。 |
screenrig screen update scr_01EXAMPLESCREEN00000000 --name "Lobby"レビュー中は--playlist-idの変更のみがscreen assignのように提案されます。Proposeセッションは他のフィールドを変更できません。
screen publish#
準備済みファイルから新しいプレイリストを作成し、スクリーンに割り当てる。
screen publish <id> <file> [--expect-rev REVISION] [--note TEXT]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | scr_スクリーンID |
<file> | パス | はい | なし | 準備済みのプレイリストドキュメント、または標準入力の場合は-です。 |
--expect-rev REVISION | string | いいえ | なし | オプションのスクリーンリビジョン前提条件。現在のリソースを書き込む場合は省略します。提供された古い値はrevision_conflictです:再取得、再適用、再試行。 |
--note TEXT | string | いいえ | なし | 変更を確認する人へのメモ:プレーンテキストで最大280文字。変更が即時適用される場合は無視されます。 |
screenrig screen publish scr_LOBBY lobby.jsonこれは新しいプレイリストを作成して割り当てます。既存のプレイリストを名前で更新しません。準備したドキュメントを先に検査してください。同じ入力を繰り返すと、曖昧な失敗から再開できます。割り当ての読み戻しは再生を証明しません。スクリーンショットを別途リクエストしてください。レビュー中は両方のレビューと共にstage: pending_reviewを返します。詳細はプレイリストの準備、公開、編集を参照してください。
screen assign#
スクリーンまたはスクリーン群をプレイリストに向けます。
screen assign (<id>... | --tag TAG) --playlist-id ID [--expect-rev REVISION] [--note TEXT]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id>... | string | <id> または --tag のいずれか | なし | 1つ以上のscr_スクリーンID。複数IDは1つのフリートリクエストとして実行されます。 |
--tag TAG | string | <id> または --tag のいずれか | なし | このタグを持つすべてのアクティブスクリーン。 |
--playlist-id ID | string | はい | なし | 再生するpl_プレイリスト |
--expect-rev REVISION | string | いいえ | なし | 1つのスクリーンIDのみ。任意のリビジョン前提条件。省略時は現在のリソースを書き込み。提供された古い値はrevision_conflict:再取得、再適用、再試行。 |
--note TEXT | string | いいえ | なし | 変更を確認する人へのメモ:プレーンテキストで最大280文字。変更が即時適用される場合は無視されます。 |
screenrig screen assign scr_01EXAMPLESCREEN00000000 --playlist-id pl_01EXAMPLEPLAYLIST000000
screenrig screen assign --tag Lobby --playlist-id pl_01EXAMPLEPLAYLIST000000プレイリストが任意のページをスケジュールし、スクリーンにタイムゾーンがない場合、CLIは何も送信せず拒否し、実行すべきscreen set-timezoneコマンドを示します。この拒否でリビジョンは消費されません。フリートでは各スクリーンが独自にこのルールを適用し、タイムゾーンなしのスクリーンは結果で失敗し、他は割り当てられます。
フリートに公開するには、まずplaylist createでプレイリストを作成し、次にscreen assign --tag TAG --playlist-id IDを実行します。screen publishは1つのスクリーンを対象とします。
screen set-timezone#
スケジュールされたプレイリストが読み込まれる標準時刻帯を設定
screen set-timezone <id> --timezone ZONE [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | scr_スクリーンID |
--timezone ZONE | string | はい | なし | Europe/Berlin のような IANA ゾーン識別子。 |
--expect-rev REVISION | string | いいえ | なし | オプションのリビジョン前提条件。現在のリソースを書き込む場合は省略します。提供された古い値はrevision_conflictです:再取得、再適用、再試行。 |
screenrig screen set-timezone scr_01EXAMPLESCREEN00000000 --timezone America/Los_Angelesページスケジュールは標準時刻なので、ゾーンなしでは意味がありません。ゾーンを変更するとマニフェストリビジョンが再発行されます。
screen archive#
スクリーンを非表示にし、ガラスを暗くします。
screen archive <id> [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | scr_スクリーンID |
--expect-rev REVISION | string | いいえ | なし | オプションのリビジョン前提条件。現在のリソースを書き込む場合は省略します。提供された古い値はrevision_conflictです:再取得、再適用、再試行。 |
screenrig screen archive scr_01EXAMPLESCREEN00000000アーカイブすると、スクリーンがデフォルトの一覧から非表示になり、画面が暗くなります。Player のバインドは解除されません。
screen unarchive#
アーカイブ済みスクリーンをデフォルトリストに復元します。
screen unarchive <id> [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | scr_スクリーンID |
--expect-rev REVISION | string | いいえ | なし | オプションのリビジョン前提条件。現在のリソースを書き込む場合は省略します。提供された古い値はrevision_conflictです:再取得、再適用、再試行。 |
screenrig screen unarchive scr_01EXAMPLESCREEN00000000Player は自身のスクリーンもアーカイブできます。キーを持つ Player ではリセットの確認、Cookie でペアリングされたブラウザー Player ではペアリング解除です。screen show は archive_reason を device_reset または device_unpair(リクエストしたアーカイブの場合は project)として archived_at で報告します。スクリーンはあらゆる理由でデバイスの紐付けを保持するため、そのキーやデバイス Cookie を持つ Player は暗転し、アーカイブ解除時に再ペアリングなしで復帰します。リセットまたはペアリング解除された Player はキーや Cookie を破棄し、新しいスクリーンとして再ペアリングします。確認済みのスクリーン復元で置き換えられたキーは無効のままです。
screen replace によって replaced としてアーカイブされたスクリーンはデバイスの紐付けを保持しないため、アーカイブ解除は受け付けられず、screen delete で削除できます。
screen suspend#
スクリーンのコンテンツの代わりに通知を表示し、再開されるまで続けます。
screen suspend <id> --message TEXT [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | scr_スクリーンID |
--message TEXT | string | はい | なし | スクリーンに表示する通知。トリム後で1~280文字。制御文字として使えるのは改行だけで、Player はテキストを折り返し、改行を保持します。 |
--expect-rev REVISION | string | いいえ | なし | オプションのリビジョン前提条件。現在のリソースを書き込む場合は省略します。提供された古い値はrevision_conflictです:再取得、再適用、再試行。 |
screenrig screen suspend scr_01EXAMPLESCREEN00000000 --message "Closed for stocktake. Back at 9am."一時停止中のスクリーンは、コンテンツの代わりにメッセージを表示します。それ以外は変わりません:プレイリスト、スケジュール、テイクオーバー、ディスプレイ制御はそのまま残り、通常どおり変化し続けます。screen resume は、そのスクリーンが現在表示するはずの内容を表示します。screen show は suspension を message と since とともに報告します。一時停止中のスクリーンをさらに一時停止すると、メッセージが置き換わり、since は維持されます。一時停止するとスクリーンのリビジョンが更新され、Player はすぐに再取得します。アーカイブ済みのスクリーンは screen_archived を返します。
screen resume#
スクリーンの一時停止を終了し、スクリーン自身のコンテンツを再び表示します。
screen resume <id> [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | scr_スクリーンID |
--expect-rev REVISION | string | いいえ | なし | オプションのリビジョン前提条件。現在のリソースを書き込む場合は省略します。提供された古い値はrevision_conflictです:再取得、再適用、再試行。 |
screenrig screen resume scr_01EXAMPLESCREEN00000000再開すると、スクリーンは自身のコンテンツを再び表示します。その内容は、スクリーンが現在表示するはずのものから決まり、Player はすぐに再取得します。一時停止中でないスクリーンは変更なしで応答し、リビジョンも変わりません。アーカイブ済みのスクリーンは screen_archived を返します。
screen delete#
スクリーンを削除します。
screen delete <id> [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | scr_スクリーンID |
--expect-rev REVISION | string | いいえ | なし | オプションのリビジョン前提条件。現在のリソースを書き込む場合は省略します。提供された古い値はrevision_conflictです:再取得、再適用、再試行。 |
screenrig screen delete scr_01EXAMPLESCREEN00000000スクリーンを削除できるのは、Player のキーが紐づいていない間だけで、そのスクリーンでは screen show が deletable: true を報告します。コードでペアリングする Player は、ネイティブでもブラウザー版でもキーを保持し、そのキーはスクリーンに紐づいたままです。そのスクリーンを削除すると 409 screen_archive_required(終了コード 5)が返るので、代わりにアーカイブしてください。キーを持たないのは Cookie でペアリングされたブラウザー Player だけで、そのスクリーンはペアリング済みでも保留中でも削除できます。
screen replace#
別のスクリーンとしてペアリングされているデバイスをこのスクリーンに移し、このスクリーンの設定と履歴を保持します。
screen replace <id> --with ID [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | 保持するscr_スクリーン。 |
--with ID | string | はい | なし | ペアリング済みデバイスが引き継ぐscr_スクリーン。プロジェクトの別のスクリーンでなければなりません。 |
--expect-rev REVISION | string | いいえ | なし | 保持するスクリーンに対するオプションのリビジョン前提条件。現在のリソースを書き込む場合は省略します。提供された古い値はrevision_conflictです:再取得、再適用、再試行。 |
screenrig screen replace scr_01EXAMPLESCREEN00000000 --with scr_01EXAMPLENEWSCREEN000000最初に新しいハードウェアを独自のスクリーンとしてペアリングし、そのあと置き換えを実行します。デバイスのキー(ブラウザー Player の場合はその認証情報)が <id> を開くようになります。そのスクリーンは名前、タグ、タイムゾーン、プレイリスト、スケジュール、テイクオーバー、ディスプレイスケジュールとオーバーライド、ビデオウォール、コメント、フィールド、場所、履歴を保持し、置き換え側のホストと Player を引き継ぎます。ヘルス、ステータス、ストレージ、キューに入っているコマンドはリセットされます。--with で指定したスクリーンは、archive_reason replaced と、<id> を示す replaced_by を付けてアーカイブされます。デバイスの紐付けは保持されないため、screen unarchive では復元できず、screen delete で削除できます。<id> が保持していたキーは、15分の猶予期間が過ぎると無効になり、その後、古いデバイスは拒否されます。どちらのスクリーンも、ペアリング済みの Player を持つアクティブな状態でなければなりません:ペアリング待ちのスクリーンには resource_conflict が、アーカイブ済みのスクリーンには screen_archived が返り、ビデオウォールには display.wall(wall_unsupported)を宣言する置き換え側の Player が必要です。リクエストには常に冪等キーが付き、正確な再試行は元の回答を返します。
screen rotate-public-id#
スクリーンの新しい公開IDを発行します。
screen rotate-public-id <id> [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | scr_スクリーンID |
--expect-rev REVISION | string | いいえ | なし | オプションのリビジョン前提条件。現在のリソースを書き込む場合は省略します。提供された古い値はrevision_conflictです:再取得、再適用、再試行。 |
screenrig screen rotate-public-id scr_01EXAMPLESCREEN00000000screen link create#
スクリーンのリンクを作成または置き換え、その Player URL を表示する。
screen link create <id> [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | スクリーン ID scr_。スクリーンはアクティブで、その Player はコードで一度ペアリング済みです。 |
--expect-rev REVISION | string | いいえ | なし | オプションのリビジョン前提条件。現在のリソースを書き込む場合は省略します。提供された古い値はrevision_conflictです:再取得、再適用、再試行。 |
screenrig screen link create scr_01EXAMPLESCREEN00000000data.url、つまり vMix や OBS のブラウザーソースの URL として貼り付ける Player URL(https://play.screenrig.ai/player/#screen=…)を表示します。ブラウザーソースはストレージを保持せず、そのままでは読み込みのたびにペアリングを失います。Player は読み込みのたびにこの URL から動作し、URL がペアリングのすべてです。リンクをもう一度作成すると置き換えられ(data.replaced は true)、古い URL は直ちに動作しなくなり、そこから開いた Player はコンテンツのない通知を表示します。URL はスクリーンを開く認証情報なので、機密ラベルの下に表示され、操作ログには残らず、screen link show で再表示できます。1か所だけで開いてください。ペアリングされていないスクリーンは resource_conflict(終了コード 5)、アーカイブ済みのスクリーンは screen_archived を返します。リクエストが中断された後は、同じコマンドをもう一度実行してください。保存された冪等キーを再利用し、同じリンクが返ります。
screen link show#
スクリーンのリンクとその Player URL を表示する。
screen link show <id>| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | scr_スクリーンID |
screenrig screen link show scr_01EXAMPLESCREEN00000000data.url を機密ラベルの下に表示し、data.hint(シークレットの末尾4文字)と、Player がリンクを開いた後は data.created_at と data.last_used_at も表示します。読み取り専用の認証情報では url は空で url_redacted が true になり、人間向け出力は URL が伏せられていると表示します。Manage のサインインでは受け取れます。リンクのないスクリーンは screen_link_not_found(終了コード 4)を返し、リンクを作成するコマンドを示します。screen show はリンクのあるスクリーンでは Screen link: on (…HINT) を表示し、URL は決して表示しません。
screen link delete#
スクリーンのリンクをオフにする。
screen link delete <id> [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | scr_スクリーンID |
--expect-rev REVISION | string | いいえ | なし | オプションのリビジョン前提条件。現在のリソースを書き込む場合は省略します。提供された古い値はrevision_conflictです:再取得、再適用、再試行。 |
screenrig screen link delete scr_01EXAMPLESCREEN00000000URL は直ちに動作しなくなり、それが開いたセッションはすべて終了します。まだそれを表示しているブラウザーソースは、新しい URL が与えられるまで通知だけを表示し、コンテンツは表示しません。スクリーン、そのペアリング、コンテンツには影響しません。スクリーンにリンクがない場合は、何も変更せずに成功します。
screen reload#
スクリーンの Player またはフリート内のすべての Player に一度だけリロードを依頼
screen reload (<id>... | --tag TAG) [--expires-in DURATION] [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id>... | string | <id> または --tag のいずれか | なし | 1つ以上のscr_スクリーンID。複数IDは1つのフリートリクエストとして実行されます。 |
--tag TAG | string | <id> または --tag のいずれか | なし | このタグを持つすべてのアクティブスクリーン。 |
--expires-in DURATION | string | いいえ | 24h、サーバー適用済み | リクエストがオフラインのスクリーンのオンライン復帰を待つ時間:90s、30m、2h、1d のような値で、範囲は 60s から 24h です。 |
--expect-rev REVISION | string | いいえ | なし | 1つのスクリーンIDのみ。任意のリビジョン前提条件。 |
screenrig screen reload scr_01EXAMPLESCREEN00000000
screenrig screen reload scr_01EXAMPLESCREEN00000000 --expires-in 2h
screenrig screen reload --tag Lobby回答は reload_id、state、expires_at を含みます。オンラインのスクリーンには再読み込みがすぐに送信されます(state sent)。オフラインのスクリーンの場合、再読み込みは queued の状態で保持され、expires_at(--expires-in で別に指定しない限り、リクエストの24時間後)より前にオンラインに復帰した時点で送信されます。新しい再読み込みは、キューに残っている再読み込みを置き換えます。screen show はスクリーンの commands を一覧表示し、screen command cancel でキューに残っている再読み込みをキャンセルできます。フリートでは、各結果の reload に同じ state が含まれます。Web Player は次のページ境界で再読み込みし、ネイティブ Player は再接続し、マニフェストを再取得し、更新を確認します。Player は、最後に処理した再読み込みから10分以内の再読み込みを無視します。再読み込みはアクティブなスクリーンでもアーカイブ済みのスクリーンでも動作し、スクリーンのリビジョンは変更しません。
screen toast#
ライブスクリーンまたはスクリーン群に一時的なステージクロームメッセージを投稿します。
screen toast (<id>... | --tag TAG) --text TEXT [--level info] [--duration-ms MS]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id>... | string | <id> または --tag のいずれか | なし | 1つ以上のscr_スクリーンID。複数IDは1つのフリートリクエストとして実行されます。 |
--tag TAG | string | <id> または --tag のいずれか | なし | このタグを持つすべてのアクティブスクリーン。 |
--text TEXT | string | はい | なし | 1〜120文字、改行のみが改行で、最大3行まで。 |
--level LEVEL | string | いいえ | info | info、alert、またはerror。ホストされたプレーヤーはエラーのトーストを表示します。情報および警告は抑制可能な診断レベルであり、コマンド成功は可視性を保証しません。 |
--duration-ms MS | integer | いいえ | 10,000、サーバー適用済み | 指定された場合、2000から60000の間。 |
screenrig screen toast scr_01EXAMPLESCREEN00000000 --text "Lobby closed"
screenrig screen toast --tag Lobby --text "Closing in ten minutes"トーストはプリミティブではありません:キャンバススロットを占有せず、レイヤーもなく、準備やクロスフェードに関与しません。最新が勝ち、キューもキャンセルもありません。受け入れられるエンベロープは { expires_at } のみです。テキストに認証情報や秘密情報を絶対に入れないでください。
screen identify#
スクリーンの名前をコンテンツの上にしばらく表示し、現場でスクリーンを見つけやすくします。
screen identify <id> [--duration DURATION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | scr_スクリーンID |
--duration DURATION | string | いいえ | 60s、サーバー適用済み | オーバーレイが表示され続ける時間。Player がリクエストを受け取った時点から数えます:30s、2m、1m30s のような値で、範囲は 2s から 10m です。 |
screenrig screen identify scr_01EXAMPLESCREEN00000000
screenrig screen identify scr_01EXAMPLESCREEN00000000 --duration 2mPlayer はコンテンツの上に全画面のオーバーレイを描画し、スクリーンの名前を非常に大きく、その下に ID を小さく表示します。再生はその下で続き、より新しい識別リクエストがオーバーレイを置き換えます。受け入れられたエンベロープは identify_id、duration_ms、リクエストの60秒後を示す expires_at を含むため、オフラインのスクリーンが後からオーバーレイを表示することはありません。identify 機能を宣言した Player だけがオーバーレイを表示します:それ以外のスクリーンには 409 identify_unsupported(終了コード 5)が返り、何も送信されないため、Player を更新するか、screen toast で名前を表示してください。アーカイブ済みのスクリーンには screen_archived が、ペアリング待ちのスクリーンには resource_conflict が返ります。識別はスクリーンのリビジョンを変更しません。
screen screenshot#
アクティブなスクリーンの静止画を 1 枚、またはフリート内のすべてのスクリーンの静止画を撮影し、ディスクに書き込みます。
screen screenshot <id> [--output FILE] [--timeout MS] [--poll-ms MS]
screen screenshot (<id> <id>... | --tag TAG) [--output DIRECTORY] [--concurrency N] [--timeout MS] [--poll-ms MS]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id>... | string | <id> または --tag のいずれか | なし | 1つ以上のscr_スクリーンID。 |
--tag TAG | string | <id> または --tag のいずれか | なし | このタグを持つすべてのアクティブスクリーン、スクリーン数制限なし。 |
--output FILE | パス | いいえ | ./<id>.webp | スクリーンが 1台の場合はファイルパスを指定します。既存ファイルは確認なしで上書きされます。複数の id または--tagの場合はディレクトリを指定し、存在しなければ作成され、各スクリーンごとに<screen_id>.webpが保存されます。 |
--concurrency N | integer | いいえ | 4 | 複数の ID または --tag から 1~8 件を同時にキャプチャします。 |
--timeout MS | integer | いいえ | 35000 | キャプチャを待つ時間。 |
--poll-ms MS | integer | いいえ | 500 | キャプチャ状態ポーリングの間隔。 |
screenrig screen screenshot scr_01EXAMPLESCREEN00000000 --output ./lobby.webpscreenrig screen screenshot --tag Lobby --output ./lobby-shotsコマンドはWebPがディスクにあるまでブロックします。--no-wait はありません。エンベロープは screen_id、capture_id、path、bytes、sha256、width、height を報告し、画像バイトは含みません。最新が優先され、後のリクエストが進行中のキャプチャを置き換えます。 Playerウェブのスクリーンショットでは、各 iframe ページは「Embedded web page」というラベルの付いた濃いグレーのタイルとして描かれ、各アプリケーションは自身の描画どおりに表示されます。画像にはタイルの目印がないため、iframe ページが描画されたことの証明にはなりません。
複数の id または--tagの場合、回答はフリート結果となり、action: "screenshot"、selector、outputディレクトリが含まれます。各ok結果にはpath、bytes、sha256、width、heightが含まれます。--tagを指定した場合、CLI はまずタグ付きスクリーンをリストし、すべてのリストページを順に処理します。各リストページは課金対象ですが、キャプチャ自体は無料です。複数 id の場合リストは不要です。--idempotency-keyはこの形式では拒否されます。各キャプチャが独自のキーを使用するためです。キャプチャが予期せず失敗した場合、そのスクリーンの結果はunexpected_errorとなり、新しいキャプチャは開始されず、待機中のスクリーンはnot_attemptedを報告し、終了コードは 1 です。
screen tag#
スクリーンまたはフリートのタグを設定、追加、削除、またはクリアします。
screen tag (<id>... | --tag TAG) (--set TAGS | --add TAGS | --remove TAGS | --clear) [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id>... | string | <id> または --tag のいずれか | なし | 1つ以上のscr_スクリーンID。複数IDは1つのフリートリクエストとして実行されます。 |
--tag TAG | string | <id> または --tag のいずれか | なし | このタグを持つすべてのアクティブスクリーン。 |
--set TAGS | string | 正確に1つのアクション | なし | これらのカンマ区切りタグで全セットを置き換えます。例:Lobby,Floor2。 |
--add TAGS | string | 正確に1つのアクション | なし | これらのカンマ区切りタグを追加します。 |
--remove TAGS | string | 正確に1つのアクション | なし | これらのカンマ区切りタグを削除 |
--clear | boolean | 正確に1つのアクション | オフ | すべてのタグを削除 |
--expect-rev REVISION | string | いいえ | なし | 1つのスクリーンIDのみ。任意のリビジョン前提条件。 |
screenrig screen tag scr_01EXAMPLESCREEN00000000 --set Lobby,Floor2
screenrig screen tag scr_01EXAMPLESCREEN00000000 --add Spring
screenrig screen tag --tag Lobby --add Springタグは1~32文字の英数字で、スクリーンは最大16個のユニークタグを持ちます。タグはフリートを選択し、認証には使わずプレーヤーには届きません。タグ変更はスクリーンのリビジョンを更新し、マニフェストのリビジョンは変わりません。単一スクリーンではエンベロープは更新されたスクリーンです。--add と --remove はスクリーンを先に読み込み、--expect-rev または読み込んだリビジョンで新セットを書き込み、同時変更は revision_conflict(終了コード6)を返し上書きされません。コマンドを再実行してください。フリートでは --add と --remove が各スクリーンのセットに原子操作で適用され、16タグを超えるスクリーンは自身の結果で invalid_request となります。
タグが変更されるあらゆる場面(screen tag、API によるスクリーンの更新、ダッシュボードのタグエディター)で、応答のlevelsは、gainedとlostの下に、スクリーンがタグ対象に加わった、または外れたキャンペーンを列挙し、それぞれにsource(campaign)、id、screensの数、キャンペーンに到達数がある場合はreach_beforeとreach_afterを持ちます。フリートのscreen tagは、フリート全体でそれらを合計します。タグの編集を無害と判断する前にlevels.lostを読んでください。キャンペーンのスクリーンから最後の一致するタグを外すとそのグループが空になり、reach_droppedとgroup_emptyの通知が発生します。
フリート結果
複数のスクリーンIDまたは--tag、screen assign、screen reload、screen toast、screen tagは、スクリーン数制限なしの1つの計測アクションを実行します。CLIは結果ページの範囲を自動的に追跡し、制御予算が尽きると待機し、同じキーと選択されたフリートを維持します。--tagはアクティブなスクリーンのみを選択し、IDは任意のスクリーンを指定できます。1つのスクリーンIDは単一スクリーンの応答を維持します。フリートコマンドは--expect-revを受け付けません。リビジョン保護はスクリーンごとです。各フリートコマンドには冪等性キーがあります。接続喪失などで中断された後は、同一コマンドを再実行して完了したスクリーンを再生し、副作用を繰り返しません。失敗がある確定応答後は、失敗したIDのみ再試行してください。コマンド全体の再実行はすべてのスクリーンに作用します。24時間以内に同じ明示的な--idempotency-keyを再利用すると記録済みの応答を返します。
エンベロープはok: trueを保持します。部分的成功は通常の回答であり、通信エラーではありません。
{
"ok": true,
"data": {
"action": "reload",
"matched": 3, "succeeded": 2, "failed": 1,
"results": [
{ "screen_id": "scr_LOBBY", "status": "ok", "reload": { "reload_id": "…", "expires_at": "…", "state": "sent" } },
{ "screen_id": "scr_GONE", "status": "failed", "problem": { "code": "not_found", "status": 404 } },
{ "screen_id": "scr_ENTRANCE", "status": "ok", "reload": { "reload_id": "…", "expires_at": "…", "state": "queued" } }
]
},
"warnings": [{ "code": "fleet_partial_failure", "message": "1 of 3 screens failed; 2 succeeded." }]
}ok 結果は単一スクリーンの結果を含みます: revision は assign、revision と tags はタグ変更、reload はリロード、toast はトーストです。failed 結果はそのスクリーン自身のリクエストが返した問題を含みます。フリートアクション内でもスクリーンごとの制限は適用されるため、フリートのリロードやトーストで直前にリロードまたはトーストされたスクリーンは rate_limited を報告することがあります。後でそのスクリーン ID を再試行してください。スクリーンごとの制限は1分あたりリロード6回、トースト20回です。フリートのリロードとトーストは組織予算の1分あたり600スクリーンも消費します。残予算が尽きるとサーバーは一時停止し、CLI は Retry-After を尊重して自動的に続行します。
| 結果 | 終了コード | 警告 |
|---|---|---|
| すべての一致したスクリーンが成功しました。 | 0 | なし |
| 一部またはすべてのスクリーンが失敗しました。 | 最初の失敗したスクリーンのコード。例:4はnot_found、6はrevision_conflict。 | fleet_partial_failure |
| 一致する画面なし | 0 | fleet_no_match |
| 不正なセレクターまたはアクション | 2 またはリクエスト自身のコード。スクリーンの変更はありません。 | なし |
スクリーンフォルダー
スクリーンフォルダーは、スクリーンを場所ごとに整理します。フォルダーIDはsfd_で始まり、スクリーンは最大1つのフォルダーに入ります。所属はscreen showとscreen listのfolder_idで示され、プロジェクトのルートでは存在しません。組織は、すべてのプロジェクトを合わせて最大1000個のフォルダーを最大10階層まで保持でき、名前は1~100文字で、同じ階層のフォルダー間で重複できません。タグは、場所をまたぐグループのために引き続き使います。
screen folder list
screen folder show <id>
screen folder create --name NAME [--parent ID] [--default-playlist-id ID]
screen folder update <id> [--name NAME] [--parent ID | --root] [--default-playlist-id ID | --clear-default] [--expect-rev REVISION]
screen folder delete <id> [--expect-rev REVISION]
screen move <id>... (--folder ID | --root)screenrig screen folder create --name "North Tower"
screenrig screen folder create --name "Level 2" --parent sfd_01EXAMPLEFOLDER000000000 --default-playlist-id pl_01EXAMPLEPLAYLIST000000
screenrig screen move scr_01EXAMPLESCREEN00000000 --folder sfd_01EXAMPLEFOLDER000000000screen folder list は、すべてのフォルダーを data.items に返します。各フォルダーには id、name、parent_id(プロジェクトのルートでは null)、設定されている場合は default_playlist_id、screens(直下のアクティブなスクリーン)、revision が含まれます。screen move はスクリーンIDとフォルダーIDを自由に混ぜて受け付け、すべて成功するかまったく移動しない1回のリクエストで最大1000件まで移動します。フォルダーは中身ごと移動し、フォルダー自身やその内側のフォルダーへは移動できません。screen list --folder ID は1つのフォルダー直下のスクリーンのみを一覧表示します。
--tag TAG を受け付けるすべてのフリートコマンドで、--folder ID はそのフォルダーと、その内側のすべてのフォルダーにあるアクティブなスクリーンをすべて選択します。キャンペーンも同様です。campaign create と campaign update の --folder ID、または --audience の {"folder":"sfd_…"} ルールを使い、{"all":[{"folder":"sfd_BUILDING"},{"tag":"overhead"}]} のようにタグのルールと組み合わせられます。
フォルダーのデフォルトプレイリストは、独自のプレイリストを持たないスクリーンが表示するものです。スクリーンより上にあって設定している最も近いフォルダーが優先され、effective_playlistはsourceがfolderで、フォルダーIDがentry_idであることを示します。テイクオーバー、キャンペーン、スケジュール、そのスクリーン自身に割り当てられたプレイリストはいずれもこれより優先されます。スケジュールとテイクオーバーを参照してください。プレイリストは承認済みである必要があります(playlist_not_approved、終了コード5)。
スクリーンやフォルダーの移動、またはフォルダーのデフォルトプレイリストの変更により、対象のスクリーンは約15秒以内に再評価されます。応答のlevelsは、gainedとlostの下に、それらのスクリーンが加わった、または外れたフォルダー対象のキャンペーンと、表示を始めた、または止めたフォルダーのデフォルトプレイリストを列挙し、それぞれにsource(campaignまたはfolder)、id、screensの数を持ちます。フォルダーを削除しても中身は削除されません。スクリーンとフォルダーは親フォルダーに移動し、キャンペーンの対象がそのフォルダーを指している間はresource_conflict(終了コード5)で削除が拒否されます。削除の応答は、移動の場合と同様にlevelsを伴う200を返します。
書き込みにはManageアクセスが必要で、レビューを待つことはありません:Proposeセッションには403 insufficient_accessが返されます。書き込みのたびに、プロジェクトイベントにscreen.folder_created、screen.folder_updated、screen.folder_deleted、またはscreen.movedが追加されます。
スケジュールとテイクオーバー
スクリーンのキャンペーンとプレイリストのスケジュールエントリは、1つのスタックのレベルです。サーバーは、各スクリーンが再生する内容を上から順に決定します。テイクオーバー、そのスクリーンに適用されるキャンペーン(--priority の高い順、次に新しい順)、スクリーン自身のスケジュールエントリ(順番どおり)、screen assign で割り当てられたプレイリスト、そしてデフォルトプレイリストを設定している最も近いスクリーンフォルダーのデフォルトプレイリストの順です。条件を満たす最初のレベルが再生されます。切り替えは境界からおよそ1分以内に行われ、プレーヤーの更新は不要です。多数のスクリーンのスケジュール行のシートは、1回の操作でインポートできます。スケジュールインポートを参照してください。
レベルは、すべてのルールの条件を満たしている間だけ有効です。ルールは、fromとuntil、週次のwindows、monthlyルール、dates、except日付、data条件、interaction条件です。monthlyルールは、月のday(1~31。その日がない月は対象外)、またはweekdayを伴う第nth週の曜日(1~4、最終は-1)です。datesの項目は1つのdateで、どちらも任意のstartとendの時刻を指定でき、省略すると終日が対象です。exceptの日付は、その日に始まるすべての発生を取り除きます(日跨ぎの後半も含みます)。日跨ぎの発生は、開始した日付に属します。dataは{key, path?, equals?}で、そのカードデータが存在するか、スカラー値と等しい間、条件を満たします。interactionは{idle_s}(5~3600、デフォルト60)で、誰かがタッチまたはクリックでスクリーンを操作している間そのレベルを再生し、入力がないままidle_s秒たつと元に戻ります。アトラクトループの上に重ねるインタラクティブなページに向きます。displaysは、そのレベルを再生するビデオウォールの出力(1~12)を指定します。startはnext_item(デフォルト)で現在のアイテムの終了を待つか、on_timeで境界の時刻にそれを中断します。独自のスタックを解決するPlayerはinteraction、data、displaysのレベルを再生します。ほかのPlayerでは、campaign explainがそのレベルを理由stack_onlyのoffとして報告します(独自のスタックを解決するPlayerが必要です)。
screen show、screen list、および以下のすべてのコマンドはeffective_playlist({id, source, entry_id?, until?}、ここでsourceはtakeover、campaign、schedule、default、またはfolder)、takeover、およびplaylist_scheduleを返します。entry_idは、campaignではキャンペーンID、scheduleではエントリID、folderではフォルダーIDです。untilは選択が変わることが知られている次の瞬間です。screen show --humanはスクリーンのタイムゾーンで表示し、Assigned: pl_LUNCH (schedule entry lunch until 2026-08-14 15:00 America/Los_Angeles)またはAssigned: pl_LUNCH (campaign cmp_LUNCH until 2026-08-14 15:00 America/Los_Angeles)(スクリーンにゾーンがない場合はUTC、ラベル付き)と同様です。JSON出力はRFC 3339の瞬間を保持します。人間用のスケジュール表はスクリーンのタイムゾーンでラベル付けされ、screen list --humanはリストされたスクリーンのいずれかがデフォルトプレイリスト以外を再生している場合にASSIGNED列を追加します。
| 問題コード | 終了 | 意味 |
|---|---|---|
invalid_request | 8 | スクリーンに割り当てられたデフォルトプレイリストがありません(next は screen assign)、スケジュールがタイムゾーンなしのスクリーンを対象にしています(next は screen set-timezone)、または名前付きプレイリストを割り当てられません。 |
screen_archived | 5 | アーカイブされたスクリーンはスケジュールとテイクオーバーを拒否します。next は screen unarchive です。 |
revision_conflict | 6 | --expect-revリビジョンは古くなっていました。 |
rate_limited | 7 | スケジュールとテイクオーバーの書き込みは分単位の制限を共有します:組織ごとに600、スクリーンごとに20、IPごとに60です。retry_after_secondsをお待ちください。 |
スクリーンIDが1つの場合、これらのコマンドは更新されたスクリーンを返し、--expect-revがそのリビジョンを保護します。複数のIDまたは--tagは、フリートエンベロープと終了ルールを使った1つのフリートリクエストとして実行されます。各スクリーンは個別に失敗し、プロジェクト予算が尽きるとCLIは自動的に一時停止と再開を行います。
screen schedule show#
スクリーンのプレイリストスケジュールと現在選択中のプレイリストを表示。
screen schedule show <id>| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | scr_スクリーンID |
screenrig screen schedule show scr_CAFEJSON 出力は直接 screen schedule set --file に戻せます。
screen schedule set#
スクリーンまたはフリートのプレイリストスケジュールを置き換えます。
screen schedule set (<id>... | --tag TAG) --file FILE [--expect-rev REVISION] [--note TEXT]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id>... | string | <id> または --tag のいずれか | なし | 1つ以上のscr_スクリーンID。 |
--tag TAG | string | <id> または --tag のいずれか | なし | このタグを持つすべてのアクティブスクリーン。 |
--file FILE | パス | はい | なし | スケジュールドキュメント、または stdin の場合は -。 |
--expect-rev REVISION | string | いいえ | なし | 1つのスクリーンIDのみ。任意のリビジョン前提条件。 |
--note TEXT | string | いいえ | なし | 変更を確認する人へのメモ:プレーンテキストで最大280文字。変更が即時適用される場合は無視されます。 |
screenrig screen schedule set scr_CAFE --file dayparts.json
screenrig screen schedule set --tag Cafe --file dayparts.jsonスケジュールが指定するすべてのプレイリストは割り当てとして検証され、スクリーンにはタイムゾーンと割り当てられたデフォルトプレイリストが必要です。条件を満たすエントリがない場合は、割り当てられたプレイリストが再生されます。後でスケジュールされたプレイリストが表示できなくなった場合、そのエントリはスキップされscreen.playlist_unavailableが記録されます。
screen schedule clear#
スクリーンまたはフリートからプレイリストスケジュールを削除
screen schedule clear (<id>... | --tag TAG) [--expect-rev REVISION] [--note TEXT]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id>... | string | <id> または --tag のいずれか | なし | 1つ以上のscr_スクリーンID。 |
--tag TAG | string | <id> または --tag のいずれか | なし | このタグを持つすべてのアクティブスクリーン。 |
--expect-rev REVISION | string | いいえ | なし | 1つのスクリーンIDのみ。任意のリビジョン前提条件。 |
--note TEXT | string | いいえ | なし | 変更を確認する人へのメモ:プレーンテキストで最大280文字。変更が即時適用される場合は無視されます。 |
screenrig screen schedule clear --tag Cafescreen schedule preview#
スクリーンのプレイリストスケジュールを置き換えた場合に何が変わるかを、実行せずに表示します。
screen schedule preview <id> --file FILE [--calendar-from INSTANT] [--calendar-to INSTANT]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | scr_スクリーンID |
--file FILE | パス | はい | なし | screen schedule setが受け取るスケジュールドキュメント、または標準入力を指す-。screen schedule showのJSONもそのまま受け付けます。 |
--calendar-from INSTANT | string | いいえ | 今 | カレンダーをこのタイムゾーン付きの時刻から開始します(例:2026-12-01T00:00:00Z)。 |
--calendar-to INSTANT | string | いいえ | 開始の1週間後 | カレンダーをこのタイムゾーン付きの時刻で終了します。開始から最大93日後までです。 |
screenrig screen schedule preview scr_LOBBY --file dayparts.json
screenrig screen schedule preview scr_LOBBY --file dayparts.json --calendar-from 2026-12-01T00:00:00Z --calendar-to 2027-01-01T00:00:00Z何も書き込まれません。エントリはscreen schedule setと同じ方法で検査されるため、プレビューはsetが拒否するものを拒否します。data.gainedとdata.lostは、スクリーンがスケジュールのレベルを得るか失うかを示します。"paused": trueを持つエントリはどのスクリーンにも表示されないため、公開するとそのエントリが加わります。data.calendar.beforeとdata.calendar.afterは、--calendar-fromから--calendar-toまでの、現在のスクリーンのカレンダーと変更後のカレンダーです。
screen schedule revisions#
スクリーンのプレイリストスケジュールのリビジョンを新しい順に一覧表示します。
screen schedule revisions <id> [--after CURSOR]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | scr_スクリーンID |
--after CURSOR | string | いいえ | 最初のページ | 前のページのdata.next_cursorから続けます。 |
screenrig screen schedule revisions scr_LOBBY
screenrig screen schedule revisions scr_LOBBY --after CURSORdata.itemsには最大50件のリビジョンが含まれ、それぞれにrevision(書き込み時のスクリーンのリビジョン。スクリーンが別の変更を受けた箇所では番号が飛びます)、created_at、change、current、判明している場合はauthor、そしてentries(その書き込み後のスケジュール全体。noneはスクリーンにスケジュールがなかったことを示します)が付きます。changeはedited(setまたはclear、スケジュールのインポート)、restored(restored_fromが示す以前のリビジョンのコピー)、またはbaselineです。data.next_cursorが文字列である間は古いリビジョンが残っています。--afterにその値を指定してコマンドをもう一度実行してください。リビジョンはスクリーンの完全削除とともに消えます。読み取り専用アクセスで足ります。
screen schedule restore#
以前のリビジョンのスケジュールを前方にコピーして、スクリーンに戻します。
screen schedule restore <id> --revision N [--expect-rev REVISION] [--note TEXT]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | scr_スクリーンID |
--revision N | integer | はい | なし | 前方にコピーするリビジョン(screen schedule revisionsの番号)。 |
--expect-rev REVISION | string | いいえ | 直前に読み取ったリビジョン | Nではなく、このスクリーンの現在のリビジョンを必須にします。省略すると、CLIは書き込み直前にスクリーンを読み取り、そのリビジョンを送信します。その間に変更があるとrevision_conflict(終了コード6)になります。 |
--note TEXT | string | いいえ | なし | 変更を確認する人へのメモ:プレーンテキストで最大280文字。変更が即時適用される場合は無視されます。 |
screenrig screen schedule restore scr_LOBBY --revision 4
screenrig screen schedule restore scr_LOBBY --revision 4 --expect-rev 9リビジョンNのエントリがスクリーンのスケジュールになります。これは、それらのエントリで行うscreen schedule set(そのリビジョンにエントリがなければscreen schedule clear)と同じ書き込みで、現在の基準で検査されます。その後に削除されたプレイリストがあれば拒否されます。Proposeアクセスの場合や、エージェントの変更にレビューを必須とするプロジェクトでは、setと同様に復元は人の承認を待ち、承認されるまでスクリーンは何も変わりません。以前のリビジョンはそのまま残ります。
screen takeover#
キャンペーン、スケジュール、割り当てより前に、スクリーンまたはフリートで1つのプレイリストを表示します。
screen takeover [set] (<id>... | --tag TAG) --playlist-id ID [--until TIME | --for DURATION] [--reason TEXT] [--expect-rev REVISION] [--note TEXT]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id>... | string | <id> または --tag のいずれか | なし | 1つ以上のscr_スクリーンID。 |
--tag TAG | string | <id> または --tag のいずれか | なし | このタグを持つすべてのアクティブスクリーン。 |
--playlist-id ID | string | はい | なし | 表示するpl_プレイリスト |
--until TIME | string | いいえ | クリアされるまで保留 | 秒とオフセットを含む厳密なRFC 3339形式の日時で、YYYY-MM-DDTHH:MM:SSZ または YYYY-MM-DDTHH:MM:SS-07:00 の形式。UTCに正規化して送信。厳密に未来で最大7日先まで。あるいは none で screen takeover clear まで保持。 |
--for DURATION | string | いいえ | クリアされるまで保留 | 30m、2h、または3d、最大6d23h59mまで。このコンピューターの時計からuntilに変換されます。7dはローカルで拒否されます。完全な7日間には--untilを使用してください。--untilとは併用できません。 |
--reason TEXT | string | いいえ | なし | テイクオーバーとそのイベントに関するオペレーターノートです。最大120文字にトリムされ、制御文字は含みません。 |
--expect-rev REVISION | string | いいえ | なし | 1つのスクリーンIDのみ。任意のリビジョン前提条件。 |
--note TEXT | string | いいえ | なし | 変更を確認する人へのメモ:プレーンテキストで最大280文字。変更が即時適用される場合は無視されます。 |
screenrig screen takeover scr_LOBBY --playlist-id pl_DRILL --for 30m --reason "Fire drill"
screenrig screen takeover --tag Lobby --playlist-id pl_LAUNCH --for 2h
screenrig screen takeover scr_A scr_B --playlist-id pl_NOTICE --until nonescreen takeover ID は screen takeover set ID の略です。新しいテイクオーバーは前のものを置き換えます。終了すると、スクリーンは自動的に、条件を満たすキャンペーン、スケジュール、または割り当てられたプレイリストに戻ります。プレイリストを表示できないテイクオーバーは終了します。--for はあいまいな失敗後に再実行されると、新しい終了時刻を計算し、新しいリクエストとして送信されます。
screen takeover clear#
スクリーンまたはフリートのテイクオーバーを終了する。
screen takeover clear (<id>... | --tag TAG) [--expect-rev REVISION] [--note TEXT]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id>... | string | <id> または --tag のいずれか | なし | 1つ以上のscr_スクリーンID。 |
--tag TAG | string | <id> または --tag のいずれか | なし | このタグを持つすべてのアクティブスクリーン。 |
--expect-rev REVISION | string | いいえ | なし | 1つのスクリーンIDのみ。任意のリビジョン前提条件。 |
--note TEXT | string | いいえ | なし | 変更を確認する人へのメモ:プレーンテキストで最大280文字。変更が即時適用される場合は無視されます。 |
screenrig screen takeover clear --tag Lobbyスケジュールファイル。
スケジュールは優先順に1~32件のエントリをリストします。条件を満たす最初のエントリが適用されます。エントリは、レベルのルールを少なくとも1つ設定します。windows、monthly、dates、except、data、interaction、from、untilのいずれかで、任意でdisplays、start、pausedも指定できます。windowsはスクリーンのタイムゾーンで1~16件の項目を持ちます。daysはmonからsunを使い、startとendはHH:MMです。終日なら両方省略します。endがstart以前の場合は日跨ぎで開始日に属します。オプションのfrom(含む)とuntil(除く)は2026-12-24T18:00のような市民分単位でオフセットなしです。省略されたidはentry_Nになります。"paused": trueを持つエントリは下書きで、どのスクリーンのスタックにも入らず、screen schedule showがそれを示し、カレンダーでは破線で描かれます。公開するには、pausedなしでスケジュールをもう一度送信します。CLIは送信前にこの形状をチェックします。朝食、昼食、夕食の時間帯:
{
"entries": [
{ "id": "breakfast", "playlist_id": "pl_BREAKFAST",
"windows": [{ "days": ["mon", "tue", "wed", "thu", "fri"], "start": "06:00", "end": "11:00" },
{ "days": ["sat", "sun"], "start": "08:00", "end": "12:00" }] },
{ "id": "lunch", "playlist_id": "pl_LUNCH",
"windows": [{ "days": ["mon", "tue", "wed", "thu", "fri"], "start": "11:00", "end": "15:00" }] },
{ "id": "dinner", "playlist_id": "pl_DINNER",
"windows": [{ "days": ["mon", "tue", "wed", "thu", "fri", "sat", "sun"], "start": "17:00", "end": "22:00" }] }
]
}誰かがスクリーンを操作している間に再生されるメニュー。その下に、特定の日付を除く第1日曜のブランチがあります:
{
"entries": [
{ "id": "browse", "playlist_id": "pl_MENU", "interaction": { "idle_s": 90 } },
{ "id": "brunch", "playlist_id": "pl_BRUNCH",
"monthly": [{ "nth": 1, "weekday": "sun", "start": "10:00", "end": "14:00" }],
"except": ["2026-12-06"] }
]
}プレイリストスケジュールはプレイリスト間を選択します。ページ visibility は1つのプレイリスト内でページ間を選択します。
スケジュールとテイクオーバーイベント
events list と events follow は screen.playlist_switched(playlist_id, previous_playlist_id, source, entry_id, until)、screen.takeover_started(playlist_id, until、none はクリアまで保留、reason)、screen.takeover_ended(reason expired, cleared, replaced, playlist_deleted, playlist_unavailable)、および警告 screen.playlist_unavailable(playlist_id, entry_ids, code playlist_deleted または playlist_unavailable)を印刷します。
アーカイブされたものを含む任意のスクリーンがまだ表示できるプレイリストの削除は、resource_conflict(終了コード5)で失敗します:割り当て済み、スケジュールエントリーで指定済み、テイクオーバーで保持中、キャンペーンで表示中、または有効状態です。next は screen list を指します。
キャンペーン
キャンペーンは、ルールの条件を満たしている間、対象に含まれるすべてのスクリーンを1つのプレイリストに切り替え、条件を満たさなくなると元に戻します。1つのキャンペーンで、すべてのnorth店舗のランチメニューを再生でき、後からnorthタグを付けたスクリーンにも適用されます。ルールを1つも設定しない場合は、常に条件を満たします。
サーバーはスクリーンごとに、テイクオーバー、なければ条件を満たす最初のキャンペーン(--priorityは0から100、高い順、次に新しい順)、なければプレイリストスケジュール、なければ割り当てられたプレイリストを選択します。スタックとルールの詳細はスケジュールとテイクオーバーを参照してください。キャンペーンはデフォルトプレイリストを持つスクリーンに届きます(screen assign)。日付または時刻のルールを持つキャンペーンには、スクリーンのタイムゾーン(screen set-timezone)も必要です。これらは各スクリーン自身のタイムゾーンで読み取られる市民時間だからです。スクリーンは約1分以内に切り替わり、Playerの更新は不要です。
一時停止中のキャンペーンは下書きで、campaign publishで公開するまでどのスクリーンにも表示されません。公開は、まずテスト用フォルダーや数台のテスト用スクリーンに限って行うこともでき、その後campaign promoteでオーディエンスを反映します。campaign previewは変更を行う前に表示し、campaign revisionsとcampaign restoreは以前のバージョンを保持して元に戻します。同じ下書き、プレビュー、履歴は、以下のスケジュールエントリにもあります。下書き、テストと昇格、履歴を参照してください。
キャンペーンコマンドはscreens機能を使用します。書き込みにはManageアクセスが必要で、レビューを待つことはありません:Proposeセッションには403 insufficient_accessが返されます。組織のキャンペーンは、すべてのプロジェクトを合わせて最大100件(campaign_limit_reached、終了コード5)で、プレイリストは承認済みである必要があります(playlist_not_approved、終了コード5)。書き込みのたびに、プロジェクトイベントにcampaign.created、campaign.updated、またはcampaign.deletedが追加され、キャンペーンによって切り替えられたスクリーンは、sourceをcampaign、キャンペーンIDをentry_idとしてscreen.playlist_switchedを記録します。ads campaignsは他のスクリーンの広告時間を購入するもので、別のリソースです。
campaign list#
スクリーンが読み取る順に、プロジェクトのキャンペーンを一覧表示します。
campaign listパラメーターなし。
screenrig campaign listdata.itemsには最大100件のキャンペーンが含まれ、優先度の高い順、同じ優先度の中では新しい順に並びます。一時停止中のキャンペーンは一覧に表示され、どこにも適用されません。
campaign show#
1件のキャンペーンを読み込みます。
campaign show <id>| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | cmp_キャンペーンID |
screenrig campaign show cmp_LUNCHname、playlist_id、audience(正確なルール)、priority、paused、設定されているfrom、until、windows、monthly、dates、except、interaction、displays、start、およびrevision(以降の書き込みで--expect-revに使う値)を返します。reachはオーディエンスに一致するスクリーンの数を示します。publishedはキャンペーンが最後に公開されたとき(作成時、または新しいオーディエンス、プレイリスト、一時停止状態で更新したとき)の数、currentとatは最新の数、empty_groupsはどのスクリーンにも一致しないオーディエンスのtag:NAMEとfolder:IDのリーフです。数を変えるタグ、フォルダー、アーカイブ、削除は約15秒以内に再集計されます。campaign listにもreachが含まれ、reach_droppedとgroup_emptyの通知がこれを監視します。ads campaigns listのIDは、ここではnot_found(終了コード4)を返します。
campaign create#
対象のスクリーンを、常時、またはルールの条件を満たす間、プレイリストに切り替えます。
campaign create --name NAME --playlist-id ID (--tag TAG | --any-tag TAG | --screen-id ID | --folder ID | --all-screens | --audience RULE) [--from TIME] [--until TIME] [--window SPEC] [--monthly SPEC] [--date SPEC] [--except DATES] [--on-touch [IDLE_S]] [--displays N[,N]] [--start on-time|next-item] [--covers WHERE] [--priority N] [--paused]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
--name NAME | string | はい | なし | 1~120文字の名前。 |
--playlist-id ID | string | はい | なし | キャンペーンの条件を満たしている間に対象が表示するpl_プレイリスト。承認済みである必要があります。 |
--tag TAG | string | 対象オプション1つ | なし | このタグを持つスクリーン。繰り返すかカンマ区切りで指定すると、列挙したすべてのタグが必要です。 |
--any-tag TAG | string | 対象オプション1つ | なし | これらのタグのいずれか少なくとも1つを持つスクリーン。繰り返すか、カンマ区切りで指定します。 |
--screen-id ID | string | 対象オプション1つ | なし | これらのスクリーン。繰り返すか、カンマ区切りで指定します。 |
--folder ID | string | 対象オプション1つ | なし | この sfd_ スクリーンフォルダーと、その内側のすべてのフォルダーにあるスクリーン。フォルダーをタグと組み合わせるには --audience を使います。 |
--all-screens | boolean | 対象オプション1つ | オフ | プロジェクト内のすべてのスクリーン。 |
--audience RULE | string | 対象オプション1つ | なし | JSON形式のルール。ファイルから読み取るには@FILE、標準入力には-を使用します。 |
--from TIME | string | いいえ | 開始なし | 各スクリーンのタイムゾーンで、この市民時間に開始します。形式はYYYY-MM-DDTHH:MMで、オフセットは付けません。 |
--until TIME | string | いいえ | 終了なし | 各スクリーンのタイムゾーンで、この市民時間より前に終了します。形式は同じで、--fromより後の時刻です。 |
--window SPEC | string | いいえ | なし | この週次ウィンドウでのみ条件を満たします:DAYSまたはDAYS@HH:MM-HH:MM、例:mon-fri@09:00-17:00やsat,sun。最大16回まで繰り返せます。キャンペーンはそのいずれかで条件を満たします。 |
--monthly SPEC | string | いいえ | なし | この月次の発生にのみ条件を満たします:月の日(15またはday15。その日がない月は対象外)、または第n週の曜日(1st-mon、2nd-tue、3rd-wed、4th-thu、last-sun)。それぞれ任意で@HH:MM-HH:MMを付けられます。最大16回まで繰り返せます。 |
--date SPEC | string | いいえ | なし | この日にのみ条件を満たします:YYYY-MM-DDまたはYYYY-MM-DD@HH:MM-HH:MM。最大100回まで繰り返せます。 |
--except DATE | string | いいえ | なし | これらの日付を除外します(YYYY-MM-DD、繰り返しまたはカンマ区切り、最大100件)。例外は、その日付に始まるすべての発生を取り除きます(日跨ぎの後半も含みます)。 |
--on-touch [IDLE_S] | integer | いいえ | オフ | 誰かがタッチまたはクリックでスクリーンを操作している間にのみ条件を満たし、入力のないままIDLE_S秒(5~3600、デフォルト60)たつと外れます。 |
--displays N[,N] | string | いいえ | すべての出力 | これらのビデオウォール出力(1~12、カンマ区切り)でのみ再生します。 |
--start WHEN | string | いいえ | next-item | on-timeは境界の時刻に切り替わり、再生中のアイテムを中断します。next-itemはそれが終わるまで待ちます。 |
--covers WHERE | string | いいえ | full | プレイリストが再生される場所:full(ページ)、main、または header、footer または side(ページの上に描画されるストリップで、その領域用に作られたプレイリストが必要)。ストリップを参照してください。 |
--priority N | integer | いいえ | 0 | 0から100。1つのスクリーンで2つのキャンペーンが条件を満たす場合は、数値が大きい方が優先されます。 |
--paused | boolean | いいえ | オフ | 一時停止にして作成します。campaign publishまたはcampaign resumeまでどのスクリーンにも表示されない下書きになります。 |
screenrig campaign create --name "Lunch menu" --playlist-id pl_LUNCH --tag north --window mon-fri@11:00-14:00
screenrig campaign create --name "North Tower welcome" --playlist-id pl_WELCOME --folder sfd_01EXAMPLEFOLDER000000000
screenrig campaign create --name "Holiday hours" --playlist-id pl_HOLIDAY --tag Lobby --from 2026-12-20T00:00 --until 2027-01-02T00:00 --priority 10
screenrig campaign create --name "North cafes" --playlist-id pl_CAFE --audience '{"all":[{"tag":"North"},{"any":[{"tag":"Cafe"},{"tag":"Patio"}]}]}' --paused
screenrig campaign create --name "Brunch" --playlist-id pl_BRUNCH --tag Cafe --monthly 1st-sun@10:00-14:00 --except 2026-12-06
screenrig campaign create --name "Touch to browse" --playlist-id pl_MENU --screen-id scr_KIOSK --on-touch 90
screenrig campaign create --name "Holiday opening" --playlist-id pl_HOLIDAY --tag Lobby --date 2026-12-24@18:00-22:00 --start on-time
screenrig campaign create --name "Wall outputs 1 and 2" --playlist-id pl_WALL --screen-id scr_WALL --displays 1,2タグは1~32文字の英数字です。DAYSはdaily、曜日(mon)、範囲(mon-fri。fri-monは週の終わりをまたぎます)、またはカンマ区切りのリスト(sat,sun)です。時刻を指定しないウィンドウは1日全体で、終了が開始以前の場合は日跨ぎとなり、開始日に属します。--audienceルールの各メンバーはall、any、tag、screen_id、folderのうちちょうど1つを持ち、グループのネストは最大3階層、対象のルールは最大500件で、{"all":[]}はすべてのスクリーンです。
中断またはあいまいな作成後は24時間以内に同じコマンドを再実行してください。保存された冪等キーを再利用し、サーバーは別のキャンペーンを作成せず同じキャンペーンを返します。
campaign update#
キャンペーンを変更します。変更前と変更後の対象のスクリーンは、1分以内に再評価されます。
campaign update <id> [--name NAME] [--playlist-id ID] [audience option] [--from TIME | --clear-from] [--until TIME | --clear-until] [--window SPEC | --clear-windows] [--monthly SPEC | --clear-monthly] [--date SPEC | --clear-dates] [--except DATES | --clear-except] [--on-touch [IDLE_S] | --clear-on-touch] [--displays N[,N] | --clear-displays] [--start WHEN] [--covers WHERE] [--priority N] [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | cmp_キャンペーンID |
--name NAME | string | いいえ | 変更なし | キャンペーンの名前を変更します。 |
--playlist-id ID | string | いいえ | 変更なし | 代わりにこのプレイリストを表示します。承認済みである必要があります。 |
--tag, --any-tag, --screen-id, --folder, --all-screens, --audience | string | いいえ | 変更なし | 最大1つ。指定方法はcampaign createと同じです。対象全体を置き換えます。 |
--from TIME, --until TIME | string | いいえ | 変更なし | campaign createと同じ形式の市民時間。--fromは--untilより前でなければなりません。そうでない場合はinvalid_request(終了コード8)になります。 |
--clear-from, --clear-until | boolean | いいえ | オフ | 開始または終了を削除します。 |
--window SPEC | string | いいえ | 変更なし | すべてのウィンドウをこれらに置き換えます。最大16回まで繰り返せます。 |
--clear-windows | boolean | いいえ | オフ | すべてのウィンドウを削除します。 |
--monthly SPEC, --date SPEC, --except DATE | string | いいえ | 変更なし | campaign createと同じです。それぞれ、同じ種類のルールをすべて置き換えます。 |
--on-touch [IDLE_S], --displays N[,N], --start WHEN | string | いいえ | 変更なし | campaign createと同じです。--on-touchは値を省略すると60秒です。 |
--clear-monthly, --clear-dates, --clear-except, --clear-on-touch, --clear-displays | boolean | いいえ | オフ | それらを削除します。ルールを1つも持たないキャンペーンは、常に条件を満たします。 |
--covers WHERE | string | いいえ | 変更なし | full、main、header、footer、または side(campaign create と同じ)。 |
--priority N | integer | いいえ | 変更なし | 0から100。 |
--expect-rev REVISION | string | いいえ | なし | オプションのリビジョン前提条件。現在のリソースを書き込む場合は省略します。提供された古い値はrevision_conflictです:再取得、再適用、再試行。 |
screenrig campaign update cmp_LUNCH --playlist-id pl_LUNCH2 --expect-rev 2
screenrig campaign update cmp_LUNCH --tag Lobby --window sat,sun --priority 20
screenrig campaign update cmp_LUNCH --clear-until --clear-windows
screenrig campaign update cmp_BRUNCH --monthly 2nd-sun@10:00-14:00 --except 2026-12-13,2027-01-10
screenrig campaign update cmp_BROWSE --clear-on-touch --clear-displays変更を少なくとも1つ指定してください。指定したフィールドのみが変更されます。新しい--playlist-idは作成と同様にチェックされます。中断またはあいまいなリクエストの後は、同じコマンドを再実行してください。保存された冪等キーを再利用し、サーバーは更新を再適用せず、すでに行われた更新を返します。
campaign pause#
キャンペーンを削除せずに、すべてのスクリーンで停止します。
campaign pause <id> [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | cmp_キャンペーンID |
--expect-rev REVISION | string | いいえ | なし | オプションのリビジョン前提条件。現在のリソースを書き込む場合は省略します。提供された古い値はrevision_conflictです:再取得、再適用、再試行。 |
screenrig campaign pause cmp_LUNCHキャンペーンを表示していたスクリーンは、1分以内にキャンペーンがない場合の表示に戻ります。campaign resumeで再開します。
campaign resume#
一時停止中のキャンペーンを再開します。
campaign resume <id> [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | cmp_キャンペーンID |
--expect-rev REVISION | string | いいえ | なし | オプションのリビジョン前提条件。現在のリソースを書き込む場合は省略します。提供された古い値はrevision_conflictです:再取得、再適用、再試行。 |
screenrig campaign resume cmp_LUNCH対象のスクリーンのうち、キャンペーンを適用できるすべてのスクリーンは、キャンペーンの条件を満たしている間、1分以内にそのプレイリストに切り替わります。
campaign delete#
キャンペーンを削除します。
campaign delete <id> [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | cmp_キャンペーンID |
--expect-rev REVISION | string | いいえ | なし | オプションのリビジョン前提条件。現在のリソースを書き込む場合は省略します。提供された古い値はrevision_conflictです:再取得、再適用、再試行。 |
screenrig campaign delete cmp_LUNCHキャンペーンは元に戻りません。キャンペーンを表示しているすべてのスクリーンは、1分以内にキャンペーンがない場合の表示に戻ります。プレイリスト、スクリーン、タグは残ります。campaign pauseはキャンペーンを停止し、そのまま残します。
campaign screens#
キャンペーンが届くスクリーンと、それぞれの状態を表示します。
campaign screens <id> [--limit N] [--cursor CURSOR]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | cmp_キャンペーンID |
--limit N | integer | いいえ | 100 | ページあたりのスクリーン数、1から500。 |
--cursor CURSOR | string | いいえ | 最初のページ | 前のページのdata.next_cursor |
screenrig campaign screens cmp_LUNCHdata.countsは対象に含まれるすべてのライブスクリーンを網羅します:audience、続いて存在する状態ごとに1つのカウント。data.itemsはそれらのスクリーンをスクリーンIDの順に並べた1ページ分で、各スクリーンにキャンペーンのstatusが付きます。data.next_cursorは最後のページにはありません。独自のスタックを解決するPlayerのスクリーンでは、状態はそのスタックがキャンペーンを置く位置で決まります。ストリップまたはmainのキャンペーンはその領域で、--displaysのキャンペーンは指定したディスプレイで再生されます。
| ステータス | 意味 |
|---|---|
playing | スクリーンはキャンペーンのプレイリストを表示しています。 |
pending | 表示されるはずで、切り替えは1分以内に行われます。 |
waiting | 現在、--from、--until、ウィンドウの範囲外です。8日以内に開始する場合はnext_start。 |
ended | --untilを過ぎています。 |
outranked | 条件は満たしていますが、スクリーンのテイクオーバー(reason takeover)または別のキャンペーン(reason campaign、by付き)が優先されます。 |
conditional | 時刻の条件を満たし、誰かがスクリーンを操作している間(reason interaction)、またはデータ条件を満たす間(reason data)に再生されます。入力とカードデータを見られるのはPlayerだけです。 |
paused | キャンペーンは一時停止中です。 |
blocked | ここでは表示できません。reasonはno_default_playlist(screen assign)、no_timezone(screen set-timezone)、playlist_unavailable(プレイリストが存在しない、未承認、またはスクリーンに適合しない)、region_not_laid_out(スクリーンのどのディスプレイにも配置されない。ストリップがどのディスプレイにも収まらないか、--displaysがどのディスプレイも指定しておらず、キャンペーンはそのスタックから外れる)、またはstack_only(スクリーンのPlayerが独自のスタックを解決しない。領域、ディスプレイ指定、--on-touch、データ条件を扱えるのは独自のスタックを解決するPlayerだけ)です。 |
campaign explain#
各キャンペーンが1つのスクリーンで再生される理由、または再生されない理由を、現在または選んだ時刻について表示します。
campaign explain <screen-id> [--at TIME] [--to TIME]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<screen-id> | string | はい | なし | scr_スクリーンID |
--at TIME | string | いいえ | 今 | 現在の代わりにこの時刻について説明します。タイムゾーン付きの時刻(2026-12-24T10:00:00-08:00)、またはスクリーン自身の時計の時刻(2026-12-24T18:00)を指定できます。夏時間でスキップまたは繰り返される時計の時刻は拒否されます。 |
--to TIME | string | いいえ | なし | --at(デフォルトは現在)からこの時刻までのプレイリストの切り替えも一覧表示します。形式は同じです。どこまで先でも制限はなく、1回の応答には最大500区間が含まれます。 |
screenrig campaign explain scr_LOBBY
screenrig campaign explain scr_LOBBY --at 2026-12-24T18:00 --to 2026-12-26T00:00data.itemsはプロジェクトのすべてのキャンペーンを、スクリーンが読み取る順に一覧表示し、それぞれにcampaign screensの状態またはnot_in_audienceが付きます。blockedの行には修正方法が示されます。data.effective_playlistはスクリーンが現在再生しているプレイリストです(id、source、およびcampaignの場合はentry_idとしてキャンペーンID)。スクリーンにプレイリストが表示されていない場合はnullです。何も変更しません。
--atを指定すると、data.atにその時刻の答えが入ります。effective_playlist(そのuntilが次の変更時刻)と、テイクオーバー、各キャンペーン、各スケジュールエントリについてのverdictsの行が、スクリーンが読み取る順に並びます。
判定は、won(表示されるプレイリスト)、outranked(有効だが、byが優先された相手を示す)、not_started(開始前)、ended(終了後)、outside_hours(期間内だがウィンドウ、月次ルール、日付の外、または例外日)、conditional(時刻の条件を満たし、誰かがスクリーンを操作している間に再生される場合はreason interaction、データ条件を満たす間に再生される場合はreason data)、off(適用されず、reasonがstack_onlyなどの理由を示す)のいずれかです。独自のスタックを解決するPlayerのスクリーンでは、判定はそのスタックに基づきます。ストリップまたはmainのレベルはその領域で優先されるか優先を奪われ、ディスプレイ指定は指定したディスプレイで判定されます。effective_playlistとタイムラインはディスプレイ1のページのままで、data.at.not_judgedにはplayer_stackが含まれます。
--toを付けるとdata.at.timelineが加わり、プレイリストが変わらない区間が分かります。timeline_truncatedは--toの前で打ち切られた応答を示します。data.at.not_judgedは判定しない内容を示します。テイクオーバー、スケジュール、キャンペーンは現在の状態のまま読み取られ、data.itemsも現在の状態のままです。
campaign preview#
キャンペーンの作成や変更が何をもたらすかを、実行する前に表示します。
campaign preview [<id>] [campaign create or update flags] [--paused | --publish] [--calendar-from INSTANT] [--calendar-to INSTANT]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | いいえ | 新しいキャンペーン | 変更をプレビューするcmp_キャンペーン。省略すると、campaign createのフラグから新しいキャンペーンをプレビューします。 |
--name、--playlist-id、オーディエンスオプション、ルールのフラグ | string | いいえ | なし | 新しいキャンペーンではcampaign createのフラグ(--name、--playlist-id、オーディエンスオプションが必須)、変更ではcampaign updateのフラグを指定します。書き込みと同じ方法で検査されるため、プレビューは書き込みが拒否するものを拒否します。 |
--paused | boolean | いいえ | オフ | 下書きとしてプレビューします。一時停止中で、どのスクリーンにも表示されません。 |
--publish | boolean | いいえ | オフ | キャンペーンの一時停止解除をプレビューします。オーディエンスオプションを付けると、そのオーディエンスへの公開をプレビューします。 |
--calendar-from INSTANT | string | いいえ | 今 | カレンダーをこのタイムゾーン付きの時刻から開始します(例:2026-12-01T00:00:00Z)。 |
--calendar-to INSTANT | string | いいえ | 開始の1週間後 | カレンダーをこのタイムゾーン付きの時刻で終了します。開始から最大93日後までです。 |
screenrig campaign preview cmp_LUNCH --tag Lobby
screenrig campaign preview cmp_LUNCH --publish --folder sfd_TEST
screenrig campaign preview cmp_LUNCH --publish --calendar-from 2026-12-01T00:00:00Z --calendar-to 2027-01-01T00:00:00Z
screenrig campaign preview --name "Holiday hours" --playlist-id pl_HOLIDAY --tag Lobby --from 2026-12-20T00:00 --until 2027-01-02T00:00何も書き込まれません。data.gainedとdata.lostは{count, screen_ids}(IDの先頭500件)で、キャンペーンを新たに表示するスクリーンと、表示しなくなるスクリーンです。一時停止中のキャンペーンはどのスクリーンにも表示されないため、公開するとそのオーディエンスが加わります。スクリーンでキャンペーンを維持する編集は、カレンダーにだけ現れます。data.calendar.beforeとdata.calendar.afterは、--calendar-fromから--calendar-toまでの旧オーディエンスと新オーディエンスのスクリーンのスケジュールカレンダーで、下書きは一時停止レベルとして描かれます。--humanは最初のディスプレイの区間と有効になる下書きを表示し、カレンダーが変わらない場合はそう伝えます。
campaign publish#
下書きのキャンペーンの一時停止を解除します。テスト用フォルダーや数台のテスト用スクリーンに限ることもできます。
campaign publish <id> [--test-folder ID | --test-screen ID] [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | cmp_キャンペーンID |
--test-folder ID | string | いいえ | キャンペーンのオーディエンス | このsfd_スクリーンフォルダーと、その内側のすべてのフォルダーにあるスクリーンにだけ公開します。 |
--test-screen ID | string | いいえ | キャンペーンのオーディエンス | これらのスクリーンにだけ公開します。繰り返すか、カンマ区切りで指定します。 |
--expect-rev REVISION | string | いいえ | 直前に読み取ったリビジョン | このキャンペーンの現在のリビジョンを必須にします。省略すると、CLIは書き込み直前にキャンペーンを読み取り、そのリビジョンを送信します。その間に変更があるとrevision_conflict(終了コード6)になります。 |
screenrig campaign publish cmp_LUNCH
screenrig campaign publish cmp_LUNCH --test-folder sfd_TEST
screenrig campaign publish cmp_LUNCH --test-screen scr_LOBBY,scr_CAFE --expect-rev 2下書きは一時停止中のキャンペーンで、公開するまでどのスクリーンにも表示されません。テストオプションなしなら、キャンペーンは1分以内に本来のオーディエンスに届きます。テストオプションは同じ書き込みでオーディエンスを置き換えるため、切り替わるのはテスト用スクリーンだけです。通常の流れは、実際のオーディエンスを指定したcampaign create --paused、campaign publish ID --test-folder FOLDER、テスト用スクリーンの確認、そしてcampaign promote ID --revision Nです。campaign preview ID --publishは事前に効果を表示します。
campaign promote#
テスト後に、下書きのオーディエンスをキャンペーンに適用します。
campaign promote <id> --revision N [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | cmp_キャンペーンID |
--revision N | integer | はい | なし | 下書きの一時停止のリビジョン(campaign revisionsの番号)。キャンペーンはそのリビジョンのオーディエンスを取り込みます。 |
--expect-rev REVISION | string | いいえ | 直前に読み取ったリビジョン | このキャンペーンの現在のリビジョンを必須にします。省略すると、CLIは書き込み直前にキャンペーンを読み取り、そのリビジョンを送信します。その間に変更があるとrevision_conflict(終了コード6)になります。 |
screenrig campaign promote cmp_LUNCH --revision 1
screenrig campaign promote cmp_LUNCH --revision 1 --expect-rev 2リビジョンNのオーディエンスが1回の書き込みでキャンペーンのオーディエンスになり、changeがpromotedの新しいリビジョンが作られます。旧オーディエンスと新オーディエンスの各スクリーンは1分以内に再解決されます。リビジョンNは一時停止のリビジョンでなければならず(そうでなければinvalid_requestがそれを示します)、キャンペーンは有効でなければなりません。現在一時停止中のキャンペーンには、昇格すべきテストがありません。--expect-revはNではなく、キャンペーンの現在のリビジョンです。昇格にはcampaign updateと同じアクセスが必要です。
campaign revisions#
キャンペーンのリビジョンを新しい順に一覧表示します。
campaign revisions <id> [--after CURSOR]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | cmp_キャンペーンID |
--after CURSOR | string | いいえ | 最初のページ | 前のページのdata.next_cursorから続けます。 |
screenrig campaign revisions cmp_LUNCH
screenrig campaign revisions cmp_LUNCH --after CURSORdata.itemsには最大50件のリビジョンが含まれ、それぞれにrevision、created_at、change、current、判明している場合はauthor、そしてcampaign(その書き込み後のキャンペーンと一時停止の状態)が付きます。changeはcreated、edited、restored、promoted(restored_fromが示す以前のリビジョンのコピー)、またはbaseline(キャンペーンの履歴が始まった時点のリビジョン)です。履歴に一時停止でないリビジョンが1つもないキャンペーンは下書きです。data.next_cursorが文字列である間は古いリビジョンが残っています。--afterにその値を指定してコマンドをもう一度実行してください。リビジョンはキャンペーンがある限り保持され、キャンペーンの削除とともに消えます。読み取り専用アクセスで足ります。
campaign restore#
以前のリビジョンを前方にコピーして、再び現在のリビジョンにします。
campaign restore <id> --revision N [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | cmp_キャンペーンID |
--revision N | integer | はい | なし | 前方にコピーするリビジョン(campaign revisionsの番号)。 |
--expect-rev REVISION | string | いいえ | 直前に読み取ったリビジョン | このキャンペーンの現在のリビジョンを必須にします。省略すると、CLIは書き込み直前にキャンペーンを読み取り、そのリビジョンを送信します。その間に変更があるとrevision_conflict(終了コード6)になります。 |
screenrig campaign restore cmp_LUNCH --revision 3
screenrig campaign restore cmp_LUNCH --revision 3 --expect-rev 5リビジョンNの名前、プレイリスト、オーディエンス、ルール、リージョン、優先度、一時停止の状態が、changeがrestoredの新しいリビジョンになります。campaign updateと同じ検査を受けるため、プレイリストが存在し、承認済みである必要があります(playlist_not_approved、終了コード5)。旧オーディエンスと新オーディエンスの各スクリーンは1分以内に再解決されます。以前のリビジョンはそのまま残り、現在の内容を復元しても何も変わりません。復元にはcampaign updateと同じアクセスが必要です。
レビュー
プロジェクトがエージェント変更のレビューを必要とするか、セッションにProposeアクセスがある場合、プレイリストとスクリーンの変更は適用されず人の承認を待ちます。コマンドは成功します:ok: true、終了0、サーバーの応答data、およびpending_review警告。
{
"ok": true,
"data": {
"status": "pending_review",
"review": {
"id": "rvw_LOBBY",
"kind": "playlist_change",
"state": "pending",
"url": "https://screenrig.ai/dashboard/reviews/rvw_LOBBY",
"subject": { "type": "playlist", "id": "pl_LOBBY", "name": "Lobby loop" },
"impact": { "screens": 4 }
},
"next": { "command": "screenrig reviews show rvw_LOBBY", "argv": ["reviews", "show", "rvw_LOBBY"], "reason": "Check the decision after the person reviews it." }
},
"warnings": [{ "code": "pending_review", "message": "Waiting for a person to approve: https://screenrig.ai/dashboard/reviews/rvw_LOBBY" }]
}プレイリストの作成と更新(playlist import と playlist replace-release --apply を含む)、screen publish、screen assign、screen schedule set、clear、restore、および screen takeover と takeover clear はレビュー待ちで、1台のスクリーンまたはフリート用です。フリートの変更は1つのレビューです:タグは承認者が承認すると解決され、reviews show は各スクリーンの結果を報告します。大規模フリートはバックグラウンドで適用を完了し、screen_change.result.applying はすべてのスクリーンが結果を得るまで true です。以下のメディア変更を除き、他のすべての変更は Propose セッションの 403 insufficient_access に応答します。これらのコマンドでの --note TEXT は、ダッシュボードでレビュアーが読む最大280文字のプレーンテキストのメモを送信します。
人物はダッシュボードのレビュー画面で承認、変更要求、拒否を行います。エージェントはプレイリストやスクリーンの変更を承認できません。承認された変更はその時点で適用され、イベントは承認者と提案したエージェントを記録します。レビュー待ちの間はポーリングやスリープ、書き込みの繰り返しを行わず、後で reviews show で確認するか、review.approved、review.rejected、review.changes_requested と events follow --type review. を参照してください。
メディアの変更もProposeセッションの待機中です。タグ、フォルダー、allセレクターは、人が承認するまで新しいアップロードをスキップし、承認済みメディアがセッションで再タグ付けまたは移動されると、変更が承認されるまで承認済みのタグとフォルダーで再生を続けます。再タグ付けはokに0で応答し、警告media_review_pendingを表示し、アイテムのレビューは数秒以内にreviews listに表示されます。ポーリング、スリープ、再試行は不要です。各アイテムは1つのレビューを持ち、種類playlist_change、操作selector_refresh、件名mediaを持ちます。media_changeはタグとフォルダーbefore、after(新規アップロードはbeforeがnull)を表示し、media_playlistsは変更が追加または削除するすべての承認済みおよび提案中のプレイリストをスクリーン付きでリストします(media_added、media_removed)。承認はすべてに適用し、拒否、変更要求、撤回は再タグ付けまたは移動されたアイテムを承認済みに戻し、新規アップロードは再生されません。承認済みプレイリストや提案に影響しない変更は自動適用され、IDでアイテムを指定するプレイリストは独自のレビューを持ちます。プレイリストが決定前に進むと、レビューはstaleになり、数秒で新しいレビューに置き換わります。
レビュー状態:
| 状態 | 意味 | 次のステップ |
|---|---|---|
pending | 人を待っています。 | レビュー用URLを相手に渡し、後で再確認してください。 |
approved | プレイリストまたは画面に適用されます。 | screen showとスクリーンショットで画面上で検証。 |
changes_requested | その人は変更を要求しました。decision_noteが内容を示します。 | --noteで修正して再提案してください。 |
rejected | その人は拒否しました。decision_noteが理由を示します。 | 同じ変更を再送しないでください。本人に確認してください。 |
withdrawn | 提案者が取り下げました。 | なし。 |
superseded | 同じプレイリストまたはスクリーンに対して新しい提案が置き換えました。superseded_by が名前を示します。 | 新しいレビューをフォローしてください。 |
stale | ライブplaylistは提案後に変更されました。タグ、フォルダー、またはallセレクターは提案時に見ていなかったメディアを再生するため、レビュー済みとして適用できません。メディアレビューはリストするplaylistが変わると古くなります。 | プレイリストを再度読み取り、その上に提案します。古いメディアレビューは数秒以内に新しいものに置き換えられます。 |
reviews list#
レビューを新しい順に一覧表示
reviews list [--state pending|decided|all] [--kind playlist_change|screen_change|ad_creative] [--limit N] [--cursor CURSOR]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
--state STATE | string | いいえ | pending | pending、decided、またはall。 |
--kind KIND | string | いいえ | すべての種類 | playlist_change、screen_change、またはad_creative。 |
--limit N | integer | いいえ | 50 | ページごとのレビュー数、1〜100。 |
--cursor CURSOR | string | いいえ | 最初のページ | 前のページのnext_cursor |
screenrig reviews list --state all結果は pending_count を含みます。セッションはその機能が読み取る種類を見ます:プレイリスト変更は playlists、スクリーン変更は screens、広告クリエイティブは advertising。
reviews show#
1件のレビューを読み込みます。
reviews show <id>| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | pending_review 結果からのレビューID。 |
screenrig reviews show rvw_LOBBYレビューは state を報告します。提案者、あなたの note、拒否または変更要求時に離れた decision_note の人物、impact.screens。プレイリスト変更は diff を追加し、ライブと提案プレイリストの preview(メディアレビューはなし)、メディアレビューの media_change、変更が選択を変えるプレイリストの media_playlists。スクリーン変更は blockers で、人物が最初に決定するプレイリストレビューとその現在の状態を示します。
reviews withdraw#
自分の保留中の提案を取り下げる。
reviews withdraw <id>| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | このセッションで提案された保留中のレビュー。 |
screenrig reviews withdraw rvw_LOBBY画面には何も届かず、撤回された新しいplaylistは承認されません。保留中でなくなったレビューはreview_not_pendingに回答します(終了コード5)。
デバイスの状態と電源
すべてのペアリングされた Player はセッション開始時、15分ごと、およびディスプレイ接続や電源が変わったときにデバイスの状態を報告します。また、サポートするホスト機能を宣言します:各機能がそのデバイスで動作する場合の reboot、clear_cache、restart_app、update、および使用可能なディスプレイ電源メソッド(display_power.serial、ディスプレイのRS-232制御ポート;display_power.cec、display_power.ddc、display_power.backlight、またはdisplay_power.scrim、画面上のブラックアウト)。screen show は両方を返します。
screen show はヘルス情報を data.health で返し、サーバーの reported_at を含みます。stale は 35 分間レポートがなければ true になり、最後のレポートは表示されたままです。--human では Health ブロックを表示します:レポート時刻、デバイスと Player の稼働時間、使用中メモリ、CPU 負荷とコア数、温度、ディスプレイ接続と電源、ネットワーク種別と Wi-Fi 信号、バッテリーのあるデバイスではバッテリー残量・充電状態・電源、過去 24 時間のクラッシュとレンダラー再起動数。screen list --human は、注意が必要なスクリーンがある場合 HEALTH 列を追加します:display disconnected、hot(80 ℃以上)、on battery、crashing(24 時間以内に 3 回以上クラッシュ)、または stale。
遷移は screen.health_changed イベントとして届き、events list と events follow が display_disconnected,temperature_high temperature_c=82 のようなコンパクトな changes= 値とともに表示します。電源コマンドは screen.reboot_requested と screen.display_changed を追加します。再起動スケジュールは、設定またはクリアされたときに screen.reboot_schedule_changed を、再起動なしでウィンドウが過ぎたときに reason を伴う screen.reboot_skipped を追加します。screen.reboot_requested は source を持ち、スケジュールが発行した場合は schedule です。すべての screen.* イベントと同様に、listen stream と Webhook 配信では無料です。通知は、ディスプレイの接続が切れたとき、デバイスが高温になったりバッテリーで動作したりしたとき、または Player が繰り返しクラッシュするときに、メールを送るか署名付き Webhook を POST します。
screen uptime、screen presence、およびscreen health-historyは、1つのスクリーンが時間をかけて行ったことを読み取ります:日ごとの稼働状況、オンラインおよびオフラインの遷移、報告された状態。project uptimeとproject health-trendはフリートを読み取ります。オフラインはスクリーンが60秒間到達不能になった後に記録され、履歴はプランのイベント保持期間分保存されます。
| 問題コード | 終了 | 意味 |
|---|---|---|
reboot_unsupported | 5 | スクリーンの Player は reboot を宣言していません。何も送信または保存されませんでした。screen reload はデバイスを再起動せずにコンテンツを更新します。 |
command_unsupported | 5 | スクリーンの Player は、コマンドに必要な機能である clear_cache、restart_app、update のいずれかを宣言していません。何も送信されませんでした。screen show はホスト機能を一覧表示し、screen reload はコンテンツを更新します。 |
resource_conflict | 5 | スクリーンはまだペアリング待ちで、切り替えるプレーヤーがありません。ディスプレイスケジュールは設定可能です。 |
invalid_request | 8 | ディスプレイスケジュールまたは再起動スケジュールが、タイムゾーンのないスクリーン(next が screen set-timezone)を対象としているか、ファイルが不正です。 |
rate_limited | 7 | 再起動と、キャッシュのクリア、アプリの再起動、ソフトウェアの更新の合計:1スクリーンあたり10分間に2回、組織あたり毎分600回。ディスプレイの書き込み:1スクリーンあたり10回、組織あたり毎分600回。retry_after_secondsをお待ちください。 |
複数のIDまたは --tag はフリートエンベロープと終了ルールを使う1つの フリートリクエストとして実行されます。
screen reboot#
スクリーンのデバイスまたはフリートのデバイスを再起動します。
screen reboot (<id>... | --tag TAG) [--yes] [--expires-in DURATION] [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id>... | string | <id> または --tag のいずれか | なし | 1つ以上のscr_スクリーンID。 |
--tag TAG | string | <id> または --tag のいずれか | なし | このタグを持つすべてのアクティブスクリーン。 |
--yes | boolean | 複数のIDまたは --tag 用 | オフ | フリート再起動を確認。CLIはプロンプトを表示しません。 |
--expires-in DURATION | string | いいえ | 24h、サーバー適用済み | リクエストがオフラインのスクリーンのオンライン復帰を待つ時間:90s、30m、2h、1d のような値で、範囲は 60s から 24h です。 |
--expect-rev REVISION | string | いいえ | なし | 1つのスクリーンIDのみ。任意のリビジョン前提条件。 |
screenrig screen reboot scr_LOBBY
screenrig screen reboot scr_LOBBY --expires-in 2h
screenrig screen reboot --tag Lobby --yesPlayer はそれ自身だけでなくデバイスを再起動します。オンラインのスクリーンには再起動がすぐに送信されます(state sent)。オフラインのスクリーンは queued として保持し、expires_at の前にオンラインになると送信されます。その期限は、--expires-in に別の指定がなければ依頼から24時間後です。より新しい再起動は、キューにある再起動を置き換えます。screen show はスクリーンの commands を一覧します。送信された再起動は、デバイスが起動を報告すると done になり、screen command cancel はキューにあるものをキャンセルします。フリートでは、各結果の reboot が同じ state を持ちます。拒否または失敗したリクエストと、同一リクエストの完全な再実行は、スクリーンごとの上限に数えられません。再起動が送信されてから、デバイスが起動を報告するか10分が経過するまで、スクリーンは screen_offline や display_disconnected のアラートを発生させません。その間に送信期限を迎えたどちらかの通知は、その期間の終了に待機時間を加えた時刻まで待機し、crashing の通知は planned_reboot としてスキップされます。その後も続く条件は通常どおり発生します。
screen clear-cache#
スクリーンの Player、またはフリートの Player のキャッシュをクリアします。
screen clear-cache (<id>... | --tag TAG | --folder ID) [--yes] [--expires-in DURATION] [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id>... | string | <id>、--tag、--folder のいずれか | なし | 1つ以上のscr_スクリーンID。複数IDは1つのフリートリクエストとして実行されます。 |
--tag TAG | string | <id>、--tag、--folder のいずれか | なし | このタグを持つすべてのアクティブスクリーン。 |
--folder ID | string | <id>、--tag、--folder のいずれか | なし | この sfd_ スクリーンフォルダーとその中のフォルダーにあるすべてのアクティブなスクリーン。 |
--yes | boolean | 複数の ID、--tag、--folder 用 | オフ | フリートのリクエストを確認します。CLI はプロンプトを表示しません。 |
--expires-in DURATION | string | いいえ | 24h、サーバー適用済み | リクエストがオフラインのスクリーンのオンライン復帰を待つ時間:90s、30m、2h、1d のような値で、範囲は 60s から 24h です。 |
--expect-rev REVISION | string | いいえ | なし | 1つのスクリーンIDのみ。任意のリビジョン前提条件。 |
screenrig screen clear-cache scr_LOBBY
screenrig screen clear-cache scr_LOBBY --expires-in 2h
screenrig screen clear-cache --tag Lobby --yesPlayer はダウンロード済みのメディア、アプリケーションパッケージ、データキャッシュを削除し、ペアリング、ID、設定は保持したまま、マニフェストとコンテンツを再び取得します。コンテンツが再び満たされるまで、スクリーンは読み込み状態を表示することがあります。対象となるのは clear_cache を宣言した Player のみです。オンラインのスクリーンにはリクエストが直ちに送信されます(state sent)。オフラインのスクリーンでは queued として保持され、リクエストの24時間後(--expires-in で別途指定しない限り)である expires_at より前にオンラインになった時点で送信されます。応答には command_id、command、state、expires_at が含まれます。この機能を宣言していない Player は 409 command_unsupported で応答し、何も送信されません。フリートでは、そのスクリーンだけが失敗します。screen show は commands の下にコマンドを一覧表示し、Player が報告すると、cause と短い detail を付けて done または failed にします。キャッシュがクリアされ再取得が始まった場合は cleared、キャッシュをクリアできない場合は clear_failed です。報告のない sent のコマンドは sent のままです。同じ種類のより新しいコマンドは、まだ queued のコマンドを置き換え、screen command cancel はまだ queued のコマンドをキャンセルします。フリートでは、各結果の command に同じ state が含まれます。フリート(複数の ID、--tag または --folder)には --yes が必要です。拒否または失敗したリクエスト、および同一リクエストの完全なリプレイは、スクリーンごとの clear-cache、restart-app、update-software を合わせた10分間に2件の上限に数えられません。
screen restart-app#
スクリーンの Player、またはフリートの Player のアプリケーションを再起動します。
screen restart-app (<id>... | --tag TAG | --folder ID) [--yes] [--expires-in DURATION] [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id>... | string | <id>、--tag、--folder のいずれか | なし | 1つ以上のscr_スクリーンID。複数IDは1つのフリートリクエストとして実行されます。 |
--tag TAG | string | <id>、--tag、--folder のいずれか | なし | このタグを持つすべてのアクティブスクリーン。 |
--folder ID | string | <id>、--tag、--folder のいずれか | なし | この sfd_ スクリーンフォルダーとその中のフォルダーにあるすべてのアクティブなスクリーン。 |
--yes | boolean | 複数の ID、--tag、--folder 用 | オフ | フリートのリクエストを確認します。CLI はプロンプトを表示しません。 |
--expires-in DURATION | string | いいえ | 24h、サーバー適用済み | リクエストがオフラインのスクリーンのオンライン復帰を待つ時間:90s、30m、2h、1d のような値で、範囲は 60s から 24h です。 |
--expect-rev REVISION | string | いいえ | なし | 1つのスクリーンIDのみ。任意のリビジョン前提条件。 |
screenrig screen restart-app scr_LOBBY
screenrig screen restart-app scr_LOBBY --expires-in 2h
screenrig screen restart-app --tag Lobby --yesPlayer はアプリケーションを再起動し(デバイスではありません。Web Player はページを再読み込みします)、再起動したプロセスから報告します。対象となるのは restart_app を宣言した Player のみで、デバイスを再起動するのは screen reboot です。オンラインのスクリーンにはリクエストが直ちに送信されます(state sent)。オフラインのスクリーンでは queued として保持され、リクエストの24時間後(--expires-in で別途指定しない限り)である expires_at より前にオンラインになった時点で送信されます。応答には command_id、command、state、expires_at が含まれます。この機能を宣言していない Player は 409 command_unsupported で応答し、何も送信されません。フリートでは、そのスクリーンだけが失敗します。screen show は commands の下にコマンドを一覧表示し、Player が報告すると、cause と短い detail を付けて done または failed にします。restarted、または再起動を開始できない場合は restart_failed です。報告のない sent のコマンドは sent のままです。同じ種類のより新しいコマンドは、まだ queued のコマンドを置き換え、screen command cancel はまだ queued のコマンドをキャンセルします。フリートでは、各結果の command に同じ state が含まれます。フリート(複数の ID、--tag または --folder)には --yes が必要です。拒否または失敗したリクエスト、および同一リクエストの完全なリプレイは、スクリーンごとの clear-cache、restart-app、update-software を合わせた10分間に2件の上限に数えられません。
screen update-software#
スクリーンの Player、またはフリートの Player を最新リリースに更新します。
screen update-software (<id>... | --tag TAG | --folder ID) [--yes] [--expires-in DURATION] [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id>... | string | <id>、--tag、--folder のいずれか | なし | 1つ以上のscr_スクリーンID。複数IDは1つのフリートリクエストとして実行されます。 |
--tag TAG | string | <id>、--tag、--folder のいずれか | なし | このタグを持つすべてのアクティブスクリーン。 |
--folder ID | string | <id>、--tag、--folder のいずれか | なし | この sfd_ スクリーンフォルダーとその中のフォルダーにあるすべてのアクティブなスクリーン。 |
--yes | boolean | 複数の ID、--tag、--folder 用 | オフ | フリートのリクエストを確認します。CLI はプロンプトを表示しません。 |
--expires-in DURATION | string | いいえ | 24h、サーバー適用済み | リクエストがオフラインのスクリーンのオンライン復帰を待つ時間:90s、30m、2h、1d のような値で、範囲は 60s から 24h です。 |
--expect-rev REVISION | string | いいえ | なし | 1つのスクリーンIDのみ。任意のリビジョン前提条件。 |
screenrig screen update-software scr_LOBBY
screenrig screen update-software scr_LOBBY --expires-in 2h
screenrig screen update-software --tag Lobby --yesPlayer は最新の Player リリースを今すぐ確認し、プラットフォームが Player 自身による更新を許可している場合はインストールします。Web Player はサービスワーカーを更新してから再読み込みします。対象となるのは update を宣言した Player のみです。ストアからインストールされた Player やデバイスマネージャーで管理されている Player は、そのチャネルで更新されます。オンラインのスクリーンにはリクエストが直ちに送信されます(state sent)。オフラインのスクリーンでは queued として保持され、リクエストの24時間後(--expires-in で別途指定しない限り)である expires_at より前にオンラインになった時点で送信されます。応答には command_id、command、state、expires_at が含まれます。この機能を宣言していない Player は 409 command_unsupported で応答し、何も送信されません。フリートでは、そのスクリーンだけが失敗します。screen show は commands の下にコマンドを一覧表示し、Player が報告すると、cause と短い detail を付けて done または failed にします。最新リリースがすでに動作している場合は up_to_date、新しいバージョンが起動した場合は updated、失敗した場合は update_check_failed、download_failed、install_failed、no_update_channel のいずれかです。報告のない sent のコマンドは sent のままです。同じ種類のより新しいコマンドは、まだ queued のコマンドを置き換え、screen command cancel はまだ queued のコマンドをキャンセルします。フリートでは、各結果の command に同じ state が含まれます。フリート(複数の ID、--tag または --folder)には --yes が必要です。拒否または失敗したリクエスト、および同一リクエストの完全なリプレイは、スクリーンごとの clear-cache、restart-app、update-software を合わせた10分間に2件の上限に数えられません。
screen command cancel#
オフラインのスクリーン宛てにキューに残っているコマンドをキャンセルします。
screen command cancel <id> <command_id> [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | scr_スクリーンID |
<command_id> | string | はい | なし | screen show の commands にある ID、またはリクエストの回答で返された reboot_id、reload_id、command_id のいずれか。 |
--expect-rev REVISION | string | いいえ | なし | オプションのリビジョン前提条件。現在のリソースを書き込む場合は省略します。提供された古い値はrevision_conflictです:再取得、再適用、再試行。 |
screenrig screen command cancel scr_01EXAMPLESCREEN00000000 rbt_01EXAMPLEREBOOT00000000キャンセルできるのは、キューに入っているコマンドだけです。すでに送信されたコマンド(sent または done)には 409 resource_conflict と "The command was already sent." が返り、キューに入っていないコマンド(expired、cancelled、superseded のいずれか)には 409 resource_conflict と "The command is no longer queued." が返ります。スクリーンのコマンド一覧にない ID には 404 not_found が返ります。回答は、コマンドが cancelled になったスクリーンで、スクリーンのリビジョンは変わりません。
screen display#
スクリーンの表示、またはフリートの表示を今すぐオンまたはオフにするか、そのオーバーライドを解除します。
screen display [set] (<id>... | --tag TAG) --power on|off [--until TIME | --for DURATION] [--expect-rev REVISION]
screen display clear (<id>... | --tag TAG) [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id>... | string | <id> または --tag のいずれか | なし | 1つ以上のscr_スクリーンID。IDの後の末尾のonまたはoffは--powerと同じです。 |
--tag TAG | string | <id> または --tag のいずれか | なし | このタグを持つすべてのアクティブスクリーン。 |
--power on|off | string | はい、set用です | なし | 現在適用する権限です。 |
--until TIME | string | いいえ | 表示スケジュールの次の境界 | 厳密なRFC 3339形式の日時で、厳密に未来かつ最大7日先まで。 |
--for DURATION | string | いいえ | 表示スケジュールの次の境界 | 30m、2h、または3d、最大6d23h59mまで。--untilとは併用できません。 |
--expect-rev REVISION | string | いいえ | なし | 1つのスクリーンIDのみ。任意のリビジョン前提条件。 |
screenrig screen display scr_LOBBY --power off --for 2h
screenrig screen display --tag Lobby --power on
screenrig screen display clear --tag Lobbyscreen display はディスプレイスケジュールの手動オーバーライドです。--until または --for がない場合、スケジュールの次の境界で終了します。後からディスプレイスケジュールやタイムゾーンを変更すると、その終了も新しい境界に移動します。今後8日以内に境界がない場合(有効なスケジュールがない場合など)は、screen display clear または置き換えまで継続します。screen display clear でオーバーライドが終了し、ディスプレイスケジュールが再び適用されます。オーバーライドがなければディスプレイはオンになります。プレーヤーはすべての変更を即時に適用し、達成した電源状態を報告します。
screen display-schedule#
スクリーンのディスプレイがオンのときに表示、設定、またはクリアします。
screen display-schedule show <id>
screen display-schedule set (<id>... | --tag TAG) --file FILE [--expect-rev REVISION]
screen display-schedule clear (<id>... | --tag TAG) [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id>... | string | <id> または --tag のいずれか | なし | 1つ以上のscr_スクリーンID;showは1つ受け付けます。 |
--tag TAG | string | <id> または --tag のいずれか | なし | このタグを持つすべてのアクティブスクリーン。 |
--file FILE | パス | はい、set用です | なし | ディスプレイのスケジュール、または標準入力の場合は-。 |
--expect-rev REVISION | string | いいえ | なし | 1つのスクリーンIDのみ。任意のリビジョン前提条件。 |
screenrig screen display-schedule set scr_LOBBY --file hours.json
screenrig screen display-schedule set --tag Cafe --file hours.jsonディスプレイスケジュールはディスプレイがオンのときに1~16のウィンドウをスクリーンのタイムゾーンでリストします。ウィンドウ外ではディスプレイはスタンバイになります。プレーヤーはデバイス上で評価するためオフラインでも動作します。end が start 以前のウィンドウは日付変更線をまたぎ、start と end がないウィンドウは1日全体をカバーします。enabled: false はウィンドウを保持しディスプレイをオンにします。保存された display-schedule show の出力は編集して set --file で送り返せます。
{"enabled": true, "windows": [{"days": ["mon", "tue", "wed", "thu", "fri"], "start": "07:00", "end": "19:00"}, {"days": ["sat"]}]}screen show --human は Display: をリクエストされた電源状態、そのソース(手動操作・ディスプレイスケジュール・デフォルト)、スクリーンのタイムゾーンでの有効期限、スケジュールウィンドウ、プレーヤーが報告した電源状態を表示します。35分以上報告がない場合は古い情報とみなされます。
screen display-idle#
一定時間使用されないとスクリーンの画面を暗転させる、またはそれをオフにします。
screen display-idle <id> --after SECONDS --wake WAKE [--expect-rev REVISION]
screen display-idle <id> --off [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | scr_スクリーンID |
--after SECONDS | integer | --after または --off のいずれか | なし | 使用されないまま、この秒数が経過すると暗転します。30〜86400。--wake が必要です。 |
--wake WAKE | string | --after とともに | なし | 画面を再び点灯させるもの:touch、presence、touch,presence。presence はデバイス上でデバイスのカメラを読み取り、画像がデバイスの外に出ることはありません。 |
--off | boolean | --after または --off のいずれか | オフ | アイドル時の暗転をオフにします。 |
--expect-rev REVISION | string | いいえ | なし | オプションのリビジョン前提条件。現在のリソースを書き込む場合は省略します。提供された古い値はrevision_conflictです:再取得、再適用、再試行。 |
screenrig screen display-idle scr_LOBBY --after 300 --wake touch
screenrig screen display-idle scr_LOBBY --after 600 --wake touch,presence --expect-rev 4
screenrig screen display-idle scr_LOBBY --offタッチやキー操作がないまま、または --wake に presence が含まれる場合は画面の前に誰もいないまま --after 秒が経過すると、画面が暗転します。暗転中、Player は再生を停止し(再生回数の記録も広告もなし)、ディスプレイの電源オフを報告します。復帰イベントで画面が即座に点灯して再生が再開され、暗転した画面を復帰させたタッチはページに渡されません。パネルをオフに保つディスプレイスケジュールまたはオーバーライドが優先され、ページが画面に表示されている間に device.display を保持しているアプリケーションも優先されます。変更されるのは display.idle のみです。Player は、screen show のホスト機能に display_power.idle が含まれる場合にこれを適用します。設定はどちらの場合も保存され、screen show はそれを Display idle として表示します。Propose アクセスでは変更できず (insufficient_access)、保護されたフォルダー内のスクリーンでは拒否されます (protected_target)。
screen brightness#
スクリーンの明るさをデバイスの光センサーに連動させるかどうかを設定します。
screen brightness <id> --mode auto|fixed [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | scr_スクリーンID |
--mode auto|fixed | string | はい | なし | auto はデバイスの光センサーで明るさを設定し、fixed はオペレーターの明るさを維持します(デフォルト)。 |
--expect-rev REVISION | string | いいえ | なし | オプションのリビジョン前提条件。現在のリソースを書き込む場合は省略します。提供された古い値はrevision_conflictです:再取得、再適用、再試行。 |
screenrig screen brightness scr_LOBBY --mode auto
screenrig screen brightness scr_LOBBY --mode fixed --expect-rev 4変更されるのは display.brightness のみです。Player は、screen show のホスト機能に brightness.auto が含まれる場合に auto を適用します。デバイスがこれを宣言するのは光センサーがある場合だけです。ディスプレイの明るさを設定するアプリケーションは、そのページが表示されている間は優先されます。設定はどちらの場合も保存され、screen show はそれを Display brightness として表示します。screen display-idle のアクセスルールが適用されます。
screen kiosk-lock#
スクリーンの Player を画面に固定する、または固定を解除します。
screen kiosk-lock <id> (--on | --off) [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | scr_スクリーンID |
--on, --off | boolean | 2つのうちの1つ | なし | --on は Player を画面に固定し、--off は固定を解除します。 |
--expect-rev REVISION | string | いいえ | なし | オプションのリビジョン前提条件。現在のリソースを書き込む場合は省略します。提供された古い値はrevision_conflictです:再取得、再適用、再試行。 |
screenrig screen kiosk-lock scr_LOBBY --on
screenrig screen kiosk-lock scr_LOBBY --off --expect-rev 4--on は Android の画面固定を使います。初回は画面の前にいる人が確認し、Player が固定されている間はステータスバー、ホーム、最近使ったアプリが無効になります。オペレーター設定パネルからロックを解除でき、次のマニフェストまたは再起動で再び適用されるまで解除されたままになります。Player は、screen show のホスト機能に kiosk_lock が含まれる場合にこれを適用します。設定はどちらの場合も保存され、有効な間は screen show が Kiosk lock を一覧に表示します。screen display-idle のアクセスルールが適用されます。
screen reboot-schedule#
バックエンドがスクリーンのデバイスを再起動するタイミングを表示、設定、またはクリアします。
screen reboot-schedule show <id>
screen reboot-schedule set (<id>... | --tag TAG) (--window SPEC... | --file FILE) [--enabled | --disabled] [--expect-rev REVISION]
screen reboot-schedule clear (<id>... | --tag TAG) [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id>... | string | <id> または --tag のいずれか | なし | 1つ以上のscr_スクリーンID;showは1つ受け付けます。 |
--tag TAG | string | <id> または --tag のいずれか | なし | このタグを持つすべてのアクティブスクリーン。 |
--window SPEC | string | --window または --file のいずれか(set 用) | なし | この週間ウィンドウの開始時に再起動します。スクリーンのタイムゾーンで DAYS HH:MM-HH:MM、たとえば "Mon-Sun 04:00-04:30"(DAYS@HH:MM-HH:MM も使えます)。最大16回まで繰り返せます。各ウィンドウは5分〜24時間です。 |
--file FILE | パス | --window または --file のいずれか(set 用) | なし | JSON の再起動スケジュール、または標準入力を表す -。--window の代わりに使います。 |
--enabled, --disabled | boolean | いいえ | --enabled | --disabled はウィンドウを保持し、何も再起動しません。--file とは併用できません。 |
--expect-rev REVISION | string | いいえ | なし | 1つのスクリーンIDのみ。任意のリビジョン前提条件。 |
screenrig screen reboot-schedule set scr_LOBBY --window "Mon-Sun 04:00-04:30"
screenrig screen reboot-schedule set --tag Cafe --window "Mon-Fri 04:00-04:30" --window "Sat,Sun 05:00-06:00"
screenrig screen reboot-schedule set scr_LOBBY --file reboots.json --expect-rev 4各ウィンドウの開始時に、スクリーンのタイムゾーンで、screenRIG は screen reboot と同じ再起動を発行します。たとえば "Mon-Sun 04:00-04:30" は、毎日現地時間の04:00にスクリーンを再起動します。screen show の commands は source schedule とともにそれを一覧し、screen show と reboot-schedule show は next_reboot_at を表示します。終了が開始と同じかそれより前のウィンドウは日付をまたぎ、時刻のないウィンドウは1日全体を対象とします。reboot-schedule show の保存済み出力は編集して set --file で送り返せます:
{"enabled": true, "windows": [{"days": ["mon", "tue", "wed", "thu", "fri", "sat", "sun"], "start": "04:00", "end": "04:30"}]}オンラインのスクリーンには再起動がすぐに送信されます。オフラインのスクリーンでは、ウィンドウが終わるまでのみキューに保持されるため、再起動がウィンドウ外で実行されることはありません。ウィンドウ後に復帰したスクリーンには再起動は行われません。春の時刻前進で存在しない時間帯に入る開始は、ウィンドウ内の最初の有効な分に実行され、秋の時刻後退による繰り返しはウィンドウごと、現地の日付ごとに1回実行されます。人が依頼してスクリーンを待っている再起動を、予定された再起動が置き換えることはありません。その実行は screen.reboot_skipped(reboot_pending)でスキップされます。スクリーンには保存されたタイムゾーンと、reboot を宣言する Player が必要です。後から reboot を失ったスクリーンは各ウィンドウをスキップし、スケジュールは保持されます。タイムゾーンを変更すると next_reboot_at が新しいゾーンに移動します。スケジュールが送信した再起動は、screen reboot と同様にオフラインアラートを発生させません。screen.reboot_schedule_changed は設定とクリアをそれぞれ記録します。フリートでは、各結果はそのスクリーン自身のものです。Player が再起動できないスクリーンには reboot_unsupported です。
screen uptime#
スクリーンの 1 日ごとの利用可能状況を UTC 日単位で読み取ります。
screen uptime <id> [--day-from YYYY-MM-DD] [--day-to YYYY-MM-DD]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | scr_スクリーンID |
--day-from YYYY-MM-DD | string | いいえ | --day-toの29日前 | 最初の UTC 日(含む)。 |
--day-to YYYY-MM-DD | string | いいえ | 今日 | 最終UTC日(含む)。--day-fromの最大366日後。 |
screenrig screen uptime scr_01EXAMPLESCREEN00000000
screenrig screen uptime scr_01EXAMPLESCREEN00000000 --day-from 2026-09-01 --day-to 2026-09-30data.items は記録された状態ごとに UTC 日単位で 1 行ずつ、古い順に一覧表示します:online_s, offline_s, availability(記録された時間のオンライン;null は何も記録されていない場合)、coverage(その日の記録された状態の割合)、intervals, live(現在までのオープン区間を含む日)。記録のない時間は coverage を下げますが、ダウンタイムにはなりません。何も記録されていない日は行がありません。
screen presence#
スクリーンのオンライン・オフライン遷移を新しい順に一覧表示
screen presence <id> [--since TIME] [--until TIME]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | scr_スクリーンID |
--since TIME | string | いいえ | --untilの30日前 | 遷移時間の包括的開始:秒とオフセットを含むRFC 3339の瞬間(UTCに正規化)、now、または 7d、12h、30m のような経過時間。 |
--until TIME | string | いいえ | 今 | 同じ形式での排他的な終了。--since の最大366日後。 |
screenrig screen presence scr_01EXAMPLESCREEN00000000 --since 7d
screenrig screen presence scr_01EXAMPLESCREEN00000000 --since 2026-09-01T00:00:00Z --until 2026-09-08T00:00:00Zdata.items は at、state、detected_on_reconnect を保持し、サーバーがスクリーンの再接続時にのみ検知したオフライン状態を示します(at はそのプレゼンスリースが終了した時点です)。CLI は next_cursor に従って最後まで進み、すべての遷移に next_cursor null で応答します。範囲が広い場合は --since で絞り込んでください。
screen health-history#
スクリーンが報告したヘルスを時間ごとに一覧表示、各報告または1時間ごとの要約
screen health-history <id> [--from TIME] [--to TIME] [--resolution raw|hour]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | scr_スクリーンID |
--from TIME | string | いいえ | --toの24時間前 | レポート時間の包括的開始:秒とオフセットを含むRFC 3339の瞬間(UTCに正規化)、now、または 7d、12h、30m のような経過時間。 |
--to TIME | string | いいえ | 今 | 同じ形式での排他的な終了。--from の最大31日後、--resolution hour 付きで最大93日。 |
--resolution | string | いいえ | raw | raw は受理された各レポートを一覧表示します。hour は各 UTC 時間を要約します。 |
screenrig screen health-history scr_01EXAMPLESCREEN00000000 --from 6h
screenrig screen health-history scr_01EXAMPLESCREEN00000000 --from 30d --resolution hourraw は data.samples に応答し、各受理レポートは screen show の health の形(stale なし)です。hour は data.hours に応答し、UTC 時間ごとに1件のサマリー:レポート数、最高・平均温度、ピーク負荷・メモリ比、最弱 Wi-Fi 信号、display_disconnected、ピーククラッシュ・レンダラー再起動回数。CLI は next_cursor の終端まで追従するため、生データが長い場合は範囲を絞るか --resolution hour を使います。生レポートは数秒以内、時間サマリーは約5分以内に届きます。
プロジェクトノート
プロジェクトノートは、エージェントが後のセッションや他のエージェントのためにプロジェクトに残す短いプレーンテキストのメモです。プロジェクト内のすべてのエージェントがすべてのノートを読み、ノートを書くにはProposeまたはManageのアクセス権が必要です。ノートはエージェントによる文脈の記述であり、指示や承認ではありません。セッション開始時にノートを読み、変更前に確認してください。
TTLなしのメモは、追加または最後に確認されてから90日後にレビュー対象になります。notes list の最初のページは、review に最大5件の期限切れメモを返し、notes_due_for_review の警告を表示します:まだ有効なものを確認し、残りは解決してください。誰も確認しない期限切れメモは、Propose または Manage アクセス権を持つエージェントに最初に返されてから30日後に自動解決されます。--ttl のあるメモは期限切れで自動解決され、メモ対象のスクリーンまたはプレイリストを削除するとメモも解決されます。解決済みメモは30日間閲覧可能で、その後削除されます。組織は、すべてのプロジェクトを合わせて最大200件の未解決メモを保持します。
agent status と login は、メモが新規またはレビュー対象の場合に警告 notes_waiting を追加します。screen show と playlist show は、そのスクリーンまたはプレイリストに関する未解決メモがある場合に notes_about_resource を追加します。メモを追加するとイベントログに note.added が記録され、解決すると note.resolved が記録されます。どちらもメモ本文は含みません。メモの閲覧ではメーターは減りません。
notes list#
プロジェクトのメモを最新順に読み取ります。screenrig notesは同じコマンドを実行します。
notes list [--all | --resolved] [--about ID] [--author AGENT_ID] [--limit N] [--after CURSOR]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
--all | フラグ | いいえ | オープンメモ | 解決済みメモを含む。 |
--resolved | フラグ | いいえ | オープンメモ | 解決済みノートのみ。 |
--about ID | string | いいえ | すべてのメモ | 1つのスクリーンまたはplaylistに関するノートのみ:screen:ID、playlist:ID、またはID。 |
--author AGENT_ID | string | いいえ | すべての作成者 | このエージェントが書いたノートのみ。 |
--limit N | integer | いいえ | 50 | ページサイズ、1から200。 |
--after CURSOR | string | いいえ | 最初のページ | 前のページのnext_cursor |
screenrig notes各メモには author(エージェントの名前とタイプ)、created_at、about、2つのフラグ(new は前回の閲覧以降に他のエージェントが書いたメモ、due はレビュー対象のメモ)が含まれます。--about や --author のない未完了メモの最初のページがあなたの既読となり、既読マーカーが移動します(Read only エージェントの既読は移動しません)。そのため new と counts.new で前回の閲覧以降の変更内容を説明します。
notes show#
1件のメモ(未解決または解決済み)を読み込みます。
notes show <id>| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | nte_ノートID |
screenrig notes show nte_01EXAMPLENOTE000000000notes add#
プロジェクトのエージェントにメモを書く。
notes add <text> [--about ID] [--ttl DURATION] [--replaces ID]
notes add --file FILE [--about ID] [--ttl DURATION] [--replaces ID]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<text> | string | 2つのうちの1つ | なし | ノート:トリム後のプレーンテキストで1~2000文字。 |
--file FILE | パス | 2つのうちの1つ | なし | ファイルからメモを読み取るか、標準入力には-を使用します。 |
--about ID | string | いいえ | プロジェクト全体 | メモを1つのスクリーンまたはプレイリストに紐付けます:screen:ID、playlist:ID、またはID。 |
--ttl DURATION | string | いいえ | 90日後のレビュー | この期間(1hから365dまでの時間または日数)経過後にノートを自動的に解決します。例:12hまたは3d。 |
--replaces ID | string | いいえ | なし | このノートは置き換えられた未解決のノートです。置き換え済みとして解決されます。 |
screenrig notes add "The lobby screen is mounted in portrait: design for 1080x1920." --about screen:scr_01EXAMPLESCREEN00000000他のエージェントが動作する事実を書きます。進捗報告やチャットは書きません。テキスト(大文字小文字と空白を無視)と件名が開いているメモと重複する場合は、追加せずそのメモを確認し、警告note_matched_openを表示します。資格情報形式のテキストはnote_contains_credentialで拒否され、モデルへの指示と読めるテキストはnote_rejectedで拒否されます。何も保存されません。組織のプロジェクト全体で201件目の開いているメモはnote_limit_reachedで拒否され、詳細は先に解決すべきメモを示します。
notes confirm#
未解決のメモがまだ存在すると伝えます。次のレビューは90日後です。
notes confirm <id>| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | オープンノートのnte_ID |
screenrig notes confirm nte_01EXAMPLENOTE000000000notes resolve#
誤っているかもはや正しくないオープンノートを解決します。
notes resolve <id> <reason>| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | オープンノートのnte_ID |
<reason> | string | はい | なし | 現在の真実、1~500文字 |
screenrig notes resolve nte_01EXAMPLENOTE000000000 "The lobby screen was remounted in landscape."解決済みのメモはnote_not_openで拒否されます。
操作
アップロードと公開は操作として実行されます。media upload、media replace、app uploadはデフォルトで自分の操作を待ちます。これらのコマンドは、--no-waitで実行したままにした操作を完了させるために使います。
operations show#
1件のオペレーションの現在の状態を読み込みます。
operations show <id>| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | それを開始したエンベロープの操作ID。 |
screenrig operations show op_01EXAMPLEOPERATION00000operations wait#
操作が完了するまでポーリングします。
operations wait <id> [--timeout MS] [--poll-ms MS]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | 操作ID。 |
--timeout MS | integer | いいえ | 120000 | 待機の期限です。各基底リクエストの制限にもなります。 |
--poll-ms MS | integer | いいえ | 1000 | 待機中の操作ポーリングの間隔。 |
screenrig operations wait op_01EXAMPLEOPERATION00000operations cancel#
コントロールプレーンに操作のキャンセルを依頼
operations cancel <id>| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | 操作ID。 |
screenrig operations cancel op_01EXAMPLEOPERATION00000イベント
プロジェクトのイベントログはプロジェクトとフリートの動作を記録します。公開されたリリースはapplication.publishedを追加し、screenrig.emit(code)を呼ぶアプリは自身のイベントを追加します。これはスクリーンで実行された最も直接的な証拠です。
プレゼンスはログにもあります。screen.offlineはスクリーンが60秒間オフラインの後に1回書き込まれ、screen.onlineは復帰時に書き込まれます。60秒以内の再接続はどちらも書き込みません。screen.offlineはdetails.offline_sinceを含み、スクリーンが以前オンラインだった場合はdetails.last_online_atも含みます。screen.onlineはdetails.last_online_atを含み、スクリーンが復帰前にオフラインだった場合はdetails.offline_atも含みます。すべてのscreen.*イベントと同様に、これらはリッスンストリームで無料で配信されるため、エージェントはevents followを開いたままにしてフリートを監視できます。
events list#
プロジェクトイベントの1ページを読み込みます。
events list [--after CURSOR] [--limit N] [--type TYPE] [--screen-id ID] [--app-id ID]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
--after CURSOR | string | いいえ | ページウィンドウの開始 | このカーソル以降を再開する。 |
--limit N | integer | いいえ | サーバーのページサイズ | 要求されたページサイズ。 |
--type TYPE | string | いいえ | すべてのタイプ | 1つのイベントタイプ、またはnote.のようなドットで終わるプレフィックスによるファミリー。 |
--screen-id ID | string | いいえ | すべてのスクリーン | このスクリーンをリソースとするイベント。SDKから送信されたイベントも含みます。 |
--app-id ID | string | いいえ | すべてのアプリケーション | アプリケーションリソース、リリース、K/Vのイベント。SDKから送信されたイベントは含みません。 |
screenrig events list --limit 25
screenrig events list --type application.event --screen-id scr_SCREENSDKのemit()とemitConfirmed()は、スクリーンをリソースとするapplication.eventレコードを追加します。--type application.eventで読み取り、必要に応じて--screen-idを追加します。返されるdetails.primitive_idとdetails.codeは、送信元のプリミティブと名前付きアクションを識別します。--app-idはアプリケーションリソース、リリース、K/Vのイベントを選択するため、これらのスクリーンイベントは含みません。
デフォルト出力はページごとに1つのJSONエンベロープです。--human を使うとイベントごとに1つのログフォーマット行を出力します:at=、type=、severity=、およびスカラー詳細。
events follow#
イベントストリームに留まり、イベントを到着時に表示します。
events follow [--after CURSOR] [--timeout MS] [--type TYPE]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
--after CURSOR | string | いいえ | ライブテール | このカーソルから再開する。 |
--timeout MS | integer | いいえ | 期限なし | フォロー全体を終了し、再接続のバックオフも含みます。 |
--type TYPE | string | いいえ | すべてのタイプ | 1つのイベントタイプ、またはnote.のようなドットで終わるプレフィックスによるファミリー。 |
screenrig events follow切断や一時的な障害はバックオフで再接続し、最後のイベントIDから再開します。再接続後のリプレイは無料です。認可や not-found の問題はコマンドを停止し、再試行しません。
--typeで、ストリームはすべてのイベントを保持し、CLIは一致するものだけを表示します:screenrig events follow --type note.はプロジェクトノートを監視します。
デフォルト出力はNDJSONです:イベントごとに1つのエンベロープを独立した行で出力します。ログフォーマット行には --human を使用してください。
通知
通知は、画面の状態が変わったときに、人または別のシステムに知らせます。メール通知は各宛先にメールを送り、Webhook 通知は署名付き HTTPS POST を送り、Slack・Teams・PagerDuty・Telegram の通知はチャットまたはページャーにメッセージを投稿します。1 つの組織で作成できるのは、すべてのチャネルとすべてのプロジェクトを合わせて最大 50 件で、すべてのプロジェクトは、画面が 10 分間オフラインのときにオーナーへ送るメール 1 件から始まります。
通知は、指定した条件を監視します:
| 条件 | 開始条件 | 終了条件 |
|---|---|---|
screen_offline | Playerが60秒間オフラインです。 | スクリーンがオンラインに復帰します。 |
display_disconnected | Playerがディスプレイの切断を報告します。 | ディスプレイが再接続します。 |
running_hot | デバイスが過熱のしきい値以上の温度を報告します。 | 温度が正常に戻ります。 |
on_battery | バッテリーのあるデバイスが、バッテリーで動作している(電源に接続されていない)と報告しています。 | デバイスが別の電源を報告しています。 |
storage_full | Playerのストレージにコンテンツが収まりません。 | 不足が解消されます。 |
content_stuck | スクリーンのコンテンツ更新が再試行中、失敗、ブロック、または部分的な状態です。 | 更新がそれ以外の状態になります。 |
not_playing | Playerがコンテンツの代わりにエラーを表示しています。ストレージ満杯は storage_full です。 | Playerのステータスがエラーではなくなります。 |
loop_stalled | オンラインでスケジュール通りコンテンツも最新の画面が、ループが許容する時間より長く画像や動画を開始していません。 | 画像または動画が再び開始されるか、screenRIG が画面の判定をやめます。 |
glass_blank | ループ全体をカバーする一連の撮影で screenRIG が取得したスクリーンショットが、すべて単一の均一な色でした。 | 連続する 2 枚のスクリーンショットが画像を示すか、screenRIG が画面の判定をやめます。 |
glass_frozen | ループ全体をカバーする一連の撮影で screenRIG が取得したスクリーンショットが、すべて同じ画像でした。 | 連続する 2 枚のスクリーンショットが動く画像を示すか、screenRIG が画面の判定をやめます。 |
crashing | Playerがクラッシュまたはレンダラーの再起動を繰り返しました。 | 終了しません:スパイクごとに独立した通知メッセージになります。 |
source_failed | データソースの更新に失敗した。 | 更新が成功した。 |
source_stale | データソースが失敗を続け、そのデータが期限切れになった。 | 更新が成功した。 |
card_data_stale | 有効期限付きで書き込まれたカードのデータが、スクリーンがそのカードを表示している間に期限に達し、誰も更新しなかった。 | カードのデータへの書き込みが完了した。 |
reach_dropped | スクリーンがタグやフォルダーから外れた、またはアーカイブや削除されたため、キャンペーンの到達数が最後に公開したときより減っています。 | キャンペーンが再び同じ数のスクリーンに到達するか、再度公開されます。 |
group_empty | キャンペーンのオーディエンス内のタグまたはフォルダーに、一致するスクリーンがありません。 | タグまたはフォルダーが再びスクリーンに一致するか、公開によってオーディエンスから外されます。 |
条件は --hold 分(デフォルトは10分)続くと通知されます。そのため、短時間で再接続した場合は通知されません。それより前に終了した場合は何も送信されず、通知メッセージの送信後に終了した場合は、解決済みの通知メッセージが続きます。crashing は即時に送信されます。待機時間中に誰かがそのスクリーンのアラートを確認済みにするかスヌーズした場合や、ミュートがそのスクリーンに適用されている場合も、通知メッセージはスキップされます。--tag は通知をそのタグを持つスクリーンに限定します。指定しない場合は、すべてのスクリーンが対象になります。
各通知には重大度があります。発生通知は、screen_offline では error、それ以外のすべての条件では warning、解決通知とテストは info です。--min-severity LEVEL(info、warning、error)は、そのレベルを下回る発生通知を作成せず、解決通知は対応する発生通知に従います。--severity CONDITION=LEVEL は繰り返し指定でき、この通知について1つの条件のレベルを、たとえば --severity not_playing=error のように設定します。--min-severity の判定に使われ、Teams と PagerDuty が表示する重大度です。メール、Slack、Telegram の本文には重大度が記載され、Webhook の本文には severity が含まれます。
--active-hours SPEC は、必須の --timezone ZONE で解釈される週間ウィンドウ内でのみ、発生通知を送信します。SPEC は DAYS HH:MM-HH:MM(たとえば "Mon-Fri 08:00-22:00")で、最大16回まで繰り返せます。デフォルトの --outside-hours hold では、時間外に送信期限を迎えた通知は次のウィンドウまで待機し、その時点で条件がまだ成り立っていれば送信されるため、先に条件が解消すれば何も送信されません。drop では、通知は outside_hours としてスキップされ、notifications deliveries に一覧されます。送信済みの発生通知に対する解決通知は常に送信され、crashing は他の条件と同様に時間帯に従い、スヌーズが最初に確認され、notifications test は時間帯、重大度、オーディエンスを無視します。
--audience FILE(インライン JSON、ファイル、または標準入力を表す -)は、キャンペーンのオーディエンスのルールでスクリーンを選択します。たとえば、両方のタグを持つスクリーンには {"all":[{"tag":"level2"},{"tag":"overhead"}]} を使います。--all-tags TAG と --any-tag TAG は、タグの all ルールと any ルールの短縮形で、--tag はいずれかのタグを意味します。--tag、--any-tag、--all-tags、--audience は互いに排他です。
loop_stalled、glass_blank、glass_frozen は、screenRIG が受け取った再生レポートとスクリーンショットから導く判定で、判定できないものは対象外です。オフラインの画面、ディスプレイがオフの画面、テイクオーバー中または一時停止中の画面、静止画 1 枚やビデオウォールを表示している画面、再生番号を送らない Player の画面などです。これらの状態にあると判定していた画面を screenRIG が判定しなくなると、アラートは閉じますが、画面が回復した様子が確認されたわけではないため、メール、Slack、Teams、Telegram は解決通知を送りません。PagerDuty は引き続きインシデントを解決します。
source_failed と source_stale はプロジェクトのスクリーンではなくデータソースを監視します。通知にはデータソースの名前とそのページへのリンクが含まれ、--tag がデータソースに一致することはありません。
card_data_stale はスクリーンではなくカードを監視します。カードのデータは、書き込み側のスケジュールに合わせた有効期限を付けて書き込みます (card data put --ttl 30m)。更新するジョブやエージェントが止まると、データは期限切れになり、カードはそれを表示するすべてのスクリーンで空白になり、この条件でお知らせします。通知にはカード名とデータが期限切れになった時刻が含まれ、そのカードを配置したページのページエディターへのリンクが付きます。データソースのドキュメントはここでは通知されません (source_stale が対象です)。どのスクリーンにも表示されていないカード、有効期限なしで書き込まれたデータ、削除されたデータも通知されません。--tag はカードには一致しません。
reach_dropped と group_empty は、スクリーンではなくキャンペーンを監視します。通知には、キャンペーン名と、以前と現在に到達したスクリーン、または空のタグやフォルダーが記載され、キャンペーンのカレンダーへのリンクが付きます。キャンペーンはプロジェクトに属するため、--tag、--any-tag、--all-tags、--audience がこの 2 つを制限することはありません。--min-severity、--severity、--active-hours、--hold は他の条件と同様に適用され、どちらもデフォルトで warning です。--reach-drop-screens N と --reach-drop-percent P は、キャンペーンの公開時に到達していたスクリーンのうち、N 台以上かつ P パーセント以上が減少した場合にのみ reach_dropped 通知を送ります。減少は両方を満たす必要があり、設定がなければどの減少でも通知されます。これらには --conditions の reach_dropped が必要です。キャンペーンの空のタグやフォルダーは 1 つずつ別の通知になり、notifications deliveries では audience_group(tag:Lobby または folder:sfd_…)として表示されます。空のグループをオーディエンスから外す公開を行うと、PagerDuty のインシデントと Webhook のアラートはクローズされますが、復旧メールやチャットメッセージは送信されません。
メールは各受信者の検証済みアドレスに送信されます。約2分以内に送信対象となったものは、受信者ごとに1通にまとめられ、各スクリーンへのリンクとダッシュボード内の通知へのリンクが付きます。受信者は owner(通知メッセージの送信時にプロジェクトを所有している人)と、プロジェクトメンバーのユーザーIDです。検証済みアドレスがない受信者や、プロジェクトを離れた受信者はスキップされます。通知メールとスクリーン通知メッセージは無料です。
各メールには、その受信者専用の配信停止リンクがあります。メールアプリの配信停止ボタンと、フッターのリンクです。このリンクを開いて操作すると、その通知のメールがその 1 人にだけ届かなくなります。サインインは不要で、開いたページには Resubscribe ボタンがあります。ほかの受信者には影響せず、その人は受信者に残ります。notifications show は unsubscribed で配信を停止した人を表示し、notifications resubscribe はその人にメールを再開します。メールを送る相手がいない通知は no_recipients としてスキップされます。
Webhook通知は各通知メッセージをJSONとしてPOSTします。検証は 配信を検証 の説明に従って行います。--events を指定すると、生のプロジェクトイベントも発生と同時にPOSTします。これらの配信は Webhook の説明に従って計測されます。
Slack、Teams、PagerDuty、Telegram の通知は、障害ごと、画面ごとに 1 件のメッセージを投稿します。内容は、画面、変更内容、開始時刻、プロジェクト、画面へのリンク、そしてオフラインだった画面が復帰したときは、その時点で分かっていれば推定原因です。最初のメッセージが送信されると復旧メッセージが続き、PagerDuty では最初のメッセージが開いたインシデントを解決します。認証情報は 1 回だけ指定します(--slack は受信 Webhook の URL、--teams は Workflows Webhook の URL、--pagerduty は Events API v2 のルーティングキー、--telegram はボットトークンと --telegram-chat を受け取ります)。認証情報は封印されて二度と表示されず、destination_hint にはマスクされた末尾だけが表示されます。- を指定すると stdin の 1 行から読み取るため、シェルの履歴に残りません。投稿に失敗した場合は 24 時間再試行され、72 時間失敗し続けた通知は無効になります。
| 問題コード | 終了 | 意味 |
|---|---|---|
webhook_url_rejected | 8 | URL がポート 443 または 8443 の https でないか、ホストがパブリックインターネットアドレスのみに解決しません。error.detail にサーバーの理由があります。何も作成または変更されません。 |
notification_destination_rejected | 8 | 送信先がチャネルに合っていないか、廃止された Office 365 コネクタの URL です。error.detail に合う形式が示されます。何も作成・変更されていません。 |
notification_limit_reached | 5 | 組織にはすでに50個の通知があります。まず1つ削除してください。 |
revision_conflict | 6 | --expect-revリビジョンは古くなっていました。notifications showを実行してから再試行してください。 |
rate_limited | 7 | この組織で1分間に20回以上の notifications test 呼び出し。 |
notifications create#
メール、Webhook、Slack、Teams、PagerDuty、Telegram の通知を作成します。
notifications create (--email RECIPIENTS | --webhook URL | --slack URL | --teams URL | --pagerduty KEY
| --telegram TOKEN --telegram-chat CHAT_ID) [--conditions LIST] [--events TYPES]
[--tag TAG... | --any-tag TAG... | --all-tags TAG... | --audience FILE] [--hold MINUTES]
[--min-severity LEVEL] [--severity CONDITION=LEVEL]... [--active-hours SPEC]...
[--timezone ZONE] [--outside-hours hold|drop] [--reach-drop-screens N] [--reach-drop-percent P]
[--description TEXT] [--disabled]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
--email RECIPIENTS | string | チャネルフラグ 1 つ | なし | これらのカンマ区切りの受信者にメールを送信します:owner、またはプロジェクトメンバーのユーザーID、最大20件。 |
--webhook URL | string | チャネルフラグ 1 つ | なし | ポート 443(デフォルト)または 8443 の https URL で、ホストはパブリックインターネットアドレスのみに解決されます。サーバーは書き込み時と配信前に毎回チェックします。認証情報を含む URL(user:pass@ または token@)や # フラグメントはローカルで拒否され、終了コード 2 となります。 |
--conditions LIST | string | はい(Webhook を除く) | なし | 上の表にあるカンマ区切りの条件。Webhookにはこれか--events、またはその両方が必要です。 |
--slack URL | string | チャネルフラグ 1 つ | なし | hooks.slack.com の受信 Webhook の URL で Slack に投稿します。- を指定すると stdin の 1 行から読み取ります。 |
--teams URL | string | チャネルフラグ 1 つ | なし | Workflows Webhook の URL(トリガー「Teams Webhook 要求の受信時」)で Teams に投稿します。- を指定すると stdin から読み取ります。Office 365 コネクタの URL は廃止されており、拒否されます。 |
--pagerduty KEY | string | チャネルフラグ 1 つ | なし | Events API v2 のルーティングキーで PagerDuty のインシデントを発生させて解決します。- を指定すると stdin から読み取ります。 |
--telegram TOKEN | string | チャネルフラグ 1 つ | なし | ボットトークンで Telegram に投稿します。- を指定すると stdin から読み取ります。--telegram-chat が必要です。 |
--telegram-chat CHAT_ID | string | --telegram とともに | なし | 投稿先のチャット: 数値の ID(例: -1001234567890)、または @channelname。 |
--events TYPES | string | いいえ | なし | Webhookのみ。これらの生のプロジェクトイベントもPOSTします:1~32のカンマ区切りの正確なタイプ(例:screen.online)、または.*で終わるプレフィックス(例:screen.*)。 |
--tag TAG | string | いいえ | すべてのスクリーン | このタグを持つスクリーンのみ。フラグを繰り返すかカンマで区切って、最大16個のタグを指定できます。 |
--hold MINUTES | integer | いいえ | 10 | 条件が通知されるまでに継続しなければならない時間、0から1440まで。crashingは待機しません。 |
--all-tags TAG | string | いいえ | なし | リストされたすべてのタグを持つスクリーンのみ。フラグを繰り返すか、カンマで区切ります。 |
--any-tag TAG | string | いいえ | なし | --tag のように、リストされたタグを少なくとも1つ持つスクリーンのみ。フラグを繰り返すか、カンマで区切ります。 |
--audience FILE | string | いいえ | すべてのスクリーン | JSON のキャンペーンオーディエンスルールとしてのスクリーン。インライン、ファイル、または標準入力を表す -。タグオプションとは併用できません。 |
--min-severity LEVEL | string | いいえ | なし | info、warning、error:これを下回る発生通知は送信されません。 |
--severity CONDITION=LEVEL | string | いいえ | デフォルト | この通知について1つの条件の重大度を設定します。フラグを繰り返してください。 |
--active-hours SPEC | string | いいえ | 常時 | この週間ウィンドウ内でのみ発生通知を送信します。DAYS HH:MM-HH:MM は "Mon-Fri 08:00-22:00" のように指定します。最大16回まで繰り返せます。--timezone が必要です。 |
--timezone ZONE | string | --active-hours とともに | なし | 時間帯を解釈する IANA ゾーン。たとえば America/Los_Angeles。 |
--outside-hours MODE | string | いいえ | hold | hold は次のウィンドウまで待機し、drop は通知をスキップします。 |
--reach-drop-screens N | integer | いいえ | どの減少でも | reach_dropped がある場合のみ: キャンペーンが N 台以上 (1 以上) のスクリーンを失ったときにだけ通知を送ります。 |
--reach-drop-percent P | integer | いいえ | どの減少でも | reach_dropped がある場合のみ: キャンペーンの公開時に到達していたスクリーンのうち、P パーセント (1〜100) 以上を失っていることも条件にします。 |
--description TEXT | string | いいえ | なし | 最大200文字。 |
--stale-after DURATION | string | いいえ | 種類による | データソースが更新できないとき、カードが最後の正常なデータを保持する期間。1m から 7d までで、--refresh の 2 倍以上にします。none は次の更新まで保持します。その後、データはすべてのスクリーンで期限切れになります。momentus の既定は 30m です。 |
--disabled | boolean | いいえ | オフ | 無効状態で作成。notifications update --enableまで何も送信されません。 |
screenrig notifications create --email owner --conditions screen_offline,display_disconnected --tag Lobbyscreenrig notifications create --webhook https://hooks.example.com/screenrig --conditions screen_offline,crashingscreenrig notifications create --slack - --conditions screen_offline,crashing < slack-url.txtエンベロープは通知です。Webhook通知のエンベロープは、署名シークレットをdata.secret(whsec_…)に、警告をwebhook_secret_shown_onceに含みます。受信側のシークレットストアにすぐ保存してください。再び返すのはnotifications rotate-secretだけで、CLIは設定、操作ログ、書き込み復旧状態にこれを書き込みません。中断またはあいまいな作成の後は、24時間以内に同じコマンドを再実行してください。保存された冪等キーが再利用され、サーバーはシークレットを含む同じ回答を返します。通知メッセージは、通知の作成後の最初のイベントから始まります。
notifications list#
このプロジェクトの通知一覧(シークレットは除く)
notifications listscreenrig notifications listManageアクセス未満では、Webhookのurlは空で、url_redactedはtrueです。
notifications show#
通知とその配信状態を検査。
notifications show <id>| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | 通知 ID は ntf_(Webhook 以外のすべてのチャネル)または whk_(Webhook)です。 |
screenrig notifications show ntf_01EXAMPLENOTICE00000status は active、failing_since 以降配信が成功していない場合の failing、または disabled です。72時間連続で失敗すると通知は disabled_reason: delivery_failures で無効化され、イベントログには notification.disabled が記録されます。snoozed_until はスヌーズが設定されている間、存在します。last_success_at と last_failure_at で最新の結果を確認できます。
notifications update#
通知の宛先、URL、送信先、条件、画面、保留時間、スヌーズ、有効状態を変更します。
notifications update <id> [--email RECIPIENTS | --url URL | --destination VALUE] [--telegram-chat CHAT_ID]
[--conditions LIST | --clear-conditions]
[--events TYPES | --clear-events] [--tag TAG... | --any-tag TAG... | --all-tags TAG... | --audience FILE | --all-screens]
[--hold MINUTES] [--min-severity LEVEL | --clear-min-severity]
[--severity CONDITION=LEVEL]... [--clear-severity]
[--active-hours SPEC]... [--timezone ZONE] [--outside-hours hold|drop] [--clear-active-hours]
[--reach-drop-screens N] [--reach-drop-percent P] [--clear-reach-drop]
[--description TEXT | --clear-description] [--enable | --disable]
[--snooze WHEN] [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | 通知 ID は ntf_(Webhook 以外のすべてのチャネル)または whk_(Webhook)です。 |
--email RECIPIENTS | string | 少なくとも1つの変更 | 変更なし | メール通知:受信者を置き換えます。 |
--url URL | string | 少なくとも1つの変更 | 変更なし | Webhook通知:URLを置き換えます。createと同様にチェックされます。 |
--destination VALUE | string | 少なくとも1つの変更 | 変更なし | Slack、Teams、PagerDuty、Telegram の通知: 認証情報を置き換えます。create と同じ検査が行われます。- を指定すると stdin の 1 行から読み取ります。 |
--telegram-chat CHAT_ID | string | 少なくとも1つの変更 | 変更なし | Telegram の通知: チャットを置き換えます。 |
--conditions LIST | string | 少なくとも1つの変更 | 変更なし | 条件を置き換えます。 |
--clear-conditions | boolean | 少なくとも1つの変更 | オフ | すべての条件を削除します。その場合、Webhookには--eventsが必要です。 |
--events TYPES | string | 少なくとも1つの変更 | 変更なし | Webhook通知:生のプロジェクトイベントを置き換えます。 |
--clear-events | boolean | 少なくとも1つの変更 | オフ | Webhook通知:生のプロジェクトイベントのPOSTを停止します。その場合、条件が必要になります。 |
--tag TAG | string | 少なくとも1つの変更 | 変更なし | スクリーンタグを置き換えます。 |
--all-screens | boolean | 少なくとも1つの変更 | オフ | スクリーンタグとオーディエンスを削除します。この通知はすべてのスクリーンを対象にします。 |
--hold MINUTES | integer | 少なくとも1つの変更 | 変更なし | 0から1440まで。 |
--all-tags TAG | string | 少なくとも1つの変更 | 変更なし | リストされたすべてのタグを持つスクリーンで置き換えます。 |
--any-tag TAG | string | 少なくとも1つの変更 | 変更なし | --tag のように、リストされたタグを少なくとも1つ持つスクリーンで置き換えます。 |
--audience FILE | string | 少なくとも1つの変更 | 変更なし | スクリーンを、JSON のキャンペーンオーディエンスルールで置き換えます。インライン、ファイル、または標準入力を表す -。 |
--min-severity LEVEL | string | 少なくとも1つの変更 | 変更なし | info、warning、または error。 |
--clear-min-severity | boolean | 少なくとも1つの変更 | オフ | 重大度フィルターを削除します。 |
--severity CONDITION=LEVEL | string | 少なくとも1つの変更 | 変更なし | 重大度の上書きをこれらで置き換えます。フラグを繰り返してください。 |
--clear-severity | boolean | 少なくとも1つの変更 | オフ | すべての重大度の上書きを削除します。 |
--active-hours SPEC | string | 少なくとも1つの変更 | 変更なし | ウィンドウをこれらで置き換えます。最大16回まで繰り返せます。--timezone のデフォルトは、通知がすでに持っているゾーンです。 |
--timezone ZONE | string | 少なくとも1つの変更 | 変更なし | 時間帯を解釈する IANA ゾーン。単独の場合は現在のウィンドウを保持します。 |
--outside-hours MODE | string | 少なくとも1つの変更 | 変更なし | hold または drop。単独の場合は現在のウィンドウを保持します。 |
--clear-active-hours | boolean | 少なくとも1つの変更 | オフ | アクティブ時間を削除します。それによって保留されていた通知は直ちに再判定されます。 |
--reach-drop-screens N | integer | 少なくとも1つの変更 | 変更なし | reach_dropped 通知がキャンペーンに必要とする、失ったスクリーンの最小数を置き換えます。 |
--reach-drop-percent P | integer | 少なくとも1つの変更 | 変更なし | キャンペーンが失っているべき、公開時の到達数に対する最小の割合を置き換えます。 |
--clear-reach-drop | boolean | 少なくとも1つの変更 | オフ | しきい値を削除し、どの減少でも通知されるようにします。--conditions から reach_dropped を外すのは、これと同時に行う場合に限られます。 |
--description TEXT | string | 少なくとも1つの変更 | 変更なし | 最大200文字。 |
--clear-description | boolean | 少なくとも1つの変更 | オフ | 説明を削除 |
--enable | boolean | 少なくとも1つの変更 | オフ | 障害状態をクリアし、変更を記録するイベントから開始します。無効だった間に発生したものは何も送信されません。 |
--disable | boolean | 少なくとも1つの変更 | オフ | 通知メッセージの送信を停止します。保留中の通知メッセージは webhook_disabled で失敗します。 |
--snooze WHEN | string | 少なくとも1つの変更 | 変更なし | それまで何も送信しません:30m、1h、2d などの期間(30日未満)、秒とオフセットを含むRFC 3339の瞬間、またはスヌーズを終了する off。その間に送信時刻を迎えた通知メッセージはスキップされ、後から送信されることはありません。 |
--expect-rev REVISION | string | いいえ | なし | オプションのリビジョン前提条件。 |
screenrig notifications update ntf_01EXAMPLENOTICE00000 --snooze 2hupdate は指定したフィールドのみを変更します。チャネルは変更されません。
notifications delete#
通知を削除します。保留中の通知メッセージはwebhook_deletedで失敗します。
notifications delete <id> [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | 通知 ID は ntf_(Webhook 以外のすべてのチャネル)または whk_(Webhook)です。 |
--expect-rev REVISION | string | いいえ | なし | オプションのリビジョン前提条件。 |
screenrig notifications delete ntf_01EXAMPLENOTICE00000notifications rotate-secret#
Webhook 通知の署名シークレットを置き換え、新しいシークレットを 1 回だけ受け取ります。ほかのチャネルにシークレットはありません。
notifications rotate-secret <id> [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | 通知 ID は ntf_(Webhook 以外のすべてのチャネル)または whk_(Webhook)です。 |
--expect-rev REVISION | string | いいえ | なし | オプションのリビジョン前提条件。 |
screenrig notifications rotate-secret whk_01EXAMPLEWEBHOOK00000エンベロープは警告webhook_secret_shown_once付きで新しいシークレットをdata.secretに運びます。すぐに保存してください。以前のシークレットは署名を停止しますが、最大で1回の進行中の試行はまだそれで署名されて到着する可能性があるため、短期間は両方を受け入れてください。中断またはあいまいなローテーション後は、24時間以内に同じコマンドを再実行すると同じシークレットが戻ります。
notifications test#
この通知だけにテストメール、署名付きテスト POST、またはチャットメッセージを送ります。
notifications test <id>| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | 通知 ID は ntf_(Webhook 以外のすべてのチャネル)または whk_(Webhook)です。 |
screenrig notifications test ntf_01EXAMPLENOTICE00000エンベロープはキューに入った配信です。リトライなしで1回試行され、無効またはスヌーズ中の通知でも動作し、通知の失敗状態は変更しません。組織ごとに1分あたり最大20回のテスト配信。超過はrate_limited(終了コード7)。結果はnotifications deliveriesで読み取ります。
PagerDuty のテストは、キー screenrig:test:DELIVERY_ID の情報イベントを発生させてすぐに解決するため、開いたままのインシデントは残りません。
notifications resubscribe#
通知のメールの配信を停止した人に、再びメールを送ります。
notifications resubscribe <id> --user USER_ID| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | メール通知の ntf_ ID。 |
--user USER_ID | string | はい | なし | notifications show が unsubscribed に表示する、その人のユーザーID。 |
screenrig notifications resubscribe ntf_01EXAMPLENOTICE00000 --user usr_01EXAMPLEPERSON0000エンベロープは通知です。配信を停止していない人を指定しても何も変わりません。人を再購読すると、リビジョンが上がり、notification.updated が追加されます。別のチャンネルまたは別のプロジェクトの通知は not_found です(終了コード 4)。
notifications deliveries#
通知の配信ログを新しい順に読み取ります。
notifications deliveries <id> [--before CURSOR] [--limit N]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | 通知 ID は ntf_(Webhook 以外のすべてのチャネル)または whk_(Webhook)です。 |
--before CURSOR | string | いいえ | 最新のイベント | 前のページのnext_cursor(whc1_…) |
--limit N | integer | いいえ | 50 | ページあたりの行数、1から200。 |
screenrig notifications deliveries ntf_01EXAMPLENOTICE00000 --limit 20各行は1件のイベント、または1つのスクリーンの1つの条件に関する通知メッセージ1件です:event_type、state(pending、succeeded、failed、またはskipped)、attempts、last_status、そしてhttp_status、timeout、connection_failed、tls_failed、dns_failed、url_rejected、email_failed、またはemail_rejectedのような固定のlast_errorクラス。スクリーン通知メッセージにはcondition、phase(openedまたはresolved)、screen_id、screen_name、sinceが加わり、メール通知メッセージには到達した人数であるemailedが加わります。送信する必要がなかった通知メッセージはskippedとなり、その理由はlast_errorにあります:condition_cleared(待機時間が終わる前にスクリーンがその状態でなくなった)、not_opened(解決する通知メッセージが送信されていない)、snoozed(通知がスヌーズ中)、acknowledged(待機時間中に誰かがスクリーンのアラートを確認済みにするかスヌーズした)、muted(ミュートがスクリーンに適用されている)、no_recipients(配信を停止していない、検証済みアドレスを持つプロジェクトメンバーの受信者がいない)、grouped(画面がほかの画面と同時にこの状態になり、別の行の 1 件の通知がそれらをまとめて伝えた)、またはno_longer_judged(loop_stalled、glass_blank、glass_frozen のいずれかの条件が、screenRIG がその画面の判定をやめたために終了し、回復は通知されなかった)。グループをまとめて伝えた通知には group(id、attribute、value、count)が付き、グループのほかの各画面には group_id が付きます。--human は両方を GROUP 列に表示します。行に受信側の応答は含まれません。next_cursorはログの最後でnullとなります。失敗した試行は、30秒から1時間まで倍増するバックオフで24時間再試行され、その後その行はfailedとなります。
配信を検証
スクリーン通知メッセージの本文は JSON です:type(alert.opened または alert.resolved)、id(配信ID)、notification_id、project_id、condition、screen(id と name)、since(条件が始まった時刻)、at(待機時間を満たした時刻、または解消した時刻)、event_id。--events からの生のイベントは、events list が返すものと同じ JSON オブジェクトです。ヘッダーは ScreenRig-Webhook-Id(通知ID)、ScreenRig-Event-Id(リトライ間で安定:通知メッセージでは配信ID、イベントではイベントカーソル)、ScreenRig-Signature: t=<unix seconds>,v1=<hex> で、v1 は "<t>.<raw body>" に対する HMAC-SHA256 でシークレット文字列をキーにしています。JSON を解析する前に生のバイトで計算し、定数時間で比較し、古い t を拒否し、ScreenRig-Event-Id で重複排除します。これは、配信が少なくとも1回で順不同のためです。10秒以内に 2xx で応答し、リダイレクトは追いません。
import { createHmac, timingSafeEqual } from "node:crypto";
// rawBody: the request body bytes (Buffer) exactly as received.
function verify(rawBody, signatureHeader, secret, toleranceSeconds = 300) {
if (typeof signatureHeader !== "string" || !signatureHeader) return false;
const parts = Object.fromEntries(signatureHeader.split(",").map((part) => part.split("=", 2)));
const t = Number(parts.t);
if (!Number.isInteger(t) || Math.abs(Date.now() / 1000 - t) > toleranceSeconds) return false;
const expected = createHmac("sha256", secret).update(`${t}.`).update(rawBody).digest();
const given = Buffer.from(parts.v1 ?? "", "hex");
return given.length === expected.length && timingSafeEqual(given, expected);
}レポート
reports show KIND はレポート(fleet_health、uptime、publishing、alerts、alert_log、proof_of_play)を作成し、--format csv、xlsx、pdf と --output FILE を付けるとファイルに書き出します。reports subscriptions はスケジュールに従ってレポートをプロジェクトのメンバーにメールで送り、project export DIR は各セクションの結果とともにプロジェクトのデータを書き出します。 レポートとエクスポートにあります。
監査ログ
audit list|show|head|verify|export はプロジェクトの監査ログを読み取ります。audit list は操作者、ソース、リソース、アクション、フィールドで設定変更を検索し、audit show は変更された各フィールドの変更前と変更後とともに 1 件のエントリを表示し、audit head はアンカーとして保管するチェーンの先頭を表示し、audit verify はチェーンを再計算し(必要に応じてアンカーと照合し)、検証できない場合は終了コード 13 で終了し、audit export は絞り込んだログを CSV、XLSX、PDF ファイルに書き出します。それぞれの詳細は監査ログをご覧ください。
アラート
アラートは、1つのスクリーンで続いている1つの問題です。crashing 以外の通知の条件にスクリーンが入ると、通知が監視しているかどうかにかかわらずアラートが発生し、条件が終了すると解決されます。スクリーンには条件ごとに最大1件の未解決アラートがあり、クラッシュの急増は通知メッセージであり、アラートにはなりません。alerts list で現在未解決のものを確認できます。
未解決のアラートは、誰かが確認済みにするかスヌーズするか、ミュートがそのスクリーンに適用されるまで、対応が必要な状態です。確認済みにすると、誰かが対応中であることを示します。アラートは未解決のままですが、誰がいつ確認したかが記録され、解決するまで対応は不要になります。スヌーズは最長30日先までの時刻まで確認済みにすることで、その時刻にアラートがまだ未解決なら再び対応が必要になります。後から行った確認やスヌーズは、前のものを置き換えます。アラートが確認済みまたはスヌーズ中の間は、そのアラートに関する通知のうち待機時間中の通知メッセージはスキップされます。
ミュートはメンテナンス用です。スクリーン、タグ、またはその両方を指定し、最長30日先までの時刻で終了します。ミュートは、スクリーンのIDが指定されているか、指定されたタグを持っている間、そのスクリーンに適用されます。そのため、後からタグを付けたスクリーンも対象になり、タグを外したスクリーンは対象外になります。ミュート中のスクリーンのアラートも発生・解決されますが、muted と表示され、対応が必要になることはなく、すべての通知がそのアラートの通知メッセージをスキップします。1つの組織で有効なミュートは、すべてのプロジェクトを合わせて最大50件です。
alerts list の counts.attention は、ダッシュボードがアラートの横に表示する数です。アラートの発生・解決・確認では screen.alert_opened、screen.alert_resolved、screen.alert_acknowledged が、ミュートの作成・終了では alert_mute.created、alert_mute.deleted がプロジェクトのイベントログに追加されます。すべての screen.* イベントと同様に、これらはリッスンストリームで無料です。解決済みのアラートは、プランのイベント保持期間の間、一覧に残ります。アラートとミュートの閲覧には閲覧のみのアクセスが必要で、確認済みにする・スヌーズ・ミュート・ミュート解除には管理アクセスが必要です。
| 問題コード | 終了 | 意味 |
|---|---|---|
alert_not_open | 5 | アラートはすでに解決済みのため、確認済みにもスヌーズにもできません。alerts list を実行し、未解決のものを使ってください。 |
alert_mute_limit_reached | 5 | 組織にはすでに有効なミュートが50件あります。alerts unmute で1件終了するか、タグで1件のミュートにより多くのスクリーンを含めてください。 |
invalid_request | 8 | --until の時刻が30日より先です。何も変更されていません。 |
not_found | 4 | このIDのアラートまたはミュートは、プロジェクトにありません。解決済みのアラートはプランのイベント保持期間を過ぎると、ミュートは終了すると見つからなくなります。 |
alerts list#
このプロジェクトのアラートを、未解決のものを先に一覧表示します。
alerts list [--state open|resolved|all] [--screen-id ID] [--before CURSOR] [--limit N]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
--state STATE | string | いいえ | open | open、resolved、または all。 |
--screen-id ID | string | いいえ | すべてのスクリーン | このスクリーンのアラートのみ。 |
--before CURSOR | string | いいえ | 最初のページ | 前のページのnext_cursor |
--limit N | integer | いいえ | 100 | ページあたりの行数、1から200。 |
screenrig alerts listscreenrig alerts list --state all --screen-id scr_01EXAMPLESCREEN00000000各行は1件のアラートです:id(alr_…)、screen_id、screen_name、condition、state(open または resolved)、since(条件が始まった時刻)、解決後は resolved_at、確認済みの場合は acknowledged_at と acknowledged_by(kind、id、name は担当した人またはエージェントのもの)、スヌーズ中は snoozed_until、そして muted と attention。未解決のアラートが先に、新しい順に並びます。counts には、ページやフィルターに関係なくプロジェクト全体の open と attention が入り、next_cursor は最後で null になります。
alerts show#
アラートを1件表示します。
alerts show <id>| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | alr_アラートID |
screenrig alerts show alr_01EXAMPLEALERT000000エンベロープはアラートで、alerts list の行と同じ形式です。
alerts ack#
未解決のアラートを確認済みにします。誰かが対応中です。
alerts ack <id>| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | alr_アラートID |
screenrig alerts ack alr_01EXAMPLEALERT000000アラートは未解決のまま残り、解決するまで対応は不要になります。acknowledged_by は担当した人またはエージェントを、acknowledged_at は時刻を示します。待機時間中の通知の通知メッセージはスキップされます。もう一度確認済みにすると、前の確認やスヌーズが置き換えられます。解決済みのアラートは alert_not_open(終了コード 5)になります。エンベロープはアラートで、イベントログには screen.alert_acknowledged が記録されます。
alerts snooze#
未解決のアラートを指定した時刻まで確認済みにし、その時刻に再び対応が必要になるようにします。
alerts snooze <id> (--for DURATION | --until TIME)| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | alr_アラートID |
--for DURATION | 期間 | --for、--until のいずれか | なし | 今からスヌーズする時間:30m、4h、2d などの期間。最大 29d23h59m。 |
--until TIME | string | --for、--until のいずれか | なし | スヌーズの終了時刻:2026-11-01T09:00:00-07:00 のような、秒とオフセットを含むRFC 3339の瞬間。最大30日先まで。 |
screenrig alerts snooze alr_01EXAMPLEALERT000000 --for 4hsnoozed_until はスヌーズが終了する時刻です。それまでアラートは対応不要で、待機時間中の通知の通知メッセージは alerts ack と同様にスキップされます。その時刻にアラートがまだ未解決なら、再び対応が必要になります。解決済みのアラートは alert_not_open(終了コード 5)になります。
alerts mute#
メンテナンスのためにスクリーンをミュートします。
alerts mute [--screen-id ID]... [--tag TAG]... (--for DURATION | --until TIME) [--note TEXT]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
--screen-id ID | string | --screen-id、--tag のうち少なくとも1つ | なし | scr_ スクリーンIDです。同じIDを繰り返すか、カンマ区切りで複数指定できます(最大100件)。 |
--tag TAG | string | --screen-id、--tag のうち少なくとも1つ | なし | このタグを持つすべてのスクリーン。繰り返すか、カンマ区切りでタグを列挙してください。最大16個まで。 |
--for DURATION | 期間 | --for、--until のいずれか | なし | 今からミュートが続く時間:30m、4h、2d などの期間。最大 29d23h59m。 |
--until TIME | string | --for、--until のいずれか | なし | ミュートの終了時刻:2026-11-01T09:00:00-07:00 のような、秒とオフセットを含むRFC 3339の瞬間。最大30日先まで。 |
--note TEXT | string | いいえ | なし | スクリーンをミュートする理由。ミュートを見る人向け。最大200文字。 |
screenrig alerts mute --tag Lobby --for 2h --note "Rewiring the lobby displays"エンベロープはミュートです:id(amt_…)、screen_ids、tags、until、note、created_by、created_at。対象となるすべてのスクリーンのアラートは、すでに未解決のものを含め、ただちに muted と表示されます。1つの組織で有効なミュートは、すべてのプロジェクトを合わせて最大50件で、それを超えると alert_mute_limit_reached(終了コード 5)になります。終了したミュートは数に含まれません。中断または結果が不明なミュートの後は、まず alerts mutes を確認してください。--until を付けた同じコマンドを24時間以内に再実行すると同じミュートが返りますが、--for を付けて再実行すると新しい時刻から数え直され、別のミュートが作成されます。
alerts mutes#
終了していないミュートを、終了が早い順に一覧表示します。
alerts mutesscreenrig alerts mutes各行は、alerts mute が出力するミュートです。
alerts unmute#
ミュートを今すぐ終了します。
alerts unmute <mute-id>| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<mute-id> | string | はい | なし | amt_ミュートID |
screenrig alerts unmute amt_01EXAMPLEMUTE0000000それらのスクリーンの未解決アラートは再び対応が必要になり、以降の通知メッセージはミュートを理由にスキップされなくなります。終了したミュートは not_found(終了コード 4)になります。イベントログには alert_mute.deleted が記録されます。
Webhook
Webhook はこのプロジェクト自身のイベントを署名付きPOSTとして運用中のHTTPSエンドポイントに送信するため、一致するイベントでエージェント、ボット、または独自サービスを起動できます。一致する各イベントは、events list が返すものと同じJSONオブジェクトとして到着します。Webhook は元の形の 通知 です。組織の通知上限50件に含まれ、notifications list に表示されます。新しい作業には、メールとスクリーン通知メッセージも送信する notifications を使用します。
各配信試行は、請求対象のリッスンストリームイベントと同様に計測されます:月間10,000件のAPIおよびリッスンストリーム枠を超えると1クレジット消費します。リッスンストリームで無料のイベントは、ここでも無料です:screen.*、runtime.*、application.event、playback.page_failed、agent.command。何も送信される前に拒否された試行は請求されません。
webhooks create --url URL --event-types TYPES [--description TEXT] [--disabled]
webhooks list
webhooks show <id>
webhooks update <id> [--url URL] [--event-types TYPES] [--description TEXT | --clear-description]
[--enable | --disable] [--expect-rev REVISION]
webhooks delete <id> [--expect-rev REVISION]
webhooks rotate-secret <id> [--expect-rev REVISION]
webhooks test <id>
webhooks deliveries <id> [--before CURSOR] [--limit N]組織にすでに50個の通知がある場合、webhooks create は webhook_limit_reached(終了コード5)で応答し、notifications create は notification_limit_reached で応答します。拒否されたURLは、どちらも webhook_url_rejected(終了コード8)です。
フリートリンク
フリートリンクは、Google管理コンソールのキオスクアプリなどのデバイスマネージャーに設定するPlayer URLです。これを開くすべてのデバイスはペアリングコードなしでこのプロジェクト内の独自のスクリーンになります。組織には、すべてのプロジェクトを合わせて最大50のフリートリンクがあります。
新しいスクリーンにはリンクのタグとプレイリスト、デバイスからのラベル(管理者資産ID、次にロケーション)、それ以外は次のデフォルトラベルが付きます。デバイスは再読み込みや再起動後も同じスクリーンを保持します。パワーウォッシュや再インストール後、このプロジェクトのフリートリンクで作成されたスクリーンのシリアルまたは DUID を報告するデバイスは、古いキーが10分間無反応の場合、そのスクリーンを復元し新たに作成しません。screen show はフリートリンクで作成されたスクリーンに fleet_link_id を返し、--human は Created by fleet link: flk_… を表示します。リンク削除後もIDは維持されます。
URL https://play.screenrig.ai/player/#fleet=srfl_… はスクリーンを作成する認証情報です。デバイス管理者のみに渡してください。シークレットは URL フラグメントにあり、ブラウザはサーバーに送信しません。読み取り専用認証情報は data.url 空で url_redacted: true を受け取り、その後人間向け出力は URL: withheld from a Read only credential と表示します。そうでなければ人間向け出力は Sensitive fleet link URL ラベルの下に URL を表示し、fleet-links list --human は決して表示しません。CLI は表示前に URL をチェックします:HTTPS、/player/ パス、シークレットは #fleet= のみ。チェックに失敗した URL は警告 fleet_link_url_withheld と共に表示を控え、フリートリンクの回答を操作ログに残しません。
| 問題コード | 終了 | 意味 |
|---|---|---|
fleet_link_limit_reached | 5 | 組織にはすでに50個のフリートリンクがあります。作成されませんでした。まず1つ削除してください。 |
invalid_request | 8 | フィールドが拒否されました。例えば、このプロジェクトでプレイリスト名がない--playlist-idです。error.nextは不明なプレイリストのためplaylist listです。 |
not_found | 4 | このIDのフリートリンクはプロジェクトにありません。 |
revision_conflict | 6 | --expect-revリビジョンは古くなっていました。fleet-links showを実行してから再試行してください。 |
fleet-links create#
フリートリンクを作成し、そのPlayer URLを受け取る。
fleet-links create --name NAME [--tag TAG]... [--playlist-id ID] [--max-screens N] [--disabled]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
--name NAME | string | はい | なし | リンクの名前、制御文字なしで1~80文字。 |
--tag TAG | string | いいえ | タグなし | 新しいスクリーンごとのタグ。1~32文字の英数字。繰り返し可能、またはカンマ区切りで最大16個。 |
--playlist-id ID | string | いいえ | なし | 新しいスクリーンに割り当てられたpl_プレイリスト |
--max-screens N | integer | いいえ | 制限なし | リンクが作成する最大スクリーン数、1~10000。 |
--disabled | boolean | いいえ | オフ | 無効状態で作成。fleet-links update --enableまでスクリーンは作成されません。 |
screenrig fleet-links create --name "Lobby displays" --tag Lobby --tag Floor2 --playlist-id pl_01EXAMPLEPLAYLIST000000エンベロープはプレーヤーURLを含むフリートリンクです。data.urlにそのURLを入れてください。中断またはあいまいな作成後は24時間以内に同じコマンドを再実行してください。保存された冪等キーを再利用し、サーバーは別のリンクを作成せず同じリンクを返します。
fleet-links list#
このプロジェクトのフリートリンクを古い順に一覧表示
fleet-links listscreenrig fleet-links list読み取り専用の認証情報は、各 data.items[].url を url_redacted: true で空として受け取ります。--human は ID, LABEL, ENABLED, SCREENS, TAGS, LAST_USED を出力し、URL は出力しません。SCREENS はリンクで作成されたスクリーンの数、または --max-screens で作成数/最大数を示します。リカバリーはカウントされません。
fleet-links show#
フリートリンクを検査し、そのPlayer URLを受け取る。
fleet-links show <id>| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | flk_フリートリンクID |
screenrig fleet-links show flk_01EXAMPLELINK0000screens_created はこのリンクで作成されたスクリーンの数をカウントし、last_used_at は最後に作成または復元された時刻です。
fleet-links update#
フリートリンクが今後作成するスクリーンに提供する内容を変更。
fleet-links update <id> [--name NAME] [--enable | --disable] [--tag TAG]... [--clear-tags]
[--playlist-id ID | --clear-playlist] [--max-screens N | --clear-max-screens]
[--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | flk_フリートリンクID |
--name NAME | string | 少なくとも1つの変更 | 変更なし | 1~80文字。 |
--enable | boolean | 少なくとも1つの変更 | オフ | リンクは再びスクリーンを作成・回復します。 |
--disable | boolean | 少なくとも1つの変更 | オフ | リンクはスクリーンを作成・回復しません;開いたデバイスは代わりにペアリングコードを表示します。 |
--tag TAG | string | 少なくとも1つの変更 | 変更なし | タグセット全体を置き換えます。繰り返すか、カンマ区切りでタグを列挙してください。最大16個まで。 |
--clear-tags | boolean | 少なくとも1つの変更 | オフ | 新しいスクリーンにはタグがありません。 |
--playlist-id ID | string | 少なくとも1つの変更 | 変更なし | 新しいスクリーン用のpl_プレイリスト |
--clear-playlist | boolean | 少なくとも1つの変更 | オフ | 新しいスクリーンにはプレイリストがありません。 |
--max-screens N | integer | 少なくとも1つの変更 | 変更なし | リンクが作成する最大スクリーン数、1~10000。 |
--clear-max-screens | boolean | 少なくとも1つの変更 | オフ | 上限を解除します。 |
--expect-rev REVISION | string | いいえ | なし | オプションのリビジョン前提条件。 |
screenrig fleet-links update flk_01EXAMPLELINK0000 --playlist-id pl_01EXAMPLEPLAYLIST000000update は指定したフィールドのみを変更し、今後このリンクから作成されるスクリーンにのみ適用されます。すでに作成されたスクリーンはタグ、プレイリスト、ラベルを保持します。URL は変更されません。置き換える場合は rotate を使用してください。
fleet-links rotate#
フリートリンクのURLを置き換え、新しいURLを受け取ります。
fleet-links rotate <id> [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | flk_フリートリンクID |
--expect-rev REVISION | string | いいえ | なし | オプションのリビジョン前提条件。 |
screenrig fleet-links rotate flk_01EXAMPLELINK0000エンベロープは新しいURLをdata.urlに運びます。古いURLは即座に無効になり、それを開いたデバイスはペアリングコードを表示します。リンクが既に作成されたスクリーンは再生を続けます。ペアリングされたプレーヤーはリンクを再表示しません。新しいURLはデバイスマネージャーに入れてください。
fleet-links delete#
フリートリンクを削除します。URLは即座に無効になり、作成したスクリーンは残ります。
fleet-links delete <id> [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | flk_フリートリンクID |
--expect-rev REVISION | string | いいえ | なし | オプションのリビジョン前提条件。 |
screenrig fleet-links delete flk_01EXAMPLELINK0000リンク作成されたスクリーンはプレイリストとタグを保持します。
CAP アラートトリガー
トリガーは Everbridge、Rave、Alertus、IPAWS リレーなどの緊急通知システムが CAP 1.2 アラートでスクリーンを制御できるようにします。各トリガーは独自のURL、ユーザー名、パスワードを持ち、送信システムで CAP HTTP POST 送信先として HTTP Basic 認証で入力します。組織は、すべてのプロジェクトを合わせて最大20トリガーを持ちます。
トリガーには 2 種類あります。ここで説明する CAP トリガーは、緊急システムのアラートを受け取ります。オーバーレイトリガーは、Home Assistant、センサーハブ、アラートツールなど任意の送信元が送った内容を、再生中の内容の上のストリップまたは引き継ぎとして表示します。triggers create --kind overlay で作成でき、triggers update、triggers deliveries、triggers clear、triggers rotate-secret は両方の種類で使えます。
トリガーはタグ(各アラート到着時に解決)または最大500のスクリーンIDを対象にします。各アラートはトリガーのプレイリストのテイクオーバーとなり、重大度の色の全画面カードでイベント、見出し、説明、指示を表示します。演習は EXERCISE バナーを追加します。テイクオーバーはアラートの <expires> まで保持し、なければトリガーの --for デフォルト(1分から7日、設定なければ1時間)までで、7日を超えません。更新はカードを再描画し、キャンセルや全解除はすべてのスクリーンを元の再生に戻します。新しいアラートは表示中のものを置き換えます。テスト、システム、ドラフトメッセージ、承認済み・エラーメッセージ、期限切れアラートは無視され、送信者と識別子の重複は複製とみなします。スクリーンはテイクオーバーにデフォルトプレイリストが必要で、他のスクリーンはスキップされます。
パスワードsrtg_…はtriggers createとtriggers rotate-secretでのみ表示され、trigger_password_shown_onceの警告があります。CLIは設定、操作ログ、リカバリ状態にパスワードを保存しません。URLとユーザー名は秘密ではありません。
| 問題コード | 終了 | 意味 |
|---|---|---|
trigger_limit_reached | 5 | 組織にはすでに20個のトリガーがあります。作成されませんでした。まず1つ削除してください。 |
resource_conflict | 5 | アラートが有効な間は triggers test または triggers delete。next は triggers clear です。 |
not_found | 4 | このプロジェクトにこのIDのトリガーはありません。 |
revision_conflict | 6 | --expect-revリビジョンは古くなっていました。triggers showを実行してから再試行してください。 |
triggers create#
トリガーを作成し、そのURL、ユーザー名、パスワードを受け取る。
triggers create --name NAME [--kind cap|overlay] (--tag TAG | --screen-id ID...) [--for DURATION] [--pull FILE]
[--show bar|takeover] [--edge bottom|top] [--style FILE] [--map FILE] [--signing]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
--name NAME | string | はい | なし | トリガーの名前、制御文字なしで1~80文字。 |
--kind KIND | cap または overlay | いいえ | cap | cap は緊急システムの CAP 1.2 アラートを受け取ります。overlay は任意の送信元から短い文言を受け取り、--show が必要です。 |
--tag TAG | string | --tag または --screen-id のいずれか | なし | アラートが届いたときにこのタグを持つすべてのアクティブスクリーン。 |
--screen-id ID | string | --tag または --screen-id のいずれか | なし | scr_ スクリーンIDです。同じIDを繰り返すか、カンマ区切りで複数指定できます(最大500件)。 |
--for DURATION | 期間 | いいえ | 1h(オーバーレイは 10m) | <expires> のないアラート、または duration のないオーバーレイの送信が画面を保持する時間です(30m、2h、1d など)。CAP トリガーは 1 分〜7 日、オーバーレイトリガーは 10 秒〜7 日です。 |
--pull FILE | パス | いいえ | なし | ファイルまたは stdin 用の - からの JSON オブジェクトで、プラットフォームがトリガー用の CAP アラートソースも読み取ります。そのメンバーは下記の cap-alert カードのパラメーターです。 |
--show SHOW | bar または takeover | --kind overlay とともに | なし | bar は、対象画面で再生中の内容の上にストリップを描きます。takeover はアラートを全画面で再生します。 |
--edge EDGE | bottom または top | いいえ | bottom | ストリップが使う端。--show bar のときだけ指定できます。 |
--style FILE | パス | いいえ | なし | ファイルまたは標準入力の - から読み込む JSON オブジェクトで、テキストカードのスタイルです: theme、accent、background、backgroundColor、textColor、align。 |
--map FILE | パス | いいえ | なし | ファイルまたは標準入力の - から読み込む JSON テンプレートで、送信元が送るボディからオーバーレイの投稿を組み立てます。オーバーレイトリガーを参照してください。 |
--signing | フラグ | いいえ | オフ | すべての送信に ScreenRig-Signature ヘッダーも必須とし、署名シークレットを一度だけ表示します。 |
screenrig triggers create --name "Campus alerts" --tag Campus
screenrig triggers create --name "Campus alerts" --tag Campus --pull pull.json
screenrig triggers create --name "Lobby sensors" --kind overlay --show bar --tag Lobby
screenrig triggers create --name "Doorbell" --kind overlay --show takeover --tag Lobby --for 30sエンベロープは、data.url(https://api.screenrig.ai/api/triggers/<id>/cap、オーバーレイトリガーでは .../overlay)、data.username(トリガー ID)、data.password を含むトリガーです。今すぐ送信元のシステムに設定してください。オーバーレイトリガーの送信元には URL とパスワードが必要です(Authorization: Bearer)。--signing を付けると、エンベロープに data.signing_secret も一度だけ入り、警告 trigger_signing_secret_shown_once が付きます。作成が中断または不明確になった場合は、24 時間以内に同じコマンドをもう一度実行してください。保存済みの冪等キーが再利用され、サーバーは新たに作成せず同じトリガーとパスワードを返します。
--pull は、投稿された URL(引き続き有効)に加えてプラットフォームが参照するソースを追加します。オブジェクトには sources(CAP 1.0〜1.2 のアラートまたは ATOM/RSS インデックスの http または https URL 最大5件)、publicAlerts, location(name, latitude, longitude, geocodes を [{name, value}] として)、minSeverity, maxSeverity, minUrgency, minCertainty, events, excludeEvents, senders, statuses, scopes, languages, areaUnknown が含まれます。feeds get cap にはフラグと同じフィルターを指定できます。location は sources が指定されていない場合必須で、sources がない場合は location をカバーする公開フィードが読み込まれます。各ソースは1分ごとに取得されます。最も深刻な一致アラートが投稿済みアラート同様にスクリーンを制御し、ソースにアラートがない場合は取得アラートが終了します。古いまたは失敗したソースではアラートは終了しません。例:{"location": {"latitude": 49.25, "longitude": -123}, "minSeverity": "moderate"}。
triggers list#
このプロジェクトのトリガーと最新アラートを古い順に一覧表示
triggers listscreenrig triggers list--human は ID、KIND、LABEL、TARGET、ALERT、LAST_RECEIVED を表示します。オーバーレイトリガーでは、ALERT に描画内容と保持中のアラート数が表示されます。一覧にはパスワードも署名シークレットも含まれません。
triggers show#
トリガーとその最新アラートを検査。
triggers show <id>| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | trg_トリガーID |
screenrig triggers show trg_01EXAMPLETRIGGER00data.alert は最新のアラートです。CAP フィールド、state active または ended(ended_reason cancelled、all_clear、cleared、expired を伴う)、until、そして screens(targeted、taken_over、cleared、skipped、failed、pending)です。pending は画面への書き込みが続いている間は true で、失敗した画面は再試行されます。screen show はアラートをトリガーのプレイリストの引き継ぎとして報告します。オーバーレイトリガーでは、data.overlay に show、edge、enabled、signing、card_id、alerts(有効なアラート、新しい順。先頭が表示中)、screens(targeted、holding、taken_over、removed、edge_taken、skipped、failed)、pending が入ります。
triggers test#
トリガーのスクリーンに60秒の運動アラートを表示。
triggers test <id>| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | trg_トリガーID |
screenrig triggers test trg_01EXAMPLETRIGGER00エンベロープは受領証です: data.outcome shown と data.alert。すべての画面への書き込みが終わる前に応答が返ります。triggers show で件数を確認できます。オーバーレイトリガーはアラート screenrig-test(ラベル Test、タイトル Test overlay)を 60 秒間表示し、受領証は送信と同じです(data.alert_id、data.until、data.active)。どちらの種類も、アラート表示中のテストは拒否します。
triggers update#
URL とシークレットを変えずにトリガーを変更します。
triggers update <id> [--name NAME] [--tag TAG | --screen-id ID...] [--for DURATION] [--pull FILE | --no-pull]
[--edge bottom|top] [--style FILE | --clear-style] [--map FILE | --clear-map] [--enable | --disable]
[--signing | --no-signing] [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | trg_トリガーID |
--name NAME | string | いいえ | なし | トリガーの名前を変更します。 |
--tag TAG, --screen-id ID | string | いいえ | なし | 新しい対象。triggers create と同じ指定です。 |
--for DURATION | 期間 | いいえ | なし | 終了時刻を持たないアラートの新しい保持時間。 |
--pull FILE, --no-pull | パス、フラグ | いいえ | なし | CAP トリガー: CAP ソースを置き換える、または読み取りをやめます。 |
--edge EDGE | bottom または top | いいえ | なし | オーバーレイのストリップ: この端に移動します。 |
--style FILE, --clear-style | パス、フラグ | いいえ | なし | オーバーレイトリガー: スタイル全体を置き換えるか削除します。 |
--map FILE, --clear-map | パス、フラグ | いいえ | なし | オーバーレイトリガー: テンプレートを置き換えるか削除し、送信されたオブジェクトをそのまま投稿にします。 |
--stale-after DURATION | string | いいえ | 変更なし | source create と同じです。none で期間を解除します。 |
--enable, --disable | フラグ | いいえ | なし | オーバーレイトリガー: 無効にしたトリガーは、すべての送信に、誤ったシークレットと同じ 404 を返します。 |
--signing, --no-signing | フラグ | いいえ | なし | オーバーレイトリガー: 署名の確認を有効にする(署名シークレットは一度だけ表示)か、無効にします。 |
--expect-rev REVISION | string | いいえ | なし | オプションのリビジョン前提条件。 |
screenrig triggers update trg_01EXAMPLETRIGGER00 --tag Lobby
screenrig triggers update trg_01EXAMPLETRIGGER00 --edge top --style style.json
screenrig triggers update trg_01EXAMPLETRIGGER00 --map map.json --signing--expect-rev 以外に少なくとも 1 つのオプションが必要です。ストリップは新しい対象画面と端に置き直されます。引き継ぎトリガーの新しい対象は、次に始まるアラートから適用されます。すでに署名しているトリガーは、--signing を繰り返しても署名シークレットを保ちます。置き換えるには triggers rotate-secret --signing を使います。更新が中断または不明確になった場合は、同じコマンドをもう一度実行してください。保存済みの冪等キーが再利用されます。
triggers deliveries#
オーバーレイトリガーの送信ログを読みます。各送信が表示・無視・拒否された理由がわかります。
triggers deliveries <id> [--limit N]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | trg_トリガーID |
--limit N | integer | いいえ | 100 | 配信の件数(新しい順)。1〜100。 |
screenrig triggers deliveries trg_01EXAMPLETRIGGER00 --limit 20data.items には、過去 7 日間の送信が入っています: at、outcome (shown、updated、unchanged、ended、ignored、refused、invalid、handshake)、拒否または無効な送信の reason (credentials、signature、disabled、body、mapping、field、rate_limited、internal)、detail (誤っていたメンバーまたはマッピングのパス)、status、bytes、alert_id、request_id。ログには本文、ヘッダー、認証情報は残りません。誤ったシークレット、不正な署名、無効なトリガーは、すべて送信元に同じ 404 を返すため、どれだったかはこのログで確認します。CAP トリガーには配信がありません。
triggers clear#
トリガーのアラートを今すぐ終了する。
triggers clear <id> [--alert-id ID]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | trg_トリガーID |
--alert-id ID | string | いいえ | なし | オーバーレイトリガー: このアラートだけを終了します。指定しないとすべてのアラートが終了します。 |
screenrig triggers clear trg_01EXAMPLETRIGGER00
screenrig triggers clear trg_01EXAMPLETRIGGER00 --alert-id front-doorアラートは ended_reason cleared で終了し、画面はそれまで再生していた内容に戻ります。その後ほかの引き継ぎに置き換えられた画面はそのままです。有効なアラートがなければ何も変わりません。オーバーレイトリガーでは、有効でないアラートの解除は何も変えず、最後のアラートが終わるとストリップが消えるか、引き継ぎの画面が戻ります。
triggers rotate-secret#
トリガーのパスワードを置き換えます。
triggers rotate-secret <id> [--signing] [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | trg_トリガーID |
--signing | フラグ | いいえ | オフ | 署名するオーバーレイトリガー: パスワードではなく署名シークレットを置き換えます。 |
--expect-rev REVISION | string | いいえ | なし | オプションのリビジョン前提条件。 |
screenrig triggers rotate-secret trg_01EXAMPLETRIGGER00エンベロープの data.password に新しいパスワードが入ります。古いパスワードはすぐに使えなくなるので、新しいものを送信元のシステムに設定してください。--signing を指定すると、代わりに新しい data.signing_secret が一度だけ入り、古いものはすぐに使えなくなります。署名しないトリガーは invalid_request を返します。
triggers delete#
トリガーを削除します。URL はすぐにアラートと送信を受け付けなくなり、オーバーレイトリガーのストリップは画面から外れ、そのカードは削除されます。アラートを表示中のトリガーは resource_conflict で拒否されます。先に triggers clear を実行してください。
triggers delete <id> [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | trg_トリガーID |
--expect-rev REVISION | string | いいえ | なし | オプションのリビジョン前提条件。 |
screenrig triggers delete trg_01EXAMPLETRIGGER00オーバーレイトリガー
オーバーレイトリガーは、外部システムが送信した内容を表示します。Home Assistant、ドアや人感センサーのハブ、カメラシステム、アラートツールが HTTP POST で短い文言を送ると、トリガーの画面に期限が切れるか送信元が終了するまで表示されます。CAP トリガーと同じトリガーの一種で、triggers create --kind overlay で作成し、組織あたり 20 個という同じ上限に含まれます。
--show bar は、対象の各画面で再生中の内容の上にストリップを描きます。位置は下端で、--edge top を指定すると上端です。ストリップはアラートが始まると表示され、最後のアラートが終わると消えます。プレイリスト、ページ、タイミングは変わりません。画面が持てるストリップは 1 端につき 1 つです。ほかのオーバーレイトリガーがすでにその端を使っている画面には、このトリガーは表示されません(triggers show はそのような画面を edge_taken として数えます)。その端に独自のプレゼンス付きストリップがあるページは、それを保ちます。その端のコーナーカードやチップカードは、ストリップが表示されていてもいなくても、ストリップの高さの分だけ内側に寄ります。広告枠のページや引き継ぎ中は、ストリップは描かれません。--show takeover は、最初のアラートから最後のアラートが終わるまで、既定のプレイリストを持つ対象画面でアラートを全画面で再生します。引き継ぎトリガーは、オペレーターや緊急アラートなど、画面にすでにある引き継ぎを置き換えません。CAP アラートは引き継ぎを置き換えます。
タグによる対象は、アラートが始まるときに解決されます。あとからタグが付いた画面には、次に始まるアラートでストリップが表示されます。既定のプレイリストがない画面は、引き継ぎでは対象外になります。オフラインの画面は、再接続したときに追いつきます。
送信元は data.url に JSON(またはフォーム)を、Authorization: Bearer SECRET を付けて、または HTTP Basic(ユーザー名はトリガー ID、パスワードはシークレット)で送ります。シークレットを URL に含めてはいけません。送信には次のメンバーがあり、未知のメンバーは名前を示して拒否されます。
| メンバー | タイプ | メモ |
|---|---|---|
alert_id | string | 送信元が決めるアラートの ID(1〜200 文字)。同じ ID は別のアラートを重ねずにそのアラートを更新します。省略すると default という 1 つのアラートになります。解除では、省略するとすべてのアラートが終了します。 |
label | string | タイトルの上に付ける短いラベル。最大 40 文字。 |
title | string | 最大120文字。 |
message | string | 本文。最大 400 文字。 |
note | string | 下部の控えめな 1 行。最大 120 文字。 |
duration | 数値または文字列 | この送信がアラートを保持する時間(今から)。10 〜 604800 秒、または 10s、5m、2h、1d、until_cleared。省略するとトリガーの --for(未設定なら 10 分)になります。 |
clear | ブール値または文字列 | true(または yes、y、1、x)はアラートを終了します。false(または no、n、0、空)はアラートを発生させます。解除では、ほかのメンバーは無視されます。 |
state | string | 送信元の状態を表す語。off、closed、clear、cleared、resolved、ok、normal、inactive、ended は大文字小文字を問わずアラートを終了し、それ以外の状態はアラートを発生させます。 |
発生には label、title、message、note のうち少なくとも 1 つが必要です。上限を超えるテキストと、10 秒〜7 日の範囲外の duration は拒否され、どちらも invalid_request でメンバー名が示されます。発生または更新のたびに、その送信からの duration だけアラートを保持するため、数秒おきに送信する人感センサーはストリップを表示し続け、最後の送信から duration 後に消えます。トリガーは最新のアラートを表示し、それが終わると 1 つ前のアラートが再び表示されます。保持できるアラートは 10 件で、11 件目は最も古いものを置き換えます。アラートは期限からおよそ 10 秒以内に終了します。解除を 2 回送ってもアラートは 1 回だけ終了し、有効でないアラートの解除は何も変えません。
応答は受領証です: outcome(shown、updated、unchanged、ended、ignored)、alert_id、until(解除まで保持されるアラートでは null)、active(送信後にトリガーが保持するアラート)。8〜200 文字の Idempotency-Key ヘッダーを付けると、送信元の再試行に 24 時間は最初の受領証が返ります。トリガーは 1 分あたり 120 件の送信を受け付けます。発生または更新は、受信キーバリューウェブフックへの送信と同じく 1 回の課金対象 API リクエストです。解除は無料で、残高を理由に拒否されることはないため、アラートはいつでも画面から外せます。
curl -X POST https://api.screenrig.ai/api/triggers/trg_01EXAMPLETRIGGER00/overlay \
-H "Authorization: Bearer srtg_YOUR_SECRET" \
-H "Content-Type: application/json" \
-d '{"alert_id":"front-door","title":"Front door","message":"The front door is open","duration":"10m"}'誤ったアドレス、誤ったシークレット、無効なトリガー、署名の欠落または誤り、そしてすべての GET は、同じ 404 not_found を返すため、送信元やリンクのプレビューはどれだったかを知ることができません。triggers deliveries は、過去 7 日間の理由を投稿のボディなしでプロジェクトに示します。--style FILE はテキストカードの theme、accent、background、backgroundColor、textColor、align を設定します。見た目ごとにトリガーを 1 つ使います。
--map FILE は、アラートツールが送るボディから投稿を組み立てます。テンプレート言語はカードのウェブフックと同じです。{{body.title}} を含む文字列はテキスト、プレースホルダーだけの文字列は型を保ち、{"$text": "{{body.message}}", "$max": 400} はテキストを切り詰め、パスは body または query で始まります。次のテンプレートは監視ツールのアラートを変換し、ステータスが resolved になると終了させます。
{"alert_id": "{{body.groupKey}}", "title": "{{body.title}}", "message": {"$text": "{{body.message}}", "$max": 400}, "state": "{{body.status}}"}--signing は ScreenRig-Signature: t=<unix seconds>,v1=<hex HMAC-SHA256 of "<t>.<raw body>"> も必須とし、data.signing_secret(whsec_…、一度だけ表示)で署名します。t はサーバーの時計から 5 分以内でなければなりません。送信元はシークレットの更新中に v1 の値を 2 つ付けて送れます。
body='{"alert_id":"front-door","title":"Front door","message":"The front door is open"}'
t=$(date +%s)
sig=$(printf '%s.%s' "$t" "$body" | openssl dgst -sha256 -hmac "$SIGNING_SECRET" -hex | sed 's/^.* //')
curl -X POST "$URL" -H "Authorization: Bearer $SECRET" -H "ScreenRig-Signature: t=$t,v1=$sig" \
-H "Content-Type: application/json" -d "$body"アラートツールや、自社の送信に署名するベンダーは、シークレットの代わりにその署名を検証させ、ベンダーのセットアップのハンドシェイクにも応答させることができます。カード Webhook と同様に、overlay.verify と overlay.handshake を POST /api/triggers と PATCH /api/triggers/{id} に指定し、null でそれぞれ削除します。トリガーの srtg_ パスワードと配信ログにも同じルールが適用され、ハンドシェイクでアラートが変わることはありません。
Home Assistant の rest_command がトリガーに送信します。シークレットは secrets.yaml に置き、各オートメーションに、発生させる・終了させるアラートを指定します。
# secrets.yaml
screenrig_lobby_overlay: "Bearer srtg_YOUR_SECRET"
# configuration.yaml
rest_command:
screenrig_lobby:
url: "https://api.screenrig.ai/api/triggers/trg_01EXAMPLETRIGGER00/overlay"
method: post
headers:
Authorization: !secret screenrig_lobby_overlay
content_type: "application/json"
payload: >-
{{ {"alert_id": alert_id | default(""), "title": title | default(""),
"message": message | default(""), "duration": duration | default("10m"),
"clear": clear | default(false)} | tojson }}
# automations.yaml
- alias: Front door open on the lobby screens
triggers:
- trigger: state
entity_id: binary_sensor.front_door
to: "on"
actions:
- action: rest_command.screenrig_lobby
data: {alert_id: front-door, title: Front door, message: The front door is open, duration: until_cleared}
- alias: Front door closed
triggers:
- trigger: state
entity_id: binary_sensor.front_door
to: "off"
actions:
- action: rest_command.screenrig_lobby
data: {alert_id: front-door, clear: true}
- alias: Driveway motion
triggers:
- trigger: state
entity_id: binary_sensor.driveway_motion
to: "on"
actions:
- action: rest_command.screenrig_lobby
data: {alert_id: driveway, title: Driveway, message: Motion at the driveway, duration: 2m}これが動作する理由は 2 つです。人感の送信ごとに、その送信から 2 分間ストリップが保持されるため、動きが続く間は表示されたままで、最後のイベントから 2 分後に消えます。また、Home Assistant は送信前に {{ }} テンプレートを展開するので、トリガーには通常の JSON が届きます。トリガー自身の --map テンプレートは別の手順で、すべての送信がそれを通ります。そのため、Home Assistant のようにオーバーレイのメンバーをすでに送信している送信元には --map を付けないか、その送信元専用のトリガーを用意してください。
再生
再生証拠は3種類あります。playback playsはスクリーンで画像や動画が見えた開始ごとに1行、received_atで古い順:レポートや広告主向けの再生証明。playback listは日別合計、スクリーン、メディア、UTC日ごとに1行。playback totalsはUTC日ごとの再生回数や最も多いスクリーンやメディアのランキング。playsとlistはCSVエクスポート、ダッシュボードも同じファイルをエクスポート。
再生はプランのイベント保持のために少なくとも30日間保持されます。
| 問題コード | 終了 | 意味 |
|---|---|---|
invalid_request | 8 | 31日を超える再生範囲、366日を超える日次範囲、または不正なフィルター。CLI は送信前にほとんどを拒否します(終了コード2)。 |
rate_limited | 7 | 組織ごとに1分あたり30回の再生エクスポート予算を使い切りました。retry_after_secondsまでお待ちください。 |
請求:各JSONページは1つの請求対象APIリクエストであり、--allはページごとに1リクエストを請求します。CSVエクスポートはその範囲全体で1つの請求リクエストです。すべてのplaysリクエストとCSVエクスポートは再生エクスポート予算も消費します。playback totalsは1つの計測APIリクエストであり、その予算は消費しません。
playback plays#
再生記録を読み取ります。表示される開始ごとに1行。
playback plays [--from TIME] [--to TIME] [--screen-id ID] [--media-id ID] [--tag TAG] [--cursor CURSOR] [--limit N] [--all]
playback plays --format csv [--output FILE] [--from TIME] [--to TIME] [--screen-id ID] [--media-id ID] [--tag TAG]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
--from TIME | string | いいえ | --toの24時間前 | received_at の包括的境界:秒とオフセットを含むRFC 3339の瞬間、now、または 7d、12h、30m のような経過時間。 |
--to TIME | string | いいえ | 今 | 同じ形式での排他的なバインド。範囲は最大31日です。 |
--screen-id ID | string | いいえ | すべてのスクリーン | 1つのscr_スクリーン。 |
--media-id ID | string | いいえ | すべてのオブジェクト | 1つのmed_メディアオブジェクト。 |
--tag TAG | string | いいえ | すべてのスクリーン | 再生受信時にスクリーンが持っていたタグ。 |
--cursor CURSOR | string | いいえ | 範囲の開始 | 同じフィルターの前のページのnext_cursor |
--limit N | integer | いいえ | 200 | JSONページあたりの行数、最大1000。--format csv とは併用不可。 |
--all | boolean | いいえ | オフ | カーソルを範囲の末尾まで移動します。1ページあたり最大1000行ですが、--limitに別の指定があれば従い、最大50ページまでです。 |
--format csv | string | いいえ | JSON | 全範囲を CSV でストリーム。 |
--output FILE | パス | いいえ | ./playback-plays.csv | CSV 出力先、または標準出力のみの場合は -。 |
screenrig playback plays --from 7d --tag Lobby --all
screenrig playback plays --format csv --from 2026-09-01T00:00:00Z --to 2026-10-01T00:00:00Z --output september-plays.csvCLI は両方の境界を UTC に正規化し、すべてのリクエストで送信します。data.from と data.to はそれをエコーします。最新の 5 秒は安定するまで保留されるため、再生は受信後約 5 秒で表示され、data.to はその有効な終了を報告します。JSON は data.items で 1 ページを返し、data.next_cursor を含み、data.next.argv は次ページの正確なコマンドです。--all はページ上限 (playback_plays_truncated) またはエクスポート予算消費 (playback_export_rate_limited) に達すると早期停止し、data.next と警告を出します。
CSV は RFC 4180 準拠で、固定ヘッダー行 screen_id,playlist_id,page_id,primitive_id,media_id,primitive,started_at,received_at,manifest_revision,playlist_revision、時刻は RFC 3339 UTC です。primitive_id と started_at は Player が報告しない限り空です。=、+、-、@、タブ、または改行で始まるセルには先頭に ' が付き、スプレッドシートで評価されません。CLI は同じディレクトリのプライベート一時ファイルに書き込み、ストリームが正常終了後に既存ファイルを置き換えます。--timeout はストリームの無進行制限で、デフォルトは 60000 ms です。封筒は path、bytes、rows、sha256、last_received_at を報告し、CSV は封筒に入りません。
ストリームが途中で失敗した場合、コマンドは非ゼロで終了しターゲットファイルを書き込みません。すでに受信した完全な行はFILE.partialに残り、error.nextは最後のreceived_atから残りの範囲を未使用のFILE-rest.csvにエクスポートします。その瞬間に受信した行は両方に現れるため、結合時に重複を除外してください。
playback list#
このプロジェクトの 1 日ごとの再生合計を新しい日から順に読み取ります。
playback list [--screen-id ID] [--media-id ID] [--day YYYY-MM-DD | --day-from YYYY-MM-DD --day-to YYYY-MM-DD] [--format csv] [--output FILE]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
--screen-id ID | string | いいえ | すべてのスクリーン | scr_ で始まる必要があります。 |
--media-id ID | string | いいえ | すべてのオブジェクト | med_ で始まる必要があります。 |
--day YYYY-MM-DD | string | いいえ | すべての日 | 1日のUTCカレンダー日です。 |
--day-from YYYY-MM-DD | string | いいえ | なし | 最大366日、--day-to を含む包括的なUTC日範囲の開始。 |
--day-to YYYY-MM-DD | string | いいえ | なし | その範囲の終了。 |
--format csv | string | いいえ | JSON | CSVとしてエクスポート。範囲指定なしの場合、今日までの31日間。 |
--output FILE | パス | いいえ | ./playback-aggregates.csv | CSV 出力先、または標準出力のみの場合は -。 |
screenrig playback list --screen-id scr_01EXAMPLESCREEN00000000 --day 2026-08-14
screenrig playback list --format csv --day-from 2026-09-01 --day-to 2026-09-30スクリーン、メディアオブジェクト、UTC日の1行ずつ。フィルターは呼び出し元の自身の行を選択。CSVヘッダー行はscreen_id,media_id,filename,primitive,day,play_count,last_page_id,last_manifest_revision,first_started_at,last_started_at。日次エクスポート失敗は何も保持せず、再実行が必要。
playback totals#
UTC日ごとの再生回数を読み取るか、最も忙しいスクリーンやメディアをランク付けします。
playback totals [--by day|screen|media|screen_day] [--day-from YYYY-MM-DD] [--day-to YYYY-MM-DD]
[--screen-id ID | --media-id ID] [--top N]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
--by GROUPING | string | いいえ | day | day は UTC 日ごとに1行応答します。screen または media で最も多いものをランク付けします。screen_day はトップスクリーンの日別推移を返します。 |
--day-from YYYY-MM-DD | string | いいえ | --day-toの29日前 | 最初の UTC 日(含む)。 |
--day-to YYYY-MM-DD | string | いいえ | 今日 | 最終UTC日(含む)。 |
--screen-id ID | string | いいえ | すべてのスクリーン | --by dayで、この画面のみをカウントします。--media-idではありません。 |
--media-id ID | string | いいえ | すべてのオブジェクト | --by dayで、このメディアオブジェクトのみをカウントします。--screen-idではありません。 |
--top N | integer | いいえ | 10 | ランキングの行、1から100;--by screen_day 付きは1から10。--by が必要;--by day には適用されません。 |
screenrig playback totals
screenrig playback totals --day-from 2026-09-01 --day-to 2026-09-30 --screen-id scr_01EXAMPLESCREEN00000000
screenrig playback totals --by screen --top 5
screenrig playback totals --by media --day-from 2026-09-01 --day-to 2026-09-30
screenrig playback totals --by screen_day --top 3カウントは日次集計から取得し、取り込みから最大約 21 分遅れます。playback plays は新しい開始を示します。day は data.days、screen と media は data.screens と data.media、screen_day は data.screen_days に応答します。日系列は最大 366 日(--screen-id または --media-id で 92 日)、ランキングは最大 92 です。data.truncated は読み取りが大きすぎるウィンドウで各スライスの最良キーのみ保持した場合に true になります。
フィード
フィードは天気、警報、レート、見出しなど screenRIG が取得しキャッシュするサードパーティデータです。feeds get は1つのフィードドキュメントを読み込み、同じパラメータの組み込みカードも同じドキュメントを読みます。コマンドはサードパーティプロバイダーを呼び出しません。
feeds get#
フィードを一度だけ読み込みます。まだドキュメントがないフィードは pending と再試行時刻を返します。
feeds get <family> [--lat DEGREES --lon DEGREES] [--radius-km KM] [--min-magnitude N] [--hours N]
[--basins LIST] [--base CODE] [--symbols IDS] [--currency CODE] [--url URL]...
[--public] [--geocode NAME:VALUE]... [--min-severity LEVEL] [--max-severity LEVEL]
[--min-urgency LEVEL] [--min-certainty LEVEL] [--event NAME]... [--exclude-event NAME]...
[--sender NAME]... [--status STATUS]... [--scope SCOPE]... [--language TAG]...
[--area-unknown hide|show]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<family> | string | はい | なし | weather、airquality、alerts、rates、crypto、earthquakes、cyclones、headlines、またはcap。 |
--lat DEGREES | number | ファミリーごとに | なし | 緯度、--lon付き。weather、airquality、alerts、earthquakesに必須。cyclones、capは任意。 |
--lon DEGREES | number | ファミリーごとに | なし | 経度、--lat付き。 |
--radius-km KM | number | いいえ | earthquakes 用 500 | earthquakes 半径、または cyclones エリア(10~20000 km)。--lat と --lon が必要です。 |
--min-magnitude MAGNITUDE | number | いいえ | 2.5 | earthquakes:最小マグニチュード、0から9。 |
--hours HOURS | number | いいえ | 24 | earthquakes:時間単位のウィンドウ、1から168まで。 |
--basins LIST | string | いいえ | すべての流域 | cyclones:カンマ区切りの盆地at、ep、cp、wp。 |
--base CODE | string | いいえ | EUR | rates:基軸通貨。 |
--symbols IDS | string | はい、crypto用です | なし | カンマ区切りの暗号通貨IDまたはティッカー、最大20件。 |
--currency CODE | string | いいえ | usd | crypto:通貨単位。 |
--url URL | string | はい、headlines用です | なし | headlines:RSSまたはAtomフィードのURL。cap:CAPアラートまたはATOM/RSSインデックスのURL。最大5回繰り返し。 |
--public | boolean | いいえ | --urlなしのオン | cap:--latおよび--lonをカバーする公開アラートフィードも読み取ります。--latと--lonが必要です。 |
--geocode NAME:VALUE | string | いいえ | なし | cap:場所の市外局番、例えばUGC:WAC033。繰り返し可能。--latと--lonが必要です。 |
--min-severity LEVEL | string | いいえ | なし | cap:このレベル以上のアラートのみ:minor、moderate、severe、またはextreme。 |
--max-severity LEVEL | string | いいえ | なし | cap:このレベル以下のアラートのみ:minor、moderate、severe、またはextreme。 |
--min-urgency LEVEL | string | いいえ | なし | cap:少なくともこの緊急度のアラートのみ:past、future、expected、またはimmediate。 |
--min-certainty LEVEL | string | いいえ | なし | cap:少なくともこの確実性のアラートのみ:unlikely、possible、likely、またはobserved。 |
--event NAME | string | いいえ | 任意のイベント | cap:このイベントのみ。* は任意の文字列の連続にマッチします。繰り返し可能です。 |
--exclude-event NAME | string | いいえ | なし | cap:このイベントを除外。繰り返し可能。 |
--sender NAME | string | いいえ | 任意の送信者 | cap:この送信者からのアラートのみ。繰り返し可能。 |
--status STATUS | string | いいえ | Actual | cap:読み取るアラートステータス:Actual、Exercise、Test、またはSystem。繰り返し可能。 |
--scope SCOPE | string | いいえ | Public | cap:読み取るアラートスコープ:Public、Restricted、またはPrivate。繰り返し可能。 |
--language TAG | string | いいえ | なし | cap:言語の優先順位。最初に存在するものが有効。繰り返し可能。 |
--area-unknown MODE | string | いいえ | hide | cap:場所にない市外局番だけで伝えられるアラート:hideまたはshow。 |
screenrig feeds get weather --lat 49.25 --lon -123
screenrig feeds get rates --base EUR
screenrig feeds get crypto --symbols btc,eth --currency usd
screenrig feeds get earthquakes --lat 49.25 --lon -123 --radius-km 500 --min-magnitude 4 --hours 72
screenrig feeds get cyclones --basins at,ep
screenrig feeds get headlines --url https://example.com/news.xml
screenrig feeds get cap --lat 49.25 --lon -123 --geocode UGC:WAC033 --min-severity moderate --event '*warning'
screenrig feeds get cap --url https://example.com/alerts.atom --url https://example.com/other.xmlweather、airquality、alerts、およびearthquakesは常に一緒に使われる--latと--lonを必要とします。earthquakesはまた--radius-km、--min-magnitude、--hoursを取ります。cyclonesは--basinsを取り、--lat、--lon、--radius-kmと一緒に使うとその場所の近くの嵐だけを対象にします。ratesは--baseを取り、cryptoは--symbolsを必要とし--currencyを取ります。headlinesは--urlを必要とします。
cap は、場所に一致する CAP アラートを読み取ります。--url(繰り返し可能、最大 5 件の CAP アラートまたは ATOM/RSS インデックス URL)または --lat と --lon が必要で、これらはその場所をカバーする公開フィードを読み取ります。--public はこれらの公開フィードを --url ソースに追加します。フィルターフラグは triggers create --pull オブジェクトのメンバーと同じです。
キャッシュされたドキュメントは 200 に fetchedAt と attribution で応答します。データが表示される場所で帰属表示を行ってください。まだドキュメントがない場合、エンベロープは状態 pending、retry_after_seconds、retry_at を exit 0 で報告します。CLI はループしないため、retry_at の後にコマンドを再実行してください。組織ごとに新しいフィードキーは 1 日最大 50 件まで登録でき、それ以降は rate_limited となります。カードは静的パラメータからフィードキーを生成します。feed や feed: キーは自分で書き込まないでください。
データソース
データソースは、外部のアドレスをスケジュールに従って読み取り、結果を 1 枚のカードのデータに書き込みます。そのため、誰も再公開しなくてもカードは最新のままで、ドキュメントが変わるとスクリーンが再取得します。種類は ics、sheets、csv、json、microsoft365、google_calendar、square、shopify、toast、momentus です。1 つのソースが書き込むカードは 1 枚で、1 つの組織ではすべてのプロジェクトを合わせて最大 200 個まで作れます。失敗した同期は書き込みません。カードは最後の正常なドキュメントを保ち、ソースのステータスにエラーが表示されます。各種類の設定、ステータスコード、プライバシーのルールはデータソースにあります。
プリセットは、Slack チャンネル、求人ボード、ビルドボードなど 1 つのサービス向けの、既製でテスト済みの json ソースです: source presets で一覧表示し、source presets NAME でプリセットのフィールドとシークレットを表示し、source create --preset NAME でソースを作成します。
認証情報は、シェルの履歴やプロセス一覧に残らないよう、--secret NAME=@FILE、または標準入力なら NAME=- の形式で渡します。シークレットは封印して保存され、マスクされたヒントとしてのみ表示されます。シークレット名は、ics では calendar_url.KEY (カレンダーごとに 1 つ)、認証が必要な csv または json のアドレスでは token (password、client_secret、header.NAME、query.NAME は、その他のサインイン方法用で、リクエスト、サインイン、ページで説明しています)、microsoft365 と toast では client_secret、google_calendar では service_account_key、square と shopify では access_token、momentus では api_key と api_secret、ストアにインストールされた shopify アプリでは client_id 設定とともに client_secret です。
--settings はソースの設定オブジェクト全体を JSON、@FILE、または - で受け取ります。--set KEY=VALUE は最上位のメンバーを 1 つ設定し、繰り返せます。値は JSON として解釈できれば JSON、そうでなければテキストです(days=14、calendars='[{"key":"lobby"}]'、テキストなら time_zone=America/Vancouver)。両方を指定した場合、--set のメンバーが --settings の同じメンバーを置き換えます。source update を --set だけで使うと、保存済みの設定のそのメンバーを変更します。CLI の --config オプションは認証情報ファイルを指すもので、ソースとは関係ありません。
source list#
プロジェクトのデータソースを新しい順にステータス付きで一覧表示します。
source list [--after CURSOR]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
--after CURSOR | string | いいえ | 最初のページ | 前のページのdata.next_cursor |
screenrig source listsource show#
ソースを確認します。設定、マスクされたシークレット、直近の実行、直近のエラーを表示します。
source show <source_id>| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<source_id> | string | はい | なし | ソース(src_…)。 |
screenrig source show src_01EXAMPLESOURCE000000source presets#
既製のソースプリセットを一覧表示するか、1 つについてフィールド、シークレット、その入手方法を表示します。
source presets [<name>]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<name> | string | いいえ | すべてのプリセット | プリセットの名前: ハイフンでつないだ小文字の単語(slack-channel など)。 |
screenrig source presets
screenrig source presets slack-channel一覧には、各プリセットのタイトル、それが埋めるカードの種類(最初のものがそのプリセットの対象)、カテゴリが表示されます。名前を指定すると、設定するフィールド(--set NAME=VALUE: パターンと例を持つテキスト、選択肢、または JSON 配列を受け付けるリスト)、入力するシークレット(--secret NAME=@FILE)とそれぞれをベンダーが発行する場所、更新頻度、カードが最後のデータを保持する期間、誰のデータをどの規約で読み取るかが表示されます。何も作成されません。
source create#
ソースを作成します。数秒で実行され、その後はスケジュールに従います。先にカードを作成し、source test でプレビューしてください。
source create (--kind KIND | --preset NAME) --card CARD_ID --name NAME [--settings JSON|@FILE|-] [--set KEY=VALUE]...
[--connection-id ID] [--secret NAME=VALUE]... [--refresh DURATION] [--stale-after DURATION|none] [--disabled]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
--kind KIND | string | --preset なし | なし | ics、sheets、csv、json、microsoft365、google_calendar、square、shopify、momentus、toast のいずれか。 |
--preset NAME | string | --kind なし | なし | 既製のテスト済みプリセット(一覧は source presets)からソースを作成します: その場合、--set と --settings でプリセットのフィールドを、--secret でその認証情報を指定します。--kind とは併用できません。 |
--card CARD_ID | string | はい | なし | ソースが書き込むカード(crd_…)。1 枚のカードにソースは 1 つで、2 つ目には source_target_taken が返ります。 |
--name NAME | string | はい | なし | 1~80文字。 |
--settings SETTINGS | string | いいえ | {} | 最上位の設定 1 つ。繰り返し指定できます。--preset とともに使う場合は、プリセットのフィールド 1 つ: テキストはそのまま扱われますが、JSON の配列またはオブジェクト(リストフィールドの項目)は例外です。 |
--connection-id ID | string | いいえ | なし | microsoft365 と google_calendar: テナント、client_id、ソース独自のシークレットの代わりに、プロジェクトの接続(pcn_…、connection list)を通じて読み取ります。これにより connection_id 設定が指定されます。 |
--set KEY=VALUE | string | いいえ | なし | 最上位の設定を 1 つ。繰り返せます。 |
--secret NAME=VALUE | string | いいえ | なし | 名前を付けた認証情報: NAME=@FILE、NAME=-(標準入力を読むオプションは最大 1 つ)、または NAME=VALUE。繰り返し指定できます。--preset とともに使う場合は、プリセットの認証情報です。 |
--refresh DURATION | string | いいえ | 種類による | 同期する頻度、30s から 24h。既定値と最短値は種類によって決まります: ics は 5 分ごと(最短 1 分ごと)、microsoft365 と google_calendar は 2 分ごと、momentus は 1 分ごと(最短 30 秒ごと)に同期します。プリセットは独自の値を設定します。 |
--stale-after DURATION | string | いいえ | 種類による | データソースが更新できないとき、カードが最後の正常なデータを保持する期間。1m から 7d までで、--refresh の 2 倍以上にします。none は次の更新まで保持します。その後、データはすべてのスクリーンで期限切れになります。momentus の既定は 30m です。 |
--disabled | boolean | いいえ | オフ | 停止した状態でソースを作成します。source update --enable まで何も取得しません。 |
screenrig source create --kind ics --card crd_01EXAMPLECARD000000000 --name "Lobby calendar" --set calendars='[{"key":"lobby"}]' --set time_zone=America/Vancouver --secret calendar_url.lobby=@lobby.url
screenrig source create --kind sheets --card crd_01EXAMPLEMENU0000000000 --name "Cafe menu" --settings @menu-sheet.json
screenrig source create --kind json --card crd_01EXAMPLEKPI00000000000 --name "Daily numbers" --settings @kpi-api.json --secret token=@api.token
screenrig source create --kind square --card crd_01EXAMPLEMENU0000000000 --name "Counter menu" --secret access_token=@square.token
screenrig source create --kind microsoft365 --card crd_01EXAMPLEROOMS0000000000 --name "Meeting rooms" --settings @rooms.json --connection-id pcn_01EXAMPLECONNECTION0000
screenrig source create --preset slack-channel --card crd_01EXAMPLEWALL00000000000 --name "Team wall" --set channel=C0123456789 --secret token=@slack.tokensource update#
ソースを変更します。名前の変更以外の変更は、失敗回数をリセットして再実行します。
source update <source_id> [--name NAME] [--card CARD_ID] [--settings JSON|@FILE|-] [--set KEY=VALUE]...
[--connection-id ID] [--secret NAME=VALUE]... [--unset-secret NAME]... [--refresh DURATION]
[--stale-after DURATION|none] [--enable | --disable] [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<source_id> | string | はい | なし | ソース(src_…)。 |
--name NAME | string | いいえ | 変更なし | ソースの名前を変更します。 |
--card CARD_ID | string | いいえ | 変更なし | 別のカードに書き込みます。 |
--settings SETTINGS | string | いいえ | 変更なし | 保存済みの設定のうち、最上位の設定 1 つを変更します。繰り返し指定できます。プリセットから作成したソースでは、プリセットのフィールド 1 つで、値 null は任意のフィールドを削除します。 |
--connection-id ID | string | いいえ | 変更なし | source create と同じです。ソースを独自の認証情報から切り替えるには、tenant と client_id を含めない --settings と、--unset-secret client_secret が必要です。 |
--set KEY=VALUE | string | いいえ | なし | 保存済みの設定の最上位のメンバーを 1 つ変更します。繰り返せます。 |
--secret NAME=VALUE | string | いいえ | なし | シークレットを設定または置き換えます。繰り返せます。送らなかったシークレットは、変更でソースがそのシークレットの対象外の場所(別のオリジン、ストア、環境、テナント)を指すようにならない限り、値を保ちます。その場合は source_secret_required が再入力を求めます。 |
--unset-secret NAME | string | いいえ | なし | シークレットを削除します。繰り返せます。 |
--refresh DURATION | string | いいえ | 変更なし | 30s から 24h;その種類の最短値が適用されます。 |
--stale-after DURATION | string | いいえ | 変更なし | source create と同じです。none で期間を解除します。 |
--enable, --disable | boolean | いいえ | 変更なし | スケジュールを再開、または停止します。カードは最後のドキュメントを保ちます。指定できるのはどちらか 1 つです。 |
--expect-rev REVISION | integer | いいえ | 読み取ったリビジョン | ソースがこのリビジョンでない限り変更を拒否します。別のリビジョンを指定しない限り、--set は読み取ったリビジョンを保護します。 |
変更を少なくとも 1 つ指定してください。
screenrig source update src_01EXAMPLESOURCE000000 --set days=14
screenrig source update src_01EXAMPLESOURCE000000 --secret calendar_url.lobby=@new.url --refresh 10m
screenrig source update src_01EXAMPLESOURCE000000 --disable
screenrig source update src_01EXAMPLEPRESET0000000 --set channel=C0123456789 --secret token=@new.tokensource test#
何も保存も書き込みもせずにソースをプレビューします: アドレスを取得し、応答をカード向けに整形して、カードに照らして確認します。エンベロープには、ドキュメント、valid、カードが拒否した場合のパスと理由、警告、件数が含まれます。保存済みの <source_id> を渡すと、他のオプションを上書きとして使ってテストし、--kind(または --preset)と --card を渡すと、未保存のソースをテストします。取得または整形に失敗すると、理由とともに source_test_failed になります。1 組織あたり 1 分間に最大 30 回のプレビューです。
source test [<source_id>] [--kind KIND | --preset NAME] [--card CARD_ID] [--settings JSON|@FILE|-] [--set KEY=VALUE]...
[--connection-id ID] [--secret NAME=VALUE]...| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<source_id> | string | いいえ | なし | テストする保存済みのソース。 |
--kind KIND | string | <source_id> も --preset も付けない | なし | source create と同じです。 |
--preset NAME | string | いいえ | なし | --kind の代わりに、--set と --settings をフィールドとして、--secret を認証情報として使い、このプリセットから作成するソースをプレビューします。 |
--card CARD_ID | string | <source_id> なし | なし | 埋めるカード。 |
--settings SETTINGS | string | いいえ | 保存済みの設定 | 種類の設定。JSON、@FILE、標準入力なら -。 |
--connection-id ID | string | いいえ | なし | source create と同じです。 |
--set KEY=VALUE | string | いいえ | なし | 最上位の設定を 1 つ。繰り返せます。 |
--secret NAME=VALUE | string | いいえ | 保存済みのシークレット | 試す認証情報。繰り返せます。 |
screenrig source test --kind ics --card crd_01EXAMPLECARD000000000 --set calendars='[{"key":"lobby"}]' --secret calendar_url.lobby=@lobby.url
screenrig source test src_01EXAMPLESOURCE000000
screenrig source test --preset slack-channel --card crd_01EXAMPLEWALL00000000000 --set channel=C0123456789 --secret token=@slack.tokensource refresh#
ソースをすぐに同期して結果を表示します。最大 60 秒間インラインで実行し、失敗回数をリセットして、アドレスを全体読み取ります。失敗した同期がカードを変更することはありません。スケジュールされた同期の実行中は source_busy(終了コード 5)が返ります。ソースごとに 1 分あたり最大 6 回です。
source refresh <source_id>| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<source_id> | string | はい | なし | ソース(src_…)。 |
screenrig source refresh src_01EXAMPLESOURCE000000source rooms#
スクリーンが予約システムのデータソース(momentus)の部屋にどう対応しているかを確認します。データソースの最後に成功した更新の部屋とプロジェクトのスクリーンを読み取り、何も取得しません。どのスクリーンにも表示されていない部屋と、部屋の値を持つか、プレイリストがデータソースの部屋キーを読むすべてのスクリーンを一覧にし、それぞれ mapped、missing(プレイリストはフィールドを読むがスクリーンに値がない)、unknown(値が部屋を指していない。意図したと思われる部屋も示します)のいずれかで示します。スクリーンは screen update scr_ID --field room=ROOM_KEY で修正します。
source rooms <source_id>| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<source_id> | string | はい | なし | 予約システムの部屋を読み取るデータソース(src_…)。 |
screenrig source rooms src_01EXAMPLESOURCE000000source delete#
ソースを削除します。カードは、ソースが最後に書き込んだドキュメントを保ちます。
source delete <source_id> [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<source_id> | string | はい | なし | ソース(src_…)。 |
--expect-rev REVISION | integer | いいえ | なし | ソースがこのリビジョンでない限り削除を拒否します。 |
screenrig source delete src_01EXAMPLESOURCE000000接続
接続は、誰もサインインしていなくても動く作業のために、プロジェクトが保存しておく Microsoft または Google へのアクセスです。microsoft365 または google_calendar のデータソース(source create --connection-id)、Power BI 接続(bi connection create powerbi --connection-id)、SharePoint のメディア同期アカウント(media sync account add microsoft365 --connection-id)は、それぞれがテナント、クライアント ID、シークレットを持つ代わりに、接続を通じて読み取ります。接続 ID は pcn_ で始まり、1 つの組織はすべてのプロジェクトを合わせて最大 50 件の接続を持てます。モード、ステータス、承認の手順は Microsoft と Google を接続する に記載されています。
モード own_app はご自身のアプリケーションを保持します。Microsoft では Microsoft Entra のアプリ登録(--tenant-id、--client-id、クライアントシークレットの値)、Google ではサービスアカウントの JSON キーです。モード screenrig_app は screenRIG 自身のアプリケーションを使い、シークレットは不要です: create は、同意を完了する人(テナントに対して同意する Microsoft 365 の管理者、または読み取り専用のカレンダーアクセスを許可する Google アカウントの所有者)向けの 1 回限りの同意リンク(data.consent_url、期限は data.consent_expires_at)を表示します。リンクはその人にだけ送り、その後 connection show で status と last_error を読み取ります。Power BI 接続で使えるのは own_app 接続だけです。
クライアントシークレットは --secret-file FILE、Google のキーは --service-account-key-file FILE で渡し(標準入力には -)、引数としては決して渡しません。読み取りには読み取りアクセスが必要で、変更にはすべて Manage アクセスが必要です。
connection list#
このプロジェクトの接続をステータスとともに一覧表示します。
connection listパラメーターなし。
screenrig connection listconnection show#
接続を確認します。ステータス、直近のエラー、直近のテストを表示します。
connection show <id>| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | 接続(pcn_…)。 |
screenrig connection show pcn_01EXAMPLECONNECTION0000connection create microsoft#
Microsoft 365 接続を追加します: ご自身の Entra アプリ、または同意リンク付きの screenRIG のアプリケーション。
connection create microsoft --mode own_app|screenrig_app [--name NAME]
[--tenant-id ID --client-id ID --secret-file FILE]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
--mode MODE | string | はい | なし | own_app: ご自身の Microsoft Entra アプリ登録とクライアントシークレット。screenrig_app: screenRIG のアプリケーション。このコマンドが表示する 1 回限りのリンクを通じて、Microsoft 365 の管理者が同意します。 |
--name NAME | string | いいえ | Microsoft 365 | 1~80文字。 |
--tenant-id ID | string | own_app とともに | なし | ご自身の Microsoft Entra の Directory (tenant) ID、または contoso.onmicrosoft.com のようなそのプライマリドメイン。--client-id と --secret-file とともに指定します。 |
--client-id ID | string | own_app とともに | なし | アプリ登録の Application (client) ID。 |
--secret-file FILE | string | own_app とともに | なし | クライアントシークレットの値をこのファイルから、または標準入力を表す - から読み取ります(引数では渡しません);ファイルには値だけを入れます。 |
screenrig connection create microsoft --mode own_app --tenant-id contoso.onmicrosoft.com --client-id 0b1d2f3a-4c5e-4f60-8a7b-9c0d1e2f3a4b --secret-file secret.txt
screenrig connection create microsoft --mode screenrig_app --name "Contoso rooms"モード screenrig_app では --tenant-id、--client-id、--secret-file のいずれも使わず、テナントに対して screenRIG のアプリケーションに同意する Microsoft 365 の管理者向けに、同意リンク(data.consent_url)を表示します。アプリ登録には、会議室カレンダー用の Calendars.Read、SharePoint メディア同期用の Sites.Selected または Files.Read.All が挙げられ、Power BI では Graph のアクセス許可の代わりにテナント設定とワークスペースのメンバーシップが挙げられます;connection test は、トークンが持つアクセス許可を報告します。screenRIG のアプリケーションがないサーバーは connection_app_not_configured を返しますが、モード own_app は引き続き使えます。
connection create google#
Google 接続を追加します: ご自身のサービスアカウントキー、またはサインインリンク付きの screenRIG のアプリケーション。
connection create google --mode own_app|screenrig_app [--name NAME]
[--service-account-key-file FILE]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
--mode MODE | string | はい | なし | own_app: ご自身のサービスアカウントキー。screenrig_app: screenRIG のアプリケーション。このコマンドが表示する 1 回限りのリンクから、Google アカウントの所有者がサインインして、読み取り専用のカレンダーアクセスを許可します。 |
--name NAME | string | いいえ | Google Calendar | 1~80文字。 |
--service-account-key-file FILE | string | own_app とともに | なし | サービスアカウントの JSON キーファイルをこのファイルから、または標準入力を表す - から読み取ります(引数では渡しません)。 |
screenrig connection create google --mode own_app --service-account-key-file key.json
screenrig connection create google --mode screenrig_app --name "Venue calendars"モード own_app では、各会議室のカレンダーをサービスアカウントのアドレスと共有するか、ソースに subject(ドメイン全体の委任)を指定します。モード screenrig_app ではキーを受け付けず、Google アカウントの所有者向けのサインインリンク(data.consent_url)を表示します: このアカウントは、ソースが挙げるすべての会議室のカレンダーを見られる必要があり、そのようなソースには subject を指定できません。screenRIG のアプリケーションがないサーバーは connection_app_not_configured を返しますが、モード own_app は引き続き使えます。
connection update#
接続の名前を変更するか、モード own_app ではテナント、アプリ、シークレットを変更します。
connection update <id> [--name NAME] [--tenant-id ID] [--client-id ID]
[--secret-file FILE] [--service-account-key-file FILE] [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | 接続(pcn_…)。 |
--name NAME | string | いいえ | 変更なし | 接続の名前を変更します。 |
--tenant-id ID | string | いいえ | 変更なし | Microsoft own_app: Directory (tenant) ID またはプライマリドメイン。 |
--client-id ID | string | いいえ | 変更なし | Microsoft own_app: Application (client) ID。 |
--secret-file FILE | string | いいえ | 変更なし | Microsoft own_app: クライアントシークレットの値をこのファイルから、または標準入力を表す - から読み取ります;保存済みのシークレットが置き換えられます。 |
--service-account-key-file FILE | string | いいえ | 変更なし | Google own_app: サービスアカウントの JSON キーをこのファイルから、または標準入力を表す - から読み取ります;保存済みのキーが置き換えられます。 |
--expect-rev REVISION | integer | いいえ | なし | 接続がこのリビジョンでない限り変更を拒否します(revision_conflict、終了コード 6)。 |
screenrig connection update pcn_01EXAMPLECONNECTION0000 --secret-file new-secret.txt
screenrig connection update pcn_01EXAMPLECONNECTION0000 --name "Contoso rooms" --expect-rev 2少なくとも 1 つの変更が必要です。認証情報を変更すると、接続は ready に戻り、直近のエラーと直近のテストが消去され、古い認証情報向けに発行されたすべてのトークンが失効するので、もう一度テストしてください。screenrig_app 接続は名前の変更しかできません: 同意した人を変えるには、connection connect で新しい同意リンクを作成します。省略したシークレットは保持されます。
connection test#
接続でサインインし、その認証情報で何が許可されるかを確認します。
connection test <id>| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | 接続(pcn_…)。 |
screenrig connection test pcn_01EXAMPLECONNECTION0000Microsoft では、credentials(テナント向けのアプリトークン)と permissions(トークンが Calendars.Read、Sites.Selected、Files.Read.All、Sites.Read.All、Place.Read.All のどれを持つか。どれもなければ失敗し、Sites.Selected だけの場合は、各サイトに個別の付与が必要なため警告)を報告します。Google では credentials を報告し、カレンダーを見えるようにしておく必要があるアカウントを示します。拒否されると、接続は last_error とともに error に移り;成功すると ready に戻ります。このテストは、カレンダーの共有、メールボックスのアクセスポリシー、サイトへの付与は判定しません。1 組織あたり 1 分間に最大 30 回です。
connection connect#
screenrig_app 接続用の新しい 1 回限りの同意リンクを作成します。
connection connect <id>| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | 接続(pcn_…)。 |
screenrig connection connect pcn_01EXAMPLECONNECTION0000data.consent_url は、同意を完了する人(Microsoft 365 の管理者、または Google アカウントの所有者)に渡すリンクです。以前のリンクはすべて置き換えられます。動作している接続は、新しい同意が完了するまでそのままなので、この操作は、error になった接続(同意の削除、アクセスの取り消し)の更新や、別のテナントまたはアカウントへの切り替えにも使えます。モード own_app の接続には同意の手順がありません。1 組織あたり 1 分間に最大 20 回です。
connection delete#
何も読み取りに使っていない接続を削除します。
connection delete <id> [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | 接続(pcn_…)。 |
--expect-rev REVISION | integer | いいえ | なし | 接続がこのリビジョンでない限り削除を拒否します(revision_conflict、終了コード 6)。 |
screenrig connection delete pcn_01EXAMPLECONNECTION0000
screenrig connection delete pcn_01EXAMPLECONNECTION0000 --expect-rev 2データソース、Power BI 接続、メディア同期アカウントがその接続を通じて読み取っている間は、それらを示して resource_conflict(終了コード 5)が返ります。削除してもベンダー側は終了しません。Microsoft 365 のテナントは、管理者が削除するまで screenRIG のアプリケーションを保持し、Google アカウントは、所有者が取り消すまでその許可を保持します。
BI 接続
BI 接続は、プロジェクトが所有する、ダッシュボードを表示するシステムへのアクセスです。Grafana ではそのアドレスとサービスアカウントトークン、Power BI では Microsoft Entra アプリ(サービスプリンシパル)とそのクライアントシークレット、Tableau では接続アプリとユーザー、Web ページではサインインが必要なダッシュボードを表示するサイトのサービスアカウント、またはサインイン済みブラウザーのクッキーを指定します。接続 ID は bic_ で始まります。シークレットはサーバー上で封印され、二度と表示されません。読み取りでは secret {set, hint} と表示されます。接続は 1 つのプロジェクトに属します。bi connection list、show、browse には読み取りアクセスが必要で、それ以外のコマンドにはすべて Manage アクセスが必要です。
シークレットはファイルで渡します: Grafana は --token-file、Power BI と Tableau は --secret-file、Web ページは --password-file、--totp-file、--cookies-file です。いずれも標準入力には - を指定でき、引数では渡せず、1 つのコマンドで標準入力を読むオプションは最大 1 つです。
ビューは、接続の 1 つのダッシュボード、レポート、ページを、その embed_url を表示する iframe プリミティブを通じて再生します;bi view create --connection-id ID でビューを作成します。サインインが必要なダッシュボードを表示するでは Web 接続の手順を説明し、API リファレンスではすべての種類を扱います。
bi connection create grafana#
Grafana 接続を追加します: そのアドレスとサービスアカウントトークン。
bi connection create grafana --url URL --token-file FILE [--name NAME] [--org-id N]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
--url URL | string | はい | なし | 公開ホスト上の Grafana のアドレス。パスのプレフィックスも指定できます: https://grafana.example.com または https://example.com/grafana。プライベート、ループバック、予約済みのアドレスは invalid_request(終了コード 8)になり、Grafana はリダイレクトせずに応答する必要があります。 |
--token-file FILE | string | はい | なし | サービスアカウントトークンをこのファイルから、または標準入力を表す - から読み取ります(引数では渡しません);ファイルにはトークンだけを入れます。 |
--name NAME | string | いいえ | ホスト名 | 1~80文字。 |
--org-id N | integer | いいえ | 1 | トークンが属する Grafana の組織: 1 以上の整数。 |
screenrig bi connection create grafana --url https://grafana.example.com --token-file token.txt
screenrig bi connection create grafana --url https://example.com/grafana --token-file - --name "Ops Grafana" --org-id 2Grafana で、Grafana Image Renderer プラグインまたはリモートレンダリングサービスをインストールし(ダッシュボードを画像として描画するもので、ないと何もレンダリングされません)、Viewer ロールのサービスアカウントを作成してトークンを追加します。次に bi connection test を実行します。
bi connection create tableau#
Tableau 接続を追加します: 接続アプリ(ダイレクトトラスト)、スクリーンのビューの表示に使うユーザー、アプリのシークレットの値。
bi connection create tableau --url URL --client-id ID --secret-id ID --username USER
--secret-file FILE [--site SITE] [--name NAME]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
--url URL | string | はい | なし | Tableau Server の https アドレス、または https://10ay.online.tableau.com のようなご利用の Tableau Cloud の pod のアドレス(online.tableau.com ではなく pod)。 |
--site SITE | string | いいえ | Tableau Server のデフォルトサイト | サイトのコンテンツ URL。ビューのアドレスで /site/ または /t/ の後ろにある部分。 |
--client-id ID | string | はい | なし | 接続アプリのクライアント ID。 |
--secret-id ID | string | はい | なし | 接続アプリ用に生成したシークレットのシークレット ID。 |
--username USER | string | はい | なし | スクリーンのビューの表示に使う Tableau ユーザー(Tableau Cloud ではメールアドレス)。 |
--secret-file FILE | string | はい | なし | シークレットの値をこのファイルから、または標準入力を表す - から読み取ります(引数では渡しません);ファイルにはシークレットの値だけを入れ、シークレット ID は入れません。 |
--name NAME | string | いいえ | ホスト名 | 1~80文字。 |
screenrig bi connection create tableau --url https://10ay.online.tableau.com --site lobby --client-id 11111111-2222-3333-4444-555555555555 --secret-id 66666666-7777-8888-9999-000000000000 --username screens@example.com --secret-file secret.txtTableau で一度だけ設定します。設定の接続アプリで、ダイレクトトラストの接続アプリを作成し、そのクライアント ID をコピーし、シークレットを生成してシークレット ID とシークレットの値をコピーし、アプリとシークレットを有効にします。スクリーンが表示に使う Tableau ユーザーを選ぶか作成し、スクリーンが表示するビューだけにアクセスを与えてください: スクリーンのチケットを持つ人は、そのユーザーが見られるどのビューでも埋め込めます。次に bi connection show ID を実行し、その embed_origin のホストを接続アプリのドメイン許可リストに入力します。Tableau Cloud または Tableau Server 2023.3 以降が必要です;スクリーンから Tableau ホストに到達でき、スクリーンのブラウザーがそのホストからのサードパーティクッキーを受け入れる必要があります。次に bi connection test を実行し、その後 bi connection browse でビューを探します。
bi connection create powerbi#
Power BI 接続を追加します: Microsoft Entra アプリ(サービスプリンシパル)とそのクライアントシークレット、またはこのプロジェクトの Microsoft 接続。
bi connection create powerbi
(--tenant-id ID --client-id ID --secret-file FILE | --connection-id ID) [--name NAME]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
--tenant-id ID | string | --connection-id なし | なし | ご自身の Microsoft Entra の Directory (tenant) ID、または contoso.onmicrosoft.com のようなそのドメイン;common、organizations、consumers は指定できません。--client-id と --secret-file とともに指定します。 |
--client-id ID | string | --connection-id なし | なし | アプリ登録の Application (client) ID。 |
--secret-file FILE | string | --connection-id なし | なし | クライアントシークレットの値をこのファイルから、または標準入力を表す - から読み取ります(引数では渡しません);ファイルにはシークレットの値だけを入れ、シークレット ID は入れません。 |
--connection-id ID | string | --tenant-id なし | なし | --tenant-id、--client-id、--secret-file の代わりに、このプロジェクトのモード own_app の Microsoft 接続(pcn_…)を通じてサインインします。screenrig_app 接続は拒否されます。これらとは併用できません。 |
--name NAME | string | いいえ | Power BI | 1~80文字。 |
screenrig bi connection create powerbi --tenant-id 11111111-2222-3333-4444-555555555555 --client-id aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee --secret-file secret.txt
screenrig bi connection create powerbi --connection-id pcn_01EXAMPLECONNECTION0000 --name "Contoso Power BI"一度だけ設定します。Microsoft Entra で、アプリ登録(シングルテナント、リダイレクト URI なし、API のアクセス許可なし)とクライアントシークレットを作成します。Power BI の管理者は、管理ポータルのテナント設定、開発者設定で、Embed content in apps と Service principals can call Fabric public APIs を、組織全体、またはアプリを含むセキュリティグループに対してオンにします。表示する各ワークスペースに、アプリを Member または Admin ロールで追加します;Member が最小のアクセスです。本番の埋め込みでは、ワークスペースが Fabric (F)、Power BI Embedded (A)、Premium (P/EM) のいずれかの容量上にある必要があります。商用クラウドのみ。次に bi connection test を実行し、その後 bi connection browse でワークスペースとレポートを探します。
bi connection create web#
Web 接続を追加します: サインインが必要なダッシュボードを表示するサイトのサービスアカウント、またはサインイン済みブラウザーのクッキー。
bi connection create web --login-mode auto|steps|none [--login-url URL] [--username USER]
[--password-file FILE] [--totp-file FILE] [--steps FILE] [--cookies-file FILE] [--name NAME]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
--login-mode MODE | string | はい | なし | auto は、--login-url のフォームに --username とパスワードを入力します。steps は --steps のスクリプトを実行します。none は何もサインインしないため、ページは --cookies-file のクッキーセットで表示され、--login-url、--username、--password-file、--totp-file、--steps はいずれも指定できません。 |
--login-url URL | string | auto または steps とともに | なし | 公開ホスト上にある、サイトのサインインページの https アドレス。パスワードを入力するのはそのページとスクリプトの goto ステップだけで、ビューのアドレスに入力することはありません。 |
--username USER | string | auto とともに | なし | サービスアカウントのユーザー名。 |
--password-file FILE | string | auto とともに | なし | サービスアカウントのパスワードをこのファイルから、または標準入力を表す - から読み取ります(引数では渡しません);スペースは使え、末尾の改行は 1 つ取り除かれます。 |
--totp-file FILE | string | いいえ | なし | アカウントの認証アプリ用にサイトが表示する base32 キー(16〜128 文字)、またはその otpauth://totp アドレスを、このファイルまたは - から読み取ります(コードはサーバーが計算します)。 |
--steps FILE | string | steps とともに | なし | サインインスクリプト。最大 30 ステップの JSON 配列で、ファイルまたは - から読み込みます。アクション: goto(url)、fill(selector、value)、click、wait_for(selector)、press(Enter などの value、任意で selector)、wait_ms(ms)。値には {{username}}、{{password}}、{{otp}} を含められますが、シークレット自体は含められません。auto とは併用できません。 |
--cookies-file FILE | string | いいえ | なし | サインイン済みのブラウザーからエクスポートしたクッキーセット。クッキーの JSON 配列(クッキー拡張機能のエクスポート)、または cookies 配列を持つオブジェクト(Playwright のストレージ状態)を、ファイルまたは - から読み込み、最大 100 件です。送信されるのは name、value、domain、path、expires、httpOnly、secure、sameSite だけです。 |
--name NAME | string | いいえ | サインインのホスト | 1~80文字。 |
screenrig bi connection create web --login-mode auto --login-url https://login.example.com/signin --username screens@example.com --password-file password.txt --name "Ops dashboard"
screenrig bi connection create web --login-mode steps --login-url https://login.example.com/signin --username screens@example.com --password-file password.txt --steps steps.json
screenrig bi connection create web --login-mode none --cookies-file cookies.json --name "Signed-in jar"パスワード、キー、クッキーは封印され、二度と表示されません: 設定済みかどうかは data.secret と data.totp_secret が、サインインの状況は data.session が示します(idle、active、login_needed、paused、stopped、expired のいずれか)。読み取り専用のサービスアカウントを使ってください。拒否されたサインインは 5 分待ち、その後 15 分、60 分、120 分待ちます。5 回連続すると、認証情報またはサインイン設定が変更されるまで接続が停止します。電話でサインインを承認するサイト、デバイスを確認するサイト、CAPTCHA を表示するサイトはスクリプト化できません: クッキーセットを使ってください。ページレンダラーがないサーバーは bi_web_unavailable(終了コード 5)を返します。次に bi connection test を実行します。
bi connection list#
このプロジェクトの BI 接続を、種類、マスクされたシークレット、直近のテストとともに一覧表示します。
bi connection listパラメーターなし。
screenrig bi connection listdata.items にはプロジェクトのすべての接続が入ります。シークレットは返されません。
bi connection show#
接続とその直近のテストを確認します。
bi connection show <id>| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | 接続(bic_…)。 |
screenrig bi connection show bic_01EXAMPLECONNECTION0000応答には、kind、config(Grafana では url と org_id、Power BI では tenant_id と client_id、Tableau では url、site、client_id、secret_id、username)、secret {set, hint}、embed_origin(プロジェクトの埋め込みホストで、接続アプリのドメイン許可リストで指定するもの)、last_test が含まれます。
bi connection update#
接続の名前、アドレス、組織、テナント、アプリ、サイト、ユーザー、シークレット、または Web 接続の場合はそのサインインとクッキーを変更します。
bi connection update <id> [--name NAME] [--url URL] [--org-id N] [--tenant-id ID] [--client-id ID]
[--site SITE | --default-site] [--secret-id ID] [--username USER]
[--token-file FILE | --secret-file FILE | --password-file FILE | --clear-password]
[--login-mode auto|steps|none] [--login-url URL] [--totp-file FILE | --clear-totp]
[--steps FILE] [--cookies-file FILE | --clear-cookies] [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | 接続(bic_…)。 |
--name NAME | string | いいえ | 変更なし | 接続の名前を変更します。 |
--url URL | string | いいえ | 変更なし | Grafana、または Tableau のサーバーか pod の新しいアドレス。 |
--org-id N | integer | いいえ | 変更なし | トークンが属する Grafana の組織。 |
--tenant-id ID | string | いいえ | 変更なし | Power BI 接続の Microsoft Entra テナント。 |
--client-id ID | string | いいえ | 変更なし | Power BI 接続の Application (client) ID、または Tableau 接続アプリのクライアント ID。 |
--site SITE | string | いいえ | 変更なし | Tableau 接続のサイトコンテンツ URL。--default-site とは併用できません。 |
--default-site | boolean | いいえ | オフ | Tableau Server: デフォルトサイトにサインインします。--site とは併用できません。 |
--secret-id ID | string | いいえ | 変更なし | Tableau 接続アプリのシークレット ID。 |
--username USER | string | いいえ | 変更なし | スクリーンのビューの表示に使う Tableau ユーザー、または Web 接続のサービスアカウント。 |
--token-file FILE | string | いいえ | 変更なし | Grafana: サービスアカウントトークンをこのファイルから、または標準入力を表す - から読み取ります;保存済みのトークンが置き換えられます。--token-file、--secret-file、--password-file、--clear-password のうち指定できるのは 1 つまでです。 |
--secret-file FILE | string | いいえ | 変更なし | Power BI または Tableau: シークレットの値をこのファイルから、または標準入力を表す - から読み取ります;保存済みのシークレットが置き換えられます。 |
--login-mode MODE | string | いいえ | 変更なし | Web: サインインの方法(auto、steps、none のいずれか)。 |
--login-url URL | string | いいえ | 変更なし | Web: サイトのサインインページの https アドレス。新しいオリジンには同じコマンドで --password-file が必要で、保存済みのパスワードが、指定していないページに送られることはありません。 |
--password-file FILE | string | いいえ | 変更なし | Web: サービスアカウントのパスワードをこのファイルから、または標準入力を表す - から読み取ります;保存済みのパスワードが置き換えられます。 |
--clear-password | boolean | いいえ | オフ | Web: 保存済みのパスワードを削除します。 |
--totp-file FILE | string | いいえ | 変更なし | Web: 認証アプリのキーをこのファイルから、または標準入力を表す - から読み取ります;保存済みのキーが置き換えられます。--clear-totp とは併用できません。 |
--clear-totp | boolean | いいえ | オフ | Web: 保存済みの認証アプリのキーを削除します。--totp-file とは併用できません。 |
--steps FILE | string | いいえ | 変更なし | Web: サインインスクリプト(最大 30 ステップの JSON 配列)を、ファイルまたは - から読み込んで置き換えます。 |
--cookies-file FILE | string | いいえ | 変更なし | Web: ファイルまたは - から、サインイン済みのブラウザーからエクスポートしたクッキーセット(bi connection create web が受け付ける形式)に置き換えます。--clear-cookies とは併用できません。 |
--clear-cookies | boolean | いいえ | オフ | Web: 保存済みのクッキーセットを削除します。--cookies-file とは併用できません。 |
--expect-rev REVISION | integer | いいえ | なし | 接続がこのリビジョンでない限り変更を拒否します(revision_conflict、終了コード 6)。 |
screenrig bi connection update bic_01EXAMPLECONNECTION0000 --token-file new-token.txt
screenrig bi connection update bic_01EXAMPLECONNECTION0000 --password-file new-password.txt
screenrig bi connection update bic_01EXAMPLECONNECTION0000 --clear-totp --clear-cookies
screenrig bi connection update bic_01EXAMPLECONNECTION0000 --url https://grafana.example.com --token-file new-token.txt --name "Ops Grafana" --expect-rev 2少なくとも 1 つの変更が必要で、省略したシークレットは保持されます。別のホスト、スキーム、ポートの新しいアドレスには、同じコマンドで --token-file(Grafana)または --secret-file(Tableau)が必要です: 保存済みのシークレットは、保存時のアドレスにしか送信されません。新しいアドレス、組織、テナント、アプリ、サイト、ユーザー、シークレットは last_test を消去し、接続のビュー用にキャッシュされたレンダリングをすべて破棄するので、もう一度テストしてください。認証情報またはサインイン設定を変更すると、停止していた Web セッションが解除されます。
bi connection test#
認証情報を確認します: Grafana のトークンと Image Renderer、Power BI のアプリとそのワークスペース、または Tableau のサインイン。
bi connection test <id>| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | 接続(bic_…)。 |
screenrig bi connection test bic_01EXAMPLECONNECTION0000Grafana: token(Grafana が受け入れること)と image_renderer(プラグインが一覧にあること。ない場合は警告のみで、リモートレンダリングサービスはプラグインとして表示されないため)。Power BI: token(Microsoft Entra がアプリ向けにトークンを発行したこと)と workspaces(アプリから見えるワークスペース。なければ失敗し、拒否された場合は、テナントの開発者設定とワークスペースでのアプリのメンバーまたは管理者のロールが示されます)。Tableau: 接続のユーザーとしての signin(コンテンツ読み取りトークン付き)に続いてサインアウトします。拒否はベンダー自身の回答を含む失敗したチェックで、結果は last_test として保存されます。このテストは、Tableau のドメイン許可リスト、容量、行レベルセキュリティ、ダッシュボードの権限は判定しません: ビューを実際に確認するのは bi view test です。
bi connection browse#
接続が表示できるものを一覧表示します: Grafana のダッシュボードとパネル、Power BI のワークスペースとレポート、または Tableau のビュー。
bi connection browse <id> [--query TEXT] [--dashboard UID] [--workspace ID]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | 接続(bic_…)。 |
--query TEXT | string | いいえ | なし | 名前が一致するダッシュボード、ワークスペース、レポート、ビューのみ。 |
--dashboard UID | string | いいえ | なし | Grafana: 代わりにこのダッシュボードのパネルを一覧表示します。 |
--workspace ID | string | いいえ | なし | Power BI: 代わりにこのワークスペースのレポートを一覧表示します。 |
screenrig bi connection browse bic_01EXAMPLECONNECTION0000 --query lobby
screenrig bi connection browse bic_01EXAMPLECONNECTION0000 --dashboard abc123
screenrig bi connection browse bic_01EXAMPLECONNECTION0000 --workspace f089354e-8366-4e18-aea3-4cb4a3a50b48 --query salesdata.items は、Grafana ではトークンで表示できる各ダッシュボードの uid、title、folder、tags を、--dashboard を付けるとそのパネルの id、title、type を一覧表示します(行は平坦化されるため、折りたたまれた行の中のパネルも一覧に含まれます);Power BI ではアプリから見える各ワークスペースの id と name を、--workspace を付けるとそのレポートの id、name、embed_url を一覧表示します;Tableau では接続のユーザーから見える各ビューの path(Workbook/View の形式)と name を一覧表示します。これらの値は bi view create で使います。
bi connection delete#
どのビューも使っていない接続を削除します。
bi connection delete <id> [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | 接続(bic_…)。 |
--expect-rev REVISION | integer | いいえ | なし | 接続がこのリビジョンでない限り削除を拒否します(revision_conflict、終了コード 6)。 |
screenrig bi connection delete bic_01EXAMPLECONNECTION0000ビューがその接続を使っている間は、それらを示して resource_conflict(終了コード 5)が返ります;先にそれらのビューを削除してください。
BI ビュー
ビューは、Grafana 接続の 1 つのダッシュボードまたはパネル、Power BI ワークスペースの 1 つのレポート、Tableau サイトの 1 つのビュー、Web 接続の 1 つのページ、または接続が不要な公開リンク(Grafana の公開ダッシュボード、Power BI の Publish to web リンク、Tableau Public のビジュアライゼーション)です。ビュー ID は biv_ で始まり、ビューは自身のプロジェクトのスクリーンでのみ再生されます。
ビューの embed_url を、content_fit fill を指定した iframe プリミティブに入れて、通常どおり公開します: プレイリストは認証情報を保持しません。Grafana と Web のビューは、--refresh ごとにサーバー上で画像として描画され、同じサイズのすべてのスクリーンで共有されます。そのため、ロビーのスクリーン 10 台でもレンダリングは 1 回で、スクリーンがシステムと通信することはありません;キャプチャが失敗している間は、最後の正常な画像が画面上に残ります。Power BI のレポートと Tableau のビューは、サーバーが生成して更新する表示専用トークンで埋め込まれ、スクリーンがシークレットを保持することはありません。画像が描画されるのは、スクリーンのマニフェストがそのビューを指定している間だけです。
読み取りには読み取りアクセスが必要で、変更にはすべて Manage アクセスが必要です。各ターゲットフラグは特定の種類の接続に対応し、使う値は bi connection browse ID で一覧表示されます。
bi view create#
接続のダッシュボード、パネル、レポート、Tableau ビュー、または公開リンクのビューを追加します。
bi view create (--connection-id ID (--url URL | --dashboard UID | --workspace ID --report ID | --view WORKBOOK/VIEW)
| --public-url URL) [--name NAME] [--refresh DURATION] [--fit contain|cover|fill] [--rotate DURATION]
[--panel ID] [--from TIME] [--to TIME] [--var NAME=VALUE]... [--theme dark|light] [--timezone ZONE]
[--page NAME]... [--all-pages] [--rotate-sheets] [--wait-for CSS] [--wait-ms MS] [--clip CSS]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
--connection-id ID | string | --public-url なし | なし | 表示元の接続(bic_…)。 |
--url URL | string | ターゲット 1 つ | なし | 接続の Grafana ホスト上のダッシュボードのアドレス、Power BI のレポートのアドレス、Tableau のビューのアドレス、または Web 接続の場合は公開ホスト上のページの https アドレス。ターゲットの残りの部分はそこから読み取られます。 |
--dashboard UID | string | ターゲット 1 つ | なし | Grafana: ダッシュボードの uid。アドレスの /d/ の後ろにある部分。 |
--workspace ID | string | ターゲット 1 つ | なし | Power BI: ワークスペース ID。--report とともに指定します。 |
--report ID | string | --workspace とともに | なし | Power BI: レポート ID。--workspace とともに指定します。 |
--view WORKBOOK/VIEW | string | ターゲット 1 つ | なし | Tableau: ビュー。アドレスの /views/ の後ろにある名前(一覧は bi connection browse)。 |
--public-url URL | string | ターゲット 1 つ | なし | Grafana の公開ダッシュボードリンク、Power BI の Publish to web リンク、または Tableau Public のビジュアライゼーションのアドレス。接続は不要で、ホストからライブで再生されます。単独で、または --name、--refresh、--fit、--rotate-sheets とともに指定します。 |
--name NAME | string | いいえ | ターゲットから | 1~80文字。 |
--refresh DURATION | string | いいえ | 5m | Grafana: 画像を再描画する頻度、30s から 24h。Web: ページを再描画する頻度、60s から 24h。Power BI と Tableau: レポートまたはビューがデータを更新する頻度、60s から 24h、更新しない場合は 0。 |
--fit FIT | string | いいえ | contain | Grafana と Web: 画像がスクリーンを埋める方法(contain、cover、fill のいずれか)。 |
--rotate DURATION | string | いいえ | なし | Power BI: 各ページを表示する時間、10s から 1h;--page を 2 つ以上指定する場合、または --all-pages を指定する場合に必要です。Tableau: 各シートを表示する時間;--rotate-sheets を指定する場合に必要です。 |
--page NAME | string | いいえ | なし | Power BI: 表示するページ(名前または表示名で指定)。繰り返し指定できます;ページはこの順序で表示されます。 |
--all-pages | boolean | いいえ | オフ | Power BI: 表示されるすべてのページを順に切り替えます。--rotate とともに指定します。 |
--rotate-sheets | boolean | いいえ | オフ | Tableau: ワークブックの公開済みシートを切り替えます。--rotate とともに指定します。 |
--panel ID | string | いいえ | ダッシュボード全体 | Grafana: ダッシュボード全体ではなく、このパネル 1 つを表示します。 |
--from TIME | string | いいえ | なし | Grafana: 時間範囲の始点(now-6h など)。 |
--to TIME | string | いいえ | なし | Grafana: 時間範囲の終点(now など)。 |
--var NAME=VALUE | string | いいえ | なし | Grafana: ダッシュボード変数。繰り返し指定できます。 |
--theme THEME | string | いいえ | dark | Grafana のテーマ(dark または light)。 |
--timezone ZONE | string | いいえ | なし | Grafana: ダッシュボードのタイムゾーン(Europe/Paris、utc、browser など)。 |
--wait-for CSS | string | いいえ | なし | Web: ページの準備ができたとき、かつサインイン済みの場合にだけ表示される要素の CSS セレクター。キャプチャはその要素を待ち、表示されないと bi_web_timeout で失敗します。 |
--wait-ms MS | integer | いいえ | なし | Web: 遅れて表示されるチャートのために、ページの準備ができてから待つミリ秒数、0〜10000。 |
--clip CSS | string | いいえ | ページ全体 | Web: 描画するページの部分の CSS セレクター。 |
screenrig bi view create --connection-id bic_01EXAMPLECONNECTION0000 --url 'https://grafana.example.com/d/abc123/lobby?orgId=1&viewPanel=4' --refresh 5m
screenrig bi view create --connection-id bic_01EXAMPLECONNECTION0000 --dashboard abc123 --panel 4 --from now-6h --to now --var host=web1 --theme light --name "Web CPU"
screenrig bi view create --public-url https://grafana.example.com/public-dashboards/TOKEN --name "Public status"
screenrig bi view create --connection-id bic_01EXAMPLECONNECTION0000 --workspace f089354e-8366-4e18-aea3-4cb4a3a50b48 --report 5b218778-e7a5-4d73-8187-f10824047715 --page Overview --page Detail --rotate 30s --name "Sales rotation"
screenrig bi view create --connection-id bic_01EXAMPLECONNECTION0000 --view Sales/Overview --rotate-sheets --rotate 30s --refresh 0 --name "Sales sheets"
screenrig bi view create --connection-id bic_01EXAMPLECONNECTION0000 --url https://app.example.com/dashboards/42 --refresh 5m --wait-for '#dashboard.loaded' --wait-ms 1500 --clip '#chart-grid'ターゲットはちょうど 1 つ指定します: --url、--dashboard、--report を付けた --workspace、--view、--public-url のいずれか。応答には data.embed_url が含まれます。次に bi view test を実行します。
Grafana: --url は、アドレスから orgId、viewPanel または panelId、from、to、var-*、theme を読み取ります。画像は Grafana のレンダリングサービスで描画され、同じサイズのすべてのスクリーンで共有されます。Grafana が停止している間、スクリーンはレンダリング時刻を隅に表示した最後の画像を保持します。公開ダッシュボードのリンクは Grafana からライブで再生されるため、Grafana は埋め込みを許可している必要があります(設定で allow_embedding = true): bi view test で確認できます。
Power BI: --url には、Power BI からコピーしたレポートのアドレス https://app.powerbi.com/groups/WORKSPACE/reports/REPORT を指定し、任意で /ReportSection のページを付けられます;または --workspace と --report を指定します。2 ページ以上には --rotate が必要で、--rotate には 2 ページ以上または --all-pages が必要です。--refresh 0 は、DirectQuery や自動ページ更新のレポートのように、自身で更新されるレポートに適しています。--fit は適用されません。Publish to web リンクは、リンクを知っている全員にレポートを表示し、Power BI が提供するとおりに再生され、--refresh ごとに再読み込みされ、ページの切り替えはありません。
Tableau: --url には、Tableau からコピーしたビューのアドレス https://HOST/t/SITE/views/WORKBOOK/VIEW、Tableau Cloud の https://HOST/#/site/SITE/views/WORKBOOK/VIEW、または WORKBOOK/VIEW だけを指定できます;アドレスは接続のホストとサイト上にある必要があります。--rotate-sheets と --rotate は互いに他方が必要です。--fit は適用されません。スクリーンから Tableau ホストに到達でき、そのホストのサードパーティクッキーを受け入れる必要があり、ビューの embed_origin は接続アプリのドメイン許可リストに含まれている必要があります。Tableau Public のビジュアライゼーション(--public-url https://public.tableau.com/app/profile/USER/viz/WORKBOOK/VIEW、またはその /views/ アドレス)には、接続もトークンも不要で、--rotate-sheets もそこで使えます。
Web: --url はページのアドレスで、--wait-for、--wait-ms、--clip は Web ビューにのみ適用されます。キャプチャが失敗しても、最後の正常な画像は画面上に残り、理由は status.last_error に示されます(bi_web_login_failed、bi_web_otp_required、bi_web_session_expired、bi_web_login_paused、bi_web_timeout、bi_web_navigation_failed、bi_web_blocked のいずれか)。
bi view list#
このプロジェクトの BI ビューを、ターゲット、頻度、ステータスとともに一覧表示します。
bi view listパラメーターなし。
screenrig bi view listdata.items にはプロジェクトのすべてのビューが、それぞれの embed_url とともに入ります。
bi view show#
ビューを確認します。embed_url と、画面上での直近の状況を表示します。
bi view show <id>| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | ビュー(biv_…)。 |
screenrig bi view show biv_01EXAMPLEVIEW0000000000応答には、connection_id、target(Tableau では view と rotate_sheets)、refresh_s、rotate_s、fit、status、embed_url が含まれます。status には last_ok_at と、code と detail を持つ last_error が入ります: Grafana がトークンを拒否した場合は bi_upstream_refused、レンダリングできなかった場合は bi_upstream_unavailable です。
bi view update#
ビューの名前、ターゲット、頻度、フィットを変更します。
bi view update <id> [--name NAME] [--refresh DURATION] [--fit contain|cover|fill] [--rotate DURATION]
[--url URL | --dashboard UID | --workspace ID | --view WORKBOOK/VIEW | --public-url URL] [--report ID]
[--page NAME]... [--all-pages] [--rotate-sheets] [--panel ID] [--from TIME] [--to TIME]
[--var NAME=VALUE]... [--theme dark|light] [--timezone ZONE] [--wait-for CSS | --clear-wait-for]
[--wait-ms MS] [--clip CSS | --clear-clip] [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | ビュー(biv_…)。 |
--name NAME | string | いいえ | 変更なし | ビューの名前を変更します。 |
--url URL | string | いいえ | 変更なし | ダッシュボード、レポート、Tableau ビューのアドレス、または Web ビューのページアドレス;ターゲット全体を置き換えます。他のターゲットフラグとは併用できません。 |
--dashboard UID | string | いいえ | 変更なし | Grafana: このダッシュボードを表示します;ターゲット全体を置き換えます。 |
--workspace ID | string | いいえ | 変更なし | Power BI: このワークスペースのレポートを表示します。--report とともに指定します;ターゲット全体を置き換えます。 |
--report ID | string | いいえ | 変更なし | Power BI: このレポートを、--workspace で指定したワークスペースまたは現在のワークスペースから表示します。 |
--view WORKBOOK/VIEW | string | いいえ | 変更なし | Tableau: このビューを表示します;ターゲット全体を置き換えます。 |
--public-url URL | string | いいえ | 変更なし | 公開リンク;ターゲット全体を置き換えます。 |
--rotate-sheets | boolean | いいえ | オフ | Tableau: ワークブックの公開済みシートを切り替えます。--rotate とともに指定します。 |
--page NAME | string | いいえ | 変更なし | Power BI: 表示するページ(名前または表示名で指定)。繰り返し指定できます;現在のページを置き換えます。 |
--all-pages | boolean | いいえ | オフ | Power BI: 表示されるすべてのページを順に切り替えます。 |
--rotate DURATION | string | いいえ | 変更なし | Power BI: 各ページを表示する時間、10s から 1h、1 ページの場合は 0。Tableau: 各シートを表示する時間、切り替えを停止する場合は 0。 |
--panel ID | string | いいえ | 変更なし | Grafana: このパネル 1 つを表示します。 |
--from TIME | string | いいえ | 変更なし | Grafana: 時間範囲の始点。 |
--to TIME | string | いいえ | 変更なし | Grafana: 時間範囲の終点。 |
--var NAME=VALUE | string | いいえ | 変更なし | Grafana: ダッシュボード変数を設定します。繰り返し指定できます;1 つの変数を設定し、他の変数は保持されます。 |
--theme THEME | string | いいえ | 変更なし | Grafana のテーマ(dark または light)。 |
--timezone ZONE | string | いいえ | 変更なし | Grafana: ダッシュボードのタイムゾーン。 |
--refresh DURATION | string | いいえ | 変更なし | 画像を再描画する、またはレポートを更新する頻度: Grafana は 30s から 24h;Web は 60s から 24h;Power BI と Tableau は 60s から 24h、なしの場合は 0。 |
--fit FIT | string | いいえ | 変更なし | Grafana と Web: 画像がスクリーンを埋める方法(contain、cover、fill のいずれか)。 |
--wait-for CSS | string | いいえ | 変更なし | Web: ページの準備ができ、サインイン済みのときに表示される要素。--clear-wait-for とは併用できません。 |
--clear-wait-for | boolean | いいえ | オフ | Web: 要素を待つのをやめます。--wait-for とは併用できません。 |
--wait-ms MS | integer | いいえ | 変更なし | Web: ページの準備ができてから待つミリ秒数、0〜10000;0 で待機がなくなります。 |
--clip CSS | string | いいえ | 変更なし | Web: 描画するページの部分。--clear-clip とは併用できません。 |
--clear-clip | boolean | いいえ | オフ | Web: ページ全体を描画し直します。--clip とは併用できません。 |
--expect-rev REVISION | integer | いいえ | なし | ビューがこのリビジョンでない限り変更を拒否します(revision_conflict、終了コード 6)。 |
screenrig bi view update biv_01EXAMPLEVIEW0000000000 --wait-for '#dashboard.loaded' --wait-ms 2000
screenrig bi view update biv_01EXAMPLEVIEW0000000000 --clear-wait-for --clear-clip
screenrig bi view update biv_01EXAMPLEVIEW0000000000 --theme light --var host=web2
screenrig bi view update biv_01EXAMPLEVIEW0000000000 --dashboard def456 --panel 2 --expect-rev 3
screenrig bi view update biv_01EXAMPLEVIEW0000000000 --page Overview --page Detail --rotate 45s
screenrig bi view update biv_01EXAMPLEVIEW0000000000 --view Sales/Detail少なくとも 1 つの変更が必要です。--url、--dashboard、--workspace、--public-url はターゲット全体を置き換え、--panel、--from、--to、--var、--theme、--timezone はビューの現在の Grafana ターゲットを、--report、--page、--all-pages は Power BI のターゲットを、--view と --rotate-sheets は Tableau のターゲットを変更します。--page はページの一覧を置き換えます;消去するには、--workspace と --report をもう一度 --rotate 0 とともに指定します。--rotate 0 だけを指定すると、Tableau ビューはシートの切り替えを停止します。新しいターゲットはステータスを消去し、キャッシュ済みレンダリングを破棄し、スクリーンは再公開しなくても、次の更新で変更を取得します。ビューは接続と種類を保持します。
bi view test#
ビューを実際に確認します: Grafana のレンダリング、Power BI の埋め込みトークン、Tableau の検索、または公開リンク。
bi view test <id> [--output FILE [--width PIXELS] [--height PIXELS]]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | ビュー(biv_…)。 |
--output FILE | string | いいえ | なし | Grafana: チェックを実行する代わりに、レンダリングした PNG をここに保存します。 |
--width PIXELS | integer | いいえ | 1920 | 保存する画像の幅、1〜10000。--output が必要です。 |
--height PIXELS | integer | いいえ | 1080 | 保存する画像の高さ、1〜10000。--output が必要です。 |
screenrig bi view test biv_01EXAMPLEVIEW0000000000
screenrig bi view test biv_01EXAMPLEVIEW0000000000 --output lobby.png --width 1920 --height 1080Grafana: 接続ビューは、共有キャッシュを使わず、ビューのステータスにも触れずに、実際にレンダリングされます。Grafana がトークンを拒否した場合、レンダラーがない場合、ダッシュボードを認識しない場合、data.ok は Grafana の理由とともに false になります;失敗したテストもデータであり、終了コードは 0 です。公開前に、保存された PNG を開いて確認してください。公開リンクでは、テストはページを取得し、Grafana がビューの埋め込みページのフレーム化を許可していることを確認します。
Tableau: 接続ビューは接続のユーザーとしてサインインしてビューを検索します(signin、view);ユーザーが見られないビューや、大文字小文字が違う名前は、パスを示す view チェックの失敗になります。Tableau Public のビューは、ワークブックが存在するかを Tableau Public に問い合わせます。Power BI: 接続ビューはレポートを読み取り(report)、そのための実際の表示専用の埋め込みトークンを生成します(embed_token);拒否された場合は、行レベルセキュリティのあるデータセット、401 または 403(テナント設定またはワークスペースのロール)、アプリから見えないレポートなど、Power BI 自身の理由が表示されます。Publish to web リンクは取得され、そのフレーミングヘッダーが読み取られます。
このテストは、画像の内容、ビューが指定するページ、容量、Tableau のドメイン許可リストは判定しません。
bi view delete#
ビューを削除します。
bi view delete <id> [--expect-rev REVISION]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | ビュー(biv_…)。 |
--expect-rev REVISION | integer | いいえ | なし | ビューがこのリビジョンでない限り削除を拒否します(revision_conflict、終了コード 6)。 |
screenrig bi view delete biv_01EXAMPLEVIEW0000000000
screenrig bi view delete biv_01EXAMPLEVIEW0000000000 --expect-rev 3ビューの embed_url をまだ表示しているスクリーンは、プレイリストが変わるまで not_found を返します。
サポート会話
Standardを含むすべてのプランにはCLIとダッシュボード右下のマスタード色のSupportボタンからのAIサポートが含まれ、Premium、Education、Enterprise では担当者を呼ぶこともできます。会話は履歴を保持します。ダッシュボードは未読スタッフ返信を強調表示し、Markdown(クリック可能なリンク、リスト、コードを含む)をレンダリングします。送信はEnter、新しい行はShift+Enterです。スタッフ返信は可能な場合は名前とSlackアバターを表示し、screenRIGスタッフとscreenRIGロゴがフォールバックです。顧客は一般的な人物アバターを使用します。
ドキュメントとあなたのエージェントを使って問題を診断し解決してください。レポート送信には feedback bug または feedback feature を使用してください。
support status
support submit (--body TEXT | --body-file FILE) [--conversation-id ID] [--human-requested]
support history [--before ID]
support history --conversation-id ID [--after SEQUENCE]
support follow [--conversation-id ID] [--after SEQUENCE] [--timeout MS]
support read --conversation-id ID --sequence SEQUENCE
support close --conversation-id IDsupport status で開始します。報告されるのは chat_allowed(このプロジェクトが会話を開始または継続できるか)、human_available(リクエストに応じて担当者が参加できるか)、staffed(スタッフが現在対応時間内か)、hours(スタッフ対応時間)です。support submit は1〜4000文字のメッセージを1件受け付けます。会話を開始するには --conversation-id を省略し、フォローアップには返された data.conversation.id を使用してください。不確実な送信を再試行するときは同じ冪等キーを保持してください。
履歴ページには最大100行が含まれます。会話ページのdata.nextを--beforeとして渡すと過去の会話、または最後のメッセージシーケンスを--afterとして渡すと新しいメッセージが取得できます。support followは返信をSSEでストリームし、最後のプロジェクトシーケンスから再開し、リプレイを抑制します。会話フィルターは、そのプロジェクトカーソルを進めながら表示する返信を選択します。support readは既読のスタッフ返信を確認します。解決済みの会話はsupport closeまたはダッシュボードの会話を終了ボタンで終了します。終了しても履歴は保持され、追加のヘルプが必要な場合は新しい会話を開始してください。
screenrig support submit --body "How do I assign a playlist? Here are the checks I ran."
screenrig support follow --conversation-id sc_CONVERSATION --after 0 --timeout 60000
screenrig support submit --conversation-id sc_CONVERSATION --body "Please ask a human." --human-requestedLuna(AIアシスタント)はすべてのプランですぐに回答します。リクエストに応じて担当者が会話に参加できるのは Education、Premium、Enterprise のみ(human_available)で、担当者を呼び出すとその会話のAIは一時停止します。Standard と Plus ではリクエストは無視され、Luna が回答します。スタッフ対応時間はバンクーバー時間の月曜から金曜の09:00~17:00で、B.Cの法定休日を除きます。この時間は担当者が回答する時間帯だけを決めます。サポートメッセージに資格情報を含めないでください。
フィードバック
バグ報告と機能要望はプロジェクト単位で不変です。種類はコマンドから取得し、本文フィールドからは取得しません。修正は編集ではなく新規提出です。
feedback bug#
screenRIG に対してバグレポートを提出してください。
feedback bug <title> (--body TEXT | --body-file FILE) [--command "GROUP ACTION"] [--no-context]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<title> | string | はい | なし | 最大120文字。 |
--body TEXT | string | 2つのうちの1つ | なし | 本文インライン、最大4000文字。 |
--body-file FILE | パス | 2つのうちの1つ | なし | ファイルから本文を読み取ります。複数行のレポートに適しています。 |
--command | string | いいえ | なし | レポート対象のコマンドはコマンドパスのみで、最大4つの小文字単語(例:media upload)です。実行したコマンドラインからは取得しません。 |
--no-context | boolean | いいえ | オフ | CLIバージョン、オプションのコマンドパス、プラットフォームを含む診断エンベロープを省略します。 |
screenrig feedback bug "Playlist stalls after assignment" --body-file ./report.md --command "screen assign"サーバーは資格情報に一致するテキストを削除ではなく拒否し、フィールドレベルのガイダンスを返して書き直しと再送を促します。同じ冪等キーでの正確な再試行は 24 時間元の送信を返します。
feedback feature#
機能リクエストを提出してください。
feedback feature <title> (--body TEXT | --body-file FILE) [--command "GROUP ACTION"] [--no-context]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<title> | string | はい | なし | 最大120文字。 |
--body TEXT | string | 2つのうちの1つ | なし | 本文インライン、最大4000文字。 |
--body-file FILE | パス | 2つのうちの1つ | なし | ファイルから本文を読み取ります。 |
--command | string | いいえ | なし | リクエスト対象のコマンドはコマンドパスのみです。 |
--no-context | boolean | いいえ | オフ | 診断エンベロープを省略します。 |
screenrig feedback feature "Add a dry-run flag" --body "Preview a change first."feedback list#
このプロジェクトの自分の提出物一覧
feedback list [--kind bug|feature]| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
--kind | string | いいえ | 両方の種類、新しい順 | bug または feature。どちらか一方の種類に絞って表示します。 |
screenrig feedback list --kind bug広告
招待されたネットワークで広告を購入するか、所有するスクリーンで広告枠を販売します。すべてのコマンドはまず screenrig project capabilities を読みます:購入は advertiser 機能が必要、販売は所有スクリーンが必要。金額は小数の mcr(ミリクレジット)文字列で報告されます。すべてのフラグに screenrig ads COMMAND --help --json を実行してください。購入と販売のワークフローは 開始 に、料金は 料金 にあります。
ads networks#
購入者:このプロジェクトが招待されたネットワークを一覧表示し、1つのネットワークの許可された在庫とスロットを検査。
ads networks list
ads networks show <seller-project-id>screenrig ads networks listads network#
販売者:このプロジェクトの独自ネットワークを検査または作成し、デフォルト料金を設定します。
ads network show
ads network create --name NAME
ads network rate --rate-mcr-per-15s MCR --expect-rev REVISIONscreenrig ads network rate --rate-mcr-per-15s 1000 --expect-rev 3料金は完了した再生の15秒ごとです。変更された有効料金は、各購入者が新しい見積もりを承諾するまで影響を受けるキャンペーンを一時停止します。
ads inventory#
販売者:所有するスクリーンを広告のオンまたはオフにし、招待された購入者に説明します。
ads inventory list
ads inventory update <screen-id> [--enabled | --disabled] [--site-name NAME]
[--city CITY] [--region REGION] [--venue-type TYPE] [--audience-tags TOKENS]
[--placement TEXT] [--public-description TEXT]
[--rate-mcr-per-15s MCR | --clear-rate]
[--impressions-per-hour N | --clear-impressions-per-hour] [--expect-rev REVISION]screenrig ads inventory update scr_LOBBY --enabled --venue-type cafe省略されたフラグは現在の値を保持します。新しい在庫行には--enabledまたは--disabledが必要です。--impressions-per-hourは、画面が 1 時間に届けるインプレッション数の推定値を記録します。再生が完了するたびに、この推定値に再生秒数を掛けて 3600 で割った値が、ads reports spend、ads reports delivery、ads direct reportのestimated_impressionsとして加算されます。
ads slots#
販売者:再利用可能な広告スロットを定義します。スロットは、その広告スロットページがプレイリストに配置されるまで、画面上の何も変更しません。
ads slots list
ads slots create --name NAME --accepted-media image,video
[--max-image-duration-ms MS] [--max-video-duration-ms MS]
[--rate-mcr-per-15s MCR] [--enabled | --disabled] [--vast-tag-url URL]
ads slots update <slot-id> --expect-rev REVISION [same fields] [--clear-vast-tag-url]screenrig ads slots create --name "Lobby break" --accepted-media image,video
screenrig ads slots create --name "Lobby video" --accepted-media video --vast-tag-url https://ads.example.com/vast.xml
screenrig ads slots update ads_LOBBY --clear-vast-tag-url --expect-rev 2--vast-tag-url は販売者自身の VAST 2〜4 広告タグを設定します。招待されたキャンペーンが自身のスクリーンの枠を埋めない場合に試行されます。この枠は動画を受け入れる必要があります。URL はポート 443 または 8443 の HTTPS で公開ホストに接続します。バックエンドが取得し、最大 5 件の Wrapper をたどり、選択されたプログレッシブ MP4 または WebM をプロジェクトのメディアに取り込みます。Impression、creativeView、start は受理された開始時に、complete は受理された完了時に、Error は失敗時に発火します。クォータイルトラッカーはありません。[CACHEBUSTING]、[TIMESTAMP]、[SCREENRIG_SCREEN_ID]、[SCREENRIG_SLOT_ID]、[SCREENRIG_PAGE_ID] のマクロが展開され、購入者にはタグは表示されません。update では --vast-tag-url がタグを置き換え、--clear-vast-tag-url でタグを削除します。両方は併用できず、どちらも省略すると保存済みタグが維持されます。ads slots list は vast_tag_url を所有する販売者に表示します。
Advertising invitations#
上記の共有invitationsコマンドを使用してください。
screenrig invitations create --kind ad-buyer --email owner@bakery.example --screen-id scr_LOBBY --policy review_required
screenrig invitations list --kind ad-buyer
screenrig invitations revoke ID
招待された人がダッシュボードで承諾します。サインインした人は購入プロジェクトを選択し、新しいpasskey証明で確認します。ログインしていない人は承諾時にアカウントと広告主専用プロジェクトを作成します。
ads memberships#
販売者:承認された購入者のレビュー方針と在庫範囲を変更または取り消します。
ads memberships list
ads memberships update <membership-id> --expect-rev REVISION
[--policy trusted|review_required] [--screen-id IDS] [--slot-id IDS]
ads memberships revoke <membership-id>screenrig ads memberships list取り消しは新しい広告再生を停止し、財務履歴を保持します。
ads creatives#
購入者:準備完了の所有メディアを承認済みコピーの不変クリエイティブにバインド。
ads creatives list
ads creatives create --media-id ID --copy TEXT
ads creatives show <creative-id>screenrig ads creatives create --media-id med_123 --copy "Fresh bread daily"ads campaigns#
購入者:キャンペーンを作成し、価格を設定し、見積もりを承諾して有効化。
ads campaigns list | show <campaign-id>
ads campaigns create <file>
ads campaigns update <campaign-id> <file> --expect-rev REVISION
ads campaigns preview <campaign-id> [--expect-rev REVISION]
ads campaigns activate <campaign-id> --quote-id ID --expect-rev REVISION
ads campaigns pause | resume <campaign-id> --expect-rev REVISION
ads campaigns accept-rates <campaign-id> --quote-id ID --expect-rev REVISIONscreenrig ads campaigns preview cmp_123ドラフトは何も予約しません。preview は時間制限付き見積もりを返し、何も消費しません。activate はその正確な見積もりを要求します。販売者レート変更後は、新しい見積もりでのみ accept-rates がキャンペーンを再開します。
キャンペーンの下書きには、広告主カテゴリ一覧からオプションの category を指定できます。同じカテゴリの広告 2 本が、1 つの画面の同じ広告ブレイクで再生されることはありません。
ads direct#
販売者:screenRIG 外の広告主との自社の取引を、自社の画面で予約します。
ads direct list | show <campaign-id>
ads direct create <file>
ads direct update <campaign-id> <file> --expect-rev REVISION
ads direct pause | resume | end <campaign-id> --expect-rev REVISION
ads direct availability <file>
ads direct report <campaign-id> [--from TIMESTAMP] [--to TIMESTAMP] [--format json|csv] [--output FILE|-]screenrig ads direct create campaign.json下書きには name、advertiser、オプションの category、flight_start と flight_end、media_ids(自社の準備済み画像または動画)、オプションの goal_plays、オプションの price(1,000 回再生あたりの cpm または flat で、amount と ISO 4217 の currency を含む)、およびターゲティング(screen_ids、slot_ids、venue_types、cities、tags、dayparts)を指定します。空のリストはオプトインしたすべての画面または広告枠を意味します。直接キャンペーンは、招待された購入者より先に広告ブレイクを埋めます。目標は配信期間全体に均等に配分され、遅れている間は優先して再生されます。目標のないキャンペーンは、配信期間中の対象となるすべての広告枠を使用します。クレジットは移動しません。広告主への請求はお客様が行い、価格はレポートの金額算出に使われます。
availability は同じターゲティングと配信期間のクエリを読み取り、まだ予約できる再生数を見積もります。対象画面の最近の広告枠の発生数から、他の直接目標がまだ必要とする再生数を差し引いた値です。見積もりを超える目標は、下書きが "overbook": true を設定しない限り goal_overbooked を返します。report は目標に対する再生数、ペース、金額、再生されなかった再生数、および UTC の日・画面・広告枠・メディアごとの行を一覧表示します。end は取り消せません。
ads reviews#
販売者:review_required で購入者から提出された正確なクリエイティブバージョンを承認、拒否、または変更を要求します。
ads reviews list
ads reviews show <review-id>
ads reviews approve <review-id>
ads reviews reject <review-id> --reason TEXT
ads reviews request-changes <review-id> --note TEXTscreenrig ads reviews request-changes arv_123 --note "Use the new logo"request-changes は購入者にメモを送信します。修正版を提出するには、修正したメディアを新しいクリエイティブとして紐付け、新しいキャンペーンに追加してから、新しい見積もりで preview と activate を実行します。代わりのキャンペーンには独自の予算と審査履歴があります。配信が重複しないように、代わりのキャンペーンを有効化する前に元のキャンペーンを一時停止してください。広告クリエイティブの審査は、プレイリストやスクリーンの変更と同じく、ダッシュボードの「審査」ページで行います。
ads reports#
購入者としての支出または販売者としての配信を読み取ります。
ads reports spend --campaign-id ID
ads reports delivery --from TIMESTAMP --to TIMESTAMP
ads reports fill [--from TIMESTAMP] [--to TIMESTAMP]screenrig ads reports delivery --from 2026-09-01T00:00:00Z --to 2026-10-01T00:00:00Z期間の総配信数、手数料、純額を報告します。購入者のレポートは販売者の他の収入を表示しません。fill は最大 35 日間について、画面が要求した広告枠の発生数、そのうち直接キャンペーン、招待された購入者、VAST タグが埋めた数、および残りが空のままだった理由(no_demand、ineligible、separated、capped)を示します。
プレイリストの準備、公開、編集
画像や動画が準備できている場合は、再生順に全画面プレイリストを作成してください:
screenrig playlist init med_POSTER med_VIDEO --name "Lobby loop" --screen-id scr_LOBBY --output lobby.json
screenrig playlist validate lobby.json
screenrig screen publish scr_LOBBY lobby.json
screenrig screen screenshot scr_LOBBYドキュメントを検証して公開し、screen screenshot で実際のスクリーンを確認します。playlist init はローカルの画像/動画ファイル、準備済み med_ ID、ピン留めされた rel_ アプリケーションリリース、再生順のHTTPまたはHTTPS iframe URL(混合入力を含む)を受け入れます:
screenrig playlist init ./poster.png med_VIDEO rel_APP https://example.com --name Lobby --screen-id scr_LOBBY --output lobby.jsonローカルファイルは通常のメディア経路を通じてアップロードされ、準備完了を待ちます。これは--no-transcodeが提供されない限りffmpegとffprobeが必要です。準備はローカルドキュメントを書き込み、メディアをアップロードする場合がありますが、リモートプレイリストを作成せず、スクリーンを割り当てません。既存のメディアは準備完了でなければなりません。HTTPおよびHTTPS URLにはLANホストや認証情報を含めることができ、準備中にページが取得されることはありません。PlayerのWebアプリには、ユーザー名やパスワードを含まないHTTPS URLが必要です。
リトライ可能なファイル準備には、最初の試行で--idempotency-keyを選択し、同じファイルと入力順でサーバーリプレイウィンドウ内なら再利用します。各ファイルごとにアップロードキーが割り当てられます。明示的なキーがない場合、新しい呼び出しごとに新しいキーが発行されます。アップロード済みメディアは後の準備失敗でも保持されます。media listを確認し、不完全な結果を調整する際はその ID を再利用してください。
各入力は、黒背景・200msクロスフェード付きの全画面ページになります。画像と動画は--fit contain|cover|fill(デフォルトcontain)を使用します。動画はミュート、ループなし、再生完了で次に進みます。他のページは--duration-ms(デフォルト8000)を使用します。アプリケーションやiframeはfillを使用し、アプリリリースはタイマー進行でコントローラー権限なしで固定されます。アプリ制御の進行はドキュメントを編集してください。リリースの準備状況や実際の再生はサーバーと意図したPlayerで確認してください。公開時に、対象となる公開HTTPS iframeページのレスポンスヘッダーを確認できます。X-Frame-Options または frame-ancestors がフレーム化を拒否するページは、Playerウェブ、macOS、Samsung Tizen、BrightSign の各 Player では表示できません。公開時に拒否を検出した場合も、書き込みは成功します。screen publish と playlist create|update|patch はページとプリミティブを示す iframe_framing_refused 警告を出力し、events list は playlist.iframe_framing_refused 警告を表示します。
--screen-idを指定してターゲットの寸法とリビジョンを読み取ります。結果にはdata.screen_id、data.screen_revision、data.publish.argvが含まれます。この引数配列をシェル分割なしでバンドルされたscreenrigランチャーに渡してください:パス、設定、API起点を保持します。後のスクリーン変更を防ぐために--expect-revを明示的に追加してください。ターゲットメタデータは作成ドキュメントの外に保持されます。
キャンバスを上書きするには、--target-widthと--target-heightの両方を指定します。これらはスクリーンなしでも機能し、その場合は公開引数は返されません。不明または複数の報告されたサーフェスは明示的な寸法が必要です。出力ファイルはデフォルトで排他です。既存のオーサリングファイルを原子操作で置き換えるには--overwriteを使用します。親ディレクトリは自動作成されます。明示的な寸法のあるURLとリリースIDの入力はログインなしで動作します。
screen publish <screen-id> <file> は新しいプレイリストを作成し、オプションの スクリーン リビジョンガードで割り当て、割り当て結果を読み取ります。名前で既存のプレイリストを更新することはありません。表示名は重複する場合があります。明示的な playlist update にはプレイリストIDを使用してください。JSON 結果には playlist_id、playlist_revision、screen_id、screen_revision、assignment_verified、playback_verified が報告されます。割り当ての検証は再生の証明にはなりません。スクリーンショットや関連する再生証拠を個別にリクエストして確認してください。
プロジェクトがエージェントの変更にレビューを要求するか、セッションにProposeアクセスがある場合、プレイリストまたはその割り当てが提案されるとscreen publishは停止します:stageはpending_reviewで、結果は両方のレビューを示し、エンベロープはok: trueのままです。人が承認するまで何も再生されません。変更内容をレビュアーに伝えるには--note TEXTを追加してください。詳細はレビューを参照。
公開はプライベートなローカルジャーナルを自動保存します。あいまいな失敗後は同じコマンドと入力、同じ設定で繰り返して再開してください。割り当て失敗前にプレイリスト作成が成功していれば、エラーは作成済みプレイリストを示します。削除や別の作成開始で回復しないでください。リビジョン競合はスクリーンを確認し意図した割り当てを調整する必要があります。既に作成済みのプレイリストはscreen assignで明示的に割り当て可能です。公開は期待リビジョンを自動更新しません。未完の回復は24時間のサーバー冪等性ウィンドウ後に停止します。書き込み前に確認と調整を行ってください。
既存のプレイリストを編集するには:
screenrig playlist show pl_EXISTING --output lobby.json
screenrig playlist update pl_EXISTING lobby.jsonplaylist show --output は編集可能な {name, pages} ドキュメントを作成し、そのパス playlist_id とソース revision を標準出力に返します。オプションで --expect-rev でそのリビジョンを渡すことで更新を保護できます。動的セレクター、スケジュール、モーション、ピン留めされたアプリケーションリリースは保持され、サーバー由来のメディアやタイミングフィールドは削除されます。コメントは別管理です。単独の playlist show は検査応答です。--editable で --output がない場合、data.document、data.playlist_id、data.revision を返します。プレイリストを更新すると、それに割り当てられたすべてのスクリーンに影響します。レビュー中は playlist update が新しいドキュメントを提案し、playlist show は承認されるまでライブ版を返し続けます。
K/Vとコメントはstdinに--file -を受け入れます。stdoutの編集可能ドキュメントにはplaylist show ID --editable --humanを使います。アプリケーションとプレイリストの表示名は繰り返すことがあり、更新にはリソースIDを使います。
アプリケーションリリースを置き換えます。
app updateが成功した後、data.application.release_idを取得し、変更する正確なプレイリスト、ページ、アプリケーションプリミティブを特定します。置換をプレビューしてください:
screenrig playlist replace-release pl_EXISTING --page board-page --primitive board --release-id rel_NEWこれは読み取り専用の影響レビューです。data.previous_release_id、data.release_id、data.affected_screens(アーカイブされた割り当てを含む)を検査してください。直接適用するには --apply を使用します。この影響チェックに参加するには、プレビューの data.impact と共に --expect-impact も提供してください:
screenrig playlist replace-release pl_EXISTING --page board-page --primitive board --release-id rel_NEW --applyその他のプリミティブと設定は保持されます。更新はこの共有playlistに割り当てられたすべてのスクリーンに影響し、アーカイブされたスクリーンは後で使用するために新しいピンを保持します。--expect-impactが提供されると、変更された置換、リビジョン、または観察されたスクリーンの影響は新しいプレビューを必要とします。直接適用はスクリーン調査をスキップし、affected_screensは省略されます。すでにピン留めされたリリースは書き込みなしで成功します。割り当てはスナップショット後に変わる可能性があり、サーバーは--expect-revが提供された場合のみplaylistリビジョンを原子操作でチェックします。サーバーは適用時にリリースの利用可能性と所有権を検証します。既存のピンは適用まで変更されず、その後、影響を受けるスクリーンでマニフェストリビジョンと再生を確認します。レビュー中は--applyが新しいピンを提案し、レビュー担当者には--note TEXTを追加します。
プレイリストの検証、作成、更新、スクリーン公開は - を入力ファイルとして受け入れ、標準入力を読み取ります。JSON エンベロープは作成ファイルに書き込まれません。--expect-rev はリビジョンを保護します。フラグを省略すると、リビジョンの前提条件なしで現在のリソースを書き込みます。古いリビジョンを指定しても revision_conflict が返されます。
生成は--prompt TEXTまたは--prompt-file FILE、stdin用の--prompt-file -も受け付けます。ファイルは完全なプロンプトでトリミングなし。既存の4000文字制限が適用されます。プロンプトは診断から除外されます。
パスを短く保つ
バンドルされた CLI は api.screenrig.ai を使用し、プレーヤーは play.screenrig.ai を使用し、ダッシュボードは screenrig.ai/dashboard にあり、リリースは apps.screenrig.ai の下の分離オリジンを使用します。ネイティブプレーヤーパッケージはプライベートでサーバー仲介です。内部トランスポート参照 はトランスポートツールで利用可能です。
タグフィルターと再生バッチ
メディアは最大32個のユニークタグを持ち、それぞれ1~32文字の英数字です。セット全体をscreenrig media update med_ID --tags Summer,Drinksで置き換えます。--tag Summerは1つのタグで置き換え、--clear-tagはすべてのタグをクリアします。media list --tag Summerはセット内のどこかのメンバーシップに一致します。タグは大文字小文字を区別し、承認には使用されません。
動的セレクターは1つの tag または tags フィルターオブジェクトを使えます:
{
"by": "tag",
"tags": { "all": ["Summer", "Drinks"], "any": ["Lobby", "Patio"], "none": ["Expired"] },
"order": "random",
"one_at_a_time": false,
"batch_size": 3
}
all はすべての指定タグが必須、any はいずれか 1 つが必須、none は指定タグを除外します。グループ同士は AND で組み合わされ、指定しないグループは条件を課しません。少なくとも 1 つの空でないグループを指定してください。各グループは最大 32 個のユニークなタグを受け付けます。tag と tags は同時に使えません。none のみのフィルターは、除外タグ以外のその種別のすべての準備済みメディアを選択します。画像セレクターは画像を、動画セレクターは動画を選択します。
候補プールにはセレクターごとに最大1,024件の準備済みメディアが含まれ、ループ全体のスナップショットで1,024件のメディア参照があります。より大きな一致はエラーを返します。フィルターを絞ってください。batch_size はページ訪問ごとの1~1,024件の別の制限です。media_end ページでは、one_at_a_time: false が次のバッチを順に再生し、batch_size を省略すると残りのパスを再生します。one_at_a_time: true は出現ごとに1件を再生し、省略されたバッチサイズまたは batch_size: 1 のみを許可します。期間、アプリケーション、および audio_end ページには one_at_a_time: true が必要です。media_end の画像も dwell_ms が必要で、動画はそのページでループできません。
Player はプレイリストの開始時と各ループ境界で、すべての動的メディアプリミティブを 1 回のリクエストで解決します。メンバーシップはループ中に固定されます。アップロード、削除、タグ変更、利用可能期間の境界はマニフェストを再生成しません。次の更新時に削除または新たに除外されたアイテムは保留キューから外れ、新しいマッチは現在のパス終了時に参加します。最終バッチは要求数より少ない場合があり、次のパスから補充しません。ファイル名順はファイル名、次にメディア ID でソートします。ランダム順は完全なパスごとに一度シャッフルし、残りの順序をループ更新間で保持します。重み付き順は、後述の重みに従います。カーソルは画面、プレイリスト、ページ、プリミティブにローカルで、再起動をまたいで持続し、フィルター、順序、バッチポリシー変更時にリセットされます。オフライン再生は最後に成功したスナップショットを使用します。空のマッチはプリミティブと結果としての空ページをスキップします。
上記のセレクターオブジェクトをselector.jsonとして保存し、公開前に現在の候補カタログを検査してください:
screenrig media selector-preview selector.json --primitive video
プレビューはmatched_count、ファイル名順のcandidates(メディアIDとタグ付き)、正規化されたselectorポリシーを返します。ランダム順ではプールとシャッフルポリシーを表示しますが、プレーヤーのシャッフルを選択したり、カーソルを進めたり、再生許可を作成したり、マニフェストを変更したりしません。重み付き順では、各候補のweightとshare_percent、およびcycleを返します。--rect WxH(API ではrect: {width, height})はスロットのサイズで、fit: "aspect"では必須です。除外された一致はexcludedに理由aspect_mismatch付きで一覧表示されます。画像セレクターは--primitive imageを渡します。APIはPOST /api/selectors/previewで{ "primitive": "video", "selector": ... }と連携します。認証済みのプロジェクトと再生と同じマッチングルールを使用します。プレビュー後のカタログ変更は再生の次のループ境界で解決されます。
静的バンドルのエクスポートは動的マッチを正確な ID として固定します。1つずつまたは完全なパスの再生を保持します。batch_size と one_at_a_time: false を使う制限付きランタイムシーケンスは、エクスポート前にそのフィールドを削除するか明示的な ID を選択する必要があります。これにより静的バンドルでランタイムバッチカーソルが失われるのを防ぎます。
重み付きローテーションとアスペクト調整
order: "weighted"は、1 つのスロットのクリエイティブを重みに応じてローテーションし、各スポンサーが再生回数のシェアを維持できるようにします。weightsは、メディア ID(med_...)またはtag:NAMEを 1 から 1,000 の整数に対応付け、キーは最大 64 個です。byがall、tag、folderのいずれの場合にも使えます:
{
"by": "all",
"order": "weighted",
"one_at_a_time": true,
"weights": { "tag:Acme": 50, "tag:Globex": 30, "tag:Initech": 20 },
"fit": "aspect"
}
重み 50、30、20 は、毎サイクル、10 回の再生のうちちょうど 5 回、3 回、2 回になり、再起動はサイクルの途中から再開します。アイテムの重みは、そのメディア ID のキーがあればその値、なければ所持するタグのうちアルファベット順で最初のtag:NAMEキーの値で、そのキーを持つ選択内のアイテムで均等に分割されます。そのため、クリエイティブの数にかかわらずスポンサーのシェアは保たれます。どちらもない場合、アイテムは重み 1 の単独グループとして扱われます。1 サイクルは最大 4,096 回の再生で、正確な比率がそれより長いサイクルを必要とする場合にのみ、シェアはそこに丸められます。
重み付き順は 1 回の表示で 1 アイテムを再生するため、one_at_a_time: trueまたはbatch_size: 1を設定します。weightsは重み付き順で必須で、重み付き順でのみ使えます。それ以外では書き込みがinvalid_requestを返します。Web、Android、Apple、Windows、Linux の Player は、ホスト機能selector.weightedを宣言するリリースから重み付き順に対応します。それより古い Player はセレクターをランダム順で再生し、マニフェストの診断にはselector_order_downgradedが含まれます。
動的セレクターのfit: "aspect"は、幅と高さの比がスロットの矩形(ビデオウォールやディスプレイフレームを含む)の比の 5% 以内にあるファイルだけを残します。セレクターの解決時に読み取られます。縦向きのスロットで横向きのファイルが再生されることはありません。Player の変更は不要です。
screenrig media selector-preview は、重み付きまたはアスペクト調整されたすべてのセレクターの想定シェアを表示し、ダッシュボードのページエディターもインスペクターで同じ表を表示します。静的バンドルのエクスポートは、重み付きセレクターをファイル名順の正確な ID として固定し、重みは保持されません。
タグセレクターでの画面トークン
タグセレクターのtagと、そのtagsフィルターの各エントリには、{screen.field.NAME}または{screen.id}(scr_プレフィックスを除いた画面の識別子で、タグになります)を使えます。サーバーは、各画面のマニフェストとセレクターのスナップショットを作成するときにその画面のトークンを埋めるため、1 つのプレイリストで各画面専用のメディアを再生できます。メディアにLobbyまたはGarageのタグを付け、screenrig screen update scr_ID --field zone=Lobbyで各画面のフィールドを設定し、スロットに次のセレクターを指定します。
{ "by": "tag", "tag": "{screen.field.zone}", "one_at_a_time": true }
埋められた値はタグの規則(1~32 文字の英数字)に従います。フィールドがない画面、または値がタグでない画面は何も選択せず、そのスロットからはファイルを再生せず、マニフェストの診断にscreen_fact_missingまたはscreen_fact_invalidが含まれます。フィールドを変更すると、その画面のマニフェストが再発行されます。トークンを含むセレクターはプレビューできず(media selector-previewには具体的なタグが必要です)、playlist exportで固定することもできません。
iframe アドレスとアプリケーションの params のスクリーントークン
iframe の src と fallback_src には、http または https アドレスのパス、クエリ、フラグメントにスクリーントークンを含めることができ、application プリミティブの任意の params にも含められます。トークンは、小文字の英字、数字、アンダースコアからなる1〜32文字の名前を最大16個まで(ticket と policy は予約済み)、値は512文字までです。サーバーがスクリーンごとに値を埋め込みます:
| トークン | 値 |
|---|---|
{screen.id} | scr_ プレフィックスを除いたスクリーンの識別子。 |
{screen.name} | スクリーンの名前。 |
{screen.timezone} | スクリーンに保存されている IANA タイムゾーン。 |
{screen.field.NAME} | スクリーンのフィールド NAME。小文字の英字、数字、アンダースコアからなる1〜32文字。 |
{screen.location.lat}, {screen.location.lon} | 10進数の度で表した位置情報。 |
{screen.location.name}, {screen.location.address} | 地名と住所。 |
{
"primitive": "iframe",
"src": "https://maps.example.com/directory?kiosk={screen.field.kiosk_id}&level={screen.field.level}",
"title": "Directory"
}
書き込みは、テンプレートを波括弧を含めてそのまま保存します。各スクリーンのマニフェストは、URL 内の位置に合わせてすべての値をパーセントエンコードした、そのスクリーン専用のアドレスを持ちます。B 2&3 の kiosk_id は B%202%263 になります。スキーム、認証情報、ホスト、ポート、または YouTube リンク、Google や Microsoft のドキュメントリンク、BI ビューアドレス内のトークンは、src(または fallback_src)で invalid_request です。テンプレート化された src では、公開時にフレーム表示のチェックを行わず、プレビューにはテンプレートがそのまま表示されます。
値が欠けている(未設定のフィールド、位置情報なし)、または値を埋め込んだアドレスが2048文字を超える、もしくはパスセグメントが . または .. になるスクリーンには、そのような iframe やアプリケーションは設定されず、そのマニフェストの診断に screen_fact_missing または screen_fact_invalid が含まれます。空になったページは削除されます。そのようなスクリーンに反映されるすべての書き込み(プレイリストの書き込み、screen assign、screen update、フリートの割り当て、承認されたレビュー)は、トークン、最初の20件のスクリーン ID、および総数を示す screen_fact_missing 警告を返します。フィールドまたは位置情報を変更すると、影響を受けるスクリーンのマニフェストが再発行されます。
アプリケーションでは、埋め込まれた各パラメーターが ticket の後ろに、パーセントエンコードして合計4096文字までで起動アドレスに付加されるため、アプリケーションは location.search(SDK)から読み取れます。起動パラメーターは Player ウェブアプリと、それを実行する Player(Samsung Tizen、BrightSign、LG webOS、Vega)に届きます。Qt、Android、Apple、Windows の Player はローカルパッケージからアプリケーションを読み込み、パラメーターを送りません。テンプレートの url フィールドは iframe 全体の src にでき、その値自体がスクリーントークンを含んでもよく、マニフェストの作成時に埋め込まれます。タグセレクターは {screen.id} と {screen.field.NAME} を同様に使います(上記)。カードは独自の {screen.…} トークンを保持します。
メディアの利用可能期間
screenrig media availability med_ID --file rule.jsonは、動的セレクター(all、tag、folder)がファイルを選べる時期を設定します。--clearはルールを削除し、--expect-rev Nはメディアのリビジョンを保護します。API はPATCH /api/media/{id}/availabilityで、If-Matchと{ "availability": {...} | null }を使います。ルールの設定には Manage アクセスが必要で、Propose 資格情報にはinsufficient_accessが返ります。
ルールはスケジュールの時刻文法で、各画面のタイムゾーンで解釈され、少なくとも 1 つの要素を含みます。fromとuntil(ローカル日時YYYY-MM-DDTHH:MM、untilは終了を含まない)、windows(毎週の{days, start, end})、monthly({day}または{nth, weekday}、それぞれに任意のstartとend)、dates({date, start, end})、except(発生を取り除く日付で、日をまたぐ部分を含む)です。dataとinteractionは使えません。連休中のスポンサーのクリエイティブを、期間内の平日の夜だけ利用可能にする例です。
{
"from": "2026-11-27T00:00",
"until": "2026-11-30T23:59",
"windows": [{ "days": ["mon", "tue", "wed", "thu", "fri"], "start": "17:00", "end": "22:00" }]
}
ルールを読むのはセレクターだけです。明示的なidまたはidsセレクターは無視し、カードのメディア参照、サウンドトラックの音声、広告クリエイティブも対象外です。ファイルは、各画面の次のプレイリストループで選択から外れたり戻ったりし、境界から約 1 分以内に反映されます。プレイリストやマニフェストのリビジョンは変わらず、オフラインの Player は再接続するまで最後の選択を保持します。screenrig media selector-preview --timezone ZONE(既定は UTC)は、その時点でルールの範囲外にあるファイルを理由outside_window付きでexcludedに一覧表示します。
コメント
コメントはスクリーン、プレイリスト、またはプレイリストページに添付されたエージェント自身の JSON オブジェクトです。そのオブジェクトのコンパクトな UTF-8 は最大1KiBで、値はオブジェクトでなければなりません。screenRIG はこれを読み取らず、プレーヤーに送信せず、認可として扱いません。ランタイムマニフェストに現れずリビジョンも上げないため、これらのコマンドは
--expect-revを取りません:最後の書き込みが勝ちます。comment show#スクリーン、プレイリスト、またはプレイリストページのコメントオブジェクトを読み取ります。
<id>scr_またはpl_ID--page PAGE_ID未設定のコメントは
{ "comments": null }として読み取られます。screen showとplaylist showはサーバーが送信するときにcommentsを含みます。comment set#コメントオブジェクトを書く。
<id>scr_またはpl_ID--json-value JSON--file FILE--page PAGE_IDプレイリストの作成と更新ではコメントを設定できません。これらのコマンドはコメント用です。
comment delete#コメントオブジェクトを削除
<id>scr_またはpl_ID--page PAGE_ID