Webhooks
تتيح لك الويب هوك الصادرة تلقّي إشعارات HTTP POST فورية عند وقوع أحداث في مشروعك.
Proنظرة عامة
تُسلّم الويب هوك حمولة JSON إلى أي نقطة نهاية HTTPS تضبطها، كلما وقع حدث معيّن في مشروعك. ويمكن لكل ويب هوك الاشتراك في حدث واحد أو أكثر مما يلي:
| الحدث | الوصف |
|---|---|
post.created | أُرسل منشور ملاحظات جديد |
post.updated | حُرِّر منشور ملاحظات |
post.deleted | حُذف منشور ملاحظات |
comment.created | أُضيف تعليق جديد إلى منشور |
comment.updated | حُرِّر تعليق |
comment.deleted | حُذف تعليق |
post.status_changed | تغيّرت حالة منشور (قائمة الانتظار، مفتوح، مخطط له، قيد التنفيذ، منجز) |
message.created | أُرسلت رسالة خاصة جديدة |
message.updated | حُرِّرت رسالة خاصة |
message.deleted | حُذفت رسالة خاصة |
beta_feedback.created | أرسل مختبِر بيتا ملاحظات على برنامج بيتا |
beta_feedback.deleted | حُذف عنصر ملاحظات بيتا |
waitlist_signup.created | انضم زائر إلى قائمة الانتظار |
waitlist_signup.invited | دُعي مدخل في قائمة الانتظار من القائمة |
waitlist_signup.joined | قبل مدخل مدعو وانضم |
csat_survey.completed | اكتمل استطلاع رضا العملاء بتقييم |
الويب هوك محصورة بمشاريع بعينها. ولكل مشروع مجموعته الخاصة من نقاط النهاية بتكوينات وأسرار توقيع مستقلة.
إعداد ويب هوك
- اذهب إلى صفحة التكاملات في مشروعك
- مرّر إلى قسم الويب هوك الصادرة
- انقر على إضافة ويب هوك
- أدخل عنوان نقطة النهاية (يجب أن يكون HTTPS في بيئة الإنتاج)
- اختر الأحداث التي تريد الاشتراك فيها
- انقر على حفظ
بعد الحفظ، يُعرض سر توقيع مرة واحدة. انسخه فورًا — فلا يمكن استرجاعه لاحقًا. ويمكنك إعادة توليده في أي وقت من قائمة إجراءات الويب هوك.
التحقق من توقيعات الويب هوك
تتضمّن كل عملية تسليم ويب هوك ترويسة X-SupDesk-Signature تحتوي على توقيع HMAC-SHA256
لجسم الطلب. وللتحقق من ويب هوك:
- احسب
HMAC-SHA256(your_signing_secret, raw_request_body) - قارن النتيجة بالقيمة الست عشرية في ترويسة
X-SupDesk-Signature(بعد البادئةsha256=) - استخدم مقارنة بزمن ثابت لمنع هجمات التوقيت
Node.js
import { createHmac, timingSafeEqual } from "crypto";
function verifyWebhook(secret, body, signature) {
const expected = createHmac("sha256", secret)
.update(body)
.digest("hex");
const sig = signature.replace("sha256=", "");
return timingSafeEqual(Buffer.from(expected), Buffer.from(sig));
}Python
import hmac
import hashlib
def verify_webhook(secret: str, body: bytes, signature: str) -> bool:
expected = hmac.new(
secret.encode(), body, hashlib.sha256
).hexdigest()
sig = signature.removeprefix("sha256=")
return hmac.compare_digest(expected, sig)Ruby
require "openssl"
def verify_webhook(secret, body, signature)
expected = OpenSSL::HMAC.hexdigest("SHA256", secret, body)
sig = signature.sub("sha256=", "")
Rack::Utils.secure_compare(expected, sig)
endاختبار ويب هوك
انقر على زر اختبار بجوار ويب هوك لإرسال حمولة عيّنة إلى نقطة نهايته. تحمل حمولة
الاختبار "event": "test" وحقل data.message. استخدم أداة مثل
webhook.site لفحص الطلب المُسلَّم.
سجل التسليم
يعرض سجل التسليم آخر 50 محاولة تسليم لكل ويب هوك، بما في ذلك:
- الحدث — أي حدث سُلِّم
- الحالة —
successأوfailed - رمز الاستجابة — رمز حالة HTTP من نقطة النهاية
- المحاولات — عدد محاولات التسليم (بما فيها إعادات المحاولة)
- الوقت — متى جرت محاولة التسليم
سلوك إعادة المحاولة
عندما يفشل تسليم ويب هوك (استجابة 5xx أو انتهاء مهلة الشبكة)، تعيد SupDesk المحاولة حتى 3 مرات بتراجع أُسّي:
| المحاولة | التأخير |
|---|---|
| 1 | فوري |
| 2 | ثانية واحدة |
| 3 | ثانيتان |
أخطاء العميل (4xx) لا يُعاد المحاولة عليها — فهي تشير إلى مشكلة دائمة في تكوين نقطة النهاية.
متطلبات الخطة
الويب هوك الصادرة متاحة في خطتَي Pro وTeam.
Pro