Wdrażanie stawek niestandardowych

Reklamy displayowe i Interfejs Video 360 API umożliwia pełne zarządzanie ustalaniem stawek niestandardowych implementacji. Możesz tworzyć algorytmy ustalania stawek niestandardowych, przesyłać i weryfikować poszczególnych skryptów i przypisać do zasobu określony algorytm jako sposób określania stawek strategii ustalania stawek.

Z tego artykułu dowiesz się, jak tworzyć, aktualizować i przypisywać algorytmy ustalania stawek niestandardowych dzięki funkcji Display & Interfejs Video 360 API. Każda sekcja zawiera przykładowy kod.

Tworzenie algorytmu ustalania stawek niestandardowych

Obiekt CustomBiddingAlgorithm reprezentuje osobę. który możesz przypisać do elementu zamówienia na potrzeby jego strategii ustalania stawek. Ten obiektu zawiera informacje o algorytmie, takie jak customBiddingAlgorithmType i entityStatus, a także readinessState i suspensionState dla wygenerowany przez każdego odpowiedniego reklamodawcę. Możesz utworzyć CustomBiddingScript i CustomBiddingAlgorithmRules jako zasoby podrzędne instancji do zastosowania algorytmu.

Oto przykład tworzenia algorytmu ustalania stawek niestandardowych na podstawie skryptu:

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

Zarządzanie dostępem do algorytmów

Algorytmy ustalania stawek niestandardowych mogą należeć do partnera lub reklamodawcy. Algorytmy należące do partnera mogą być dostępne i modyfikowane zarówno przez tego partnera, jak i przez wszystkie podmioty podrzędne reklamodawców wymienionych w polu sharedAdvertiserIds. Algorytmy należące do reklamodawcy mogą być dostępne i modyfikowane reklamodawcy i jego partnera nadrzędnego, ale nie mogą być udostępniane innym reklamodawcom.

Jeśli stosujesz algorytm tylko w przypadku jednego reklamodawcy, przypisz parametr jako właściciela, w polu advertiserId. W przeciwnym razie przypisz nadrzędnego partnera reklamodawców jako właściciela z partnerId i daj reklamodawcom dostęp za pomocą sharedAdvertiserIds.

Prześlij logikę algorytmu

W zależności od typu algorytmu ustalania stawek niestandardowych musisz utworzyć albo obiekt script, albo obiekt rules, w którym możesz które zawierają strukturę logiczną, której ma użyć algorytm.

Prześlij skrypt

Algorytmy ustalania stawek niestandardowych oparte na skryptach wykorzystują dane przekazywane przez użytkownika skrypty, które pozwalają ocenić wartość wyświetlenia. Przykłady prostych skryptów i lista pola zaawansowane są dostępne w Wyświetlacz & Centrum pomocy Video 360.

W poniższych sekcjach dowiesz się, jak dodać nowy lub zaktualizowany skrypt do niestandardowego skryptu algorytmu ustalania stawek.

Pobieranie lokalizacji zasobu skryptu

Najpierw pobierz dostępną lokalizację zasobu w ramach ustalania stawek niestandardowych z algorytmem customBiddingAlgorithms.uploadScript. Ten zwraca obiekt CustomBiddingScriptRef z nazwa zasobu. Dostępne opcje prześlij plik skryptu do lokalizacji podanej przez nazwę zasobu. Następnie użyj obiektu referencyjnego skryptu ustalania stawek niestandardowych, aby utwórz zasób skryptu.

Oto przykład pobierania dostępnej lokalizacji zasobu:

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

Prześlij plik skryptu

Po pobraniu dostępnej lokalizacji zasobu prześlij do niej plik skryptu lokalizacji w sieci reklamowej system Video 360 z media.upload. Ta metoda obsługuje proste przesyłanie, które wymaga parametru zapytania. uploadType=media

Oto przykład przesyłania pliku skryptu ze względu na pobrany niestandardowy plik obiekt referencyjny skryptu ustalania stawek:

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

Tworzenie obiektu skryptu

Po przesłaniu pliku skryptu utwórz zasób skryptu ustalania stawek niestandardowych o nazwie metodę customBiddingAlgorithms.scripts.create. Obiekt CustomBiddingScript przekazany w żądaniu powinien tylko uwzględnij obiekt CustomBiddingScriptRef jako przypisany w polu script. Powiąże to przesłany plik skrypt z nowym zasobem skryptu.

Oto przykład, jak utworzyć zasób skryptu:

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

Po utworzeniu zasobu skryptu ustalania stawek niestandardowych Film 360 przetwarza skrypt, aby upewnić się, że może on zostać wykorzystany do oceny wyświetleń. Pobierz stan tego przetwarzania za pomocą funkcji state. Po zaakceptowaniu nowego skryptu niestandardowy algorytm ustalania stawek zaczyna używać skryptu do oceny wartości wyświetleń. Ten ma miejsce natychmiast, więc pamiętaj, by zaktualizować algorytm przed w ramach tworzenia nowego zasobu skryptu.

Reguły przesyłania

Algorytmy ustalania stawek niestandardowych oparte na regułach wykorzystują logikę podaną w tabeli AlgorithmRules, aby ocenić wartość wyświetlenia.

Obiekty AlgorithmRules są przesyłane w pliku JSON, a następnie powiązane z algorytmem ustalania stawek niestandardowych za pomocą CustomBiddingAlgorithmRules.

Pobieranie lokalizacji zasobu reguł

Najpierw pobierz dostępną lokalizację zasobu w ramach ustalania stawek niestandardowych z algorytmem customBiddingAlgorithms.uploadRules. Ten żądanie zwraca obiekt CustomBiddingAlgorithmsRulesRef. z nazwą zasobu. Możesz przesłać reguły w lokalizacji podanej przez nazwę zasobu. Potem użyj obiektu referencyjnego algorytmu ustalania stawek niestandardowych, aby utworzyć reguły .

Oto przykład pobierania dostępnej lokalizacji zasobu:

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

Prześlij plik AlgorithmRules

Po pobraniu dostępnej lokalizacji zasobu prześlij do niej plik reguł lokalizacji w sieci reklamowej system Video 360 z media.upload. Ta metoda obsługuje proste przesyłanie, które wymaga parametru zapytania. uploadType=media

Oto przykład przesyłania pliku AlgorithmRules po pobraniu Obiekt odwołania do reguł algorytmu ustalania stawek niestandardowych:

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

Tworzenie obiektu reguł

Po przesłaniu pliku JSON AlgorithmRules utwórz ustalanie stawek niestandardowych zasób reguł algorytmu z Metoda customBiddingAlgorithms.rules.create. Obiekt CustomBiddingAlgorithmRules przekazany w żądaniu powinien umieszcza tylko obiekt CustomBiddingAlgorithmRulesRef jako przypisaną wartość pola rules. Wiąże się to przesłano plik JSON AlgorithmRules z nowym zasobem reguł.

Oto przykład tworzenia zasobu reguł:

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

Po utworzeniu zasobu reguł możesz wyświetlać Video 360 przetwarza zestaw reguł, aby aby upewnić się, że może on służyć do oceny wyświetleń. Pobieranie stanu tego przetwarzania za pomocą pola state obiektu reguł. Po zaakceptowaniu nowych reguł algorytm ustalania stawek niestandardowych zaczyna używać metody do natychmiastowej oceny wartości wyświetleń.

Jeśli reguły zostaną odrzucone, pobierz z nich przyczynę odrzucenia. error obiektu. W przypadku odrzucenia zaktualizuj swoje AlgorithmRules obiekt, aby naprawić błąd, i powtórz proces przesyłania, zaczynając pobierania obiektu odwołania do reguł.

Przypisywanie algorytmu ustalania stawek niestandardowych

Po utworzeniu algorytmu ustalania stawek niestandardowych prześlij akceptowaną strukturę logiczną i niezbędne wymagania, możesz przypisać niestandardowe na podstawie algorytmu ustalania stawek na potrzeby elementu zamówienia lub zamówienia reklamowego.

Algorytmów ustalania stawek niestandardowych możesz używać w: zmaksymalizować wydatki. strategie ustalania stawek z celem skuteczności, przypisując im BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CUSTOM_ALGO oraz identyfikator algorytmu ustalania stawek niestandardowych, aby performanceGoalType i customBiddingAlgorithmId. W zależności od strategii ustalania stawek dostępne mogą być też inne parametry.

Oto przykład, jak zmienić element zamówienia, aby korzystał ze stawki maksymalizacji wydatków z danym algorytmem ustalania stawek niestandardowych:

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