实时监控您广告的状态。对于与某项触发类规则相关的广告对象,其元数据或成效分析数据发生更改时,系统会立即对此规则进行评估。元数据的更改通常会有几秒钟延迟,而成效分析更改的延迟通常在几分钟之内(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
条件。以下示例展示了在广告组的单日预算发生更改且超过 1,000 时如何接收通知:
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"
对于符合 filters
数组中各条件的对象,在 STATS_MILESTONE
设为 type
的情况下,field
达到这些对象 value
的倍数时,evaluation_spec
就会触发。
对于这种特定的规则类型,触发条件 operator
必须是 EQUAL
,且 time_preset
筛选条件必须具有 LIFETIME
值。
该规则有一组受限性更强的支持字段。对于未列于下方的任何字段,不支持其作为触发条件 field
,但其仍可作为筛选条件纳入 filters
列表中。此外,该规则还为触发条件的 value
提供了必要的最低值,具体值取决于 field
。
支持的触发字段值 | 最小值 |
---|---|
| 1,000 |
| 1,000 |
| 1,000 |
| 10 |
| 10 |
| 1,000(美分) |
| 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
的情况下,在指定 time_preset
内,此触发条件的逻辑运算符 AND
和所有筛选条件的评估从 false
更改为 true
时,会触发 execution_spec
。
如果对逻辑运算符 AND
的后续评估也为 true,则 execution_spec
不会执行。但是,如果对逻辑运算符 AND
的评估从 true
更改为 false
,在评估改回 true
时,execution_spec
会执行。
对于这种特定的规则类型,触发条件 operator
可以是 GREATER_THAN
、LESS_THAN
、IN_RANGE
或 NOT_IN_RANGE
。
以下是一个统计数据更改规则示例。每次广告覆盖人数超过 5,000 人,且在过去 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
Webhooks 添加到您的应用回调网址处理了验证中的挑战和响应后,请在某项规则被触发时在您的应用中注册此规则:
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
详情,请参阅“订阅”参考文档。