Documentação

Gatilhos: comandos da CLI

Assuma telas com alertas de emergência CAP e mostre sobreposições de Home Assistant, sensores ou qualquer cliente HTTP: crie, teste e gire gatilhos.

Cada comando funciona como descrito na referência da CLI: flags globais, saída JSON, códigos de saída, revisões e tentativas.

Gatilhos de alerta CAP

Um gatilho permite que um sistema de notificação de emergência, como Everbridge, Rave, Alertus ou um relé IPAWS, assuma telas com alertas CAP 1.2. Cada gatilho tem sua própria URL, nome de usuário e senha, que você insere no sistema de envio como destino CAP HTTP POST com autenticação HTTP Basic. Uma organização tem no máximo 20 gatilhos em todos os seus projetos.

Os gatilhos são de dois tipos. Um gatilho CAP, descrito aqui, recebe os alertas de um sistema de emergência. Um gatilho de sobreposição mostra o que qualquer remetente publica, como o Home Assistant, um hub de sensores ou uma ferramenta de alertas, como uma faixa sobre o que está sendo exibido ou como uma tomada de controle; triggers create --kind overlay cria um, e triggers update, triggers clear e triggers rotate-secret servem aos dois tipos, enquanto triggers deliveries lê o registro de um gatilho de sobreposição.

Um gatilho mira uma tag, resolvida quando cada alerta chega, ou até 500 ids de tela. Cada Alerta vira uma tomada da playlist do gatilho: um cartão em tela cheia na cor da severidade, com evento, manchete, descrição e instrução. Um Exercício adiciona um banner EXERCISE. A tomada dura até o <expires> do alerta, senão o padrão --for do gatilho (1 minuto a 7 dias, 1 hora se não definido), e nunca passa 7 dias. Uma Atualização redesenha o cartão, e um Cancelar ou AllClear devolve cada tela ao que tocava antes. Um novo Alerta substitui o que está mostrando. Mensagens Test, System e Draft, mensagens Ack e Error e alertas expirados são ignorados, e um remetente e identificador repetidos são duplicados. Uma tela precisa de uma playlist padrão para ser tomada; outras telas são puladas.

A senha, srtg_…, é mostrada somente por triggers create e triggers rotate-secret, com o aviso trigger_password_shown_once. O CLI a mantém fora de sua configuração, log de operação e estado de recuperação. A URL e o nome de usuário não são secretos.

Código do problemaSairSignificado
trigger_limit_reached5A organização já tem 20 gatilhos. Nada foi criado. Exclua um primeiro.
resource_conflict5triggers test ou triggers delete enquanto um alerta está ativo. next é triggers clear.
not_found4Nenhum gatilho tem este ID no projeto.
revision_conflict6A revisão --expect-rev estava desatualizada. Execute triggers show e tente novamente.

triggers create#

Criar um gatilho e receber sua URL, nome de usuário e senha.

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]
ParâmetroTipoObrigatórioPadrãoNotas
--name NAMEstringsimnenhumO nome do gatilho, de 1 a 80 caracteres sem caracteres de controle.
--kind KINDcap ou overlaynãocapcap recebe os alertas CAP 1.2 de um sistema de emergência. overlay recebe poucas palavras de qualquer remetente e exige --show.
--tag TAGstringum de --tag ou --screen-idnenhumCada tela ativa com esta tag quando um alerta chega.
--screen-id IDstringum de --tag ou --screen-idnenhumUm scr_ id de tela. Repita-o, ou liste ids separados por vírgula; no máximo 500.
--for DURATIONduraçãonão1h (sobreposição 10m)Por quanto tempo um alerta sem <expires>, ou um envio de sobreposição sem duration, mantém as telas, como 30m, 2h ou 1d; de 1 minuto a 7 dias em um gatilho CAP, de 10 segundos a 7 dias em um gatilho de sobreposição.
--pull FILEcaminhonãonenhumUm gatilho CAP: um objeto JSON, de um arquivo ou - para stdin, que também faz a plataforma ler fontes de alerta CAP para o gatilho. Seus membros são os parâmetros do cartão cap-alert, listados abaixo.
--show SHOWbar ou takeovercom --kind overlaynenhumbar desenha uma faixa sobre o que está sendo exibido nas telas de destino. takeover exibe o alerta em tela cheia.
--edge EDGEbottom ou topnãobottomA borda que uma faixa ocupa. Somente com --show bar.
--style FILEcaminhonãonenhumUm objeto JSON, de um arquivo ou de - para a entrada padrão, com o estilo do cartão de texto: theme, accent, background, backgroundColor, textColor e align. No máximo 64 KiB.
--map FILEcaminhonãonenhumUm modelo JSON, de um arquivo ou de - para a entrada padrão, que monta a publicação de sobreposição a partir do corpo enviado pelo remetente; veja gatilhos de sobreposição. No máximo 64 KiB.
--signingflagnãodesligadoExigir também um cabeçalho ScreenRig-Signature em cada envio e exibir o segredo de assinatura uma só vez. Não com --verify.
--verify VENDORstringnãonenhumUm gatilho de sobreposição: aceita uma postagem que traz a assinatura própria deste fornecedor no lugar da senha srtg_, que continua funcionando ao lado. github, stripe, shopify, slack, linear, vercel, asana ou generic_hmac.
--verify-secret-file FILEcaminhocom --verify, exceto asananenhumO segredo do fornecedor, de um arquivo ou - para stdin, nunca como argumento: o segredo de webhook que GitHub, Stripe, Shopify, Slack, Linear ou Vercel mostra, ou o de um remetente generic_hmac. asana não aceita nenhum: o handshake dele o entrega.
--verify-header NAMEstringcom --verify generic_hmacnenhumO cabeçalho que carrega a assinatura.
--verify-encoding ENCODINGhex ou base64nãohexCom --verify generic_hmac: como a assinatura é escrita. Ela pode começar com sha256=.
--verify-timestamp-header NAMEstringnãonenhumCom --verify generic_hmac: um cabeçalho que carrega a hora Unix em segundos, ou em milissegundos com 13 dígitos. O texto assinado é então <timestamp>.<body>.
--verify-tolerance SECONDSintegernão300Com --verify-timestamp-header: o quanto o carimbo de data e hora pode se afastar do relógio do servidor, de 1 a 86400.
--handshake VENDORstringnãonenhumUm gatilho de sobreposição: responde ao desafio de configuração de microsoft_graph, monday, trello ou azure_event_grid. Slack e Asana respondem ao deles por meio de --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

O envelope é o gatilho com data.url (https://api.screenrig.ai/api/triggers/<id>/cap, ou .../overlay para um gatilho de sobreposição), data.username (o id do gatilho) e data.password. Informe-os agora no sistema remetente; o remetente de um gatilho de sobreposição precisa da URL e da senha (Authorization: Bearer). Com --signing, o envelope também traz data.signing_secret, exibido uma só vez, com o aviso trigger_signing_secret_shown_once. Após uma criação interrompida ou ambígua, execute o mesmo comando de novo em até 24 horas: ele reutiliza a chave de idempotência salva, e o servidor devolve o mesmo gatilho e a mesma senha em vez de criar outro.

--pull adiciona fontes que a plataforma lê além da URL postada, que continua funcionando. O objeto contém sources (até 5 URLs http ou https de alertas CAP 1.0 a 1.2 ou índices ATOM/RSS), publicAlerts, location (name, latitude, longitude, e geocodes como [{name, value}]), minSeverity, maxSeverity, minUrgency, minCertainty, events, excludeEvents, senders, statuses, scopes, languages e areaUnknown; feeds get cap usa os mesmos filtros que flags. location é obrigatório a menos que sources sejam fornecidos, e sem sources os feeds públicos cobrindo location são lidos. Cada fonte é buscada uma vez por minuto. O alerta correspondente mais grave assume as telas como um postado, e quando as fontes não mostram nenhum, um alerta puxado termina; uma fonte desatualizada ou com falha nunca termina um alerta. Por exemplo {"location": {"latitude": 49.25, "longitude": -123}, "minSeverity": "moderate"}.

As opções de sobreposição (--show, --edge, --style, --map, --signing, --verify com as suas companheiras, e --handshake) exigem --kind overlay, e --pull exige um gatilho CAP. --style, --map e --verify-secret-file leem cada uma um arquivo, e apenas uma delas pode ler - (stdin).

--verify VENDOR deixa o webhook de um fornecedor publicar direto em data.url: uma postagem que traz a assinatura válida do fornecedor no cabeçalho dele é aceita sem data.password, que continua funcionando ao lado. O segredo do fornecedor é guardado selado e só é lido de volta como overlay.verify.secret, com set e seus quatro últimos caracteres. asana não aceita segredo: o handshake dele entrega um, e os eventos respondem secret_pending até lá. generic_hmac precisa de --verify-header e aceita --verify-encoding, --verify-timestamp-header e --verify-tolerance. --handshake VENDOR responde ao desafio de configuração desse fornecedor antes de qualquer credencial ser pedida; não altera nenhum alerta, nunca é cobrado e aparece em triggers deliveries como resultado handshake. Os fornecedores, seus cabeçalhos e as configurações a informar em cada um estão em assinaturas e handshakes dos fornecedores.

triggers list#

Listar os gatilhos deste projeto e seus alertas mais recentes, do mais antigo para o mais recente.

triggers list
screenrig triggers list

--human mostra ID, KIND, LABEL, TARGET, ALERT e LAST_RECEIVED; em um gatilho de sobreposição, ALERT diz o que ele desenha e quantos alertas mantém. Uma lista nunca traz senha nem segredo de assinatura.

triggers show#

Inspecione um gatilho e seu alerta mais recente.

triggers show <id>
ParâmetroTipoObrigatórioPadrãoNotas
<id>stringsimnenhumO id do gatilho trg_.
screenrig triggers show trg_01EXAMPLETRIGGER00

data.alert é o último alerta: seus campos CAP, state active ou ended (com ended_reason cancelled, all_clear, cleared ou expired), until e screens com targeted, taken_over, cleared, skipped, failed e pending. pending é verdadeiro enquanto telas ainda estão sendo gravadas, e as telas com falha são repetidas. data.playlist_id é a playlist de alerta do gatilho, e screen show informa um alerta como uma tomada de controle dela. Em um gatilho de sobreposição, data.overlay contém show, edge, enabled, signing, verify e handshake enquanto definidos, card_id, alerts (os alertas ativos, o mais recente primeiro; o primeiro é exibido), screens com targeted, holding, taken_over, removed, edge_taken, skipped e failed, e pending.

triggers test#

Mostrar alerta de exercício de 60 segundos nas telas do gatilho.

triggers test <id>
ParâmetroTipoObrigatórioPadrãoNotas
<id>stringsimnenhumO id do gatilho trg_.
screenrig triggers test trg_01EXAMPLETRIGGER00

O envelope é o recibo: data.outcome shown e data.alert. A resposta chega antes de todas as telas serem gravadas; triggers show informa as contagens. Um gatilho de sobreposição exibe o alerta screenrig-test (rótulo Test, título Test overlay) por 60 segundos, e o recibo é o que um envio recebe (data.alert_id, data.until, data.active). Os dois tipos recusam um teste enquanto um alerta é exibido.

triggers update#

Alterar um gatilho sem mudar sua URL nem seu segredo.

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]
ParâmetroTipoObrigatórioPadrãoNotas
<id>stringsimnenhumO id do gatilho trg_.
--name NAMEstringnãoinalteradoRenomear o gatilho.
--tag TAG, --screen-id IDstringnãoinalteradoUm novo destino, como em triggers create.
--for DURATIONduraçãonãoinalteradoUma nova duração para alertas que não indicam fim: de 1 minuto a 7 dias para um gatilho CAP, de 10 segundos a 7 dias para um gatilho de sobreposição.
--pull FILE, --no-pullcaminho, flagnãoinalteradoUm gatilho CAP: substitui suas fontes CAP ou deixa de lê-las.
--edge EDGEbottom ou topnãoinalteradoUma faixa de sobreposição: movê-la para esta borda.
--style FILE, --clear-stylecaminho, flagnãoinalteradoUm gatilho de sobreposição: substitui todo o estilo ou o remove.
--map FILE, --clear-mapcaminho, flagnãoinalteradoUm gatilho de sobreposição: substitui o modelo ou o remove para que o objeto enviado seja a publicação.
--enable, --disableflagnãoinalteradoUm gatilho de sobreposição: um gatilho desativado responde a cada envio com o 404 que um segredo errado recebe.
--signing, --no-signingflagnãoinalteradoUm gatilho de sobreposição: ativa a verificação de assinatura (o segredo de assinatura é exibido uma só vez) ou a desativa. Não com --verify.
--verify VENDORstringnãoinalteradoUm gatilho de sobreposição: substitui a verificação do fornecedor, como em triggers create. Sem --verify-secret-file, mantém o segredo guardado quando o fornecedor continua o mesmo; um fornecedor diferente precisa do seu próprio.
--verify-secret-file FILEcaminhonãoinalteradoCom --verify: o segredo do fornecedor, de um arquivo ou - para stdin.
--verify-header NAMEstringnãoinalteradoCom --verify generic_hmac: o cabeçalho que carrega a assinatura.
--verify-encoding ENCODINGhex ou base64nãoinalteradoCom --verify generic_hmac: como a assinatura é escrita.
--verify-timestamp-header NAMEstringnãoinalteradoCom --verify generic_hmac: um cabeçalho que carrega a hora Unix.
--verify-tolerance SECONDSintegernãoinalteradoCom --verify-timestamp-header: o quanto o carimbo de data e hora pode se afastar do relógio do servidor, de 1 a 86400.
--clear-verifyflagnãodesligadoUm gatilho de sobreposição: deixa de aceitar a assinatura de um fornecedor e esquece o segredo dele.
--handshake VENDORstringnãoinalteradoUm gatilho de sobreposição: responde ao desafio de configuração de microsoft_graph, monday, trello ou azure_event_grid.
--clear-handshakeflagnãodesligadoUm gatilho de sobreposição: deixa de responder ao handshake do fornecedor.
--expect-rev REVISIONstringnãonenhumPré-condição opcional de revisão.
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

É necessária pelo menos uma opção além de --expect-rev. Uma faixa se reposiciona nas novas telas de destino e na nova borda; o novo destino de um gatilho de tomada de controle vale a partir do próximo alerta que começar. Um gatilho que já assina mantém seu segredo de assinatura quando --signing é repetido; triggers rotate-secret --signing o substitui. --clear-verify remove a verificação do fornecedor e esquece o segredo dela, e --clear-handshake deixa de responder ao handshake do fornecedor. Após uma atualização interrompida ou ambígua, execute o mesmo comando de novo: ele reutiliza a chave de idempotência salva.

triggers deliveries#

Ler o registro de envios de um gatilho de sobreposição: por que cada um foi exibido, ignorado ou recusado.

triggers deliveries <id> [--limit N]
ParâmetroTipoObrigatórioPadrãoNotas
<id>stringsimnenhumO id do gatilho trg_.
--limit Nintegernão100Quantas entregas, as mais recentes primeiro; de 1 a 100.
screenrig triggers deliveries trg_01EXAMPLETRIGGER00 --limit 20

data.items guarda as postagens dos últimos sete dias: at, outcome (shown, updated, unchanged, ended, ignored, refused, invalid ou handshake), reason para uma postagem recusada ou inválida (credentials, signature, signature_missing, signature_invalid, timestamp_missing, timestamp_stale, secret_pending, handshake_invalid, disabled, body, mapping, field, rate_limited ou internal), detail (o membro ou o caminho de mapeamento que estava errado), status, bytes, files (as partes de arquivo de uma postagem multipart, que são ignoradas), alert_id e request_id. signature é um ScreenRig-Signature que falhou; os demais motivos de assinatura, carimbo de data e handshake são os de um fornecedor, como a tabela em assinaturas e handshakes dos fornecedores explica. O registro nunca guarda um corpo, um cabeçalho nem uma credencial. Um segredo errado, uma assinatura inválida e um gatilho desativado dão todos ao remetente o mesmo 404, então este registro é onde se lê qual foi. Um gatilho CAP não tem entregas.

triggers clear#

Encerrar o alerta do gatilho agora.

triggers clear <id> [--alert-id ID]
ParâmetroTipoObrigatórioPadrãoNotas
<id>stringsimnenhumO id do gatilho trg_.
--alert-id IDstringnãonenhumUm gatilho de sobreposição: encerra somente este alerta. Sem esta opção, todos os alertas terminam.
screenrig triggers clear trg_01EXAMPLETRIGGER00
screenrig triggers clear trg_01EXAMPLETRIGGER00 --alert-id front-door

O alerta termina com ended_reason cleared, e suas telas voltam ao que exibiam antes. Uma tela cuja tomada de controle outra coisa substituiu desde então é deixada como está. Sem alerta ativo, nada muda. Em um gatilho de sobreposição, o encerramento de um alerta que não está ativo não muda nada, e o fim do último alerta abaixa a faixa ou devolve as telas da tomada de controle.

triggers rotate-secret#

Substituir a senha de um gatilho.

triggers rotate-secret <id> [--signing] [--expect-rev REVISION]
ParâmetroTipoObrigatórioPadrãoNotas
<id>stringsimnenhumO id do gatilho trg_.
--signingflagnãodesligadoUm gatilho de sobreposição que assina: substitui o segredo de assinatura em vez da senha.
--expect-rev REVISIONstringnãonenhumPré-condição opcional de revisão.
screenrig triggers rotate-secret trg_01EXAMPLETRIGGER00

O envelope traz a nova senha em data.password. A senha antiga deixa de funcionar na hora, então informe a nova no sistema remetente. Com --signing, o envelope traz o novo data.signing_secret em vez disso, exibido uma só vez; o antigo deixa de funcionar na hora, e um gatilho que não assina responde invalid_request. Após uma rotação interrompida ou ambígua, execute novamente o comando idêntico em até 24 horas: ele reutiliza a chave de idempotência salva, e o servidor retorna a rotação que já aconteceu em vez de girar de novo.

triggers delete#

Excluir um gatilho. Sua URL deixa de aceitar alertas e envios na hora; as faixas de um gatilho de sobreposição saem de suas telas e seu cartão é excluído. Um gatilho que exibe um alerta é recusado com resource_conflict: execute triggers clear primeiro.

triggers delete <id> [--expect-rev REVISION]
ParâmetroTipoObrigatórioPadrãoNotas
<id>stringsimnenhumO id do gatilho trg_.
--expect-rev REVISIONstringnãonenhumPré-condição opcional de revisão.
screenrig triggers delete trg_01EXAMPLETRIGGER00

Gatilhos de sobreposição

Um gatilho de sobreposição mostra o que um sistema externo publica. O Home Assistant, um hub de sensores de porta ou de movimento, um sistema de câmeras ou uma ferramenta de alertas envia poucas palavras com um HTTP POST, e as telas do gatilho as exibem até expirarem ou o remetente as encerrar. É um gatilho como o CAP: triggers create --kind overlay o cria e ele conta no mesmo limite de 20 por organização.

--show bar desenha uma faixa sobre o que está sendo exibido em cada tela de destino, na borda inferior ou, com --edge top, na superior. A faixa entra quando um alerta começa e sai quando o último termina; a playlist, suas páginas e seu tempo não mudam. Uma tela tem uma faixa por borda: um gatilho de sobreposição cuja borda já pertence a outro gatilho em uma tela não aparece ali (triggers show conta essas telas como edge_taken), e uma página que tem a própria faixa com presença nessa borda a mantém. Um cartão de canto ou de ficha nessa borda se desloca para dentro, além da altura da faixa, esteja ela visível ou não. Nenhuma faixa é desenhada em uma página de espaço publicitário nem durante uma tomada de controle. --show takeover exibe o alerta em tela cheia nas telas de destino que têm uma playlist padrão, do primeiro alerta até o fim do último. Um gatilho de tomada de controle nunca substitui uma tomada de controle que já está em uma tela, como a de um operador ou a de um alerta de emergência, e um alerta CAP a substitui.

Um destino por tag é resolvido quando um alerta começa; uma tela marcada depois recebe a faixa com o próximo alerta que começar. Telas sem playlist padrão são ignoradas por uma tomada de controle. Uma tela offline se atualiza ao reconectar.

O remetente envia JSON, um formulário ou multipart/form-data (as partes de arquivo são ignoradas) para data.url com Authorization: Bearer SECRET, ou com HTTP Basic usando o id do gatilho como usuário e o segredo como senha. O segredo nunca vai na URL. Um envio tem estes membros; um membro desconhecido é recusado e nomeado.

MembroTipoNotas
alert_idstringO id do alerta escolhido pelo remetente, de 1 a 200 caracteres. O mesmo id atualiza esse alerta em vez de empilhar outro. Sem id, é um único alerta chamado default. Em um encerramento, sem id todos os alertas terminam.
labelstringUm rótulo curto acima do título: no máximo 40 caracteres.
titlestringNo máximo 120 caracteres.
messagestringO texto principal: no máximo 400 caracteres.
notestringUma linha discreta no rodapé: no máximo 120 caracteres.
durationnúmero ou stringPor quanto tempo este envio mantém seu alerta, a partir de agora: de 10 a 604800 segundos, ou 10s, 5m, 2h, 1d ou until_cleared. Sem valor, vale --for do gatilho (10 minutos se não definido).
clearbooleano ou stringtrue (ou yes, y, 1, x) encerra o alerta; false (ou no, n, 0, vazio) o dispara. Um encerramento ignora os outros membros.
statestringUma palavra de estado do remetente. off, closed, clear, cleared, resolved, ok, normal, inactive e ended, em qualquer caixa, encerram o alerta; qualquer outro estado o dispara.

Um disparo exige pelo menos um entre label, title, message e note. Texto maior que o limite é recusado, assim como duration fora de 10 segundos a 7 dias, ambos com invalid_request nomeando o membro. Cada disparo ou atualização mantém seu alerta por duration a partir daquele envio; um sensor de movimento que envia a cada poucos segundos mantém a faixa na tela, e ela sai duration depois do último envio. Um gatilho mostra seu alerta mais recente; ao encerrá-lo, o anterior volta a aparecer. Ele mantém dez alertas, e o décimo primeiro substitui o mais antigo. Um alerta termina cerca de dez segundos depois do seu horário. Um encerramento enviado duas vezes encerra o alerta uma só vez, e o encerramento de um alerta que não está ativo não muda nada.

A resposta é um recibo: outcome (shown, updated, unchanged, ended ou ignored), alert_id, until (nulo para um alerta mantido até ser limpo) e active, os alertas que o gatilho mantém após o envio. Um cabeçalho Idempotency-Key de 8 a 200 caracteres responde à nova tentativa de um remetente com o primeiro recibo por 24 horas. Um gatilho aceita 120 envios por minuto. Um envio não conta no limite de solicitações de agente, e uma limpeza nunca é recusada, então um alerta sempre pode ser retirado das telas.

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

Um endereço errado, um segredo errado, um gatilho desativado, uma assinatura ausente ou errada e qualquer GET dão o mesmo 404 not_found, de modo que um remetente ou a prévia de um link não descobre qual foi. triggers deliveries mostra ao projeto o motivo, dos últimos sete dias, sem o corpo do envio. --style FILE define theme, accent, background, backgroundColor, textColor e align do cartão de texto; use um gatilho por aparência.

--map FILE monta a publicação a partir do corpo que uma ferramenta de alertas envia, com a linguagem de modelos dos webhooks de cartões. Uma string com {{body.title}} é texto, uma string que é exatamente um marcador mantém seu tipo, {"$text": "{{body.message}}", "$max": 400} corta o texto e um caminho começa com body ou query. Este modelo converte um alerta de uma ferramenta de monitoramento e o encerra quando o status é resolved:

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

--signing também exige ScreenRig-Signature: t=<unix seconds>,v1=<hex HMAC-SHA256 of "<t>.<raw body>">, com a chave data.signing_secret (whsec_…, exibido uma só vez), em que t deve estar a no máximo cinco minutos do relógio do servidor. O remetente pode enviar dois valores v1 enquanto troca o segredo.

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"

Uma ferramenta de alertas ou um fornecedor que assina as próprias postagens pode ter a assinatura verificada no lugar do segredo, e o handshake de configuração dele respondido, como nos webhooks de cartão: triggers create e triggers update aceitam --verify VENDOR com --verify-secret-file FILE, e --handshake VENDOR, e triggers update aceita --clear-verify e --clear-handshake para remover cada um. Os fornecedores, seus cabeçalhos e as opções de generic_hmac são os listados lá. Uma postagem que traz a assinatura válida do fornecedor é aceita sem a senha srtg_ do gatilho, que continua funcionando ao lado; --verify exclui --signing, e um handshake não altera nenhum alerta. triggers deliveries mostra por que uma assinatura falhou.

Um rest_command do Home Assistant envia ao gatilho. Guarde o segredo em secrets.yaml e dê a cada automação o alerta que ela dispara ou encerra:

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

Dois fatos fazem isto funcionar. Cada envio de movimento mantém a faixa por 2 minutos a partir daquele envio, então ela fica enquanto o movimento continua e sai 2 minutos depois do último evento. E o Home Assistant processa o modelo {{ }} antes de enviar, de modo que o gatilho recebe JSON simples; o modelo --map do próprio gatilho é uma etapa separada que passa cada envio por ele; por isso, deixe --map de fora para um remetente que já envia os membros da sobreposição, como o Home Assistant faz aqui, ou dê a ele um gatilho próprio.

Outros grupos de comandos