メインコンテンツにスキップ
ルール内のWebhooks

この記事では、Arculesルールシステムにおける初期のWebhookサポートについて説明します。

9か月以上前に更新


はじめに


Webhookは、イベントが発生したときにアプリケーション間で情報を交換するための仕組みです。これは、情報を受け取りたいアプリケーション(つまり、受信者)が送信アプリケーションに対してイベントが発生したかどうかを常に問い合わせる必要がないことを意味します。通信は、送信アプリケーションが受信アプリケーションがホストするURLにHTTPリクエストを実行することによって行われ、後者はこのリクエストを処理して特定のアクションを実行できます。

イベントが発生したときに顧客が複数のオプションで情報を受け取れるようにする戦略の一環として、Arcules WebポータルはルールエンジンでWebhookのサポートを含んでいます。この記事では、ルールのためにWebhookを設定する方法と、それがトリガーされたときに受け取ることができる情報について説明します。

設定


1. Arcules Webポータルにアクセスし、その後「ルール」セクションに移動してください:

2. 右上隅にある「+」を押して新しいルールを作成します:

3. ルールの具体的な詳細を設定します。アクションセクションに到達したら、「アクションタイプを選択」オプションで「Webhookを呼び出す」を選択し、対応する入力フィールドに記入してください。

APIキー秘密入力フィールドはオプションです。

ルールアクションとパラメーター

名称

説明

要件

URL

WebhookエンドポイントのURLはHTTPSである必要があります。現時点ではこれは強制されていませんが、将来的に必須となる予定です。

必須

APIキー

受信側のWebhookサービスで認証/承認に使用されるAPIキーです。このAPIキーは、リクエスト内で "Authorization" ヘッダーとしてBearerトークンとして含まれます。

オプショナル

秘密

メッセージ署名の生成および検証のためのオプションの共有秘密情報です。設定された場合、リクエストに追加の "X-Arcules-Signature" HTTP ヘッダーが含まれます。メッセージの署名は、受信側のWebhookサービスで検証できます。詳細については以下をご覧ください。

オプショナル


通信の詳細


WebhookはPOSTリクエストとして設定されたエンドポイントに送信されます。現在サポートされている認証スキームは、「Authorization」ヘッダーでBearerトークンとして渡されるAPIキーのみです。

Webhookの受信者はできるだけ迅速に応答し、イベントの受信に成功したことを示すために2xxのレスポンスコードで返信することが期待されます。

メッセージ配信は、タイムアウト(408: リクエストタイムアウト & 504: ゲートウェイタイムアウト)の場合、リトライ間に5秒の遅延を含めて最大5回まで試みられます。


:リダイレクトはサポートされていません。

リクエストヘッダー

以下のHTTPヘッダーが重要です:

名称

注釈

Authorization

Bearer API キー

APIKEYは、ルール設定でWebhookを設定する際に入力されるキーです。

:キーがルールアクションAPIキー(オプショナル)入力フィールドに含まれていない場合、このヘッダーは表示されません。

Content-Type

application/json; charset=utf-8

メッセージの内容はJSON形式のデータです。

X-Arcules-Signature

HMAC SHA256

ルール上のWebhook設定でシークレットが入力されている場合に含まれます。これはメッセージの起源を検証するために使用できるメッセージ署名です。


署名の検証

ハッシュ用のシークレットが提供されている場合、X-Arcules-Signatureヘッダーにメッセージ署名が提供されます。受信Webhookサービスで同じシークレットを使用することで、メッセージがArculesサービスによって送信されたことを検証できます。


メッセージ本文

Webhooksメッセージには以下のフィールドが含まれます:

属性

種類

説明

webhook_id

String (UUID)

WebhookメッセージのUUID。メッセージが複数回受信された場合に重複を検出するのに役立ちます。

rule_id

String

Webhookが設定されたルールのUUID

rule_name

String

Webhookが設定されたルールの名前

device_id

String

デバイスのUUID

device_name

String

デバイスの名前

device_type

String

トリガーとなるデバイスの識別子

event_type

String

センサー/値のタイプ

region_name

String
物体検出イベント(例:領域内の人物または車両)のみで利用可能

物体検出された領域に指定された名前

event_value

デバイスタイプに依存します

イベントに関連する特定の値

event_time

String

イベントのタイムスタンプ、RFC 3339に従う形式

以下は、メッセージ本文の一例です

ユーザー定義デバイス

{
"webhook_id": "f8a8097e-ea52-4b3d-8bbe-191332a478ee",
"rule_id": "2f6144fb-83f3-4d65-bcf3-99a83e219559",
"rule_name": "Rule for Notification on User Defined Device",
"device_id": "6c5b58a5-279b-496e-85c9-60b01d1f5666",
"device_name": "earthquake sensor",
"device_type": "userdefineddevice",
"event_type": "sensoralarm",
"event_value": "alarm",
"event_time": "2024-02-20T23:28:31Z"
}

領域内の車両

{
"webhook_id": "54b57b48-6a5f-43d4-bf80-88f89c53b8db",
"rule_id": "7815f13a-a60c-457d-93a6-6bd22220d163",
"rule_name": "Video Analytics Test",
"device_id": "9917a303-d405-4afe-8cb8-b7dc59c4151b",
"device_name": "Device 1",
"device_type": "video",
"event_type": "vehicleinregion",
"region_name": "Detection Zone 1"
"event_value": 1,
"event_time": "2024-02-20T21:05:09Z"
}

ぶれ検知

{
"webhook_id": "59dcf038-1c35-47d0-9ee6-d57152892342",
"rule_id": "3e2af5d9-66c1-4224-8510-f539423220c6",
"rule_name": "Blur Test 1",
"device_id": "8ced3345-6b06-4f9b-93f4-8f1c7fb8bbe4",
"device_name": "Blur and Rotate",
"device_type": "video",
"event_type": "blurdetection",
"event_value": true,
"event_time": "2024-02-20T23:28:31Z"
}


イベントオプション


デバイスタイプ、イベントタイプ、および値には以下の組み合わせが含まれます(一部の組み合わせは利用できない場合があり、システムの設定によっては他の組み合わせが発生する場合があります):

デバイス タイプ

イベント タイプ

イベント 値

ゲートウェイ

状態ステータス

オンライン/オフライン

カメラ 分析

センサーアラーム

アラーム/通常

カウンター

Integer/Number

人数カウンター

Integer/Number

ビデオ

状態ステータス

オンライン/オフライン

地域内の人

Integer/Number

地域内の車両

Integer/Number

煙検知

Boolean

Rotation Detection

Boolean

動体検知

Boolean

Tampering Detection

Boolean

Blur Detection

Boolean

混雑状況

Boolean

People Loitering

Boolean

ユーザー定義デバイス

センサーアラーム

アラーム/通常

HALO

状態ステータス

オンライン/オフライン

センサーアラーム

アラーム/通常

入力/出力

状態ステータス

オンライン/オフライン

デジタル出力

Active/Inactive

デジタル入力

Active/Inactive

こちらの回答で解決しましたか?