Правила загрузки

Алгоритм, основанный на правилах, определяется объектом JSON AlgorithmRules . Загрузите правила в Display & Video 360 через файл JSON.

Если вы используете алгоритм на основе скрипта, перейдите на страницу загрузки скрипта .

Создайте объект правил.

Алгоритмы назначения ставок, основанные на правилах, используют правила для оценки ценности ответного сигнала.

Объект AlgorithmRules состоит из одного или нескольких наборов правил . Каждый набор правил оценивает различные типы ответных сигналов, например, впечатление. Каждый набор правил содержит список правил . Каждое правило оценивает сигнал на соответствие заданным условиям и возвращает значение. Сигнал оценивается всеми правилами в наборе. Затем значения, возвращаемые каждым правилом, объединяются. В результате получается оценочное значение для сигнала.

Сохраните объект AlgorithmRules локально в виде JSON-файла.

Создайте объект ссылки на правила.

Объект-ссылка используется для связывания загруженного файла с ресурсом правил . Сгенерируйте объект-ссылку в рамках вашего алгоритма , используя запрос uploadRules .

Вот как создать объект ссылки на правила :

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()
);

Загрузите файл AlgorithmRules

Используйте запрос upload медиафайла, чтобы загрузить файл правил в путь к ресурсу, указанный в объекте ссылки. Используйте простую загрузку с параметром запроса uploadType=media .

Вот как загрузить файл с правилами:

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);
}

Создайте объект правил.

Используйте запрос create , чтобы создать объект правил в рамках вашего алгоритма .

Вот как создать объект правил:

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']);