Documentación

Disparadores: comandos CLI

Toma el control de las pantallas con alertas CAP y muestra superposiciones de Home Assistant, sensores o clientes HTTP: crea, prueba y rota disparadores.

Cada comando se ejecuta como describe la referencia de la CLI: banderas globales, salida JSON, códigos de salida, revisiones y reintentos.

Disparadores de alertas CAP

Un disparador permite que un sistema de notificación de emergencia, como Everbridge, Rave, Alertus o un relé IPAWS, tome el control de las pantallas con alertas CAP 1.2. Cada disparador tiene su propia URL, nombre de usuario y contraseña, que debe ingresar en el sistema de envío como destino CAP HTTP POST con autenticación HTTP Basic. Una organización tiene como máximo 20 disparadores en todos sus proyectos.

Los activadores son de dos tipos. Un activador CAP, descrito aquí, recibe las alertas de un sistema de emergencias. Un activador de superposición muestra lo que publica cualquier remitente, como Home Assistant, un concentrador de sensores o una herramienta de alertas, como una franja sobre lo que se reproduce o como una toma de control; triggers create --kind overlay crea uno, y triggers update, triggers clear y triggers rotate-secret sirven a los dos tipos, mientras que triggers deliveries lee el registro de un activador de superposición.

Un disparador apunta a una etiqueta, resuelta cuando llega cada alerta, o hasta 500 ids de pantalla. Cada alerta se convierte en una toma de la lista de reproducción propia del disparador: una tarjeta a pantalla completa con el color de su gravedad, con el evento, titular, descripción e instrucción. Un ejercicio añade un banner EXERCISE. La toma se mantiene hasta el <expires> de la alerta, o el --for predeterminado del disparador (1 minuto a 7 días, 1 hora a menos que se establezca), y nunca más de 7 días. Una actualización redibuja la tarjeta, y una cancelación o AllClear devuelve cada pantalla a lo que mostraba antes. Una alerta nueva reemplaza a la que se muestra. Se ignoran mensajes de prueba, sistema y borrador, mensajes de acuse y error y alertas expiradas; un remitente e identificador repetidos son duplicados. Una pantalla necesita una lista de reproducción predeterminada para ser tomada; otras pantallas se omiten.

La contraseña, srtg_…, se muestra solo por triggers create y triggers rotate-secret, con la advertencia trigger_password_shown_once. La CLI la mantiene fuera de su configuración, registro de operaciones y estado de recuperación. La URL y el nombre de usuario no son secretos.

Código de problemaSalirSignificado
trigger_limit_reached5La organización ya tiene 20 disparadores. No se creó nada. Elimine uno primero.
resource_conflict5triggers test o triggers delete mientras una alerta está activa. next es triggers clear.
not_found4Ningún disparador tiene este id en el proyecto.
revision_conflict6La revisión --expect-rev estaba obsoleta. Ejecute triggers show y luego intente de nuevo.

triggers create#

Crear un disparador y recibir su URL, nombre de usuario y contraseña.

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ámetroTipoRequeridoPredeterminadoNotas
--name NAMEstringsíningunoEl nombre del trigger, de 1 a 80 caracteres sin caracteres de control.
--kind KINDcap o overlaynocapcap recibe las alertas CAP 1.2 de un sistema de emergencias. overlay recibe unas pocas palabras de cualquier remitente y necesita --show.
--tag TAGstringuno de --tag o --screen-idningunoCada pantalla activa con esta etiqueta cuando llega una alerta.
--screen-id IDstringuno de --tag o --screen-idningunoUn scr_ id de pantalla. Repítalo o liste ids separados por comas; máximo 500.
--for DURATIONduraciónno1h (superposición 10m)Cuánto tiempo una alerta sin <expires>, o un envío de superposición sin duration, mantiene las pantallas, por ejemplo 30m, 2h o 1d; de 1 minuto a 7 días para un activador CAP, de 10 segundos a 7 días para uno de superposición.
--pull FILErutanoningunoUn activador CAP: un objeto JSON, desde un archivo o - para stdin, que también hace que la plataforma lea fuentes de alerta CAP para el activador. Sus miembros son los parámetros de la tarjeta cap-alert, listados a continuación.
--show SHOWbar o takeovercon --kind overlayningunobar dibuja una franja sobre lo que se reproduce en las pantallas de destino. takeover reproduce la alerta a pantalla completa.
--edge EDGEbottom o topnobottomEl borde que ocupa una franja. Solo con --show bar.
--style FILErutanoningunoUn objeto JSON, de un archivo o de - para la entrada estándar, con el estilo de la tarjeta de texto: theme, accent, background, backgroundColor, textColor y align. Como máximo 64 KiB.
--map FILErutanoningunoUna plantilla JSON, de un archivo o de - para la entrada estándar, que construye la publicación de superposición a partir del cuerpo que envía el remitente; consulte los activadores de superposición. Como máximo 64 KiB.
--signingbanderanoapagadoExigir también una cabecera ScreenRig-Signature en cada envío y mostrar el secreto de firma una sola vez. No con --verify.
--verify VENDORstringnoningunoUn activador de superposición: acepta un envío que lleva la firma propia de este proveedor en lugar de la contraseña srtg_, que sigue funcionando a su lado. github, stripe, shopify, slack, linear, vercel, asana o generic_hmac.
--verify-secret-file FILErutacon --verify, excepto asananingunoEl secreto del proveedor, desde un archivo o - para stdin, nunca como argumento: el secreto de webhook que muestran GitHub, Stripe, Shopify, Slack, Linear o Vercel, o el de un remitente generic_hmac. asana no admite ninguno: su handshake lo entrega.
--verify-header NAMEstringcon --verify generic_hmacningunoEl encabezado que lleva la firma.
--verify-encoding ENCODINGhex o base64nohexCon --verify generic_hmac: cómo se escribe la firma. Puede empezar por sha256=.
--verify-timestamp-header NAMEstringnoningunoCon --verify generic_hmac: un encabezado que lleva la hora Unix en segundos, o en milisegundos con 13 dígitos. El texto firmado es entonces <timestamp>.<body>.
--verify-tolerance SECONDSintegerno300Con --verify-timestamp-header: cuánto puede separarse la marca de tiempo del reloj del servidor, de 1 a 86400.
--handshake VENDORstringnoningunoUn activador de superposición: responde al desafío de configuración de microsoft_graph, monday, trello o azure_event_grid. Slack y Asana responden al suyo mediante --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

El sobre es el activador con data.url (https://api.screenrig.ai/api/triggers/<id>/cap, o .../overlay para un activador de superposición), data.username (el id del activador) y data.password. Introdúzcalos ahora en el sistema remitente; el remitente de un activador de superposición necesita la URL y la contraseña (Authorization: Bearer). Con --signing, el sobre incluye también data.signing_secret, que se muestra una sola vez, con la advertencia trigger_signing_secret_shown_once. Tras una creación interrumpida o ambigua, vuelva a ejecutar el mismo comando en 24 horas: reutiliza la clave de idempotencia guardada y el servidor devuelve el mismo activador y la misma contraseña en lugar de crear otro.

--pull añade fuentes que la plataforma lee además de la URL publicada, que sigue funcionando. El objeto contiene sources (hasta 5 URLs http o https de alertas CAP 1.0 a 1.2 o índices ATOM/RSS), publicAlerts, location (name, latitude, longitude, y geocodes como [{name, value}]), minSeverity, maxSeverity, minUrgency, minCertainty, events, excludeEvents, senders, statuses, scopes, languages y areaUnknown; feeds get cap usa los mismos filtros que las banderas. location es obligatorio a menos que se proporcionen sources, y sin sources se leen los feeds públicos que cubren location. Cada fuente se consulta una vez por minuto. La alerta coincidente más grave toma las pantallas como una publicada, y cuando las fuentes no muestran ninguna, una alerta retirada termina; una fuente obsoleta o fallida nunca termina una alerta. Por ejemplo {"location": {"latitude": 49.25, "longitude": -123}, "minSeverity": "moderate"}.

Las opciones de superposición (--show, --edge, --style, --map, --signing, --verify con sus complementarias, y --handshake) necesitan --kind overlay, y --pull necesita un activador CAP. --style, --map y --verify-secret-file leen cada una un archivo, y solo una de ellas puede leer - (stdin).

--verify VENDOR permite que el webhook de un proveedor publique directamente en data.url: un envío que lleva la firma válida del proveedor en su propio encabezado se acepta sin data.password, que sigue funcionando a su lado. El secreto del proveedor se guarda sellado y solo se lee como overlay.verify.secret, con set y sus últimos cuatro caracteres. asana no admite secreto: su handshake entrega uno, y los eventos responden secret_pending hasta entonces. generic_hmac necesita --verify-header y admite --verify-encoding, --verify-timestamp-header y --verify-tolerance. --handshake VENDOR responde al desafío de configuración de ese proveedor antes de pedir cualquier credencial; no cambia ninguna alerta, nunca se factura y aparece en triggers deliveries como resultado handshake. Los proveedores, sus encabezados y los ajustes que introducir en cada uno figuran en firmas y handshakes de proveedores.

triggers list#

Listar los disparadores de este proyecto y sus últimas alertas, los más antiguos primero.

triggers list
screenrig triggers list

--human muestra ID, KIND, LABEL, TARGET, ALERT y LAST_RECEIVED; en un activador de superposición, ALERT indica qué dibuja y cuántas alertas mantiene. Una lista nunca incluye una contraseña ni un secreto de firma.

triggers show#

Inspeccionar un disparador y su última alerta.

triggers show <id>
ParámetroTipoRequeridoPredeterminadoNotas
<id>stringsíningunoEl id de activador trg_.
screenrig triggers show trg_01EXAMPLETRIGGER00

data.alert es la última alerta: sus campos CAP, state active o ended (con ended_reason cancelled, all_clear, cleared o expired), until y screens con targeted, taken_over, cleared, skipped, failed y pending. pending es verdadero mientras se siguen escribiendo pantallas, y las pantallas fallidas se reintentan. data.playlist_id es la lista de reproducción de alerta del activador, y screen show informa de una alerta como una toma de control de ella. En un activador de superposición, data.overlay contiene show, edge, enabled, signing, verify y handshake mientras están definidos, card_id, alerts (las alertas activas, la más reciente primero; la primera es la que se muestra), screens con targeted, holding, taken_over, removed, edge_taken, skipped y failed, y pending.

triggers test#

Mostrar una alerta de ejercicio de 60 segundos en las pantallas del disparador.

triggers test <id>
ParámetroTipoRequeridoPredeterminadoNotas
<id>stringsíningunoEl id de activador trg_.
screenrig triggers test trg_01EXAMPLETRIGGER00

El sobre es el recibo: data.outcome shown y data.alert. La respuesta llega antes de que se escriban todas las pantallas; triggers show informa de los recuentos. Un activador de superposición muestra la alerta screenrig-test (etiqueta Test, título Test overlay) durante 60 segundos, y el recibo es el que recibe un envío (data.alert_id, data.until, data.active). Ambos tipos rechazan una prueba mientras se muestra una alerta.

triggers update#

Cambiar un activador sin cambiar su URL ni su secreto.

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ámetroTipoRequeridoPredeterminadoNotas
<id>stringsíningunoEl id de activador trg_.
--name NAMEstringnosin cambiosCambiar el nombre del activador.
--tag TAG, --screen-id IDstringnosin cambiosUn nuevo destino, como en triggers create.
--for DURATIONduraciónnosin cambiosUna nueva duración para las alertas que no indican fin: de 1 minuto a 7 días para un activador CAP, de 10 segundos a 7 días para un activador de superposición.
--pull FILE, --no-pullruta, opciónnosin cambiosUn activador CAP: reemplaza sus fuentes CAP o deja de leerlas.
--edge EDGEbottom o topnosin cambiosUna franja de superposición: moverla a este borde.
--style FILE, --clear-styleruta, opciónnosin cambiosUn activador de superposición: reemplaza todo el estilo o lo quita.
--map FILE, --clear-mapruta, opciónnosin cambiosUn activador de superposición: reemplaza la plantilla o la quita para que el objeto enviado sea la publicación.
--enable, --disablebanderanosin cambiosUn activador de superposición: un activador desactivado responde a cada envío con el 404 que recibe un secreto incorrecto.
--signing, --no-signingbanderanosin cambiosUn activador de superposición: activa la comprobación de firma (el secreto de firma se muestra una sola vez) o la desactiva. No con --verify.
--verify VENDORstringnosin cambiosUn activador de superposición: reemplaza la verificación del proveedor, como en triggers create. Sin --verify-secret-file conserva el secreto guardado cuando el proveedor sigue siendo el mismo; un proveedor distinto necesita el suyo.
--verify-secret-file FILErutanosin cambiosCon --verify: el secreto del proveedor, desde un archivo o - para stdin.
--verify-header NAMEstringnosin cambiosCon --verify generic_hmac: el encabezado que lleva la firma.
--verify-encoding ENCODINGhex o base64nosin cambiosCon --verify generic_hmac: cómo se escribe la firma.
--verify-timestamp-header NAMEstringnosin cambiosCon --verify generic_hmac: un encabezado que lleva la hora Unix.
--verify-tolerance SECONDSintegernosin cambiosCon --verify-timestamp-header: cuánto puede separarse la marca de tiempo del reloj del servidor, de 1 a 86400.
--clear-verifybanderanoapagadoUn activador de superposición: deja de aceptar la firma de un proveedor y olvida su secreto.
--handshake VENDORstringnosin cambiosUn activador de superposición: responde al desafío de configuración de microsoft_graph, monday, trello o azure_event_grid.
--clear-handshakebanderanoapagadoUn activador de superposición: deja de responder al handshake del proveedor.
--expect-rev REVISIONstringnoningunoPrecondición opcional de revisión.
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

Se necesita al menos una opción además de --expect-rev. Una franja se recoloca en las nuevas pantallas de destino y en el nuevo borde; el nuevo destino de un activador de toma de control se aplica desde la siguiente alerta que empiece. Un activador que ya firma conserva su secreto de firma cuando se repite --signing; triggers rotate-secret --signing lo reemplaza. --clear-verify quita la verificación del proveedor y olvida su secreto, y --clear-handshake deja de responder al handshake del proveedor. Tras una actualización interrumpida o ambigua, vuelva a ejecutar el mismo comando: reutiliza la clave de idempotencia guardada.

triggers deliveries#

Leer el registro de envíos de un activador de superposición: por qué cada uno se mostró, se ignoró o se rechazó.

triggers deliveries <id> [--limit N]
ParámetroTipoRequeridoPredeterminadoNotas
<id>stringsíningunoEl id de activador trg_.
--limit Nintegerno100Cuántas entregas, las más recientes primero; de 1 a 100.
screenrig triggers deliveries trg_01EXAMPLETRIGGER00 --limit 20

data.items contiene los envíos de los últimos siete días: at, outcome (shown, updated, unchanged, ended, ignored, refused, invalid o handshake), reason para un envío rechazado o no válido (credentials, signature, signature_missing, signature_invalid, timestamp_missing, timestamp_stale, secret_pending, handshake_invalid, disabled, body, mapping, field, rate_limited o internal), detail (el miembro o la ruta de mapeo erróneos), status, bytes, files (las partes de archivo de un envío multipart, que se ignoran), alert_id y request_id. signature es un ScreenRig-Signature fallido; las demás razones de firma, marca de tiempo y handshake son las de un proveedor, como explica la tabla de firmas y handshakes de proveedores. El registro nunca conserva un cuerpo, un encabezado ni una credencial. Un secreto incorrecto, una firma incorrecta y un activador desactivado dan todos al remitente el mismo 404, así que este registro es donde se lee cuál fue. Un activador CAP no tiene entregas.

triggers clear#

Finalizar ahora la alerta del disparador.

triggers clear <id> [--alert-id ID]
ParámetroTipoRequeridoPredeterminadoNotas
<id>stringsíningunoEl id de activador trg_.
--alert-id IDstringnoningunoUn activador de superposición: termina solo esta alerta. Sin esta opción terminan todas las alertas.
screenrig triggers clear trg_01EXAMPLETRIGGER00
screenrig triggers clear trg_01EXAMPLETRIGGER00 --alert-id front-door

La alerta termina con ended_reason cleared y sus pantallas vuelven a lo que reproducían antes. Una pantalla cuya toma de control haya reemplazado otra desde entonces se deja como está. Sin alerta activa, no cambia nada. En un activador de superposición, la finalización de una alerta que no está activa no cambia nada, y al terminar la última alerta se baja la franja o se devuelven las pantallas de la toma de control.

triggers rotate-secret#

Reemplazar la contraseña de un disparador.

triggers rotate-secret <id> [--signing] [--expect-rev REVISION]
ParámetroTipoRequeridoPredeterminadoNotas
<id>stringsíningunoEl id de activador trg_.
--signingbanderanoapagadoUn activador de superposición que firma: reemplaza el secreto de firma en lugar de la contraseña.
--expect-rev REVISIONstringnoningunoPrecondición opcional de revisión.
screenrig triggers rotate-secret trg_01EXAMPLETRIGGER00

El sobre incluye la nueva contraseña en data.password. La contraseña anterior deja de funcionar de inmediato, así que introduzca la nueva en el sistema remitente. Con --signing, el sobre incluye en su lugar el nuevo data.signing_secret, que se muestra una sola vez; el anterior deja de funcionar de inmediato, y un activador que no firma responde invalid_request. Tras una rotación interrumpida o ambigua, vuelva a ejecutar el mismo comando dentro de las 24 horas: reutiliza la clave de idempotencia guardada, y el servidor devuelve la rotación que ya ocurrió en lugar de rotar de nuevo.

triggers delete#

Eliminar un activador. Su URL deja de aceptar alertas y envíos de inmediato; las franjas de un activador de superposición salen de sus pantallas y su tarjeta se elimina. Un activador que muestra una alerta se rechaza con resource_conflict: ejecute primero triggers clear.

triggers delete <id> [--expect-rev REVISION]
ParámetroTipoRequeridoPredeterminadoNotas
<id>stringsíningunoEl id de activador trg_.
--expect-rev REVISIONstringnoningunoPrecondición opcional de revisión.
screenrig triggers delete trg_01EXAMPLETRIGGER00

Activadores de superposición

Un activador de superposición muestra lo que publica un sistema externo. Home Assistant, un concentrador de sensores de puerta o de movimiento, un sistema de cámaras o una herramienta de alertas envía unas pocas palabras con un HTTP POST, y las pantallas del activador las muestran hasta que caducan o el remitente las termina. Es un activador como uno CAP: triggers create --kind overlay lo crea y cuenta para el mismo límite de 20 por organización.

--show bar dibuja una franja sobre lo que se reproduce en cada pantalla de destino, en el borde inferior o, con --edge top, en el superior. La franja entra cuando empieza una alerta y sale cuando termina la última; la lista de reproducción, sus páginas y sus tiempos no cambian. Una pantalla tiene una franja por borde, así que un activador de superposición cuyo borde ya ocupa otro activador en una pantalla no se muestra allí (triggers show cuenta esas pantallas como edge_taken), y una página que tiene su propia franja con presencia en ese borde la conserva. Una tarjeta de esquina o de ficha en ese borde se desplaza más allá de la altura de la franja, se muestre esta o no. No se dibuja ninguna franja en una página de espacio publicitario ni mientras hay una toma de control. --show takeover reproduce la alerta a pantalla completa en las pantallas de destino que tienen una lista de reproducción predeterminada, desde la primera alerta hasta que termina la última. Un activador de toma de control nunca reemplaza una toma de control que ya está en una pantalla, como la de un operador o una alerta de emergencia, y una alerta CAP la reemplaza.

Un destino por etiqueta se resuelve cuando empieza una alerta; una pantalla etiquetada después recibe la franja con la siguiente alerta que empiece. Una toma de control omite las pantallas sin lista de reproducción predeterminada. Una pantalla sin conexión se pone al día cuando se reconecta.

El remitente envía JSON, un formulario o multipart/form-data (las partes de archivo se ignoran) a data.url con Authorization: Bearer SECRET, o con HTTP Basic usando el id del activador como usuario y el secreto como contraseña. El secreto nunca va en la URL. Un envío tiene estos miembros; un miembro desconocido se rechaza y se nombra.

MiembroTipoNotas
alert_idstringEl id de la alerta que elige el remitente, de 1 a 200 caracteres. El mismo id actualiza esa alerta en lugar de apilar otra. Sin id es una sola alerta llamada default. En una finalización, sin id terminan todas las alertas.
labelstringUna etiqueta breve sobre el título: como máximo 40 caracteres.
titlestringMáximo 120 caracteres.
messagestringEl texto principal: como máximo 400 caracteres.
notestringUna línea discreta al pie: como máximo 120 caracteres.
durationnúmero o cadenaCuánto tiempo mantiene este envío su alerta, desde ahora: de 10 a 604800 segundos, o 10s, 5m, 2h, 1d o until_cleared. Sin valor se usa --for del activador (10 minutos si no se configura).
clearbooleano o cadenatrue (o yes, y, 1, x) termina la alerta; false (o no, n, 0, vacío) la activa. Una finalización ignora los demás miembros.
statestringUna palabra de estado del remitente. off, closed, clear, cleared, resolved, ok, normal, inactive y ended, en mayúsculas o minúsculas, terminan la alerta; cualquier otro estado la activa.

Una activación necesita al menos uno de label, title, message y note. Se rechaza el texto más largo que su límite y también duration fuera del rango de 10 segundos a 7 días, ambos con invalid_request que nombra el miembro. Cada activación o actualización mantiene su alerta durante duration desde ese envío, así que un sensor de movimiento que envía cada pocos segundos mantiene la franja y esta se retira duration después del último envío. Un activador muestra su alerta más reciente; al terminarla se vuelve a mostrar la anterior. Mantiene diez alertas y la undécima reemplaza a la más antigua. Una alerta termina unos diez segundos después de su hora. Una finalización enviada dos veces termina la alerta una sola vez, y la finalización de una alerta que no está activa no cambia nada.

La respuesta es un recibo: outcome (shown, updated, unchanged, ended o ignored), alert_id, until (nulo para una alerta mantenida hasta que se despeje) y active, las alertas que el disparador mantiene tras el envío. Un encabezado Idempotency-Key de 8 a 200 caracteres responde al reintento de un remitente con el primer recibo durante 24 horas. Un disparador admite 120 envíos por minuto. Un envío no cuenta para el límite de solicitudes de agentes, y un borrado nunca se rechaza, de modo que una alerta siempre puede retirarse de las pantallas.

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

Una dirección incorrecta, un secreto incorrecto, un activador desactivado, una firma ausente o incorrecta y cualquier GET dan el mismo 404 not_found, de modo que un remitente o la vista previa de un enlace no averigua cuál fue. triggers deliveries muestra al proyecto el motivo, durante los últimos siete días, sin el cuerpo del envío. --style FILE define theme, accent, background, backgroundColor, textColor y align de la tarjeta de texto; use un activador por aspecto.

--map FILE construye la publicación a partir del cuerpo que envía una herramienta de alertas, con el lenguaje de plantillas de los webhooks de tarjetas. Una cadena con {{body.title}} es texto, una cadena que es exactamente un marcador conserva su tipo, {"$text": "{{body.message}}", "$max": 400} recorta el texto y una ruta empieza con body o query. Esta plantilla transforma una alerta de una herramienta de monitorización y la termina cuando su estado es resolved:

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

--signing también exige ScreenRig-Signature: t=<unix seconds>,v1=<hex HMAC-SHA256 of "<t>.<raw body>">, con la clave data.signing_secret (whsec_…, que se muestra una sola vez), donde t debe estar a menos de cinco minutos del reloj del servidor. El remitente puede enviar dos valores v1 mientras rota el secreto.

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"

Una herramienta de alertas o un proveedor que firma sus propios envíos puede hacer que se verifique su firma en lugar del secreto, y que se responda su handshake de configuración, como en los webhooks de tarjeta: triggers create y triggers update aceptan --verify VENDOR con --verify-secret-file FILE, y --handshake VENDOR, y triggers update acepta --clear-verify y --clear-handshake para quitar cada uno. Los proveedores, sus encabezados y las opciones de generic_hmac son los que se listan allí. Un envío que lleva la firma válida del proveedor se acepta sin la contraseña srtg_ del activador, que sigue funcionando a su lado; --verify excluye --signing, y un handshake no cambia ninguna alerta. triggers deliveries muestra por qué falló una firma.

Un rest_command de Home Assistant envía al activador. Guarde el secreto en secrets.yaml y dé a cada automatización la alerta que activa 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}

Dos hechos hacen que esto funcione. Cada envío de movimiento mantiene la franja 2 minutos desde ese envío, así que permanece mientras continúa el movimiento y se retira 2 minutos después del último evento. Y Home Assistant genera la plantilla {{ }} antes de enviar, de modo que el activador recibe JSON simple; la plantilla --map del propio activador es un paso aparte que hace pasar cada envío por ella; por eso, deje --map fuera para un remitente que ya envía los miembros de la superposición, como hace aquí Home Assistant, o dele su propio activador.

Otros grupos de comandos