Алгоритм, основанный на правилах, определяется объектом 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']);