توفر API الرؤى في فيسبوك بيانات حول الأداء من الحملات التسويقية على فيسبوك. ولحماية أداء النظام وضمان استقراره، نحرص على اتخاذ تدابير وقائية لتوزيع موارد النظام بين التطبيقات بطريقة متساوية. علمًا بأن كل السياسات الموضحة أدناه خاضعة للتغيير.
نستخدم تقييدات البيانات لكل استدعاء لمنع الاستعلام من استرداد كمية كبيرة جدًا من البيانات لا يمكن للنظام معالجتها. ويتوفر لدينا نوعان من تقييدات البيانات:
يسري هذان النوعان من التقييدات على استدعاءات /insights
المتزامنة وغير المتزامنة، وسنقوم بإرجاع رسالة خطأ:
error_code = 100, CodeException (error subcode: 1487534)
action_target_id
أو product_id
ونطاقات تواريخ أوسع مثل الحملة كلها./insights
مباشرة مع كائنات الإعلانات بالمستوى الأدنى لاسترداد البيانات التفصيلية لهذا المستوى. فعلى سبيل المثال، استخدم أولًا استعلامًا على مستوى الحساب للحصول على قائمة بمعرفات الكائنات بالمستوى الأدنى مع المعلمتين level
وfiltering
. في هذا المثال، نحصل على كل الحملات الإعلانية التي سجّلت بعض مرات ظهور الإعلان:curl -G \ -d 'access_token=<ACCESS_TOKEN>' \ -d 'level=campaign' \ -d 'filtering=[{field:"ad.impressions",operator:"GREATER_THAN",value:0}]' \ 'https://graph.facebook.com/v2.7/act_<ACCOUNT_ID>/insights'
/<campaign_id>/insights
مع كل قيمة يتم إرجاعها من أجل الاستعلام وتجميع طلبات الرؤى الخاصة بهذه الحملات الإعلانية في استدعاء واحد:curl \ -F 'access_token=<ACCESS_TOKEN>' \ -F 'batch=[ \ { \ "method": "GET", \ "relative_url": "v21.0
/<CAMPAIGN_ID_1>/insights?fields=impressions,spend,ad_id,adset_id&level=ad" \ }, \ { \ "method": "GET", \ "relative_url": "v21.0
/<CAMPAIGN_ID_2>/insights?fields=impressions,spend,ad_id,adset_id&level=ad" \ }, \ { \ "method": "GET", \ "relative_url": "v21.0
/<CAMPAIGN_ID_3>/insights?fields=impressions,spend,ad_id,adset_id&level=ad" \ } \ ]' \ 'https://graph.facebook.com'
filtering
فقط لاسترداد الرؤى لكائنات الإعلانات التي تحتوي على بيانات. وتستخدم قيمة الحقل المحددة في filtering
ترميز النقطة (DOT) للتعبير عن الحقول التي تندرج ضمن الكائن. لذا يرجى ملاحظة أن الفلترة باستخدام STARTS_WITH
وCONTAIN
لا تؤدي إلى تغيير بيانات الملخص. وفي هذه الحالة، استخدم عامل التشغيل IN
. يمكنك الرجوع إلى مثال على طلب filtering
:curl -G \
-d 'access_token=<ACCESS_TOKEN>' \
-d 'level=ad' \
-d 'filtering=[{field:"ad.impressions",operator:"GREATER_THAN",value:0},]' \
'https://graph.facebook.com/v21.0
/act_<ACCOUNT_ID>/insights'
date_preset
إذا كان ذلك ممكنًا. وتقل كفاءة تشغيل نطاقات التواريخ المخصصة في نظامنا.بعد مرور تسعين يومًا على طرح الإصدار 3.3 ويكون ساريًا على جميع الإصدارات العامة، نجري تغييرًا على تقييد معدلات الاستدعاء على مستوى الحساب الإعلاني بحيث يعكس الحجم اللازم لاستدعاءات واجهة API. ونحسب حصة تقييد معدلات الاستدعاء بناءً على طبقة الوصول إلى واجهة API التسويق والنشاط التجاري الذي يمتلك تطبيقك. ويمكنك الرجوع إلى الوصول والمصادقة. وينطبق هذا التغيير على جميع نقاط النهاية في واجهة API رؤى الإعلانات التالية: GET {adaccount_ID}/insights
، GET {campaign_ID}/insights
، GET {adset_ID}/insights
، GET {ad_ID}/insights
، POST {adaccount_ID}/insights
، POST {campaign_ID}/insights
، POST {adset_ID}/insights
، POST {ad_ID}/insights
.
نستخدم تقييدات التحميل من أجل توفير تجربة مثالية لإعداد التقارير. ونقيس استدعاءات واجهة API لمعرفة معدلها، بالإضافة إلى الموارد التي تطلبها. ونسمح بحد ثابت للتحميل لكل تطبيق في الثانية الواحدة. وعند تجاوز هذا الحد، تتعرض طلباتك للفشل.
تحقق من عنوان x-fb-ads-insights-throttle
HTTP الموجود في كل استجابة لواجهة API لمعرفة مدى اقتراب تطبيقك من الحد المخصص له، بالإضافة إلى إمكانية تقييم مدى أهمية استعلام معين. وتخضع استدعاءات الرؤى أيضًا إلى تقييدات الحساب الإعلاني الافتراضي الموضحة في عنوان HTTP لـ x-ad-account-usage
. ويمكن العثور على مزيد من التفاصيل في واجهة API التسويق، أفضل الممارسات
بمجرد وصول تطبيق ما إلى الحد الأقصى المسموح به، يتلقى الاستدعاء استجابة خطأ مع error_code = 4, CodedException
. يجب أن تحتفظ بحد أقل من الحد االأقصى المسموح به بقدر مناسب. وإذا بلغ تطبيقك الحد الأقصى المسموح به، فيتم السماح بنسبة محدودة فقط من الطلبات استنادًا إلى الاستعلام والتقييم.
نطبق تقييد معدلات الاستدعاء على كل تطبيق يرسل استدعاءات /insights
متزامنة وغير متزامنة معًا. ويتم حساب تقييدات لاثنتين من المعلمات الرئيسية حسب التطبيق والحساب الإعلاني.
فيما يلي مثال على عنوان HTTP مزوّد بالنقاط المستحقة للتطبيق في شكل نسبة مئوية للتقييدات:
X-FB-Ads-Insights-Throttle: { "app_id_util_pct": 100, "acc_id_util_pct": 10, "ads_api_access_tier": "standard_access" }
يمثل العنوان "x-fb-ads-insights-throttle" قيمة JSON تحتوي على المعلومات التالية:
app_id_util_pct
— تم استهلاك النسبة المئوية للسعة المخصصة للمعرف app_id ذي الصلة.acc_id_util_pct
— تم استهلاك النسبة المئوية للسعة المخصصة للمعرف الإعلاني account_id ذي الصلة.ads_api_access_tier
— تسمح المستويات للتطبيق بالوصول إلى API التسويق. يعمل standard_access
على تمكين تقييد معدلات الاستدعاء الأقل.خلال فترات الحمل العالمي المرتفع لنقطة النهاية /insights
، بإمكان النظام تقييد الطلبات لحماية الخلفية. يمكن أن يحدث ذلك في حالات نادرة عندما تأتي العديد من الاستعلامات ذات تعقيد عالي (نطاقات زمنية كبيرة وأدوات قياس معقدة و/أو عدد كبير من معرفات الكائنات الإعلانية) في الوقت ذاته. سيؤدي ذلك إلى خطأ يبدو كما يلي:
error_code = 4, CodeException (error subcode: 1504022), error_title: Too many API requests
أثناء هذه الفترات، يوصى بتقليل الاستدعاءات والانتظار لفترة قصيرة ثم الاستعلام مرة أخرى.
/insights
من خلال معدل عرض الإعلانات مع وقت الانتظار في وظيفتك./insights
أو إيقافها مؤقتًا عند الاقتراب من بلوغ نسبة 100% من الاستخدام في تطبيقك أو في حسابك الإعلاني.ads_api_access_tier
الذي يسمح للوصول إلى API التسويق. بشكل افتراضي، تتواجد التطبيقات في مستوى development_access
ويعمل standard_access
على تمكين تقييد معدلات الاستدعاء الأقل. للحصول على تقييد معدلات الاستدعاء الأعلى والحصول على المستوى القياسي، يمكنك تقديم طلب "للوصول المتقدم" إلى ميزة الوصول القياسي لإدارة الإعلانات.يمكنك الحصول على إحصاءات حول عدة كائنات وتطبيق ميزتي الفلترة والفرز حيث أضفينا مزيدًا من السهولة على دفق عمل الوظائف غير المتزامنة:
POST
إلى نقطة نهاية <AD_OBJECT>/insights
الذي يستجيب مع id
الخاص بإحدى عمليات تشغيل تقرير الإعلان.{ "report_run_id": 6023920149050, }
لا يجب تخزين المعرف report_run_id
للاستخدام على المدى الطويل حيث ستنتهي صلاحيته بعد 30 يومًا.
async_status
. يجب إجراء استطلاع رأي حول هذا الحقل حتى تصبح async_status
بالحالة Job Completed
وتصبح async_percent_completion
بالقيمة 100
. { "id": "6044775548468", "account_id": "1010035716096012", "time_ref": 1459788928, "time_completed": 1459788990, "async_status": "Job Completed", "async_percent_completion": 100 }
<AD_REPORT_RUN_ID>/insights
للحصول على النتيجة النهائية.{ "data": [ { "impressions": "9708", "date_start": "2009-03-28", "date_stop": "2016-04-04" }, { "impressions": "18841", "date_start": "2009-03-28", "date_stop": "2016-04-04" } ], "paging": { "cursors": { "before": "MAZDZD", "after": "MQZDZD" } } }
تحصل هذه الوظيفة على كل إحصاءات الحساب وتقوم بإرجاع أي معرف وظيفة غير متزامنة:
curl \ -F 'level=campaign' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v21.0
/<CAMPAIGN_ID>/insights curl -G \ -d 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v21.0
/1000002 curl -G \ -d 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v21.0
/1000003/insights
الحالة | الوصف |
---|---|
| لم تبدأ الوظيفة حتى الآن. |
| بدأت الوظيفة، ولكنها في انتظار التشغيل. |
| بدأ تشغيل الوظيفة. |
| اكتملت الوظيفة بنجاح. |
| فشلت الوظيفة. ويجب مراجعة استعلامك وإعادة المحاولة. |
| انتهت صلاحية الوظيفة وتم تخطيها. لذا يرجى إعادة تقديم المهمة والمحاولة مجددًا. |
نوفر نقطة نهاية سهلة لتصدير <AD_REPORT_RUN_ID>
إلى تنسيق محلي يمكن للأشخاص قراءته.
ملاحظة: لا تمثل نقطة النهاية هذه جزءًا من واجهة Graph API محددة الإصدار، ولذلك لا تتوافق مع سياسة التغيير المهم الخاصة بها. يجب ألا تعتمد البرامج النصية والبرامج على تنسيق النتيجة نظرًا إلى أنه قد يتغير بشكل غير متوقع.
curl -G \ -d 'report_run_id=<AD_REPORT_RUN_ID>' \ -d 'name=myreport' \ -d 'format=xls' \ 'https://www.facebook.com/ads/ads_insights/export_report/'
الاسم | الوصف |
---|---|
string (سلسلة) | يمثل اسم الملف الذي تم تنزيله |
enum{csv,xls} (تعداد {csv،xls}) | يمثل تنسيق الملف |
integer (عدد صحيح) | يمثل معرف التقرير المطلوب تشغيله |
string (سلسلة) | يمثل الأذونات الممنوحة بواسطة المستخدم الذي سجّل الدخول. ويجب توفير هذه الأذونات لتصدير التقارير لمستخدم آخر. |