Webhooki zużycia: jak wyłapać urządzenie, które zjada dane

Floty i deweloperzy Opublikowano

Webhooki zużycia ThingSIM informują, gdy karta SIM przekroczy 80% pakietu, więc wyłapiesz źle działające urządzenie, zanim karta zostanie wstrzymana.

Urządzenie, które nagle zużywa dużo więcej danych niż zwykle, coś ci mówi: kamera, której strefa ruchu obejmuje teraz ruchliwą ulicę, router, który przełączył się na łącze zapasowe i na nim został, aktualizacja oprogramowania w pętli, a czasem urządzenie przejęte przez kogoś niepowołanego. Webhooki zużycia ThingSIM informują o tym twoje systemy na bieżąco, więc możesz zareagować, zanim karta wyczerpie pakiet i zostanie wstrzymana.

Zdarzenia, które mają znaczenie dla zużycia

Zdarzenie Kiedy jest wysyłane
iot.sim.usage_threshold Karta przekracza 80% pakietu w danym okresie, a potem 100%
iot.sim.allowance_reached Karta wykorzystała cały pakiet i została wstrzymana
iot.sim.allowance_reset Zaczął się nowy okres; karty wstrzymane po wyczerpaniu pakietu wracają do pracy
iot.sim.plan_changed Karta przeszła na inny pakiet

Zdarzenie przy 80% to przydatne wczesne ostrzeżenie: jest jeszcze czas, by przyjrzeć się urządzeniu albo przenieść kartę na większy pakiet, zanim zostanie wstrzymana. Katalog powiadomień wymienia wszystkie zdarzenia i ich zawartość.

Utwórz webhook

Webhooki możesz tworzyć w portalu albo przez API. Podaj adres URL HTTPS dostępny publicznie i typy zdarzeń, które chcesz otrzymywać:

curl
curl -X POST "https://partners.netavo.com/api/v1/platform/webhooks" \
  -H "Authorization: Bearer $THINGSIM_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/thingsim/events",
    "description": "Usage alerts",
    "types": ["iot.sim.usage_threshold", "iot.sim.allowance_reached"]
  }'

Zanim zaczniesz polegać na endpoincie, możesz wysłać do siebie zdarzenie testowe przez POST /v1/platform/webhooks/{webhookId}/test.

Odbierz i zweryfikuj zdarzenie

Każde zdarzenie to żądanie HTTPS POST z danymi JSON na twój adres URL. Odpowiedz dowolnym kodem 2xx w ciągu 10 sekund, a pracę wykonaj później; każda inna odpowiedź oznacza ponowienie. Każde żądanie ma nagłówek Webhook-Signature ze znacznikiem czasu t i podpisem v1, czyli HMAC-SHA256 ze znacznika czasu, kropki i surowej treści żądania, z kluczem w postaci twojego sekretu podpisującego. Zweryfikuj podpis względem treści dokładnie w postaci, w jakiej przyszła, przed jej parsowaniem:

Python
import hmac, hashlib, time

def verify(raw_body: bytes, header: str, secret: str, tolerance: int = 300) -> bool:
    parts = dict(p.strip().split("=", 1) for p in header.split(",") if "=" in p)
    t, sig = parts.get("t"), parts.get("v1")
    if not t or not sig or abs(time.time() - int(t)) > tolerance:
        return False
    signed = t.encode() + b"." + raw_body
    expected = hmac.new(secret.encode(), signed, hashlib.sha256).hexdigest()
    return hmac.compare_digest(expected, sig)

Przegląd dla deweloperów zawiera tę samą weryfikację w JavaScript i C# oraz opisuje rotację sekretu podpisującego (dokumentacja API jest po angielsku).

Co zrobić, gdy przyjdzie alert

Prosta i skuteczna reakcja na alert przy 80%:

  1. Sprawdź urządzenie. Porównaj jego zużycie z podobnymi urządzeniami; czy robi coś nowego?
  2. Usuń przyczynę, jeśli to usterka, na przykład strefy ruchu, ustawienia przesyłania albo zawieszoną aktualizację.
  3. Zmień pakiet na większy, jeśli zużycie jest uzasadnione, przez POST /v1/iot/sims/{iccid}/plan. Zmiana na większy pakiet działa od razu.
  4. Wstrzymaj kartę, jeśli urządzenie wygląda na przejęte, przez POST /v1/iot/sims/{iccid}/pause, a potem zbadaj sprawę. Zobacz poradnik zabezpieczenie urządzenia z publicznym adresem IP.

Jeśli masz tylko kilka kart, alerty zużycia w portalu robią to samo bez pisania kodu; zobacz poradnik jak zarządzać małą flotą kart SIM.

Najczęstsze pytania

Kiedy wysyłane jest zdarzenie progu zużycia?

Gdy karta przekroczy 80% pakietu danych w danym okresie, i ponownie przy 100%.

Co się stanie, gdy mój endpoint nie działa?

Nieudane dostarczenia są ponawiane z coraz większymi odstępami. Jeśli webhook nie działa przez mniej więcej dobę, zostaje wyłączony, a pozostałe twoje webhooki otrzymują zdarzenie platform.webhook.disabled.

Czy potrzebuję API, żeby dostawać alerty o zużyciu?

Nie. Alerty zużycia ustawisz w portalu; webhooki służą do przesyłania tych samych zdarzeń do twoich własnych systemów.