HTTP Webhook
قناة webhook هي نقطة الدخول العامة لربط أي نظام قادر على إجراء HTTP POST. وهي الخيار الذي يجب اختياره عندما لا توجد قناة مخصّصة لمصدرك.
متى تستخدمها
- ربط أداة داخلية (ERP، تطبيق أعمال، بوابة دفع).
- استقبال أحداث من منصّة طرف ثالث تُتيح webhooks (Stripe، Shopify، SendGrid…).
- تشغيل pipeline من مهمّة cron خارجية أو من CI pipeline.
التهيئة
- الإدارة ← Webhooks ← مدخل جديد.
- اختر الـpipeline المستهدَف.
- يولّد betool عنوان URL عامًّا (
https://platform.betool.ai/entries/webhook/<id>) وسرّ HMAC.
يُستخدَم السرّ لتوقيع كل حمولة: يجب على نظامك حساب HMAC-SHA256(secret, body) وتمريره في ترويسة X-Betool-Signature. وتُرفَض الطلبات التي بلا توقيع صالح.
تنسيق الحمولة
أنت ترسل أي JSON تريده. ولا يقيّد betool البنية. وتُعرَض الحمولة على الـpipeline ضمن webhook.payload (مع مفاتيحها الفرعية).
مثال:
curl -X POST https://platform.betool.ai/entries/webhook/abc123 \
-H "Content-Type: application/json" \
-H "X-Betool-Signature: $SIGNATURE" \
-d '{
"type": "order.created",
"order_id": "ord_42",
"amount_cents": 9900,
"customer_email": "client@exemple.com"
}'
يمكن للـpipeline عندئذٍ ربط وكيل يقرأ webhook.payload.customer_email وwebhook.payload.amount_cents مباشرةً.
الاستجابة
افتراضيًا، تُعيد استجابة HTTP الرمز 202 Accepted فورًا (يُطلَق الـpipeline في الخلفية). وإذا احتجت إلى انتظار نتيجة الـpipeline، فهيّئ الـwebhook في وضع متزامن — يُحجَب الطلب حتى يكتمل الـpipeline (بمهلة 30 ثانية).
الأمان
- وقّع طلباتك دائمًا (HMAC).
- يمكن إعادة توليد السرّ من لوحة الإدارة (التدوير).
- تُخزَّن الحمولات كنصّ صِرف في سجلّ التنفيذ — لا ترسل بيانات يجب تشفيرها أثناء النقل فقط.