ドキュメント

トリガー CLI コマンド

CAP 緊急アラートでスクリーンをテイクオーバーし、Home Assistant、センサー、任意の HTTP クライアントからのオーバーレイを表示。トリガーの作成・テスト・ローテーション。

ここにあるコマンドはすべて CLI リファレンスの説明どおりに動作します。グローバルフラグ、JSON 出力、終了コード、リビジョン、再試行。

CAP アラートトリガー

トリガーは Everbridge、Rave、Alertus、IPAWS リレーなどの緊急通知システムが CAP 1.2 アラートでスクリーンを制御できるようにします。各トリガーは独自のURL、ユーザー名、パスワードを持ち、送信システムで CAP HTTP POST 送信先として HTTP Basic 認証で入力します。組織は、すべてのプロジェクトを合わせて最大20トリガーを持ちます。

トリガーには 2 種類あります。ここで説明する CAP トリガーは、緊急システムのアラートを受け取ります。オーバーレイトリガーは、Home Assistant、センサーハブ、アラートツールなど任意の送信元が送った内容を、再生中の内容の上のストリップまたは引き継ぎとして表示します。triggers create --kind overlay で作成でき、triggers update、triggers clear、triggers rotate-secret は両方の種類で使え、triggers deliveries はオーバーレイトリガーのログを読み取ります。

トリガーはタグ(各アラート到着時に解決)または最大500のスクリーンIDを対象にします。各アラートはトリガーのプレイリストのテイクオーバーとなり、重大度の色の全画面カードでイベント、見出し、説明、指示を表示します。演習は EXERCISE バナーを追加します。テイクオーバーはアラートの <expires> まで保持し、なければトリガーの --for デフォルト(1分から7日、設定なければ1時間)までで、7日を超えません。更新はカードを再描画し、キャンセルや全解除はすべてのスクリーンを元の再生に戻します。新しいアラートは表示中のものを置き換えます。テスト、システム、ドラフトメッセージ、承認済み・エラーメッセージ、期限切れアラートは無視され、送信者と識別子の重複は複製とみなします。スクリーンはテイクオーバーにデフォルトプレイリストが必要で、他のスクリーンはスキップされます。

パスワードsrtg_…はtriggers createとtriggers rotate-secretでのみ表示され、trigger_password_shown_onceの警告があります。CLIは設定、操作ログ、リカバリ状態にパスワードを保存しません。URLとユーザー名は秘密ではありません。

問題コード終了意味
trigger_limit_reached5組織にはすでに20個のトリガーがあります。作成されませんでした。まず1つ削除してください。
resource_conflict5アラートが有効な間は triggers test または triggers delete。next は triggers clear です。
not_found4このプロジェクトにこのIDのトリガーはありません。
revision_conflict6--expect-revリビジョンは古くなっていました。triggers showを実行してから再試行してください。

triggers create#

トリガーを作成し、そのURL、ユーザー名、パスワードを受け取る。

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]
パラメータータイプ必須デフォルトメモ
--name NAMEstringはいなしトリガーの名前、制御文字なしで1~80文字。
--kind KINDcap または overlayいいえcapcap は緊急システムの CAP 1.2 アラートを受け取ります。overlay は任意の送信元から短い文言を受け取り、--show が必要です。
--tag TAGstring--tag または --screen-id のいずれかなしアラートが届いたときにこのタグを持つすべてのアクティブスクリーン。
--screen-id IDstring--tag または --screen-id のいずれかなしscr_ スクリーンIDです。同じIDを繰り返すか、カンマ区切りで複数指定できます(最大500件)。
--for DURATION期間いいえ1h(オーバーレイは 10m)<expires> のないアラート、または duration のないオーバーレイの送信が画面を保持する時間です(30m、2h、1d など)。CAP トリガーは 1 分〜7 日、オーバーレイトリガーは 10 秒〜7 日です。
--pull FILEパスいいえなしCAP トリガー用です。ファイル、または stdin を表す - から読み込む JSON オブジェクトで、プラットフォームがこのトリガー向けの CAP アラートソースも読み取ります。メンバーは下記の cap-alert カードのパラメーターです。
--show SHOWbar または takeover--kind overlay とともになしbar は、対象画面で再生中の内容の上にストリップを描きます。takeover はアラートを全画面で再生します。
--edge EDGEbottom または topいいえbottomストリップが使う端。--show bar のときだけ指定できます。
--style FILEパスいいえなしファイルまたは標準入力の - から読み込む JSON オブジェクトで、テキストカードのスタイルです: theme、accent、background、backgroundColor、textColor、align。最大 64 KiB。
--map FILEパスいいえなしファイルまたは標準入力の - から読み込む JSON テンプレートで、送信元が送るボディからオーバーレイの投稿を組み立てます。オーバーレイトリガーを参照してください。最大 64 KiB。
--signingフラグいいえオフすべての送信に ScreenRig-Signature ヘッダーも必須とし、署名シークレットを一度だけ表示します。--verify とは併用できません。
--verify VENDORstringいいえなしオーバーレイトリガー用です。このベンダー独自の署名が付いた投稿を、srtg_ パスワードの代わりに受け付けます。このパスワードも引き続き併用できます。github、stripe、shopify、slack、linear、vercel、asana、generic_hmac のいずれかです。
--verify-secret-file FILEパス--verify が必要(asana を除く)なしベンダーのシークレットを、ファイルまたは stdin を表す - から読み取ります(引数では渡せません)。GitHub、Stripe、Shopify、Slack、Linear、Vercel が表示する Webhook シークレット、または generic_hmac の送信元のシークレットです。asana は指定しません。ハンドシェイクが配信します。
--verify-header NAMEstring--verify generic_hmac とともになし署名を運ぶヘッダー。
--verify-encoding ENCODINGhex または base64いいえhex--verify generic_hmac と併用:署名の表記形式。先頭に sha256= を付けることもできます。
--verify-timestamp-header NAMEstringいいえなし--verify generic_hmac と併用:Unix 時刻を秒、または 13 桁のミリ秒で運ぶヘッダー。署名対象のテキストは <timestamp>.<body> になります。
--verify-tolerance SECONDSintegerいいえ300--verify-timestamp-header の場合: タイムスタンプがサーバーの時計からずれてよい範囲。1 から 86400 です。
--handshake VENDORstringいいえなしオーバーレイトリガー用です。microsoft_graph、monday、trello、azure_event_grid のセットアップチャレンジに応答します。Slack と Asana は --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

エンベロープは、data.url(https://api.screenrig.ai/api/triggers/<id>/cap、オーバーレイトリガーでは .../overlay)、data.username(トリガー ID)、data.password を含むトリガーです。今すぐ送信元のシステムに設定してください。オーバーレイトリガーの送信元には URL とパスワードが必要です(Authorization: Bearer)。--signing を付けると、エンベロープに data.signing_secret も一度だけ入り、警告 trigger_signing_secret_shown_once が付きます。作成が中断または不明確になった場合は、24 時間以内に同じコマンドをもう一度実行してください。保存済みの冪等キーが再利用され、サーバーは新たに作成せず同じトリガーとパスワードを返します。

--pull は、投稿された URL(引き続き有効)に加えてプラットフォームが参照するソースを追加します。オブジェクトには sources(CAP 1.0〜1.2 のアラートまたは ATOM/RSS インデックスの http または https URL 最大5件)、publicAlerts, location(name, latitude, longitude, geocodes を [{name, value}] として)、minSeverity, maxSeverity, minUrgency, minCertainty, events, excludeEvents, senders, statuses, scopes, languages, areaUnknown が含まれます。feeds get cap にはフラグと同じフィルターを指定できます。location は sources が指定されていない場合必須で、sources がない場合は location をカバーする公開フィードが読み込まれます。各ソースは1分ごとに取得されます。最も深刻な一致アラートが投稿済みアラート同様にスクリーンを制御し、ソースにアラートがない場合は取得アラートが終了します。古いまたは失敗したソースではアラートは終了しません。例:{"location": {"latitude": 49.25, "longitude": -123}, "minSeverity": "moderate"}。

オーバーレイ用のオプション(--show、--edge、--style、--map、--signing、--verify とその関連オプション、--handshake)には --kind overlay が必要で、--pull は CAP トリガーに必要です。--style、--map、--verify-secret-file はそれぞれファイルを読み取りますが、-(stdin)を読み取れるのはそのうち 1 つだけです。

--verify VENDOR を使うと、ベンダー自身の Webhook が data.url に直接投稿できます。ベンダーの有効な署名が独自のヘッダーに付いた投稿は、data.password なしで受け付けられます。この認証も引き続き並行して使えます。ベンダーのシークレットは封印されて保存され、overlay.verify.secret として set と末尾 4 文字だけが読み取れます。asana はシークレットを取りません。ハンドシェイクが配信するため、それまでイベントは secret_pending を返します。generic_hmac には --verify-header が必要で、--verify-encoding、--verify-timestamp-header、--verify-tolerance を指定できます。--handshake VENDOR は、認証情報を求める前にそのベンダーのセットアップチャレンジに応答します。アラートは変更せず、課金もされず、triggers deliveries には結果 handshake として表示されます。ベンダー、そのヘッダー、各ベンダーで入力する設定はベンダーの署名とハンドシェイクに一覧があります。

triggers list#

このプロジェクトのトリガーと最新アラートを古い順に一覧表示

triggers list
screenrig triggers list

--human は ID、KIND、LABEL、TARGET、ALERT、LAST_RECEIVED を表示します。オーバーレイトリガーでは、ALERT に描画内容と保持中のアラート数が表示されます。一覧にはパスワードも署名シークレットも含まれません。

triggers show#

トリガーとその最新アラートを検査。

triggers show <id>
パラメータータイプ必須デフォルトメモ
<id>stringはいなしtrg_トリガーID
screenrig triggers show trg_01EXAMPLETRIGGER00

data.alert は最新のアラートです。CAP フィールド、state active または ended(ended_reason cancelled、all_clear、cleared、expired を伴う)、until、そして screens(targeted、taken_over、cleared、skipped、failed、pending)です。pending は画面への書き込みが続いている間は true で、失敗した画面は再試行されます。data.playlist_id はトリガーのアラート用プレイリストで、screen show はアラートをそのプレイリストの引き継ぎとして報告します。オーバーレイトリガーでは、data.overlay に show、edge、enabled、signing、verify、handshake(設定されている間のみ)、card_id、alerts(有効なアラート、新しい順。先頭が表示中)、screens(targeted、holding、taken_over、removed、edge_taken、skipped、failed)、pending が入ります。

triggers test#

トリガーのスクリーンに60秒の運動アラートを表示。

triggers test <id>
パラメータータイプ必須デフォルトメモ
<id>stringはいなしtrg_トリガーID
screenrig triggers test trg_01EXAMPLETRIGGER00

エンベロープは受領証です: data.outcome shown と data.alert。すべての画面への書き込みが終わる前に応答が返ります。triggers show で件数を確認できます。オーバーレイトリガーはアラート screenrig-test(ラベル Test、タイトル Test overlay)を 60 秒間表示し、受領証は送信と同じです(data.alert_id、data.until、data.active)。どちらの種類も、アラート表示中のテストは拒否します。

triggers update#

URL とシークレットを変えずにトリガーを変更します。

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]
パラメータータイプ必須デフォルトメモ
<id>stringはいなしtrg_トリガーID
--name NAMEstringいいえ変更なしトリガーの名前を変更します。
--tag TAG, --screen-id IDstringいいえ変更なし新しい対象。triggers create と同じ指定です。
--for DURATION期間いいえ変更なし終了を指定しないアラートの新しい保持時間です。CAP トリガーでは 1 分〜7 日、オーバーレイトリガーでは 10 秒〜7 日です。
--pull FILE, --no-pullパス、フラグいいえ変更なしCAP トリガー: CAP ソースを置き換える、または読み取りをやめます。
--edge EDGEbottom または topいいえ変更なしオーバーレイのストリップ: この端に移動します。
--style FILE, --clear-styleパス、フラグいいえ変更なしオーバーレイトリガー: スタイル全体を置き換えるか削除します。
--map FILE, --clear-mapパス、フラグいいえ変更なしオーバーレイトリガー: テンプレートを置き換えるか削除し、送信されたオブジェクトをそのまま投稿にします。
--enable, --disableフラグいいえ変更なしオーバーレイトリガー: 無効にしたトリガーは、すべての送信に、誤ったシークレットと同じ 404 を返します。
--signing, --no-signingフラグいいえ変更なしオーバーレイトリガー: 署名の確認を有効にする(署名シークレットは一度だけ表示)か、無効にします。--verify とは併用できません。
--verify VENDORstringいいえ変更なしオーバーレイトリガー用です。ベンダーの検証を、triggers create と同様に置き換えます。--verify-secret-file がない場合、ベンダーが同じなら保存済みのシークレットを維持し、別のベンダーには専用のシークレットが必要です。
--verify-secret-file FILEパスいいえ変更なし--verify と併用:ベンダーのシークレット。ファイル、または stdin を表す - から読み取ります。
--verify-header NAMEstringいいえ変更なし--verify generic_hmac と併用:署名を運ぶヘッダー。
--verify-encoding ENCODINGhex または base64いいえ変更なし--verify generic_hmac と併用:署名の表記形式。
--verify-timestamp-header NAMEstringいいえ変更なし--verify generic_hmac と併用:Unix 時刻を運ぶヘッダー。
--verify-tolerance SECONDSintegerいいえ変更なし--verify-timestamp-header の場合: タイムスタンプがサーバーの時計からずれてよい範囲。1 から 86400 です。
--clear-verifyフラグいいえオフオーバーレイトリガー用です。ベンダーの署名の受け付けをやめ、そのシークレットを破棄します。
--handshake VENDORstringいいえ変更なしオーバーレイトリガー用です。microsoft_graph、monday、trello、azure_event_grid のセットアップチャレンジに応答します。
--clear-handshakeフラグいいえオフオーバーレイトリガー用です。ベンダーのハンドシェイクへの応答をやめます。
--expect-rev REVISIONstringいいえなしオプションのリビジョン前提条件。
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

--expect-rev 以外に少なくとも 1 つのオプションが必要です。ストリップは新しい対象画面と端に置き直されます。引き継ぎトリガーの新しい対象は、次に始まるアラートから適用されます。すでに署名しているトリガーは、--signing を繰り返しても署名シークレットを保ちます。置き換えるには triggers rotate-secret --signing を使います。--clear-verify はベンダーの検証とそのシークレットを削除し、--clear-handshake はベンダーのハンドシェイクへの応答をやめます。更新が中断または不明確になった場合は、同じコマンドをもう一度実行してください。保存済みの冪等キーが再利用されます。

triggers deliveries#

オーバーレイトリガーの送信ログを読みます。各送信が表示・無視・拒否された理由がわかります。

triggers deliveries <id> [--limit N]
パラメータータイプ必須デフォルトメモ
<id>stringはいなしtrg_トリガーID
--limit Nintegerいいえ100配信の件数(新しい順)。1〜100。
screenrig triggers deliveries trg_01EXAMPLETRIGGER00 --limit 20

data.items には、過去 7 日間の送信が入っています: at、outcome (shown、updated、unchanged、ended、ignored、refused、invalid、handshake)、拒否または無効な送信の reason (credentials、signature、signature_missing、signature_invalid、timestamp_missing、timestamp_stale、secret_pending、handshake_invalid、disabled、body、mapping、field、rate_limited、internal)、detail (誤っていたメンバーまたはマッピングのパス)、status、bytes、files (マルチパート送信のファイル部分。無視されます)、alert_id、request_id。signature は失敗した ScreenRig-Signature です。そのほかの署名、タイムスタンプ、ハンドシェイクの理由はベンダーのもので、ベンダーの署名とハンドシェイクの表で説明しています。ログには本文、ヘッダー、認証情報は残りません。誤ったシークレット、不正な署名、無効なトリガーは、すべて送信元に同じ 404 を返すため、どれだったかはこのログで確認します。CAP トリガーには配信がありません。

triggers clear#

トリガーのアラートを今すぐ終了する。

triggers clear <id> [--alert-id ID]
パラメータータイプ必須デフォルトメモ
<id>stringはいなしtrg_トリガーID
--alert-id IDstringいいえなしオーバーレイトリガー: このアラートだけを終了します。指定しないとすべてのアラートが終了します。
screenrig triggers clear trg_01EXAMPLETRIGGER00
screenrig triggers clear trg_01EXAMPLETRIGGER00 --alert-id front-door

アラートは ended_reason cleared で終了し、画面はそれまで再生していた内容に戻ります。その後ほかの引き継ぎに置き換えられた画面はそのままです。有効なアラートがなければ何も変わりません。オーバーレイトリガーでは、有効でないアラートの解除は何も変えず、最後のアラートが終わるとストリップが消えるか、引き継ぎの画面が戻ります。

triggers rotate-secret#

トリガーのパスワードを置き換えます。

triggers rotate-secret <id> [--signing] [--expect-rev REVISION]
パラメータータイプ必須デフォルトメモ
<id>stringはいなしtrg_トリガーID
--signingフラグいいえオフ署名するオーバーレイトリガー: パスワードではなく署名シークレットを置き換えます。
--expect-rev REVISIONstringいいえなしオプションのリビジョン前提条件。
screenrig triggers rotate-secret trg_01EXAMPLETRIGGER00

エンベロープの data.password に新しいパスワードが入ります。古いパスワードはすぐに使えなくなるので、新しいものを送信元のシステムに設定してください。--signing を指定すると、代わりに新しい data.signing_secret が一度だけ入り、古いものはすぐに使えなくなります。署名しないトリガーは invalid_request を返します。中断またはあいまいなローテーションの後は、24 時間以内に同じコマンドを再実行してください。保存された冪等キーが再利用され、サーバーは再度ローテーションせず、すでに行われたローテーションを返します。

triggers delete#

トリガーを削除します。URL はすぐにアラートと送信を受け付けなくなり、オーバーレイトリガーのストリップは画面から外れ、そのカードは削除されます。アラートを表示中のトリガーは resource_conflict で拒否されます。先に triggers clear を実行してください。

triggers delete <id> [--expect-rev REVISION]
パラメータータイプ必須デフォルトメモ
<id>stringはいなしtrg_トリガーID
--expect-rev REVISIONstringいいえなしオプションのリビジョン前提条件。
screenrig triggers delete trg_01EXAMPLETRIGGER00

オーバーレイトリガー

オーバーレイトリガーは、外部システムが送信した内容を表示します。Home Assistant、ドアや人感センサーのハブ、カメラシステム、アラートツールが HTTP POST で短い文言を送ると、トリガーの画面に期限が切れるか送信元が終了するまで表示されます。CAP トリガーと同じトリガーの一種で、triggers create --kind overlay で作成し、組織あたり 20 個という同じ上限に含まれます。

--show bar は、対象の各画面で再生中の内容の上にストリップを描きます。位置は下端で、--edge top を指定すると上端です。ストリップはアラートが始まると表示され、最後のアラートが終わると消えます。プレイリスト、ページ、タイミングは変わりません。画面が持てるストリップは 1 端につき 1 つです。ほかのオーバーレイトリガーがすでにその端を使っている画面には、このトリガーは表示されません(triggers show はそのような画面を edge_taken として数えます)。その端に独自のプレゼンス付きストリップがあるページは、それを保ちます。その端のコーナーカードやチップカードは、ストリップが表示されていてもいなくても、ストリップの高さの分だけ内側に寄ります。広告枠のページや引き継ぎ中は、ストリップは描かれません。--show takeover は、最初のアラートから最後のアラートが終わるまで、既定のプレイリストを持つ対象画面でアラートを全画面で再生します。引き継ぎトリガーは、オペレーターや緊急アラートなど、画面にすでにある引き継ぎを置き換えません。CAP アラートは引き継ぎを置き換えます。

タグによる対象は、アラートが始まるときに解決されます。あとからタグが付いた画面には、次に始まるアラートでストリップが表示されます。既定のプレイリストがない画面は、引き継ぎでは対象外になります。オフラインの画面は、再接続したときに追いつきます。

送信元は data.url に JSON、フォーム、または multipart/form-data(ファイル部分は無視されます)を、Authorization: Bearer SECRET を付けて、または HTTP Basic(ユーザー名はトリガー ID、パスワードはシークレット)で送ります。シークレットを URL に含めてはいけません。送信には次のメンバーがあり、未知のメンバーは名前を示して拒否されます。

メンバータイプメモ
alert_idstring送信元が決めるアラートの ID(1〜200 文字)。同じ ID は別のアラートを重ねずにそのアラートを更新します。省略すると default という 1 つのアラートになります。解除では、省略するとすべてのアラートが終了します。
labelstringタイトルの上に付ける短いラベル。最大 40 文字。
titlestring最大120文字。
messagestring本文。最大 400 文字。
notestring下部の控えめな 1 行。最大 120 文字。
duration数値または文字列この送信がアラートを保持する時間(今から)。10 〜 604800 秒、または 10s、5m、2h、1d、until_cleared。省略するとトリガーの --for(未設定なら 10 分)になります。
clearブール値または文字列true(または yes、y、1、x)はアラートを終了します。false(または no、n、0、空)はアラートを発生させます。解除では、ほかのメンバーは無視されます。
statestring送信元の状態を表す語。off、closed、clear、cleared、resolved、ok、normal、inactive、ended は大文字小文字を問わずアラートを終了し、それ以外の状態はアラートを発生させます。

発生には label、title、message、note のうち少なくとも 1 つが必要です。上限を超えるテキストと、10 秒〜7 日の範囲外の duration は拒否され、どちらも invalid_request でメンバー名が示されます。発生または更新のたびに、その送信からの duration だけアラートを保持するため、数秒おきに送信する人感センサーはストリップを表示し続け、最後の送信から duration 後に消えます。トリガーは最新のアラートを表示し、それが終わると 1 つ前のアラートが再び表示されます。保持できるアラートは 10 件で、11 件目は最も古いものを置き換えます。アラートは期限からおよそ 10 秒以内に終了します。解除を 2 回送ってもアラートは 1 回だけ終了し、有効でないアラートの解除は何も変えません。

回答は受領です。outcome(shown、updated、unchanged、ended、ignored)、alert_id、until(クリアされるまで保持されるアラートではnull)、そして投稿後にトリガーが保持するアラート active です。8~200文字の Idempotency-Key ヘッダーは、送信側の再試行に最初の受領を24時間返します。トリガーは1分あたり120件の投稿を受け付けます。投稿はエージェントリクエストの上限に数えられず、クリアは拒否されないので、アラートをスクリーンから常に取り下げられます。

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

誤ったアドレス、誤ったシークレット、無効なトリガー、署名の欠落または誤り、そしてすべての GET は、同じ 404 not_found を返すため、送信元やリンクのプレビューはどれだったかを知ることができません。triggers deliveries は、過去 7 日間の理由を投稿のボディなしでプロジェクトに示します。--style FILE はテキストカードの theme、accent、background、backgroundColor、textColor、align を設定します。見た目ごとにトリガーを 1 つ使います。

--map FILE は、アラートツールが送るボディから投稿を組み立てます。テンプレート言語はカードのウェブフックと同じです。{{body.title}} を含む文字列はテキスト、プレースホルダーだけの文字列は型を保ち、{"$text": "{{body.message}}", "$max": 400} はテキストを切り詰め、パスは body または query で始まります。次のテンプレートは監視ツールのアラートを変換し、ステータスが resolved になると終了させます。

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

--signing は ScreenRig-Signature: t=<unix seconds>,v1=<hex HMAC-SHA256 of "<t>.<raw body>"> も必須とし、data.signing_secret(whsec_…、一度だけ表示)で署名します。t はサーバーの時計から 5 分以内でなければなりません。送信元はシークレットの更新中に v1 の値を 2 つ付けて送れます。

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"

アラートツールや、自社の送信に署名するベンダーは、シークレットの代わりにその署名を検証させ、ベンダーのセットアップのハンドシェイクにも応答させることができます。カード Webhook と同様に、triggers create と triggers update は --verify VENDOR と --verify-secret-file FILE、および --handshake VENDOR を受け付け、triggers update は --clear-verify と --clear-handshake でそれぞれ削除します。ベンダー、そのヘッダー、generic_hmac のオプションは、そこに一覧があるとおりです。ベンダーの有効な署名が付いた投稿は、トリガーの srtg_ パスワードなしで受け付けられ、このパスワードも引き続き併用できます。--verify と --signing は併用できず、ハンドシェイクでアラートが変わることはありません。署名が失敗した理由は triggers deliveries で確認できます。

Home Assistant の rest_command がトリガーに送信します。シークレットは secrets.yaml に置き、各オートメーションに、発生させる・終了させるアラートを指定します。

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

これが動作する理由は 2 つです。人感の送信ごとに、その送信から 2 分間ストリップが保持されるため、動きが続く間は表示されたままで、最後のイベントから 2 分後に消えます。また、Home Assistant は送信前に {{ }} テンプレートを展開するので、トリガーには通常の JSON が届きます。トリガー自身の --map テンプレートは別の手順で、すべての送信がそれを通ります。そのため、Home Assistant のようにオーバーレイのメンバーをすでに送信している送信元には --map を付けないか、その送信元専用のトリガーを用意してください。

ほかのコマンドグループ