Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les modèles personnalisés sans évaluation n’affectent pas l’évaluation de l’offre. Elles sont utilisées pour insérer des macros créatives personnalisées dans des appels de suivi d’impression et seront finalement utilisées pour d’autres fonctions, telles que l’impact sur Learn status.
Une macro créative est un espace réservé de texte qui est remplacé par des informations utiles au niveau de l’impression lorsqu’une création est servie. Les macros créatives sont utilisées pour transmettre des informations au niveau de l’impression à des systèmes en dehors de Xandr, que vous pouvez ensuite utiliser pour la création de rapports, l’optimisation et bien d’autres fins. Par exemple, si vous utilisez l’hébergement créatif tiers, vous pouvez utiliser une macro pour remplir un ID de segment dans votre emplacement, que le serveur créatif utiliserait ensuite pour déterminer le contenu créatif à servir.
Remarque
Cette fonctionnalité n’est disponible que pour l’élément de ligne augmenté.
Syntaxe feuille de macro créative
Pour qu’une macro communique avec le serveur publicitaire et passe les informations à remplir, elle doit être précédée d’une clé. La syntaxe des feuilles de macro créative est la suivante :
leaf_name: "name"
creative_macros["MACRO1"]: "value1"
creative_macros["MACRO2"]: "value2
Étant donné qu’il s’agit d’un modèle sans évaluation, une valeur n’est pas requise. Il est possible d’avoir une feuille qui se compose simplement de .leaf_name Pour plus d’informations, consultez l’exemple ci-dessous.
Remarque
Les restrictions sont les suivantes :
- Les macros respectent la casse.
- Les clés et les valeurs peuvent contenir du texte Unicode qui ne doit pas dépasser 100 octets encodés utf-8 au total.
- L’analyseur applique la transformation Unicode NFC et peut modifier les points de code Unicode et le résultat encodé utf-8 résultant. La meilleure façon d’éviter les comportements imprévisibles consiste à toujours utiliser du texte normalisé NFC à la fois dans la clé et la valeur.
- Il ne peut pas y avoir plus de deux macros par feuille.
Ne dupliquez pas les noms des macros créatives Xandr existantes. Cela peut entraîner un comportement imprévisible.
Flux de travail d’API
Étape 1. Create un élément de ligne augmenté
Dans cet exemple, nous créons un élément de ligne augmenté.
$cat ali
{
"line-item": {
"name": "ALI Custom Macro Test",
"code": "ali-cm-test",
"state": "inactive",
"line_item_type": "standard_v2",
"revenue_type": "cpm"
}
}
$curl -b cookies -X POST -s -d @ali "https://api.appnexus.com/line-item?advertiser_id=ADVERTISER_ID"
{
"response" : {
"num_elements" : 100,
"count" : 1,
"line-item" : {
"lifetime_pacing" : null,
"daily_budget_imps" : null,
"total_days" : null,
"budget_intervals" : null,
"creative_distribution_type" : null,
"remaining_days" : null,
"line_item_type" : "standard_v2",
"delivery_goal" : null,
"goal_pixels" : null,
"name" : "ALI Custom Macro Test",
"revenue_value" : 0,
"campaigns" : null,
"discrepancy_pct" : 0,
"code" : "ali-cm-test",
"pixels" : null,
"manage_creative" : false,
"flat_fee" : null,
"comments" : null,
"inventory_discovery_budget" : null,
"goal_value" : null,
"require_cookie_for_tracking" : true,
"insertion_orders" : null,
"clicktrackers" : null,
"enable_pacing" : null,
"flat_fee_type" : null,
"imptrackers" : null,
"profile_id" : null,
"broker_fees" : null,
"inventory_type" : "both",
"creatives" : null,
"valuation" : {
"bid_price_pacing_lever" : 0,
"max_avg_cpm" : null,
"goal_threshold" : null,
"performance_mkt_managed" : false,
"goal_target" : null,
"goal_confidence_threshold" : null,
"min_margin_pct" : null,
"campaign_group_valuation_strategy" : null,
"min_avg_cpm" : null,
"bid_price_pacing_enabled" : false,
"no_revenue_log" : false
},
"publishers_allowed" : "all",
"lifetime_budget" : null,
"custom_optimization_note" : null,
"currency" : "USD",
"daily_budget" : null,
"auction_event" : null,
"member_id" : 958,
"priority" : "5",
"advertiser_id" : 354236,
"inventory_discovery" : null,
"payout_margin" : null,
"lifetime_pacing_pct" : null,
"id" : 3925282,
"state" : "inactive",
"allow_safety_pacing" : null,
"custom_models" : null,
"timezone" : "EST5EDT",
"end_date" : null,
"incrementality" : null,
"expected_value_model" : null,
"goal_type" : "none",
"start_date" : null,
"last_modified" : "2017-03-20 16:00:21",
"lifetime_budget_imps" : null,
"click_url" : null,
"revenue_type" : "cpm",
"lifetime_pacing_span" : null,
"prefer_delivery_over_performance" : false,
"advertiser" : {
"name" : "MCG Test Advertiser",
"id" : 354236
},
"labels" : null
},
"status" : "OK",
"start_element" : 0,
"dbg_info" : {...},
"id" : 3925282
}
}
Pour plus d’informations, consultez Flux de travail ALI avec des modèles personnalisés.
Étape 2. Create une arborescence de modèles personnalisée
Dans cet exemple, nous créons un modèle personnalisé qui insère les macros créatives.
$cat custom-macro-tree
if user_hour = 1:
leaf_name: "cm_1"
creative_macros["ProductViewed"]: "15436"
creative_macros["LandingPage"]: "k2344"
else:
leaf_name: "cm_2"
creative_macros["TestMacro"]: "yourvaluegoeshere"
Étape 3. Charger le modèle personnalisé
Dans cet exemple, nous chargeons le modèle personnalisé.
$ cat custom_model
{
"custom_model": {
"name": "Custom Macro Test Model",
"member_id": 958,
"advertiser_id": ADVERTISER_ID,
"custom_model_structure": "decision_tree",
"model_output": "bid",
"model_text": "aWYgdXNlcl9ob3VyID0gMToNCiAgICBsZWFmX25hbWU6ICJjbV8xIg0KICAgIGNyZWF0aXZlX21hY3Jvc1siUHJvZHVjdFZpZXdlZCJdOiAiMTU0MzYiDQogICAgY3JlYXRpdmVfbWFjcm9zWyJMYW5kaW5nUGFnZSJdOiAiazIzNDQiDQplbHNlOg0KICAgIGxlYWZfbmFtZTogImNtXzIiDQogICAgY3JlYXRpdmVfbWFjcm9zWyJUZXN0TWFjcm8iXTogInlvdXJ2YWx1ZWdvZXNoZXJlIiMgY3JhZnQgeW91ciB0cmVlIGhlcmUhDQoNCg0KDQoJCQk="
}
}
$ curl -b cookies -X POST -d @custom-model "https://api.appnexus.com/custom-model?advertiser_id=ADVERTISER_ID"
{
"response" : {
"id" : "82495",
"num_elements" : 100,
"start_element" : 0,
"count" : 1,
"custom_model" : {
"code" : null,
"name" : "Custom Macro Test Model",
"model_text" : "<removed>",
"model_output" : "bid",
"active" : true,
"last_modified" : "2017-03-20 15:57:03",
"advertiser_id" : 354236,
"member_id" : 958,
"original_text" : "<removed>",
"compiled_text" : "<removed>",
"custom_model_structure" : "decision_tree",
"id" : 82495
},
"dbg_info" : {... },
"status" : "OK"
}
}
Pour plus d’informations, consultez Service de modèle personnalisé.
Étape 4. Associer le modèle personnalisé à l’élément de ligne
Dans cet exemple, nous associons le modèle personnalisé à l’élément de ligne en définissant le type champ dans le tableau de l’élément de custom_models ligne sur « non-évaluation ».
$cat update-ali
{
"line-item": {
"id": 11111,
"custom_models": [
{
"id": 82495,
"type": "nonvaluation"
}
]
}
}
$curl -b cookies -X PUT -d '@update-ali' "https://api.appnexus.com/line-item?id=11111&advertiser_id=ADVERTISER_ID"
{
"response" : {
"start_element" : 0,
"status" : "OK",
"count" : 1,
"num_elements" : 100,
"line-item" : {
"code" : "ali-cm-test",
"inventory_discovery_budget" : null,
"inventory_discovery" : null,
"daily_budget_imps" : null,
"clicktrackers" : null,
"advertiser_id" : 354236,
"id" : 3925282,
"goal_type" : "none",
"profile_id" : null,
"prefer_delivery_over_performance" : false,
"lifetime_pacing_pct" : null,
"manage_creative" : false,
"last_modified" : "2017-03-20 16:04:49",
"payout_margin" : null,
"flat_fee_type" : null,
"daily_budget" : null,
"click_model" : null,
"lifetime_pacing" : null,
"publishers_allowed" : "all",
"insertion_orders" : null,
"advertiser" : {
"id" : 354236,
"name" : "MCG Test Advertiser"
},
"enable_pacing" : null,
"end_date" : null,
"budget_intervals" : null,
"click_url" : null,
"priority" : "5",
"pixels" : null,
"valuation" : {
"max_avg_cpm" : null,
"min_margin_pct" : null,
"goal_confidence_threshold" : null,
"bid_price_pacing_enabled" : false,
"goal_threshold" : null,
"campaign_group_valuation_strategy" : null,
"performance_mkt_managed" : false,
"no_revenue_log" : false,
"bid_price_pacing_lever" : 0,
"goal_target" : null,
"min_avg_cpm" : null
},
"member_id" : 958,
"start_date" : null,
"imptrackers" : null,
"flat_fee" : null,
"custom_models" : [
{
"active" : "1",
"type" : "non_valuation",
"name" : "Custom Macro Test Model",
"id" : 82495
}
],
"delivery_goal" : null,
"currency" : "USD",
"expected_value_model" : null,
"timezone" : "EST5EDT",
"lifetime_pacing_span" : null,
"campaigns" : null,
"lifetime_budget" : null,
"incrementality" : null,
"custom_optimization_note" : null,
"name" : "ALI Custom Macro Test",
"creatives" : null,
"comments" : null,
"revenue_value" : 0,
"inventory_type" : "both",
"broker_fees" : null,
"line_item_type" : "standard_v2",
"require_cookie_for_tracking" : true,
"lifetime_budget_imps" : null,
"remaining_days" : null,
"goal_pixels" : null,
"state" : "inactive",
"total_days" : null,
"discrepancy_pct" : 0,
"goal_value" : null,
"labels" : null,
"revenue_type" : "cpm",
"allow_safety_pacing" : null,
"auction_event" : null,
"creative_distribution_type" : null
},
"dbg_info" : {...},
"id" : "3925282"
}
}
Exemple
Modèle personnalisé de macro créative sans évaluation
#1. If the user hour is between 1am and 2am, insert the macro MyCustomMacro1 with a value of "testvalue1" and the macro MyCustomMacro2 with a value of "testvalue2".
#2. Otherwise, do nothing. (Since this is a non-valuation custom model, a value is not required for the second leaf.)
if user_hour = 1:
leaf_name: "cm_1"
creative_macros["MyCustomMacro1"]: "testvalue1"
creative_macros["MyCustomMacro2"]: "testvalue2"
else:
leaf_name: "cm_2"