مدیریت اولویت‌های اعلان ایمیلی برای حساب‌های Merchant Center

این راهنما توضیح می‌دهد که چگونه اولویت‌های اعلان ایمیلی حساب Merchant Center خود را برای ایمیل‌های غیرالزامی بااستفاده از Merchant API مدیریت کنید.

ترجیحات ایمیل شما مختص هر حساب Merchant Center است که به آن دسترسی دارید. اگر چندین حساب را مدیریت می‌کنید، می‌توانید تنظیمات ترجیحی متفاوتی برای هریک از آن‌ها تنظیم کنید. «میانای برنامه‌سازی کاربردی بازرگان» به شما امکان می‌دهد تنظیمات کنونی‌تان را بازیابی کنید و آن‌ها را به‌روز کنید. برای اطلاعات بیشتر درباره مدیریت اولویت‌های ایمیل ازطریق میانای Merchant Center، به تغییر اولویت‌های ایمیل Merchant Center مراجعه کنید.

«میانای برنامه‌سازی کاربردی فروشنده» فقط از مدیریت اولویت‌های ایمیل‌های «اخبار و نکته‌ها» پشتیبانی می‌کند.

ملاحظات ویژه

  • فقط کاربر اصالت‌سنجی‌شده: فقط می‌توانید اولویت‌های ایمیل را برای حساب کاربری که برای فراخوانی API اصالت‌سنجی شده است دریافت یا به‌روز کنید. باید نشانی ایمیل این کاربر را در مسیر درخواست مشخص کنید (برای مثال، user@email.com) یا از نام مستعار me استفاده کنید.
  • حساب‌های پیشرفته: اگر کاربر حساب پیشرفته هستید، اولویت‌های ایمیل شما در سطح حساب پیشرفته تنظیم می‌شود و برای خود حساب پیشرفته و همه حساب‌های فرعی آن اعمال می‌شود. هنگام استفاده از API، کاربران حساب پیشرفته باید شناسه حساب پیشرفته را برای مدیریت اولویت‌هایشان مشخص کنند.
  • حساب‌های سرویس: حساب‌های سرویس اعلان دریافت نمی‌کنند، حتی اگر اولویت‌های ایمیل برای آن‌ها تنظیم شده باشد.
  • حالت UNCONFIRMED: UNCONFIRMEDحالت موافقت برای اولویت ایمیل فقط توسط سرور قابل تنظیم است. نمی‌توانید اولویت را برای UNCONFIRMED بااستفاده از API تنظیم کنید. تلاش برای تنظیم این اولویت منجر به خطا می‌شود. وضعیت UNCONFIRMED نشان می‌دهد که ایمیل تأییدیه‌ای برای کاربری که موافقت کرده است ارسال شده است، اما او هنوز روی پیوند تأیید کلیک نکرده است.

اولویت‌های ایمیل Merchant Center خود را بررسی کنید

برای دیدن تنظیمات اعلان ایمیل فعلی برای یک حساب Merchant Center خاص، از روش GetEmailPreferences استفاده کنید. باید شناسه حساب Merchant Center خود را ارائه دهید و از نشانی ایمیل کاربر یا از نام مستعار me برای نشان دادن کاربر اصیل استفاده کنید.

این درخواست EmailPreferences منبع را بازیابی می‌کند که وضعیت موافقت شما را برای دسته‌های اعلان دردسترس، مثل news_and_tips، نشان می‌دهد.

GET https://merchantapi.googleapis.com/accounts/v1/accounts/{ACCOUNT_ID}/users/{EMAIL_ADDRESS}/emailPreferences

درصورت موفقیت‌آمیز بودن درخواست، منبع EmailPreferences که تنظیمات فعلی شما را نشان می‌دهد برمی‌گردد.

پاسخ نمونه:

{
  "name": "accounts/{ACCOUNT_ID}/users/{EMAIL_ADDRESS}/emailPreferences",
  "news_and_tips": "OPTED_IN"
}

این نمونه کد نشان می‌دهد که چگونه اولویت‌های ایمیل را برای حساب Merchant Center خودتان بازیابی کنید.

جاوا

import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.accounts.v1.EmailPreferences;
import com.google.shopping.merchant.accounts.v1.EmailPreferencesName;
import com.google.shopping.merchant.accounts.v1.EmailPreferencesServiceClient;
import com.google.shopping.merchant.accounts.v1.EmailPreferencesServiceSettings;
import com.google.shopping.merchant.accounts.v1.GetEmailPreferencesRequest;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;

/** This class demonstrates how to get the email preferences of a Merchant Center account. */
public class GetEmailPreferencesSample {

  public static void getEmailPreferences(Config config, String email) throws Exception {

    // Obtains OAuth token based on the user's configuration.
    GoogleCredentials credential = new Authenticator().authenticate();

    // Creates service settings using the credentials retrieved above.
    EmailPreferencesServiceSettings emailPreferencesServiceSettings =
        EmailPreferencesServiceSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credential))
            .build();

    // Creates EmailPreferences name to identify the EmailPreferences.
    String name =
        EmailPreferencesName.newBuilder()
            .setAccount(config.getAccountId().toString())
            .setEmail(email)
            .build()
            .toString();

    // Calls the API and catches and prints any network failures/errors.
    try (EmailPreferencesServiceClient emailPreferencesServiceClient =
        EmailPreferencesServiceClient.create(emailPreferencesServiceSettings)) {

      // The name has the format: accounts/{account}/users/{user}/emailPreferences
      GetEmailPreferencesRequest request =
          GetEmailPreferencesRequest.newBuilder().setName(name).build();

      System.out.println("Sending get EmailPreferences request:");
      EmailPreferences response = emailPreferencesServiceClient.getEmailPreferences(request);

      System.out.println("Retrieved EmailPreferences below");
      System.out.println(response);
    } catch (Exception e) {
      System.out.println(e);
    }
  }

  public static void main(String[] args) throws Exception {
    Config config = Config.load();
    // The email address of this user. If you want to get the user information
    // Of the user making the Content API request, you can also use "me" instead
    // Of an email address.
    String email = "testUser@gmail.com";
    // String email = "me";

    getEmailPreferences(config, email);
  }
}

PHP

use Google\ApiCore\ApiException;
use Google\Shopping\Merchant\Accounts\V1\Client\EmailPreferencesServiceClient;
use Google\Shopping\Merchant\Accounts\V1\GetEmailPreferencesRequest;

/**
 * This class demonstrates how to get the email preferences of a Merchant Center account.
 */
class GetEmailPreferences
{
    /**
     * Gets the email preferences of a Merchant Center account.
     *
     * @param array $config
     *      The configuration data used for authentication and getting the acccount ID.
     * @param string $email The email address of this user. If you want to get the user information
     *      of the user making the Merchant API request, you can also use "me" instead
     *      of an email address.
     *
     * @return void
     */
    public static function getEmailPreferencesSample($config, $email): void
    {
        // Gets the OAuth credentials to make the request.
        $credentials = Authentication::useServiceAccountOrTokenFile();

        // Creates options config containing credentials for the client to use.
        $options = ['credentials' => $credentials];

        // Creates a client.
        $emailPreferencesServiceClient = new EmailPreferencesServiceClient($options);

        // Creates EmailPreferences name to identify the EmailPreferences.
        // The name has the format: accounts/{account}/users/{user}/emailPreferences
        $name = "accounts/" . $config['accountId'] . "/users/" . $email . "/emailPreferences";

        // Calls the API and catches and prints any network failures/errors.
        try {
            $request = (new GetEmailPreferencesRequest())
                ->setName($name);

            print "Sending get EmailPreferences request:\n";
            $response = $emailPreferencesServiceClient->getEmailPreferences($request);

            print "Retrieved EmailPreferences below\n";
            print_r($response);
        } catch (ApiException $e) {
            print $e->getMessage();
        }
    }

    /**
     * Helper to execute the sample.
     *
     * @return void
     */
    public function callSample(): void
    {
        $config = Config::generateConfig();
        // The email address of this user. If you want to get the user information
        // Of the user making the Merchant API request, you can also use "me" instead
        // Of an email address.
        // $email = "testUser@gmail.com";
        $email = "me";

        self::getEmailPreferencesSample($config, $email);
    }
}

// Run the script
$sample = new GetEmailPreferences();
$sample->callSample();

Python

from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.shopping.merchant_accounts_v1 import EmailPreferencesServiceClient
from google.shopping.merchant_accounts_v1 import GetEmailPreferencesRequest

_ACCOUNT = configuration.Configuration().read_merchant_info()


def get_email_preferences(email_address):
  """Gets the email preferences of a Merchant Center account."""

  # Gets OAuth Credentials.
  credentials = generate_user_credentials.main()

  # Creates a client.
  client = EmailPreferencesServiceClient(credentials=credentials)

  # Creates EmailPreferences name to identify the EmailPreferences.
  name = (
      "accounts/" + _ACCOUNT + "/users/" + email_address + "/emailPreferences"
  )

  # Creates the request.
  request = GetEmailPreferencesRequest(name=name)

  # Makes the request and catches and prints any error messages.
  try:
    response = client.get_email_preferences(request=request)
    print("Retrieved EmailPreferences below")
    print(response)
  except RuntimeError as e:
    print(e)


if __name__ == "__main__":
  # The email address of this user. If you want to get the user information
  # Of the user making the Content API request, you can also use "me" instead
  # Of an email address.
  # email = "testUser@gmail.com"
  email = "me"

  get_email_preferences(email)

cURL

curl --location \
'https://merchantapi.googleapis.com/accounts/v1/accounts/{ACCOUNT_ID}/users/{EMAIL_ADDRESS}/emailPreferences' \
--header 'Authorization: Bearer <API_TOKEN>'

تغییر اولویت‌های ایمیل Merchant Center

برای تغییر اولویت‌های اعلان ایمیل، مانند موافقت یا عدم موافقت با دریافت ایمیل‌های «اخبار و نکات»، از روش UpdateEmailPreferences استفاده کنید.

در درخواستتان، شناسه حساب Merchant Center را ارائه می‌کنید و از نشانی ایمیل خودتان (یا me نام مستعار) برای ایمیل کاربر استفاده می‌کنید. بدنه درخواست باید حاوی EmailPreferences شیء با opt_in_state انتخاب‌شده برای فیلد news_and_tips باشد. همچنین باید news_and_tips را در پارامتر پُرسمان update_mask مشخص کنید تا نشان دهید کدام اولویت را تغییر می‌دهید.

این کنش اولویت‌های ایمیل را برای کاربر اصالت‌سنجی‌شده برای حساب Merchant Center مشخص‌شده به‌روز می‌کند. برای مثال، تنظیم news_and_tips روی OPTED_OUT باعث می‌شود ایمیل‌های «اخبار و نکات» را برای آن حساب دریافت نکنید.

PATCH https://merchantapi.googleapis.com/accounts/v1/accounts/{ACCOUNT_ID}/users/{EMAIL_ADDRESS}/emailPreferences?update_mask=news_and_tips

نمونه محتوای درخواست (برای انصراف دادن از «اخبار و نکات»):

{
  "name": "accounts/{ACCOUNT_ID}/users/{EMAIL_ADDRESS}/emailPreferences",
  "news_and_tips": "OPTED_OUT"
}

درصورت موفقیت‌آمیز بودن درخواست، منبع EmailPreferences به‌روزشده برگردانده می‌شود.

پاسخ نمونه:

{
  "name": "accounts/{ACCOUNT_ID}/users/{EMAIL_ADDRESS}/emailPreferences",
  "news_and_tips": "OPTED_OUT"
}

این نمونه کد نشان می‌دهد چگونه اولویت‌های ایمیل را برای حساب Merchant Center خود به‌روز کنید، برای مثال برای موافقت با دریافت ایمیل‌های «اخبار و نکات».

جاوا

import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.protobuf.FieldMask;
import com.google.shopping.merchant.accounts.v1.EmailPreferences;
import com.google.shopping.merchant.accounts.v1.EmailPreferences.OptInState;
import com.google.shopping.merchant.accounts.v1.EmailPreferencesName;
import com.google.shopping.merchant.accounts.v1.EmailPreferencesServiceClient;
import com.google.shopping.merchant.accounts.v1.EmailPreferencesServiceSettings;
import com.google.shopping.merchant.accounts.v1.UpdateEmailPreferencesRequest;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;

/**
 * This class demonstrates how to update a EmailPreferences to OPT_IN to News and Tips. This service
 * only permits retrieving and updating email preferences for the authenticated user.
 */
public class UpdateEmailPreferencesSample {

  public static void updateEmailPreferences(Config config, String email) throws Exception {

    GoogleCredentials credential = new Authenticator().authenticate();

    EmailPreferencesServiceSettings emailPreferencesServiceSettings =
        EmailPreferencesServiceSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credential))
            .build();

    // Creates EmailPreferences name to identify EmailPreferences.
    String name =
        EmailPreferencesName.newBuilder()
            .setAccount(config.getAccountId().toString())
            .setEmail(email)
            .build()
            .toString();

    // Create a EmailPreferences with the updated fields.
    EmailPreferences emailPreferences =
        EmailPreferences.newBuilder().setName(name).setNewsAndTips(OptInState.OPTED_IN).build();

    FieldMask fieldMask = FieldMask.newBuilder().addPaths("news_and_tips").build();

    try (EmailPreferencesServiceClient emailPreferencesServiceClient =
        EmailPreferencesServiceClient.create(emailPreferencesServiceSettings)) {

      UpdateEmailPreferencesRequest request =
          UpdateEmailPreferencesRequest.newBuilder()
              .setEmailPreferences(emailPreferences)
              .setUpdateMask(fieldMask)
              .build();

      System.out.println("Sending Update EmailPreferences request");
      EmailPreferences response = emailPreferencesServiceClient.updateEmailPreferences(request);
      System.out.println("Updated EmailPreferences Name below");
      System.out.println(response.getName());
    } catch (Exception e) {
      System.out.println(e);
    }
  }

  public static void main(String[] args) throws Exception {
    Config config = Config.load();
    // The email address of this user. If you want to get the user information
    // Of the user making the Content API request, you can also use "me" instead
    // Of an email address.
    // String email = "testUser@gmail.com";
    String email = "me";

    updateEmailPreferences(config, email);
  }
}

PHP

use Google\ApiCore\ApiException;
use Google\Protobuf\FieldMask;
use Google\Shopping\Merchant\Accounts\V1\Client\EmailPreferencesServiceClient;
use Google\Shopping\Merchant\Accounts\V1\EmailPreferences;
use Google\Shopping\Merchant\Accounts\V1\EmailPreferences\OptInState;
use Google\Shopping\Merchant\Accounts\V1\UpdateEmailPreferencesRequest;

/**
 * This class demonstrates how to update a EmailPreferences to OPT_IN to News and Tips. This service
 * only permits retrieving and updating email preferences for the authenticated user.
 */
class UpdateEmailPreferences
{

    /**
     * Updates email preferences to OPT_IN to News and Tips.
     *
     * @param array $config
     *      The configuration data used for authentication and getting the acccount ID.
     * @param string $email The email address of this user. If you want to get the user information
     *      of the user making the Merchant API request, you can also use "me" instead
     *      of an email address.
     *
     * @return void
     */
    public static function updateEmailPreferencesSample($config, $email): void
    {
        // Gets the OAuth credentials to make the request.
        $credentials = Authentication::useServiceAccountOrTokenFile();

        // Creates options config containing credentials for the client to use.
        $options = ['credentials' => $credentials];

        // Creates a client.
        $emailPreferencesServiceClient = new EmailPreferencesServiceClient($options);

        // Creates EmailPreferences name to identify the EmailPreferences.
        // The name has the format: accounts/{account}/users/{user}/emailPreferences
        $name = "accounts/" . $config['accountId'] . "/users/" . $email . "/emailPreferences";

        // Create a EmailPreferences with the updated fields.
        $emailPreferences = (new EmailPreferences())
            ->setName($name)
            ->setNewsAndTips(OptInState::OPTED_OUT);

        $fieldMask = (new FieldMask())
            ->setPaths(['news_and_tips']);

        try {
            $request = (new UpdateEmailPreferencesRequest())
                ->setEmailPreferences($emailPreferences)
                ->setUpdateMask($fieldMask);

            print "Sending Update EmailPreferences request\n";
            $response = $emailPreferencesServiceClient->updateEmailPreferences($request);
            print "Updated EmailPreferences Name below\n";
            print $response->getName() . "\n";
        } catch (ApiException $e) {
            print $e->getMessage();
        }
    }

    /**
     * Helper to execute the sample.
     *
     * @return void
     */
    public function callSample(): void
    {
        $config = Config::generateConfig();
        // The email address of this user. If you want to get the user information
        // Of the user making the Merchant API request, you can also use "me" instead
        // Of an email address.
        // $email = "testUser@gmail.com";
        $email = "me";

        self::updateEmailPreferencesSample($config, $email);
    }
}

// Run the script
$sample = new UpdateEmailPreferences();
$sample->callSample();

Python

from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.protobuf import field_mask_pb2
from google.shopping.merchant_accounts_v1 import EmailPreferences
from google.shopping.merchant_accounts_v1 import EmailPreferencesServiceClient
from google.shopping.merchant_accounts_v1 import UpdateEmailPreferencesRequest


FieldMask = field_mask_pb2.FieldMask
_ACCOUNT = configuration.Configuration().read_merchant_info()


def update_email_preferences(email_address):
  """Updates a EmailPreferences to OPT_IN to News and Tips."""

  # Gets OAuth Credentials.
  credentials = generate_user_credentials.main()

  # Creates a client.
  client = EmailPreferencesServiceClient(credentials=credentials)

  # Creates EmailPreferences name to identify EmailPreferences.
  name = (
      "accounts/" + _ACCOUNT + "/users/" + email_address + "/emailPreferences"
  )

  # Create a EmailPreferences with the updated fields.
  email_preferences = EmailPreferences(
      name=name, news_and_tips=EmailPreferences.OptInState.OPTED_IN
  )

  # Create field mask
  field_mask = FieldMask(paths=["news_and_tips"])

  # Creates the request.
  request = UpdateEmailPreferencesRequest(
      email_preferences=email_preferences, update_mask=field_mask
  )

  # Makes the request and catches and prints any error messages.
  try:
    response = client.update_email_preferences(request=request)
    print("Updated EmailPreferences Name below")
    print(response.name)
  except RuntimeError as e:
    print(e)


if __name__ == "__main__":
  # The email address of this user. If you want to get the user information
  # of the user making the Content API request, you can also use "me" instead
  # of an email address.
  # email = "testUser@gmail.com"
  email = "me"

  update_email_preferences(email)

cURL

curl --location --request PATCH \
'https://merchantapi.googleapis.com/accounts/v1/accounts/{ACCOUNT_ID}/users/{EMAIL_ADDRESS}/emailPreferences?update_mask=news_and_tips' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <API_TOKEN>' \
--data '{
  "name": "accounts/{ACCOUNT_ID}/users/{EMAIL_ADDRESS}/emailPreferences",
  "news_and_tips": "OPTED_IN"
}'