Kampagnen
Eine Kampagne schaltet jeden Bildschirm einer Zielgruppe auf eine Playlist um, solange ihre Regeln gelten, und wieder zurück, wenn sie nicht mehr gelten. Eine Kampagne lässt die Mittagsmenüs in jedem north-Store laufen, und ein Bildschirm, der später mit north getaggt wird, erhält sie ebenfalls. Ohne gesetzte Regeln gilt sie immer.
Pro Bildschirm wählt der Server dessen Übernahme, sonst die erste geltende Kampagne (--priority 0 bis 100, höhere zuerst, dann die neueste), sonst den Playlist-Zeitplan, sonst die zugewiesene Playlist; siehe Zeitpläne und Übernahmen für den Stapel und die Regeln. Eine Kampagne erreicht einen Bildschirm, der eine Standard-Playlist hat (screen assign). Ihre Daten, Tage und Uhrzeiten sind zivile Zeiten, die in der eigenen Zeitzone jedes Bildschirms gelesen werden: der mit screen set-timezone gesetzten Überschreibung, sonst der Zone, die sein Player meldet, sonst UTC. Bildschirme schalten innerhalb von etwa einer Minute um, und Player benötigen kein Update.
Eine pausierte Kampagne ist ein Entwurf: Sie liegt auf keinem Bildschirm, bis campaign publish sie veröffentlicht; das kann zuerst für einen Testordner oder einige Testbildschirme geschehen, und campaign promote legt dann ihre Zielgruppe auf sie. campaign preview zeigt eine Änderung, bevor sie vorgenommen wird, und campaign revisions und campaign restore bewahren frühere Versionen auf und stellen sie wieder her. Dieselben Entwürfe, Vorschauen und denselben Verlauf gibt es für Zeitplaneinträge weiter unten; siehe Entwürfe, Test und Hochstufen, Verlauf.
Kampagnenbefehle verwenden die screens-Fähigkeit. Schreibvorgänge erfordern Manage-Zugriff: Eine Propose-Sitzung antwortet mit 403 insufficient_access. Eine Organisation hat höchstens 100 Kampagnen über alle ihre Projekte (campaign_limit_reached, Exit 5), und die Playlist muss genehmigt sein (playlist_not_approved, Exit 5). Kampagnen sind eine Plus-Funktion: Ohne sie antworten campaign create, campaign resume und ein campaign update, das nicht pausiert, mit feature_not_in_plan (Exit 8), während list, show, screens, explain, preview, pause und delete offen bleiben, sodass eine bereits eingerichtete Kampagne weiterläuft. Ein Entwurf (campaign create --paused) und campaign promote gehören zur Änderungskontrolle für Zeitpläne, einer Enterprise-Funktion, die genauso antwortet. Preise listet die Pläne auf. Jeder Schreibvorgang fügt den Projektereignissen campaign.created, campaign.updated oder campaign.deleted hinzu, und ein Bildschirm, den eine Kampagne umschaltet, zeichnet screen.playlist_switched mit source campaign und der Kampagnen-ID als entry_id auf. ads campaigns kaufen Werbezeit auf anderen Bildschirmen und sind eine andere Ressource.
Ein auf Bildschirmordner beschränkter Aufrufer erstellt, ändert und löscht nur eine Kampagne, deren gesamte Zielgruppe in seinem Bereich liegt, sonst outside_screen_scope (Exit 3), und campaign list und campaign show zeigen editable: false für eine Kampagne, die darüber hinausreicht. Ein Schreibvorgang campaign create, update, pause, resume oder delete, dessen Zielgruppe einen Bildschirm in einem geschützten Ordner erreicht, antwortet mit pending_review und einer protected_change-Überprüfung, die eine zweite genehmigende Person entscheidet: Wiederholen Sie den Schreibvorgang nicht, lesen Sie die Entscheidung mit reviews show ID und geben Sie --note TEXT an, um der genehmigenden Person den Grund zu nennen. Eine reservierte Kampagne ändert nur eine Person, die genehmigen darf, und ein Agent wird auf jeder Zugriffsstufe mit reserved_item (Exit 3) abgewiesen.
campaign list#
Die Kampagnen des Projekts in der Reihenfolge auflisten, in der Bildschirme sie lesen.
campaign listKeine Parameter.
screenrig campaign listdata.items enthält höchstens 100 Kampagnen, höchste Priorität zuerst und innerhalb einer Priorität die neueste zuerst. Jede trägt die Felder, die campaign show liefert, mit reach, sobald sie gezählt wurde. Eine pausierte Kampagne wird aufgelistet und gilt nirgends. reserved kennzeichnet eine reservierte Kampagne, und editable erscheint nur für einen auf Bildschirmordner beschränkten Aufrufer: false bedeutet, dass die Kampagne Bildschirme außerhalb dieses Bereichs erreicht.
campaign show#
Eine Kampagne lesen.
campaign show <id>| Parameter | Typ | Erforderlich | Standard | Notizen |
|---|---|---|---|---|
<id> | string | ja | keine | Die cmp_ Kampagnen-ID. |
screenrig campaign show cmp_LUNCHGibt name, playlist_id, audience (die exakte Regel), priority, paused, reserved (true für eine reservierte Kampagne, die nur eine Person ändern kann, die genehmigen darf), die gesetzten from, until, windows, monthly, dates, except, data, interaction, covers, displays und start sowie revision zurück, den Wert für --expect-rev bei einem späteren Schreibvorgang. editable erscheint nur für einen auf Bildschirmordner beschränkten Aufrufer: false bedeutet, dass die Kampagne Bildschirme außerhalb dieses Bereichs erreicht und für diesen Aufrufer schreibgeschützt ist. import ist bei einer Kampagne vorhanden, die ein Zeitplan-Import erstellt hat. reach meldet, auf wie viele Bildschirme die Zielgruppe passt: published bei der letzten Veröffentlichung der Kampagne (erstellt oder aktualisiert mit neuer Zielgruppe, Playlist oder Pausenstatus), current und at für die neueste Anzahl sowie empty_groups, die tag:NAME- und folder:ID-Elemente der Zielgruppe, die auf keinen Bildschirm passen. Ein Tag, Ordner, eine Archivierung oder eine Löschung, die die Anzahl ändert, wird innerhalb von etwa 15 Sekunden neu gezählt; campaign list trägt auch reach, und die Benachrichtigungen reach_dropped und group_empty überwachen sie. Eine ID aus ads campaigns list antwortet hier mit not_found (Exit 4).
campaign create#
Die Bildschirme einer Zielgruppe auf eine Playlist umschalten, immer oder solange ihre Regeln gelten.
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] [--data KEY[:PATH[=VALUE]]] [--on-touch [IDLE_S]] [--displays N[,N]] [--start on-time|next-item] [--covers WHERE] [--priority N] [--paused] [--note TEXT]| Parameter | Typ | Erforderlich | Standard | Notizen |
|---|---|---|---|---|
--name NAME | string | ja | keine | Ein Name mit 1 bis 120 Zeichen. |
--playlist-id ID | string | ja | keine | Die pl_ Playlist, die die Zielgruppe zeigt, solange die Kampagne gilt. Sie muss genehmigt sein. |
--tag TAG | string | eine Zielgruppenoption | keine | Bildschirme, die dieses Tag tragen. Wiederholen oder durch Kommas trennen, um jedes aufgeführte Tag zu verlangen. |
--any-tag TAG | string | eine Zielgruppenoption | keine | Bildschirme, die mindestens eines dieser Tags tragen. Wiederholen oder durch Kommas trennen. |
--screen-id ID | string | eine Zielgruppenoption | keine | Diese Bildschirme. Wiederholen oder durch Kommas trennen. |
--folder ID | string | eine Zielgruppenoption | keine | Die Bildschirme in diesem Bildschirmordner sfd_ und in jedem Ordner darin. Um einen Ordner mit Tags zu kombinieren, verwenden Sie --audience. |
--all-screens | boolean | eine Zielgruppenoption | aus | Jeder Bildschirm im Projekt. |
--audience RULE | string | eine Zielgruppenoption | keine | Eine Regel als JSON, @FILE, um sie aus einer Datei zu lesen, oder - für stdin. |
--from TIME | string | nein | kein Start | Zu dieser zivilen Zeit in der Zeitzone jedes Bildschirms beginnen, YYYY-MM-DDTHH:MM ohne Offset. |
--until TIME | string | nein | kein Ende | Vor dieser zivilen Zeit in der Zeitzone jedes Bildschirms enden, in derselben Form und später als --from. |
--window SPEC | string | nein | keine | Nur in diesem wöchentlichen Fenster gelten, DAYS oder DAYS@HH:MM-HH:MM, z. B. mon-fri@09:00-17:00 oder sat,sun. Bis zu 16-mal wiederholen; die Kampagne gilt in jedem davon. |
--monthly SPEC | string | nein | keine | Nur bei diesem monatlichen Vorkommen gelten: ein Tag des Monats (15 oder day15; ein Monat ohne diesen Tag überspringt ihn) oder der n-te Wochentag (1st-mon, 2nd-tue, 3rd-wed, 4th-thu, last-sun), jeweils mit optionalem @HH:MM-HH:MM. Bis zu 16-mal wiederholen. |
--date SPEC | string | nein | keine | Nur an diesem Tag gelten, YYYY-MM-DD oder YYYY-MM-DD@HH:MM-HH:MM. Bis zu 100-mal wiederholen. |
--except DATE | string | nein | keine | Diese Daten überspringen, YYYY-MM-DD, wiederholt oder durch Kommas getrennt, bis zu 100. Eine Ausnahme entfernt jedes Vorkommen, das an diesem Datum beginnt, einschließlich über Nacht reichender Ausläufer. |
--data KEY[:PATH[=VALUE]] | string | nein | keine | Gilt nur, solange die Kartendaten KEY (ein Kartendatenschlüssel oder eine Karten-ID oder {screen.weather}) existieren, optional am RFC-6901-Zeiger PATH oder gleich VALUE. Nur einmal angeben. |
--on-touch [IDLE_S] | integer | nein | aus | Nur gelten, solange jemand den Bildschirm per Berührung oder Klick bedient, bis IDLE_S Sekunden, 5 bis 3600 (Standard 60), ohne Eingabe vergehen. |
--displays N[,N] | string | nein | jede Ausgabe | Nur auf diesen Videowand-Ausgängen abspielen, 1 bis 12, durch Kommas getrennt. |
--start WHEN | string | nein | next-item | on-time wechselt exakt zum Zeitpunkt und unterbricht das aktuelle Element; next-item wartet, bis es endet. |
--covers WHERE | string | nein | full | Wo die Playlist spielt: full (die ganze Seite), main (die Seite selbst) oder header, footer oder side, ein über die Seite gelegter Streifen, der eine für diese Region erstellte Playlist braucht (playlist create --format-region). Siehe Streifen. Ein Streifen wird mit playlist_format_mismatch (Exit 5) abgelehnt, wenn er auf keinem der Bildschirme der Zielgruppe angeordnet ist. |
--priority N | integer | nein | 0 | 0 bis 100. Die höhere Zahl gewinnt, wenn zwei Kampagnen auf einem Bildschirm gelten. |
--paused | boolean | nein | aus | Pausiert erstellen: ein Entwurf, der auf keinem Bildschirm liegt, bis campaign publish oder campaign resume. |
--note TEXT | string | nein | keine | Eine Notiz für die Person, die die Änderung überprüft: Klartext, höchstens 280 Zeichen. Wird ignoriert, wenn die Änderung sofort angewendet wird. |
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
screenrig campaign create --name "Room availability" --playlist-id pl_LIVE --folder sfd_01EXAMPLEFOLDER000000000 --data "crd_ROOM:/available=true"
screenrig campaign create --name "Fire exits" --playlist-id pl_EXITS --folder sfd_01EXAMPLEFOLDER000000000 --note "Fire safety"Tags bestehen aus 1 bis 32 Buchstaben oder Ziffern. DAYS ist daily, ein Wochentag (mon), ein Bereich (mon-fri; fri-mon läuft über das Ende der Woche hinaus) oder eine Kommaliste (sat,sun). Ohne Uhrzeit ist das Fenster der ganze Tag, und ein Ende um oder vor dem Start überschreitet Mitternacht und gehört zum Starttag. In einer --audience-Regel hat jedes Mitglied genau eines von all, any, tag, screen_id oder folder, Gruppen sind höchstens 3 Ebenen tief verschachtelt, eine Zielgruppe hat höchstens 500 Regeln, und {"all":[]} ist jeder Bildschirm. Der Server lehnt eine tote Regel ab: ein --except-Datum außerhalb von --from und --until, ein --date, das außerhalb davon beginnt, und ein --date, das zugleich eine Ausnahme ist (invalid_request, Exit 8).
--data KEY gilt, solange die Kartendaten KEY existieren, --data KEY:PATH, solange am RFC-6901-Zeiger PATH ein Wert existiert, und --data KEY:PATH=VALUE, solange er VALUE entspricht, einem JSON-Skalar (true, false, null, eine Zahl oder ein in JSON-Anführungszeichen gesetzter String) oder einem einfachen String wie rain. Objekte und Arrays werden abgelehnt. Fehlende oder abgelaufene Daten passen nie, und ein vorhandenes null oder false zählt als vorhanden. KEY:=VALUE vergleicht das gesamte Dokument. Maskieren Sie einen Doppelpunkt in KEY als \: und setzen Sie das Argument in Anführungszeichen, damit die JSON-Anführungszeichen erhalten bleiben: --data 'crd_ROOM:/status="true"'. Der Schlüssel {screen.weather} liest das Wetter am Standort jedes Bildschirms (screen update ID --location LAT,LON): --data '{screen.weather}:/condition=rain'.
Nach einer unterbrochenen oder mehrdeutigen Erstellung führen Sie denselben Befehl innerhalb von 24 Stunden erneut aus: Er verwendet den gespeicherten Idempotenzschlüssel, und der Server liefert dieselbe Kampagne zurück, anstatt eine neue zu erstellen.
campaign update#
Eine Kampagne ändern; die Bildschirme ihrer alten und neuen Zielgruppe werden innerhalb einer Minute neu aufgelöst.
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] [--data KEY[:PATH[=VALUE]] | --clear-data] [--on-touch [IDLE_S] | --clear-on-touch] [--displays N[,N] | --clear-displays] [--start WHEN] [--covers WHERE] [--priority N] [--expect-rev REVISION] [--note TEXT]| Parameter | Typ | Erforderlich | Standard | Notizen |
|---|---|---|---|---|
<id> | string | ja | keine | Die cmp_ Kampagnen-ID. |
--name NAME | string | nein | Unverändert | Die Kampagne umbenennen. |
--playlist-id ID | string | nein | Unverändert | Stattdessen diese Playlist anzeigen. Sie muss genehmigt sein. |
--tag, --any-tag, --screen-id, --folder, --all-screens, --audience | string | nein | Unverändert | Höchstens eine, geschrieben wie in campaign create. Sie ersetzt die gesamte Zielgruppe. |
--from TIME, --until TIME | string | nein | Unverändert | Eine zivile Zeit wie in campaign create. --from muss früher als --until bleiben, sonst invalid_request (Exit 8). |
--clear-from, --clear-until | boolean | nein | aus | Den Start oder das Ende entfernen. |
--window SPEC | string | nein | Unverändert | Ersetzt alle Fenster durch diese. Bis zu 16-mal wiederholen. |
--clear-windows | boolean | nein | aus | Alle Fenster entfernen. |
--monthly SPEC, --date SPEC, --except DATE | string | nein | Unverändert | Wie bei campaign create; jede ersetzt alle Regeln ihrer Art. |
--data KEY[:PATH[=VALUE]] | string | nein | Unverändert | Wie bei campaign create; sie ersetzt die Kartendaten-Bedingung. |
--on-touch [IDLE_S], --displays N[,N], --start WHEN | string | nein | Unverändert | Wie bei campaign create; --on-touch ohne Wert bedeutet 60 Sekunden. |
--clear-monthly, --clear-dates, --clear-except, --clear-data, --clear-on-touch, --clear-displays | boolean | nein | aus | Entfernt sie. Eine Kampagne ohne jede Regel gilt immer. |
--covers WHERE | string | nein | Unverändert | full, main, header, footer oder side, wie bei campaign create. |
--priority N | integer | nein | Unverändert | 0 bis 100. |
--expect-rev REVISION | string | nein | keine | Optionale Revisionsvoraussetzung. Weglassen, um die aktuelle Ressource zu schreiben. Ein übergebener veralteter Wert ist revision_conflict: erneut abrufen, erneut anwenden, erneut versuchen. |
--note TEXT | string | nein | keine | Eine Notiz für die Person, die die Änderung überprüft: Klartext, höchstens 280 Zeichen. Wird ignoriert, wenn die Änderung sofort angewendet wird. |
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
screenrig campaign update cmp_ROOMS --data crd_ROOM:/available=true
screenrig campaign update cmp_ROOMS --clear-data
screenrig campaign update cmp_LUNCH --playlist-id pl_LUNCH2 --note "Safety review done"Übergeben Sie mindestens eine Änderung; nur die Felder, die Sie übergeben, ändern sich. Ein neues --playlist-id wird wie bei der Erstellung geprüft. Nach einer unterbrochenen oder mehrdeutigen Anfrage führen Sie denselben Befehl erneut aus: Er verwendet den gespeicherten Idempotenzschlüssel, und der Server liefert die bereits erfolgte Aktualisierung zurück, anstatt sie erneut anzuwenden.
campaign pause#
Eine Kampagne auf jedem Bildschirm stoppen, ohne sie zu löschen.
campaign pause <id> [--expect-rev REVISION] [--note TEXT]| Parameter | Typ | Erforderlich | Standard | Notizen |
|---|---|---|---|---|
<id> | string | ja | keine | Die cmp_ Kampagnen-ID. |
--expect-rev REVISION | string | nein | keine | Optionale Revisionsvoraussetzung. Weglassen, um die aktuelle Ressource zu schreiben. Ein übergebener veralteter Wert ist revision_conflict: erneut abrufen, erneut anwenden, erneut versuchen. |
--note TEXT | string | nein | keine | Eine Notiz für die Person, die die Änderung überprüft: Klartext, höchstens 280 Zeichen. Wird ignoriert, wenn die Änderung sofort angewendet wird. |
screenrig campaign pause cmp_LUNCH
screenrig campaign pause cmp_LUNCH --note "Holiday over"Bildschirme, die sie angezeigt haben, kehren innerhalb einer Minute zu dem zurück, was sie ohne sie anzeigen würden. campaign resume startet sie erneut.
campaign resume#
Eine pausierte Kampagne erneut starten.
campaign resume <id> [--expect-rev REVISION] [--note TEXT]| Parameter | Typ | Erforderlich | Standard | Notizen |
|---|---|---|---|---|
<id> | string | ja | keine | Die cmp_ Kampagnen-ID. |
--expect-rev REVISION | string | nein | keine | Optionale Revisionsvoraussetzung. Weglassen, um die aktuelle Ressource zu schreiben. Ein übergebener veralteter Wert ist revision_conflict: erneut abrufen, erneut anwenden, erneut versuchen. |
--note TEXT | string | nein | keine | Eine Notiz für die Person, die die Änderung überprüft: Klartext, höchstens 280 Zeichen. Wird ignoriert, wenn die Änderung sofort angewendet wird. |
screenrig campaign resume cmp_LUNCH
screenrig campaign resume cmp_LUNCH --note "Holiday again"Jeder Bildschirm der Zielgruppe, für den die Kampagne gelten kann, schaltet innerhalb einer Minute auf ihre Playlist um, solange die Kampagne gilt.
campaign delete#
Eine Kampagne löschen.
campaign delete <id> [--expect-rev REVISION] [--note TEXT]| Parameter | Typ | Erforderlich | Standard | Notizen |
|---|---|---|---|---|
<id> | string | ja | keine | Die cmp_ Kampagnen-ID. |
--expect-rev REVISION | string | nein | keine | Optionale Revisionsvoraussetzung. Weglassen, um die aktuelle Ressource zu schreiben. Ein übergebener veralteter Wert ist revision_conflict: erneut abrufen, erneut anwenden, erneut versuchen. |
--note TEXT | string | nein | keine | Eine Notiz für die Person, die die Änderung überprüft: Klartext, höchstens 280 Zeichen. Wird ignoriert, wenn die Änderung sofort angewendet wird. |
screenrig campaign delete cmp_LUNCH
screenrig campaign delete cmp_LUNCH --note "Replaced by the winter campaign"Die Kampagne kommt nicht zurück. Jeder Bildschirm, der sie anzeigt, kehrt innerhalb einer Minute zu dem zurück, was er ohne sie anzeigen würde; Playlists, Bildschirme und Tags bleiben bestehen. campaign pause stoppt eine Kampagne und behält sie.
campaign screens#
Die Bildschirme anzeigen, die eine Kampagne erreicht, und den Status auf jedem.
campaign screens <id> [--limit N] [--cursor CURSOR]| Parameter | Typ | Erforderlich | Standard | Notizen |
|---|---|---|---|---|
<id> | string | ja | keine | Die cmp_ Kampagnen-ID. |
--limit N | integer | nein | 100 | Bildschirme pro Seite, 1 bis 500. |
--cursor CURSOR | string | nein | die erste Seite | Die data.next_cursor der vorherigen Seite. |
screenrig campaign screens cmp_LUNCHdata.counts deckt jeden Live-Bildschirm der Zielgruppe ab: audience, dann eine Anzahl pro vorhandenem Status. data.items ist eine Seite dieser Bildschirme in der Reihenfolge der Bildschirm-IDs, jeweils mit dem status der Kampagne. data.next_cursor fehlt auf der letzten Seite. Auf einem Bildschirm, dessen Player seinen eigenen Stapel auflöst, ist der Status der, den dieser Stapel der Kampagne gibt: Eine Streifen- oder main-Kampagne spielt in ihrer Region, eine --displays-Kampagne auf ihren Displays.
| Status | Bedeutung |
|---|---|
playing | Der Bildschirm zeigt die Playlist der Kampagne. |
pending | Sie sollte angezeigt werden, und die Umschaltung erfolgt innerhalb einer Minute. |
waiting | Derzeit außerhalb von --from, --until, den Fenstern, den Monatsregeln oder den Terminen; next_start, wenn sie innerhalb von acht Tagen beginnt. |
ended | --until ist verstrichen. |
outranked | Sie gilt, aber eine Bildschirmübernahme (reason takeover) oder eine andere Kampagne (reason campaign, mit by) gewinnt. |
conditional | Sie gilt zeitlich und spielt, solange jemand den Bildschirm benutzt (reason interaction) oder solange ihre Datenbedingung erfüllt ist (reason data). Nur der Player sieht seine Eingaben und Kartendaten. |
paused | Die Kampagne ist pausiert. |
blocked | Sie kann hier nicht angezeigt werden. reason ist no_default_playlist (screen assign), playlist_unavailable (die Playlist fehlt, ist nicht genehmigt oder passt nicht zum Bildschirm), region_not_laid_out (sie passt auf kein Display des Bildschirms: ihr Streifen passt auf keines, oder ihr --displays nennt keines, und die Kampagne bleibt aus dessen Stapel ausgenommen) oder stack_only (der Player des Bildschirms löst seinen eigenen Stapel nicht auf, und nur einer, der das tut, beachtet eine Region, eine Display-Sperre, --on-touch oder eine Datenbedingung). |
campaign explain#
Zeigen, warum jede Kampagne auf einem Bildschirm abgespielt wird oder nicht, jetzt oder zu einem gewählten Zeitpunkt.
campaign explain <screen-id> [--at TIME] [--to TIME]| Parameter | Typ | Erforderlich | Standard | Notizen |
|---|---|---|---|---|
<screen-id> | string | ja | keine | Die scr_ Bildschirm-ID. |
--at TIME | string | nein | jetzt | Diesen Zeitpunkt statt jetzt erklären: ein Zeitpunkt mit Zone (2026-12-24T10:00:00-08:00) oder eine Uhrzeit auf der eigenen Uhr des Bildschirms (2026-12-24T18:00). Eine Uhrzeit, die die Sommerzeit überspringt oder wiederholt, wird abgelehnt. |
--to TIME | string | nein | keine | Listet außerdem die Playlist-Wechsel von --at (standardmäßig jetzt) bis zu diesem Zeitpunkt auf, in denselben Formen. Es gibt keine Grenze, wie weit; eine Antwort listet höchstens 500 Abschnitte auf, und jede Spanne von acht Tagen ohne Änderung zählt als einer. |
screenrig campaign explain scr_LOBBY
screenrig campaign explain scr_LOBBY --at 2026-12-24T18:00 --to 2026-12-26T00:00data.items listet jede Kampagne des Projekts in der Reihenfolge auf, in der der Bildschirm sie liest, jeweils mit einem Status aus campaign screens oder not_in_audience; eine blocked-Zeile nennt die Abhilfe. data.effective_playlist ist die Playlist, die der Bildschirm gerade abspielt (id, source, das takeover, campaign, schedule, default oder folder ist, und entry_id, die ID der Kampagne, des Zeitplaneintrags oder des Ordners), oder null, wenn der Bildschirm keine Playlist anzeigt. Es ändert nichts.
Mit --at enthält data.at die Antwort für diesen Zeitpunkt: instant, timezone (die wirksame Zeitzone des Bildschirms) und local (der Zeitpunkt auf der Uhr des Bildschirms), effective_playlist (dessen until die nächste Änderung ist) und eine verdicts-Zeile für die Übernahme, jede Kampagne und jeden Zeitplaneintrag, in der Reihenfolge, in der der Bildschirm sie liest.
Ein Urteil ist won (die angezeigte Playlist), outranked (sie gilt, und by nennt den Gewinner), not_started (vor ihrem Beginn), ended (nach ihrem Ende), outside_hours (innerhalb ihrer Daten, außerhalb ihrer Fenster, Monatsregeln oder Termine, oder an einem Ausnahmedatum; next_start nennt, wann sie innerhalb von acht Tagen wieder gilt), conditional (sie gilt zeitlich und spielt, solange jemand den Bildschirm benutzt, reason interaction, oder solange ihre Datenbedingung erfüllt ist, reason data) oder off (sie gilt nicht, und reason nennt den Grund: paused, not_in_audience, no_default_playlist, playlist_unavailable, region_not_laid_out oder stack_only). Auf einem Bildschirm, dessen Player seinen eigenen Stapel auflöst, lesen die Urteile diesen Stapel: Eine Streifen- oder main-Ebene gewinnt in ihrer Region oder wird dort übertroffen, eine Display-Sperre auf ihren Displays. effective_playlist und die Zeitleiste bleiben die Seite auf Display 1, und data.at.not_judged nennt player_stack.
--to fügt data.at.timeline hinzu, die Abschnitte, in denen sich die Playlist nicht ändert, und timeline_truncated kennzeichnet eine Antwort, die vor --to endete: Fragen Sie erneut mit --at, gesetzt auf das to des letzten Abschnitts. data.at.not_judged nennt, was nicht beurteilt wird: Übernahme, Zeitplan und Kampagnen werden so gelesen, wie sie jetzt sind, und data.items bleibt der aktuelle Stand.
campaign preview#
Zeigen, was das Erstellen oder Ändern einer Kampagne bewirken würde, bevor es geschieht.
campaign preview [<id>] [--name NAME] [--playlist-id ID] [audience option] [rule flags] [clear flag] [--paused | --publish] [--calendar-from INSTANT] [--calendar-to INSTANT]| Parameter | Typ | Erforderlich | Standard | Notizen |
|---|---|---|---|---|
<id> | string | nein | eine neue Kampagne | Die Kampagne cmp_, für die eine Änderung in der Vorschau angezeigt werden soll. Weglassen, um eine neue Kampagne aus den Flags von campaign create in der Vorschau zu zeigen. |
--name NAME, --playlist-id ID | string | für eine neue Kampagne | Unverändert | Wie bei campaign create; eine neue Kampagne braucht beide. |
--tag, --any-tag, --screen-id, --folder, --all-screens, --audience | string | für eine neue Kampagne | Unverändert | Höchstens eine, geschrieben wie in campaign create; eine neue Kampagne braucht eine. Mit einer <id> ersetzt sie die gesamte Zielgruppe. |
--from TIME, --until TIME, --window SPEC, --monthly SPEC, --date SPEC, --except DATE | string | nein | Unverändert | Die Regeloptionen von campaign create. Mit einer <id> ersetzt jede alle Regeln ihrer Art. |
--data KEY[:PATH[=VALUE]], --on-touch [IDLE_S], --displays N[,N], --start WHEN, --covers WHERE | string | nein | Unverändert | Wie bei campaign create. |
--priority N | integer | nein | Unverändert | 0 bis 100. |
--clear-from, --clear-until, --clear-windows, --clear-monthly, --clear-dates, --clear-except, --clear-data, --clear-on-touch, --clear-displays | boolean | nein | aus | Wie bei campaign update: Vorschau auf das Entfernen der Regel. Sie benötigen eine <id>. |
--paused | boolean | nein | aus | Als Entwurf in der Vorschau anzeigen: pausiert, auf keinem Bildschirm. Nicht mit --publish. |
--publish | boolean | nein | aus | Das Aufheben der Pause der Kampagne in der Vorschau anzeigen. Mit einer Zielgruppenoption zeigt es die Veröffentlichung für diese Zielgruppe. Es braucht eine <id> und schließt --paused aus. |
--calendar-from INSTANT | string | nein | jetzt | Die Kalender zu diesem Zeitpunkt mit Zone beginnen lassen, etwa 2026-12-01T00:00:00Z. |
--calendar-to INSTANT | string | nein | eine Woche nach dem Beginn | Die Kalender zu diesem Zeitpunkt mit Zone enden lassen, höchstens 93 Tage nach dem Beginn. |
screenrig campaign preview cmp_LUNCH --tag Lobby
screenrig campaign preview cmp_LUNCH --clear-until --priority 20
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:00Die Optionen werden so geprüft, wie der Schreibvorgang sie prüft, daher lehnt eine Vorschau ab, was der Schreibvorgang ablehnt. Mit einer <id> übergeben Sie mindestens eine Änderung: eine Option von campaign update, --paused oder --publish. Es wird nichts geschrieben. data.gained und data.lost sind {count, screen_ids} (die ersten 500 nach ID): die Bildschirme, die die Kampagne künftig tragen würden und jetzt nicht tragen, und die, die sie nicht mehr tragen würden. Eine pausierte Kampagne liegt auf keinem Bildschirm, daher gewinnt man mit ihrer Veröffentlichung ihre Zielgruppe; eine Änderung, die die Kampagne auf einem Bildschirm belässt, zeigt sich nur in den Kalendern. data.calendar.before und data.calendar.after sind die Zeitplankalender von --calendar-from bis --calendar-to für die Bildschirme der alten und der neuen Zielgruppe, mit Entwürfen als pausierten Ebenen gezeichnet. --human gibt die Abschnitte des ersten Displays und die Entwürfe aus, die gelten würden, und sagt, wenn sich der Kalender nicht ändert.
campaign publish#
Die Pause einer Entwurfskampagne aufheben, wahlweise nur für einen Testordner oder einige Testbildschirme.
campaign publish <id> [--test-folder ID | --test-screen ID] [--expect-rev REVISION]| Parameter | Typ | Erforderlich | Standard | Notizen |
|---|---|---|---|---|
<id> | string | ja | keine | Die cmp_ Kampagnen-ID. |
--test-folder ID | string | nein | die Zielgruppe der Kampagne | Nur für die Bildschirme in diesem Bildschirmordner sfd_ und in jedem Ordner darin veröffentlichen. |
--test-screen ID | string | nein | die Zielgruppe der Kampagne | Nur für diese Bildschirme veröffentlichen. Wiederholen oder durch Kommas trennen. |
--expect-rev REVISION | string | nein | keine | Optionale Revisionsvoraussetzung. Weglassen, um die aktuelle Ressource zu schreiben. Ein übergebener veralteter Wert ist revision_conflict: erneut abrufen, erneut anwenden, erneut versuchen. |
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 2Ein Entwurf ist eine pausierte Kampagne: Sie liegt auf keinem Bildschirm, bis sie veröffentlicht wird. Ohne Testoption erreicht die Kampagne ihre eigene Zielgruppe innerhalb einer Minute. Eine Testoption ersetzt die Zielgruppe im selben Schreibvorgang, sodass nur die Testbildschirme wechseln. Der übliche Ablauf: campaign create --paused mit der echten Zielgruppe, campaign publish ID --test-folder FOLDER, die Testbildschirme ansehen, dann campaign promote ID --revision N. campaign preview ID --publish zeigt zuvor die Wirkung.
campaign promote#
Nach seinem Test die Zielgruppe eines Entwurfs auf die Kampagne übertragen.
campaign promote <id> --revision N [--expect-rev REVISION]| Parameter | Typ | Erforderlich | Standard | Notizen |
|---|---|---|---|---|
<id> | string | ja | keine | Die cmp_ Kampagnen-ID. |
--revision N | integer | ja | keine | Die pausierte Revision des Entwurfs, wie campaign revisions sie nummeriert. Die Kampagne übernimmt die Zielgruppe dieser Revision. |
--expect-rev REVISION | string | nein | die gerade gelesene Revision | Diese aktuelle Kampagnenrevision verlangen. Ohne sie liest die CLI die Kampagne unmittelbar vor dem Schreiben und sendet diese Revision; eine Änderung dazwischen ist revision_conflict (Exit 6). |
screenrig campaign promote cmp_LUNCH --revision 1
screenrig campaign promote cmp_LUNCH --revision 1 --expect-rev 2Die Zielgruppe der Revision N wird in einem Schreibvorgang die der Kampagne, eine neue Revision, deren change promoted ist, und jeder Bildschirm der alten und der neuen Zielgruppe wird innerhalb einer Minute neu aufgelöst. Revision N muss eine pausierte Revision sein (sonst nennt sie invalid_request), und die Kampagne muss aktiv sein: Eine jetzt pausierte Kampagne hat keinen Test, der hochgestuft werden könnte. Eine Revision, deren Zielgruppe bereits die der Kampagne ist, ändert nichts. --expect-rev ist die aktuelle Revision der Kampagne, nicht N. Das Hochstufen erfordert den Zugriff, den campaign update erfordert.
campaign revisions#
Die Revisionen einer Kampagne auflisten, die neueste zuerst.
campaign revisions <id> [--after CURSOR]| Parameter | Typ | Erforderlich | Standard | Notizen |
|---|---|---|---|---|
<id> | string | ja | keine | Die cmp_ Kampagnen-ID. |
--after CURSOR | string | nein | die erste Seite | Ab dem data.next_cursor der vorherigen Seite fortfahren. |
screenrig campaign revisions cmp_LUNCH
screenrig campaign revisions cmp_LUNCH --after CURSORdata.items enthält höchstens 50 Revisionen, jeweils mit revision, created_at, change, current, author, wenn bekannt, und campaign, der Kampagne, wie sie nach diesem Schreibvorgang war, mit ihrem Pausenzustand. change ist created, edited (eine Aktualisierung oder ein Zeitplan-Import), restored oder promoted (eine Kopie der früheren Revision, die restored_from nennt) oder baseline, die Revision, die die Kampagne hatte, als ihr Verlauf begann. Eine Kampagne, deren Verlauf keine nicht pausierte Revision enthält, ist ein Entwurf. Solange data.next_cursor ein String ist, gibt es ältere Revisionen: Führen Sie den Befehl erneut aus, mit --after darauf gesetzt. Revisionen bleiben so lange erhalten wie die Kampagne und verschwinden mit ihrem Löschen. Lesezugriff genügt.
campaign restore#
Eine frühere Revision wieder aktuell machen, indem sie nach vorn kopiert wird.
campaign restore <id> --revision N [--expect-rev REVISION]| Parameter | Typ | Erforderlich | Standard | Notizen |
|---|---|---|---|---|
<id> | string | ja | keine | Die cmp_ Kampagnen-ID. |
--revision N | integer | ja | keine | Die Revision, die nach vorn kopiert wird, wie campaign revisions sie nummeriert. |
--expect-rev REVISION | string | nein | die gerade gelesene Revision | Diese aktuelle Kampagnenrevision verlangen. Ohne sie liest die CLI die Kampagne unmittelbar vor dem Schreiben und sendet diese Revision; eine Änderung dazwischen ist revision_conflict (Exit 6). |
screenrig campaign restore cmp_LUNCH --revision 3
screenrig campaign restore cmp_LUNCH --revision 3 --expect-rev 5Name, Playlist, Zielgruppe, Regeln, Bereich, Priorität und Pausenzustand der Revision N werden zu einer neuen Revision, deren change restored ist, und werden so geprüft, wie campaign update geprüft wird: Ihre Playlist muss noch existieren und genehmigt sein (playlist_not_approved, Exit 5). Jeder Bildschirm der alten und der neuen Zielgruppe wird innerhalb einer Minute neu aufgelöst. Frühere Revisionen bleiben, wie sie waren, und das Wiederherstellen des aktuellen Inhalts ändert nichts. Das Wiederherstellen erfordert den Zugriff, den campaign update erfordert.