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_reached | 5 | 組織にはすでに20個のトリガーがあります。作成されませんでした。まず1つ削除してください。 |
resource_conflict | 5 | アラートが有効な間は triggers test または triggers delete。next は triggers clear です。 |
not_found | 4 | このプロジェクトにこのIDのトリガーはありません。 |
revision_conflict | 6 | --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 NAME | string | はい | なし | トリガーの名前、制御文字なしで1~80文字。 |
--kind KIND | cap または overlay | いいえ | cap | cap は緊急システムの CAP 1.2 アラートを受け取ります。overlay は任意の送信元から短い文言を受け取り、--show が必要です。 |
--tag TAG | string | --tag または --screen-id のいずれか | なし | アラートが届いたときにこのタグを持つすべてのアクティブスクリーン。 |
--screen-id ID | string | --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 SHOW | bar または takeover | --kind overlay とともに | なし | bar は、対象画面で再生中の内容の上にストリップを描きます。takeover はアラートを全画面で再生します。 |
--edge EDGE | bottom または 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 VENDOR | string | いいえ | なし | オーバーレイトリガー用です。このベンダー独自の署名が付いた投稿を、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 NAME | string | --verify generic_hmac とともに | なし | 署名を運ぶヘッダー。 |
--verify-encoding ENCODING | hex または base64 | いいえ | hex | --verify generic_hmac と併用:署名の表記形式。先頭に sha256= を付けることもできます。 |
--verify-timestamp-header NAME | string | いいえ | なし | --verify generic_hmac と併用:Unix 時刻を秒、または 13 桁のミリ秒で運ぶヘッダー。署名対象のテキストは <timestamp>.<body> になります。 |
--verify-tolerance SECONDS | integer | いいえ | 300 | --verify-timestamp-header の場合: タイムスタンプがサーバーの時計からずれてよい範囲。1 から 86400 です。 |
--handshake VENDOR | string | いいえ | なし | オーバーレイトリガー用です。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 listscreenrig triggers list--human は ID、KIND、LABEL、TARGET、ALERT、LAST_RECEIVED を表示します。オーバーレイトリガーでは、ALERT に描画内容と保持中のアラート数が表示されます。一覧にはパスワードも署名シークレットも含まれません。
triggers show#
トリガーとその最新アラートを検査。
triggers show <id>| パラメーター | タイプ | 必須 | デフォルト | メモ |
|---|---|---|---|---|
<id> | string | はい | なし | trg_トリガーID |
screenrig triggers show trg_01EXAMPLETRIGGER00data.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 NAME | string | いいえ | 変更なし | トリガーの名前を変更します。 |
--tag TAG, --screen-id ID | string | いいえ | 変更なし | 新しい対象。triggers create と同じ指定です。 |
--for DURATION | 期間 | いいえ | 変更なし | 終了を指定しないアラートの新しい保持時間です。CAP トリガーでは 1 分〜7 日、オーバーレイトリガーでは 10 秒〜7 日です。 |
--pull FILE, --no-pull | パス、フラグ | いいえ | 変更なし | CAP トリガー: CAP ソースを置き換える、または読み取りをやめます。 |
--edge EDGE | bottom または top | いいえ | 変更なし | オーバーレイのストリップ: この端に移動します。 |
--style FILE, --clear-style | パス、フラグ | いいえ | 変更なし | オーバーレイトリガー: スタイル全体を置き換えるか削除します。 |
--map FILE, --clear-map | パス、フラグ | いいえ | 変更なし | オーバーレイトリガー: テンプレートを置き換えるか削除し、送信されたオブジェクトをそのまま投稿にします。 |
--enable, --disable | フラグ | いいえ | 変更なし | オーバーレイトリガー: 無効にしたトリガーは、すべての送信に、誤ったシークレットと同じ 404 を返します。 |
--signing, --no-signing | フラグ | いいえ | 変更なし | オーバーレイトリガー: 署名の確認を有効にする(署名シークレットは一度だけ表示)か、無効にします。--verify とは併用できません。 |
--verify VENDOR | string | いいえ | 変更なし | オーバーレイトリガー用です。ベンダーの検証を、triggers create と同様に置き換えます。--verify-secret-file がない場合、ベンダーが同じなら保存済みのシークレットを維持し、別のベンダーには専用のシークレットが必要です。 |
--verify-secret-file FILE | パス | いいえ | 変更なし | --verify と併用:ベンダーのシークレット。ファイル、または stdin を表す - から読み取ります。 |
--verify-header NAME | string | いいえ | 変更なし | --verify generic_hmac と併用:署名を運ぶヘッダー。 |
--verify-encoding ENCODING | hex または base64 | いいえ | 変更なし | --verify generic_hmac と併用:署名の表記形式。 |
--verify-timestamp-header NAME | string | いいえ | 変更なし | --verify generic_hmac と併用:Unix 時刻を運ぶヘッダー。 |
--verify-tolerance SECONDS | integer | いいえ | 変更なし | --verify-timestamp-header の場合: タイムスタンプがサーバーの時計からずれてよい範囲。1 から 86400 です。 |
--clear-verify | フラグ | いいえ | オフ | オーバーレイトリガー用です。ベンダーの署名の受け付けをやめ、そのシークレットを破棄します。 |
--handshake VENDOR | string | いいえ | 変更なし | オーバーレイトリガー用です。microsoft_graph、monday、trello、azure_event_grid のセットアップチャレンジに応答します。 |
--clear-handshake | フラグ | いいえ | オフ | オーバーレイトリガー用です。ベンダーのハンドシェイクへの応答をやめます。 |
--expect-rev REVISION | string | いいえ | なし | オプションのリビジョン前提条件。 |
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 N | integer | いいえ | 100 | 配信の件数(新しい順)。1〜100。 |
screenrig triggers deliveries trg_01EXAMPLETRIGGER00 --limit 20data.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 ID | string | いいえ | なし | オーバーレイトリガー: このアラートだけを終了します。指定しないとすべてのアラートが終了します。 |
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 REVISION | string | いいえ | なし | オプションのリビジョン前提条件。 |
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 REVISION | string | いいえ | なし | オプションのリビジョン前提条件。 |
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_id | string | 送信元が決めるアラートの ID(1〜200 文字)。同じ ID は別のアラートを重ねずにそのアラートを更新します。省略すると default という 1 つのアラートになります。解除では、省略するとすべてのアラートが終了します。 |
label | string | タイトルの上に付ける短いラベル。最大 40 文字。 |
title | string | 最大120文字。 |
message | string | 本文。最大 400 文字。 |
note | string | 下部の控えめな 1 行。最大 120 文字。 |
duration | 数値または文字列 | この送信がアラートを保持する時間(今から)。10 〜 604800 秒、または 10s、5m、2h、1d、until_cleared。省略するとトリガーの --for(未設定なら 10 分)になります。 |
clear | ブール値または文字列 | true(または yes、y、1、x)はアラートを終了します。false(または no、n、0、空)はアラートを発生させます。解除では、ほかのメンバーは無視されます。 |
state | string | 送信元の状態を表す語。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 を付けないか、その送信元専用のトリガーを用意してください。