ביקורות על מוצרים הן חלק חשוב מחוויית הקנייה של הלקוחות. הדירוגים והביקורות האלה עוזרים ללקוחות לברר מידע על המוצרים ולקבל החלטות בנוגע לקנייה. ביקורות חיוביות על מוצרים יכולות למשוך לקוחות רציניים יותר לדפי המוצרים של המוכר. המקורות כוללים אתרי מכירה, אתרי אגרגטור לריכוז ביקורות, אתרי ביקורות ומשתמשים של Google.
בדף הזה מוסבר איך לנהל ביקורות על מוצרים באמצעות Merchant API.
דרישות מוקדמות
Google צריכה שתספקו מידע ספציפי. אתם צריכים:
- פיד פעיל של ביקורות על מוצרים ב-Google Merchant Center.
- החשבון שלכם צריך להיות רשום לתוכנית דירוגי המוצרים. אתם יכולים לבדוק את העמידה בדרישות באופן פרוגרמטי באמצעות Programs sub-API או דרך Merchant Center. אם אתם לא כשירים, אתם יכולים לקרוא מידע נוסף על הצטרפות לתוכנית דירוגי המוצרים.
- כדי לבדוק מוצרים באמצעות Merchant API, צריך לשלוח בקשה להוספה לרשימת ההיתרים בטופס התמיכה של Shopping API בקטע "מה הבעיה או השאלה?".
יצירת מקור נתונים
כדי ליצור פיד ביקורות על מוצרים, משתמשים ב-method datasource.create. אם יש פיד קיים של ביקורות על מוצרים או על מוכרים, אפשר להשתמש ב-accounts.dataSources.list כדי לאחזר את ה-accounts.dataSources.name. שומרים את השם של מקור הנתונים שיוצרים או מאחזרים במסד הנתונים המקומי לכל ביקורת. הפורמט של הבקשה הוא:
POST https://merchantapi.googleapis.com/datasources/v1/accounts/{ACCOUNT_ID}/dataSources
דוגמה
בדוגמה מוצגות בקשה ותגובה אופייניות:
בקשה
POST https://merchantapi.googleapis.com/datasources/v1/accounts/{ACCOUNT_ID}/dataSources
{
"displayName": "My API Data Source",
"primaryProductDataSource": {}
}
תגובה
{
"name": "accounts/{ACCOUNT_ID}/dataSources/{DATASOURCE_ID}",
"dataSourceId": "{DATASOURCE_ID}",
"displayName": "My API Data Source",
"primaryProductDataSource": {},
"input": "API"
}
מידע נוסף זמין במאמר יצירת מקור נתונים של ביקורות על מוצרים.
איך יוצרים ביקורת על מוצר
אתם יכולים להשתמש ב-method accounts.productreviews.insert כדי ליצור או לעדכן ביקורת על מוצר. ה-method accounts.productreviews.insert מקבלת משאב productreview ושם של מקור נתונים כקלט. אם הפעולה מצליחה, הפונקציה מחזירה את הערך החדש או המעודכן של productreview. כדי לכתוב ביקורת על מוצר, צריך להיות לכם datasource.name.
הפורמט של הבקשה:
POST https://merchantapi.googleapis.com/reviews/v1/{parent=accounts/{ACCOUNT_ID}/}productReviews:insert
הבקשה לדוגמה הבאה ממחישה איך אפשר ליצור ביקורת על מוצר.
POST https://merchantapi.googleapis.com/reviews/v1/accounts/{ACCOUNT_ID}/productReviews:insert?dataSource=accounts/{ACCOUNT_ID}/dataSources/{DATASOURCE_ID}
productReviewId = 'my_product_review'
productReviewAttributes {
aggregatorName = 'aggregator_name'
subclientName = 'subclient_name'
publisherName = 'publisher_name'
publisherFavicon = 'https://www.google.com/favicon.ico'
reviewerId = 'reviewer_id'
reviewerIsAnonymous = false
reviewerUsername = 'reviewer_username'
reviewLanguage = 'en'
reviewCountry = 'US'
reviewTime = '2024-04-01T00:00:00Z'
title = 'Incredible product'
content = 'This is an incredible product.'
pros = ['pro1', 'pro2']
cons = ['con1', 'con2']
reviewLink = {
type = 'SINGLETON'
link = 'https://www.google.com'
}
reviewerImageLinks = ['https://www.google.com/reviewer.png']
minRating = 1
maxRating = 10
rating = 8.5
productNames = ['product_name']
productLinks = ['https://www.google.com/product']
asins = ['asin1', 'asin2']
gtins = ['gtin1', 'gtin2']
mpns = ['mpn1', 'mpn2']
skus = ['sku1', 'sku2']
brands = ['brand1', 'brand2']
isSpam = false
collectionMethod = 'POST_FULFILLMENT'
transactionId = 'transaction_id'
}
אחרי שיוצרים ביקורת על מוצר, יכול להיות שיעברו כמה דקות עד שהיא תופיע.
הנה דוגמה שאפשר להשתמש בה כדי להוסיף כמה ביקורות על מוצרים באופן אסינכרוני:
Java
import com.google.api.core.ApiFuture;
import com.google.api.core.ApiFutureCallback;
import com.google.api.core.ApiFutures;
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.common.util.concurrent.MoreExecutors;
import com.google.protobuf.Timestamp;
import com.google.shopping.merchant.reviews.v1.InsertProductReviewRequest;
import com.google.shopping.merchant.reviews.v1.ProductReview;
import com.google.shopping.merchant.reviews.v1.ProductReviewAttributes;
import com.google.shopping.merchant.reviews.v1.ProductReviewAttributes.ReviewLink;
import com.google.shopping.merchant.reviews.v1.ProductReviewAttributes.ReviewLink.Type;
import com.google.shopping.merchant.reviews.v1.ProductReviewsServiceClient;
import com.google.shopping.merchant.reviews.v1.ProductReviewsServiceSettings;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.stream.Collectors;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/** This class demonstrates how to insert multiple product reviews asynchronously. */
public class InsertProductReviewsAsyncSample {
private static String generateRandomString() {
String characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
Random random = new Random();
StringBuilder sb = new StringBuilder(8);
for (int i = 0; i < 8; i++) {
sb.append(characters.charAt(random.nextInt(characters.length())));
}
return sb.toString();
}
// Returns a product review with a random ID.
private static ProductReview createProductReview(String accountId) {
// MAKE SURE YOU PASS AN ACTUAL PRODUCT REVIEW ID HERE.
String productReviewId = generateRandomString();
ProductReviewAttributes attributes =
ProductReviewAttributes.newBuilder()
.setTitle("Would not recommend!")
.setContent("Not fantastic.")
.setMinRating(1)
.setMaxRating(5)
.setRating(2)
.setReviewTime(Timestamp.newBuilder().setSeconds(123456789).build())
.addProductLinks("exampleproducturl.com")
.setReviewLink(
ReviewLink.newBuilder()
.setLink("examplereviewurl.com")
// The review page contains only this single review.
.setType(Type.SINGLETON)
.build())
.addGtins("9780007350896")
.addGtins("9780007350897")
.build();
return ProductReview.newBuilder()
.setProductReviewId(productReviewId)
.setProductReviewAttributes(attributes)
.build();
}
public static void asyncInsertProductReviews(String accountId, String dataSourceId)
throws Exception {
GoogleCredentials credential = new Authenticator().authenticate();
ProductReviewsServiceSettings productReviewsServiceSettings =
ProductReviewsServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credential))
.build();
try (ProductReviewsServiceClient productReviewsServiceClient =
ProductReviewsServiceClient.create(productReviewsServiceSettings)) {
// Arbitrarily creates five product reviews with random IDs.
List<InsertProductReviewRequest> requests = new ArrayList<>();
for (int i = 0; i < 5; i++) {
InsertProductReviewRequest request =
InsertProductReviewRequest.newBuilder()
.setParent(String.format("accounts/%s", accountId))
.setProductReview(createProductReview(accountId))
// Must be a product reviews data source. In other words, a data source whose "type"
// is ProductReviewDataSource.
.setDataSource(String.format("accounts/%s/dataSources/%s", accountId, dataSourceId))
.build();
requests.add(request);
}
// Inserts the product reviews.
List<ApiFuture<ProductReview>> futures =
requests.stream()
.map(
request ->
productReviewsServiceClient.insertProductReviewCallable().futureCall(request))
.collect(Collectors.toList());
// Creates callback to handle the responses when all are ready.
ApiFuture<List<ProductReview>> responses = ApiFutures.allAsList(futures);
ApiFutures.addCallback(
responses,
new ApiFutureCallback<List<ProductReview>>() {
@Override
public void onSuccess(List<ProductReview> results) {
System.out.println("Inserted product reviews below:");
System.out.println(results);
}
@Override
public void onFailure(Throwable throwable) {
System.out.println(throwable);
}
},
MoreExecutors.directExecutor());
} catch (Exception e) {
System.out.println(e);
}
}
public static void main(String[] args) throws Exception {
Config config = Config.load();
asyncInsertProductReviews(config.getAccountId().toString(), "YOUR_DATA_SOURCE_ID");
}
}
אחזור של ביקורת על מוצר
כדי לראות ביקורת על מוצר, צריך להשתמש ב-accounts.productreviews.get. הוא לקריאה בלבד.
כדי להשתמש בה, צריך להזין את accountId ואת המזהה של הביקורת על המוצר בשדה השם. השיטה GET מחזירה את המשאב המתאים של ביקורות על מוצרים.
GET https://merchantapi.googleapis.com/reviews/v1/{name=accounts/{ACCOUNT_ID}/productReviews/*}
הנה דוגמה שאפשר להשתמש בה כדי לאחזר ביקורת על מוצר:
Java
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.reviews.v1.GetProductReviewRequest;
import com.google.shopping.merchant.reviews.v1.ProductReview;
import com.google.shopping.merchant.reviews.v1.ProductReviewsServiceClient;
import com.google.shopping.merchant.reviews.v1.ProductReviewsServiceSettings;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/** This class demonstrates how to get a product review. */
public class GetProductReviewSample {
public static void getProductReview(String accountId, String productReviewId) throws Exception {
GoogleCredentials credential = new Authenticator().authenticate();
ProductReviewsServiceSettings productReviewsServiceSettings =
ProductReviewsServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credential))
.build();
try (ProductReviewsServiceClient productReviewsServiceClient =
ProductReviewsServiceClient.create(productReviewsServiceSettings)) {
GetProductReviewRequest request =
GetProductReviewRequest.newBuilder()
.setName(String.format("accounts/%s/productReviews/%s", accountId, productReviewId))
.build();
System.out.println("Sending get product review request:");
ProductReview response = productReviewsServiceClient.getProductReview(request);
System.out.println("Product review retrieved successfully:");
System.out.println(response.getName());
} catch (Exception e) {
System.out.println(e);
}
}
public static void main(String[] args) throws Exception {
Config config = Config.load();
String productReviewId = "YOUR_PRODUCT_REVIEW_ID";
getProductReview(config.getAccountId().toString(), productReviewId);
}
}
רשימת ביקורות על מוצרים
אפשר להשתמש ב-method productreviews.list כדי לראות את כל הביקורות על המוצרים שנוצרו.
GET https://merchantapi.googleapis.com/reviews/v1/{parent=accounts/{ACCOUNT_ID}}/productReviews
הנה דוגמה שאפשר להשתמש בה כדי להציג את כל הביקורות על מוצר מסוים:
Java
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.reviews.v1.ListProductReviewsRequest;
import com.google.shopping.merchant.reviews.v1.ProductReview;
import com.google.shopping.merchant.reviews.v1.ProductReviewsServiceClient;
import com.google.shopping.merchant.reviews.v1.ProductReviewsServiceClient.ListProductReviewsPagedResponse;
import com.google.shopping.merchant.reviews.v1.ProductReviewsServiceSettings;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/** This class demonstrates how to list all the product reviews in a given account. */
public class ListProductReviewsSample {
public static void listProductReviews(String accountId) throws Exception {
GoogleCredentials credential = new Authenticator().authenticate();
ProductReviewsServiceSettings productReviewsServiceSettings =
ProductReviewsServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credential))
.build();
try (ProductReviewsServiceClient productReviewsServiceClient =
ProductReviewsServiceClient.create(productReviewsServiceSettings)) {
ListProductReviewsRequest request =
ListProductReviewsRequest.newBuilder()
.setParent(String.format("accounts/%s", accountId))
.build();
System.out.println("Sending list product reviews request:");
ListProductReviewsPagedResponse response =
productReviewsServiceClient.listProductReviews(request);
int count = 0;
// Iterates over all rows in all pages and prints all product reviews.
for (ProductReview element : response.iterateAll()) {
System.out.println(element);
count++;
}
System.out.print("The following count of elements were returned: ");
System.out.println(count);
} catch (Exception e) {
System.out.println(e);
}
}
public static void main(String[] args) throws Exception {
Config config = Config.load();
listProductReviews(config.getAccountId().toString());
}
}
מחיקת ביקורות על מוצרים
כדי למחוק ביקורת על מוצר, משתמשים ב-accounts.productreviews.delete. בדומה ל-method GET, גם ב-method הזה צריך להזין את השדה name של הביקורת על המוצר שהוחזר במהלך היצירה.
DELETE https://merchantapi.googleapis.com/reviews/v1/{name=accounts/{ACCOUNT_ID}/productReviews/*}
הנה דוגמה שאפשר להשתמש בה כדי למחוק ביקורת על מוצר:
Java
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.reviews.v1.DeleteProductReviewRequest;
import com.google.shopping.merchant.reviews.v1.ProductReviewsServiceClient;
import com.google.shopping.merchant.reviews.v1.ProductReviewsServiceSettings;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/** This class demonstrates how to delete a product review. */
public class DeleteProductReviewSample {
public static void deleteProductReview(String accountId, String productReviewId)
throws Exception {
GoogleCredentials credential = new Authenticator().authenticate();
ProductReviewsServiceSettings productReviewsServiceSettings =
ProductReviewsServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credential))
.build();
try (ProductReviewsServiceClient productReviewsServiceClient =
ProductReviewsServiceClient.create(productReviewsServiceSettings)) {
DeleteProductReviewRequest request =
DeleteProductReviewRequest.newBuilder()
.setName(String.format("accounts/%s/productReviews/%s", accountId, productReviewId))
.build();
System.out.println("Sending delete product review request:");
productReviewsServiceClient.deleteProductReview(request);
System.out.println("Product review deleted successfully");
} catch (Exception e) {
System.out.println(e);
}
}
public static void main(String[] args) throws Exception {
Config config = Config.load();
String productReviewId = "YOUR_PRODUCT_REVIEW_ID";
deleteProductReview(config.getAccountId().toString(), productReviewId);
}
}
סטטוס הביקורות על המוצרים
המשאב של ביקורות על מוצרים מכיל את הסטטוס בדומה לממשקי API אחרים, והוא חלק בלתי נפרד מהמשאב ופועל לפי אותו מבנה של בעיה ויעד.