Med reglen “Slå op via Webhook” kan du automatisere afsendelsen af nye opslag fra RSS-feeds til det webhook-endpoint, du angiver, så snart opslagene er tilgængelige. Du kan også finjustere, hvilke opslag der sendes, ved at angive søgeord, der skal filtreres efter. Når et nyt opslag matcher dine kriterier, sendes det til dit webhook-endpoint som en POST-anmodning formateret som JSON.
Format på JSON-data
Hver POST-anmodning, der sendes til dit webhook-endpoint, indeholder to primære elementer: post og feed.
Anmodningen indeholder også metadata, der identificerer webhook-beskeden. Feltet version angiver, hvilken version af Feeder Webhook API'et der sendes. Versionen er altid 2023-06-26 og opdateres, hvis der foretages ændringer, som ikke er bagudkompatible.
{
"version": "2023-06-26",
"message_id": "a unique UUID for this message, will be constant during retries",
"feed": { ... },
"post": { ... }
}
Elementet post indeholder oplysninger om det enkelte opslag:
{
"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)
}
Bemærk: published er null, hvis RSS-feedet ikke angiver en gyldig udgivelsesdato.
Elementet feed indeholder oplysninger om det feed, opslaget stammer fra:
{
"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"
}
Vi kan føje flere oplysninger til disse objekter i fremtiden. Kontakt os, hvis du mangler noget.
Logik for gentagne forsøg
Hvis en anmodning mislykkes, forsøger Feeder automatisk igen. Hvis en POST-anmodning ikke modtager en HTTP-statuskode mellem 200 og 399, forsøger vi at sende den igen efter en bestemt tidsplan, angivet i sekunder:
- Forsøg 1: Efter 5 sekunder
- Forsøg 2: Efter 30 sekunder
- Forsøg 3: Efter 60 sekunder
- Forsøg 4: Efter 5 minutter
- Forsøg 5: Efter 10 minutter
- Forsøg 6: Efter 30 minutter
- Forsøg 7: Efter 30 minutter
- Forsøg 8: Efter 30 minutter
Bemærk, at mekanismen for gentagne forsøg kun aktiveres ved faktiske opslagshændelser. Den gælder ikke for testbeskeder. Tidspunkterne kan også blive ændret.
Fejlfinding
Hvis der opstår fejl, kan du finde dem i loggen over handlingskørsler. Gå til den regel, der ikke fungerer, og tryk på “Åbn fejllog”.

Her kan du se flere oplysninger om de webhooks, der mislykkedes.

Konfigurer dit webhook

Sådan konfigurerer du dit webhook:
- Gå til siden Regler.
- Opret en ny regel.
- Angiv et navn, feeds og kriterier.
- Vælg “Slå op via Webhook” under “Hvad skal der ske?”.
- Indtast webhook-URL'en i tekstfeltet.
- Du kan kontrollere, at alt er konfigureret korrekt, ved at bruge knappen “Send testbesked” til at sende en testbesked til dit endpoint. Bemærk, at dette kun er en test. Hvis testen mislykkes, starter mekanismen for gentagne forsøg ikke. Der skal desuden være mindst ét feed med opslag tilføjet til din konto, før testopslaget kan sendes.
Sikkerhed: Verificer webhook-signaturer
Du kan kontrollere den webhook-hemmelighed, der genereres for hvert webhook, for at sikre, at indgående webhook-anmodninger rent faktisk kommer fra Feeder og ikke er blevet manipuleret. Hver webhook-anmodning indeholder en X-Feeder-Signature-header med en HMAC-SHA256-signatur af anmodningens indhold.
Sådan fungerer det

- Slå indstillingen “Avanceret” til i regelindstillingerne. Du kan nu se en streng i feltet “Webhook Secret”.
- Når Feeder sender et webhook til dit endpoint, beregner Feeder en HMAC-SHA256-hash af JSON-anmodningens indhold med din hemmelighed som nøgle.
- Den resulterende signatur sendes i
X-Feeder-Signature-headeren med præfiksetsha256=. For eksempel:
X-Feeder-Signature: sha256=a1b2c3d4e5f6...
- På din server beregner du den samme HMAC-SHA256-hash igen ved hjælp af den rå anmodningstekst og din kopi af hemmeligheden. Sammenlign derefter hashen med værdien i headeren.
Hvorfor bruge det?
- Ægthed: Bekræfter, at anmodningen blev sendt af Feeder og ikke af en tredjepart.
- Integritet: Sikrer, at dataene ikke er blevet ændret under overførslen.
Sådan verificerer du signaturen
Følg disse trin for at verificere signaturen:
- Læs den rå anmodningstekst som en streng. Du må ikke parse den først.
- Beregn HMAC-SHA256 for strengen ved hjælp af din hemmelighed.
- Sammenlign din beregnede signatur med værdien i
X-Feeder-Signature-headeren ved hjælp af en tidsuafhængig sammenligning for at forhindre timingangreb.
Eksempel: 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);
}
);
Vigtigt: Du skal bruge den rå anmodningstekst til at verificere signaturen. Hvis dit framework parser JSON-indholdet, før du beregner HMAC, kan den gendannede streng være forskellig fra originalen, og signaturen vil ikke stemme. I Express skal du bruge express.raw({ type: "application/json" }) på webhook-ruten som vist ovenfor.
Andet?
Har du spørgsmål? Skriv til os på support@feeder.co.