API Trả lời bài đánh giá dành cho nhà phát triển trên Google Play cho phép bạn xem phản hồi của người dùng cho ứng dụng của bạn và trả lời phản hồi này. Bạn có thể sử dụng API này để tương tác với người dùng ngay trong bộ công cụ hỗ trợ khách hàng hiện tại của bạn, chẳng hạn như CRM hệ thống.
Reply to Reviews API chỉ cho phép bạn truy cập vào phản hồi dành cho bản phát hành công khai các phiên bản ứng dụng của bạn. Nếu bạn muốn xem phản hồi về phiên bản alpha hoặc beta của ứng dụng của bạn, hãy sử dụng Google Play Console. Ngoài ra, xin lưu ý rằng API chỉ hiển thị những bài đánh giá có nhận xét. Nếu người dùng xếp hạng ứng dụng của bạn nhưng không đưa ra nhận xét, không thể truy cập phản hồi của họ từ API.
Giành được quyền truy cập
Để làm việc với Reply to Reviews API, bạn cấp quyền bằng cách sử dụng Ứng dụng OAuth hoặc tài khoản dịch vụ. Nếu bạn đang sử dụng tài khoản dịch vụ, hãy bật "Trả lời bài đánh giá" quyền trong tài khoản này. Để biết thêm thông tin về thiết lập quyền truy cập được cấp phép vào API này, hãy xem Thiết lập ứng dụng truy cập API.
Truy xuất bài đánh giá
Khi sử dụng Reply to Reviews API, bạn có thể truy xuất danh sách tất cả các bài đánh giá cho ứng dụng của mình hoặc bạn có thể xem từng bài đánh giá.
Truy xuất một nhóm các bài đánh giá
Sử dụng phương thức GET
để yêu cầu danh sách các bài đánh giá cho ứng dụng. Trong yêu cầu của bạn,
đưa vào tên gói đủ điều kiện cho ứng dụng của bạn, chẳng hạn như
com.google.android.apps.maps
– và mã thông báo uỷ quyền bạn nhận được khi
có được quyền truy cập vào API.
GET https://www.googleapis.com/androidpublisher/v3/applications/your_package_name/reviews? access_token=your_auth_token
Phản hồi là một chuỗi JSON chứa danh sách các bài đánh giá về ứng dụng của bạn. Chiến lược phát hành đĩa đơn kết quả đầu tiên trong danh sách hiển thị bình luận của người dùng được tạo gần đây nhất hoặc được sửa đổi.
Trong ví dụ sau, bài đánh giá đầu tiên cho thấy siêu dữ liệu xuất hiện trong tất cả kết quả và lần xem xét thứ hai cho thấy siêu dữ liệu chỉ xuất hiện trong một số kết quả:
{ "reviews": [ { "reviewId": "12345678", "authorName": "Jane Bloggs", "comments": [ { "userComment": { "text": "This is the best app ever!", "lastModified": { "seconds": "1443676826", "nanos": 713000000 }, "starRating": 5 } } ] }, { "reviewId": "11223344", "authorName": "John Doe", "comments": [ { "userComment": { "text": "I love using this app!", "lastModified": { "seconds": "141582134", "nanos": 213000000 }, "starRating": 5, "reviewerLanguage": "en", "device": "trltecan", "androidOsVersion": 21, "appVersionCode": 12345, "appVersionName": "1.2.3", "thumbsUpCount": 10, "thumbsDownCount": 3, "deviceMetadata": { "productName": "E5333 (Xperia™ C4 Dual)", "manufacturer": "Sony", "deviceClass": "phone", "screenWidthPx": 1080, "screenHeightPx": 1920, "nativePlatform": "armeabi-v7a,armeabi,arm64-v8a", "screenDensityDpi": 480, "glEsVersion": 196608, "cpuModel": "MT6752", "cpuMake": "Mediatek", "ramMb": 2048 } } }, { "developerComment": { "text": "That's great to hear!", "lastModified": { "seconds": "1423101467", "nanos": 813000000 } } } ] } ], "tokenPagination": { "nextPageToken": "12334566" } }
Mỗi kết quả đều có siêu dữ liệu sau:
- reviewId
- Xác định duy nhất bài đánh giá này. Nó cũng cho biết một người dùng cụ thể bài đánh giá, vì người dùng chỉ có thể viết một bài đánh giá cho một ứng dụng cụ thể.
- authorName
Tên của người dùng viết bài đánh giá.
Lưu ý: Trong một số ít trường hợp,
authorName
có thể không xuất hiện trong kết quả nhất định.- comments
Danh sách bao gồm phản hồi của người dùng về ứng dụng. Nếu trường hợp này bài đánh giá bao gồm tiêu đề, thì tiêu đề này và văn bản nội dung của bài đánh giá đều xuất hiện trong phần tử
text
và ký tự thẻ sẽ phân tách tiêu đề và văn bản nội dung. Phần tửlastModified
cho biết thời điểm người dùng sử dụng gần đây nhất gửi bài đánh giá của họ.Nếu bạn đã trả lời bài đánh giá này thì phản hồi của bạn sẽ xuất hiện dưới dạng phần tử thứ hai trong danh sách nhận xét.
- starRating
Đánh giá của người dùng về ứng dụng của bạn trên thang điểm từ 1 đến 5. Điểm số 5 cho biết rằng người dùng rất hài lòng với ứng dụng của bạn.
Theo mặc định, 10 bài đánh giá sẽ xuất hiện trên mỗi trang. Bạn có thể hiện tối đa 100 bài đánh giá
trên mỗi trang bằng cách đặt thông số maxResults
trong yêu cầu của bạn.
Nếu danh sách các bài đánh giá tiếp tục xuất hiện trên một trang khác, API sẽ bao gồm một thẻ
Phần tử tokenPagination
trong phản hồi. Khi yêu cầu trang tiếp theo của
các bài đánh giá, hãy thêm phần tử token
. Đặt giá trị của phần tử này thành
Giá trị nextPageToken
xuất hiện trong phản hồi ban đầu.
Lưu ý: Bạn chỉ có thể truy xuất các bài đánh giá mà người dùng đã tạo hoặc được sửa đổi trong tuần qua. Nếu bạn muốn truy xuất tất cả các bài đánh giá cho ứng dụng của bạn ngay từ đầu, bạn có thể tải xuống bài đánh giá dưới dạng tệp CSV bằng Google Play Console.
Ví dụ sau đây về yêu cầu GET
hiển thị trang tiếp theo của bài đánh giá. Chiến dịch này
yêu cầu giả định rằng trang hiện tại của các bài đánh giá (như được thể hiện trong phản hồi của
yêu cầu trước) chứa giá trị nextPageToken
là "12334566"
. Chiến lược phát hành đĩa đơn
yêu cầu cũng cho biết rằng trang tiếp theo sẽ hiển thị tối đa 50 bài đánh giá.
GET https://www.googleapis.com/androidpublisher/v3/applications/your_package_name/reviews? access_token=your_auth_token&token=12334566&maxResults=50
Truy xuất từng bài đánh giá
Bạn cũng có thể sử dụng phương thức GET
để truy xuất từng bài đánh giá. Bạn cung cấp
chính là URL dùng cho
truy xuất một nhóm các bài đánh giá, ngoại trừ việc bạn
cũng bao gồm review_id
tương ứng với bài đánh giá bạn muốn xem:
GET https://www.googleapis.com/androidpublisher/v3/applications/your_package_name/reviews/ review_id?access_token=your_auth_token
Phản hồi tương ứng là một chuỗi JSON chứa nội dung và siêu dữ liệu cho một bài đánh giá:
{ "reviewId": "87654321", "authorName": "Joan Smith", "comments": [ { "userComment": { "text": "This app is awesome!", "lastModified": { "seconds": "1452114723", "nanos": 913000000 }, "starRating": 5 } } ] }
Dịch văn bản bài đánh giá
Văn bản đánh giá có thể được dịch tự động trước khi được trả về từ
API bài đánh giá. Khi truy xuất một danh sách các bài đánh giá hoặc một bài đánh giá, hãy thêm
tham số translationLanguage
vào truy vấn. Ví dụ:
GET https://www.googleapis.com/androidpublisher/v3/applications/your_package_name/reviews? access_token=your_auth_token&translationLanguage=en
Tham số translationLanguage
có thể chỉ định ngôn ngữ có hoặc không có
quốc gia. Ví dụ: cả "vi" và "en_GB" đều hợp lệ.
Nếu bạn chỉ định ngôn ngữ bản dịch khác với ngôn ngữ gốc
thì hệ thống sẽ trả về văn bản đã dịch trong thuộc tính text
và
văn bản gốc trong thuộc tính originalText
. Ví dụ:
{ "reviewId": "12345678", "authorName": "Jane Bloggs", "comments": [ { "userComment": { "text": "This is the best app ever!", "lastModified": { "seconds": "1443676826", "nanos": 713000000 }, "starRating": 5, "originalText": "Dies ist die beste App überhaupt!" } } ] }
Trả lời bài đánh giá
Bạn cũng có thể tương tác với người dùng ứng dụng bằng cách trả lời bài đánh giá của họ. Sau bạn gửi nội dung trả lời, người dùng sẽ nhận được thông báo cho biết rằng bạn đã trả lời phản hồi của họ.
Chúng tôi không khuyến khích việc sử dụng tính năng trả lời tự động cho bài đánh giá, với ý định là cập nhật các câu trả lời đó theo cách thủ công sau đó. Ngoài ra, mặc dù bạn có thể trả lời bài đánh giá bao nhiêu lần tuỳ thích, người dùng chỉ nhận được thông báo sau lần đầu tiên bạn trả lời bài đánh giá đã tạo hoặc sửa đổi. Nội dung sau đây minh hoạ cách người dùng nhận được thông báo trong khi bạn tương tác với họ:
Tương tác người dùng-nhà phát triển | Đã gửi thông báo cho người dùng? |
---|---|
Người dùng viết bài đánh giá; nhà phát triển gửi câu trả lời | Có |
Nội dung cập nhật dành cho nhà phát triển trả lời bài đánh giá gốc | Không |
Xem xét nội dung cập nhật của người dùng; trả lời tin cập nhật của nhà phát triển | Có |
Lưu ý: Vì câu trả lời của bạn cho bài đánh giá xuất hiện công khai trên trang cửa hàng ứng dụng, điều quan trọng là bạn không bao gồm thông tin nhạy cảm về người dùng khi bạn viết những câu trả lời này.
Để gửi câu trả lời cho bài đánh giá của người dùng, hãy sử dụng phương thức POST
. Trong yêu cầu của bạn,
cho biết Content-Type
là application/json
và bao gồm một JSON
tài liệu chứa thư trả lời của bạn:
POST https://www.googleapis.com/androidpublisher/v3/applications/your_package_name/reviews/ review_id:reply?access_token=your_access_token Content-Type: application/json { "replyText": "Thanks for your feedback!" }
Lưu ý: replyText
mà bạn đưa vào cùng với
Yêu cầu POST
có thể chứa tối đa 350 ký tự. Bạn nên dùng
văn bản thuần tuý trong thư trả lời; các thẻ HTML có định dạng hợp lệ sẽ bị xoá và không
bao gồm trong số ký tự cho câu trả lời của bạn. Nội dung mà bạn đặt
tuy nhiên, bên trong các thẻ HTML được định dạng đúng vẫn được giữ nguyên.
Nếu yêu cầu thành công thì bạn sẽ nhận được chuỗi JSON sau đây dưới dạng phản hồi.
Phần tử lastEdited
cho biết thời điểm API ghi lại câu trả lời của bạn
đối với bài đánh giá của người dùng.
{ "result": { "replyText": "Thanks for your feedback!", "lastEdited": { "seconds": "1453978803", "nanos": 796000000 } } }
Tuy nhiên, nếu yêu cầu POST
của bạn không hợp lệ thì phản hồi sẽ hiển thị một trong
sau đây là các mã lỗi:
400 Bad Reply Request
replyText
quá dài hoặc bị thiếu.404 Not Found
- Bài đánh giá có
review_id
cho trước không tồn tại.
Hạn mức
Để thể hiện thiện chí với các nhà phát triển khác, Reply to Reviews API thực thi một số hạn mức. Các hạn mức này được thực thi riêng biệt theo từng ứng dụng:
GET
yêu cầu (để truy xuất danh sách bài đánh giá và từng bài đánh giá riêng lẻ) – 200 mỗi giờPOST
yêu cầu (để trả lời bài đánh giá) – 2000 mỗi ngày
Nếu ứng dụng của bạn cần truy xuất hoặc trả lời nhiều bài đánh giá hơn số lượng này hạn mức cho phép, hãy gửi yêu cầu để tăng hạn mức của ứng dụng.