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:
- Shkoni te faqja Rregullat.
- Krijoni një rregull të ri.
- Shkruani emrin, zgjidhni burimet dhe përcaktoni kriteret.
- Te seksioni «Çfarë duhet të ndodhë?», zgjidhni «Posto në Webhook».
- Shkruani URL-në e webhook-ut në fushën përkatëse.
- 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

- Te cilësimet e rregullit, aktivizoni opsionin «Avancuar». Do të shihni një varg te fusha «Sekreti i webhook-ut».
- 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.
- Nënshkrimi që rezulton dërgohet në kokën
X-Feeder-Signature, me prefiksinsha256=. Për shembull:
X-Feeder-Signature: sha256=a1b2c3d4e5f6...
- 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:
- Lexoni trupin bruto të kërkesës si varg teksti, pa e analizuar më parë.
- Llogaritni HMAC-SHA256 të këtij vargu duke përdorur sekretin tuaj.
- 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.