البدء السريع·4 min read·

كيف تعمل الـ Webhooks في VeloCMS؟

الـ Webhooks هي إشعارات HTTP POST صادرة يُرسلها VeloCMS إلى الخدمات الخارجية عند وقوع أحداث — إليك بنية البيانات المُرسَلة وتوقيع الأمان وضمانات التسليم.

الـ webhook في VeloCMS هو طلب HTTP POST صادر يُرسَل إلى رابط تُسجّله أنت كلما وقع حدث محدد في مدونتك — كنشر منشور جديد، أو انضمام مشترك جديد، أو اكتمال طلب شراء. جسم الطلب كائن JSON، ويتضمن الطلب رأس توقيع HMAC-SHA256 حتى يتمكن الخادم المستقبِل من التحقق من أن الطلب صادر فعلًا من VeloCMS.

كيف تبدو بيانات JSON الخاصة بـ webhook؟

تتبع كل بيانات webhook هيكل غلاف موحدًا: حقل event (نوع الحدث مثل 'post.published')، وtimestamp (بتوقيت ISO 8601 UTC)، وid (معرّف تسليم فريد لضمان الأثر الواحد)، وكائن data يحتوي على الحقول الخاصة بكل حدث. لحدث post.published، يتضمن كائن data: الـ slug والعنوان والرابط والمقتطف واسم المؤلف author.name وتاريخ النشر published_at والوسوم tags (مصفوفة بأسماء الوسوم). لحدث subscriber.created، يتضمن: البريد الإلكتروني والخطة وتاريخ الإنشاء created_at. مخطط JSON الكامل لكل نوع حدث موثَّق في مرجع VeloCMS API.

كيف أتحقق من أن webhook صادر من VeloCMS؟

يتضمن كل طلب webhook رأس X-VeloCMS-Signature يحتوي على ملخص hex من نوع HMAC-SHA256 لجسم الطلب الخام، مُحسَبًا باستخدام المفتاح السري لنقطة النهاية الخاصة بك. للتحقق: في الخادم المستقبِل، احسب HMAC-SHA256 لجسم الطلب الخام باستخدام مفتاحك السري، وقارن النتيجة بالقيمة الموجودة في الرأس. إذا تطابقا، فالطلب أصيل. وإذا لم يتطابقا، ارفضه بحالة 401. يُعرَض المفتاح السري مرة واحدة فقط عند إنشاء نقطة النهاية — احفظه بأمان، لأن VeloCMS لن يعرضه مجددًا (وإن كنت تستطيع تدويره من لوحة التكاملات في أي وقت).

ما حالة HTTP التي ينبغي أن يُعيدها الخادم؟

أعِد أي حالة 2xx (200 أو 201 أو 204) في غضون 10 ثوانٍ لتأكيد الاستلام. يعتبر VeloCMS التسليم ناجحًا فور استلامه أي استجابة 2xx — فهو لا يُحلّل جسم استجابتك. إذا استغرقت معالجتك أكثر من 10 ثوانٍ، فالنهج الصحيح هو تأكيد الاستلام فورًا بـ 200 OK ثم معالجة البيانات بصورة غير متزامنة في الخلفية. إعادة خطأ 5xx أو السماح بانتهاء مهلة الاتصال يُشغّل منطق إعادة المحاولة في VeloCMS (ما يصل إلى 4 محاولات مع تراجع أسي). أما إعادة خطأ 4xx (كـ 400 Bad Request) فيُصنّف التسليم فاشلًا نهائيًا دون إعادة محاولة.

هل يمكنني اختبار عمليات تسليم webhook دون نشر منشور حقيقي؟

نعم. في Admin → Settings → Integrations → Webhooks، لكل نقطة نهاية مسجَّلة زر Send Test Event. بالنقر عليه، يُرسَل فورًا بيانات نموذجية لنوع الحدث المحدد إلى رابط نقطة النهاية، مع نفس رأس التوقيع المستخدم في حدث حقيقي. يتيح لك ذلك التحقق من فحص التوقيع في خادمك ومن معالجة الاستجابة دون الحاجة إلى إنشاء محتوى فعلي. بيانات الحدث التجريبي مُميَّزة بوضوح بعلامة 'test': true في JSON حتى يتمكن خادمك من تخطي المعالجة إذا لم يكن مستعدًا بعد للأحداث التجريبية.

معرّف التسليم في غلاف webhook (حقل 'id') ثابت عبر عمليات إعادة المحاولة — فالحدث ذاته يحمل دائمًا نفس معرّف التسليم. استخدم هذا لضمان الأثر الواحد في الخادم المستقبِل: احفظ معرّفات التسليم المُستلَمة وتجاهل المعالجة إذا كنت قد تعاملت مع هذا المعرّف من قبل. هذا يمنع التأثيرات الجانبية المكررة إذا أعاد VeloCMS تسليم حدث قد عالجه خادمك بالفعل.