Regras de upload

Um algoritmo baseado em regras é definido por um objeto JSON AlgorithmRules. Faça upload das regras para o Display & Video 360 usando um arquivo JSON.

Se você estiver usando um algoritmo baseado em script, acesse a página Fazer upload do script.

Criar um objeto de regras

Os algoritmos de lances personalizados baseados em regras usam regras para avaliar o valor de um indicador de resposta.

Um objeto AlgorithmRules consiste em um ou mais conjuntos de regras. Cada conjunto de regras avalia um tipo diferente de sinal de resposta, como uma impressão. Cada conjunto de regras tem uma lista de regras. Cada regra avalia um indicador em relação a condições definidas e retorna um valor. Um indicador é avaliado por todas as regras em um conjunto. Os valores retornados por cada regra são combinados. Isso resulta em um valor de avaliação para o indicador.

Salve o objeto AlgorithmRules localmente como um arquivo JSON.

Gerar um objeto de referência de regras

Um objeto de referência é usado para associar um arquivo enviado a um recurso de regras. Gere um objeto de referência no seu algoritmo usando uma solicitação uploadRules.

Veja como gerar um objeto de referência rules:

Java

// Provide the ID of the advertiser that owns the algorithm.
long advertiserId = advertiser-id;

// Provide the ID of the algorithm.
long customBiddingAlgorithmId = algorithm-id;

// Generate an AlgorithmRules reference object under the algorithm.
CustomBiddingAlgorithmRulesRef response =
    service
        .customBiddingAlgorithms()
        .uploadRules(customBiddingAlgorithmId)
        .setAdvertiserId(advertiserId)
        .execute();

// Display the generated resource path.
System.out.printf(
    "The generated AlgorithmRules reference object provided the following resource path: %s.",
    response.getResourceName());

Python

# Provide the ID of the advertiser that owns the algorithm.
advertiser_id = advertiser-id

# Provide the ID of the algorithm.
algorithm_id = algorithm-id

# Generate an AlgorithmRules reference object under the algorithm.
custom_bidding_algorithm_rules_ref = (
    service.customBiddingAlgorithms()
    .uploadRules(
        customBiddingAlgorithmId=algorithm_id,
        advertiserId=advertiser_id
    )
    .execute()
)

# Print the resource path provided in the generated rules reference object.
print(
    "The generated rules reference object provided the following resource"
    f' path: {custom_bidding_algorithm_rules_ref["resourceName"]}.'
)

PHP

// Provide the ID of the advertiser that owns the algorithm.
$advertiserId = advertiser-id;

// Provide the ID of the algorithm.
$algorithmId = algorithm-id;

$uploadRulesOptParams = array(
    'advertiserId' => $advertiserId
);

try {
  // Generate an AlgorithmRules reference object under the algorithm.
    $rulesRefResponse =
        $this->service->customBiddingAlgorithms->uploadRules(
            $customBiddingAlgorithmId,
            $uploadRulesOptParams
        );
} catch (\Exception $e) {
    $this->renderError($e);
    return;
}

// Print the retrieved resource path.
printf(
    '<p>The generated AlgorithmRules reference object provided the '
        . 'following resource path: %s</p>',
    $rulesRefResponse->getResourceName()
);

Fazer upload de um arquivo AlgorithmRules

Use uma solicitação de mídia upload para fazer upload do arquivo de regras para o caminho do recurso no objeto de referência. Use um upload simples com um parâmetro de consulta uploadType=media.

Veja como fazer upload de um arquivo de regras:

Java

// Provide the local path to the AlgorithmRules file to upload.
String rulesPath = rules-path;

// Provide the resource path to upload the AlgorithmRules file to.
String resourcePath = resource-path;

// Create media object.
GoogleBytestreamMedia media = new GoogleBytestreamMedia();
media.setResourceName(resourcePath);

// Create input stream for the Algorithm file.
InputStreamContent rulesFileStream =
    new InputStreamContent(null, new FileInputStream(rulesPath));

// Create media.upload request.
Media.Upload uploadRequest = service.media().upload(resourcePath, 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/" + resourcePath));

Python

# Import HTTP objects used for file upload.
from apiclient.http import HttpRequest
from apiclient.http import MediaFileUpload

# Provide the local path to the AlgorithmRules file to upload.
rules_path = rules-path

# Provide the resource path to upload the AlgorithmRules file to.
resource_path = resource-path

# Create a media upload object.
media = MediaFileUpload(rules_path)

# Create upload request.
upload_request = service.media().upload(
    resourceName=resource_path, media_body=media
)

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

# Upload AlgorithmRules to given resource path.
upload_request.execute()

PHP

// Provide the local path to the AlgorithmRules file to upload.
$rulesPath = rules-path;

// Provide the resource path to upload the AlgorithmRules file to.
$resourcePath = resource-path;

// Create the media body.
$mediaBody = new Google_Service_DisplayVideo_GoogleBytestreamMedia();
$mediaBody->setResourceName($resourceName);

// Build params array for the upload request.
$mediaUploadOptParams = array(
    'data' => file_get_contents($rulesPath),
    'uploadType' => 'media',
    'resourceName' => $resourceName
);

try {
    // Call the API, uploading the rules file to Display & Video 360.
    $this->service->media->upload(
        $resourceName,
        $mediaBody,
        $mediaUploadOptParams
    );
} catch (\Exception $e) {
    $this->renderError($e);
}

Criar um objeto de regras

Use uma solicitação create para criar um objeto rules no seu algoritmo.

Veja como criar um objeto de regras:

Java

// Provide the ID of the advertiser that owns the parent algorithm.
long advertiserId = advertiser-id;

// Provide the ID of the parent algorithm.
long algorithmId = algorithm-id;

// Provide the resource path the AlgorithmRules file was uploaded to.
String resourcePath = resource-path;

// Create the custom bidding algorithm rules structure.
CustomBiddingAlgorithmRules customBiddingAlgorithmRules =
    new CustomBiddingAlgorithmRules()
        .setRules(new CustomBiddingAlgorithmRulesRef().setResourceName(resourcePath));

// Create the custom bidding algorithm rules.
CustomBiddingAlgorithmRules response =
    service
        .customBiddingAlgorithms()
        .rules()
        .create(algorithmId, customBiddingAlgorithmRules)
        .setAdvertiserId(advertiserId)
        .execute();

// Print ID of new custom bidding algorithm rules.
System.out.printf("Rules were created with ID %s.", response.getCustomBiddingAlgorithmRulesId());

Python

# Provide the ID of the advertiser that owns the parent algorithm.
advertiser_id = advertiser-id

# Provide the ID of the parent algorithm.
algorithm_id = algorithm-id

# Provide the resource path the AlgorithmRules file was uploaded to.
resource_path = resource-path

# Build algorithm rules object.
rules_obj = {"rules": {"resourceName": resource_path}}

# Build and execute request.
rules_response = (
    service.customBiddingAlgorithms()
    .rules()
    .create(
        customBiddingAlgorithmId=algorithm_id,
        advertiserId=advertiser_id,
        body=rules_obj,
    )
    .execute()
)

# Print ID of new custom bidding algorithm rules.
print(
    f'Rules were created with ID {rules_response["customBiddingAlgorithmRulesId"]}.'
)

PHP

// Provide the ID of the advertiser that owns the parent algorithm.
$advertiserId = advertiser-id;

// Provide the ID of the parent algorithm.
$algorithmId = algorithm-id;

// Provide the resource path the AlgorithmRules file was uploaded to.
$resourcePath = resource-path;

// Build algorithm rules object.
$customBiddingRules = new Google_Service_DisplayVideo_CustomBiddingAlgorithmRules();
$rulesRef = new Google_Service_DisplayVideo_CustomBiddingAlgorithmRulesRef();
$rulesRef->setResourceName($resourcePath);
$customBiddingRules->setRules($rulesRef);

$createRulesOptParams = array(
    'advertiserId' => $advertiserId
);

// Call the API, creating the custom bidding algorithm rules using the
// rules file and under the custom bidding algorithm given.
try {
    $result = $this->service->customBiddingAlgorithms_rules->create(
        $customBiddingAlgorithmId,
        $algorithmId,
        $createRulesOptParams
    );
} catch (\Exception $e) {
    $this->renderError($e);
    return;
}

// Print ID of new custom bidding algorithm rules.
printf('<p>Rules was created with ID %s.</p>', $result['customBiddingAlgorithmRulesId']);