خدمة الإشعارات

تتيح خدمة إرسال الإشعارات في AFP لمنصّات AFP الشفافة تلقّي إشعارات عند PlatformChildSite الموافقة، ما يشير إلى أنّ الموقع الإلكتروني متاح الآن في واجهة برمجة التطبيقات.

لتلقّي الإشعارات، عليك استخدام خادم يقبل requests POST ويحلّل الحمولة البرمجية بتنسيق JSON الموضّحة في المخطّط (راجِع مثال على الإعداد). بعد ذلك، عليك تقديم عنوان URL لنقطة النهاية إلى مدير الشركاء الاستراتيجيين لتفعيل الخدمة.

المخطط

يجب أن تلتزم حمولة الإشعار بالمخطّط التالي:

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "Notification",
  "type": "object",
  "properties": {
    "platformPublisherId": {
      "type": "string",
      "description": "The unique identifier for the platform publisher."
    },
    "publisherId": {
      "type": "string",
      "description": "The unique identifier for the publisher."
    },
    "platformChildSiteName": {
      "type": "string",
      "description": "The name of the PlatformChildSite the notification refers to (populated for SITE_APPROVAL)."
    },
    "notificationType": {
      "type": "string",
      "enum": ["SITE_APPROVAL"],
      "description": "Type of notification"
    },
  },
  "required": ["platformPublisherId", "publisherId", "notificationType"],
  "additionalProperties": false
}

يمكن إضافة المزيد من الحقول notificationTypes والحقول الأخرى لاحقًا.

أمثلة

سيظهر إشعار SITE_APPROVAL على النحو التالي:

{
  "platformPublisherId" : "pub-123",
  "publisherId" : "pub-456",
  "platformChildSiteName" : "accounts/pub-123/platforms/my-platform/childAccounts/pub-456/sites/child-domain.com",
  "notificationType": "SITE_APPROVAL"
}

مثال على الإعداد

في ما يلي مثال على خادم NodeJS يسجّل محتويات ملف إشعار:

// Import express
const express = require('express');

// Create an express application
const app = express();

// Middleware to parse JSON bodies
app.use(express.json());

// Define a route to receive POST requests
app.post('/notification', (req, res) => {
    console.log('Received platformPublisherId:', req.body.platformPublisherId)
    console.log('Received publisherId:', req.body.publisherId)
    console.log('Received platformChildSiteName:', req.body.platformChildSiteName)
    console.log('Received notification type', req.body.notificationType)

    // Send a response back to the client
    res.status(200).send('Notification received');
});

// Start the server
const PORT = process.env.PORT || 8080;
app.listen(PORT, () => {
  console.log(`Server running on port ${PORT}`);
});

مثال على عنوان URL لنقطة النهاية: https://yourdomain.com/your-endpoint

تأكَّد من أنّ نقطة النهاية تعمل عن طريق إرسال طلب POST باستخدام curl:

curl -X POST https://yourdomain.com/your-endpoint \
     -H "Content-Type: application/json" \
     -d '{"platformPublisherId" : "pub-123", \
          "publisherId" : "pub-456", \
          "platformChildSiteName" : "accounts/pub-123/platforms/my-platform/childAccounts/pub-456/sites/child-domain.com", \
          "notificationType": "SITE_APPROVAL"}'

ضبط ملف robots.txt

تأكَّد من أنّه تم السماح لخدمة الإشعارات بالوصول إلى نقطة النهاية. تلتزم خدمة الإشعارات بالتوجيهات الموضّحة فيملف robots.txt لجذر نطاقك، في حال توفّره:

User-agent: GoogleOther
Disallow: <ensure your endpoint is not disallowed>