リアルタイムで広告の状態をモニタリングします。広告オブジェクトのメタデータまたはインサイトデータに変更が加えられると、すぐにトリガーベースのルールが評価されます。メタデータ変更の遅延は通常なら数秒、インサイトの変更の遅延は通常なら数分以内です(現在のp99では約7.5分)。
トリガーベースのルールでは、常にリアルタイムでチェックされるため、schedule_spec
はサポートされていません。
トリガーベースのルールは、現時点ではAPIでのみ利用可能であり、広告マネージャではアクセスできません。
trigger
オブジェクトは、ルールの評価方法を定義します。METADATA_CREATION
を除くすべてのトリガータイプには、トリガーfield
が必要です。トリガーベースのルールが条件をチェックするのは、このフィールドが変更された時点だけです。
トリガーベースのルールに指定できるtrigger
は1つだけです。複数の指標に対する条件や制約がある場合、残りをfilters
として追加することができます。
filters
フィールドの使い方は、スケジュールベースのルールと同じです。トリガーベースのルールの評価がパスするのは、trigger
とすべてのfilters
とが比較条件を満たす場合だけです。つまり、あるフィールドの変更がもう一方のフィールドの変更につながる場合、トリガーとフィルターは交換可能です。例えば、cost_per_mobile_app_install
> X
かつspent
> Y
の場合にトリガーするルールであれば、cost_per_mobile_app_install
またはspent
のどちらか一方をトリガーとして、もう一方をフィルターの1つとして使うことができます。それらの2つのフィールドは依存関係にあるからです。
trigger
オブジェクトはevaluation_spec
の下に属し、その構造は次のとおりです。
トリガーオブジェクトキー | 説明 |
---|---|
| トリガーベースのルールのタイプ。現在サポートされているオプションは次のとおりです。
|
| 基礎となるフィールド。 |
| 基礎となるフィルター値。 |
| 基礎となるフィルター演算子。 |
作成する広告ルールのトリガー方法には、以下の4種類があります。
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
オプションを指定する必要があります。以下は、広告セットの1日の予算が変化するたびに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日の予算が変化して、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"
type
がSTATS_MILESTONE
の場合、evaluation_spec
は、filters
配列内の条件に一致するオブジェクトについてfield
がvalue
の倍数になった時点でトリガーします。
このタイプの規則の場合、トリガーのoperator
はEQUAL
でなければならず、time_preset
フィルターの値はLIFETIME
でなければなりません。
サポートされるフィールドは、さらに限られることになります。下記に記載されていないフィールドは、トリガーfield
としてはサポートされませんが、filters
のリスト内のフィルターとして使うことは可能です。さらに、トリガーのvalue
には、field
に応じて求められる最小値があります。
サポートされているトリガーフィールド値 | 最小値 |
---|---|
| 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
を使う場合、指定された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
のいずれかです。
以下に、統計変更ルールの例を示します。過去3日間に、広告が5000人を超える人にリーチし、広告購入単価が$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によるアプリのサブスクリプションを設定する必要があります。ルールAPIから通知を受け取るため、コールバックURL、Facebookアプリ、Webhooksを以下のように設定します。
Webhooksガイドを参照して、認証時のチャレンジと応答を処理できるコールバックURLを作成します。コールバックURLは、ルールがトリガーされた際に送信されるデータ構造を処理します。
{ 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を追加するコールバックURLによって認証のチャレンジと応答が処理されたら、ルールがトリガーされる際にそれをアプリに登録します。
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
について詳しくは、サブスクリプションのリファレンスをご覧ください。