
שפה 🇮🇱 עברית
סקירה
יישום
מאחורי הקלעים
ווב-הוקים
עם FastComments ניתן לקרוא לנקודת קצה של API בכל פעם שתגובה מתווספת, מתעדכנת או נמחקת מהמערכת שלנו.
אנו מממשים זאת באמצעות webhooks אסינכרוניים על גבי HTTP/HTTPS.
מהם ווב-הוקים 
Webhook הוא מנגנון, או אינטגרציה, בין שתי מערכות שבה ה"מפיק" (FastComments) שולח אירוע שה"צרכן" (אתה) צורך באמצעות קריאת API.
אירועים ומשאבים נתמכים 
FastComments תומך ב-webhooks עבור משאב ה-Comment בלבד.
אנו תומכים ב-webhooks ליצירת תגובה, הסרה, ולעדכון.
כל אחד מאלה נחשב לאירוע נפרד במערכת שלנו ולכן יש לו סמנטיקה ומבנים שונים עבור אירועי ה-webhook.
כל מספר של נקודות קצה יכול להירשם לאותו אירוע, מהלוח המחוונים או דרך ה-API (see Managing Webhooks via the API). כל webhook נמסר באופן עצמאי.
הגדרת פיתוח מקומי 
For Local development, use a tool like ngrok.
In order to simplify keeping the system secure, local development follows the same process as setting up and securing other environments.
שלב 1: הוספת "localhost" לדומיינים בחשבונכם.
Add "localhost" as a domain here.
שלב 2: בחירת מפתח API
We're going to be adding webhook configuration for your domain, so we'll need an API key. You can do that here.
Under "Associate with domain" - select your "localhost" domain.
הערה: לחלופין, ניתן להשתמש בסוד API אחד לכל פעילות בדיקה וסביבות staging. פשוט הוסיפו סוד API עבור "All Domains", ותנו לו שם כמו "test".
Ensure you have an API Secret defined for your production domain(s). Events for all other domains will use the wildcard (testing) secret.
שלב 3: הוספת ה‑Webhook שלכם
While running ngrok or similar tool, set the value for "localhost" here.
When clicking Send Test Payload, we will send two test events to check that you validate the API key.
Once it validates, hit Save.
שלב 4: הוספת תגובה
Now you can add, edit, or delete comments and should see us call your local development machine with the events, using your testing API key. There may be up to 30 seconds delay for the events to reach your machine.
הגדרה 
עקבו אחרי אותם הצעדים עבור localhost כפי שהייתם עושים בייצור. ודאו שיש לכם תחומי ייצור והגדרות סודות API.
ראשית, נווטו אל Webhooks admin. ניתן לגשת לכך דרך Manage Data -> Webhooks.
הדף מציג את כל הווב-הוקים בחשבון שלכם:
לחצו על New Webhook כדי להוסיף אחד. לכל ווב-הוק יש URL, אירוע תגובה אחד (נוצר, עודכן או נמחק), תחום, ושיטת HTTP:
כל ווב-הוק נשלח באופן עצמאי. ניתן לשלוח את אותו אירוע למספר נקודות קצה, וווב-הוק המוגדר לAll Domains מקבל תגובות מכל תחום גם כאשר קיים ווב-הוק ספציפי לתחום עבור אותו אירוע. לא ניתן להוסיף את אותו URL, אירוע ותחום פעמיים.
לפני השמירה, לחצו על Send Test Payload כדי לבדוק שהנקודה מקבלת בקשה חתומה. ראו את הסעיף הבא, "Testing", לפרטים.
מהרשימה ניתן לערוך, להשבית, להפעיל מחדש או למחוק ווב-הוק. השבתה משאירה אירועים בתור עד שהווב-הוק מופעל מחדש; מחיקה מוחקת אותם.
ניתן גם ליצור ווב-הוקים דרך ה-API, לדוגמה באמצעות Zapier. הם מופיעים באותה רשימה עם המקור API. ראו Managing Webhooks via the API.
בדיקה 
The new and edit webhook pages have a Send Test Payload button that sends a request to the URL currently in the form, whether or not it has been saved. The Create and Update events send a dummy WebhookComment object, while testing Delete will send a dummy request body with just an ID.
אימות Payloads
When testing your webhook integration, verify the incoming requests include the following headers:
X-FastComments-Timestamp- חותמת זמן Unix (שניות)X-FastComments-Signature- חתימת HMAC‑SHA256
Webhooks created before the signature scheme was introduced also receive a token header containing your API Secret. New webhooks do not.
Use the HMAC signature verification to ensure payloads are authentic.
כלי בדיקה
You can use tools like webhook.site or ngrok to inspect incoming webhook payloads during development.
סוגי אירועים
- Create Event: מתבצע כאשר נוצר תגובה חדשה.
- Update Event: מתבצע כאשר תגובה נערכת.
- Delete Event: מתבצע כאשר תגובה נמחקת.
Each webhook is tied to one event and one HTTP method (POST, PUT or DELETE). Each event includes the full comment data in the request body (see Data Structures for the payload format).
מבני נתונים 
The only structure sent via webhooks is the WebhookComment object, outlined in TypeScript below.
מבנה אובייקט WebhookComment
מבנה אירוע "Create"
The "create" event request body is a WebhookComment object.
מבנה אירוע "Update"
The "update" event request body is a WebhookComment object.
מבנה אירוע "Delete"
The "delete" event request body is a WebhookComment object.
שינוי החל מ-14 בנובמבר 2023
בעבר, גוף הבקשה של אירוע "delete" כלל רק את מזהה ההערה. כעת הוא כולל את ההערה המלאה בזמן המחיקה.
Every key is always present in the body. When the comment has no value for a field the body carries null
(or false for booleans and [] for lists), so the shape of a delivery never varies from one comment to the next.
Run 
When users are tagged in a comment, the information is stored in a list called mentions. Each object in that list
has the following structure.
Run 
שיטות HTTP
You can configure the HTTP method for each webhook event type in the admin panel:
- Create Event: POST or PUT (default: PUT)
- Update Event: POST or PUT (default: PUT)
- Delete Event: DELETE, POST, or PUT (default: DELETE)
Since all requests contain an ID, Create and Update operations are idempotent by default (PUT). Repeating the same Create or Update request should not create duplicate objects on your side.
כותרות בקשה
Each webhook request includes the following headers:
| Header | Description |
|---|---|
Content-Type | application/json |
token | Your API Secret |
X-FastComments-Timestamp | Unix timestamp (seconds) when the request was signed |
X-FastComments-Signature | HMAC-SHA256 signature (sha256=<hex>) |
See אבטחה & אסימוני API for מידע על אימות חתימת HMAC.
אבטחה וטוקני API 
FastComments webhook requests include multiple authentication mechanisms for security.
Headers Sent
| כותרת | תיאור |
|---|---|
token | סוד ה-API שלך (לתאימות לאחור) |
X-FastComments-Timestamp | חותמת זמן Unix (שניות) כאשר הבקשה נחתמה |
X-FastComments-Signature | חתימת HMAC-SHA256 של המטען |
HMAC Signature Verification (Recommended)
אנו ממליצים בחום לאמת את חתימת ה-HMAC כדי להבטיח שמטעני ה-webhook הם אותנטיים ולא שונו.
פורמט החתימה: sha256=<hex-encoded-signature>
איך החתימה מחושבת:
- צירוף:
timestamp + "." + JSON_payload_body - חישוב HMAC-SHA256 באמצעות סוד ה-API שלך כמפתח
- קידוד תוצאה כ-hex
דוגמת אימות (Node.js)
const crypto = require('crypto');
function verifyWebhookSignature(req, apiSecret) {
const timestamp = req.headers['x-fastcomments-timestamp'];
const signature = req.headers['x-fastcomments-signature'];
if (!timestamp || !signature) {
return false;
}
// אימות שהחותמת זמן עדכנית (בתוך 5 דקות)
const now = Math.floor(Date.now() / 1000);
if (Math.abs(now - parseInt(timestamp, 10)) > 300) {
return false; // מניעת התקפת השמעה
}
// אימות החתימה
const payload = JSON.stringify(req.body);
const expectedSignature = crypto
.createHmac('sha256', apiSecret)
.update(`${timestamp}.${payload}`)
.digest('hex');
return signature === `sha256=${expectedSignature}`;
}
דוגמת אימות (Python)
import hmac
import hashlib
import time
import json
def verify_webhook_signature(headers, body, api_secret):
timestamp = headers.get('X-FastComments-Timestamp')
signature = headers.get('X-FastComments-Signature')
if not timestamp or not signature:
return False
# אימות שהחותמת זמן עדכנית
now = int(time.time())
if abs(now - int(timestamp)) > 300:
return False
# אימות החתימה
payload = json.dumps(body, separators=(',', ':'))
message = f"{timestamp}.{payload}"
expected = hmac.new(
api_secret.encode(),
message.encode(),
hashlib.sha256
).hexdigest()
return signature == f"sha256={expected}"
דוגמת אימות (PHP)
function verifyWebhookSignature($headers, $body, $apiSecret) {
$timestamp = $headers['X-FastComments-Timestamp'] ?? null;
$signature = $headers['X-FastComments-Signature'] ?? null;
if (!$timestamp || !$signature) {
return false;
}
// אימות שהחותמת זמן עדכנית (בתוך 5 דקות)
$now = time();
if (abs($now - intval($timestamp)) > 300) {
return false;
}
// אימות החתימה
$payload = json_encode($body, JSON_UNESCAPED_SLASHES);
$message = $timestamp . '.' . $payload;
$expectedSignature = 'sha256=' . hash_hmac('sha256', $message, $apiSecret);
return hash_equals($expectedSignature, $signature);
}
Legacy Authentication
כותרת token המכילה את סוד ה-API שלך עדיין נשלחת לתאימות לאחור. עם זאת, אנו ממליצים לעבור לאימות HMAC לשיפור האבטחה מכיוון שהיא מגנה מפני התקפות השמעה.
ניהול ווב-הוקים דרך ה-API 
Webhooks ניתן גם לנהל דרך ה-REST API. כך אינטגרציות כגון Zapier נרשמות לאירועי תגובות מבלי לגעת בלוח הבקרה, והן פועלות לפי תבנית REST Hooks: הרשמה, קבלת אירועים, ביטול הרשמה.
מנויים ב-API חיים לצד ה-webhooks המוגדרים בלוח הבקרה. אירוע תגובה נשלח לכל webhook שתואם לדומיין שלו, כל אחד כהעברה נפרדת, ללא קשר לאופן שבו נוצר ה-webhook.
Authentication
כל בקשה דורשת את מפתח ה-API שלך בכותרת x-api-key (או בפרמטר השאילתה API_KEY) ו
את מזהה השוכר שלך בפרמטר השאילתה tenantId. שני הפרטים מוצגים בעמוד API Secret בלוח הבקרה.
Subscribe
POST https://fastcomments.com/api/v1/webhooks?tenantId=YOUR_TENANT_ID
x-api-key: YOUR_API_KEY
Content-Type: application/json
{
"url": "https://hooks.zapier.com/hooks/catch/123/abc",
"event": "comment-created"
}| שדה | נדרש | תיאור |
|---|---|---|
url | כן | כתובת URL מוחלטת http או https. |
event | כן | comment-created, comment-updated או comment-deleted. |
domain | לא | דומיין מהגדרות החשבון שלך. ברירת המחדל היא *, שמקבל אירועים מכל דומיין. |
method | לא | POST (ברירת מחדל), PUT או DELETE. |
התשובה מכילה את המנוי:
{
"status": "success",
"webhook": {
"id": "66f1c4c1e7a2b3d4f5a6b7c8",
"url": "https://hooks.zapier.com/hooks/catch/123/abc",
"event": "comment-created",
"domain": "*",
"method": "POST",
"source": "api",
"enabled": true,
"createdAt": "2026-09-08T12:00:00.000Z"
}
}
רישום של אותה כתובת URL לאותו אירוע ולדומיין שוב מחזיר את המנוי הקיים במקום ליצור כפילות, כך שלקוח יכול לנסות שוב בבטחה. לכל שוכר ניתן עד 50 מנויים ב-API.
List
GET https://fastcomments.com/api/v1/webhooks?tenantId=YOUR_TENANT_ID
מחזיר את כל ה-webhooks של השוכר, כולל אלו המנוהלים בלוח הבקרה ("source": "dashboard").
ניתן לסנן באמצעות event, domain או source.
Unsubscribe
DELETE https://fastcomments.com/api/v1/webhooks/SUBSCRIPTION_ID?tenantId=YOUR_TENANT_ID
מחיקת מנוי גם מסירה כל אירוע שעדיין בתור עבורו. רק מנויים שנוצרו
דרך ה-API ניתנים למחיקה באופן זה; webhook של לוח הבקרה, או מזהה שאינו קיים בחשבון שלך,
מחזיר 404 עם קוד not-found. ניתן לערוך webhooks של לוח הבקרה בעמוד Webhooks.
Payloads and signing
ההעברות משתמשות באותו payload כמו webhooks של לוח הבקרה (ראו Data Structures) ונחתמות באותו
סכמת HMAC (ראו Security & API Tokens). מנויים ב-API לעולם לא מקבלים את הכותרת הישנה token,
לכן יש לאמת את הכותרת X-FastComments-Signature במקום זאת.
Sample payloads
GET https://fastcomments.com/api/v1/webhooks/sample-payloads?tenantId=YOUR_TENANT_ID&event=comment-created&limit=3
מחזיר את ההערות האחרונות של החשבון בדיוק במבנה שההעברה נושאת, כך שאינטגרציה יכולה
להציג נתוני דוגמה אמיתיים לפני שהאירוע הראשון מגיע. event הוא אופציונלי ונבדק בלבד,
מאחר שכל אירוע מעביר את אותו אובייקט תגובה. limit ברירת המחדל היא 3 ומקבל ערכים מ‑1 עד 10. עלות של 2 קרדיטים ב-API.
{
"status": "success",
"payloads": [
{
"id": "66f1c4c1e7a2b3d4f5a6b7c8",
"urlId": "https://example.com/blog/hello-world",
"commenterName": "Jane Reader",
"comment": "Great article!",
"date": "2026-09-08T12:00:00.000Z",
"approved": true
}
]
}
Responding with 410 Gone
אם קצה של מנוי ב-API משיב עם HTTP 410 Gone, FastComments מתייחס לכך כאל
ביטול מנוי: המנוי נמחק יחד עם האירועים בתור שלו, ולא מתבצעות עוד העברות.
Webhooks המוגדרים בלוח הבקרה אינם נמחקים אוטומטית; עבורם 410 הוא
כשל רגיל. כל קוד כשל אחר מנסה שוב ובסופו של דבר משבית את ה-webhook, כפי שמתואר
ב‑How it Works & Handling Retries.
Dashboard
מנויים ב-API מופיעים ברשימת ה-Webhooks עם המקור API, שם מנהל יכול לערוך, להשבית, להפעיל מחדש או למחוק אותם.
איך זה עובד וטיפול בניסיונות חוזרים 
כל השינויים לאובייקט Comment במערכת מפעילים אירוע שמסתיים בתור.
אירוע ה-webhook הראשוני נשלח בדרך כלל בתוך שישה שניות מהתרחשות מקור האירוע.
ניתן לנטר את התור הזה בממשק הניהול של Webhooks למקרה שה-API שלך יורד.
אם בקשה ל-API שלך נכשלת, נכניס אותה מחדש לתור על פי לוח זמנים.
לוח הזמנים הוא 1 Minute * the retry count. אם הקריאה נכשלה פעם אחת, היא תנסה שוב בעוד דקה. אם היא תיכשל פעמיים, היא תחכה אז שתי דקות, וכן הלאה. זה כדי שלא נעמיס על ה-API שלך אם הוא יורד מסיבות הקשורות לעומס.
ניתן לבטל את ה-Webhooks מתוך דף היומנים.
לסיכום
זה מסיים את תיעוד ה-Webhooks שלנו.
אנו מקווים שתמצאו את אינטגרציית ה-Webhook של FastComments קלה להבנה ומהירה להקמה.
אם אתם מרגישים שזיהיתם חוסרים בתיעוד שלנו, הודיעו לנו למטה.