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 problema | Salir | Significado |
|---|---|---|
trigger_limit_reached | 5 | La organización ya tiene 20 disparadores. No se creó nada. Elimine uno primero. |
resource_conflict | 5 | triggers test o triggers delete mientras una alerta está activa. next es triggers clear. |
not_found | 4 | Ningún disparador tiene este id en el proyecto. |
revision_conflict | 6 | La 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ámetro | Tipo | Requerido | Predeterminado | Notas |
|---|---|---|---|---|
--name NAME | string | sí | ninguno | El nombre del trigger, de 1 a 80 caracteres sin caracteres de control. |
--kind KIND | cap o overlay | no | cap | cap recibe las alertas CAP 1.2 de un sistema de emergencias. overlay recibe unas pocas palabras de cualquier remitente y necesita --show. |
--tag TAG | string | uno de --tag o --screen-id | ninguno | Cada pantalla activa con esta etiqueta cuando llega una alerta. |
--screen-id ID | string | uno de --tag o --screen-id | ninguno | Un scr_ id de pantalla. Repítalo o liste ids separados por comas; máximo 500. |
--for DURATION | duración | no | 1h (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 FILE | ruta | no | ninguno | Un 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 SHOW | bar o takeover | con --kind overlay | ninguno | bar dibuja una franja sobre lo que se reproduce en las pantallas de destino. takeover reproduce la alerta a pantalla completa. |
--edge EDGE | bottom o top | no | bottom | El borde que ocupa una franja. Solo con --show bar. |
--style FILE | ruta | no | ninguno | Un 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 FILE | ruta | no | ninguno | Una 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. |
--signing | bandera | no | apagado | Exigir también una cabecera ScreenRig-Signature en cada envío y mostrar el secreto de firma una sola vez. No con --verify. |
--verify VENDOR | string | no | ninguno | Un 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 FILE | ruta | con --verify, excepto asana | ninguno | El 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 NAME | string | con --verify generic_hmac | ninguno | El encabezado que lleva la firma. |
--verify-encoding ENCODING | hex o base64 | no | hex | Con --verify generic_hmac: cómo se escribe la firma. Puede empezar por sha256=. |
--verify-timestamp-header NAME | string | no | ninguno | Con --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 SECONDS | integer | no | 300 | Con --verify-timestamp-header: cuánto puede separarse la marca de tiempo del reloj del servidor, de 1 a 86400. |
--handshake VENDOR | string | no | ninguno | Un 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 trelloEl 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 listscreenrig 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ámetro | Tipo | Requerido | Predeterminado | Notas |
|---|---|---|---|---|
<id> | string | sí | ninguno | El id de activador trg_. |
screenrig triggers show trg_01EXAMPLETRIGGER00data.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ámetro | Tipo | Requerido | Predeterminado | Notas |
|---|---|---|---|---|
<id> | string | sí | ninguno | El id de activador trg_. |
screenrig triggers test trg_01EXAMPLETRIGGER00El 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ámetro | Tipo | Requerido | Predeterminado | Notas |
|---|---|---|---|---|
<id> | string | sí | ninguno | El id de activador trg_. |
--name NAME | string | no | sin cambios | Cambiar el nombre del activador. |
--tag TAG, --screen-id ID | string | no | sin cambios | Un nuevo destino, como en triggers create. |
--for DURATION | duración | no | sin cambios | Una 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-pull | ruta, opción | no | sin cambios | Un activador CAP: reemplaza sus fuentes CAP o deja de leerlas. |
--edge EDGE | bottom o top | no | sin cambios | Una franja de superposición: moverla a este borde. |
--style FILE, --clear-style | ruta, opción | no | sin cambios | Un activador de superposición: reemplaza todo el estilo o lo quita. |
--map FILE, --clear-map | ruta, opción | no | sin cambios | Un activador de superposición: reemplaza la plantilla o la quita para que el objeto enviado sea la publicación. |
--enable, --disable | bandera | no | sin cambios | Un activador de superposición: un activador desactivado responde a cada envío con el 404 que recibe un secreto incorrecto. |
--signing, --no-signing | bandera | no | sin cambios | Un 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 VENDOR | string | no | sin cambios | Un 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 FILE | ruta | no | sin cambios | Con --verify: el secreto del proveedor, desde un archivo o - para stdin. |
--verify-header NAME | string | no | sin cambios | Con --verify generic_hmac: el encabezado que lleva la firma. |
--verify-encoding ENCODING | hex o base64 | no | sin cambios | Con --verify generic_hmac: cómo se escribe la firma. |
--verify-timestamp-header NAME | string | no | sin cambios | Con --verify generic_hmac: un encabezado que lleva la hora Unix. |
--verify-tolerance SECONDS | integer | no | sin cambios | Con --verify-timestamp-header: cuánto puede separarse la marca de tiempo del reloj del servidor, de 1 a 86400. |
--clear-verify | bandera | no | apagado | Un activador de superposición: deja de aceptar la firma de un proveedor y olvida su secreto. |
--handshake VENDOR | string | no | sin cambios | Un activador de superposición: responde al desafío de configuración de microsoft_graph, monday, trello o azure_event_grid. |
--clear-handshake | bandera | no | apagado | Un activador de superposición: deja de responder al handshake del proveedor. |
--expect-rev REVISION | string | no | ninguno | Precondició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-verifySe 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ámetro | Tipo | Requerido | Predeterminado | Notas |
|---|---|---|---|---|
<id> | string | sí | ninguno | El id de activador trg_. |
--limit N | integer | no | 100 | Cuántas entregas, las más recientes primero; de 1 a 100. |
screenrig triggers deliveries trg_01EXAMPLETRIGGER00 --limit 20data.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ámetro | Tipo | Requerido | Predeterminado | Notas |
|---|---|---|---|---|
<id> | string | sí | ninguno | El id de activador trg_. |
--alert-id ID | string | no | ninguno | Un 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-doorLa 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ámetro | Tipo | Requerido | Predeterminado | Notas |
|---|---|---|---|---|
<id> | string | sí | ninguno | El id de activador trg_. |
--signing | bandera | no | apagado | Un activador de superposición que firma: reemplaza el secreto de firma en lugar de la contraseña. |
--expect-rev REVISION | string | no | ninguno | Precondición opcional de revisión. |
screenrig triggers rotate-secret trg_01EXAMPLETRIGGER00El 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ámetro | Tipo | Requerido | Predeterminado | Notas |
|---|---|---|---|---|
<id> | string | sí | ninguno | El id de activador trg_. |
--expect-rev REVISION | string | no | ninguno | Precondición opcional de revisión. |
screenrig triggers delete trg_01EXAMPLETRIGGER00Activadores 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.
| Miembro | Tipo | Notas |
|---|---|---|
alert_id | string | El 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. |
label | string | Una etiqueta breve sobre el título: como máximo 40 caracteres. |
title | string | Máximo 120 caracteres. |
message | string | El texto principal: como máximo 400 caracteres. |
note | string | Una línea discreta al pie: como máximo 120 caracteres. |
duration | número o cadena | Cuá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). |
clear | booleano o cadena | true (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. |
state | string | Una 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.