即時監控廣告的狀態。相關廣告物件的中繼資料或洞察報告資料一旦變更,我們就會評估觸發型規則。中繼資料變更的延遲時間通常為幾秒鐘,而洞察報告變更的延遲時間通常在幾分鐘內(目前 p99 約為 7.5 分鐘)。
觸發型規則不支援 schedule_spec
,因為這類規則一律為即時檢查。
目前只能在 API 中使用觸發型規則,無法透過廣告管理員存取。
trigger
物件定義評估規則的方式。所有觸發類型都需要觸發條件 field
,但 METADATA_CREATION
除外。觸發型規則只會在此欄位變更時檢查其條件。
觸發型規則只能有一個 trigger
。如果您對多項衡量指標設有條件或限制,可以將其餘衡量指標新增為 filters
。
filters
欄位的使用方式與排程型規則相同。只有在 trigger
和所有 filters
皆符合比較條件時,觸發型規則才會通過評估。因此,如果一個欄位的變更會導致另一個欄位變更,則觸發條件和篩選條件可以互換。例如,如果您希望在 cost_per_mobile_app_install
> X
且 spent
> Y
時觸發規則,則可以使用 cost_per_mobile_app_install
或 spent
其中任一項做為觸發條件,而另一項做為篩選條件之一,因為這兩個欄位具有相依性。
trigger
物件屬於 evaluation_spec
,並遵循以下結構:
觸發物件索引鍵 | 說明 |
---|---|
| 觸發型規則的類型。目前支援的選項如下:
|
| 基本欄位。不用於 |
| 基本篩選條件值。不用於 |
| 基本篩選條件運算子。不用於 |
您可以建立以四種不同方式觸發的廣告規則:
METADATA_CREATION
或 METADATA_UPDATE
STATS_MILESTONE
或 STATS_CHANGE
此規則用於監控廣告物件何時建立。trigger
規格中只需要 type
。針對篩選條件,請指定您想要監控的 entity_type
。
以下是中繼資料建立規則的範例,可監控屬於特定目標的所有廣告的建立。每次在 APP_INSTALLS
目標廣告行銷活動下建立新廣告時,都會發送 ping。
curl -i -X POST \ -F 'name=Metadata Creation Example 1' \ -F 'evaluation_spec={ "evaluation_type" : "TRIGGER", "trigger" : { "type": "METADATA_CREATION", }, "filters" : [ { "field": "entity_type", "value": "AD", "operator": "EQUAL", }, { "field": "campaign.objective", "value": ["APP_INSTALLS"], "operator": "IN", }, ] }' \ -F 'execution_spec={ "execution_type": "PING_ENDPOINT" }' \ -F "access_token=<ACCESS_TOKEN>" \ "https://graph.facebook.com/<VERSION>/<AD_ACCOUNT_ID>/adrules_library"
此規則用於監控廣告物件的中繼資料何時變更。請參閱支援的中繼資料欄位清單。在 trigger
規格內,field
是必要項目,而 value
和 operator
是選用項目。
如果您對某個欄位的變更感興趣,無論其值為何,您都只需要指定 field
選項。以下範例會在每次廣告組合的單日預算變更時,傳送 Facebook 通知給您。
curl -i -X POST \ -F 'name=Metadata Update Example 1' \ -F 'evaluation_spec={ "evaluation_type" : "TRIGGER", "trigger" : { "type": "METADATA_UPDATE", "field": "daily_budget", }, "filters" : [ { "field": "entity_type", "value": "ADSET", "operator": "EQUAL", }, ] }' \ -F 'execution_spec={ "execution_type": "NOTIFICATION" }' \ -F "access_token=<ACCESS_TOKEN>" \ "https://graph.facebook.com/<VERSION>/<AD_ACCOUNT_ID>/adrules_library"
如果您只對一小部分事件感興趣,可以提供 operator
和 value
選項來精簡 trigger
條件。以下範例會在廣告組合的單日預算變更並超過 1000 時收到通知:
curl -i -X POST \ -F 'name=Metadata Update Example 2' \ -F 'evaluation_spec={ "evaluation_type" : "TRIGGER", "trigger" : { "type": "METADATA_UPDATE", "field": "daily_budget", "value": 1000, "operator": "GREATER_THAN" }, "filters" : [ { "field": "entity_type", "value": "ADSET", "operator": "EQUAL", }, ] }' \ -F 'execution_spec={ "execution_type": "PING_ENDPOINT" }' \ -F "access_token=<ACCESS_TOKEN>" \ "https://graph.facebook.com/<VERSION>/<AD_ACCOUNT_ID>/adrules_library"
若使用 STATS_MILESTONE
做為 type
,當 field
達到符合 filters
陣列中條件之物件的 value
倍數時,就會觸發 evaluation_spec
。
針對這種特定類型的規則,觸發條件 operator
必須為 EQUAL
,而 time_preset
篩選條件的值必須為 LIFETIME
。
有一組限制性更強的支援欄位。下面未列出的任何欄位均不支援做為觸發條件 field
,但仍可用作 filters
清單中的篩選條件。此外,根據 field
,觸發條件的 value
還需要有最小值。
支援的觸發條件欄位值 | 最小值 |
---|---|
| 1000 |
| 1000 |
| 1000 |
| 10 |
| 10 |
| 1000(美分) |
| 5 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
以下是統計資料里程碑規則的範例,每當有人在您的貼文下留言時,就都會發送 ping:
curl \ -F 'name=Rule 1' \ -F 'evaluation_spec={ "evaluation_type" : "TRIGGER", "trigger" : { "type": "STATS_MILESTONE", "field": "post_comment", "value": 1, "operator": "EQUAL" }, "filters" : [ { "field": "entity_type", "value": "CAMPAIGN", "operator": "EQUAL", }, { "field": "time_preset", "value": "LIFETIME", "operator": "EQUAL", }, ] }' \ -F 'execution_spec={ "execution_type": "PING_ENDPOINT" }' \ -F "access_token=<ACCESS_TOKEN>" \ https://graph.facebook.com/<VERSION>/<AD_ACCOUNT_ID>/adrules_library
若使用 STATS_CHANGE
做為觸發條件 type
,當觸發條件的邏輯 AND
和所有篩選條件在給定的 time_preset
內從 false
評估為 true
時,就會觸發 execution_spec
。
如果邏輯 AND
的後續評估也是 true,execution_spec
則不會執行。然而,如果邏輯 AND
的評估從 true
變更為 false
,則 execution_spec
會在其變回 true
時執行。
針對這種特定類型的規則,觸發條件 operator
可以是 GREATER_THAN
、LESS_THAN
、IN_RANGE
或 NOT_IN_RANGE
。
以下是統計資料變更規則的範例。每當廣告廣告觸及人數超過 5000 人,且過去 3 天內每次購買金額超過 10 美元時,則暫停廣告。
curl \ -F 'name=Rule 1' \ -F 'evaluation_spec={ "evaluation_type" : "TRIGGER", "trigger" : { "type": "STATS_CHANGE", "field": "cost_per_purchase_fb", "value": 1000, "operator": "GREATER_THAN", }, "filters" : [ { "field": "entity_type", "value": "AD", "operator": "EQUAL" }, { "field": "time_preset", "value": "LAST_3_DAYS", "operator": "EQUAL" }, { "field": "reach", "value": 5000, "operator": "GREATER_THAN" } ] }' \ -F 'execution_spec={ "execution_type": "PAUSE" }' \ -F "access_token=<ACCESS_TOKEN>" \ https://graph.facebook.com/<VERSION>/<AD_ACCOUNT_ID>/adrules_library
若使用 DELIVERY_INSIGHTS_CHANGE
做為觸發條件 type
,當 evaluation_spec
中定義的所有篩選條件皆評估為 true
,且evaluation_spec
中定義的觸發條件正好從 false
變更為 true
時,就會觸發此規則。
在後續評估中,如果篩選條件和觸發條件繼續評估為 true
,則不會再觸發此規則。
為了使用執行類型 PING_ENDPOINT
,您需要透過 Webhooks 為您的應用程式設定訂閱。設定回呼網址、Facebook 應用程式和 Webhooks,以從規則 API 取得通知:
請參閱 Webhooks 指南,建立一個可以在驗證期間處理提問和回應的回呼網址。回呼網址將處理觸發規則時所傳送的資料結構:
{ object: 'application', entry: [{ id: '<APPLICATION_ID>', time: 1468938744, changes: [{ field: 'ads_rules_engine', value: { 'rule_id': 1234, 'object_id': 5678, 'object_type': 'ADSET', 'trigger_type': 'STATS_CHANGE', 'trigger_field': 'COST_PER_LINK_CLICK', 'current_value': '15.8', } }], }], }
current_value
欄位是 JSON 編碼字串。其值可以是雙引號含括的字串、數字,或是以 [
(左括號)開頭並以 ]
(右括號)結尾的陣列。
ads_rules_engine
Webhook 新增至您的應用程式一旦回呼網址處理驗證的提問和回應後,請在觸發規則時,將其註冊在您的應用程式中:
ad_rules_engine
。或者,也可以透過圖形 API 來執行此作業(使用應用程式存取權杖,而不是用戶存取權杖):
curl \ -F "object=application" \ -F "callback_url=<CALLBACK_URL>" \ -F "fields=ads_rules_engine" \ -F "verify_token=<VERIFY_TOKEN>" \ -F "access_token=<APP_ACCESS_TOKEN>" \ "https://graph.facebook.com/<VERSION>/<APP_ID>/subscriptions"
如需 APP_ID/subscriptions
的詳細資訊,請參閱訂閱參考資料。