الجماهير المخصصة لملف العميل

تتيح لك API التسويق إنشاء جماهير مخصصة مستهدفة من معلومات العميل. يتضمن ذلك عناوين البريد الإلكتروني أو أرقام الهواتف أو الأسماء أو تواريخ الميلاد أو الجنس أو المواقع أو معرفات مستخدمي التطبيق أو معرفات المستخدمين على مستوى الصفحة أو معرفات إعلانات Apple‏ (IDFA) أو معرف إعلانات Android.

بصفتك مالك بيانات نشاطك التجاري، فأنت مسؤول عن إنشاء هذه البيانات وإدارتها. ويتضمن ذلك معلومات من أنظمة إدارة علاقات العملاء (CRM). ولإنشاء الجماهير، يجب عليك مشاركة البيانات في تنسيق مُجزأ للحفاظ على الخصوصية. ويمكنك الرجوع إلى تجزئة البيانات وتسويتها. تقارن Meta هذه البيانات بالبيانات المجزأة لدينا لمعرفة ما إذا كان ينبغي أن نضيف شخصًا ما على فيسبوك إلى جمهور إعلانك.

يمكنك إضافة عدد غير محدود من السجلات إلى الجمهور، ولكن بحد أقصى 10000 سجل في المرة الواحدة. لا تحدث التغييرات في "الجماهير المخصصة" لديك على الفور وتستغرق عادةً 24 ساعة كحد أقصى. وسيزيد عدد السجلات التي تطلب إزالتها و/أو عدد الجماهير المخصصة الذي يحتوي عليه حسابك من مقدار الوقت المُستغرق لمعالجة هذا الطلب.

لتحسين كيفية إنشاء المعلنين لجماهيرهم وإدارتها، سيتم تمييز الجماهير المخصصة لملف العميل التي لم يتم استخدامها في أي مجموعات إعلانية نشطة منذ أكثر من عامين للحذف على أساس مستمر. وستحتاج إلى تزويدنا بتعليماتك قبل أن نتخذ أي إجراء. بمجرد انتقال الجماهير إلى مرحلة "انتهاء صلاحية الجمهور" وتمييزها، ستحتاج إلى أن تقدم لنا تعليمات إما من خلال استخدام الجمهور الذي تم تمييزه في مجموعة إعلانية نشطة، وهو ما سنعتبره إحدى التعليمات التي تشير إلى الاحتفاظ بالجمهور أو من خلال اتخاذ قرار عدم استخدام الجمهور الذي تم تمييزه في أي مجموعة إعلانية نشطة، وهو ما سنعتبره إحدى التعليمات التي تشير إلى نية حذف الجمهور. لمزيد من المعلومات، اطّلع على وثائق نظرة عامة على الجماهير المخصصة.

إذا كنت تشارك أحداث التحويل باستخدام واجهة API التحويلات، فيمكنك إنشاء موقع ويب لجمهور مخصص من دون تحميل بيانات إضافية. ومع ذلك، يمكنك متابعة تحميل معلومات العميل المدعومة لإنشاء الجمهور المخصص لملف العميل.

استخدم واجهة API الاستبدال الجديدة لإزالة المستخدمين الموجودين من جمهور بالكامل واستبدالهم بمجموعة جديدة من المستخدمين. ولا يعمل تحديث الجمهور الذي تم من خلال واجهة API الاستبدال على إرجاع مجموعتك الإعلانية إلى مرحلة التعلّم.

إنشاء جمهور مخصص

الخطوة الأولى: إنشاء جمهور مخصص فارغ

حدّد subtype=CUSTOM وcustomer_file_source في استدعاء API.

curl -X POST \ -F 'name="My new Custom Audience"' \ -F 'subtype="CUSTOM"' \ -F 'description="People who purchased on my website"' \ -F 'customer_file_source="USER_PROVIDED_ONLY"' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v19.0/act_<AD_ACCOUNT_ID>/customaudiences
'use strict'; const bizSdk = require('facebook-nodejs-business-sdk'); const AdAccount = bizSdk.AdAccount; const CustomAudience = bizSdk.CustomAudience; const access_token = '<ACCESS_TOKEN>'; const app_secret = '<APP_SECRET>'; const app_id = '<APP_ID>'; const id = '<AD_ACCOUNT_ID>'; const api = bizSdk.FacebookAdsApi.init(access_token); const showDebugingInfo = true; // Setting this to true shows more debugging info. if (showDebugingInfo) { api.setDebug(true); } const logApiCallResult = (apiCallName, data) => { console.log(apiCallName); if (showDebugingInfo) { console.log('Data:' + JSON.stringify(data)); } }; let fields, params; fields = [ ]; params = { 'name' : 'My new Custom Audience', 'subtype' : 'CUSTOM', 'description' : 'People who purchased on my website', 'customer_file_source' : 'USER_PROVIDED_ONLY', }; const customaudiences = (new AdAccount(id)).createCustomAudience( fields, params ); logApiCallResult('customaudiences api call complete.', customaudiences);
require __DIR__ . '/vendor/autoload.php'; use FacebookAds\Object\AdAccount; use FacebookAds\Object\CustomAudience; use FacebookAds\Api; use FacebookAds\Logger\CurlLogger; $access_token = '<ACCESS_TOKEN>'; $app_secret = '<APP_SECRET>'; $app_id = '<APP_ID>'; $id = '<AD_ACCOUNT_ID>'; $api = Api::init($app_id, $app_secret, $access_token); $api->setLogger(new CurlLogger()); $fields = array( ); $params = array( 'name' => 'My new Custom Audience', 'subtype' => 'CUSTOM', 'description' => 'People who purchased on my website', 'customer_file_source' => 'USER_PROVIDED_ONLY', ); echo json_encode((new AdAccount($id))->createCustomAudience( $fields, $params )->exportAllData(), JSON_PRETTY_PRINT);
from facebook_business.adobjects.adaccount import AdAccount from facebook_business.adobjects.customaudience import CustomAudience from facebook_business.api import FacebookAdsApi access_token = '<ACCESS_TOKEN>' app_secret = '<APP_SECRET>' app_id = '<APP_ID>' id = '<AD_ACCOUNT_ID>' FacebookAdsApi.init(access_token=access_token) fields = [ ] params = { 'name': 'My new Custom Audience', 'subtype': 'CUSTOM', 'description': 'People who purchased on my website', 'customer_file_source': 'USER_PROVIDED_ONLY', } print AdAccount(id).create_custom_audience( fields=fields, params=params, )
import com.facebook.ads.sdk.*; import java.io.File; import java.util.Arrays; public class SAMPLE_CODE_EXAMPLE { public static void main (String args[]) throws APIException { String access_token = \"<ACCESS_TOKEN>\"; String app_secret = \"<APP_SECRET>\"; String app_id = \"<APP_ID>\"; String id = \"<AD_ACCOUNT_ID>\"; APIContext context = new APIContext(access_token).enableDebug(true); new AdAccount(id, context).createCustomAudience() .setName(\"My new Custom Audience\") .setSubtype(CustomAudience.EnumSubtype.VALUE_CUSTOM) .setDescription(\"People who purchased on my website\") .setCustomerFileSource(CustomAudience.EnumCustomerFileSource.VALUE_USER_PROVIDED_ONLY) .execute(); } }
require 'facebook_ads' access_token = '<ACCESS_TOKEN>' app_secret = '<APP_SECRET>' app_id = '<APP_ID>' id = '<AD_ACCOUNT_ID>' FacebookAds.configure do |config| config.access_token = access_token config.app_secret = app_secret end ad_account = FacebookAds::AdAccount.get(id) customaudiences = ad_account.customaudiences.create({ name: 'My new Custom Audience', subtype: 'CUSTOM', description: 'People who purchased on my website', customer_file_source: 'USER_PROVIDED_ONLY', })

المعلمات

الاسمالوصف

سلسلة التعداد customer_file_source

يمكن شرح كيفية جمع معلومات العميل في الجمهور المخصص في الأصل.
القيم:

  • USER_PROVIDED_ONLY
    يمثل معلومات المُعلنين المُجمعة مباشرة من العملاء
  • PARTNER_PROVIDED_ONLY
    يمثل المعلومات التي حصل عليها المُعلنون مباشرة من الشركاء (مثل الوكالات أو موفري البيانات)
  • BOTH_USER_AND_PARTNER_PROVIDED
    يمثل المعلومات التي حصل عليها المُعلنون والمُجمعة مباشرة من العملاء وتكون واردة أيضًا من الشركاء (مثل الوكالات)

سلسلة name

اسم الجمهور المخصص

سلسلة description

وصف الجمهور المخصص

سلسلة subtype

نوع الجمهور المخصص

الخطوة الثانية: تحديد قائمة المستخدمين

استخدم استدعاء API POST/{audience_id}/users إلى نقطة النهاية لتحديد قائمة المستخدمين التي تريد إضافتها إلى الجمهور المخصص.

المعلمات

الاسمالوصف

كائن بلغة JSON session

مطلوب
استخدم المعلمة session لتتبع ما إذا تم تحميل دُفعة محددة من المستخدمين أم لا.
وإذا كانت لديك عملية تحميل تتضمن أكثر من 10,000 مستخدم، فستحتاج إلى تقسيمها إلى دُفعات منفصلة؛ ويمكن أن يتضمن كل طلب 10,000 مستخدم كحد أقصى.


المثال

{
  "session_id":9778993, 
  "batch_seq":10, 
  "last_batch_flag":true, 
  "estimated_num_total":99996 
} 

كائن بلغة JSON payload

مطلوب
تضمين schema وdata.

المثال

{ 
  "schema":"EMAIL_SHA256", 
  "data":
    [
      "<HASHED_DATA>", 
      "<HASHED_DATA>", 
      "<HASHED_DATA>" 
    ]
}

خيارات معالجة البيانات لمستخدمي الولايات المتحدة

إذا كنت تريد تمكين الاستخدام المحدود للبيانات للأشخاص المقيمين في كاليفورنيا من خلال الجماهير المخصصة بقائمة العملاء في تاريخ 1 يونيو 2023 أو بعده، فيجب عليك تحميل جماهير جديدة أو تحديث جماهيرك الحالية مع تضمين إشارة الاستخدام المحدود للبيانات. قم بتحديث جماهيرك وحالات الاستخدام المحدود للبيانات الخاصة بالأشخاص والحفاظ عليها بشكل منتظم عند الحاجة.

يُرجى ملاحظة أنه لن يتم نقل إشارة الاستخدام المحدود للبيانات المطبقة على مستخدم في جمهور واحد إلى جماهير مختلفة. بالطريقة ذاتها التي يجب على المعلنين إدارة كل جماهير مخصصة بقائمة العملاء الموجودة بشكل منفصل من خلال المعايير التي يختارونها، يجب تطبيق إشارة الاستخدام المحدود للبيانات بشكل منفصل على كل جمهور يستفيدون منه للإعلانات.

لعدم تمكين LDU بشكل صريح للسجل، يمكنك إما إرسال مصفوفة data_processing_options فارغة أو إزالة الحقل في حمولة البيانات. مثال على مصفوفة فارغة:

{
   "payload": {
       "schema": [
           "EMAIL",
                    "DATA_PROCESSING_OPTIONS"
       ],
       "data": [
           [
               "<HASHED_DATA>
",
                           []
           ]
       ]
   }
}

لتمكين LDU بشكل صريح، وجعل Meta تعمل على تحديد الموقع الجغرافي (من خلال عدم تضمين الولاية والبلد لسجل معين)، حدد مصفوفة تحتوي على LDU لكل سجل:

{
   "payload": {
       "schema": [
           "EMAIL",
                    "DATA_PROCESSING_OPTIONS"
       ],
       "data": [
           [
               "<HASHED_DATA>
",
                           ["LDU"]
           ]
       ]
   }
}

لتمكين LDU وتحديد الموقع يدويًا:

{
    "customer_consent": true,
    "payload": {
        "schema": [
            "EMAIL",
            "DATA_PROCESSING_OPTIONS",
            "DATA_PROCESSING_OPTIONS_COUNTRY",
            "DATA_PROCESSING_OPTIONS_STATE"
        ],
        "data": [
            [
                "<HASHED_DATA>",
                ["LDU"],
                1,
                1000
            ]
        ]
    }
}

حقول session

الاسمالوصف

عدد صحيح موجب 64 بت لـ session_id

مطلوب
المعرف المستخدم لتتبع الجلسة. يجب أن يتم إنشاء هذا الرقم بواسطة المعلن وأن يكون فريدًا ضمن حساب إعلاني محدد.

عدد صحيح موجب لـ batch_seq

مطلوب
رقم لتعريف الطلب المُدرج في الجلسة الحالية. يجب أن يكون هذا الرقم تسلسليًا ويبدأ من 1.

قيمة منطقية last_batch_flag

مطلوب

يشير إلى أنظمتنا أنه تم توفير كل الدُفعات لجلسة الاستبدال الحالية. عند التعيين على true، يكون الطلب الحالي هو أخر طلب من الجلسة الحالية ولا نقبل أي دُفعات إضافية لتلك الجلسة. إذا لم ترسل هذا التمييز، فسننهي الجلسة تلقائيًا بعد 90 دقيقة من استلامنا الدُفعة الأولى. ويتم تجاهل أي دفعة يتم استلامها بعد 90 دقيقة أيضًا. يجب وضع علامة في أخر طلب لإخطار Meta بأن هذه هي الدُفعة الأخيرة.

عدد صحيح estimated_num_total

اختياري
يمثل إجمالي العدد التقديري للمستخدمين المطلوب تحميلهم في هذه الجلسة. يتم استخدام هذا الحقل لتحسين معالجة هذه الجلسة.

الاستجابة

تتضمن الاستجابة الناجحة كائنًا بلغة JSON مع الحقول التالية:

الاسمالوصف

سلسلة رقمية audience_id

معرف الجمهور

عدد صحيح session_id

معرف الجلسة الذي أدخلته

عدد صحيح num_received

إجمالي عدد المستخدمين الذين تم تلقيهم في هذه الجلسة إلى الآن

عدد صحيح num_invalid_entries

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

invalid_entry_samples
مصفوفة بلغة JSON لسلسلة أو خريطة {string: string}

يمثل بحد أقصى 100 عينة من الإدخالات غير الصالحة الموجودة في الطلب الحالي

تعرف على المزيد حول مشاركة الجمهور المخصص مع كائنات الأنشطة التجارية.

إزالة أعضاء الجمهور

استخدم استدعاء API DELETE إلى نقطة النهاية /{audience_id}/users لتحديد قائمة المستخدمين التي تريد إزالتها من الجمهور المخصص.

curl -X DELETE \
  --data-urlencode 'payload={ 
    "schema": "EMAIL_SHA256", 
    "data": [ 
      "<HASHED_DATA>", 
      "<HASHED_DATA>", 
      "<HASHED_DATA>" 
    ] 
  }' \
  -d 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/<VERSION>/<CUSTOM_AUDIENCE_ID>/users

أو يمكنك إضافة المعلمة method وتعيينها على DELETE في الطلب POST الذي يتم استخدامه لإضافة أعضاء إلى الجمهور.

يمكنك إزالة الأشخاص من قائمة بالمعرف EXTERN_ID إذا كان ذلك متوفرًا.

curl -X DELETE \
  --data-urlencode 'payload={ 
    "schema": "EXTERN_ID", 
    "data": [ 
      "<ID>", 
      "<ID>", 
      "<ID>" 
    ] 
  }' \
  -d 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/<VERSION>/<CUSTOM_AUDIENCE_ID>/users

يمكنك إزالة قائمة الأشخاص من كل الجماهير المخصصة عبر حسابك الإعلاني باستخدام نقطة النهاية هذه.

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

لإزالة حساب مركز الحسابات، قم بتضمين الحقول نفسها كما هو في تحديث المستخدم وقم بإجراء استدعاء HTTP DELETE إلى:

https://graph.facebook.com/<API_VERSION>/act_<AD_ACCOUNT_ID>/usersofanyaudience

المطابقة متعددة المفاتيح

لزيادة معدل المطابقة للسجلات، أدخل مفاتيح متعددة في مصفوفة مفاتيح منفردة، على سبيل المثال [EXTERN_ID، LN، FN، EMAIL]. على الرغم من أنه لا توجد حاجة إلى تجزئة EXTERN_ID، فإنه يجب تجزئة كل معلومات تحديد الهوية الشخصية، مثل عناوين البريد الإلكتروني والأسماء. لمزيد من التفاصيل، يمكنك الرجوع إلى تجزئة البيانات وتسويتها.

يمكنك توفير كل المفاتيح المتعددة الخاصة بأي سجل أو بعضها. وللحصول على التفاصيل، يمكنك الرجوع إلى مطابقة extern id متعدد المفاتيح .

إضافة مستخدمين من خلال المطابقات متعددة المفاتيح

curl \
  -F 'payload={ 
    "schema": [ 
      "FN", 
      "LN", 
      "EMAIL" 
    ], 
    "data": [ 
      [ 
        "<HASH>", 
        "<HASH>", 
        "<HASH>" 
      ], 
      [ 
        "<HASH>", 
        "<HASH>", 
        "<HASH>" 
      ] 
    ] 
  }' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/<VERSION>/<CUSTOM_AUDIENCE_ID>/users

استخدام PAGEUID

إذا كنت تستخدم المفتاح PAGEUID، فعليك أيضًا تضمين قائمة معرفات الصفحة. ويمكنك فقط إرسال معرف PAGEUID واحد لنا والذي يجب أن يكون مصفوفة بعنصر واحد.

curl -X POST \
  -F 'payload={
       "schema": [
         "PAGEUID"
       ],
       "is_raw": "true",
       "page_ids": [
            "<PAGE_IDs>"
            ],
       "data": [
         [
           "<HASH>",
           "<ID>",
           "<ID>",
           "<VALUE>"
         ],
         [
           "<HASH>",
           "<ID>",
           "<ID>",
           "<VALUE>"
         ],
         [
           "<HASH>",
           "<ID>",
           "<ID>",
           "<VALUE>"
         ]
       ]
     }' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/<VERSION>/<CUSTOM_AUDIENCE_ID>/users

تجزئة وتسوية المفاتيح المتعددة

يجب عليك تجزئة البيانات باعتبارها SHA256؛ حيث إننا لا تدعم آليات التجزئة الأخرى. ويكون ذلك مطلوبًا لكل البيانات باستثناء المعرفات الخارجية ومعرفات مستخدم التطبيق ومعرفات المستخدم على مستوى الصفحة ومعرفات المُعلن على الهاتف المحمول.

وقبل تجزئة البيانات الخاصة بك، قم بتسويتها بحيث نتمكّن من معالجتها. ولا يدعم الاسم الأول (FN) والاسم الأخير (LN) إلا الأحرف الخاصة والأبجدية غير الرومانية. وللحصول على أفضل نتائج للمطابقة، قم بترجمة الأبجدية الرومانية مع عدم وجود أحرف خاصة.

يُرجى تنزيل ملف CSV هذا

للاطّلاع على أمثلة البيانات الموحدة والمجزأة بشكل صحيح بالنسبة للمعلمات أدناه.



التنزيل (النقر بزر الماوس الأيمن > حفظ الرابط بتنسيق)
المفتاحالإرشادات

معايير EMAIL
: عناوين البريد الإلكتروني


التجزئة مطلوبة
اقتطع مسافات بيضاء سابقة أو لاحقة، وقم بتحويل كل الأحرف إلى أحرف بالحالة الصغيرة.

معايير PHONE
: أرقام الهاتف


التجزئة مطلوبة قم بإزالة الرموز والأحرف وأي أرقام صفرية سابقة. ويجب وضع رمز البلد في البادئة إذا كان الحقل COUNTRY غير محدد.

معايير GEN
: الجنس


التجزئة مطلوبة
استخدم القيمتين: m للذكر، وf للأنثى.

معايير DOBY
: عام الميلاد


التجزئة مطلوبة
استخدم التنسيق عام: من 1900 إلى العام الحالي.

معايير DOBM
: شهر الميلاد

التجزئة مطلوبة
استخدم التنسيق شهر: من 01 إلى 12.

معايير DOBD
: عيد الميلاد

التجزئة مطلوبة
استخدم التنسيق يوم: من 01 إلى 31.

معايير LN وFN
: الأسماء الأولى والأسماء الأخيرة

التجزئة مطلوبة
استخدم a-z فقط. ويجب استخدام الأحرف الصغيرة فقط دون علامات ترقيم. وتكون الأحرف الخاصة بتنسيق UTF-8.

معايير FI
: الأحرف الأولى للاسم الأول

التجزئة مطلوبة
استخدم a-z فقط. الأحرف الصغيرة فقط. تكون الأحرف الخاصة بتنسيق UTF-8.

معايير ST
: الولايات التي تقع داخل الولايات المتحدة

التجزئة مطلوبة
استخدم رمز اختصار ANSI المكوّن من حرفين بحالة الأحرف الصغيرة. يجب تسوية الولايات التي تقع خارج الولايات المتحدة بأحرف صغيرة بدون استخدام علامات ترقيم أو أحرف خاصة أو مسافات بيضاء.

معايير CT
: المدينة

التجزئة مطلوبة
استخدم a-z فقط. استخدم الأحرف الصغيرة فقط ولا تستخدم أية علامات ترقيم أو أحرف خاصة أو مسافات بيضاء.

معايير ZIP
: الرمز البريدي

التجزئة مطلوبة
استخدم الأحرف بالحالة الصغيرة ولا تستخدم المسافات البيضاء. وبالنسبة للولايات المتحدة، استخدم فقط أول خمسة أرقام. أما بالنسبة للمملكة المتحدة، فاستخدم تنسيق المنطقة/الدائرة/القطاع.

معايير COUNTRY
: رمز البلد

التجزئة مطلوبة

استخدم أكواد البلدان المكوّنة من حرفين بحالة الأحرف الصغيرة بتنسيق ISO 3166-1 alpha-2.

معايير MADID
: معرف المُعلن على الهاتف المحمول

التجزئة غير مطلوبة

استخدم أحرف صغيرة بالكامل، واحتفظ بالشرطات.

التجزئة

أدخل القيم SHA256 للمفاتيح التي تمت تسويتها وعمليات تمثيل HEX لهذه القيمة باستخدام الأحرف بالحالة الصغيرة من A إلى F. وتعمل وظيفة التجزئة في PHP على تحويل عناوين البريد الإلكتروني وأرقام الهواتف التي تمت تسويتها.

المثالالنتيجة

hash("sha256", "mary@example.com")

f1904cf1a9d73a55fa5de0ac823c4403ded71afd4c3248d00bdcd0866552bb79

hash("sha256", "15559876543")

1ef970831d7963307784fa8688e8fce101a15685d62aa765fed23f3a2c576a4e

المعرفات الخارجية

يمكنك مطابقة الأشخاص لجمهور مع معرفاتك الخاصة والمعروفة باسم المعرفات الخارجية (EXTERN_ID). ويمكن أن تمثل أي معرف فريد من المُعلن، مثل معرفات عضوية الولاء ومعرفات المستخدمين ومعرفات ملفات تعريف الارتباط الخارجية.

على الرغم من أنك لا تحتاج إلى تجزئة هذا المعرف، فإنه يجب عليك تجزئة كل معلومات تحديد الهوية الشخصية (PII) التي ترسلها باستخدام معرفات EXTERN_ID.

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

يمكنك استخدام هذه المعرفات كمفاتيح فردية لحذف الأشخاص من الجماهير المخصصة أو إنشاء جماهير مخصصة جديدة. وعند اتباع هذه الطريقة، لا تحتاج إلى إعادة تحميل أي مفاتيح مطابقة أخرى. إذا قمت بالإشارة إلى شخص بمعلومات شخصية تمت تجزئتها والمعرف EXTERN_ID، فنحن نمنح أولوية أقل للمعرف EXTERN_ID عند المطابقة مع الأشخاص على فيسبوك.

تصل مدة الاحتفاظ ببيانات EXTERN_ID إلى 90 يومًا.

يمكنك إعادة استخدام تعيين EXTERN_ID لإنشاء جماهير مخصصة للملف المخصص ضمن حساب إعلاني واحد.

إذا كان لديك جمهورًا لحقول EXTERN_ID في حسابك الإعلاني، فأنشئ جمهورًا جديدًا بهذه المعرفات فقط.

curl \
  -F 'payload={"schema":"EXTERN_ID","data":["<ID>","<ID>"]}' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/<VERSION>/<CUSTOM_AUDIENCE_ID>/users

كما يمكنك إضافة أشخاص بالمعرف EXTERN_ID الذي تمت الإشارة إليه وبالمطابقة متعددة المفاتيح.

curl \
  -F 'payload={ 
    "schema": [ 
      "EXTERN_ID", 
      "FN", 
      "EMAIL", 
      "LN" 
    ], 
    "data": [ 
      [ 
        "<ID>", 
        "<HASH>", 
        "<HASH>", 
        "<HASH>" 
      ], 
      [ 
        "<ID>", 
        "<HASH>", 
        "<HASH>", 
        "<HASH>" 
      ], 
      [ 
        "<ID>", 
        "<HASH>", 
        "<HASH>", 
        "<HASH>" 
      ] 
    ] 
  }' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/<VERSION>/<CUSTOM_AUDIENCE_ID>/users

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

API استبدال المستخدمين

تسمح نقطة النهاية /<CUSTOM_AUDIENCE_ID>/usersreplace بتنفيذ إجراءين من خلال استدعاء API واحد:

  • إزالة المستخدمين الحاليين تمامًا من جمهور محدد
  • استبدال هؤلاء المستخدمين بمجموعة جديدة من المستخدمين.

يتيح لك استخدام نقطة النهاية /<CUSTOM_AUDIENCE_ID>/usersreplace حذف كل المستخدمين الموجودين تلقائيًا بدلاً من الاضطرار إلى تحميل قائمة المستخدمين الذين تريد حذفهم. لا تعمل نقطة النهاية هذه على إعادة تعيين مرحلة التعلُّم للمجموعة الإعلانية لديك عندما يكون الجمهور جزءًا من مجموعات إعلانية نشطة، على عكس استدعاءات POST أو DELETE لـ API التي يتم إرسالها إلى نقطة النهاية /<CUSTOM_AUDIENCE_ID>/users.

لا تعمل واجهة API استبدال المستخدمين إلا مع الجماهير التي تلبي المتطلبات التالية:

  • يجب أن يكون عدد المستخدمين الموجودين قبل تشغيل عملية الاستبدال أقل من 100 مليون. وإذا كان جمهورك أكبر من 100 مليون، فنقترح عليك الاستفادة من نقطة النهاية /<CUSTOM_AUDIENCE_ID>/users لإضافة المستخدمين وإزالتهم.
  • يجب تعيين النوع الفرعي إلى CUSTOM.
  • لا يمكنك استبدال جمهور مخصص لملف عميل مستند إلى القيمة بجمهور مخصص لملف عميل غير مستند إلى القيمة، أو العكس.

بدء الاستخدام

قبل بدء عملية الاستبدال، نوصي بإجراء ما يلي:

  • تأكد من أن operation_status للجماهير هي Normal.

لا يمكنك إجراء عملية استبدال إذا كان هناك عملية يتم تنفيذها بالفعل.

  • لا تقم بإضافة مستخدمين أو إزالتهم عبر /<CUSTOM_AUDIENCE_ID>/users أثناء وجود عملية استبدال قيد التقدم عبر /<CUSTOM_AUDIENCE_ID>/usersreplace. إذا كنت تحاول إجراء عملية استبدال ثانية قبل اكتمال الأولى، فستتلقى رسالة توضح وجود عملية استبدال قيد التقدم بالفعل.

  • تستغرق أقصى فترة زمنية لجلسة الاستبدال الواحدة 90 دقيقة. وسترفض API أي دُفعات لأي جلسة يتم تلقيها بعد 90 دقيقة من وقت بدء الجلسة. إذا كنت تحتاج إلى إرسال الدُفعات لمدة أطول من 90 دقيقة، فيمكنك الانتظار حتى انتهاء عملية الاستبدال لدى تلك الجلسة ثم استخدم عملية إضافة نقطة النهاية /<CUSTOM_AUDIENCE>/users لباقي عمليات التحميل لديك.

  • بمجرد أن يصبح جمهورك جاهزًا، حدد قائمة المستخدمين الذين تريد استبدالهم بجمهورك المخصص باستخدام استدعاء POST إلى /<CUSTOM_AUDIENCE_ID>/usersreplace.

    • وبمجرد بدء عملية الاستبدال، سيتم تبديل الحالة operation_status لجمهورك بالحالة replace_in_progress.
    • أما إذا لم تكتمل عملية الاستبدال، فسيتم تبديل الحالة operation_status لجمهورك بالحالة replace_error.

معلمات الاستدعاء

يمكنك تضمين المعلمات التالية في استدعاء POST إلى /<CUSTOM_AUDIENCE_ID>/usersreplace:

الاسمالوصف

session

النوع: JSON object (كائن بلغة JSON)

مطلوب.

يُستخدم لتتبع ما إذا تم تحميل دُفعة محددة من المستخدمين أم لا. ويجب أن يتضمن معرف الجلسة ومعلومات الدُفعة. ويمكنك الرجوع إلى حقول الجلسة.


يمكنك إضافة 10,000شخص كحد أقصى إلى أي جمهور في وقت معين. وإذا كان لديك أكثر من 10,000 شخص، فيمكنك تقسيم جلستك إلى عدة دُفعات، والتي يجب أن تحتوي جميعها على معرف جلسة واحد.


المثال:

{
  'session_id':9778993, 
  'batch_seq':10, 
  'last_batch_flag':true, 
  'estimated_num_total':99996 
}

payload

النوع: JSON object (كائن بلغة JSON)

مطلوب.

يُستخدم لتوفير المعلومات التي تريد تحميلها إلى جمهورك. ويجب تضمين المخطط والبيانات، ولمزيد من المعلومات، يمكنك الرجوع إلى حقول حمولة البيانات.


المثال:

{ 
  "schema":"EMAIL", 
  "data":["<HASHED_EMAIL>", "<HASHED_EMAIL>", "<HASHED_EMAIL>" ]
}

حقول الجلسة

الاسمالوصف

session_id

النوع: 64-bit integer (عدد صحيح 64 بت)

مطلوب.

يُستخدم لتتبع الجلسة. ويجب إنشاء هذا المعرف، ويجب أن يكون الرقم فريدًا ضمن الحساب الإعلاني نفسه.

batch_seq

النوع: integer (عدد صحيح)

مطلوب. يجب أن تبدأ بالتسلسل 1.
تبدأ أي جلسة استبدال جديدة عندما تتلقى batch_seq بالتسلسل 1. نوصي بعدم إرسال دُفعات متكررة بتسلسل 1 لمعرف session_id محدد.
من الضروري تصنيف الدفعة الأولى؛ يمكن تكرار باقي دُفعات الجلسة أو أي رقم باستثناء 1 لأننا نستخدم هذه المعلمة لتحديد بداية الجلسة. ويجب إرسال جميع الدُفعات التالية للجلسة بعد الدفعة الأولى. ويمكنك النظر في الدفعة الأولى كبداية/خطوة مسبقة لعملية الاستبدال.

last_batch_flag

النوع: boolean (قيمة منطقية)

اختياري.

يشير إلى أنه تم توفير جميع الدُفعات لجلسة الاستبدال القائمة. عند التعيين على true، لن يتم قبول أي دُفعات إضافية لتلك الجلسة. إذا لم تقم بتعيين هذا التمييز، فسيتم إنهاء الجلسة تلقائيًا بعد 90 دقيقة من استلام الدُفعة الأولى. يتم تجاهل أي دفعة يتم استلامها بعد 90 دقيقة أيضًا.

estimated_num_total

النوع: integer (عدد صحيح)

اختياري.

يمثل إجمالي العدد التقديري للمستخدمين المطلوب تحميلهم في هذه الجلسة. ويستخدمه نظامنا لتحسين عملية معالجة الجلسة.

حقول حمولة البيانات

الاسمالوصف

schema

النوع: string (سلسلة) أو JSON_Array_of_string

مطلوب.

يحدد نوع المعلومات التي ستوفرها. ويمكن أن تكون مفتاح واحد أو مفاتيح متعددة من هذه القائمة:

  • EMAIL
  • PHONE
  • GEN
  • DOBY
  • DOBM
  • DOBD
  • LN
  • FN
  • FI
  • CT
  • ST
  • ZIP
  • COUNTRY
  • MADID
  • ["hash1", "hash2", ...]. فعلى سبيل المثال: ["PHONE", "LN”, “FN”, “ZIP”, “DOBYM"]

data

النوع: JSON_Array

مطلوب.

يمثل قائمة بيانات مطابقة للمخطط.


الأمثلة:

  • إذا كان المخطط "EMAIL"، فيجب أن تكون البيانات قائمة بعمليات تجزئة sha256 للبريد الإلكتروني.
  • إذا كان المخطط عبارة عن قائمة بعمليات تجزئة كما هو في المثال السابق، فيجب أن تكون البيانات "phone_hash_value" و"LN_FN_ZIP_DOBYM".

بمجرد إرسال طلب POST، ستحصل على استجابة بالحقول التالية:

الاسمالوصف

account_id

النوع: integer (عدد صحيح)

معرف الحساب.

session_id

النوع: integer (عدد صحيح)

معرف الجلسة الذي قدمته مسبقًا.

num_received

النوع: integer (عدد صحيح)

إجمالي عدد المستخدمين الذين تم تلقيهم في هذه الجلسة حتى الآن.

num_invalid_entries

النوع: integer (عدد صحيح)

إجمالي عدد المستخدمين الذين لديهم تنسيق غير صالح أو يتعذر فك تشفيره. وإذا لم يكن هذا الرقم صفرًا، فيجب إعادة التحقق من بياناتك.

النوع invalid_entry_samples النوع: JSON string Array (مصفوفة سلسلة بلغة JSON)

ما يصل إلى 100 عينة من الإدخالات غير الصالحة في الطلب الحالي. ويجب إعادة التحقق من بياناتك.

الأخطاء الشائعة في API الاستبدال

يتوفر لدى كل الأخطاء التي تم إرجاعها من نقطة النهاية الاستبدال رمز الخطاء 2650. فيما يلي بعض رموز الأخطاء الفرعية الأكثر شيوعًا التي تم إرجاعها، بالإضافة إلى إرشادات حول كيفية حلها.

رمز الخطأ الفرعيالوصفكيفية معالجة الخطأ

1870145

تحديث الجمهور قيد التقدم

لا يمكنك استبدال جمهور مخصص لقائمة العملاء قيد التحديث. انتظر حتى تتغير حالة توفر الجمهور إلى "عادي" وحاول مرة أخرى.

1870158

انتهت مهلة جلسة الاستبدال

لقد وصلت إلى الحد الزمني البالغ 90 دقيقة المخصص لجلسة استبدال الدُفعة. سيتم استبدال الجمهور المخصص لقائمة العملاء بما تم تحميله إلى الآن. لإضافة المزيد إلى الجمهور المخصص، انتظر انتهاء عملية الاستبدال، ثم استخدم العملية ADD.

1870147

دُفعة التحميل غير صالحة للاستبدال

لم يتم اكتشاف أول batch_seq. يجب أن تبدأ batch_seq بالعدد الصحيح 1.

1870159

انتهت جلسة الاستبدال

تم الانتهاء بالفعل من عملية الاستبدال هذه لأنك قمت بتحميل الدُفعة تتضمن last_batch_flag==true. لإضافة دُفعات إضافية إلى الجمهور المخصص، انتظر انتهاء عملية الاستبدال، ثم استخدم العملية ADD.

1870148

حدث خطأ

لم يتم تحديث قائمة العملاء بالكامل. إذا كان حجم جمهورك مختلفًا بشكل كبير عن المتوقع، فيمكنك المحاولة مرة أخرى.

1870144

حجم DFCA غير مدعوم في عملية الاستبدال

لا يمكنك استبدال الجمهور المخصص لقائمة العميل التي يتوفر بها جمهور بحجم 100 مليون شخص أو أكثر.

الموارد

فيما يلي أنواع أخرى من الجماهير التي يمكنك إنشاؤها واستهدافها أو مشاركتها: