Implémentez les enchères personnalisées

Display & L'API Video 360 vous permet de gérer entièrement les enchères personnalisées. mises en œuvre. Vous pouvez créer des algorithmes d'enchères personnalisées, importer et valider des scripts individuels, et attribuer un algorithme spécifique à une ressource en tant qu'algorithme stratégie.

Cette page explique comment créer, modifier et attribuer des algorithmes d'enchères personnalisées. avec les campagnes display et l'API Video 360. Chaque section fournit un exemple de code.

Créer un algorithme d'enchères personnalisées

Un objet CustomBiddingAlgorithm représente un individu que vous pouvez attribuer à un élément de campagne pour l'utiliser dans sa stratégie d'enchères. Ce comporte des détails sur l'algorithme, comme customBiddingAlgorithmType et entityStatus, ainsi que readinessState et suspensionState pour par le modèle généré par chaque annonceur pertinent. Vous pouvez créer CustomBiddingScript et des objets CustomBiddingAlgorithmRules en tant que ressources enfants pour la à utiliser.

Voici un exemple de création d'un algorithme d'enchères personnalisées basé sur un script:

Java

// Create the custom bidding algorithm structure.
CustomBiddingAlgorithm customBiddingAlgorithm =
    new CustomBiddingAlgorithm()
        .setAdvertiserId(advertiser-id)
        .setDisplayName(display-name)
        .setEntityStatus("ENTITY_STATUS_ACTIVE")
        .setCustomBiddingAlgorithmType("SCRIPT_BASED");

// Configure the create request.
CustomBiddingAlgorithms.Create request =
    service.customBiddingAlgorithms().create(customBiddingAlgorithm);

// Create the custom bidding algorithm.
CustomBiddingAlgorithm response = request.execute();

// Display the new custom bidding algorithm name.
System.out.printf(
    "Custom bidding algorithm %s was created.%n",
    response.getName()
);

Python

# Create a custom bidding algorithm object.
custom_bidding_algorithm_obj = {
    'advertiserId': advertiser-id,
    'displayName': display-name,
    'entityStatus': 'ENTITY_STATUS_ACTIVE',
    'customBiddingAlgorithmType': 'SCRIPT_BASED'
}

# Create the custom bidding algorithm.
response = service.customBiddingAlgorithms().create(
    body=custom_bidding_algorithm_obj
).execute()

# Display the new custom bidding algorithm.
print(f'The following Custom Bidding Algorithm was created: {response}')

PHP

// Create a custom bidding algorithm object.
$customBiddingAlgorithm =
    new Google_Service_DisplayVideo_CustomBiddingAlgorithm();
$customBiddingAlgorithm->setAdvertiserId(advertiser-id);
$customBiddingAlgorithm->setDisplayName(display-name);
$customBiddingAlgorithm->setEntityStatus('ENTITY_STATUS_ACTIVE');
$customBiddingAlgorithm->setCustomBiddingAlgorithmType('SCRIPT_BASED');

// Create the custom bidding algorithm.
$result =
    $this->service->customBiddingAlgorithms->create($customBiddingAlgorithm);

// Display the new custom bidding algorithm name.
printf('Custom Bidding Algorithm %s was created.\n', $result['name']);

Gérer l'accès à l'algorithme

Les algorithmes d'enchères personnalisées peuvent appartenir à un partenaire ou à un annonceur. Algorithmes appartenant à un partenaire peuvent être consultés et modifiés par ce partenaire et tout enfant annonceurs répertoriés dans le champ sharedAdvertiserIds. Il peut accéder aux algorithmes d'un annonceur et les modifier et son partenaire parent, mais il ne peut pas être partagé avec d'autres annonceurs.

Si vous utilisez l'algorithme pour un seul annonceur, attribuez la valeur annonceur en tant que propriétaire avec le champ advertiserId. Sinon, désignez le partenaire parent des annonceurs comme propriétaire partnerId et donnez aux annonceurs l'accès à l'aide du sharedAdvertiserIds.

Logique de l'algorithme d'importation

Selon le type d'algorithme d'enchères personnalisées, vous devez ensuite créer un objet script ou rules dans lequel vous pouvez pour fournir la logique à l'algorithme.

Importer un script

Les algorithmes d'enchères personnalisées basés sur des scripts utilisent scripts pour évaluer la valeur d'une impression. Des exemples de scripts simples et une liste de les champs avancés sont disponibles dans la Écran et Centre d'aide Video 360

Les sections suivantes vous expliquent comment ajouter un script nouveau ou mis à jour à un script personnalisé algorithme d'enchères.

Récupérer l'emplacement d'une ressource de script

Commencez par récupérer un emplacement de ressource disponible sous le ressource d'algorithme avec customBiddingAlgorithms.uploadScript. Ce la requête renvoie un objet CustomBiddingScriptRef avec une nom de la ressource. Vous pouvez importez votre fichier de script à l'emplacement indiqué par la nom de la ressource. Utilisez ensuite l'objet de référence du script d'enchères personnalisées pour créez votre ressource de script.

Voici un exemple de récupération d'un emplacement de ressource disponible:

Java

// Retrieve a usable custom bidding script
// reference.
CustomBiddingScriptRef scriptRef =
    service
        .customBiddingAlgorithms()
        .uploadScript(custom-bidding-algorithm-id)
        .setAdvertiserId(advertiser-id)
        .execute();

// Display the custom bidding script reference resource path.
System.out.printf(
    "The script can be uploaded to the following resource path: %s%n",
    scriptRef.getResourceName()
);

Python

# Retrieve a usable custom bidding script reference
# object.
custom_bidding_script_ref = service.customBiddingAlgorithms().uploadScript(
    customBiddingAlgorithmId=custom-bidding-algorithm-id,
    advertiserId=advertiser-id
).execute()

# Display the new custom bidding script reference object.
print('The following custom bidding script reference object was retrieved:'
      f'{custom_bidding_script_ref}')

PHP

// Set parent advertiser ID of custom bidding
// algorithm in optional parameters array for request.
$optParams = array('advertiserId' => advertiser-id);

// Retrieve a usable custom bidding script reference.
$scriptRefResponse = $this->service->customBiddingAlgorithms->uploadScript(
    custom-bidding-algorithm-id,
    $optParams
);

// Display the new custom bidding script reference object.
printf(
    'The script can be uploaded to the following resource path: %s\n',
    $scriptRefResponse->getResourceName()
);

Importer un fichier de script

Après avoir récupéré un emplacement de ressource disponible, importez votre fichier de script à cet emplacement emplacement dans le Display & un système Video 360 avec media.upload. Cette méthode accepte importation simple nécessitant le paramètre de requête uploadType=media

Voici un exemple d'importation d'un fichier de script à partir d'un fichier de script personnalisé récupéré Objet de référence du script d'enchères:

Java

// Create media object.
GoogleBytestreamMedia media = new GoogleBytestreamMedia();
media.setResourceName(resource-name);

// Create input stream for the script file.
InputStreamContent scriptFileStream =
    new InputStreamContent(
        null, new FileInputStream(script-path));

// Create media.upload request.
Media.Upload uploadRequest =
        service
            .media()
            .upload(
                resource-name,
                media,
                scriptFileStream);

// Retrieve uploader from the request and set it to us a simple
// upload request.
MediaHttpUploader uploader = uploadRequest.getMediaHttpUploader();
uploader.setDirectUploadEnabled(true);

// Execute the upload using an Upload URL with the destination resource
// name.
uploader
    .upload(
        new GenericUrl(
            "https://displayvideo.googleapis.com/upload/media/"
                + resource-name));

Python

# Create a media upload object.
media = MediaFileUpload(script-path)

# Create upload request.
upload_request = service.media().upload(
    resourceName=resource-name, media_body=media)

# Override response handler to expect null response.
upload_request.postproc = HttpRequest.null_postproc

# Upload script to resource location given in retrieved custom bidding
# script reference object.
upload_request.execute()

PHP

// Create a media object.
$mediaBody = new Google_Service_DisplayVideo_GoogleBytestreamMedia();
$mediaBody->setResourceName(resource-name);

// Set parameters for upload request.
$optParams = array(
    'data' => file_get_contents(script-path),
    'uploadType' => 'media',
    'resourceName' => resource-name
);

// Upload script file to given resource location.
$this->service->media->upload(
    resource-name,
    $mediaBody,
    $optParams
);

cURL

curl --request POST 'https://displayvideo.googleapis.com/upload/media/resource-name?uploadType=media' 
  -H 'authorization: Bearer access-token'
  -H 'Content-Type: text/plain'
  --data-binary @script-path

Créer un objet de script

Une fois le fichier de script importé, créez une ressource de script d'enchères personnalisées avec la méthode customBiddingAlgorithms.scripts.create. La L'objet CustomBiddingScript transmis dans la requête ne doit inclure l'objet CustomBiddingScriptRef en tant que du champ script. Cela permet d'associer les avec la nouvelle ressource de script.

Voici un exemple de création d'une ressource de script:

Java

// Create the custom bidding script structure.
CustomBiddingScript customBiddingScript =
    new CustomBiddingScript()
        .setScript(custom-bidding-script-ref);

// Create the custom bidding script.
CustomBiddingScript response =
    service
        .customBiddingAlgorithms()
        .scripts()
        .create(custom-bidding-algorithm-id, customBiddingScript)
        .setAdvertiserId(advertiser-id)
        .execute();

// Display the new script resource name
System.out.printf(
    "The following script was created: %s%n",
    response.getName());

Python

# Create a custom bidding script object.
script_obj = {
    'script': custom-bidding-script-ref
}

# Create the custom bidding script.
response = service.customBiddingAlgorithms().scripts().create(
    customBiddingAlgorithmId=custom-bidding-algorithm-id,
    advertiserId=advertiser-id,
    body=script_obj).execute()

# Display the new custom bidding script object.
print(f'The following custom bidding script was created: {response}')

PHP

// Create the custom bidding script object.
$customBiddingScript =
    new Google_Service_DisplayVideo_CustomBiddingScript();
$customBiddingScript->setScript(custom-bidding-script-ref);

// Set parameters for create script request.
$optParams = array(
    'advertiserId' => advertiser-id
);

// Create the custom bidding script.
$result = $this->service->customBiddingAlgorithms_scripts->create(
    custom-bidding-algorithm-id,
    $customBiddingScript,
    $optParams
);

// Display the new script resource name.
printf('The following script was created: %s.\n', $result->getName());

Une fois que vous avez créé une ressource de script d'enchères personnalisées, Video 360 traite le pour s'assurer qu'il peut être utilisé pour évaluer les impressions. Récupérez l'état de ce traitement via la classe state. Une fois le nouveau script accepté, le script L'algorithme d'enchères commence à utiliser le script pour évaluer les valeurs d'impression. Ce se produit immédiatement, alors assurez-vous de vouloir mettre à jour l'algorithme avant en créant une ressource de script.

Règles d'importation

Les algorithmes d'enchères personnalisées basés sur des règles utilisent la logique fournie dans un Un objet AlgorithmRules pour évaluer la valeur d'une impression.

Les objets AlgorithmRules sont importés dans un fichier JSON, puis associé à un algorithme d'enchères personnalisées objet CustomBiddingAlgorithmRules.

Récupérer l'emplacement d'une ressource de règles

Commencez par récupérer un emplacement de ressource disponible sous le ressource d'algorithme avec customBiddingAlgorithms.uploadRules. Ce La requête renvoie un objet CustomBiddingAlgorithmsRulesRef avec un nom de ressource. Vous pouvez importer vos règles fichier à l'emplacement dicté par le nom de la ressource. Ensuite, utilisez l'objet de référence des règles de l'algorithme d'enchères personnalisées pour créer vos règles ressource.

Voici un exemple de récupération d'un emplacement de ressource disponible:

Java

// Create the custom bidding algorithm structure.
CustomBiddingAlgorithmRulesRef rulesRef =
    service
        .customBiddingAlgorithms()
        .uploadRules(custom-bidding-algorithm-id)
        .setAdvertiserId(advertiser-id)
        .execute();

System.out.printf(
    "The rules can be uploaded to the following resource path: %s%n",
    rulesRef.getResourceName()
);

Python

# Retrieve a usable custom bidding algorithm rules reference
# object.
custom_bidding_algorithm_rules_ref = service.customBiddingAlgorithms().uploadRules(
    customBiddingAlgorithmId=custom-bidding-algorithm-id,
    advertiserId=advertiser-id
).execute()

# Display the new custom bidding algorithm rules reference object.
print('The following custom bidding algorithm rules reference object was retrieved:'
      f' {custom_bidding_algorithm_rules_ref}')

PHP

// Set parent advertiser ID of custom bidding algorithm
// in optional parameters array for request.
$optParams = array('advertiserId' => advertiser-id);

// Retrieve a usable custom bidding algorithm rules reference.
$rulesRefResponse = $this->service->customBiddingAlgorithms->uploadRules(
    custom-bidding-algorithm-id,
    $optParams
);

// Display the new custom bidding algorithm rules reference object resource path.
printf(
    'The rules can be uploaded to the following resource path: %s\n',
    $rulesRefResponse->getResourceName()
);

Importer un fichier AlgorithmRules

Après avoir récupéré un emplacement de ressource disponible, importez votre fichier de règles dans ce fichier. emplacement dans le Display & un système Video 360 avec media.upload. Cette méthode accepte importation simple nécessitant le paramètre de requête uploadType=media

Voici un exemple d'importation d'un fichier AlgorithmRules à partir d'une requête Objet de référence des règles de l'algorithme d'enchères personnalisées:

Java

// Create media object.
GoogleBytestreamMedia media = new GoogleBytestreamMedia();
media.setResourceName(resource-name);

// Create input stream for the rules file.
InputStreamContent rulesFileStream =
    new InputStreamContent(
        null, new FileInputStream(rules-file-path));

// Create media.upload request.
 Media.Upload uploadRequest =
    service
        .media()
        .upload(
            resource-name,
            media,
            rulesFileStream);

// Retrieve uploader from the request and set it to us a simple
// upload request.
MediaHttpUploader uploader = uploadRequest.getMediaHttpUploader();
uploader.setDirectUploadEnabled(true);

// Execute the upload using an Upload URL with the destination resource
// name.
uploader
    .upload(
        new GenericUrl(
            "https://displayvideo.googleapis.com/upload/media/"
                + resource-name));

Python

# Create a media upload object.
media = MediaFileUpload(rules-file-path)

# Create upload request.
upload_request = service.media().upload(
    resourceName=resource-name, media_body=media)

# Override response handler to expect null response.
upload_request.postproc = HttpRequest.null_postproc

# Upload rules file to resource location given in retrieved custom bidding
# algorithm rules reference object.
upload_request.execute()

PHP

// Create a media object.
$mediaBody = new Google_Service_DisplayVideo_GoogleBytestreamMedia();
$mediaBody->setResourceName(resource-name);

// Set parameters for upload request.
$optParams = array(
    'data' => file_get_contents(rules-file-path),
    'uploadType' => 'media',
    'resourceName' => resource-name
);

// Upload rules file to given resource location.
$this->service->media->upload(
    resource-name,
    $mediaBody,
    $optParams
);

cURL

curl --request POST 'https://displayvideo.googleapis.com/upload/media/resource-name?uploadType=media' 
  -H 'authorization: Bearer access-token'
  -H 'Content-Type: text/plain'
  --data-binary @rules-file-path

Créer un objet de règles

Une fois le fichier JSON AlgorithmRules importé, créez une enchère personnalisée. de règles d'algorithme avec le paramètre customBiddingAlgorithms.rules.create. La L'objet CustomBiddingAlgorithmRules transmis dans la requête doit n'incluez que l'objet CustomBiddingAlgorithmRulesRef en tant que la valeur attribuée au champ rules. Cela permet d'associer importé le fichier JSON AlgorithmRules avec la nouvelle ressource de règles.

Voici un exemple de création d'une ressource de règles:

Java

// Create the custom bidding algorithm rules structure.
CustomBiddingAlgorithmRules customBiddingAlgorithmRules =
    new CustomBiddingAlgorithmRules()
        .setRules(custom-bidding-algorithm-rules-ref);

// Create the rules resource.
CustomBiddingAlgorithmRules response =
    service
        .customBiddingAlgorithms()
        .rules()
        .create(custom-bidding-algorithm-id, customBiddingAlgorithmRules)
        .setAdvertiserId(advertiser-id)
        .execute();

// Display the new rules resource name.
System.out.printf(
    "The following custom bidding algorithm rules object was created: %s%n",
    response.getName());

Python

# Create the custom bidding algorithm rules object.
rules_obj = {
    'rules': custom-bidding-algorithm-rules-ref
}

# Create the rules resource.
response = service.customBiddingAlgorithms().rules().create(
    customBiddingAlgorithmId=custom-bidding-algorithm-id,
    advertiserId=advertiser-id,
    body=rules_obj).execute()

# Display the new custom bidding algorithm rules object.
print(f'The following custom bidding algorithm rules resource was created: {response}')

PHP

// Create the custom bidding algorithm rules object.
$customBiddingAlgorithmRules =
    new Google_Service_DisplayVideo_CustomBiddingAlgorithmRules();
$customBiddingAlgorithmRules->setRules(custom-bidding-algorithm-rules-ref);

// Set parameters for create rules request.
$optParams = array(
    'advertiserId' => advertiser-id
);

// Create the custom bidding algorithm rules resource.
$result = $this->service->customBiddingAlgorithms_rules->create(
    custom-bidding-algorithm-id,
    $customBiddingAlgorithmRules,
    $optParams
);

// Display the new custom bidding algorithm rules resource name.
printf('The following rules resource was created: %s.\n', $result->getName());

Une fois que vous avez créé une ressource de règles, Video 360 traite l'ensemble de règles pour créer s'assurer qu'elle peut être utilisée pour évaluer les impressions. Récupérer l'état ce traitement via le champ state de l'objet de règles. Une fois les nouvelles règles acceptées, l'algorithme d'enchères personnalisées commence à utiliser pour évaluer immédiatement les valeurs d'impression.

Si les règles sont refusées, récupérez le motif du refus. error de l'objet. En cas de refus, mettez à jour votre Objet AlgorithmRules pour corriger l'erreur et répéter le processus d'importation en commençant de la récupération de l'objet de référence aux règles.

Attribuer un algorithme d'enchères personnalisées

Après avoir créé un algorithme d'enchères personnalisées, importez la logique acceptée et respectez les conditions requises, vous pouvez attribuer vos rôles à la stratégie d'enchères d'un élément de campagne ou d'un ordre d'insertion.

Vous pouvez utiliser des algorithmes d'enchères personnalisées maximiser les dépenses et stratégies d'enchères avec objectif de performances en attribuant BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CUSTOM_ALGO et l'ID de l'algorithme d'enchères personnalisées au performanceGoalType et customBiddingAlgorithmId, respectivement. Selon la stratégie d'enchères, d'autres paramètres d'enchères peuvent être disponibles ou obligatoire.

Voici un exemple de mise à jour d'un élément de campagne pour utiliser une enchère de type "Maximiser les dépenses". avec un algorithme d'enchères personnalisées donné:

Java

// Create the line item structure.
LineItem lineItem = new LineItem();

// Create and set the bidding strategy structure.
BiddingStrategy biddingStrategy = new BiddingStrategy();
MaximizeSpendBidStrategy maxSpendBidStrategy =
    new MaximizeSpendBidStrategy()
        .setPerformanceGoalType(
            "BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CUSTOM_ALGO")
        .setCustomBiddingAlgorithmId(custom-bidding-algorithm-id);
biddingStrategy.setMaximizeSpendAutoBid(maxSpendBidStrategy);
lineItem.setBidStrategy(biddingStrategy);

// Configure the patch request and set update mask to only update
// the bid strategy.
LineItems.Patch request =
    service
        .advertisers()
        .lineItems()
        .patch(advertiser-id, line-item-id, lineItem)
        .setUpdateMask("bidStrategy");

// Update the line item.
LineItem response = request.execute();

// Display the custom bidding algorithm ID used in the new
// bid strategy.
System.out.printf(
    "LineItem %s now has a bid strategy utilizing custom "
        + "bidding algorithm %s%n",
    response.getName(),
    response
        .getBidStrategy()
        .getMaximizeSpendAutoBid()
        .getCustomBiddingAlgorithmId());

Python

# Create the new bid strategy object.
bidding_strategy = {
    'maximizeSpendAutoBid': {
        'performanceGoalType':
            'BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CUSTOM_ALGO',
        'customBiddingAlgorithmId': custom-bidding-algorithm-id
    }
}

# Create a line item object assigning the new bid strategy.
line_item_obj = {'bidStrategy': bidding_strategy}

# Update the line item with a new bid strategy.
response = service.advertisers().lineItems().patch(
    advertiserId=advertiser-id,
    lineItemId=line-item-id,
    updateMask='bidStrategy',
    body=line_item_obj).execute()

# Display the line item's new bid strategy
print(f'Line Item {response["name"]} is now using the following bid'
     f' strategy: {response["bidStrategy"]}.')

PHP

// Create the line item structure.
$lineItem = new Google_Service_DisplayVideo_LineItem();

// Create and set the bidding strategy structure.
$biddingStrategy =  new Google_Service_DisplayVideo_BiddingStrategy();
$maximizeSpendBidStrategy =
    new Google_Service_DisplayVideo_MaximizeSpendBidStrategy();
$maximizeSpendBidStrategy->setPerformanceGoalType(
    'BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CUSTOM_ALGO'
);
$maximizeSpendBidStrategy->setCustomBiddingAlgorithmId(
    custom-bidding-algorithm-id
);
$biddingStrategy->setMaximizeSpendAutoBid($maximizeSpendBidStrategy);
$lineItem->setBidStrategy($biddingStrategy);

// Set update mask.
$optParams = array('updateMask' => 'bidStrategy');

// Update the line item.
$result = $this->service->advertisers_lineItems->patch(
    advertiser-id,
    line-item-id,
    $lineItem,
    $optParams
);

// Display the custom bidding algorithm ID used in the new bid strategy.
printf(
    'Line Item %s now has a bid strategy utilizing custom bidding algorithm %s.\n',
    $result['name'],
    $result['bidStrategy']['maximizeSpendBidStrategy']['customBiddingAlgorithmId']
);