基于规则的算法由 AlgorithmRules JSON 对象定义。通过 JSON 文件将规则上传到 Display & Video 360。
如果使用基于脚本的算法,请前往上传脚本页面。
构建规则对象
基于规则的自定义出价算法采用规则来评估回答信号的价值。
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 请求在您的算法下创建 rules 对象。
以下是创建规则对象的方法:
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']);