الـ Webhooks
تتيح لك الـ webhooks استلام إشعارات HTTP فورية عند وقوع أحداث في مستأجر FeedbackPulse الخاص بك.
الإعداد
عبر لوحة التحكم
- انتقل إلى Settings > Integrations
- أدخل Webhook URL
- حدد الأحداث التي تريد الاشتراك فيها
- اختيارياً عيّن سراً للتحقق من توقيع HMAC
- احفظ
عبر API
PUT /api/v2/webhooks/config
{
"url": "https://your-app.com/webhooks/feedbackpulse",
"events": ["submission.created", "submission.status_changed"],
"secret": "your_shared_secret"
}
حمولة Webhook
عند وقوع حدث، يرسل FeedbackPulse طلب POST إلى رابطك:
{
"event": "submission.created",
"timestamp": "2024-03-15T10:30:00Z",
"data": {
"id": 42,
"campaign_id": 1,
"star_rating": 5,
"text_feedback": "Love this product!",
"customer_name": "Jane Doe",
"status": "pending"
}
}
الترويسات
Content-Type: application/json
X-FeedbackPulse-Signature: sha256=abc123...
X-FeedbackPulse-Event: submission.created
التحقق من التوقيع
إذا عيّنت سراً للـ webhook، تحقق من التوقيع:
$payload = file_get_contents('php://input');
$signature = $_SERVER['HTTP_X_FEEDBACKPULSE_SIGNATURE'];
$expected = 'sha256=' . hash_hmac('sha256', $payload, $secret);
if (!hash_equals($expected, $signature)) {
http_response_code(403);
exit('Invalid signature');
}
نقاط النهاية المدعومة
يكتشف FeedbackPulse تلقائياً ويُنسّق الحمولات لـ:
| الخدمة | نمط URL | الصيغة |
|---|---|---|
| Slack | hooks.slack.com/* | صيغة Slack Block Kit |
| Discord | discord.com/api/webhooks/* | صيغة Discord embed |
| مخصص | أي رابط HTTPS | حمولة JSON خام |
حماية SSRF
يُتحقق من صحة روابط webhook للحماية من طلبات الجانب الخادم المزيفة:
- يُحجب
localhostو127.0.0.1و0.0.0.0 - ت ُحجب نطاقات IP الخاصة (10.x، 172.16-31.x، 192.168.x)
- يُسمح فقط بروابط HTTPS العامة
سجلات Webhook
عرض سجل التسليم:
عبر لوحة التحكم
Settings > Integrations > Webhook Logs
تتوفر أيضاً صفحة Webhook Logs مخصصة على /webhooks/logs، توفر سجل تسليم كاملاً مع تفاصيل الاستجابة وخيارات التصفية. يمكنك التصفية حسب نوع الحدث وكود الحالة والنطاق الزمني، وفحص حمولة الطلب الكامل وجسم الاستجابة لكل محاولة تسليم.
عارض سجل Webhook للمشرف
يمتلك المشرفون الرئيسيون إمكانية الوصول إلى عارض سجل webhook على مستوى المنصة على /admin/webhook-logs. يوفر هذا رؤية لتسليمات webhook عبر جميع المستأجرين، مفيد لتشخيص مشاكل التكامل ومراقبة صحة المنصة.
عبر API
GET /api/v2/webhooks/logs
يعرض كل إدخال في السجل:
- نوع الحدث
- الرابط
- كود الاستجابة
- الحمولة المُرسَلة
- جسم الاستجابة
- الطابع الزمني