Skip to content

Webhooks

Prejmite obvestila v realnem času, ko se zgodijo dogodki.

Pregled

Webhooks vam omogočajo:

  • Takojšnja obvestila o dogodkih
  • Avtomatizacijo delovnih tokov
  • Sinhronizacijo z zunanjimi sistemi
  • Gradnjo reaktivnih integracij

Zahteva paketa

Dostop do webhook zahteva paket, ki vključuje funkcije API.

Kako webhooks delujejo

  1. Konfigurirate URL naslova
  2. Izberete dogodke za naročnino
  3. Ko se zgodijo dogodki, pošljemo HTTP POST zahteve
  4. Vaš strežnik obdela vsebino
  5. Odgovorite s statusom 2xx

Razpoložljivi dogodki

DogodekOpis
photo_request.createdUstvarjena nova foto zahteva
photo_request.first_viewedZahteva prvič ogledana
photo_submission.createdFotografije oddane (trajne povezave)
photo_request.submittedEnkratna zahteva zaključena
photo_request.expiredZahteva potekla brez oddaje
photo_submission.dropbox_syncedFotografija sinhronizirana v Dropbox s povezavo za skupno rabo

Ustvarjanje webhooka

Koraki

  1. Pojdite na Webhooks v stranski vrstici
  2. Kliknite Ustvari webhook
  3. Vnesite opisno ime
  4. Vnesite URL vašega naslova
  5. Izberite dogodke za naročnino
  6. Preklopite Aktiven (privzeto: vključeno)
  7. Kliknite Ustvari

Zahteve za naslov

ZahtevaVrednost
ProtokolPotreben HTTPS
DostopnostJavni internet
OdgovorStatusna koda 2xx
Časovna omejitevNajveč 30 sekund

Zasebna omrežja

Zasebni in notranji omrežni naslovi (localhost, 10.x.x.x, 192.168.x.x) niso dovoljeni.

Webhook vsebina

Format zahteve

http
POST /vas-naslov HTTP/1.1
Host: vas-streznik.com
Content-Type: application/json
X-Webhook-Signature: sha256=abc123...
X-Webhook-ID: wh_123456
X-Webhook-Timestamp: 1609459200

Struktura vsebine

json
{
  "event": "photo_request.submitted",
  "timestamp": "2024-01-15T10:30:00Z",
  "data": {
    "id": "req_abc123",
    "type": "one_time",
    "instructions": "Pošljite fotografije vozila",
    "photos": [
      {
        "id": "photo_xyz789",
        "url": "https://...",
        "slot_instructions": "Pogled spredaj",
        "metadata": {
          "gps_lat": 45.1234,
          "gps_lng": 12.5678,
          "captured_at": "2024-01-15T10:28:00Z"
        }
      }
    ],
    "submitted_at": "2024-01-15T10:30:00Z"
  }
}

Preverjanje podpisa

Zakaj preverjati

Preverjajte podpise webhookov za zagotovitev:

  • Zahteva je prišla od Visiono
  • Vsebina ni bila spremenjena
  • Preprečevanje napadov s ponovitvijo

Glava podpisa

X-Webhook-Signature: sha256=abc123def456...

Koraki preverjanja

php
// PHP primer
$payload = file_get_contents('php://input');
$signature = $_SERVER['HTTP_X_WEBHOOK_SIGNATURE'];
$secret = 'vasa-webhook-skrivnost';

$expected = 'sha256=' . hash_hmac('sha256', $payload, $secret);

if (!hash_equals($expected, $signature)) {
    http_response_code(401);
    exit('Neveljaven podpis');
}
javascript
// Node.js primer
const crypto = require('crypto');

const payload = JSON.stringify(req.body);
const signature = req.headers['x-webhook-signature'];
const secret = process.env.WEBHOOK_SECRET;

const expected = 'sha256=' + crypto
  .createHmac('sha256', secret)
  .update(payload)
  .digest('hex');

if (!crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(signature))) {
  return res.status(401).send('Neveljaven podpis');
}

Upravljanje webhookov

Preizkus webhooka

Pošljite testni dogodek:

  1. Kliknite Preizkusi na webhooku
  2. Potrdite dejanje
  3. Preverite status odgovora
  4. Če ni uspelo, poglejte v dnevnike

Ogled dnevnikov

Oglejte si zgodovino dostav:

  1. Kliknite Dnevniki na webhooku
  2. Oglejte si nedavne dostave
  3. Preverite status in odgovor
  4. Odpravite napake

Podrobnosti dnevnika

Vsak dnevnik prikazuje:

  • Vrsta dogodka
  • Časovni žig
  • Status odgovora
  • Čas odgovora
  • Telo zahteve/odgovora (za odpravljanje napak)

Regeneracija skrivnosti

Pridobite novo skrivnost za podpisovanje:

  1. Kliknite Regeneriraj skrivnost
  2. Potrdite dejanje
  3. Takoj kopirajte novo skrivnost
  4. Posodobite svoj strežnik

Najprej posodobite strežnik

Po regeneraciji stara skrivnost preneha delovati. Posodobite svojo kodo za preverjanje pred regeneracijo.

Deaktivacija webhooka

Začasno prenehajte prejemati dogodke:

  1. Kliknite Deaktiviraj
  2. Potrdite dejanje
  3. Dogodki se ne pošiljajo več
  4. Ponovno aktivirajte, ko ste pripravljeni

Brisanje webhooka

Trajno odstranite:

  1. Kliknite Izbriši
  2. Potrdite dejanje
  3. Vsi dnevniki so izbrisani

Politika ponovitev

Samodejne ponovitve

Neuspele dostave se ponovijo:

PoskusZamuda
1Takojšnja
21 minuta
35 minut
430 minut
52 uri

Kriteriji neuspeha

Dostava ne uspe, če:

  • Časovna omejitev povezave (30s)
  • Odgovor ni 2xx
  • Omrežna napaka
  • SSL napaka

Po maksimalnih ponovitvah

Če vse ponovitve ne uspejo:

  • Dogodek je označen kot neuspel
  • Zabeležen za pregled
  • Ni nadaljnjih poskusov

Najboljše prakse

Zasnova naslova

  • Odgovorite hitro (< 5 sekund)
  • Po potrebi obdelajte asinhrono
  • Takoj vrnite 2xx
  • Obvladajte idempotentnost

Obravnava napak

javascript
// Priporočen vzorec
app.post('/webhook', async (req, res) => {
  // Najprej preverite podpis
  if (!verifySignature(req)) {
    return res.status(401).send('Neveljavno');
  }

  // Takoj potrdite prejem
  res.status(200).send('OK');

  // Obdelajte asinhrono
  processWebhookAsync(req.body);
});

Idempotentnost

Dogodki se lahko pošljejo več kot enkrat. Obvladajte dvojnike:

javascript
// Preverite, ali je že obdelano
const eventId = req.headers['x-webhook-id'];
if (await isProcessed(eventId)) {
  return res.status(200).send('Že obdelano');
}

// Obdelajte in označite kot obravnavano
await processEvent(req.body);
await markProcessed(eventId);

Spremljanje

  • Beležite vse dohodne webhooks
  • Opozorite ob napakah
  • Spremljajte čase odgovorov
  • Sledite obsegom dogodkov

Odpravljanje težav

Ne prejemate dogodkov

  1. Preverite, ali je webhook aktiven
  2. Preverite, ali je URL naslova pravilen
  3. Zagotovite, da HTTPS deluje
  4. Preverite, ali je strežnik dostopen
  5. Preverite izbrane dogodke

Neujemanje podpisa

  1. Uporabite pravilno skrivnost
  2. Primerjajte celotno vsebino (ne razčlenjeno)
  3. Preverite težave s kodiranjem
  4. Preverite HMAC algoritem (SHA256)

Časovne omejitve

  1. Zmanjšajte čas obdelave
  2. Takoj potrdite prejem
  3. Obdelajte asinhrono
  4. Preverite vire strežnika

Ogled neuspelih dostav

  1. Pojdite na dnevnike webhooka
  2. Filtrirajte po statusu (neuspelo)
  3. Oglejte si podrobnosti zahteve/odgovora
  4. Popravite in znova preizkusite

Omejitve webhookov

Glede na paket

PaketMaks. webhookov
Profesionalni5 webhookov
PoslovniNeomejeno

Omejitve hitrosti

OmejitevVrednost
Dogodki na minuto100
Velikost vsebine1 MB

Povezane strani

Profesionalna Platforma za Foto Dokumentacijo