Krijoni integrimet tuaja me Webhook

Përditësuar 13 Tetor, 2026 5 min lexim

Rregulli «Posto në Webhook» ju lejon të automatizoni dërgimin e postimeve të reja nga burimet RSS te endpoint-i i caktuar i webhook-ut, sapo ato të jenë të disponueshme. Mund të përcaktoni gjithashtu se cilat postime do të dërgohen, duke vendosur fjalë kyçe për filtrim. Kur një postim i ri përputhet me kriteret tuaja, ai dërgohet te endpoint-i juaj i webhook-ut si kërkesë POST në formatin JSON.

Formati i të dhënave JSON

Çdo kërkesë POST që dërgohet te webhook-u juaj përmban dy elemente kryesore: post dhe feed.

Ajo përmban gjithashtu elemente metadata për identifikimin e mesazhit të webhook-ut. Fusha version tregon versionin e API-t të webhook-ut të Feeder që po përdoret. Versioni është gjithmonë 2023-06-26 dhe do të përditësohet nëse bëhen ndryshime që nuk janë të përputhshme me versionet e mëparshme.

{
  "version": "2023-06-26",
  "message_id": "a unique UUID for this message, will be constant during retries",
  "feed": { ... },
  "post": { ... }
}

Elementi post përmban informacion për postimin përkatës:

{
  "id": "The unique identifier of the post",
  "title": "The title of the post",
  "url": "The URL where the post can be accessed",
  "published": "The date and time when the post was published",
  "content": "The content of the post",
  "audio_url": "link to mp3 attached to post (if present)",
  "image_url": "link to image attached to post (if present)
}

Shënim: published do të jetë null nëse burimi RSS nuk ka specifikuar një datë të vlefshme publikimi.

Elementi feed përmban informacion për burimin prej nga vjen postimi:

{
  "id": "The unique identifier of the feed",
  "source_url": "The URL of the source, for example RSS/Atom feed URL",
  "public_url": "The source's self identified public URL",
  "title": "The title of the feed",
  "favicon": "The URL of the feed's favicon"
}

Mund t’u shtojmë elemente këtyre objekteve në të ardhmen. Nëse ju mungon ndonjë element, na njoftoni.

Logjika e riprovave

Nëse një kërkesë dështon, Feeder e riprovon automatikisht. Nëse një kërkesë POST nuk merr një kod përgjigjeje HTTP nga 200 deri në 399, do të përpiqemi ta ridërgojmë sipas orarit të mëposhtëm, të përcaktuar në sekonda:

  • Prova 1: pas 5 sekondash
  • Prova 2: pas 30 sekondash
  • Prova 3: pas 60 sekondash
  • Prova 4: pas 5 minutash
  • Prova 5: pas 10 minutash
  • Prova 6: pas 30 minutash
  • Prova 7: pas 30 minutash
  • Prova 8: pas 30 minutash

Kini parasysh se mekanizmi i riprovave aktivizohet vetëm për ngjarje reale të postimeve dhe nuk zbatohet për njoftimet testuese. Kohët mund të ndryshojnë gjithashtu.

Gjetja dhe diagnostikimi i gabimeve

Nëse ndodhin gabime, mund t’i gjeni në regjistrin e ekzekutimit të veprimeve. Hapni rregullin që nuk po funksionon dhe shtypni «Hap regjistrin e gabimeve».

Aty do të shihni më shumë hollësi për webhook-et që dështuan.

Konfigurimi i webhook-ut

Për të konfiguruar webhook-un:

  1. Shkoni te faqja Rregullat.
  2. Krijoni një rregull të ri.
  3. Shkruani emrin, zgjidhni burimet dhe përcaktoni kriteret.
  4. Te seksioni «Çfarë duhet të ndodhë?», zgjidhni «Posto në Webhook».
  5. Shkruani URL-në e webhook-ut në fushën përkatëse.
  6. Për t’u siguruar që gjithçka është konfiguruar siç duhet, mund të përdorni butonin «Posto mesazhin testues» për të dërguar një njoftim testues te endpoint-i juaj. Kini parasysh se ky është vetëm një test dhe, nëse dështon, nuk aktivizon logjikën e riprovave. Gjithashtu, që postimi testues të dërgohet, duhet të keni të paktën një burim me postime të shtuara në llogarinë tuaj.

Siguria: verifikimi i nënshkrimeve të webhook-ut

Për t’u siguruar që kërkesat hyrëse të webhook-ut vijnë vërtet nga Feeder dhe nuk janë ndryshuar, mund të verifikoni sekretin e webhook-ut që krijohet për secilin webhook. Çdo kërkesë e webhook-ut përfshin një kokë X-Feeder-Signature me nënshkrimin HMAC-SHA256 të trupit të kërkesës.

Si funksionon

  1. Te cilësimet e rregullit, aktivizoni opsionin «Avancuar». Do të shihni një varg te fusha «Sekreti i webhook-ut».
  2. Kur Feeder dërgon një webhook te endpoint-i juaj, llogarit hash-in HMAC-SHA256 të trupit të kërkesës JSON, duke përdorur sekretin tuaj si çelës.
  3. Nënshkrimi që rezulton dërgohet në kokën X-Feeder-Signature, me prefiksin sha256=. Për shembull:
   X-Feeder-Signature: sha256=a1b2c3d4e5f6...
  1. Në serverin tuaj, rillogaritni të njëjtin hash HMAC-SHA256 duke përdorur trupin bruto të kërkesës dhe kopjen tuaj të sekretit, pastaj krahasojeni me vlerën në kokë.

Pse ta përdorni?

  • Autenticiteti: konfirmon se kërkesa është dërguar nga Feeder dhe jo nga një palë e tretë.
  • Integriteti: garanton që të dhënat nuk janë ndryshuar gjatë transmetimit.

Verifikimi i nënshkrimit

Për ta verifikuar:

  1. Lexoni trupin bruto të kërkesës si varg teksti, pa e analizuar më parë.
  2. Llogaritni HMAC-SHA256 të këtij vargu duke përdorur sekretin tuaj.
  3. Krahasoni nënshkrimin që llogaritët me vlerën e kokës X-Feeder-Signature, duke përdorur një krahasim që nuk varet nga koha për të parandaluar sulmet që shfrytëzojnë kohën e ekzekutimit.

Shembull: Node.js (Express)

const crypto = require("crypto");

const WEBHOOK_SECRET = process.env.FEEDER_WEBHOOK_SECRET;

function verifyFeederSignature(req, res, next) {
  const signature = req.headers["x-feeder-signature"];
  if (!signature) {
    return res.status(401).send("Missing signature");
  }

  const expectedSignature =
    "sha256=" +
    crypto.createHmac("sha256", WEBHOOK_SECRET).update(req.body).digest("hex");

  const isValid = crypto.timingSafeEqual(
    Buffer.from(signature),
    Buffer.from(expectedSignature)
  );

  if (!isValid) {
    return res.status(401).send("Invalid signature");
  }

  next();
}

// Important: use express.raw() so req.body is the raw string, not parsed JSON
app.post(
  "/webhook",
  express.raw({ type: "application/json" }),
  verifyFeederSignature,
  (req, res) => {
    const payload = JSON.parse(req.body);
    // Handle the webhook payload
    console.log("Received verified webhook:", payload);
    res.sendStatus(200);
  }
);

E rëndësishme: Për verifikimin e nënshkrimit duhet të përdorni trupin bruto të kërkesës. Nëse framework-u juaj e analizon trupin JSON para se të llogaritni HMAC-in, vargu i serializuar sërish mund të ndryshojë nga origjinali dhe nënshkrimi nuk do të përputhet. Në Express, përdorni express.raw({ type: "application/json" }) në rrugën e webhook-ut, siç tregohet më sipër.

Diçka tjetër?

Keni pyetje? Na shkruani në support@feeder.co.

Ju duhet ende ndihmë?

Ekipi ynë i mbështetjes lexon çdo mesazh. Na trego çfarë po ndodh dhe do të të ndihmojmë.

Kontakto mbështetjen