即時體驗

即時體驗是全螢幕點擊後的廣告目的地,可在動態消息中幾乎即時地載入廣告。

如果您在 API 中看到任何提及 canvas 之處,就是參照即時體驗。全螢幕互動廣告是此格式的舊名稱。

準備工作

若要建立和管理即時體驗,您需要:

限制

  • 您只可更新取消發佈的即時體驗。
  • Instagram 使用即時體驗 API 時有其限制。
  • Facebook 限時動態不支援使用即時體驗的廣告。

建立

若要建立即時體驗,您需要 Facebook 粉絲專頁的編號(PAGE-ID)和想要加入體驗的任何元素,例如相片、按鈕和文字。

use FacebookAds\Api;
use FacebookAds\Http\RequestInterface;

$params = array(
  'background_color' => 'FFFFFF',
  'body_element_ids' => array(<CANVAS_PHOTO_ID>),
  'is_hidden' => false,
  'is_published' => false,
  'name' => 'Canvas Name',
);

$data = Api::instance()->call(
  '/' . <PAGE_ID> . '/canvases',
  RequestInterface::METHOD_POST,
  $params)->getContent();
curl \
  -F 'background_color=FFFFFF' \
  -F 'body_element_ids=["<CANVAS_PHOTO_ID>"]' \
  -F 'is_hidden=' \
  -F 'is_published=' \
  -F 'name=Canvas Name' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v2.11/<PAGE_ID>/canvases

元素

名稱說明

按鈕

即時體驗內的按鈕。button_style 欄位為必要項目。

輪播廣告

即時體驗的輪播廣告。

頁尾

即時體驗的頁尾。

頁首

即時體驗的頁首。

相片

即時體驗內的相片。若是已上傳至 Facebook 粉絲專頁的相片,您應提供 PHOTO-ID

產品清單

即時體驗的產品清單。

商品組合

即時體驗中所顯示之高效速成+ 目錄廣告商品目錄中的商品組合。

商店定位工具

即時體驗內的商店定位工具。

文字

即時體驗內顯示的文字及其樣式。

影片

即時體驗內的影片。若是已上傳至 Facebook 粉絲專頁的影片,您應提供 VIDEO-ID

刪除元素

若要刪除元素,請傳送包含欲刪除之元素編號的 DELETE 要求。

use FacebookAds\Api;
use FacebookAds\Http\RequestInterface;

$data = Api::instance()->call(
  '/' . <CANVAS_ELEMENT_ID>,
  RequestInterface::METHOD_DELETE,
  array())->getContent();
curl -X DELETE \
  -d 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v2.11/<CANVAS_ELEMENT_ID>

取得現有即時體驗

若要取得現有即時體驗的相關資訊,您需要即時體驗的編號(CANVAS-ID)。

use FacebookAds\Api;
use FacebookAds\Http\RequestInterface;

$params = array(
  'fields' => array(
    'body_elements',
    'canvas_link',
    'id',
    'is_hidden',
    'is_published',
    'name',
  ),
);

$data = Api::instance()->call(
  '/' . <CANVAS_ID>,
  RequestInterface::METHOD_GET,
  $params)->getContent();
curl -G \
  --data-urlencode 'fields=[ 
    "body_elements", 
    "canvas_link", 
    "id", 
    "is_hidden", 
    "is_published", 
    "name" 
  ]' \
  -d 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v2.11/<CANVAS_ID>

取得粉絲專頁的所有即時體驗

若要取得 Facebook 粉絲專頁所有現有即時體驗的相關資訊,您需要粉絲專頁的編號(PAGE-ID)。

use FacebookAds\Api;
use FacebookAds\Http\RequestInterface;

$params = array(
  'fields' => array(
    'background_color',
    'body_elements',
    'canvas_link',
    'id',
    'is_hidden',
    'is_published',
    'last_editor',
    'name',
    'owner',
    'update_time',
  ),
);

$data = Api::instance()->call(
  '/' . <PAGE_ID> . '/canvases',
  RequestInterface::METHOD_GET,
  $params)->getContent();
curl -G \
  --data-urlencode 'fields=[ 
    "background_color", 
    "body_elements", 
    "canvas_link", 
    "id", 
    "is_hidden", 
    "is_published", 
    "last_editor", 
    "name", 
    "owner", 
    "update_time" 
  ]' \
  -d 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v2.11/<PAGE_ID>/canvases

更新即時體驗

若要更新即時體驗,必須取消發佈該體驗,且您需要即時體驗的編號(CANVAS-ID)和任何欲更新的元素編號。

use FacebookAds\Api;
use FacebookAds\Http\RequestInterface;

$params = array(
  'background_color' => 'FFFFFF',
  'body_element_ids' => array(<CANVAS_PHOTO_ID>),
  'is_hidden' => false,
  'is_published' => false,
  'name' => 'Canvas Name',
);

$data = Api::instance()->call(
  '/' . <CANVAS_ID>,
  RequestInterface::METHOD_POST,
  $params)->getContent();
curl \
  -F 'background_color=FFFFFF' \
  -F 'body_element_ids=["<CANVAS_PHOTO_ID>"]' \
  -F 'is_hidden=' \
  -F 'is_published=' \
  -F 'name=Canvas Name' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v2.11/<CANVAS_ID>

使用範本

您可利用範本,快速建立針對特定業務目標的即時體驗。各範本有固定版面,不過您可將預設內容替換為您自己的圖像、影片、產品、文字和連結。

API 範本名稱範本編號說明

吸引新顧客

133471657203838

透過行動版連結頁面鼓勵用戶採取行動,藉此增加轉換次數。廣告管理員中的顧客取得範本

展示業務內容

1063217037112304

以令人目眩神迷的廣告吸引用戶探索您的品牌、產品或服務。廣告管理員中的故事行銷範本

銷售產品(沒有目錄)

424787857903852

上傳產品資訊(不使用目錄)來建立行動購物體驗。廣告管理員中的銷售產品(沒有目錄)範本

銷售產品:生活型態版面

1369752616394017

透過相片生動地展示產品來吸引用戶探索您的產品。廣告管理員中的型錄範本

銷售產品:網格版面

1932289657009030

運用您的商品目錄打造讓用戶直接從行動裝置購物的體驗。廣告管理員中的店面陳列範本

AR 體驗

AR 體驗範本僅透過廣告管理員提供。

取得範本的元素類型

步驟 1:取得範本的文件資訊

在下列範例中,傳送 GET 要求來判斷開發新客群特定範本所需的元素。

curl -i -X GET \
 "https://graph.facebook.com/VERSION/133471657203838?fields=document&access_token=ACCESS-TOKEN"

回應範例

{
  "document": {
    "name": "Get New Customers",
    "id": "397246414010297"
  },
  "id": "133471657203838"
}

步驟 2:取得元素類型

使用 document 欄位的編號取得特定範本可用的特定元素。

curl -i -X GET \
 "https://graph.facebook.com/VERSION/397246414010297?fields=body_elements&access_token=ACCESS-TOKEN"

傳回的清單顯示開發新客群範本可用的元素類型。

    {
  "body_elements": [
    {
      "name": "Cover Image or Video",
      "element_type": "PHOTO",
      "id": "397271930674412"
    },
    {
      "name": "Text",
      "element_type": "RICH_TEXT",
      "id": "397271920674413"
    },
    {
      "name": "Text",
      "element_type": "RICH_TEXT",
      "id": "397271910674414"
    },
    {
      "name": "Button",
      "element_type": "BUTTON",
      "id": "397271914007747"
    },
    {
      "name": "Carousel",
      "element_type": "CAROUSEL",
      "id": "397271940674411"
    },
    {
      "name": "Text",
      "element_type": "RICH_TEXT",
      "id": "397271917341080"
    },
    {
      "name": "Button",
      "element_type": "BUTTON",
      "id": "397271924007746"
    }
  ],
  "id": "397246414010297"
}

發佈

若要發佈即時體驗廣告,請向即時體驗編號(CANVAS-ID)傳送 POST 要求,並將 is_published 欄位設為 true

use FacebookAds\Api;
use FacebookAds\Http\RequestInterface;

$params = array(
  'is_published' => true,
);

$data = Api::instance()->call(
  '/' . <CANVAS_ID>,
  RequestInterface::METHOD_POST,
  $params)->getContent();
curl \
  -F 'is_published=1' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v2.11/<CANVAS_ID>

建立廣告創意

使用現有即時體驗的連結(CANVAS-LINK)建立廣告創意。

curl -X POST \ -F 'image_hash="<IMAGE_HASH>"' \ -F 'object_story_spec={ "page_id": "<PAGE_ID>", "link_data": { "image_hash": "<IMAGE_HASH>", "link": "<CANVAS_LINK>", "name": "Creative message", "call_to_action": { "type": "LEARN_MORE" } } }' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v19.0/act_<AD_ACCOUNT_ID>/adcreatives
'use strict'; const bizSdk = require('facebook-nodejs-business-sdk'); const AdAccount = bizSdk.AdAccount; const AdCreative = bizSdk.AdCreative; 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 = { 'image_hash' : '<imageHash>', 'object_story_spec' : {'page_id':'<pageID>','link_data':{'image_hash':'<imageHash>','link':'<canvasURI>','name':'Creative message','call_to_action':{'type':'LEARN_MORE'}}}, }; const adcreatives = (new AdAccount(id)).createAdCreative( fields, params ); logApiCallResult('adcreatives api call complete.', adcreatives);
require __DIR__ . '/vendor/autoload.php'; use FacebookAds\Object\AdAccount; use FacebookAds\Object\AdCreative; 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( 'image_hash' => '<imageHash>', 'object_story_spec' => array('page_id' => '<pageID>','link_data' => array('image_hash' => '<imageHash>','link' => '<canvasURI>','name' => 'Creative message','call_to_action' => array('type' => 'LEARN_MORE'))), ); echo json_encode((new AdAccount($id))->createAdCreative( $fields, $params )->exportAllData(), JSON_PRETTY_PRINT);
from facebook_business.adobjects.adaccount import AdAccount from facebook_business.adobjects.adcreative import AdCreative 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 = { 'image_hash': '<imageHash>', 'object_story_spec': {'page_id':'<pageID>','link_data':{'image_hash':'<imageHash>','link':'<canvasURI>','name':'Creative message','call_to_action':{'type':'LEARN_MORE'}}}, } print AdAccount(id).create_ad_creative( 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).createAdCreative() .setImageHash(\"<imageHash>\") .setObjectStorySpec( new AdCreativeObjectStorySpec() .setFieldLinkData( new AdCreativeLinkData() .setFieldCallToAction( new AdCreativeLinkDataCallToAction() .setFieldType(AdCreativeLinkDataCallToAction.EnumType.VALUE_LEARN_MORE) ) .setFieldImageHash(\"<imageHash>\") .setFieldLink(\"<canvasURI>\") .setFieldName(\"Creative message\") ) .setFieldPageId(\"<pageID>\") ) .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) adcreatives = ad_account.adcreatives.create({ image_hash: '<imageHash>', object_story_spec: {'page_id':'<pageID>','link_data':{'image_hash':'<imageHash>','link':'<canvasURI>','name':'Creative message','call_to_action':{'type':'LEARN_MORE'}}}, })

當廣告創意準備就緒後,您就可以繼續建立廣告群組、廣告組合和廣告行銷活動。

即時體驗廣告對話方塊

您可使用即時體驗廣告對話方塊,在網站中提供 Facebook 即時體驗廣告建立流程用戶介面。如需用戶介面元件的相關詳細資訊,請參閱對話方塊

若要瞭解如何設定 Facebook JavaScript SDK,請參閱:

登入用戶必須具有建立即時體驗的權限,才能使用 JavaScript SDK。若用戶想為粉絲專頁和企業建立即時體驗,卻沒有必要的權限,對話方塊會顯示錯誤。為避免出現錯誤,用戶必須屬於該企業,且必須具備該粉絲專頁的「建立廣告」權限。

接著觸發對話方塊:

FB.ui({         
  display: 'popup',
  method: 'instant_experiences_builder',
  business_id: '<BUSINESS_ID>',
  page_id: '<PAGE_ID>'
}, function(response) {
  // callback
});

您可以針對這款外掛程式提供下列設定:

名稱必要項目說明

display

設定值為 popup 的必要參數

method

設定值為 instant_experiences_builder 的必要參數

business_id

您的企業編號

page_id

您要為即時體驗與哪一個粉絲專頁編號建立關聯

canvas_id

您要編輯的即時體驗編號

canvas_id 參數為選用,其作用是讓用戶能夠編輯或預覽現有的即時體驗。即時體驗完成後,便無法再編輯。若要預覽即時體驗,建議您使用即時體驗預覽對話方塊。

成功時,外掛程式會提供以下回應:

{
  "success": true,
  "id": "CANVAS-ID"
}

傳回的編號就是已發佈的即時體驗,可以用在廣告行銷活動中。若沒有回應或傳回 undefined 回應,表示觀眾在完成即時體驗之前就關閉對話方塊。用戶可能已經儲存該即時體驗,但尚未完成。您可以使用圖形 API 提取所有屬於某個粉絲專頁的即時體驗,查看是否有任何未完成的體驗。

預覽即時體驗

Iframe 預覽 API

您可以呼叫會傳回 iframe 的預覽 API 來產生預覽即時體驗,類似廣告預覽 API:

curl -X GET \
  -d 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v18.0/<CANVAS_ID>/preview

此 API 會傳回類似如下的內容,您可以在 HTML 中嵌入傳回的 iframe 元素來查看:

{
"data": [
    {
      "body": "<iframe src=\"https://www.facebook.com/ads/canvas/preview?d=AQKELApdJxoVp2f3PHl8-pRtYuAh4-_eDupMDbh-pS9zde_EFxckhYQCXu7NYUi4PhhBA7uskIo2Ys3IjIVNGZiS&t=AQKGOPqGI-NWcv1YKbA\" width=\"405\" height=\"720\" scrolling=\"yes\" style=\"border: none;\"></iframe>"
    }
  ],
  "__www_request_id__": "AQnyr47Qp2r5M-ISqSiMgrw"
}

Facebook SDK

您可以使用此對話方塊提供即時體驗預覽功能,預覽畫面會和 Facebook 用戶在您網站上看見的畫面一致。如需瞭解用戶介面元件的詳細資訊,請參閱對話方塊

若要瞭解如何設定 Facebook JavaScript SDK,請參閱:

登入用戶必須具有建立即時體驗的權限,才能使用 JavaScript SDK。若用戶不具查看即時體驗的必要權限,對話方塊會顯示錯誤。

接著觸發預覽對話方塊:

FB.ui({         
  display: 'popup',
  method: 'instant_experiences_preview',
  canvas_id: 'CANVAS-ID'
});

您可以為外掛程式提供下列設定:

名稱必要項目說明

display

設定值為 popup 的必要參數

method

設定值為 instant_experiences_preview 的必要參數

canvas_id

您要預覽的即時體驗編號

建立即時體驗的廣告受眾

若要建立互動廣告受眾(已與即時體驗互動的用戶廣告受眾),請將 rule 欄位的 object_id 參數設為POST /act_AD-ACCOUNT/customaudiences 呼叫中的即時體驗編號(CANVAS-ID)。

開啟即時體驗的用戶

curl \
  -F 'name=Instant Experience Engagement Audience' \
  -F 'description=People who opened this Instant Experience' \
  -F 'rule=[{"object_id":"<CANVAS_ID>","event_name":"instant_shopping_document_open"}]' \
  -F 'access_token=<ACCESS_TOKEN>' \  
https://graph.facebook.com/<VERSION>/act_<AD_ACCOUNT_ID>/customaudiences

點擊即時體驗中任何連結的用戶

curl \
  -F 'name=Instant Experience Engagement Audience' \
  -F 'description=People who clicked any links in this Instant Experience' \
  -F 'rule=[{"object_id":"<CANVAS_ID>","event_name":"instant_shopping_element_click"}]' \
  -F 'access_token=<ACCESS_TOKEN>' \  
https://graph.facebook.com/<VERSION>/act_<AD_ACCOUNT_ID>/customaudiences

如需自訂廣告受眾的詳細資訊,請參閱參考資料:自訂廣告受眾

即時體驗和 Instagram 廣告

若要建置 Instagram 即時體驗,請使用和 Facebook 即時體驗相同的 API 呼叫。請注意,使用 Instagram 和即時體驗時有以下限制:

  • 版位 - 適用於 Instagram 動態消息和 Instagram 限時動態。如果您選擇 Instagram 限時動態,應選擇此作為專屬廣告版位。
  • 即時體驗元素 - 完整支援頁首和商品組合。

在 Instagram 上,部分支援以下的即時體驗元素:

  • 頁尾 - 不支援 swipe to open,在用戶端會顯示為 Tap to open
  • 輪播廣告 - 不支援連結至其他即時體驗的相片,在用戶端會顯示為無法點擊的連結。對於相片和影片,不支援「符合畫面高度」、「符合畫面寬度」或「傾移檢視」;會顯示為「符合畫面寬度」。
  • 按鈕 - 無法連結至其他即時體驗或 App Store。
  • 文字 - 不支援由右至左(RTL)閱讀方式的語言。
  • 影片 - 不支援 360 度影片。
  • 商店定位工具 - 不支援。

廣告洞察報告

如需可用衡量指標的總覽和說明,請參閱廣告洞察報告

另請參閱