# إعداد High-speed delivery

## نظرة عامة

في Pushwoosh، يتم تعريف شرائح الجمهور باستخدام **Segments**.

بالنسبة لحملات push القياسية، يتم تجميع Segment **بعد** إرسال طلب [`/createMessage`](/ar/developer/api-reference/messages-api/#createmessage). هذا يعني أنه قد يكون هناك تأخير قصير قبل خروج الرسالة، خاصة إذا كان Segment معقدًا.

مع High-speed delivery، يتم تجميع Segments مسبقًا كل 10 دقائق. هذا يبقيها محدثة وجاهزة للاستخدام، بحيث يمكن إرسال الرسائل فورًا—دون انتظار تجميع Segment.

تعد High-speed delivery مفيدة بشكل خاص عندما يكون التوقيت حاسمًا. على سبيل المثال، يمكن للمنظمات الرياضية مثل UEFA و FIBA استخدامها لتقديم تحديثات في الوقت الفعلي حيث تهم كل ثانية.

يشرح هذا الدليل كيفية إعداد High-speed delivery باستخدام تطبيق رياضي كمثال. ستتعلم كيفية إنشاء شرائح جمهور (Audience segments) لإعلام المستخدمين بالمباريات القادمة والأحداث المباشرة.

## لماذا High-speed delivery

المتطلبات الأساسية لاستخدام High-speed delivery من قبل المنظمات الرياضية هي كما يلي:

*   تتم جدولة جميع المباريات مسبقًا، لذا فأنت تعرف متى تنشئ Segments الخاصة بها ويمكنك تجميع شرائح الجمهور مسبقًا.
*   كل مباراة مرتبطة بـ ID فريد. على سبيل المثال، معرف المباراة لنهائي دوري أبطال أوروبا هو 0123.
*   كل فريق مرتبط بـ ID فريد. على سبيل المثال، معرف Juventus هو 111، ومعرف Real Madrid هو 222، وما إلى ذلك.
*   هناك مجموعة من الأحداث المباشرة التي ترغب في إعلام المستخدمين بها (الأهداف، التشكيلات، ركلة البداية، وما إلى ذلك).

## الإعداد

<Aside type="caution" icon="setting" title="مطلوب مساعدة المطور">
****
يتطلب إعداد High-speed delivery مساعدة المطور. يرجى مشاركة هذا الدليل معهم للتنفيذ الصحيح.
</Aside>

يجب إنشاء جميع Segments لـ High-speed delivery مسبقًا—بشكل مثالي قبل بدء المباراة في حالة الاستخدام المذكورة. تطبق Pushwoosh شروط Segment على قاعدة مستخدمي التطبيق و**تقوم بتجميع Segments مسبقًا كل 10 دقائق** (هذه الفترة قابلة للتعديل).

عندما ترسل طلب API [`/createMessage`](/ar/developer/api-reference/messages-api/#createmessage) مع محتوى push واسم Segment، يكون لدى Pushwoosh بالفعل قائمة مجمعة مسبقًا من المستلمين، مما يسمح بإرسال إشعار push فورًا.

<Aside type="caution" title="مهم">
****
يستهلك تجميع Segment الموارد، وتعتمد سرعته على:
- تعقيد شروط Segment (عدد Tags المستخدمة، التباين العالي لقيم Tag)؛
- عدد Segments الفريدة المجمعة مسبقًا في وقت واحد؛
- عدد المستخدمين المشتركين في التطبيق.

لذلك، **يجب إنشاء جميع Segments للمباراة عبر API قبل بدء اللعبة وحذفها بعد ذلك** للحفاظ على عدد Segments النشطة المجمعة مسبقًا عند الحد الأدنى وتوفير موارد الحوسبة.
</Aside>

### إنشاء Tags

أولاً، قم بإنشاء مجموعة من Tags لتطبيقها، وقم بتعيين قيم Tag لأجهزة المستخدمين.
[أنشئ Tags](/ar/product/audience-data-and-segmentation/user-data-tags/tags/) من النوع LIST المقابلة لأحداث المباراة المباشرة مثل **kickoff (ركلة البداية)، goal (هدف)، red card (بطاقة حمراء)،** وما إلى ذلك.

على سبيل المثال:
**MATCH-KICKOFF, MATCH-GOAL, MATCH-RED\_CARD**
![إنشاء Tags](/push-notifications-high-speed-delivery-2.webp)

قم بإنشاء نفس المجموعة من Tags التي تصف أحداث المباراة المباشرة للفرق.
على سبيل المثال:
**TEAM-KICKOFF, TEAM-GOAL, TEAM-RED\_CARD**

<Aside type="tip">
لإنشاء Tags عبر API، استدعِ [`/addTag`](/ar/developer/api-reference/tags/#addtag).
</Aside>

من خلال الاشتراك في هذه Tags، يمكن لمستخدمي التطبيق اختيار الإشعارات التي يرغبون في تلقيها:

- إشعارات حول المباراة المحددة (مثل مباراة Juventus - Real Madrid)؛
- إشعارات حول مباريات الفريق المفضل (مثل مباريات Juventus فقط)؛
- إشعارات حول الأحداث التي تقع أثناء المباراة (مثل الأهداف في مباراة Juventus - Real Madrid فقط)؛
- إشعارات حول أحداث محددة من الفريق المفضل (مثل الأهداف والتشكيلات لمباريات Juventus).

### تعيين Tags

الآن يمكنك ملء قيم Tag المحددة مسبقًا عبر طلب API [`setTags`](/ar/developer/api-reference/device-api/#settags)، والاشتراك المستخدمين في فئات محددة من إشعارات push.

على سبيل المثال:
عندما يشترك مستخدم لتلقي تحديثات ركلة البداية والأهداف لنهائي دوري أبطال أوروبا، استدعِ [`/setTags`](/ar/developer/api-reference/device-api/#settags) مع تضمين معرف المباراة:

```javascript
{
  "request": {
    "application": "app_code",
    "hwid": "device_hardware_id",
    "tags": {
      "MATCH_KICKOFF": "0123", // معرف المباراة
      "MATCH_GOAL": "0123"     // معرف المباراة
    }
  }
}
```

سيتلقى المستخدم إشعارات حول ركلة البداية والأهداف المسجلة في نهائي دوري أبطال أوروبا.
عندما يشترك مستخدم لتلقي تحديثات الأهداف والبطاقات الحمراء لمباريات Real Madrid، استدعِ [`/setTags`](/ar/developer/api-reference/device-api/#settags) كما يلي:

```javascript
{
  "request": {
    "application": "app_code",
    "hwid": "device_hardware_id",
    "tags": {
      "TEAM_KICKOFF": "222", // معرف الفريق
      "TEAM_GOAL": "222"     // معرف الفريق
    }
  }
}
```

سيتلقى هذا المستخدم إشعارات حول ركلات البداية والأهداف كلما لعب Real Madrid.

### إنشاء Segments

الآن يمكنك إنشاء Segments لأحداث المباراة بناءً على Tags وقيمها (معرفات المباريات ومعرفات الفرق). يجب إنشاء Segments عبر طلب API [`/createFilter`](/ar/developer/api-reference/segmentation-filters-api/#createfilter) قبل 30 دقيقة من بدء المباراة.

لإعلام المستخدمين بالأهداف المسجلة في نهائي دوري أبطال أوروبا من المثال المذكور أعلاه، استدعِ [`/createFilter`](/ar/developer/api-reference/segmentation-filters-api/#createfilter) بالمعلمات التالية:
**اسم Segment**: 0123_GOAL
**شروط Segment**: `#TEAM-GOAL(111, 222) OR #MATCH-GOAL(0123)`

```javascript
{
  "request": {
    "auth": "auth_token",
    "name": "0123_GOAL",
    "conditions": [
      ["TEAM-GOAL", "IN", ["111", "222"]],
      ["MATCH-GOAL", "IN", ["0123"]]
    ],
    "operator": "OR", // اختياري. قيم المشغل: 'AND', 'OR'
    "application" : "AAAAA-00000"
  }
}
```

سيقوم هذا الطلب بتجميع Segment للمستخدمين المشتركين في تحديثات الأهداف لنهائي دوري أبطال أوروبا (match ID=0123) أو المستخدمين الذين يتابعون إما Juventus أو Real Madrid (team ID=111,222).

لإعداد High-Speed Delivery في Pushwoosh Control Panel الخاص بك، [أنشئ Segment جديدًا](/ar/product/audience-data-and-segmentation/segmentation/create-segments) بقيم Tag المقابلة واربطه بالتطبيق الذي سترسل إليه pushes. يتم تجميع Segments الخاصة بالتطبيق مسبقًا كل 10 دقائق للحفاظ على شرائح الجمهور محدثة دائمًا.

![إنشاء Segment جديد](/push-notifications-high-speed-delivery-1.webp)

عندما يقع حدث المباراة (تسجيل هدف، ركلة بداية المباراة، بطاقة حمراء، وما إلى ذلك)، استدعِ [`/createMessage`](/ar/developer/api-reference/messages-api/#createmessage) مع محتوى إشعار push واسم Segment المتضمن:

```javascript
{
  "request": {
    "application": "AAAAA_00000",
    "auth": "auth_token",
    "notifications": [
      {
        "content": "12’ Juventus goal! Juventus 1 – 0 Real Madrid",
        "filter": "0123_GOAL",
        "send_date": "now"
      }
    ]
  }
}
```

بمجرد تلقينا استدعاء [`/createMessage`](/ar/developer/api-reference/messages-api/#createmessage)، يكون لدينا بالفعل قائمة مجمعة مسبقًا من الأجهزة التي تطابق معايير Segment، ونقوم بإرسال الإشعار فورًا نحو بوابات APNs و FCM.

<Aside type="caution" title="مهم">
*****
لا تدعم Segments الخاصة بـ High-Speed Delivery استخدام المشغل **daysago**. إذا حاولت إنشاء Segment باستخدام هذا المشغل، فستتلقى رسالة خطأ.

يوجد هذا القيد لأنه لكي تعمل بشكل صحيح، تعتمد Segments الخاصة بـ High-Speed Delivery على التغييرات التي حدثت في التطبيق على أجهزة المستخدم (مثل الاشتراك في إشعارات push أو تعيين قيمة Tag محددة). لا يتضمن المشغل **daysago** مثل هذه التغييرات، لذا لن يعمل Segment كما هو مقصود.
لاحظ أيضًا أنه لا يمكن استخدام Segments الخاصة بـ High-Speed Delivery مع الرسائل المجدولة.
</Aside>

## حذف Segments

بعد انتهاء المباراة، يجب حذف جميع Segments المقابلة حتى لا يتم إنفاق موارد الحوسبة على إعادة تجميع Segments التي لم تعد ذات صلة، خاصة على حساب Segments للمباريات المجدولة تالياً. احذف Segments عبر طلب API [`/deleteFilter`](/ar/developer/api-reference/segmentation-filters-api/#deletefilter)، على سبيل المثال:

```javascript
{
  "request": {
    "auth": "auth_token",
    "name": "0123_GOAL"
  }
}
```

لتجنب الحذف اليدوي لـ Segments، قم بتعيين تاريخ انتهاء صلاحية Segment عبر طلب [`/createFilter`](/ar/developer/api-reference/segmentation-filters-api/#createfilter) بحيث يتم حذف Segment تلقائيًا في التاريخ المحدد:

```javascript
{
  "request": {
    "auth": "auth_token",
    "name": "0123_GOAL",
    "conditions": [
      ["TEAM-GOAL", "IN", ["111", "222"]],
      ["MATCH-GOAL", "IN", ["0123"]]
    ],
    "operator": "OR",  // اختياري. القيم: 'AND', 'OR'
    "application": "AAAAA-00000",
    "expiration_date": "YYYY-MM-DD"  // اختياري. انتهاء صلاحية Segment (Filter)
  }
}
```