Page DeltasPage Deltas

قنوات الإشعارات

القناة هي وجهة للتنبيهات. أضف بقدر ما تحتاج، ثم اربطها بالمراقبين الفرديين (أو بجميع المراقبين افتراضياً).

القنوات مقابل تجاوزات المراقب

يتم تحديد القنوات على مستوى المؤسسة. يمكن وضع علامة افتراضي على كل قناة — مما يعني أن المراقبين الجدد يرسلون إليها تلقائياً. في أي مراقب معين، يمكنك تجاوز الإعداد الافتراضي واختيار مجموعة فرعية مخصصة.

Slack

  1. في Slack، اذهب إلى التطبيقات ← Incoming Webhooks ← إضافة إلى Slack وحدد القناة التي يجب أن تتلقى التنبيهات.
  2. انسخ رابط الـ webhook الذي يعطيك إياه Slack.
  3. في Page Deltas، افتح صفحة القنوات، أضف قناة، اختر Slack، الصق الرابط واحفظ.
  4. انقر على إرسال اختبار لتأكيد وصول الرسالة إلى قناة Slack الصحيحة.

Discord

في سيرفر Discord الخاص بك، افتح إعدادات السيرفر ← التكامل ← Webhooks ← Webhook جديد. انسخ الرابط والصقه في قناة Discord جديدة في Page Deltas.

Microsoft Teams

في Teams، انقر بزر الماوس الأيمن على القناة المستهدفة، الموصلات ← Incoming Webhook ← تكوين. سمّها Page Deltas، احفظها، وانسخ الرابط إلى Page Deltas.

البريد الإلكتروني

أضف عنوان المستلم. نرسل بريداً إلكترونياً للتحقق إلى هذا العنوان أولاً — تظل القناة في حالة في انتظار التحقق ولن تتلقى تنبيهات حتى يؤكد المستلم. يتم إرسال البريد الصادر من نطاق تم التحقق منه ونتحكم فيه. لتوزيع الفريق، استخدم اسماً مستعاراً للمجموعة بدلاً من إضافة عناوين فردية واحداً تلو الآخر.

Webhook عام

استخدم هذا عندما تريد تشغيل نظامك الخاص من التنبيهات (Linear، Jira، Lambda، Slack-but-via-bot، إلخ).

الحمولة (Payload)

الجسم عبارة عن كائن JSON مسطح. قد تُضاف حقول جديدة بمرور الوقت، لذا تجاهل المفاتيح غير المعروفة بدلاً من رفضها.

POST <your URL>
Content-Type: application/json
X-Signature: sha256=<hex>

{
  "event": "change.detected",
  "monitor_id": "...",
  "monitor_url": "https://example.com/pricing",
  "monitor_name": "Competitor pricing page",
  "change_id": "...",
  "detected_at": "2026-06-01T12:00:00Z",
  "summary": "Pro plan increased from $29 to $39/month.",
  "before_screenshot_url": "https://.../before.png",
  "after_screenshot_url": "https://.../after.png",
  "dashboard_url": "https://app.pagedeltas.com/monitors/..."
}

التحقق من التوقيع (HMAC)

يحمل كل طلب رأس X-Signature بالصيغة sha256=&lt;hex&gt;، حيث تكون القيمة هي HMAC-SHA256 لـ جسم الطلب الخام (raw request body) باستخدام سر قناتك — يُعرض مرة واحدة عند الإنشاء. لا يوجد مكون طابع زمني (timestamp).

# Node.js example
import crypto from "node:crypto";

function verify(req, rawBody, secret) {
  const header = req.headers["x-signature"]; // "sha256=<hex>"
  const expected =
    "sha256=" +
    crypto.createHmac("sha256", secret).update(rawBody).digest("hex");
  return crypto.timingSafeEqual(
    Buffer.from(header),
    Buffer.from(expected),
  );
}

التسليم والفشل

السلوكالتفاصيل
المحاولاتيتم تسليم كل تنبيه بمحاولة واحدة لكل قناة. لا توجد حالياً عمليات إعادة محاولة تلقائية — اجعل جهاز الاستقبال لديك يستجيب بسرعة ويقبل التكرارات بشكل دفاعي.
الفشلاستجابة غير 2xx أو خطأ في الشبكة يمثل فشل التسليم. لا يتم إيقاف المراقب نفسه مؤقتاً بسبب فشل التسليم.
المراجعةتُسجل كل محاولة (نجاح أو فشل، مع حالة HTTP) من جانب السيرفر في سجل محاولات التسليم.

أفضل الممارسات

  • استخدم قناة واحدة لكل قناة في مساحة عمل Slack — لا تعيد استخدام webhook لعدة غرف Slack.
  • للمراقبين ذوي الحجم الكبير، أرسل إلى قناة Slack مخصصة بدلاً من #general المزدحمة.
  • للتنبيهات بالغة الأهمية، اربط قناتين من نوعين مختلفين (مثل Slack + البريد الإلكتروني) حتى لا يخفي انقطاع Slack تغييراً مهماً.
قنوات الإشعارات · الوثائق · Page Deltas