Özel Teklif Verme özelliğini uygulayın

Görüntülü Reklam ve Video 360 API, özel teklifi tümüyle yönetmenizi sağlar hakkında bilgi edindiniz. Özel teklif verme algoritmaları oluşturabilir, yükleyebilir ve mevcut olanları doğrulayabilirsiniz bağımsız komut dosyalarını açabilir ve bir kaynağa teklifli sistem olarak belirli bir algoritma atayabilir üzerine konuşacağız.

Bu sayfada, özel teklif verme algoritmalarının nasıl oluşturulacağı, güncelleneceği ve atanacağı açıklanmaktadır. Ekran ve Video 360 API. Her bölümde bir kod örneği verilmiştir.

Özel Teklif Algoritması Oluşturma

CustomBiddingAlgorithm nesnesi bir kişiyi temsil eder teklif stratejisinde kullanmak üzere satır öğesine atayabileceğiniz bir algoritmadır. Bu nesne, algoritma hakkında customBiddingAlgorithmType ve entityStatus ve readinessState ve suspensionState: ilgili reklamverenin oluşturduğu modele bakalım. Proje bilgilerini CustomBiddingScript ve Şu öğe için alt kaynak olarak CustomBiddingAlgorithmRules nesne: algoritmayı kullanın.

Aşağıda, komut dosyası tabanlı özel teklif verme algoritmasının nasıl oluşturulacağıyla ilgili bir örnek verilmiştir:

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

Algoritma erişimini yönetme

Özel teklif verme algoritmaları bir iş ortağına veya reklamverene ait olabilir. Algoritmalar İş ortağına ait olan kullanıcılar, söz konusu iş ortağı ve alt yayıncılar tarafından erişilebilir ve bunlar üzerinde değişiklik yapabilir. sharedAdvertiserIds alanında listelenen reklamverenler. Bir reklamverenin sahip olduğu algoritmalara reklamveren ve üst iş ortağıyla birlikte çalışır ancak diğer reklamverenlerle paylaşılamaz.

Algoritmayı yalnızca tek bir reklamveren için kullanıyorsanız reklamvereni advertiserId alanında sahip olarak seçin. Aksi takdirde, reklamverenlerin üst iş ortağını partnerId alanını kullanabilir ve reklamverenlere sharedAdvertiserIds alanına giriş yapın.

Algoritma mantığını yükleme

Özel teklif verme algoritmanızın türüne bağlı olarak, daha sonra uygulayabileceğiniz bir komut dosyası veya kurallar nesnesi algoritmanın kullanacağı mantığı sağlar.

Komut dosyası yükleyin

Komut dosyası tabanlı özel teklif verme algoritmaları, kullanıcı tarafından sağlanan verileri kullanır komut dosyalarını kullanarak bir gösterimin değerini değerlendirebilirsiniz. Basit komut dosyası örnekleri ve gelişmiş alanlar Görüntülü Reklam ve Video 360 Yardım Merkezi.

Aşağıdaki bölümlerde, yeni veya güncellenmiş bir komut dosyasının özel bir teklif verme algoritması.

Komut dosyası kaynak konumunu alma

Öncelikle, özel teklif verme altında kullanılabilir bir kaynak konumu alın diğeri de dahil olmak üzere customBiddingAlgorithms.uploadScript yöntemini kullanabilirsiniz. Bu isteği, değerine sahip bir CustomBiddingScriptRef nesnesi döndürüyor kaynak adı. Şunları yapabilirsiniz: komut dosyası dosyanızı kaynak adı. Ardından, özel teklif verme komut dosyası referans nesnesini komut dosyası kaynağınızı oluşturun.

Aşağıda, kullanılabilir bir kaynak konumunun nasıl alınacağına ilişkin bir örnek verilmiştir:

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

Komut dosyası yükleyin

Kullanılabilir bir kaynak konumunu aldıktan sonra komut dosyası dosyanızı bu konuma yükleyin Konumu Display & media.upload yöntemini kullanabilirsiniz. Bu yöntem sorgu parametresini gerektiren basit yükleme uploadType=media.

Aşağıda, alınan özel bir değer verildiğinde komut dosyası dosyasının nasıl yükleneceğine dair bir örnek verilmiştir: teklif verme komut dosyası referans nesnesi:

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

Komut dosyası nesnesi oluşturma

Komut dosyası yüklendikten sonra customBiddingAlgorithms.scripts.create yöntemini kullanır. İlgili içeriği oluşturmak için kullanılan İstekte iletilen CustomBiddingScript nesne yalnızca CustomBiddingScriptRef nesnesini atanan olarak dahil et script alanının değerini değiştirin. Bu, yüklenen dosyayı yeni komut dosyası kaynağına sahip komut dosyası dosyasıdır.

Aşağıda, komut dosyası kaynağının nasıl oluşturulacağına dair bir örnek verilmiştir:

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

Özel teklif verme komut dosyası kaynağı oluşturduktan sonra, Video 360, komut dosyasını kullanarak, bu komut dosyasının gösterimleri puanlamak üzere başarılı bir şekilde kullanılabildiğinden emin olun. Bu işlemin durumunu komut dosyası nesnesinin state alanına giriş yapın. Yeni komut dosyası kabul edildikten sonra, Teklifli sistem algoritması, gösterim değerlerini puanlamak için komut dosyasını kullanmaya başlar. Bu işlemi hemen gerçekleştirilir, bu nedenle işlem yapmadan önce algoritmayı yeni bir komut dosyası kaynağı oluşturun.

Kuralları yükle

Kurala dayalı özel teklif verme algoritmaları, AlgorithmRules bir gösterimin değerini değerlendirmek için kullanılan nesnedir.

AlgorithmRules nesne bir JSON dosyasına yüklenir ve ardından aracılığıyla özel bir teklif verme algoritmasıyla ilişkilendirilen CustomBiddingAlgorithmRules nesne olarak tanımlar.

Kural kaynağı konumunu alma

Öncelikle, özel teklif verme altında kullanılabilir bir kaynak konumu alın diğeri de dahil olmak üzere customBiddingAlgorithms.uploadRules yöntemini kullanabilirsiniz. Bu isteği, CustomBiddingAlgorithmsRulesRef nesnesi döndürür bir kaynak adı kullanın. Kurallarınızı yüklemek için dosyasını kaynak adı tarafından belirtilen konuma bağlayın. Sonra kurallarınızı oluşturmak için özel teklif verme algoritması kuralları referans nesnesini kullanma öğrenin.

Aşağıda, kullanılabilir bir kaynak konumunun nasıl alınacağına ilişkin bir örnek verilmiştir:

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

AlgorithmRules dosyası yükleyin

Kullanılabilir bir kaynak konumunu aldıktan sonra kural dosyanızı bu konuma yükleyin Konumu Display & media.upload yöntemini kullanabilirsiniz. Bu yöntem sorgu parametresini gerektiren basit yükleme uploadType=media.

Alınan bir AlgorithmRules dosyasının nasıl yükleneceğiyle ilgili örneği burada bulabilirsiniz: özel teklif verme algoritması kuralları referans nesnesi:

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

Kural nesnesi oluşturma

AlgorithmRules JSON dosyası yüklendikten sonra özel teklif verme oluşturun algoritma kuralları kaynağını customBiddingAlgorithms.rules.create yöntemini kullanabilirsiniz. İlgili içeriği oluşturmak için kullanılan İstekte CustomBiddingAlgorithmRules nesne iletilmelidir CustomBiddingAlgorithmRulesRef nesnesini rules alanına atanan değer. Bu, yeni kural kaynağını içeren AlgorithmRules JSON dosyası yüklendi.

Aşağıda, kural kaynağı oluşturma örneği verilmiştir:

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

Bir kural kaynağı oluşturduktan sonra, Video 360 kural kümesini işleyerek gösterimleri puanlamak için başarılı bir şekilde kullanılabildiğinden emin olun. Eyaleti al kural nesnesinin state alanı aracılığıyla bu işlemin tamamlanmasını sağlar. Yeni kurallar kabul edildikten sonra, özel teklif verme algoritması puanlama kurallarını uygulayın.

Kurallar reddedilirse kurallardan ret nedenini alın error. Başvurunuzun reddedilmesi durumunda Hatayı düzeltmek ve yükleme işlemini başlatmak için AlgorithmRules nesne kurallar referans nesnesinin alınmasını engeller.

Özel Teklif Algoritması Atama

Özel teklif verme algoritması oluşturduktan sonra, kabul edilen mantığı yükleyin ve gerekli gereksinimleri yerine getiriyorsa, özel rapor atamanızı teklif verme algoritmasını bir satır öğesinin veya kampanya siparişinin teklif verme stratejisine ekler.

Özel teklif verme algoritmalarını harcamaları artırma ve BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CUSTOM_ALGO atayarak performans hedefi teklif stratejileri ve özel teklif verme algoritması kimliğini performanceGoalType ve customBiddingAlgorithmId alanlarını tıklayın. Teklif stratejisine bağlı olarak, başka teklif parametreleri kullanılabilir veya gereklidir.

Aşağıda, harcamayı artırma teklifi kullanılacak şekilde satır öğesinin nasıl güncelleneceğine dair bir örnek verilmiştir teklif stratejisi oluşturun:

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