Menerapkan Bidding Kustom

Display & Video 360 API memungkinkan Anda mengelola penerapan bidding kustom sepenuhnya. Anda dapat membuat algoritma bidding kustom, mengupload dan memverifikasi setiap skrip, serta menetapkan algoritma tertentu ke resource sebagai strategi biddingnya.

Halaman ini menjelaskan cara membuat, memperbarui, dan menetapkan algoritma bidding kustom dengan Display & Video 360 API. Setiap bagian menyediakan contoh kode.

Membuat Algoritma Bidding Kustom

Objek CustomBiddingAlgorithm mewakili setiap algoritma yang dapat Anda tetapkan ke item baris untuk digunakan dalam strategi biddingnya. Objek ini memiliki detail tentang algoritme, seperti customBiddingAlgorithmType dan entityStatus, serta readinessState dan suspensionState untuk setiap model yang dihasilkan pengiklan yang relevan. Anda dapat membuat objek CustomBiddingScript dan CustomBiddingAlgorithmRules sebagai resource turunan untuk digunakan algoritma.

Berikut ini contoh cara membuat algoritma bidding kustom berbasis skrip:

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

Mengelola akses algoritme

Algoritma bidding kustom dapat dimiliki oleh partner atau pengiklan. Algoritme yang dimiliki oleh partner dapat diakses dan diubah oleh partner tersebut dan setiap pengiklan turunan yang tercantum di kolom sharedAdvertiserIds. Algoritma yang dimiliki oleh pengiklan dapat diakses dan diubah oleh pengiklan tersebut dan partner induknya, tetapi tidak dapat dibagikan kepada pengiklan lain.

Jika Anda hanya menggunakan algoritme untuk satu pengiklan, tetapkan pengiklan sebagai pemilik dengan kolom advertiserId. Jika tidak, tetapkan partner induk pengiklan sebagai pemilik dengan kolom partnerId, dan beri pengiklan akses dengan kolom sharedAdvertiserIds.

Mengupload logika algoritme

Bergantung pada jenis algoritma bidding kustom, Anda selanjutnya harus membuat skrip atau objek aturan tempat Anda dapat memberikan logika yang akan digunakan oleh algoritme.

Upload skrip

Algoritma bidding kustom berbasis skrip menggunakan skrip yang diberikan pengguna untuk mengevaluasi nilai tayangan. Contoh skrip sederhana dan daftar kolom lanjutan tersedia melalui Pusat Bantuan Display & Video 360.

Bagian berikut menunjukkan cara menambahkan skrip baru atau yang diperbarui ke algoritma bidding kustom.

Mengambil lokasi resource skrip

Pertama, ambil lokasi resource yang tersedia di bagian resource algoritma bidding kustom dengan metode customBiddingAlgorithms.uploadScript. Permintaan ini menampilkan objek CustomBiddingScriptRef dengan nama resource. Anda dapat mengupload file skrip ke lokasi yang ditentukan oleh nama resource. Kemudian, gunakan objek referensi skrip bidding kustom untuk membuat resource skrip.

Berikut adalah contoh cara mengambil lokasi resource yang tersedia:

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

Upload file skrip

Setelah mengambil lokasi resource yang tersedia, upload file skrip Anda ke lokasi tersebut dalam sistem Display & Video 360 dengan metode media.upload. Metode ini mendukung upload sederhana yang memerlukan parameter kueri uploadType=media.

Berikut adalah contoh cara mengupload file skrip berdasarkan objek referensi skrip bidding kustom yang diambil:

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

Membuat objek skrip

Setelah file skrip diupload, buat resource skrip bidding kustom dengan metode customBiddingAlgorithms.scripts.create. Objek CustomBiddingScript yang diteruskan dalam permintaan hanya boleh menyertakan objek CustomBiddingScriptRef sebagai nilai yang ditetapkan dari kolom script. Tindakan ini akan mengaitkan file skrip yang diupload dengan resource skrip baru.

Berikut adalah contoh cara membuat resource skrip:

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

Setelah Anda membuat resource skrip bidding kustom, Display & Video 360 memproses skrip untuk memastikannya berhasil digunakan untuk mendapatkan skor tayangan. Ambil status pemrosesan ini melalui kolom state objek skrip. Setelah skrip baru diterima, algoritma bidding kustom akan mulai menggunakan skrip tersebut untuk mendapatkan nilai tayangan iklan. Proses ini terjadi segera, jadi pastikan Anda ingin mengupdate algoritma sebelum membuat resource skrip baru.

Aturan upload

Algoritma bidding kustom berbasis aturan menggunakan logika yang disediakan dalam objek AlgorithmRules untuk mengevaluasi nilai tayangan.

Objek AlgorithmRules diupload dalam file JSON, lalu dikaitkan dengan algoritma bidding kustom melalui objek CustomBiddingAlgorithmRules.

Mengambil lokasi resource aturan

Pertama, ambil lokasi resource yang tersedia di bagian resource algoritma bidding kustom dengan metode customBiddingAlgorithms.uploadRules. Permintaan ini menampilkan objek CustomBiddingAlgorithmsRulesRef dengan nama resource. Anda dapat mengupload file aturan ke lokasi yang ditentukan oleh nama resource. Kemudian, gunakan objek referensi aturan algoritma bidding kustom untuk membuat resource aturan Anda.

Berikut adalah contoh cara mengambil lokasi resource yang tersedia:

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

Upload file AlgorithmRules

Setelah mengambil lokasi resource yang tersedia, upload file aturan Anda ke lokasi tersebut dalam sistem Display & Video 360 dengan metode media.upload. Metode ini mendukung upload sederhana yang memerlukan parameter kueri uploadType=media.

Berikut adalah contoh cara mengupload file AlgorithmRules berdasarkan objek referensi aturan algoritma bidding kustom yang diambil:

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

Membuat objek aturan

Setelah file JSON AlgorithmRules diupload, buat resource aturan algoritma bidding kustom dengan metode customBiddingAlgorithms.rules.create. Objek CustomBiddingAlgorithmRules yang diteruskan dalam permintaan hanya boleh menyertakan objek CustomBiddingAlgorithmRulesRef sebagai nilai yang ditetapkan dari kolom rules. Tindakan ini akan mengaitkan file JSON AlgorithmRules yang diupload dengan resource aturan baru.

Berikut adalah contoh cara membuat resource aturan:

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

Setelah Anda membuat resource aturan, Display & Video 360 memproses kumpulan aturan untuk memastikannya berhasil digunakan untuk mendapatkan skor tayangan. Ambil status pemrosesan ini melalui kolom state objek aturan. Setelah aturan baru diterima, algoritma bidding kustom akan langsung mulai menggunakan aturan tersebut untuk langsung menentukan skor tayangan iklan.

Jika aturan ditolak, ambil alasan penolakan dari error objek aturan. Jika terjadi penolakan, perbarui objek AlgorithmRules untuk memperbaiki error dan ulangi proses upload yang dimulai dari mengambil objek referensi aturan.

Tetapkan Algoritma Bidding Kustom

Setelah membuat algoritma bidding kustom, mengupload logika yang diterima, dan memenuhi persyaratan yang diperlukan, Anda dapat menetapkan algoritme bidding kustom untuk strategi bidding item baris atau perjanjian pemasangan iklan.

Anda dapat menggunakan algoritma bidding kustom dalam strategi bidding memaksimalkan pembelanjaan dan sasaran performa dengan menetapkan BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CUSTOM_ALGO dan ID algoritma bidding kustom ke masing-masing kolom performanceGoalType dan customBiddingAlgorithmId. Bergantung pada strategi bidding, parameter bid lain mungkin tersedia atau wajib ada.

Berikut adalah contoh cara memperbarui item baris untuk menggunakan strategi bidding maksimalkan pembelanjaan dengan algoritma bidding kustom tertentu:

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