Webhook概要
Webhookを利用してSPLATSで記録されたログを受け取ることができます。通知対象のログがSPLATSに記録されると、利用者が設定したWebhook URLにJSONオブジェクトが含まれたPOSTリクエストを送信します。
Webhookを利用することで、SPLATS APIを定期的に呼び出してログ検出を行う必要がなく、リアルタイムに通知を受け取ることができるようになります。
リクエスト
-
以下のリクエストヘッダーとリクエストボディで、設定されたWebhook URLにHTTP POSTリクエストをおこないます。
-
デバイスでログが記録されてすぐにSPLATSが受け取り、リクエストがおこなわれますが、ネットワークの状態によっては遅延が発生する場合があります。
リクエストヘッダー
名称 | 値/説明 |
---|---|
X-Splats-ID |
Webhookのリクエストごとに付与されるユニークID |
X-Splats-Signature |
シークレットトークンと Webhook のリクエストボディを使って計算された HMAC-SHA256 (設定がある場合のみ) |
User-Agent |
Splats-Webhook |
Content-Type |
application/json |
リクエストボディ
下記の項目を持つJSONオブジェクトです。
フィールド名 | タイプ | 必須 | 説明 |
---|---|---|---|
history_id |
string |
○ |
ログID |
tenant_id |
string |
○ |
ログを記録したテナントのID |
datetime |
string |
○ |
ログ記録日時 ISO 8601 拡張形式 "YYYY-MM-DDThh:mm:ss+09:00" |
event |
string |
○ |
ログ内容(定数) |
event_name |
string |
○ |
ログ内容 |
status |
string |
○ |
ログ状態
|
category |
string |
○ |
ログカテゴリー
|
device_id |
string |
○ |
ログを記録したデバイスのID |
device_name |
string |
○ |
ログを記録したデバイスの名前 |
device_module |
string |
○ |
ログを記録したデバイスのモジュール
|
additional_info |
object |
○ |
ログに応じたオブジェクト
{ "additional_info":{ "area":{ "from":{ "id": "string", # 退室側のエリアID "name": "string" # 退室側のエリア名 }, "to":{ "id": "string", # 入室側のエリアID "name": "string" # 入室側のエリア名 } } } }
{ "additional_info":{ "member":{ "id": "string", # メンバーID "name": "string", # メンバー名 "code": "string" # メンバーコード } } }
{ "additional_info":{ "units":[ { "unit_no": "string", # カギナンバー "unit_name": "string" # カギ名 } ] } }
{ "additional_info":{ "video": { "camera_name": "string", # カメラ名 "exists": "boolean" # 関連する動画があるかどうか } } } |
リクエストボディのサンプル
{ "history_id": "b196f365-7248-40c2-bf3a-126c3105bda9.1234567", "tenant_id": "9dc19d04-7a95-968f-971b-736cdc23f7be", "datetime": "2022-02-18T11:38:55.317622+09:00", "event": "open", "event_name": "入室", "status": "occur", "category": "normal", "device_id": "4e75e89e-e409-4415-8638-083e24bbd242", "device_name": "会議室入口", "device_module": "control", "additional_info": { "area": { "from": { "id": "817b49a6-5ef2-46df-b507-afa43be91669", "name": "エントランス" }, "to": { "id": "a56f2c0e-767a-485a-82a3-ca394a894d95", "name": "会議室" } }, "member": { "id": "b785b807-2836-4235-ab25-50bd8f8f371e", "name": "管理者", "code": "123456789" } } }
レスポンス
-
リクエストには常にステータスコード200を返してください。
-
リクエストが失敗しても、再送はおこなわれません。
-
リクエストには 10 秒以内に応答してください。超過した場合、エラーとして扱われます。
※10秒という値は変更される可能性があります。 -
リクエストが何らかの原因でエラーになった場合、通知エラーとして扱われます。通知エラーが頻発する場合は該当するWebhookの設定を無効化する場合があります。有効化する場合は再度SPLATS APIから設定を更新してください。
リクエストの署名検証
Webhook設定時に secret_token
を指定すると、リクエストヘッダーのX-Splats-Signatureに secret_token
とリクエストボディを使って計算されたHMAC-SHA256署名を付与します。
secret_token
を使ってその署名を計算し、SPLATSから送信された署名と比較することで、リクエストの送信元がSPLATS であることを確認できます。
サンプルコード(Python)
import hmac import hashlib secret_token = {Webhook設定時に指定したsecret_token} message = {リクエストボディ} signature = hmac.new(secret_token.encode('utf-8'), message.encode('utf-8'), hashlib.sha256).hexdigest()
サンプルコード(Ruby)
require 'openssl' secret_token = {Webhook設定時に指定したsecret_token} message = {リクエストボディ} signature = OpenSSL::HMAC::hexdigest(OpenSSL::Digest::SHA256.new, secret_token, message)
Webhookの通知条件
設定した通知条件により、該当するログがSPLATSに記録されると、Webhook通知を受け取ることができます。
設定可能な通知条件
分類 | 通知条件 | 説明 |
---|---|---|
ログ |
[通常]カテゴリー |
入室/退室、取出/保管のログ |
[不審]カテゴリー |
「不審」にカテゴリーされるログ |
|
[不正]カテゴリー |
「不正」にカテゴリーされるログ |
|
[障害]カテゴリー |
「障害」にカテゴリーされるログ |
|
[緊急]カテゴリー |
「緊急」にカテゴリーされるログ |
Webhookの設定方法
-
WebhookはSPLATSメンバーサイト、SPLATS APIのWebhook設定更新から設定することができます。
-
SPLATS APIから設定するためには「Tenant」スコープが必要となります。
-
設定は1テナントごとに1件の設定が可能です。
通知対象一覧
category | event | event_name | status | device_module | 説明 |
---|---|---|---|---|---|
normal |
open |
入室 |
occur |
control |
入室側SPLATSリーダーを使って特定のエリアに入室した |
退室 |
occur |
control |
退室側SPLATSリーダーを使って特定のエリアから退室した |
||
lend |
キーホルダー取出 ({カギ名}) |
occur |
keybox |
キーホルダーを取り出した |
|
return |
キーホルダー返却 ({カギ名}) |
occur |
keybox |
キーホルダーを返却した |
|
lend_remote |
遠隔でキーホルダー取出 ({カギ名}) |
occur |
keybox |
メンバーサイトの操作リクエストで解錠してキーホルダーを取り出した |
|
return_remote |
遠隔でキーホルダー返却 ({カギ名}) |
occur |
keybox |
メンバーサイトの操作リクエストで解錠してキーホルダーを返却した |
|
suspicious |
forget_to_close |
閉め忘れ |
occur |
control |
一定時間以上扉を開けていた |
閉め忘れた扉の閉扉 |
restore |
control |
一定時間以上開けていた扉を閉めた |
||
not_open |
未入室 |
occur |
control |
入室側SPLATSリーダーを使って扉を解錠したが、入室しなかった |
|
未退室 |
occur |
control |
退室側SPLATSリーダーを使って扉を解錠したが、退室しなかった |
||
未開扉 |
occur |
keybox |
キーボックスの扉を解錠したが、開けなかった |
||
drivers_license_ng |
免許証未確認 |
occur |
keybox |
免許証確認二要素認証待ちでタイムアウトした |
|
warning |
no_authority |
権限なし |
occur |
control |
エリアに入る権限を持っていない人が解錠しようとした |
overtime_authority |
権限時間外 |
occur |
control |
エリアに入る権限がない時間帯に解錠しようとした |
|
expired_authority |
利用期間外 |
occur |
control |
利用開始日より前、もしくは利用終了日より後に解錠しようとした |
|
no_register |
カード未登録 |
occur |
control |
登録されていないカードを使って解錠しようとした |
|
QR未登録 |
occur |
control |
登録されていないQRコードを使って解錠しようとした |
||
SPLATSアプリ未登録 |
occur |
control |
登録されていないSPLATSアプリを使って解錠しようとした |
||
顔未登録 |
occur |
control |
登録されていない顔で顔認証を使って解錠しようとした |
||
two_factor_ng |
二要素認証エラー |
occur |
keybox |
扉を解錠しようとしたが、二要素認証に失敗した |
|
face_fake |
なりすまし |
occur |
control |
写真などで他人になりすまし顔認証を使って解錠しようとした |
|
illegal_pass_error |
不正通行エラー発生 |
occur |
control |
制御しているゲートで逆方向からの侵入など、不正な通行が発生した |
|
不正通行エラー復旧 |
restore |
control |
制御しているゲートで発生していた不正通行エラーが復旧した |
||
pass_check_error |
通行ルール違反(入室) |
occur |
control |
通行ルールに違反(前回カードの当て忘れや共連れで通行)して入室側リーダーからエリアに入ろうとした |
|
通行ルール違反(退室) |
occur |
control |
通行ルールに違反(前回カードの当て忘れや共連れで通行)して退室側リーダーからエリアに入ろうとした |
||
error |
tamper |
タンパー検知発生 |
occur |
control |
SPLATSパスコントローラーの蓋を開けた |
タンパー検知復旧 |
restore |
control |
SPLATSパスコントローラーの蓋を閉めた |
||
リーダータンパー検知(入室)発生 |
occur |
front_in |
入室側SPLATSリーダーが壁から取り外された |
||
リーダータンパー検知(入室)復旧 |
restore |
front_in |
入室側SPLATSリーダーが壁に取り付けられた |
||
リーダータンパー検知(退室)発生 |
occur |
front_out |
退室側SPLATSリーダーが壁から取り外された |
||
リーダータンパー検知(退室)復旧 |
restore |
front_out |
退室側SPLATSリーダーが壁に取り付けられた |
||
front_unit_connect_error |
リーダー通信異常(入室)発生 |
occur |
front_in |
入室側SPLATSリーダーとの通信が途絶えた |
|
リーダー通信異常(入室)復旧 |
restore |
front_in |
入室側SPLATSリーダーとの通信が復旧した |
||
リーダー通信異常(退室)発生 |
occur |
front_out |
退室側SPLATSリーダーとの通信が途絶えた |
||
リーダー通信異常(退室)復旧 |
restore |
front_out |
退室側SPLATSリーダーとの通信が復旧した |
||
qr_connect_error |
QRコードリーダー通信異常(入室)発生 |
occur |
front_in |
入室側SPLATSリーダーに接続しているQRコードリーダーとの通信が途絶えた |
|
QRコードリーダー通信異常(入室)復旧 |
restore |
front_in |
入室側SPLATSリーダーに接続しているQRコードリーダーとの通信が復旧した |
||
QRコードリーダー通信異常(退室)発生 |
occur |
front_out |
退室側SPLATSリーダーに接続しているQRコードリーダーとの通信が途絶えた |
||
QRコードリーダー通信異常(退室)復旧 |
restore |
front_out |
退室側SPLATSリーダーに接続しているQRコードリーダーとの通信が復旧した |
||
QRコードリーダー通信異常発生 |
occur |
keybox |
SPLATSキーボックスに接続しているQRコードリーダーとの通信が途絶えた |
||
QRコードリーダー通信異常復旧 |
restore |
keybox |
SPLATSキーボックスに接続しているQRコードリーダーとの通信が復旧した |
||
tablet_connect_error |
タブレット通信異常(入室)発生 |
occur |
front_in |
入室側SPLATSタブレットとの通信が途絶えた |
|
タブレット通信異常(入室)復旧 |
restore |
front_in |
入室側SPLATSタブレットとの通信が復旧した |
||
タブレット通信異常(退室)発生 |
occur |
front_out |
退室側SPLATSタブレットとの通信が途絶えた |
||
タブレット通信異常(退室)復旧 |
restore |
front_out |
退室側SPLATSタブレットとの通信が復旧した |
||
camera_communication_error |
カメラ通信異常(入室)発生 |
occur |
control |
入室側カメラとの通信が途切れた |
|
カメラ通信異常(入室)復旧 |
restore |
control |
入室側カメラとの通信が復旧した |
||
カメラ通信異常(退室)発生 |
occur |
control |
退室側カメラとの通信が途切れた |
||
カメラ通信異常(退室)復旧 |
restore |
control |
退室側カメラとの通信が復旧した |
||
カメラ通信異常発生 |
occur |
keybox |
カメラとの通信が途切れた |
||
カメラ通信異常復旧 |
restore |
keybox |
カメラとの通信が復旧した |
||
camera_recording_error |
カメラ録画異常(入室)発生 |
occur |
control |
入室側カメラが録画を行っていない |
|
カメラ録画異常(入室)復旧 |
restore |
control |
入室側カメラが録画を開始した |
||
カメラ録画異常(退室)発生 |
occur |
control |
退室側カメラが録画を行っていない |
||
カメラ録画異常(退室)復旧 |
restore |
control |
退室側カメラが録画を開始した |
||
カメラ録画異常発生 |
occur |
keybox |
カメラが録画を行っていない |
||
カメラ録画異常復旧 |
restore |
keybox |
カメラが録画を開始した |
||
camera_sdcard_error |
カメラSDカード接続異常(入室)発生 |
occur |
control |
入室側カメラのSDカードを認識できない |
|
カメラSDカード接続異常(入室)復旧 |
restore |
control |
入室側カメラのSDカードを認識した |
||
カメラSDカード接続異常(退室)発生 |
occur |
control |
退室側カメラのSDカードを認識できない |
||
カメラSDカード接続異常(退室)復旧 |
restore |
control |
退室側カメラのSDカードを認識した |
||
カメラSDカード接続異常発生 |
occur |
keybox |
カメラのSDカードを認識できない |
||
カメラSDカード接続異常復旧 |
restore |
keybox |
カメラのSDカードを認識した |
||
card_reader_connect_error |
機器異常発生 |
occur |
keybox |
キーボックスで機器異常が発生した |
|
機器異常復旧 |
restore |
keybox |
キーボックスで機器異常が復旧した |
||
exp_board_connect_error |
機器異常発生 |
occur |
keybox |
キーボックスで機器異常が発生した |
|
機器異常復旧 |
restore |
keybox |
キーボックスで機器異常が復旧した |
||
led_touch_connect_error |
機器異常発生 |
occur |
keybox |
キーボックスで機器異常が発生した |
|
機器異常復旧 |
restore |
keybox |
キーボックスで機器異常が復旧した |
||
keyunit_connect_error |
機器異常発生 |
occur |
keybox |
キーボックスで機器異常が発生した |
|
機器異常復旧 |
restore |
keybox |
キーボックスで機器異常が復旧した |
||
unlock_error |
解錠エラー発生 |
occur |
control |
扉が解錠しなかった |
|
解錠エラー復旧 |
restore |
control |
解錠エラーが発生しているときに解錠/施錠した |
||
lock_error |
施錠エラー発生 |
occur |
control |
扉が施錠しなかった |
|
施錠エラー復旧 |
restore |
control |
施錠エラーが発生しているときに解錠/施錠した |
||
gate_error |
セキュリティゲート異常発生 |
occur |
control |
制御しているゲートで異常が発生した |
|
セキュリティゲート異常復旧 |
restore |
control |
制御しているゲートで発生していた異常が復旧した |
||
door_unlock_error |
扉解錠エラー発生 |
occur |
keybox |
扉が解錠しなかった |
|
扉解錠エラー復旧 |
restore |
keybox |
扉解錠エラーが発生しているときに解錠/施錠した |
||
key_unlock_error |
キーホルダー解錠エラー発生 ({カギ名}) |
occur |
keybox |
キーホルダーが解錠しなかった |
|
キーホルダー解錠エラー復旧 ({カギ名}) |
restore |
keybox |
キーホルダー解錠エラーが発生しているときに解錠/施錠した |
||
communication_error |
通信エラー発生 |
occur |
control |
デバイスとクラウド間の通信が5分以上出来なくなった |
|
通信エラー復旧 |
restore |
control |
デバイスとクラウド間の通信が復旧した |
||
emergency |
tamper |
タンパー検知発生 |
occur |
keybox |
SPLATSキーボックスの背板を開けた |
タンパー検知復旧 |
restore |
keybox |
SPLATSキーボックスの背板を閉めた |
||
broken_open |
こじ開け発生 |
occur |
control |
扉が無理やり開けられた |
|
こじ開け復旧 |
restore |
control |
こじ開け発生を確認して、扉を解錠した |
||
扉非常解錠発生 |
occur |
keybox |
非常解錠キーや非常解錠レバーで扉を開けられた |
||
扉非常解錠復旧 |
restore |
keybox |
扉非常解錠発生を確認して、 扉を閉めた |
||
thumbturn |
非常解錠発生 |
occur |
control |
運用上許可されていない操作(サムターン、鍵の使用など)により扉が不正に開けられた |
|
非常解錠復旧 |
restore |
control |
非常解錠発生を確認して、扉を解錠した |
||
broken_lend |
キーホルダー強制取り出し発生 ({カギ名}) |
occur |
keybox |
キーホルダーが無理やり取り出された |
|
キーホルダー強制取り出し復旧 ({カギ名}) |
restore |
keybox |
無理やり取り出されたキーホルダーが返却された |