إعلانات السفر

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

تدعم إعلانات السفر إعلانات الفنادق وإعلانات الرحلات الجوية وإعلانات الوجهة.

يفترض هذا الدليل:

  • أن لديك كتالوج ومجموعة منتجات جاهزة.
  • أنك قمت بإعداد أحداث السفر المطلوبة على موقع الويب لديك أو في تطبيق الهاتف المحمول لديك.
  • (مطلوب) أنك أنشأت صفحة فيسبوك وحسابًا إعلانيًا.

استراتيجيات الاستهداف

تدعم إعلانات السفر استراتيجيات استهداف مختلفة. يمكنك زيادة أهداف أعمال مختلفة من خلال الجمع بين الجمهور المناسب ومجموعة المنتجات المناسبة:

إعداد إعلانات السفر

عند إنشاء إعلانات سفر، فإنك تتبع العملية نفسها التي تتبعها عند إعداد أي نوع آخر من إعلانات فيسبوك باستخدام API:

الخطوة الأولى. إنشاء حملة إعلانية

تستخدم إعلانات السفر الهدف PRODUCT_CATALOG_SALES. حدد كتالوج سفر في promoted_object على مستوى الحملة الإعلانية:

use FacebookAds\Object\Campaign;
use FacebookAds\Object\Fields\CampaignFields;
use FacebookAds\Object\Values\CampaignObjectiveValues;

$campaign = new Campaign(null, 'act_<AD_ACCOUNT_ID>');
$campaign->setData(array(
  CampaignFields::NAME => 'Product Catalog Sales Campaign',
  CampaignFields::OBJECTIVE => CampaignObjectiveValues::PRODUCT_CATALOG_SALES,
  CampaignFields::PROMOTED_OBJECT => array(
    'product_catalog_id' => <PRODUCT_CATALOG_ID>,
  ),
));

$campaign->create(array(
  Campaign::STATUS_PARAM_NAME => Campaign::STATUS_PAUSED,
));
from facebookads.adobjects.campaign import Campaign

campaign = Campaign(parent_id='act_<AD_ACCOUNT_ID>')
campaign[Campaign.Field.name] = 'Product Catalog Sales Campaign'
objective = Campaign.Objective.product_catalog_sales
campaign[Campaign.Field.objective] = objective
campaign[Campaign.Field.promoted_object] = {
    'product_catalog_id': <PRODUCT_CATALOG_ID>,
}

campaign.remote_create(params={
    'status': Campaign.Status.paused,
})
Campaign campaign = new AdAccount(act_<AD_ACCOUNT_ID>, context).createCampaign()
  .setName("Product Catalog Sales Campaign Group")
  .setObjective(Campaign.EnumObjective.VALUE_PRODUCT_CATALOG_SALES)
  .setPromotedObject("{\"product_catalog_id\":\"" + <PRODUCT_CATALOG_ID> + "\"}")
  .setStatus(Campaign.EnumStatus.VALUE_PAUSED)
  .execute();
String campaign_id = campaign.getId();
curl \
  -F 'name=Product Catalog Sales Campaign' \
  -F 'objective=PRODUCT_CATALOG_SALES' \
  -F 'promoted_object={"product_catalog_id":"<PRODUCT_CATALOG_ID>"}' \
  -F 'status=PAUSED' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v2.11/act_<AD_ACCOUNT_ID>/campaigns

الخطوة الثانية. إنشاء مجموعة إعلانية

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

إعادة الاستهداف

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

عرض المنتجات ذات الصلة وبيع البديل الأغلى

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

تجميع بيانات العملاء المحتملين

  • يمكنك إنشاء جمهور باستخدام استهداف المعلومات الديموغرافية الأساسي، مثل النساء في الولايات المتحدة الأكبر من 18 عامًا.
  • يمكنك تضمين العملاء المُستهدفين من خلال حملات إعادة الاستهداف الحالية، ولكن عليك مراعاة استبعاد الأشخاص الذين اشتروا في آخر 10 أيام.
  • يمكنك استخدام مجموعة منتجات كبيرة تضم أكثر من 100 فندق.
  • يمكنك تحسين OFFSITE_CONVERSIONS من خلال إشارات هدف أقوى، مثل Purchase أو InitiateCheckout.

راجع أيضًا إعلانات كتالوج Advantage+، استهداف جمهور عريض

مثال على إنشاء مجموعة إعلانية

use FacebookAds\Object\AdSet;
use FacebookAds\Object\Fields\AdSetFields;
use FacebookAds\Object\Fields\TargetingFields;
use FacebookAds\Object\Values\AdSetBillingEventValues;
use FacebookAds\Object\Values\AdSetOptimizationGoalValues;

$adset = new AdSet(null, 'act_<AD_ACCOUNT_ID>');

$adset->setData(array(
  AdSetFields::NAME => 'Product Catalog Sales Adset',
  AdSetFields::BID_AMOUNT => 3000,
  AdSetFields::BILLING_EVENT => AdSetBillingEventValues::IMPRESSIONS,
  AdSetFields::OPTIMIZATION_GOAL =>
    AdSetOptimizationGoalValues::OFFSITE_CONVERSIONS,
  AdSetFields::DAILY_BUDGET => 15000,
  AdSetFields::CAMPAIGN_ID => <CAMPAIGN_ID>,
  AdSetFields::TARGETING => array(
    TargetingFields::GEO_LOCATIONS => array(
      'countries' => array('US'),
    ),
    TargetingFields::DYNAMIC_AUDIENCE_IDS => array(<DYNAMIC_AUDIENCE_ID>),
  ),
  AdSetFields::PROMOTED_OBJECT => array(
    'product_set_id' => <PRODUCT_SET_ID>,
  ),
));

$adset->create(array(
  AdSet::STATUS_PARAM_NAME => AdSet::STATUS_PAUSED,
));
from facebookads.adobjects.adset import AdSet
from facebookads.adobjects.targeting import Targeting

adset = AdSet(parent_id=ad_account_id)
adset[AdSet.Field.name] = 'Product Catalog Sales Adset'
adset[AdSet.Field.bid_amount] = 3000
adset[AdSet.Field.billing_event] = AdSet.BillingEvent.impressions
adset[AdSet.Field.optimization_goal] = \
    AdSet.OptimizationGoal.offsite_conversions
adset[AdSet.Field.daily_budget] = 15000
adset[AdSet.Field.campaign_id] = campaign_id
adset[AdSet.Field.targeting] = {
    Targeting.Field.geo_locations: {
        Targeting.Field.countries: ['US'],
    },
    Targeting.Field.dynamic_audience_ids: [
        dynamic_audience_id,
    ],
}
adset[AdSet.Field.promoted_object] = {
    'product_set_id': product_set_id,
}

adset.remote_create()
AdSet adSet = new AdAccount(act_<AD_ACCOUNT_ID>, context).createAdSet()
  .setName("Product Catalog Sales Adset")
  .setBidAmount(3000L)
  .setBillingEvent(AdSet.EnumBillingEvent.VALUE_IMPRESSIONS)
  .setOptimizationGoal(AdSet.EnumOptimizationGoal.VALUE_OFFSITE_CONVERSIONS)
  .setDailyBudget(15000L)
  .setCampaignId(<CAMPAIGN_ID>)
  .setTargeting(
    new Targeting()
      .setFieldDynamicAudienceIds(Arrays.asList(<DYNAMIC_AUDIENCE_ID>))
      .setFieldGeoLocations(
        new TargetingGeoLocation()
          .setFieldCountries(Arrays.asList("US"))
      )
  )
  .setPromotedObject("{\"product_set_id\":\"" + <PRODUCT_SET_ID> + "\"}")
  .setStatus(AdSet.EnumStatus.VALUE_PAUSED)
  .execute();
String ad_set_id = adSet.getId();
curl \
  -F 'name=Product Catalog Sales Adset' \
  -F 'bid_amount=3000' \
  -F 'billing_event=IMPRESSIONS' \
  -F 'optimization_goal=OFFSITE_CONVERSIONS' \
  -F 'daily_budget=15000' \
  -F 'campaign_id=<CAMPAIGN_ID>' \
  -F 'targeting={ 
    "geo_locations": {"countries":["US"]}, 
    "dynamic_audience_ids": ["<DYNAMIC_AUDIENCE_ID>"] 
  }' \
  -F 'promoted_object={"product_set_id":"<PRODUCT_SET_ID>"}' \
  -F 'status=PAUSED' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v2.11/act_<AD_ACCOUNT_ID>/adsets

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

الخطوة الثالثة. إنشاء تصميم إعلان

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

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

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

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

use FacebookAds\Object\AdCreative;
use FacebookAds\Object\Fields\AdCreativeFields;
use FacebookAds\Object\Fields\AdCreativeLinkDataFields;
use FacebookAds\Object\Fields\AdCreativeObjectStorySpecFields;
use FacebookAds\Object\Values\AdCreativeCallToActionTypeValues;
use FacebookAds\Object\AdCreativeObjectStorySpec;
use FacebookAds\Object\AdCreativeLinkData;

$object_story_spec = new AdCreativeObjectStorySpec();
$object_story_spec->setData(array(
  AdCreativeObjectStorySpecFields::PAGE_ID => <PAGE_ID>,
  AdCreativeObjectStorySpecFields::TEMPLATE_DATA =>
    (new AdCreativeLinkData())->setData(array(
      AdCreativeLinkDataFields::MESSAGE =>
        'Book your upcoming stay in {{hotel.city}}',
      AdCreativeLinkDataFields::NAME => '{{hotel.name | titleize}}',
      AdCreativeLinkDataFields::LINK => '<LINK>',
      AdCreativeLinkDataFields::DESCRIPTION =>
        '{{hotel.description}}',
      AdCreativeLinkDataFields::ADDITIONAL_IMAGE_INDEX => 0,
      AdCreativeLinkDataFields::CALL_TO_ACTION => array(
        'type' => AdCreativeCallToActionTypeValues::BOOK_TRAVEL,
      ),
    )),
));

$creative = new AdCreative(null, 'act_<AD_ACCOUNT_ID>');
$creative->setData(array(
  AdCreativeFields::NAME => 'Dynamic Ad Template Creative Sample',
  AdCreativeFields::OBJECT_STORY_SPEC => $object_story_spec,
  AdCreativeFields::TEMPLATE_URL_SPEC =>
    array(
      'config' => array(
        'app_id' => '123456789012345',
      ),
      'ios' => array(
        'url' => 'example://home/hotel'.
          '?id={{hotel.hotel_id | urlencode}}'.
          '&startDate={{trip.checkin_date date_format:Y-m-d | urlencode}}'.
          '&endDate={{trip.checkout_date date_format:Y-m-d | urlencode}}',
      ),
      'web' => array(
        'url' => 'http://www.example.com/hotel'.
          '?id={{hotel.hotel_id | urlencode}}'.
          '&startDate={{trip.checkin_date date_format:Y-m-d | urlencode}}'.
          '&endDate={{trip.checkout_date date_format:Y-m-d | urlencode}}',
      )
    ),
  AdCreativeFields::PRODUCT_SET_ID => <PRODUCT_SET_ID>,
));

$creative->create();
from facebookads.adobjects.adcreative import AdCreative
from facebookads.adobjects.adcreativeobjectstoryspec \
    import AdCreativeObjectStorySpec

story = AdCreativeObjectStorySpec()
story[story.Field.page_id] = <PAGE_ID>
story[story.Field.template_data] = {
    'message': 'Book your upcoming stay in {{hotel.city}}',
    'name': '{{hotel.name | titleize}}',
    'link': '<LINK>',
    'description': '{{hotel.description}}',
    'additional_image_index': 0,
    'call_to_action': {
        'type': 'BOOK_TRAVEL',
    },
}

creative = AdCreative(parent_id='act_<AD_ACCOUNT_ID>')
creative[AdCreative.Field.name] = 'Dynamic Ad Template Creative Sample'
creative[AdCreative.Field.object_story_spec] = story
template_url = ('http://www.example.com/hotel.aspx?id={{hotel.hotel_id}}'
                '&startDate={{trip.checkin_date date_format:Y-m-d}}'
                '&endDate={{trip.checkout_date date_format:Y-m-d}}')
creative[AdCreative.Field.template_url] = template_url
creative[AdCreative.Field.product_set_id] = <PRODUCT_SET_ID>
creative.remote_create()
curl \
  -F 'name=Dynamic Ad Template Creative Sample' \
  -F 'object_story_spec={ 
    "page_id": "<PAGE_ID>", 
    "template_data": { 
      "additional_image_index": 0, 
      "call_to_action": {"type":"BOOK_TRAVEL"}, 
      "description": "{{hotel.description}}", 
      "link": "<LINK>", 
      "message": "Book your upcoming stay in {{hotel.city}}", 
      "name": "{{hotel.name | titleize}}" 
    } 
  }' \
  -F 'template_url_spec={ 
    "config": {"app_id":"123456789012345"}, 
    "ios": { 
      "url": "example:\/\/home\/hotel?id={{hotel.hotel_id | urlencode}}&startDate={{trip.checkin_date date_format:Y-m-d | urlencode}}&endDate={{trip.checkout_date date_format:Y-m-d | urlencode}}" 
    }, 
    "web": { 
      "url": "http:\/\/www.example.com\/hotel?id={{hotel.hotel_id | urlencode}}&startDate={{trip.checkin_date date_format:Y-m-d | urlencode}}&endDate={{trip.checkout_date date_format:Y-m-d | urlencode}}" 
    } 
  }' \
  -F 'product_set_id=<PRODUCT_SET_ID>' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v2.11/act_<AD_ACCOUNT_ID>/adcreatives

بيع البديل الأغلى لرحلة جوية (الإصدار 2.10 والأحدث من API فقط)

للحصول على خيارات بيع البديل الأغلى مثل تحديد المقاعد أو أولوية الصعود بالنسبة للجمهور الذي اشترى رحلات جوية:

  1. قم بتوفير جمهور من خلال تضمين أحداث PURCHASE.
  2. (موصى به) في recommender_settings التابع لتصميم الإعلان، حدد أحداث PURCHASE لتوصية الإعلانات.
curl \
  -F 'name=Advantage+ Catalog Ad Template Creative Up-sell Sample' \
  -F 'object_story_spec={ 
    "page_id": "<PAGE_ID>", 
    "template_data": { 
      "additional_image_index": 0, 
      "call_to_action": {"type":"LEARN_MORE"}, 
      "description": "{{flight.description}}", 
      "link": "<LINK>", 
      "message": "Book extra leg room on your flight from {{flight.origin_city}} to {{flight.destination_city}}", 
    } 
  }' \
  -F 'template_url_spec={ 
    "config": {"app_id":"<APP_ID>"}, 
    "ios": { 
      "url": "example:\/\/home\/flight?id={{flight.origin_airport}}&startDate={{trip.departing_departure_date date_format:Y-m-d | urlencode}}&endDate={{trip.returning_departure_date date_format:Y-m-d | urlencode}}" 
    }, 
    "web": { 
      "url": "http:\/\/www.example.com\/flight?id={{flight.origin_airport}}&startDate={{trip.checkin_date date_format:Y-m-d | urlencode}}&endDate={{trip.returning_departure_date date_format:Y-m-d | urlencode}}" 
    } 
  }' \
  -F 'product_set_id=<FLIGHT_SET_ID>' \
  -F 'recommender_settings'={"preferred_events":["Purchase"]}\ 
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/VERSION/act_<AD_ACCOUNT_ID>/adcreatives

تصميم التراكب

تتيح التراكبات للمُعلنين إضافة معلومات الأسعار (كسعر مباشر أو بنسبة خصم) لكل عنصر ضمن إعلانات كتالوج Advantage+.

خيارات التراكب حسب نوع الكتالوج

يمكنك استخدام أنواع التراكبات التالية حسب نوع الكتالوج الذي تستخدمه في المجموعة الإعلانية:

  • الفندق: price وstrikethrough و% off
  • الوجهة: price
  • الرحلة الجوية: price

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

خيارات تصميم التراكب

يتم الحصول على معلومات حول الأسعار ديناميكيًا من العمودين السعر وسعر البيع في قائمة المنتجات. يمكن للمُعلنين الاختيار من بين التخصيصات التالية لتراكب إعلانات كتالوج Advantage+ الخاصة بهم:

  • الأشكال: شكل كبسولة ودائرة ومثلث.
  • المواضع: أربع زوايا ثابتة وهي: TOP_LEFT وTOP_RIGHT وBOTTOM_LEFT وBOTTOM_RIGHT. بالنسبة للمثلث، يتم دعم الزاويتين TOP_LEFT وTOP_RIGHT فقط.
  • الخطوط: قائمة بالخطوط المُعيّنة مسبقًا، مثل Droid Serif وOpen Sans وما إلى ذلك.
  • أنواع التراكبات المدعومة هي: price وstrikethrough و% off. ملاحظة: يتوفر النوعان strikethrough و% off للفنادق فقط.

تعرف على المزيد حول كيفية إضافة التراكبات.

المثال—تراكب السعر يتوسطه خط في إعلان فندق

curl \
  -F 'name=Test Templates in Overlay' \
  -F 'object_story_spec={
    "page_id": "<PAGE_ID>",
    "template_data": {
      "description": "Description",
      "link": "<LINK>", 
      "name": "Name: {{hotel.name}}",
      "message" : "Come visit {{hotel.city}}!",
      "image_overlay_spec": {
        "overlay_template":"pill_with_text",
        "text_font":"droid_serif_regular",
        "text_type":"strikethrough_price",
        "position":"top_left",
        "theme_color":"background_e50900_text_ffffff",
        "float_with_margin":"true",
        "text_template_tags": ["{{hotel.price round}}", "{{hotel.sale_price round}}"],
      }
    }
  }' \
  -F 'product_set_id=<PRODUCT_SET_ID>' \
  -F 'template_url=http://www.example.com' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v2.10/act_897427477067185/adcreatives

لإنشاء الإعلان، استخدم المعرفين ad_set_id وcreative_id.

curl -X POST \ -F 'name="My Ad"' \ -F 'adset_id="<AD_SET_ID>"' \ -F 'creative={ "creative_id": "<CREATIVE_ID>" }' \ -F 'status="PAUSED"' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v21.0/act_<AD_ACCOUNT_ID>/ads
'use strict'; const bizSdk = require('facebook-nodejs-business-sdk'); const AdAccount = bizSdk.AdAccount; const Ad = bizSdk.Ad; 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 Ad', 'adset_id' : '<adSetID>', 'creative' : {'creative_id':'<adCreativeID>'}, 'status' : 'PAUSED', }; const ads = (new AdAccount(id)).createAd( fields, params ); logApiCallResult('ads api call complete.', ads);
require __DIR__ . '/vendor/autoload.php'; use FacebookAds\Object\AdAccount; use FacebookAds\Object\Ad; 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 Ad', 'adset_id' => '<adSetID>', 'creative' => array('creative_id' => '<adCreativeID>'), 'status' => 'PAUSED', ); echo json_encode((new AdAccount($id))->createAd( $fields, $params )->exportAllData(), JSON_PRETTY_PRINT);
from facebook_business.adobjects.adaccount import AdAccount from facebook_business.adobjects.ad import Ad 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 Ad', 'adset_id': '<adSetID>', 'creative': {'creative_id':'<adCreativeID>'}, 'status': 'PAUSED', } print AdAccount(id).create_ad( 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).createAd() .setName(\"My Ad\") .setAdsetId(<adSetID>L) .setCreative( new AdCreative() .setFieldId(\"<adCreativeID>\") ) .setStatus(Ad.EnumStatus.VALUE_PAUSED) .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) ads = ad_account.ads.create({ name: 'My Ad', adset_id: '<adSetID>', creative: {'creative_id':'<adCreativeID>'}, status: 'PAUSED', })

الخطوات التالية

معاينة الإعلان

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

أنشئ معاينة لإعلانك باستخدام API معاينات الإعلانات. احرص على تضمين product_item_ids لتحديد عناصر الكتالوج التي تظهر في المعاينة وتضمين start_date وend_date لتحديد تواريخ معينة.

curl -X GET \ -d 'ad_format="DESKTOP_FEED_STANDARD"' \ -d 'product_item_ids=[ "<PRODUCT_ITEM_ID>" ]' \ -d 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v21.0/<CREATIVE_ID>/previews
'use strict'; const bizSdk = require('facebook-nodejs-business-sdk'); const AdCreative = bizSdk.AdCreative; const AdPreview = bizSdk.AdPreview; const access_token = '<ACCESS_TOKEN>'; const app_secret = '<APP_SECRET>'; const app_id = '<APP_ID>'; const id = '<AD_CREATIVE_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 = { 'ad_format' : 'DESKTOP_FEED_STANDARD', 'product_item_ids' : ['<productItemID>'], }; const previewss = (new AdCreative(id)).getPreviews( fields, params ); logApiCallResult('previewss api call complete.', previewss);
require __DIR__ . '/vendor/autoload.php'; use FacebookAds\Object\AdCreative; use FacebookAds\Object\AdPreview; use FacebookAds\Api; use FacebookAds\Logger\CurlLogger; $access_token = '<ACCESS_TOKEN>'; $app_secret = '<APP_SECRET>'; $app_id = '<APP_ID>'; $id = '<AD_CREATIVE_ID>'; $api = Api::init($app_id, $app_secret, $access_token); $api->setLogger(new CurlLogger()); $fields = array( ); $params = array( 'ad_format' => 'DESKTOP_FEED_STANDARD', 'product_item_ids' => array('<productItemID>'), ); echo json_encode((new AdCreative($id))->getPreviews( $fields, $params )->getResponse()->getContent(), JSON_PRETTY_PRINT);
from facebook_business.adobjects.adcreative import AdCreative from facebook_business.adobjects.adpreview import AdPreview from facebook_business.api import FacebookAdsApi access_token = '<ACCESS_TOKEN>' app_secret = '<APP_SECRET>' app_id = '<APP_ID>' id = '<AD_CREATIVE_ID>' FacebookAdsApi.init(access_token=access_token) fields = [ ] params = { 'ad_format': 'DESKTOP_FEED_STANDARD', 'product_item_ids': ['<productItemID>'], } print AdCreative(id).get_previews( 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_CREATIVE_ID>\"; APIContext context = new APIContext(access_token).enableDebug(true); new AdCreative(id, context).getPreviews() .setAdFormat(AdPreview.EnumAdFormat.VALUE_DESKTOP_FEED_STANDARD) .setProductItemIds(\"[\\"<productItemID>\\"]\") .execute(); } }
require 'facebook_ads' access_token = '<ACCESS_TOKEN>' app_secret = '<APP_SECRET>' app_id = '<APP_ID>' id = '<AD_CREATIVE_ID>' FacebookAds.configure do |config| config.access_token = access_token config.app_secret = app_secret end ad_creative = FacebookAds::AdCreative.get(id) previewss = ad_creative.previews({ fields: { }, ad_format: 'DESKTOP_FEED_STANDARD', product_item_ids: ['<productItemID>'], })

المعلمات

اسم الحقل ونوعه الوصف

product_item_ids

النوع: array[string]

  • الفندق: قائمة برموز معرفات FBID للفنادق أو قائمة برموز معرفات الفنادق بتشفير Base64url. تكون جميع الرموز بالشكل hotel_catalog:{catalog_id}:{base64urlencode(hotel_id)}
  • الوجهة: قائمة برموز معرفات FBID للوجهات أو قائمة برموز معرفات الوجهات بتشفير Base64url. تكون جميع الرموز بالشكل destination_catalog:{catalog_id}:{base64urlencode(destination_id)}
  • الرحلة الجوية: معرف FBID لرحلة جوية أو رمز معرف رحلة جوية بتشفير Base64url. تكون جميع الرموز بالشكل flight_catalog:{catalog_id}:{base64urlencode(destination_id)}

start_date

النوع: string

يتم عرض المعاينة مع إشارة نية المستخدم، مثل 2016-12-24.

  • بالنسبة للفندق، سيمثل قيمة trip.checkin_date
  • بالنسبة للوجهة، سيمثل قيمة trip.travel_start
  • بالنسبة للرحلة الجوية، سيمثل قيمة trip.departing_departure_date

end_date

النوع: string

يتم عرض المعاينة مع إشارة الهدف لدى المستخدم، مثل 2017-01-01.

  • بالنسبة للفندق، سيمثل قيمة trip.checkout_date
  • بالنسبة للوجهة، سيمثل قيمة trip.travel_end
  • بالنسبة للرحلة الجوية، سيمثل قيمة trip.returning_departure_date

الحصول على رؤى وإحصائيات عن إعلانات السفر

للحصول على رؤى إعلانية عن أحد كائنات السفر مثل فندق، احرص على إرسال استدعاء GET إلى /insights. ملاحظة: تذكّر إضافة المعرف product_id إلى المعلمة breakdown.

بالنسبة للفندق والوجهة، يظهر تقسيم product id لكل من المعرفين hotel_id أو destination_id. بالنسبة للرحلة الجوية، يعرض تقسيم product id القيمة origin_airport:destination_airport.

الحصول على التعليقات وتسجيلات الإعجاب

لاستعادة التعليقات أو "تسجيلات الإعجاب" لإعلانات كتالوج Advantage+، استخدم API المنشور الديناميكي.