لغة التجزئة
تقدم Pushwoosh محرك تجزئة قويًا لبناء شرائح (Segments) دقيقة بناءً على قيم العلامات (Tag). لغة التجزئة (Segmentation Language) هي طريقة محددة لكتابة ودمج معايير التجزئة لوصف مجموعة معينة من المستخدمين الذين يطابقون تلك المعايير ومعاملتهم كشريحة جمهور واحدة.
يصف هذا المقال المفاهيم الأساسية وبناء الجملة للغة التجزئة ويقدم أمثلة شاملة لبناء معايير التجزئة لحالات مختلفة.
الاستخدام المباشر بدون شريحة محفوظة
Anchor link toلا يجب أن ينتمي تعبير المرشح (filter expression) إلى شريحة (Segment) محفوظة. يمكنك تمريره مباشرة في حقل expression في NotifySegment لاستهداف إرسال واحد — لا يتم إنشاء شريحة، ولا يتم تخزين التعبير في الحساب.
curl -X POST https://api.pushwoosh.com/messaging/v2/notify \ -H "Authorization: Token YOUR_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "segment": { "application": "XXXXX-XXXXX", "platforms": ["IOS", "ANDROID"], "expression": "T(\"City\", eq, \"Tokyo\") * T(\"Age\", gte, 18)", "payload": { "content": { "localized_content": { "en": { "ios": { "body": "Hello, Tokyo!" } } } } }, "schedule": { "at": "2026-05-01T12:00:00Z" } } }'الأساسيات
Anchor link toكل جهاز في قاعدة المستخدمين لديك له سمات محددة مرتبطة به عبر قيم العلامات (Tag values).
على سبيل المثال، لنفترض أن مستخدمة تدعى جين تعيش في طوكيو، وعمرها 28 عامًا. سيكون لدى هذه المستخدمة العلامات (Tags) التالية لجهازها:
- الاسم: جين
- المدينة: طوكيو
- العمر: 28
لاستهداف جين، ستحتاج إلى وصف الشريحة على النحو التالي:
T("Name", eq, "Jane") * T("Age", eq, 28) * T("City", eq, "Tokyo")
هذا المزيج من الشروط هو تعبير مرشح (filter expression) يستخدم في لغة التجزئة لوصف مجموعات من المستخدمين المعروفة باسم شرائح الجمهور (audience Segments).
تعبيرات المرشح
Anchor link toتعبير المرشح هو سلسلة نصية تحتوي على شرط أو مجموعة من الشروط التي تصف الشريحة التي تحتاجها.
الشروط
Anchor link toيصف كل شرط شريحة من الأجهزة التي تطابق المعايير المحددة في ذلك الشرط.
على سبيل المثال، يبني الشرط التالي شريحة من المستخدمين الذين يعيشون في طوكيو:
T("City", e, "Tokyo")
حيث
- T هي علامة (Tag) (نوع الشرط)؛
- eq هو عامل (operator) للتطبيق؛
- “Tokyo” هي قيمة علامة (Tag value) مرتبطة بأجهزة المستخدمين.
أنواع الشروط
Anchor link toأنواع الشروط التالية متاحة للتجزئة:
- A (Application) – يصف شريحة من الأجهزة التي تم تثبيت تطبيق معين عليها. الأسماء المستعارة: App، Application؛
- T (Tag) – يصف شريحة من الأجهزة بقيم العلامات (Tag) المحددة؛
- AT (App-scoped tag) – يبحث عن قيمة علامة داخل تطبيق معين؛ رمز التطبيق مطلوب كوسيط أول. الاسم المستعار: Tag؛
- Event – يصف شريحة من الأجهزة التي أطلقت حدثًا معينًا في Pushwoosh؛
- Geo – يصف شريحة من الأجهزة ضمن نصف قطر جغرافي معين؛
- BTTS – يصف شريحة من الأجهزة بناءً على أفضل وقت لإرسال الرسائل إليها؛
- Updated – يصف شريحة من الأجهزة بناءً على الطابع الزمني لآخر تحديث لها؛
- Segment – يشير إلى مرشح/شريحة أخرى برمزها؛
العمليات مع الشروط
Anchor link toلبناء شرائح متطورة، يمكن تطبيق العمليات التالية على الشروط ضمن تعبير المرشح:
الاتحاد (+)
Anchor link toيجمع الشرائح، أي يبني شريحة جديدة من المستخدمين الذين يطابقون شرطًا واحدًا على الأقل من الشروط المحددة.

على سبيل المثال، لاستهداف المستخدمين الذين يعيشون في طوكيو أو في أوساكا، ستحتاج إلى وصف الشريحة بالشروط التالية:
T("City", eq, "Tokyo") + T("City", eq, "Osaka")
التقاطع (*)
Anchor link toينشئ شريحة من المستخدمين الذين ينتمون إلى كلتا الشريحتين الموصوفتين بالشروط. وبالتالي، سيتم تضمين فقط أولئك المستخدمين الذين يمتثلون لكل شرط تحدده.

يصف التعبير التالي شريحة من المستخدمين الذين يعيشون في طوكيو وقد حددوا أسماءهم:
T("City", eq, "Tokyo") * T("Name", any)
الفرق (\)
Anchor link toيبني شريحة من المستخدمين الذين ينتمون إلى إحدى الشرائح الموصوفة ولا ينتمون إلى الأخرى.

سيتم وصف المستخدمين الذين يعيشون في طوكيو ولكن لم يعطوك أسماءهم على النحو التالي:
T("City", eq, "Tokyo") \ T("Name", any)
الأقواس
Anchor link toتحدد ترتيب العمليات التي سيتم إجراؤها مع الشروط في تعبير المرشح الخاص بك.
على سبيل المثال، سيقوم تعبير المرشح التالي أولاً بالحصول على شريحة من مشتركي 12345-67890 الذين يبلغ عمرهم 18 عامًا ثم يطرح جميع الرجال من تلك الشريحة:
( A("12345-67890") * T("Age", eq, 18) ) \ T("Gender", eq, "Male")
عوامل شروط العلامات
Anchor link toلكل نوع من أنواع العلامات (Tag)، يتم تطبيق عواملها الخاصة.
عوامل علامات الأعداد الصحيحة (Integer Tags)
Anchor link to- eq - يساوي قيمة محددة
- noteq - لا يساوي قيمة محددة
- lte - أقل من أو يساوي قيمة محددة
- gte - أكبر من أو يساوي قيمة محددة
- in - أي من القيم المحددة
- notin - لا يساوي أيًا من القيم المحددة
- between - في نطاق محدد
- any - الأجهزة التي لها أي قيم محددة للعلامة
- notset - الأجهزة التي ليس لها قيمة محددة للعلامة
عوامل علامات السلاسل النصية (String Tags)
Anchor link to- eq - يساوي قيمة محددة
- noteq - لا يساوي قيمة محددة
- startswith - يبدأ ببادئة محددة
- endswith - ينتهي بلاحقة محددة
- contains - يحتوي على سلسلة نصية فرعية محددة
- in - يساوي أيًا من القيم المحددة
- notin - لا يساوي أيًا من القيم المحددة
- any - الأجهزة التي لها أي قيم محددة للعلامة
- notset - الأجهزة التي ليس لها قيمة محددة للعلامة
عوامل علامات القوائم (List Tags)
Anchor link to- in - الأجهزة التي لها أي من قيم العلامات المحددة
- notin - لا توجد أي من قيم العلامات المحددة مرتبطة بالجهاز
- any - الأجهزة التي لها أي قيم محددة للعلامة
- notset - الأجهزة التي ليس لها قيمة محددة للعلامة
عوامل علامات التاريخ (Date Tags)
Anchor link to- eq - يساوي التاريخ المحدد
- noteq - لا يساوي التاريخ المحدد
- lte - قبل أو في التاريخ المحدد
- gte - بعد أو في التاريخ المحدد
- in - يساوي أيًا من التواريخ المحددة
- notin - لا يساوي أيًا من التواريخ المحددة
- between - في نطاق محدد
- any - الأجهزة التي لها أي قيم محددة للعلامة
- notset - الأجهزة التي ليس لها قيمة محددة للعلامة
- match - يطابق شهرًا معينًا من السنة ويومًا معينًا من الشهر.
- daysago eq - يساوي عددًا محددًا من الأيام قبل اليوم الحالي
- daysago noteq - لا يساوي عددًا محددًا من الأيام قبل اليوم الحالي
- daysago lte - أقل من أو يساوي عددًا محددًا من الأيام قبل اليوم الحالي
- daysago gte - أكبر من أو يساوي عددًا محددًا من الأيام قبل اليوم الحالي
- daysago between - بين أعداد الأيام المحددة
- minutesago lte - أقل من أو يساوي عددًا محددًا من الدقائق قبل اللحظة الحالية
- minutesago gte - أكبر من أو يساوي عددًا محددًا من الدقائق قبل اللحظة الحالية
- daysahead - في غضون N إلى M يومًا من اليوم الحالي (UTC)، شاملة لكلا الطرفين
عوامل العلامات المنطقية (Boolean Tags)
Anchor link to- eq - يساوي قيمة محددة
- noteq - لا يساوي قيمة محددة
- any - الأجهزة التي لها أي قيم محددة للعلامة
- notset - الأجهزة التي ليس لها قيمة محددة للعلامة
عوامل علامات الأسعار (Price Tags)
Anchor link to- eq - يساوي قيمة محددة
- noteq - لا يساوي قيمة محددة
- lte - أقل من أو يساوي قيمة محددة
- gte - أكبر من أو يساوي قيمة محددة
- in - يساوي أيًا من القيم المحددة
- notin - لا يساوي أيًا من القيم المحددة
- between - في نطاق محدد
- any - الأجهزة التي لها أي قيم محددة للعلامة
- notset - الأجهزة التي ليس لها قيمة محددة للعلامة
عوامل علامات الإصدار (Version Tags)
Anchor link to- eq - يساوي قيمة محددة
- noteq - لا يساوي قيمة محددة
- lte - أقل من أو يساوي قيمة محددة
- gte - أكبر من أو يساوي قيمة محددة
- in - يساوي أيًا من القيم المحددة
- notin - لا يساوي أيًا من القيم المحددة
- between - في نطاق محدد
- any - الأجهزة التي لها أي قيم محددة للعلامة
- notset - الأجهزة التي ليس لها قيمة محددة للعلامة
عوامل شروط الأحداث
Anchor link toعدد الأحداث
Anchor link to- count gte - الأجهزة التي أطلقت الحدث أكثر من أو يساوي n مرة
- count lte - الأجهزة التي أطلقت الحدث أقل من أو يساوي n مرة
- count eq - الأجهزة التي أطلقت الحدث n مرة بالضبط
- count noteq - الأجهزة التي أطلقت الحدث أي عدد من المرات ولكن لا يساوي n
تاريخ الحدث
Anchor link to- date gte - الأجهزة التي أطلقت الحدث بعد أو في التاريخ المحدد بالضبط
- date lte - الأجهزة التي أطلقت الحدث قبل أو في التاريخ المحدد بالضبط
- date eq - الأجهزة التي أطلقت الحدث في التاريخ المحدد بالضبط
- date noteq - الأجهزة التي أطلقت الحدث في أي وقت ولكن ليس في التاريخ المحدد
- date in - الأجهزة التي أطلقت الحدث في أي من التواريخ المحددة
- date notin - الأجهزة التي أطلقت الحدث في أي وقت ولكن ليس في أي من التواريخ المحددة
- date between - الأجهزة التي أطلقت الحدث خلال فترة محددة
- date daysago eq - تاريخ إطلاق الحدث يساوي عددًا محددًا من الأيام قبل اليوم الحالي
- date daysago noteq - تاريخ إطلاق الحدث لا يساوي عددًا محددًا من الأيام قبل اليوم الحالي
- date daysago lte - تاريخ إطلاق الحدث أقل من أو يساوي عددًا محددًا من الأيام قبل اليوم الحالي
- date daysago gte - تاريخ إطلاق الحدث أكبر من أو يساوي عددًا محددًا من الأيام قبل اليوم الحالي
- date daysago between - تاريخ إطلاق الحدث بين أعداد الأيام المحددة
- date daysahead - تاريخ إطلاق الحدث في عدد محدد من الأيام من اليوم الحالي (الفترة شاملة لكلا الطرفين، انظر عوامل علامات التاريخ أعلاه للمعنى الكامل)
- date minutesago lte - تاريخ إطلاق الحدث أقل من أو يساوي عددًا محددًا من الدقائق قبل اللحظة الحالية
- date minutesago gte - تاريخ إطلاق الحدث أكبر من أو يساوي عددًا محددًا من الدقائق قبل اللحظة الحالية
منصات الأحداث
Anchor link toترشيح الأحداث حسب المنصة التي تم إطلاقها فيها.
- platforms - قائمة بالمنصات (مثل [“ios”, “android”])
سمات الأحداث
Anchor link toيمكن لشروط الأحداث الترشيح بناءً على قيم سمات الحدث. تدعم السمات أنواع بيانات مختلفة مع عواملها المقابلة.
سمات أحداث الأعداد الصحيحة
Anchor link to- attribute “name” eq - السمة تساوي قيمة محددة
- attribute “name” noteq - السمة لا تساوي قيمة محددة
- attribute “name” gte - السمة أكبر من أو تساوي قيمة محددة
- attribute “name” lte - السمة أقل من أو تساوي قيمة محددة
- attribute “name” between - السمة في نطاق محدد
- attribute “name” in - السمة تساوي أيًا من القيم المحددة
- attribute “name” notin - السمة لا تساوي أيًا من القيم المحددة
- attribute “name” any - أي قيمة محددة للسمة
- attribute “name” notset - لا توجد قيمة محددة للسمة
سمات أحداث السلاسل النصية
Anchor link to- attribute “name” eq - السمة تساوي قيمة محددة
- attribute “name” noteq - السمة لا تساوي قيمة محددة
- attribute “name” startswith - السمة تبدأ ببادئة محددة
- attribute “name” endswith - السمة تنتهي بلاحقة محددة
- attribute “name” contains - السمة تحتوي على سلسلة نصية فرعية محددة
- attribute “name” in - السمة تساوي أيًا من القيم المحددة
- attribute “name” notin - السمة لا تساوي أيًا من القيم المحددة
- attribute “name” any - أي قيمة محددة للسمة
- attribute “name” notset - لا توجد قيمة محددة للسمة
سمات الأحداث المنطقية
Anchor link to- attribute “name” eq - السمة تساوي true أو false
- attribute “name” noteq - السمة لا تساوي true أو false
سمات أحداث التاريخ
Anchor link to- attribute “name” eq - السمة تساوي تاريخًا محددًا
- attribute “name” noteq - السمة لا تساوي تاريخًا محددًا
- attribute “name” gte - السمة بعد أو في تاريخ محدد
- attribute “name” lte - السمة قبل أو في تاريخ محدد
- attribute “name” between - السمة ضمن نطاق تاريخ محدد
- attribute “name” in - السمة تساوي أيًا من التواريخ المحددة
- attribute “name” notin - السمة لا تساوي أيًا من التواريخ المحددة
- attribute “name” daysago eq/noteq/gte/lte/between - السمة بالنسبة للأيام الماضية
- attribute “name” daysahead from to - السمة في فترة محددة من الأيام من اليوم الحالي (الفترة شاملة لكلا الطرفين، انظر عوامل علامات التاريخ أعلاه للمعنى الكامل)
- attribute “name” minutesago gte/lte - السمة بالنسبة للدقائق الماضية
- attribute “name” any - أي قيمة محددة للسمة
- attribute “name” notset - لا توجد قيمة محددة للسمة
سمات أحداث الأسعار
Anchor link to- attribute “name” eq - السمة تساوي قيمة سعر محددة
- attribute “name” noteq - السمة لا تساوي قيمة سعر محددة
- attribute “name” gte - السمة أكبر من أو تساوي سعرًا محددًا
- attribute “name” lte - السمة أقل من أو تساوي سعرًا محددًا
- attribute “name” between - السمة في نطاق سعر محدد
- attribute “name” in - السمة تساوي أيًا من الأسعار المحددة
- attribute “name” notin - السمة لا تساوي أيًا من الأسعار المحددة
- attribute “name” any - أي قيمة محددة للسمة
- attribute “name” notset - لا توجد قيمة محددة للسمة
سمات أحداث القوائم
Anchor link to- attribute “name” in - السمة تحتوي على أي من القيم المحددة
- attribute “name” notin - السمة لا تحتوي على أي من القيم المحددة
- attribute “name” any - أي قيمة محددة للسمة
- attribute “name” notset - لا توجد قيمة محددة للسمة
أنواع الشروط الإضافية
Anchor link toالشرط الجغرافي (Geo)
Anchor link toاستهداف الأجهزة بناءً على الموقع الجغرافي ضمن نصف قطر محدد.
بناء الجملة: Geo("<app-code>", <latitude>, <longitude>, <range-in-km>)
شرط BTTS
Anchor link toاستهداف الأجهزة حسب أفضل وقت لإرسال الإشعارات إليها (ساعة اليوم، 0-23).
العوامل:
- any - أي قيمة محددة لأفضل وقت للإرسال
- eq - تطابق تام للساعة
- noteq - لا يساوي الساعة
- gte - الساعة أكبر من أو تساوي
- lte - الساعة أقل من أو تساوي
شرط التحديث (Updated)
Anchor link toترشيح الأجهزة حسب الطابع الزمني لآخر تحديث لها.
العوامل:
- gte - تم التحديث بعد أو في تاريخ محدد
- lte - تم التحديث قبل أو في تاريخ محدد
- between - تم التحديث ضمن نطاق تاريخي
شرط الشريحة (Segment)
Anchor link toالإشارة إلى مرشح/شريحة أخرى برمزها.
أعلام وجود الجهاز في شرط التطبيق
Anchor link toتدعم شروط التطبيق أعلامًا إضافية للتحكم في ترشيح الأجهزة والرموز:
- with_tokens - الأجهزة التي لديها رموز إشعارات الدفع
- without_tokens - الأجهزة التي ليس لديها رموز إشعارات الدفع
- with_devices - المستخدمون الذين لديهم أجهزة مسجلة
- without_devices - المستخدمون/الملفات الشخصية التي ليس لديها أجهزة مسجلة
أمثلة على تعبيرات المرشح
Anchor link toأمثلة أساسية
Anchor link to- أجهزة iOS و Android التي تم تثبيت التطبيق عليها ولديها رموز دفع:
A("11111-11111", ["ios","android"], [with_tokens])- أجهزة iOS و Android التي تم تثبيت التطبيق عليها ولكن ليس لديها رموز دفع:
A("11111-11111", ["ios","android"], [without_tokens])- أجهزة iOS و Android التي تم تثبيت التطبيق عليها، سواء كان لديها رموز دفع أم لا:
A("11111-11111", ["ios","android"], [with_tokens, without_tokens])- جميع مشتركي التطبيق الذين اشتروا شيئًا ما في التطبيق:
AT("11111-11111", "In-App Purchase", gte, 1)أمثلة متقدمة
Anchor link to- المستخدمون في طوكيو الذين فتحوا التطبيق في آخر 7 أيام:
T("City", eq, "Tokyo") * Event("11111-11111", "App Open", date daysago lte 7)- المستخدمون الذين أجروا عملية شراء تزيد عن 50 دولارًا في آخر 30 يومًا:
Event("11111-11111", "Purchase", attribute "total_price" gte 50.00, date daysago lte 30)- المستخدمون الذين تبدأ أسماؤهم بحرف “J” أو تنتهي بحرف “e”:
T("Name", startswith, "J") + T("Name", endswith, "e")- مستخدمو iOS النشطون ضمن 100 كم من نيويورك الذين لم يشتروا مؤخرًا:
A("11111-11111", ["ios"], [with_tokens]) * Geo("11111-11111", 40.7128, -74.0060, 100) \ Event("11111-11111", "Purchase", date daysago lte 30)- المستخدمون الذين يكون أفضل وقت لإرسال الرسائل إليهم بين الساعة 9 صباحًا و 5 مساءً:
BTTS("11111-11111", gte 9) * BTTS("11111-11111", lte 17)- المستخدمون الذين أطلقوا حدثًا معينًا على Android أو iOS في الساعة الأخيرة:
Event("11111-11111", "Button Click", platforms ["android", "ios"], date minutesago lte 60)- الأجهزة التي تم تحديثها في آخر 3 أشهر بإصدار تطبيق 4.2 أو أعلى:
Updated("11111-11111", gte "2024-07-01 00:00:00") * AT("11111-11111", "App Version", gte, "4.2")