借助 Google Play Developer Reply to Reviews API,您可以查看用户对您的应用的反馈并予以回复。您可以使用该 API 直接在您现有的客户服务工具包(例如 CRM 系统)中与用户互动。
Reply to Reviews API 只能用来访问对应用的正式版的反馈。如果您想查看对应用的 Alpha 版或 Beta 版的反馈,请改用 Google Play 管理中心。另请注意,该 API 仅显示包含评论的评价。如果用户仅对您的应用评分,但未提供评论,您将无法通过该 API 访问相关反馈。
获得访问权限
如需使用 Reply to Reviews API,您需要使用 OAuth 客户端或服务账号进行授权。如果您使用的是服务账号,请在此账号中启用“回复评价”权限。如需详细了解如何建立对该 API 的授权访问权限,请参阅设置 API 访问客户端。
检索评价
使用 Reply to Reviews API 时,您可以检索针对您的应用的所有最新评价,也可以查看单个评价。
检索一组评价
您可以使用 GET
方法来请求检索针对您的应用的评价列表。如需执行此操作,请在请求中包含应用的完全限定软件包名称(如 com.google.android.apps.maps
),以及您在获取 API 访问权限时收到的授权令牌。
GET https://www.googleapis.com/androidpublisher/v3/applications/your_package_name/reviews? access_token=your_auth_token
该响应是一个 JSON 字符串,其中包含针对您的应用的评价列表。列表中的第一个结果显示的是最新创建或修改的用户评论。
下例中的第一条评价展示的是所有结果共通的元数据,第二条评价展示的是只有某些结果才具备的元数据:
{ "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" } }
每个结果都包含以下元数据:
- reviewId
- 独一无二地标识相应评价,还可指示特定用户的评价,因为用户对某个特定应用只能撰写一条评价。
- authorName
撰写评价的用户的名称。
注意:在极少数情况下,结果中可能不显示
authorName
。- comments
一个包含用户对应用的反馈的列表。如果评价中包含标题,那么相应的标题和评价正文都会显示在
text
元素中,并由制表符将标题和正文分开。lastModified
元素用于表明用户最近一次提交评价的时间。如果您已回复该评价,您的回复会显示为评论列表中的第二个元素。
- starRating
用户对您的应用的评分(评分范围为 1 到 5 分)。5 分表示用户对您的应用非常满意。
默认情况下,每个页面会显示 10 条评价。您可在请求中设置 maxResults
参数,让每个页面最多显示 100 条评价。
如果评价列表延续到另一个页面上,该 API 会在响应中包含 tokenPagination
元素。请求检索下一评价页面时,请包含 token
元素。将该元素的值设为 nextPageToken
值(原始响应中给出的值)。
注意:您只能检索用户在过去一周内创建或修改的评价。如果您想检索应用自发布以来收到的所有评价,则可以使用 Google Play 管理中心将评价下载为 CSV 文件。
以下 GET
请求示例会显示下一个评价页面。该请求假定当前评价页面(如上述请求响应中所示)包含的 nextPageToken
值为 "12334566"
。该请求还指示下一页最多应显示 50 条评价。
GET https://www.googleapis.com/androidpublisher/v3/applications/your_package_name/reviews? access_token=your_auth_token&token=12334566&maxResults=50
检索单个评价
您还可以使用 GET
方法来检索单个评价。您需要提供在检索一组评价时所用的相同网址,但还需要包含与要查看的评价对应的 review_id
:
GET https://www.googleapis.com/androidpublisher/v3/applications/your_package_name/reviews/ review_id?access_token=your_auth_token
相应的响应是一个 JSON 字符串,其中包含单个评价的内容和元数据:
{ "reviewId": "87654321", "authorName": "Joan Smith", "comments": [ { "userComment": { "text": "This app is awesome!", "lastModified": { "seconds": "1452114723", "nanos": 913000000 }, "starRating": 5 } } ] }
翻译评价文字
系统可在从 Reviews API 返回评价文字之前自动翻译相应文字。在检索评价列表或单个评价时,请为查询添加 translationLanguage
参数。例如:
GET https://www.googleapis.com/androidpublisher/v3/applications/your_package_name/reviews? access_token=your_auth_token&translationLanguage=en
translationLanguage
参数可以指定为包含或不包含国家/地区代码的语言代码。例如,“en”和“en_GB”都是有效的。
如果您指定的翻译语言与原文不同,系统便会在 text
属性中返回译文,并在 originalText
属性中返回原文。示例如下:
{ "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!" } } ] }
回复评价
您还可以通过回复评价来与使用您的应用的用户进行互动。您提交回复后,用户会收到通知,表明您已回复其反馈。
不建议您对评价使用自动回复,然后再在日后手动更新回复。此外,虽然您可以多次回复同一条评价,但只有您首次回复用户创建或修改的评价时,用户才会收到通知。下表说明了用户在您与其互动期间是如何收到通知的:
用户-开发者互动 | 向用户发送通知? |
---|---|
用户撰写评价;开发者提交回复 | 是 |
开发者更新对原始评价的回复 | 否 |
用户更新评价;开发者更新回复 | 是 |
注意:由于您对评价的回复会公开显示在应用商店页面上,因此在撰写回复时,请勿包含关于用户的敏感信息。
如需针对用户评价提交回复,请使用 POST
方法。在您的请求中,指明 Content-Type
为 application/json
,并添加包含您的回复内容的 JSON 文档:
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!" }
注意:您在 POST
请求中添加的 replyText
最多可包含 350 个字符。您应在回复中使用纯文本;系统会移除格式正确的 HTML 标记,并且不会将其计入回复的字符数。不过,系统会保留您在格式正确的 HTML 标记内放置的内容。
如果请求成功,您会收到以下 JSON 字符串作为响应。lastEdited
元素用于表示 API 所记录的您对用户评价做出回复的时间。
{ "result": { "replyText": "Thanks for your feedback!", "lastEdited": { "seconds": "1453978803", "nanos": 796000000 } } }
不过,如果您的 POST
请求无效,该响应便会改为显示以下某一错误代码:
400 Bad Reply Request
replyText
太长或缺失。404 Not Found
- 具有指定
review_id
的评价不存在。
配额
为了方便其他开发者,我们会对 Reply to Reviews API 实施配额限制。这些配额是针对各个应用单独实施的:
GET
请求(用于检索评价列表和单个评价)- 每小时 200 个POST
请求(用于回复评价)- 每天 2000 个
如果您的应用需要检索或回复的评价数量超出这些配额所允许的数量,请提交申请以提高应用的配额。