Documentazione

Trigger: comandi CLI

Prendi il controllo degli schermi con gli alert di emergenza CAP e mostra sovrapposizioni da Home Assistant o client HTTP: crea, testa e ruota i trigger.

Ogni comando funziona come descritto nel riferimento CLI: flag globali, output JSON, codici uscita, revisioni e ritentativi.

Trigger alert CAP

Un trigger permette a un sistema di notifiche di emergenza, come Everbridge, Rave, Alertus o un relay IPAWS, di prendere il controllo degli schermi con avvisi CAP 1.2. Ogni trigger ha il proprio URL, nome utente e password, che inserisci nel sistema mittente come destinazione CAP HTTP POST con autenticazione HTTP Basic. Un’organizzazione ha al massimo 20 trigger in tutti i suoi progetti.

I trigger sono di due tipi. Un trigger CAP, descritto qui, accetta gli avvisi di un sistema di emergenza. Un trigger di sovrapposizione mostra ciò che pubblica qualsiasi mittente, come Home Assistant, un hub di sensori o uno strumento di allerta, come fascia sopra ciò che viene riprodotto o come acquisizione; triggers create --kind overlay ne crea uno, e triggers update, triggers clear e triggers rotate-secret servono entrambi i tipi, mentre triggers deliveries legge il registro di un trigger di sovrapposizione.

Un trigger mira a un tag, risolto all’arrivo di ogni avviso, o fino a 500 ID schermo. Ogni Alert diventa un takeover della playlist del trigger: una scheda a schermo intero nel colore della sua gravità, con evento, titolo, descrizione e istruzioni. Un Exercise aggiunge un banner EXERCISE. Il takeover dura fino a <expires> dell’avviso, altrimenti il default --for del trigger (da 1 minuto a 7 giorni, 1 ora se non impostato), e mai oltre 7 giorni. Un Update ridisegna la scheda, e un Cancel o AllClear restituisce ogni schermo a ciò che riproduceva prima. Un nuovo Alert sostituisce quello mostrato. Messaggi Test, System e Draft, Ack ed Error e avvisi scaduti sono ignorati, e un mittente e identificatore ripetuti sono duplicati. Uno schermo necessita di una playlist predefinita per essere preso in takeover; altri schermi sono saltati.

La password, srtg_…, è mostrata solo da triggers create e triggers rotate-secret, con l’avviso trigger_password_shown_once. Il CLI la tiene fuori dalla sua configurazione, log operativo e stato di recupero. L’URL e il nome utente non sono segreti.

Codice problemaEsciSignificato
trigger_limit_reached5L’organizzazione ha già 20 trigger. Non è stato creato nulla. Elimina prima uno.
resource_conflict5triggers test o triggers delete mentre un avviso è attivo. next è triggers clear.
not_found4Nessun trigger ha questo ID nel progetto.
revision_conflict6La revisione --expect-rev era obsoleta. Esegui triggers show, poi riprova.

triggers create#

Crea un trigger e ricevi il suo URL, nome utente e password.

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]
    [--verify VENDOR [--verify-secret-file FILE] [--verify-header NAME] [--verify-encoding hex|base64]
        [--verify-timestamp-header NAME] [--verify-tolerance SECONDS]]
    [--handshake VENDOR]
ParametroTipoObbligatorioPredefinitoNote
--name NAMEstringsìnessunoIl nome del trigger, da 1 a 80 caratteri senza caratteri di controllo.
--kind KINDcap o overlaynocapcap accetta gli avvisi CAP 1.2 di un sistema di emergenza. overlay accetta poche parole da qualsiasi mittente e richiede --show.
--tag TAGstringuno tra --tag o --screen-idnessunoOgni schermo attivo con questo tag quando arriva un’allerta.
--screen-id IDstringuno tra --tag o --screen-idnessunoUn scr_ ID schermo. Ripetilo, o elenca gli ID separati da virgola; massimo 500.
--for DURATIONduratano1h (sovrapposizione 10m)Per quanto tempo un avviso senza <expires>, o un invio di sovrapposizione senza duration, trattiene gli schermi, per esempio 30m, 2h o 1d; da 1 minuto a 7 giorni per un trigger CAP, da 10 secondi a 7 giorni per uno di sovrapposizione.
--pull FILEpathnonessunoUn trigger CAP: un oggetto JSON, da un file o - per stdin, che fa leggere alla piattaforma anche fonti di allerta CAP per il trigger. I suoi membri sono i parametri della scheda cap-alert elencati sotto.
--show SHOWbar o takeovercon --kind overlaynessunobar disegna una fascia sopra ciò che viene riprodotto sugli schermi di destinazione. takeover riproduce l'avviso a schermo intero.
--edge EDGEbottom o topnobottomIl bordo che occupa una fascia. Solo con --show bar.
--style FILEpathnonessunoUn oggetto JSON, da un file o da - per l'input standard, con lo stile della scheda di testo: theme, accent, background, backgroundColor, textColor e align. Al massimo 64 KiB.
--map FILEpathnonessunoUn modello JSON, da un file o da - per l'input standard, che costruisce il messaggio di sovrapposizione dal corpo inviato dal mittente; vedere i trigger di sovrapposizione. Al massimo 64 KiB.
--signingflagnospentoRichiedere anche un'intestazione ScreenRig-Signature a ogni invio e mostrare il segreto di firma una sola volta. Non insieme a --verify.
--verify VENDORstringnonessunoUn trigger di sovrapposizione: accetta un invio che porta la firma propria di questo fornitore al posto della password srtg_, che continua a funzionare accanto. github, stripe, shopify, slack, linear, vercel, asana o generic_hmac.
--verify-secret-file FILEpathcon --verify, tranne asananessunoIl segreto del fornitore, da un file o - per stdin, mai come argomento: il segreto del webhook che mostrano GitHub, Stripe, Shopify, Slack, Linear o Vercel, oppure quello di un mittente generic_hmac. asana non ne accetta: il suo handshake lo consegna.
--verify-header NAMEstringcon --verify generic_hmacnessunoL’intestazione che porta la firma.
--verify-encoding ENCODINGhex o base64nohexCon --verify generic_hmac: come viene scritta la firma. Può iniziare con sha256=.
--verify-timestamp-header NAMEstringnonessunoCon --verify generic_hmac: un’intestazione che porta l’ora Unix in secondi, oppure in millisecondi con 13 cifre. Il testo firmato è allora <timestamp>.<body>.
--verify-tolerance SECONDSintegerno300Con --verify-timestamp-header: quanto il timestamp può discostarsi dall’orologio del server, da 1 a 86400.
--handshake VENDORstringnonessunoUn trigger di sovrapposizione: risponde alla verifica di configurazione di microsoft_graph, monday, trello o azure_event_grid. Slack e Asana rispondono al proprio tramite --verify.
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
screenrig triggers create --name "Payments" --kind overlay --show bar --tag Lobby --verify stripe --verify-secret-file stripe.secret --map stripe-map.json
screenrig triggers create --name "Boards" --kind overlay --show bar --tag Lobby --handshake trello

La busta è il trigger con data.url (https://api.screenrig.ai/api/triggers/<id>/cap, oppure .../overlay per un trigger di sovrapposizione), data.username (l'id del trigger) e data.password. Li inserisca ora nel sistema mittente; il mittente di un trigger di sovrapposizione ha bisogno dell'URL e della password (Authorization: Bearer). Con --signing, la busta contiene anche data.signing_secret, mostrato una sola volta, con l'avviso trigger_signing_secret_shown_once. Dopo una creazione interrotta o ambigua, esegua di nuovo lo stesso comando entro 24 ore: riutilizza la chiave di idempotenza salvata e il server restituisce lo stesso trigger e la stessa password invece di crearne un altro.

--pull aggiunge fonti che la piattaforma legge oltre all’URL pubblicato, che continua a funzionare. L’oggetto contiene sources (fino a 5 URL http o https di avvisi CAP 1.0 a 1.2 o indici ATOM/RSS), publicAlerts, location (name, latitude, longitude e geocodes come [{name, value}]), minSeverity, maxSeverity, minUrgency, minCertainty, events, excludeEvents, senders, statuses, scopes, languages e areaUnknown; feeds get cap usa gli stessi filtri di flag. location è obbligatorio a meno che non siano forniti sources, e senza sources si leggono i feed pubblici che coprono location. Ogni fonte viene interrogata una volta al minuto. L’avviso corrispondente più grave prende il controllo degli schermi come un avviso pubblicato, e quando le fonti non mostrano nulla un avviso estratto termina; una fonte obsoleta o fallita non termina mai un avviso. Per esempio {"location": {"latitude": 49.25, "longitude": -123}, "minSeverity": "moderate"}.

Le opzioni di sovrapposizione (--show, --edge, --style, --map, --signing, --verify con le sue compagne, e --handshake) richiedono --kind overlay, e --pull richiede un trigger CAP. --style, --map e --verify-secret-file leggono ciascuna un file, e solo una di esse può leggere - (stdin).

--verify VENDOR permette al webhook di un fornitore di inviare direttamente a data.url: un invio che porta la firma valida del fornitore nella sua intestazione è accettato senza data.password, che continua a funzionare accanto. Il segreto del fornitore è conservato sigillato e riletto solo come overlay.verify.secret, con set e i suoi ultimi quattro caratteri. asana non accetta segreto: il suo handshake ne consegna uno, e gli eventi rispondono secret_pending fino ad allora. generic_hmac richiede --verify-header e accetta --verify-encoding, --verify-timestamp-header e --verify-tolerance. --handshake VENDOR risponde alla verifica di configurazione di quel fornitore prima che venga chiesta una credenziale; non cambia alcun avviso, non è mai fatturato e compare in triggers deliveries come esito handshake. I fornitori, le loro intestazioni e le impostazioni da inserire presso ciascuno sono elencati in firme e handshake dei fornitori.

triggers list#

Elenca i trigger di questo progetto e i loro ultimi avvisi, dal più vecchio

triggers list
screenrig triggers list

--human stampa ID, KIND, LABEL, TARGET, ALERT e LAST_RECEIVED; per un trigger di sovrapposizione, ALERT dice che cosa disegna e quanti avvisi trattiene. Un elenco non contiene mai una password né un segreto di firma.

triggers show#

Ispeziona un trigger e il suo ultimo alert.

triggers show <id>
ParametroTipoObbligatorioPredefinitoNote
<id>stringsìnessunoL’ID trigger trg_.
screenrig triggers show trg_01EXAMPLETRIGGER00

data.alert è l'ultimo avviso: i suoi campi CAP, state active o ended (con ended_reason cancelled, all_clear, cleared o expired), until e screens con targeted, taken_over, cleared, skipped, failed e pending. pending è vero finché si stanno ancora scrivendo schermi, e gli schermi falliti vengono ritentati. data.playlist_id è la playlist di avviso del trigger, e screen show riporta un avviso come un'acquisizione di essa. Per un trigger di sovrapposizione, data.overlay contiene show, edge, enabled, signing, verify e handshake finché sono impostati, card_id, alerts (gli avvisi attivi, il più recente per primo; il primo viene mostrato), screens con targeted, holding, taken_over, removed, edge_taken, skipped e failed, e pending.

triggers test#

Mostra un avviso di esercizio di 60 secondi sugli schermi del trigger.

triggers test <id>
ParametroTipoObbligatorioPredefinitoNote
<id>stringsìnessunoL’ID trigger trg_.
screenrig triggers test trg_01EXAMPLETRIGGER00

La busta è la ricevuta: data.outcome shown e data.alert. La risposta arriva prima che tutti gli schermi siano scritti; triggers show riporta i conteggi. Un trigger di sovrapposizione mostra l'avviso screenrig-test (etichetta Test, titolo Test overlay) per 60 secondi, e la ricevuta è quella che riceve un invio (data.alert_id, data.until, data.active). Entrambi i tipi rifiutano un test finché viene mostrato un avviso.

triggers update#

Modificare un trigger senza cambiare il suo URL né il suo segreto.

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]
    [--verify VENDOR [--verify-secret-file FILE] [--verify-header NAME] [--verify-encoding hex|base64]
        [--verify-timestamp-header NAME] [--verify-tolerance SECONDS] | --clear-verify]
    [--handshake VENDOR | --clear-handshake] [--expect-rev REVISION]
ParametroTipoObbligatorioPredefinitoNote
<id>stringsìnessunoL’ID trigger trg_.
--name NAMEstringnoinvariatoRinominare il trigger.
--tag TAG, --screen-id IDstringnoinvariatoUna nuova destinazione, come in triggers create.
--for DURATIONduratanoinvariatoUna nuova durata per gli avvisi che non indicano una fine: da 1 minuto a 7 giorni per un trigger CAP, da 10 secondi a 7 giorni per un trigger di sovrapposizione.
--pull FILE, --no-pullpercorso, flagnoinvariatoUn trigger CAP: sostituisce le sue fonti CAP o smette di leggerle.
--edge EDGEbottom o topnoinvariatoUna fascia di sovrapposizione: spostarla su questo bordo.
--style FILE, --clear-stylepercorso, flagnoinvariatoUn trigger di sovrapposizione: sostituisce l'intero stile o lo rimuove.
--map FILE, --clear-mappercorso, flagnoinvariatoUn trigger di sovrapposizione: sostituisce il modello o lo rimuove, così l'oggetto inviato è il messaggio.
--enable, --disableflagnoinvariatoUn trigger di sovrapposizione: un trigger disattivato risponde a ogni invio con il 404 di un segreto errato.
--signing, --no-signingflagnoinvariatoUn trigger di sovrapposizione: attiva il controllo della firma (il segreto di firma viene mostrato una sola volta) o lo disattiva. Non insieme a --verify.
--verify VENDORstringnoinvariatoUn trigger di sovrapposizione: sostituisce la verifica del fornitore, come in triggers create. Senza --verify-secret-file mantiene il segreto memorizzato se il fornitore resta lo stesso; un fornitore diverso richiede il proprio.
--verify-secret-file FILEpathnoinvariatoCon --verify: il segreto del fornitore, da un file o - per stdin.
--verify-header NAMEstringnoinvariatoCon --verify generic_hmac: l’intestazione che porta la firma.
--verify-encoding ENCODINGhex o base64noinvariatoCon --verify generic_hmac: come viene scritta la firma.
--verify-timestamp-header NAMEstringnoinvariatoCon --verify generic_hmac: un’intestazione che porta l’ora Unix.
--verify-tolerance SECONDSintegernoinvariatoCon --verify-timestamp-header: quanto il timestamp può discostarsi dall’orologio del server, da 1 a 86400.
--clear-verifyflagnospentoUn trigger di sovrapposizione: smette di accettare la firma di un fornitore e dimentica il suo segreto.
--handshake VENDORstringnoinvariatoUn trigger di sovrapposizione: risponde alla verifica di configurazione di microsoft_graph, monday, trello o azure_event_grid.
--clear-handshakeflagnospentoUn trigger di sovrapposizione: smette di rispondere all’handshake del fornitore.
--expect-rev REVISIONstringnonessunoPrecondizione opzionale di revisione.
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
screenrig triggers update trg_01EXAMPLETRIGGER00 --verify github --verify-secret-file github.secret
screenrig triggers update trg_01EXAMPLETRIGGER00 --clear-verify

Serve almeno un'opzione oltre a --expect-rev. Una fascia si riposiziona sui nuovi schermi di destinazione e sul nuovo bordo; la nuova destinazione di un trigger di acquisizione vale dal prossimo avviso che inizia. Un trigger che già firma mantiene il suo segreto di firma quando --signing viene ripetuto; triggers rotate-secret --signing lo sostituisce. --clear-verify rimuove la verifica del fornitore e dimentica il suo segreto, e --clear-handshake smette di rispondere all’handshake del fornitore. Dopo un aggiornamento interrotto o ambiguo, esegua di nuovo lo stesso comando: riutilizza la chiave di idempotenza salvata.

triggers deliveries#

Leggere il registro degli invii di un trigger di sovrapposizione: perché ciascuno è stato mostrato, ignorato o rifiutato.

triggers deliveries <id> [--limit N]
ParametroTipoObbligatorioPredefinitoNote
<id>stringsìnessunoL’ID trigger trg_.
--limit Nintegerno100Quante consegne, le più recenti per prime; da 1 a 100.
screenrig triggers deliveries trg_01EXAMPLETRIGGER00 --limit 20

data.items contiene gli invii degli ultimi sette giorni: at, outcome (shown, updated, unchanged, ended, ignored, refused, invalid o handshake), reason per un invio rifiutato o non valido (credentials, signature, signature_missing, signature_invalid, timestamp_missing, timestamp_stale, secret_pending, handshake_invalid, disabled, body, mapping, field, rate_limited o internal), detail (il membro o il percorso di mappatura sbagliato), status, bytes, files (le parti file di un invio multipart, che vengono ignorate), alert_id e request_id. signature è una ScreenRig-Signature fallita; gli altri motivi di firma, timestamp e handshake sono quelli di un fornitore, come spiega la tabella in firme e handshake dei fornitori. Il registro non conserva mai un corpo, un’intestazione o una credenziale. Un segreto sbagliato, una firma non valida e un trigger disattivato danno tutti al mittente lo stesso 404, quindi questo registro è dove si legge quale fosse. Un trigger CAP non ha consegne.

triggers clear#

Termina ora l’allerta del trigger.

triggers clear <id> [--alert-id ID]
ParametroTipoObbligatorioPredefinitoNote
<id>stringsìnessunoL’ID trigger trg_.
--alert-id IDstringnonessunoUn trigger di sovrapposizione: termina solo questo avviso. Senza questa opzione terminano tutti gli avvisi.
screenrig triggers clear trg_01EXAMPLETRIGGER00
screenrig triggers clear trg_01EXAMPLETRIGGER00 --alert-id front-door

L'avviso termina con ended_reason cleared e i suoi schermi tornano a ciò che riproducevano prima. Uno schermo la cui acquisizione è stata sostituita da qualcos'altro nel frattempo viene lasciato com'è. Senza avviso attivo non cambia nulla. Su un trigger di sovrapposizione, la chiusura di un avviso non attivo non cambia nulla, e quando termina l'ultimo avviso la fascia si abbassa o gli schermi dell'acquisizione vengono restituiti.

triggers rotate-secret#

Sostituisci la password di un trigger.

triggers rotate-secret <id> [--signing] [--expect-rev REVISION]
ParametroTipoObbligatorioPredefinitoNote
<id>stringsìnessunoL’ID trigger trg_.
--signingflagnospentoUn trigger di sovrapposizione che firma: sostituisce il segreto di firma invece della password.
--expect-rev REVISIONstringnonessunoPrecondizione opzionale di revisione.
screenrig triggers rotate-secret trg_01EXAMPLETRIGGER00

La busta contiene la nuova password in data.password. La vecchia password smette subito di funzionare, quindi inserisca la nuova nel sistema mittente. Con --signing, la busta contiene invece il nuovo data.signing_secret, mostrato una sola volta; il vecchio smette subito di funzionare, e un trigger che non firma risponde invalid_request. Dopo una rotazione interrotta o ambigua, riesegui lo stesso comando entro 24 ore: riutilizza la chiave di idempotenza salvata e il server restituisce la rotazione già avvenuta invece di ruotare di nuovo.

triggers delete#

Eliminare un trigger. Il suo URL smette subito di accettare avvisi e invii; le fasce di un trigger di sovrapposizione lasciano i suoi schermi e la sua scheda viene eliminata. Un trigger che mostra un avviso viene rifiutato con resource_conflict: eseguire prima triggers clear.

triggers delete <id> [--expect-rev REVISION]
ParametroTipoObbligatorioPredefinitoNote
<id>stringsìnessunoL’ID trigger trg_.
--expect-rev REVISIONstringnonessunoPrecondizione opzionale di revisione.
screenrig triggers delete trg_01EXAMPLETRIGGER00

Trigger di sovrapposizione

Un trigger di sovrapposizione mostra ciò che pubblica un sistema esterno. Home Assistant, un hub di sensori di porta o di movimento, un sistema di telecamere o uno strumento di allerta invia poche parole con un HTTP POST, e gli schermi del trigger le mostrano finché scadono o il mittente le termina. È un trigger come un trigger CAP: triggers create --kind overlay lo crea e rientra nello stesso limite di 20 per organizzazione.

--show bar disegna una fascia sopra ciò che viene riprodotto su ogni schermo di destinazione, sul bordo inferiore o, con --edge top, su quello superiore. La fascia entra quando inizia un avviso ed esce quando termina l'ultimo; la playlist, le sue pagine e i suoi tempi non cambiano. Uno schermo ha una fascia per bordo: un trigger di sovrapposizione il cui bordo è già occupato su uno schermo da un altro trigger non vi compare (triggers show conta questi schermi come edge_taken), e una pagina che ha una propria fascia con presenza su quel bordo la mantiene. Una scheda d'angolo o a pastiglia su quel bordo si sposta verso l'interno oltre l'altezza della fascia, che sia visibile o no. Nessuna fascia viene disegnata su una pagina di spazio pubblicitario né durante un'acquisizione. --show takeover riproduce l'avviso a schermo intero sugli schermi di destinazione che hanno una playlist predefinita, dal primo avviso alla fine dell'ultimo. Un trigger di acquisizione non sostituisce mai un'acquisizione già presente su uno schermo, come quella di un operatore o di un avviso di emergenza, e un avviso CAP lo sostituisce.

Una destinazione per tag viene risolta quando inizia un avviso; uno schermo etichettato dopo riceve la fascia con il prossimo avviso che inizia. Gli schermi senza playlist predefinita vengono saltati da un'acquisizione. Uno schermo offline si aggiorna quando si riconnette.

Il mittente invia JSON, un modulo o multipart/form-data (le parti file vengono ignorate) a data.url con Authorization: Bearer SECRET, oppure con HTTP Basic usando l'id del trigger come nome utente e il segreto come password. Il segreto non va mai nell'URL. Un invio ha questi membri; un membro sconosciuto viene rifiutato e nominato.

MembroTipoNote
alert_idstringL'id dell'avviso scelto dal mittente, da 1 a 200 caratteri. Lo stesso id aggiorna quell'avviso invece di impilarne un altro. Senza id è un solo avviso chiamato default. In una chiusura, senza id terminano tutti gli avvisi.
labelstringUn'etichetta breve sopra il titolo: al massimo 40 caratteri.
titlestringAl massimo 120 caratteri.
messagestringIl testo principale: al massimo 400 caratteri.
notestringUna riga discreta a piè di scheda: al massimo 120 caratteri.
durationnumero o stringaPer quanto tempo questo invio trattiene il suo avviso, da adesso: da 10 a 604800 secondi, oppure 10s, 5m, 2h, 1d o until_cleared. Senza valore si usa --for del trigger (10 minuti se non impostato).
clearbooleano o stringatrue (o yes, y, 1, x) termina l'avviso; false (o no, n, 0, vuoto) lo attiva. Una chiusura ignora gli altri membri.
statestringUna parola di stato del mittente. off, closed, clear, cleared, resolved, ok, normal, inactive e ended, in qualsiasi caso, terminano l'avviso; qualsiasi altro stato lo attiva.

Un'attivazione richiede almeno uno tra label, title, message e note. Il testo più lungo del suo limite viene rifiutato, come duration fuori da 10 secondi - 7 giorni, entrambi con invalid_request che nomina il membro. Ogni attivazione o aggiornamento trattiene il suo avviso per duration da quell'invio; un sensore di movimento che invia ogni pochi secondi mantiene la fascia, e questa esce duration dopo l'ultimo invio. Un trigger mostra il suo avviso più recente; quando termina, riappare quello precedente. Trattiene dieci avvisi, e l'undicesimo sostituisce il più vecchio. Un avviso termina circa dieci secondi dopo la sua scadenza. Una chiusura inviata due volte termina l'avviso una sola volta, e la chiusura di un avviso non attivo non cambia nulla.

La risposta è una ricevuta: outcome (shown, updated, unchanged, ended o ignored), alert_id, until (nullo per un avviso mantenuto finché non viene cancellato) e active, gli avvisi che il trigger mantiene dopo l’invio. Un’intestazione Idempotency-Key da 8 a 200 caratteri risponde al nuovo tentativo di un mittente con la prima ricevuta per 24 ore. Un trigger accetta 120 invii al minuto. Un invio non conta nel limite di richieste agente, e una cancellazione non viene mai rifiutata, quindi un avviso può sempre essere tolto dagli schermi.

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"}'

Un indirizzo errato, un segreto errato, un trigger disattivato, una firma mancante o errata e qualsiasi GET danno lo stesso 404 not_found, così un mittente o l'anteprima di un link non capisce quale fosse. triggers deliveries mostra al progetto il motivo, per gli ultimi sette giorni, senza il corpo dell'invio. --style FILE imposta theme, accent, background, backgroundColor, textColor e align della scheda di testo; usi un trigger per ogni aspetto.

--map FILE costruisce il messaggio dal corpo inviato da uno strumento di allerta, con il linguaggio di modelli dei webhook delle schede. Una stringa con {{body.title}} è testo, una stringa che è esattamente un segnaposto mantiene il suo tipo, {"$text": "{{body.message}}", "$max": 400} taglia il testo e un percorso inizia con body o query. Questo modello converte un avviso di uno strumento di monitoraggio e lo termina quando il suo stato è resolved:

{"alert_id": "{{body.groupKey}}", "title": "{{body.title}}", "message": {"$text": "{{body.message}}", "$max": 400}, "state": "{{body.status}}"}

--signing richiede inoltre ScreenRig-Signature: t=<unix seconds>,v1=<hex HMAC-SHA256 of "<t>.<raw body>">, firmato con data.signing_secret (whsec_…, mostrato una sola volta), dove t deve distare al massimo cinque minuti dall'orologio del server. Il mittente può inviare due valori v1 mentre ruota il segreto.

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"

Uno strumento di allerta o un fornitore che firma i propri invii può far verificare la sua firma al posto del segreto, e far rispondere al suo handshake di configurazione, come per i webhook delle schede: triggers create e triggers update accettano --verify VENDOR con --verify-secret-file FILE, e --handshake VENDOR, e triggers update accetta --clear-verify e --clear-handshake per rimuovere ciascuno. I fornitori, le loro intestazioni e le opzioni di generic_hmac sono quelli elencati lì. Un invio che porta la firma valida del fornitore è accettato senza la password srtg_ del trigger, che continua a funzionare accanto; --verify esclude --signing, e un handshake non cambia alcun allarme. triggers deliveries mostra perché una firma è fallita.

Un rest_command di Home Assistant invia al trigger. Tenga il segreto in secrets.yaml e dia a ogni automazione l'avviso che attiva o termina:

# 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}

Due fatti lo fanno funzionare. Ogni invio di movimento trattiene la fascia per 2 minuti da quell'invio, quindi resta finché il movimento continua ed esce 2 minuti dopo l'ultimo evento. E Home Assistant genera il modello {{ }} prima di inviare, così il trigger riceve JSON semplice; il modello --map del trigger è un passaggio separato che fa passare ogni invio attraverso di esso; quindi lascia --map fuori per un mittente che invia già i membri della sovrapposizione, come fa qui Home Assistant, oppure dagli un trigger tutto suo.

Altri gruppi di comandi